ssovee-os-web-ui 0.1.79 → 0.1.80

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/utils/helpers.ts","../src/components/Button.tsx","../src/components/Typography.tsx","../src/components/Input.tsx","../src/components/TextArea.tsx","../src/components/RichEditor.tsx","../src/components/CodeEditor.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Dropdown.tsx","../src/components/ImageWithPlaceholder.tsx","../src/components/Loading.tsx","../src/components/Skeleton.tsx","../src/components/Toast.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Divider.tsx","../src/components/Tooltip.tsx","../src/hooks/useShortcutFormatter.tsx","../src/utils/constants.ts","../src/components/SearchInput.tsx","../src/components/FileUpload.tsx","../src/components/Progress.tsx","../src/components/Pagination.tsx","../src/components/Radio.tsx","../src/components/Accordion.tsx","../src/components/Tabs.tsx","../src/components/PluginPlayground.tsx","../src/components/WindowWithSideMenu.tsx","../src/components/WindowWithoutSideMenu.tsx","../src/components/Table.tsx","../src/hooks/useGridClasses.tsx","../src/hooks/useDeviceSupport.tsx","../src/hooks/useSound.tsx","../src/hooks/getFormattedDate.ts"],"names":["React","jsxs","jsx","ArrowCircleRightIcon","useId","useRef","useEffect","Editor","CaretDownIcon","CheckIcon","useState","WarningIcon","CheckCircleIcon","InfoIcon","XIcon","useCallback","UAParser","globalKeyboardShortcuts","useImperativeHandle","UploadIcon","CaretLeftIcon","CaretRightIcon","CaretUpIcon","Children","isValidElement","cloneElement","useMemo","useReducer","initialState","reducer","React23"],"mappings":"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","file":"index.cjs","sourcesContent":["export function cn(...inputs: Array<string | false | null | undefined | 0>): string {\n return inputs.filter(Boolean).join(\" \");\n}\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"filled\"\n | \"text\";\n tone?: \"primary\" | \"neutral\" | \"success\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n tone = \"primary\",\n size = \"md\",\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n rounded = \"lg\",\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"inline-flex items-center justify-center font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n \n const variantClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n secondary: \"bg-surface-3 text-neutral-500 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 border border-surface-4 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n outline: \"bg-transparent text-neutral-400 border border-surface-1 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n ghost: \"bg-transparent text-neutral-400 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n filled: \"\",\n text: \"\",\n } as Record<Required<ButtonProps>[\"variant\"], string>;\n\n const filledToneClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n neutral: \"bg-surface-3 text-neutral-700 hover:text-neutral-700 active:text-neutral-700 hover:bg-surface-4 active:bg-surface-4 border border-surface-1 focus-visible:ring-surface-3/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n } as const;\n\n const textToneClasses = {\n primary: \"bg-transparent text-brand-color hover:text-brand-color/90 active:text-brand-color/80 hover:underline underline-offset-2 focus-visible:ring-brand-color/30\",\n neutral: \"bg-transparent text-neutral-400 hover:text-neutral-300 active:text-neutral-300 focus-visible:ring-surface-1/50\",\n success: \"bg-transparent text-green-600 hover:text-green-700 active:text-green-700 focus-visible:ring-green-500/30\",\n danger: \"bg-transparent text-red-600 hover:text-red-700 active:text-red-700 focus-visible:ring-red-500/30\",\n } as const;\n\n const sizeClasses = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-5 text-lg\",\n xl: \"h-14 px-6 text-xl\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseClasses,\n variant === \"filled\"\n ? filledToneClasses[tone]\n : variant === \"text\"\n ? textToneClasses[tone]\n : variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n widthClasses,\n className\n )}\n data-variant={variant}\n data-tone={tone}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n )}\n {!loading && leftIcon && <span className=\"mr-2\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-2\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype Variant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype Weight = \"thin\" | \"extralight\" | \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\" | \"extrabold\" | \"black\";\ntype Color = \"neutral-100\" | \"neutral-200\" | \"neutral-300\" | \"neutral-400\" | \"neutral-500\" | \"neutral-600\" | \"neutral-700\" | \"neutral-800\" | \"neutral-900\" | \"brand-color\" | \"red-500\" | \"green-500\" | \"blue-500\" | \"yellow-500\";\n\nexport interface TypographyProps {\n as?: Variant;\n variant?: Variant;\n size?: Size;\n weight?: Weight;\n color?: Color;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Typography: React.FC<TypographyProps> = ({\n as,\n variant = \"p\",\n size,\n weight,\n color,\n className,\n children,\n}) => {\n const Component = as || variant;\n\n const sizeClasses: Record<Size, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n };\n\n const weightClasses: Record<Weight, string> = {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n };\n\n const colorClasses: Record<Color, string> = {\n \"neutral-100\": \"text-neutral-100\",\n \"neutral-200\": \"text-neutral-200\",\n \"neutral-300\": \"text-neutral-300\",\n \"neutral-400\": \"text-neutral-400\",\n \"neutral-500\": \"text-neutral-500\",\n \"neutral-600\": \"text-neutral-600\",\n \"neutral-700\": \"text-neutral-700\",\n \"neutral-800\": \"text-neutral-800\",\n \"neutral-900\": \"text-neutral-900\",\n \"brand-color\": \"text-brand-color\",\n \"red-500\": \"text-red-500\",\n \"green-500\": \"text-green-500\",\n \"blue-500\": \"text-blue-500\",\n \"yellow-500\": \"text-yellow-500\",\n };\n\n const classes = cn(\n size && sizeClasses[size],\n weight && weightClasses[weight],\n color && colorClasses[color],\n className\n );\n\n return <Component className={classes}>{children}</Component>;\n};\n\nexport default Typography;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { ArrowCircleRightIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n showSubmitButton?: boolean;\n onSubmit?: () => void;\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n leftIcon,\n rightIcon,\n showSubmitButton = false,\n onSubmit,\n error,\n label,\n helperText,\n fullWidth = false,\n onKeyUp,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && onSubmit) {\n onSubmit();\n }\n onKeyUp?.(e);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {leftIcon}\n </div>\n )}\n \n <input\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n leftIcon ? \"pl-10\" : \"\",\n (rightIcon || showSubmitButton) ? \"pr-10\" : \"\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n onKeyUp={handleKeyUp}\n {...props}\n />\n \n {rightIcon && !showSubmitButton && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {rightIcon}\n </div>\n )}\n \n {showSubmitButton && (\n <button\n type=\"button\"\n onClick={onSubmit}\n disabled={props.disabled || props.readOnly || !onSubmit}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-300 transition-colors hover:text-neutral-400 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit input\"\n >\n <ArrowCircleRightIcon size={20} />\n </button>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n resize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n resize = \"vertical\",\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const resizeClasses = {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <textarea\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n resizeClasses[resize],\n widthClasses,\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n {...props}\n />\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport default TextArea;\n","import React, { useEffect, useId, useRef } from \"react\";\nimport \"tinymce/tinymce\";\nimport \"tinymce/icons/default/icons\";\nimport \"tinymce/themes/silver\";\nimport \"tinymce/models/dom/model\";\nimport \"tinymce/skins/ui/oxide/skin.css\";\nimport \"tinymce/skins/ui/oxide/content.css\";\nimport \"tinymce/skins/content/default/content.css\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RichEditorProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"value\" | \"onChange\"> {\n value?: string;\n onChange?: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n fullWidth?: boolean;\n height?: string;\n menubar?: boolean | string;\n toolbar?: string;\n className?: string;\n plugins?: string[];\n}\n\nconst DEFAULT_PLUGINS = [\n \"advlist\",\n \"autolink\",\n \"lists\",\n \"link\",\n \"image\",\n \"charmap\",\n \"preview\",\n \"anchor\",\n \"searchreplace\",\n \"visualblocks\",\n \"code\",\n \"fullscreen\",\n \"insertdatetime\",\n \"media\",\n \"table\",\n \"wordcount\",\n];\n\nconst DEFAULT_TOOLBAR =\n \"undo redo | blocks | bold italic underline strikethrough | alignleft aligncenter alignright | bullist numlist outdent indent | link image media | code fullscreen\";\n\nconst RichEditor = React.forwardRef<HTMLDivElement, RichEditorProps>(\n (\n {\n value = \"\",\n onChange,\n label,\n helperText,\n error,\n fullWidth = false,\n height = \"220px\",\n menubar = false,\n toolbar = DEFAULT_TOOLBAR,\n className,\n plugins = DEFAULT_PLUGINS,\n disabled = false,\n placeholder,\n rows,\n ...props\n },\n ref\n ) => {\n const editorId = useId().replace(/:/g, \"\");\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const hasTinymce = typeof window !== \"undefined\" && Boolean((window as any).tinymce);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !textareaRef.current || !(window as any).tinymce) {\n return;\n }\n\n const tinymceApi = (window as any).tinymce;\n const existingEditor = tinymceApi.get(editorId);\n\n if (existingEditor) {\n existingEditor.remove();\n }\n\n tinymceApi.init({\n target: textareaRef.current,\n selector: undefined,\n skin: \"oxide\",\n content_css: \"default\",\n height,\n menubar,\n toolbar,\n plugins,\n statusbar: false,\n resize: false,\n branding: false,\n promotion: false,\n placeholder,\n readonly: disabled,\n content_style: \"body { font-family: Inter, ui-sans-serif, system-ui, -apple-system, sans-serif; font-size: 14px; line-height: 1.6; }\",\n setup: (editor: any) => {\n editor.on(\"init\", () => {\n editor.setContent(value ?? \"\");\n });\n\n editor.on(\"input change keyup\", () => {\n onChange?.(editor.getContent());\n });\n },\n });\n\n return () => {\n const activeEditor = tinymceApi.get(editorId);\n activeEditor?.remove();\n };\n }, [disabled, editorId, height, menubar, onChange, placeholder, plugins, toolbar, value]);\n\n useEffect(() => {\n const tinymceApi = (window as any)?.tinymce;\n const activeEditor = tinymceApi?.get(editorId);\n\n if (activeEditor && activeEditor.getContent() !== (value ?? \"\")) {\n activeEditor.setContent(value ?? \"\");\n }\n }, [editorId, value]);\n\n const fallbackTextArea = (\n <textarea\n ref={textareaRef}\n id={editorId}\n value={value}\n onChange={(event) => onChange?.(event.currentTarget.value)}\n disabled={disabled}\n placeholder={placeholder}\n rows={rows ?? 7}\n aria-label={label ?? props[\"aria-label\"] ?? \"Rich text editor\"}\n className={cn(\n \"w-full min-h-[200px] rounded-[6px] border border-surface-1 bg-primary px-3 py-2 text-base text-neutral-700 transition-all duration-200 focus:border-brand-color focus:outline-none focus:ring-1 focus:ring-brand-color/50 placeholder:text-neutral-400\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n disabled && \"cursor-not-allowed opacity-60\",\n fullWidth && \"w-full\"\n )}\n {...props}\n />\n );\n\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1\", fullWidth && \"w-full\", className)}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white\" htmlFor={editorId}>\n {label}\n </label>\n )}\n\n <div\n className={cn(\n \"overflow-hidden rounded-[6px] border border-surface-1 bg-white transition-all duration-200\",\n fullWidth && \"w-full\",\n error && \"border-red-500\"\n )}\n style={{ minHeight: height }}\n >\n {hasTinymce ? (\n <textarea\n ref={textareaRef}\n id={editorId}\n defaultValue={value}\n aria-label={label ?? props[\"aria-label\"] ?? \"Rich text editor\"}\n disabled={disabled}\n style={{ display: \"none\" }}\n {...props}\n />\n ) : (\n fallbackTextArea\n )}\n </div>\n\n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">\n {error}\n </Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">\n {helperText}\n </Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRichEditor.displayName = \"RichEditor\";\n\nexport default RichEditor;\n","import Editor, { type EditorProps } from \"@monaco-editor/react\";\nimport React from \"react\";\n\nexport interface CodeEditorProps {\n value: string;\n onChange: (value: string) => void;\n language?: EditorProps[\"language\"];\n theme?: EditorProps[\"theme\"];\n height?: EditorProps[\"height\"];\n options?: EditorProps[\"options\"];\n className?: string;\n}\n\nexport type JsonEditorProps = CodeEditorProps;\n\nconst CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = \"json\",\n theme = \"light\",\n height = \"100%\",\n options,\n className,\n}) => {\n return (\n <div className={className} style={{ height }}>\n <Editor\n height=\"100%\"\n language={language}\n theme={theme}\n value={value}\n onChange={(nextValue) => onChange(nextValue ?? \"\")}\n options={options}\n />\n </div>\n );\n};\n\nexport default CodeEditor;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'size'> {\n options: SelectOption[];\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n onChange?: (value: string) => void;\n placeholder?: string;\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className,\n options,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n onChange,\n placeholder,\n value,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none appearance-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(e.target.value);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n \"pr-10 text-neutral-900 bg-white placeholder:text-neutral-900 dark:text-white dark:bg-slate-900 dark:placeholder:text-white\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n value={value}\n onChange={handleChange}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n \n <CaretDownIcon\n size={16}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 pointer-events-none\"\n />\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport default Select;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n variant?: \"default\" | \"filled\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: React.ReactNode;\n helperText?: string;\n indeterminate?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n indeterminate = false,\n checked,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n defaultChecked={checked}\n onChange={onChange}\n disabled={disabled}\n {...props}\n />\n \n {(checked || indeterminate) && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <CheckIcon\n size={size === \"sm\" ? 12 : size === \"md\" ? 16 : 20}\n className=\"text-white\"\n weight={indeterminate ? \"bold\" : \"regular\"}\n />\n </div>\n )}\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface ToggleProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n onChange,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n label,\n helperText,\n fullWidth = false,\n },\n ref\n ) => {\n const baseClasses = \"flex items-center rounded-full cursor-pointer transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2\";\n \n const variantClasses = {\n default: \"focus:ring-brand-color/50\",\n success: \"focus:ring-green-500/50\",\n warning: \"focus:ring-yellow-500/50\",\n danger: \"focus:ring-red-500/50\",\n };\n\n const toggleClasses = {\n default: checked ? \"bg-brand-color\" : \"bg-gray-500\",\n success: checked ? \"bg-green-500\" : \"bg-gray-500\",\n warning: checked ? \"bg-yellow-500\" : \"bg-gray-500\",\n danger: checked ? \"bg-red-500\" : \"bg-gray-500\",\n };\n\n const sizeClasses = {\n sm: \"w-8 h-4 px-0.5\",\n md: \"w-10 h-5 px-0.5\",\n lg: \"w-12 h-6 px-1\",\n };\n\n const thumbSizeClasses = {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n };\n\n const thumbTransformClasses = {\n sm: checked ? \"translate-x-4\" : \"translate-x-0\",\n md: checked ? \"translate-x-5\" : \"translate-x-0\",\n lg: checked ? \"translate-x-6\" : \"translate-x-0\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n <div className={cn(\"flex items-center gap-2\", fullWidth && \"w-full\")}>\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n toggleClasses[variant],\n sizeClasses[size],\n widthClasses,\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={handleClick}\n disabled={disabled}\n role=\"switch\"\n aria-checked={checked}\n >\n <div\n className={cn(\n \"bg-white rounded-full shadow-md transform transition-transform duration-300\",\n thumbSizeClasses[size],\n thumbTransformClasses[size]\n )}\n />\n </button>\n \n {label && (\n <span\n className={cn(\n \"text-sm text-neutral-500 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n onClick={disabled ? undefined : handleClick}\n aria-disabled={disabled}\n >\n {label}\n </span>\n )}\n </div>\n \n {helperText && (\n <div className=\"mt-1 ml-12\">\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n </div>\n )}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\n\nexport interface DropdownOption {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n options: DropdownOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n trigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find(option => option.value === value);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleSelect = (option: DropdownOption) => {\n if (!option.disabled) {\n onChange?.(option.value);\n setIsOpen(false);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n return (\n <div ref={dropdownRef} className=\"\">\n {trigger ? (\n <div\n onClick={handleToggle}\n className={cn(disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\")}\n aria-disabled={disabled}\n >\n {trigger}\n </div>\n ) : (\n <button\n onClick={handleToggle}\n disabled={disabled}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full flex items-center justify-between pr-8\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <span className={selectedOption ? \"text-neutral-500\" : \"text-neutral-300\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <CaretDownIcon\n size={16}\n className={cn(\n \"text-neutral-400 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n )}\n\n {isOpen && (\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-secondary border border-surface-1 rounded-[6px] shadow-lg z-50 max-h-60 overflow-y-auto\">\n {options.map((option) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors duration-200 flex items-center gap-2\",\n option.value === value && \"bg-brand-color text-neutral-500\",\n !option.disabled && \"hover:bg-surface-3\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {option.icon && <span>{option.icon}</span>}\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React, { useState, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport fallbackLogo from \"../assets/icon-192x192.svg\";\n\ntype ImageSource = string | { src: string };\n\nexport interface ImageWithPlaceholderProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n src?: ImageSource;\n fallbackSrc?: string;\n}\n\nconst ImageWithPlaceholder: React.FC<ImageWithPlaceholderProps> = ({\n src,\n alt,\n fallbackSrc = fallbackLogo,\n className,\n onError,\n ...props\n}) => {\n const resolveSrc = (s: ImageSource | undefined | null) => {\n if (s && typeof s === \"object\" && \"src\" in s && typeof s.src === \"string\") {\n return s.src;\n }\n return typeof s === \"string\" ? s : undefined;\n };\n\n const isValidSrc = (s: string | undefined | null) => {\n if (!s) return false;\n const trimmed = s.trim();\n if (trimmed === \"\") return false;\n if (trimmed.startsWith(\"data:\")) return true;\n\n if (trimmed.startsWith(\"/\") || trimmed.startsWith(\"./\") || trimmed.startsWith(\"../\")) {\n return true;\n }\n\n // Bundlers often emit bare relative asset paths like \"Loader-ABC123.gif\".\n if (/^[^\\s?#]+\\.(png|jpe?g|gif|webp|svg|bmp|ico|avif)(\\?.*)?(#.*)?$/i.test(trimmed)) {\n return true;\n }\n\n try {\n new URL(trimmed);\n return true;\n } catch {\n return false;\n }\n };\n\n const resolvedSrc = resolveSrc(src);\n const initialSrc = isValidSrc(resolvedSrc) ? resolvedSrc : fallbackSrc;\n const [imgSrc, setImgSrc] = useState(initialSrc);\n const [hasError, setHasError] = useState(!isValidSrc(resolvedSrc));\n\n useEffect(() => {\n const nextResolvedSrc = resolveSrc(src);\n if (isValidSrc(nextResolvedSrc)) {\n setImgSrc(nextResolvedSrc);\n setHasError(false);\n } else {\n setImgSrc(fallbackSrc);\n setHasError(true);\n }\n }, [src, fallbackSrc]);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (!hasError) {\n setHasError(true);\n setImgSrc(fallbackSrc);\n }\n if (onError) {\n onError(e);\n }\n };\n\n return (\n <img\n {...props}\n src={typeof imgSrc === \"string\" ? imgSrc : undefined}\n alt={alt}\n className={cn(className)}\n onError={handleError}\n />\n );\n};\n\nexport default ImageWithPlaceholder;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport ImageWithPlaceholder from \"./ImageWithPlaceholder\";\nimport loaderGif from \"../assets/Loader.gif\";\n\nexport interface LoadingProps {\n variant?: \"spinner\" | \"dots\" | \"pulse\" | \"image\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n text?: string;\n fullScreen?: boolean;\n className?: string;\n}\n\nconst Loading: React.FC<LoadingProps> = ({\n variant = \"image\",\n size = \"md\",\n text = \"Loading...\",\n fullScreen = false,\n className,\n}) => {\n const sizeClasses = {\n sm: \"w-6 h-6\",\n md: \"w-8 h-8\",\n lg: \"w-12 h-12\",\n xl: \"w-16 h-16\",\n };\n\n const textSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-lg\",\n };\n\n const renderSpinner = () => (\n <div className={cn(\"animate-spin rounded-full border-2 border-current border-t-transparent\", sizeClasses[size])} />\n );\n\n const renderDots = () => (\n <div className=\"flex space-x-1\">\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"0ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"150ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"300ms\" }} />\n </div>\n );\n\n const renderPulse = () => (\n <div className={cn(\"animate-pulse rounded-full bg-current\", sizeClasses[size])} />\n );\n\n const imageSizes = {\n sm: 24,\n md: 32,\n lg: 48,\n xl: 64,\n };\n\n const renderImage = () => (\n <ImageWithPlaceholder\n src={loaderGif}\n alt=\"Loader\"\n width={imageSizes[size]}\n height={imageSizes[size]}\n className={sizeClasses[size]}\n />\n );\n\n const renderLoader = () => {\n switch (variant) {\n case \"spinner\":\n return renderSpinner();\n case \"dots\":\n return renderDots();\n case \"pulse\":\n return renderPulse();\n case \"image\":\n default:\n return renderImage();\n }\n };\n\n const content = (\n <div className={cn(\"flex flex-col justify-center items-center\", className)}>\n {renderLoader()}\n {text && (\n <div className={cn(\"mt-2 text-neutral-500\", textSizeClasses[size])}>\n {text}\n </div>\n )}\n </div>\n );\n\n if (fullScreen) {\n return (\n <div className=\"fixed inset-0 flex items-center justify-center bg-primary/50 backdrop-blur-sm z-50\">\n {content}\n </div>\n );\n }\n\n return content;\n};\n\nexport default Loading;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"avatar\" | \"image\" | \"card\" | \"rect\";\n lines?: number;\n lineClassName?: string;\n animate?: boolean;\n}\n\nconst basePulseClasses = \"skeleton-bg rounded-md overflow-hidden\";\n\nconst lineWidths = [\"w-full\", \"w-11/12\", \"w-4/5\", \"w-3/5\"];\n\nconst Skeleton: React.FC<SkeletonProps> = ({\n variant = \"text\",\n lines = 3,\n lineClassName,\n className,\n animate = true,\n ...props\n}) => {\n const pulseClasses = animate ? \"animate-pulse\" : \"\";\n\n if (variant === \"avatar\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"rounded-full h-10 w-10\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"image\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"h-40 w-full\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"rect\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"h-12 w-full\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"card\") {\n return (\n <div\n className={cn(\n \"w-full rounded-xl border border-surface-1/40 bg-secondary/60 p-4\",\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n <div className={cn(basePulseClasses, pulseClasses, \"h-10 w-10 rounded-full\")} />\n <div className=\"flex-1 space-y-2\">\n <div className={cn(basePulseClasses, pulseClasses, \"h-3 w-1/3 rounded\")} />\n <div className={cn(basePulseClasses, pulseClasses, \"h-3 w-1/4 rounded\")} />\n </div>\n </div>\n\n <div className=\"mt-4 space-y-2\">\n {Array.from({ length: Math.max(lines, 2) }).map((_, index) => (\n <div\n key={`card-line-${index}`}\n className={cn(\n basePulseClasses,\n pulseClasses,\n \"h-3 rounded\",\n lineWidths[index % lineWidths.length],\n lineClassName,\n )}\n />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"w-full space-y-2\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n {Array.from({ length: Math.max(lines, 1) }).map((_, index) => (\n <div\n key={`text-line-${index}`}\n className={cn(\n basePulseClasses,\n pulseClasses,\n \"h-3 rounded\",\n lineWidths[index % lineWidths.length],\n lineClassName,\n )}\n />\n ))}\n </div>\n );\n};\n\nexport default Skeleton;\n","import React, { useEffect, useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface ToastProps {\n heading?: string;\n message: string;\n type: \"error\" | \"success\" | \"info\" | \"warning\";\n isVisible: boolean;\n onClose: () => void;\n duration?: number;\n position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\";\n showCloseButton?: boolean;\n className?: string;\n}\n\nconst Toast: React.FC<ToastProps> = ({\n heading,\n message,\n type,\n isVisible,\n onClose,\n duration = 5000,\n position = \"bottom-left\",\n showCloseButton = true,\n className,\n}) => {\n const [isShowing, setIsShowing] = useState(false);\n\n useEffect(() => {\n if (isVisible) {\n setIsShowing(true);\n let timer: ReturnType<typeof setTimeout> | null = null;\n if (type !== \"error\" && duration > 0) {\n timer = setTimeout(() => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n }, duration);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }\n }, [isVisible, type, duration, onClose]);\n\n if (!isVisible) return null;\n\n const getIcon = () => {\n switch (type) {\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"error\":\n return \"border-l-red-500 bg-red-50\";\n case \"success\":\n return \"border-l-green-500 bg-green-50\";\n case \"warning\":\n return \"border-l-yellow-500 bg-yellow-50 dark:text-[#121316]\";\n case \"info\":\n return \"border-l-blue-500 bg-blue-50\";\n default:\n return \"border-l-blue-500 bg-blue-50\";\n }\n };\n\n const getPositionClasses = () => {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"top-right\":\n return \"top-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n case \"top-center\":\n return \"top-4 left-1/2 transform -translate-x-1/2\";\n case \"bottom-center\":\n return \"bottom-4 left-1/2 transform -translate-x-1/2\";\n default:\n return \"bottom-4 left-4\";\n }\n };\n\n const handleClose = () => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n };\n\n return (\n <div\n className={cn(\n \"fixed z-50 transform transition-all duration-300\",\n getPositionClasses(),\n isShowing ? \"translate-x-0 opacity-100\" : \"-translate-x-full opacity-0\"\n )}\n >\n <div\n className={cn(\n \"w-80 max-w-sm bg-secondary rounded-[6px] shadow-lg border-l-4 p-4\",\n getTypeClasses(),\n className\n )}\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <Typography\n variant=\"h4\"\n className={cn(\n \"text-sm font-medium mb-1\",\n type === \"warning\"\n ? \"text-neutral-700 dark:text-[#121316]\"\n : \"text-neutral-700\"\n )}\n >\n {heading}\n </Typography>\n )}\n <Typography\n variant=\"p\"\n className={cn(\n \"text-sm leading-relaxed\",\n type === \"warning\"\n ? \"text-neutral-600 dark:text-[#121316]\"\n : \"text-neutral-600\"\n )}\n >\n {message}\n </Typography>\n </div>\n\n {/* Close Button */}\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"flex-shrink-0 ml-2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Toast;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface AlertProps {\n type: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n onClose?: () => void;\n showCloseButton?: boolean;\n variant?: \"default\" | \"filled\" | \"outline\";\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps> = ({\n type,\n title,\n message,\n onClose,\n showCloseButton = false,\n variant = \"default\",\n className,\n children,\n}) => {\n const getIcon = () => {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"success\":\n return {\n default: \"bg-green-50 border-green-200 text-green-800\",\n filled: \"bg-green-500 text-white\",\n outline: \"bg-transparent border-green-500 text-green-700\",\n };\n case \"error\":\n return {\n default: \"bg-red-50 border-red-200 text-red-800\",\n filled: \"bg-red-500 text-white\",\n outline: \"bg-transparent border-red-500 text-red-700\",\n };\n case \"warning\":\n return {\n default: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n filled: \"bg-yellow-500 text-white\",\n outline: \"bg-transparent border-yellow-500 text-yellow-700\",\n };\n case \"info\":\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n default:\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n }\n };\n\n const typeClasses = getTypeClasses()[variant];\n\n return (\n <div\n className={cn(\n \"rounded-[6px] border p-4\",\n typeClasses,\n className\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h4\" className=\"text-sm font-medium mb-1\">\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"p\" className=\"text-sm leading-relaxed\">\n {message}\n </Typography>\n )}\n {children}\n </div>\n\n {/* Close Button */}\n {showCloseButton && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 ml-2 text-current opacity-70 hover:opacity-100 transition-opacity\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\nimport { XIcon } from \"@phosphor-icons/react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n showCloseButton?: boolean;\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n className?: string;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && closeOnEscape) {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-full mx-4\",\n };\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n >\n <div\n className={cn(\n \"bg-secondary rounded-[6px] shadow-xl w-full mx-4 max-h-[90vh] overflow-hidden\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-surface-1\">\n {title && (\n <Typography\n variant=\"h2\"\n className=\"text-lg font-semibold text-neutral-500\"\n >\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-1 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={20} />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-4 py-2 overflow-y-auto max-h-[calc(90vh-120px)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"elevated\" | \"outlined\" | \"filled\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n children: React.ReactNode;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-secondary border border-surface-1\",\n elevated: \"bg-secondary border border-surface-1 shadow-lg\",\n outlined: \"bg-transparent border border-surface-1\",\n filled: \"bg-surface-4 border border-surface-4\",\n };\n\n const paddingClasses = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-[6px] transition-all duration-200\",\n variantClasses[variant],\n paddingClasses[padding],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nexport default Card;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n children: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n rounded = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-surface-3 text-neutral-400\",\n primary: \"bg-brand-color text-neutral-500 dark:text-white\",\n success: \"bg-green-500 text-white\",\n warning: \"bg-yellow-500 text-white\",\n danger: \"bg-red-500 text-white\",\n info: \"bg-blue-500 text-white\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-1 text-sm\",\n lg: \"px-3 py-1.5 text-base\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-medium\",\n variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","import React, { useState, useCallback } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n fallback?: string;\n className?: string;\n onClick?: () => void;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"Avatar\",\n size = \"md\",\n fallback,\n className,\n onClick,\n}) => {\n const [imgError, setImgError] = useState(false);\n\n const sizeClasses = {\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n xl: \"w-16 h-16 text-lg\",\n };\n\n const getInitials = (name: string) => {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n const renderFallback = () => {\n if (fallback) {\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400 font-medium\">\n {getInitials(fallback)}\n </div>\n );\n }\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400\">\n <svg className=\"w-1/2 h-1/2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n );\n };\n\n // Use a callback to avoid unnecessary re-renders\n const handleImgError = useCallback(() => {\n setImgError(true);\n }, []);\n\n // Check if src is a non-empty string\n const isSrcAvailable = typeof src === \"string\" && src.trim() !== \"\";\n\n return (\n <div\n className={cn(\n \"relative rounded-full overflow-hidden bg-surface-3\",\n sizeClasses[size],\n className\n )}\n onClick={onClick}\n style={onClick ? { cursor: \"pointer\" } : undefined}\n >\n {isSrcAvailable && !imgError ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src as string}\n alt={alt}\n className=\"object-cover\"\n sizes={\n size === \"sm\"\n ? \"32px\"\n : size === \"md\"\n ? \"40px\"\n : size === \"lg\"\n ? \"48px\"\n : \"64px\"\n }\n onError={handleImgError}\n />\n ) : (\n renderFallback()\n )}\n </div>\n );\n};\n\nexport default Avatar;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface DividerProps {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"solid\" | \"dashed\" | \"dotted\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n variant = \"solid\",\n size = \"md\",\n className,\n}) => {\n const variantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n\n const sizeClasses = {\n sm: orientation === \"horizontal\" ? \"border-t\" : \"border-l\",\n md: orientation === \"horizontal\" ? \"border-t-2\" : \"border-l-2\",\n lg: orientation === \"horizontal\" ? \"border-t-4\" : \"border-l-4\",\n };\n\n const orientationClasses = {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n };\n\n return (\n <div\n className={cn(\n \"border-surface-1\",\n variantClasses[variant],\n sizeClasses[size],\n orientationClasses[orientation],\n className\n )}\n />\n );\n};\n\nexport default Divider;\n","import React, { useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n delay?: number;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n delay = 200,\n className,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null);\n\n const showTooltip = () => {\n const id = setTimeout(() => setIsVisible(true), delay);\n setTimeoutId(id);\n };\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n setIsVisible(false);\n };\n\n const positionClasses = {\n top: \"bottom-full left-1/2 transform -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 transform -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 transform -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 transform -translate-y-1/2 ml-2\",\n };\n\n const arrowClasses = {\n top: \"top-full left-1/2 transform -translate-x-1/2 border-t-surface-1\",\n bottom: \"bottom-full left-1/2 transform -translate-x-1/2 border-b-surface-1\",\n left: \"left-full top-1/2 transform -translate-y-1/2 border-l-surface-1\",\n right: \"right-full top-1/2 transform -translate-y-1/2 border-r-surface-1\",\n };\n\n return (\n <div\n className=\"relative inline-block\"\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n >\n {children}\n {isVisible && (\n <div\n className={cn(\n \"absolute z-50 px-2 py-1 text-xs tooltip-text bg-surface-1 rounded shadow-lg whitespace-nowrap\",\n positionClasses[position],\n className\n )}\n >\n {content}\n <div\n className={cn(\n \"absolute w-0 h-0 border-4 border-transparent\",\n arrowClasses[position]\n )}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","import { useState, useEffect, useRef } from \"react\";\nimport { UAParser } from \"ua-parser-js\";\n\ntype OS = \"mac\" | \"windows\" | \"linux\";\n\ntype KeyMap = {\n [key in OS]: {\n [key: string]: string;\n };\n};\n\ntype Shortcut = {\n command: string;\n shortcut: string[];\n usage: string;\n};\n\nconst keyMap: KeyMap = {\n mac: {\n ctrl: \"⌘\",\n alt: \"⌥\",\n shift: \"⇧\",\n enter: \"⏎\",\n backspace: \"⌫\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n windows: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n linux: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n};\n\nconst detectOS = (): OS => {\n const parser = new UAParser();\n const osName = parser.getOS().name?.toLowerCase() || \"\";\n\n if (osName.includes(\"mac\")) return \"mac\";\n if (osName.includes(\"windows\")) return \"windows\";\n if (osName.includes(\"linux\")) return \"linux\";\n return \"windows\"; // fallback\n};\n\ntype UseShortcutFormatterReturn = {\n formatKeys: (keys: string[]) => string;\n getShortcutByCommand: (command: string) => string[];\n addShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => void;\n removeShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => void;\n};\n\nconst normalizeKey = (key: string) => key.toLowerCase();\n\nconst matchShortcut = (event: KeyboardEvent, shortcut: string[], os: OS) => {\n // Normalize keys for comparison\n const keySet = new Set(shortcut.map(normalizeKey));\n // Map event to normalized keys\n const pressed: string[] = [];\n if (os === \"mac\") {\n if (event.metaKey) pressed.push(\"ctrl\");\n } else {\n if (event.ctrlKey) pressed.push(\"ctrl\");\n }\n if (event.altKey) pressed.push(\"alt\");\n if (event.shiftKey) pressed.push(\"shift\");\n // The main key\n if (event.key && ![\"Control\", \"Meta\", \"Alt\", \"Shift\"].includes(event.key)) {\n pressed.push(normalizeKey(event.key));\n }\n // Compare sets\n if (pressed.length !== shortcut.length) return false;\n return pressed.every((k) => keySet.has(k));\n};\n\nconst useShortcutFormatter = ({\n globalKeyboardShortcuts = [],\n}: {\n globalKeyboardShortcuts: Shortcut[];\n}): UseShortcutFormatterReturn => {\n const [os, setOS] = useState<OS>(\"windows\");\n const listenersRef = useRef<Map<string, Set<(e: KeyboardEvent) => void>>>(\n new Map(),\n );\n\n useEffect(() => {\n setOS(detectOS());\n }, []);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const shortcut of globalKeyboardShortcuts) {\n if (matchShortcut(event, shortcut.shortcut, os)) {\n const listeners = listenersRef.current.get(shortcut.command);\n if (listeners) {\n event.preventDefault(); // Prevent browser defaults for matched shortcuts\n listeners.forEach((cb) => cb(event));\n }\n }\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [os]);\n\n const formatKeys = (keys: string[] = []): string => {\n return keys\n .map((key) => keyMap[os][key.toLowerCase()] || key.toUpperCase())\n .join(\" + \");\n };\n\n const getShortcutByCommand = (command: string): string[] => {\n const found = globalKeyboardShortcuts.find((s) => s.command === command);\n return found ? found.shortcut : [\"\"];\n };\n\n const addShortcutListener = (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => {\n if (!listenersRef.current.has(command)) {\n listenersRef.current.set(command, new Set());\n }\n listenersRef.current.get(command)!.add(listener);\n };\n\n const removeShortcutListener = (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => {\n if (listenersRef.current.has(command)) {\n listenersRef.current.get(command)!.delete(listener);\n }\n };\n\n return {\n formatKeys,\n getShortcutByCommand,\n addShortcutListener,\n removeShortcutListener,\n };\n};\n\nexport default useShortcutFormatter;\n","export const globalKeyboardShortcuts = [\n {\n command: \"exit_app\",\n shortcut: [\"ctrl\", \"q\"],\n usage: \"Exit app\",\n },\n {\n command: \"minimize_app\",\n shortcut: [\"ctrl\", \"m\"],\n usage: \"Minimize app\",\n },\n {\n command: \"maximize_app\",\n shortcut: [\"ctrl\", \"shift\", \"m\"],\n usage: \"Maximize app\",\n },\n {\n command: \"focus_search\",\n shortcut: [\"ctrl\", \"k\"],\n usage: \"Focus search\",\n },\n];\n","import React, {\n useImperativeHandle,\n useRef,\n useCallback,\n useEffect,\n} from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport { globalKeyboardShortcuts } from \"@/utils/constants\";\n\nexport interface SearchInputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> {\n onSearch?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n showClearButton?: boolean;\n className?: string;\n enableKeyboardShortcuts?: boolean;\n isActive?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n onSearch,\n placeholder = \"Search...\",\n variant = \"default\",\n size = \"md\",\n showClearButton = true,\n className,\n value,\n onChange,\n style,\n enableKeyboardShortcuts = false,\n isActive = true,\n ...props\n },\n ref,\n ) => {\n const [searchValue, setSearchValue] = React.useState(value || \"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const {\n addShortcutListener,\n removeShortcutListener,\n formatKeys,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n\n useEffect(() => {\n setSearchValue(value ?? \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setSearchValue(newValue);\n onChange?.(e);\n onSearch?.(newValue);\n };\n\n const handleClear = useCallback(() => {\n setSearchValue(\"\");\n onSearch?.(\"\");\n // Create a synthetic event for onChange\n const syntheticEvent = {\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n }, [onChange, onSearch]);\n\n useEffect(() => {\n if (!enableKeyboardShortcuts || !isActive) return;\n\n const handleFocusSearch = (e?: KeyboardEvent) => {\n e?.preventDefault();\n inputRef.current?.focus();\n };\n\n const handleClearShortcut = (e?: KeyboardEvent) => {\n e?.preventDefault();\n handleClear();\n inputRef.current?.blur();\n };\n\n addShortcutListener(\"focus_search\", handleFocusSearch);\n addShortcutListener(\"escape_button_action\", handleClearShortcut);\n\n return () => {\n removeShortcutListener(\"focus_search\", handleFocusSearch);\n removeShortcutListener(\"escape_button_action\", handleClearShortcut);\n };\n }, [\n enableKeyboardShortcuts,\n isActive,\n handleClear,\n addShortcutListener,\n removeShortcutListener,\n ]);\n\n const displayPlaceholder = enableKeyboardShortcuts\n ? `${placeholder} (${formatKeys(getShortcutByCommand(\"focus_search\"))})`\n : placeholder;\n\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n\n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"h-8 text-sm leading-tight\",\n md: \"h-10 text-base leading-tight\",\n lg: \"h-12 text-lg leading-tight\",\n };\n\n const iconSizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n const iconPixelSizes = {\n sm: 16,\n md: 18,\n lg: 20,\n };\n\n const iconPositionClasses = {\n sm: \"left-2.5\",\n md: \"left-3\",\n lg: \"left-3.5\",\n };\n\n const inputPaddings = {\n sm: { left: \"2.25rem\", right: \"0.5rem\" },\n md: { left: \"2.75rem\", right: \"0.75rem\" },\n lg: { left: \"3rem\", right: \"1rem\" },\n };\n\n return (\n <div className=\"relative w-full min-w-0\">\n {/* Search Icon */}\n <div\n className={cn(\n \"pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-neutral-400\",\n iconPositionClasses[size]\n )}\n >\n <svg\n className={cn(\"block shrink-0\", iconSizeClasses[size])}\n width={iconPixelSizes[size]}\n height={iconPixelSizes[size]}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L16.65 16.65\" />\n </svg>\n </div>\n\n <input\n ref={inputRef}\n type=\"text\"\n placeholder={displayPlaceholder}\n value={searchValue}\n onChange={handleChange}\n className={cn(\n baseClasses,\n variantClasses[variant],\n \"w-full min-w-0\",\n sizeClasses[size],\n className,\n )}\n style={{\n paddingLeft: inputPaddings[size].left,\n paddingRight: showClearButton && searchValue ? \"2.5rem\" : inputPaddings[size].right,\n ...style,\n }}\n {...props}\n />\n\n {/* Clear Button */}\n {showClearButton && searchValue && (\n <button\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n aria-label=\"Clear search\"\n type=\"button\"\n >\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n );\n },\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport default SearchInput;\n","import React, { useRef } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { UploadIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface FileUploadProps {\n onFileSelect?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n dragAndDrop?: boolean;\n}\n\nconst FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept,\n multiple = false,\n maxSize,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n children,\n dragAndDrop = false,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n\n const handleFileSelect = (files: FileList | null) => {\n if (!files) return;\n\n const fileArray = Array.from(files);\n \n // Validate file size\n if (maxSize) {\n const validFiles = fileArray.filter(file => file.size <= maxSize);\n if (validFiles.length !== fileArray.length) {\n console.warn(\"Some files were too large and were skipped\");\n }\n onFileSelect?.(validFiles);\n } else {\n onFileSelect?.(fileArray);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFileSelect(e.target.files);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (dragAndDrop && !disabled) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n if (dragAndDrop && !disabled) {\n handleFileSelect(e.dataTransfer.files);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-20 px-3 text-sm\",\n md: \"h-24 px-4 text-base\",\n lg: \"h-32 px-6 text-lg\",\n };\n\n const defaultTextClasses = variant === \"default\" || variant === \"outline\"\n ? \"text-neutral-600\"\n : \"text-neutral-600\";\n\n const acceptTextClasses = variant === \"default\" || variant === \"outline\"\n ? \"text-xs text-neutral-600\"\n : \"text-xs text-neutral-600\";\n\n const defaultContent = (\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\n <UploadIcon size={24} className={cn(\"mb-2\", defaultTextClasses)} />\n <Typography variant=\"p\" className={cn(\"text-sm\", defaultTextClasses)}>\n {dragAndDrop ? \"Drag and drop files here\" : \"Click to upload files\"}\n </Typography>\n {accept && (\n <Typography variant=\"p\" className={cn(acceptTextClasses, \"mt-1\")}>\n Accepted: {accept}\n </Typography>\n )}\n </div>\n );\n\n return (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full rounded-[6px] border-2 border-dashed flex items-center justify-center\",\n isDragOver && \"border-brand-color bg-brand-color/10\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n className=\"hidden\"\n disabled={disabled}\n />\n {children || defaultContent}\n </div>\n );\n};\n\nexport default FileUpload;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ProgressProps {\n value: number; // 0-100\n max?: number;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n animated?: boolean;\n className?: string;\n}\n\nconst Progress: React.FC<ProgressProps> = ({\n value,\n max = 100,\n variant = \"default\",\n size = \"md\",\n showLabel = false,\n animated = false,\n className,\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const variantClasses = {\n default: \"bg-brand-color\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n };\n\n const sizeClasses = {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const labelSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1\">\n <div\n className={cn(\n \"w-full bg-surface-3 rounded-[6px] overflow-hidden\",\n sizeClasses[size]\n )}\n >\n <div\n className={cn(\n \"h-full rounded-[6px] transition-all duration-300\",\n variantClasses[variant],\n animated && \"animate-pulse\"\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n {showLabel && (\n <span className={cn(\"text-neutral-400 font-medium\", labelSizeClasses[size])}>\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretLeftIcon, CaretRightIcon } from \"@phosphor-icons/react\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n maxVisiblePages?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n showFirstLast = true,\n showPrevNext = true,\n maxVisiblePages = 5,\n size = \"md\",\n variant = \"default\",\n className,\n}) => {\n const getVisiblePages = () => {\n const pages: (number | string)[] = [];\n const halfVisible = Math.floor(maxVisiblePages / 2);\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n let start = Math.max(1, currentPage - halfVisible);\n const end = Math.min(totalPages, start + maxVisiblePages - 1);\n\n if (end - start + 1 < maxVisiblePages) {\n start = Math.max(1, end - maxVisiblePages + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(\"...\");\n }\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const handlePageClick = (page: number | string) => {\n if (typeof page === \"number\") {\n onPageChange(page);\n }\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 hover:bg-surface-3\",\n outline: \"bg-transparent border border-surface-1 hover:bg-surface-3\",\n };\n\n const activeClasses = {\n default: \"bg-brand-color text-neutral-500 border-brand-color\",\n outline: \"bg-brand-color text-neutral-500 border-brand-color\",\n };\n\n const renderPageButton = (page: number | string, index: number) => {\n if (page === \"...\") {\n return (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n \"flex items-center justify-center\",\n sizeClasses[size],\n \"text-neutral-400\"\n )}\n >\n ...\n </span>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <button\n key={page}\n onClick={() => handlePageClick(page)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n isActive ? activeClasses[variant] : \"text-neutral-400\",\n !isActive && \"hover:text-neutral-500\"\n )}\n >\n {page}\n </button>\n );\n };\n\n return (\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\n {/* First Page */}\n {showFirstLast && currentPage > 1 && (\n <button\n onClick={() => onPageChange(1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n First\n </button>\n )}\n\n {/* Previous Page */}\n {showPrevNext && currentPage > 1 && (\n <button\n onClick={() => onPageChange(currentPage - 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretLeftIcon size={16} />\n </button>\n )}\n\n {/* Page Numbers */}\n {getVisiblePages().map((page, index) => renderPageButton(page, index))}\n\n {/* Next Page */}\n {showPrevNext && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(currentPage + 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretRightIcon size={16} />\n </button>\n )}\n\n {/* Last Page */}\n {showFirstLast && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(totalPages)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n Last\n </button>\n )}\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"filled\";\n error?: string;\n helperText?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className,\n label,\n size = \"md\",\n variant = \"default\",\n error,\n helperText,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"radio\"\n className={cn(\n \"peer\",\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n disabled={disabled}\n {...props}\n />\n \n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"w-1/2 h-1/2 bg-white rounded-full opacity-0 peer-checked:opacity-100\" />\n </div>\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport { CaretUpIcon, CaretDownIcon } from \"@phosphor-icons/react\";\n\ninterface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n active?: number;\n}\n\nconst Accordion: React.FC<AccordionProps> = ({ items, active = -1 }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(active);\n\n const toggleAccordion = (index: number) => {\n setActiveIndex(activeIndex === index ? null : index);\n };\n\n return (\n <div className=\"w-full space-y-[12px]\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"border border-surface-1 mx-[10px] rounded-[6px]\"\n >\n <button\n onClick={() => toggleAccordion(index)}\n className=\"w-full text-left px-[12px] py-[10px] bg-surface-4 flex justify-between items-center focus:outline-none\"\n >\n <span className=\"font-medium text-neutral-400 text-[13px]\">\n {item.title}\n </span>\n <span className=\"flex flex-row gap-[16px]\">\n {activeIndex === index ? (\n <CaretUpIcon size={18} />\n ) : (\n <CaretDownIcon size={18} />\n )}\n </span>\n </button>\n <div\n className={`overflow-hidden transition-all duration-300 ${\n activeIndex === index ? \"px-[12px] py-[12px]\" : \"max-h-0\"\n }`}\n >\n {item.content}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default Accordion;\n","import React, { useState, useEffect } from 'react';\n\ninterface TabItem {\n label: string;\n content: React.ReactNode;\n icon?: React.ReactNode;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActiveTab?: number;\n onTabChange?: (index: number) => void;\n containerClassName?: string;\n buttonClassName?: string;\n activeButtonClassName?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActiveTab = 0,\n onTabChange,\n containerClassName = \"flex w-full border border-border-1 rounded-[6px] mt-[16px]\",\n buttonClassName = \"flex items-center gap-1 px-[8px] py-[2px] text-[13px] cursor-pointer transition-all duration-300 text-neutral-300 rounded-[6px] m-[8px]\",\n activeButtonClassName = \"bg-surface-3 text-neutral-400\",\n}) => {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n if (onTabChange) {\n onTabChange(index);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={containerClassName}>\n {tabs.map((tab, index) => (\n <div\n key={index}\n className={`${buttonClassName} ${\n activeTab === index ? activeButtonClassName : \"\"\n }`}\n onClick={() => handleTabClick(index)}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </div>\n ))}\n </div>\n <div className=\"w-full mt-4 flex flex-col gap-4\">\n {tabs[activeTab].content}\n </div>\n </div>\n );\n};\n\nexport default Tabs;","import {\n Children,\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type { AppInterface } from \"@/types/appsList\";\nimport type {\n PluginAPI,\n PluginComponentProps,\n PluginManifest,\n} from \"@/types/plugins\";\n\ntype ToastType = \"success\" | \"error\" | \"info\";\n\ninterface MockUser {\n id: string;\n name: string;\n email: string;\n}\n\ntype WindowVariant = \"with-side-menu\" | \"without-side-menu\";\n\ninterface PlaygroundMenuItem {\n title: string;\n icon?: string;\n isActive?: boolean;\n}\n\ninterface PlaygroundMenu {\n title: string;\n items: PlaygroundMenuItem[];\n}\n\ninterface PlaygroundActionButton {\n title: string;\n}\n\ninterface PluginPlaygroundMetadata extends Partial<PluginManifest> {\n title?: string;\n defaultWidth?: number;\n defaultHeight?: number;\n minWidth?: number;\n minHeight?: number;\n windowVariant?: WindowVariant;\n menu?: PlaygroundMenu;\n actionButton?: PlaygroundActionButton;\n backgroundImage?: string;\n}\n\ninterface PluginPlaygroundProps {\n children:\n | React.ReactNode\n | ((props: PluginComponentProps) => React.ReactNode);\n metadata: PluginPlaygroundMetadata;\n backgroundImage?: string;\n onClose?: () => void;\n onMinimize?: (isMinimized: boolean) => void;\n}\n\nconst DEFAULT_BACKGROUND = \"/wallpaper/Wallpaper3.webp\";\nconst DEFAULT_MOCK_USER: MockUser = {\n id: \"dev-user\",\n name: \"Plugin Developer\",\n email: \"dev@local.test\",\n};\nconst DEFAULT_TOKEN = \"playground-dev-token\";\n\nfunction renderPluginChild(\n child: React.ReactNode | ((props: PluginComponentProps) => React.ReactNode),\n app: AppInterface,\n api: PluginAPI,\n reloadKey: number,\n): React.ReactNode {\n if (!child) return null;\n\n if (typeof child === \"function\") {\n const renderFn = child as (props: PluginComponentProps) => React.ReactNode;\n return renderFn({ app, api });\n }\n\n return Children.map(child as React.ReactNode, (node, index) => {\n if (!isValidElement(node)) {\n return node;\n }\n\n return cloneElement(\n node as React.ReactElement<Partial<PluginComponentProps>>,\n {\n key: `${reloadKey}-${index}`,\n app,\n api,\n },\n );\n });\n}\n\nfunction getDefaultSize(metadata: PluginPlaygroundMetadata) {\n const manifestWindowSize = metadata.windowSize?.windowSize;\n const minWidth = metadata.minWidth ?? 520;\n const minHeight = metadata.minHeight ?? 360;\n\n return {\n width: Math.max(\n manifestWindowSize?.width ?? metadata.defaultWidth ?? 960,\n minWidth,\n ),\n height: Math.max(\n manifestWindowSize?.height ?? metadata.defaultHeight ?? 680,\n minHeight,\n ),\n };\n}\n\nexport default function PluginPlayground({\n children,\n metadata,\n backgroundImage,\n onClose,\n onMinimize,\n}: Readonly<PluginPlaygroundProps>) {\n const [mockUser] = useState<MockUser>(DEFAULT_MOCK_USER);\n const [mockToken] = useState(DEFAULT_TOKEN);\n const [isMinimized, setIsMinimized] = useState(false);\n const [isClosed, setIsClosed] = useState(false);\n const [isActive, setIsActive] = useState(true);\n const [isNightMode, setIsNightMode] = useState(true);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const storedTheme = window.localStorage.getItem(\"plugin-playground-theme\");\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const shouldUseDark = storedTheme ? storedTheme === \"dark\" : prefersDark;\n setIsNightMode(shouldUseDark);\n }, []);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n document.documentElement.classList.toggle(\"dark\", isNightMode);\n window.localStorage.setItem(\n \"plugin-playground-theme\",\n isNightMode ? \"dark\" : \"light\",\n );\n }, [isNightMode]);\n\n const title = metadata.title ?? metadata.name ?? \"Plugin Playground\";\n const slug = metadata.slug ?? \"local-plugin\";\n const defaultSize = useMemo(() => getDefaultSize(metadata), [metadata]);\n const canvasBackground =\n backgroundImage ?? metadata.backgroundImage ?? DEFAULT_BACKGROUND;\n const isWindowResizable =\n metadata.windowSize?.isAppWindowResizing ?? metadata.isResizing ?? true;\n\n const minimizeWindow = useCallback(() => {\n setIsActive(false);\n setIsMinimized(true);\n setIsClosed(false);\n onMinimize?.(true);\n }, [onMinimize]);\n\n const closeWindow = useCallback(() => {\n setIsActive(false);\n setIsClosed(true);\n setIsMinimized(false);\n onClose?.();\n }, [onClose]);\n\n const restoreWindow = useCallback(() => {\n setIsActive(true);\n setIsClosed(false);\n setIsMinimized(false);\n onMinimize?.(false);\n }, [onMinimize]);\n\n const mockApi: PluginAPI = useMemo(\n () => ({\n showToast: (message: string, type: ToastType) => {\n console.info(`[playground:${type}] ${message}`);\n },\n openApp: (app: AppInterface) => {\n console.info(`[playground:openApp] ${app.slug}`);\n },\n getUser: async () => {\n return mockUser;\n },\n getToken: async () => {\n return mockToken;\n },\n }),\n [mockToken, mockUser],\n );\n\n const appProps: AppInterface = useMemo(\n () => ({\n name: title,\n slug,\n icon: metadata.icon,\n isActive,\n isMinimize: isMinimized,\n componentKey: \"plugin-playground\",\n windowSize: {\n windowSize: defaultSize,\n isAppWindowResizing: isWindowResizable,\n },\n metadata: {\n title,\n description: metadata.description,\n ogImage: metadata.icon,\n keywords: metadata.keywords?.join(\", \"),\n author: metadata.author,\n siteName: \"Plugin Playground\",\n },\n callback: (value) => {\n if (value === \"MINIMIZE_APP\") {\n minimizeWindow();\n return;\n }\n\n if (value === \"CLOSE_APP\") {\n closeWindow();\n return;\n }\n\n if (value === \"CLICKED\") {\n setIsActive(true);\n }\n },\n }),\n [\n closeWindow,\n defaultSize,\n isActive,\n isMinimized,\n metadata.author,\n metadata.description,\n metadata.icon,\n metadata.keywords,\n minimizeWindow,\n isWindowResizable,\n slug,\n title,\n ],\n );\n\n const injectedPlugin = renderPluginChild(\n children,\n appProps,\n mockApi,\n Number(isClosed),\n );\n\n return (\n <div\n className=\"relative h-screen w-screen overflow-hidden bg-cover bg-center bg-no-repeat text-white transition-colors duration-200 dark:text-slate-100\"\n style={{ backgroundImage: `url(${canvasBackground})` }}\n >\n <button\n aria-pressed={isNightMode}\n className=\"absolute left-4 top-4 z-40 rounded-full border border-white/30 bg-white/75 px-3 py-2 text-xs font-medium text-slate-900 shadow-lg shadow-black/20 backdrop-blur-md transition-all duration-200 dark:border-slate-700/60 dark:bg-slate-900/70 dark:text-slate-100 dark:shadow-slate-950/40\"\n onClick={() => setIsNightMode((prev) => !prev)}\n type=\"button\"\n >\n {isNightMode ? \"☀️ Light Mood\" : \"🌙 Night Mood\"}\n </button>\n\n {!isClosed ? injectedPlugin : null}\n\n {isClosed || isMinimized ? (\n <button\n className=\"absolute bottom-6 left-1/2 z-40 -translate-x-1/2 rounded-full border border-white/30 bg-black/55 px-4 py-2 text-xs text-white backdrop-blur-md transition-colors duration-200 dark:border-white/20 dark:bg-slate-950/70 dark:text-slate-100\"\n onClick={restoreWindow}\n type=\"button\"\n >\n {isClosed ? `Reopen ${title}` : `Restore ${title}`}\n </button>\n ) : null}\n </div>\n );\n}\n","import Button from \"./Button\";\nimport Typography from \"./Typography\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport React, {\n useReducer,\n useEffect,\n useRef,\n isValidElement,\n ReactElement,\n} from \"react\";\nimport { AppInterface } from \"@/types/appsList\";\nimport { globalKeyboardShortcuts } from \"@/utils/constants\";\n\nconst SIDEBAR_WIDTH = 200; // fixed sidebar width\n\nexport type WindowSizeProps = {\n windowSize: { width: number; height: number };\n isAppWindowResizing: boolean;\n};\n\ntype ActionButton = {\n title: string;\n onClick: () => void;\n};\n\ntype MenuItem = {\n title: string;\n icon: React.ReactNode;\n onClick: () => void;\n isActive?: boolean;\n};\n\ninterface WindowWithSideMenuProps {\n app: AppInterface;\n children?: React.ReactNode;\n defaultSize?: { width: number; height: number };\n isResizable?: boolean;\n actionButtons?: ActionButton;\n menu?: {\n title: string;\n items: MenuItem[];\n };\n}\n\ninterface State {\n position: { x: number; y: number };\n isDragging: boolean;\n startPosition: { x: number; y: number };\n isMinimized: boolean;\n isMaximized: boolean;\n windowSize: { width: number; height: number };\n resizeStart: { x: number; y: number } | null;\n defaultSize: { width: number; height: number };\n preMaximizeState: {\n position: { x: number; y: number };\n windowSize: { width: number; height: number };\n } | null;\n}\n\ntype Action =\n | { type: \"START_DRAG\"; payload: { x: number; y: number } }\n | { type: \"DRAG\"; payload: { x: number; y: number } }\n | { type: \"STOP_DRAG\" }\n | { type: \"START_RESIZE\"; payload: { x: number; y: number } }\n | { type: \"RESIZE\"; payload: { width: number; height: number } }\n | { type: \"STOP_RESIZE\" }\n | { type: \"TOGGLE_MINIMIZE\"; payload: { width: number; height: number } }\n | { type: \"TOGGLE_MAXIMIZE\"; payload?: { width: number; height: number } }\n | { type: \"SYNC_MINIMIZE_STATE\"; payload: boolean };\n\nconst initialState: State = {\n position: { x: 0, y: 40 },\n isDragging: false,\n startPosition: { x: 0, y: 40 },\n isMinimized: false,\n isMaximized: false,\n windowSize: { width: 600, height: 300 },\n resizeStart: null,\n defaultSize: { width: 600, height: 300 },\n preMaximizeState: null,\n};\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"START_DRAG\":\n return { ...state, isDragging: true, startPosition: action.payload };\n case \"DRAG\":\n return { ...state, position: action.payload };\n case \"STOP_DRAG\":\n return { ...state, isDragging: false };\n case \"START_RESIZE\":\n return {\n ...state,\n resizeStart: action.payload,\n };\n case \"RESIZE\":\n return { ...state, windowSize: action.payload };\n case \"STOP_RESIZE\":\n return { ...state, resizeStart: null };\n case \"TOGGLE_MINIMIZE\":\n return {\n ...state,\n isMinimized: !state.isMinimized,\n windowSize: {\n width: action.payload.width,\n height: state.isMinimized ? action.payload.height : 33,\n },\n };\n case \"SYNC_MINIMIZE_STATE\":\n return {\n ...state,\n isMinimized: action.payload,\n windowSize: action.payload\n ? { width: state.windowSize.width, height: 33 }\n : { width: state.windowSize.width, height: state.defaultSize.height },\n };\n case \"TOGGLE_MAXIMIZE\":\n if (state.isMaximized) {\n return {\n ...state,\n isMaximized: false,\n windowSize: state.preMaximizeState?.windowSize || state.defaultSize,\n position: state.preMaximizeState?.position || { x: 0, y: 40 },\n preMaximizeState: null,\n };\n }\n return {\n ...state,\n isMaximized: true,\n preMaximizeState: {\n position: state.position,\n windowSize: state.windowSize,\n },\n windowSize: action.payload || {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n position: { x: 0, y: 40 },\n };\n default:\n return state;\n }\n};\n\nconst WindowWithSideMenu: React.FC<WindowWithSideMenuProps> = ({\n app,\n children,\n defaultSize = { width: 600, height: 300 },\n isResizable = true,\n actionButtons,\n menu,\n}) => {\n const {\n formatKeys,\n addShortcutListener,\n removeShortcutListener,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n const [state, dispatch] = useReducer(reducer, {\n ...initialState,\n windowSize: app.windowSize.windowSize ?? defaultSize,\n defaultSize: app.windowSize.windowSize ?? defaultSize,\n });\n\n const windowRef = useRef<HTMLDivElement>(null);\n\n // Sync local minimize state from the app model passed from the parent\n useEffect(() => {\n if (app.isMinimize !== state.isMinimized) {\n dispatch({ type: \"SYNC_MINIMIZE_STATE\", payload: app.isMinimize });\n }\n }, [app.isMinimize, state.isMinimized]);\n\n // Drag logic\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (state.isMaximized) return;\n dispatch({\n type: \"START_DRAG\",\n payload: {\n x: e.clientX - state.position.x,\n y: e.clientY - state.position.y,\n },\n });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (state.isDragging) {\n const newX = e.clientX - state.startPosition.x;\n const newY = e.clientY - state.startPosition.y;\n\n const boundedX = Math.max(\n 0,\n Math.min(newX, window.innerWidth - state.windowSize.width),\n );\n const boundedY = Math.max(\n 0,\n Math.min(newY, window.innerHeight - state.windowSize.height),\n );\n\n dispatch({ type: \"DRAG\", payload: { x: boundedX, y: boundedY } });\n }\n\n if (\n state.resizeStart &&\n isResizable &&\n app.windowSize.isAppWindowResizing\n ) {\n let newWidth =\n state.windowSize.width + (e.clientX - (state.resizeStart?.x ?? 0));\n let newHeight =\n state.windowSize.height + (e.clientY - (state.resizeStart?.y ?? 0));\n\n newWidth = Math.max(defaultSize.width, newWidth, state.defaultSize.width);\n newHeight = Math.max(\n defaultSize.height,\n newHeight,\n state.defaultSize.height,\n );\n\n const maxWidth = window.innerWidth - state.position.x;\n const maxHeight = window.innerHeight - state.position.y;\n newWidth = Math.min(newWidth, maxWidth);\n newHeight = Math.min(newHeight, maxHeight);\n\n dispatch({\n type: \"RESIZE\",\n payload: {\n width: newWidth,\n height: newHeight,\n },\n });\n }\n };\n\n const handleMouseUp = () => {\n if (state.isDragging) dispatch({ type: \"STOP_DRAG\" });\n if (state.resizeStart) dispatch({ type: \"STOP_RESIZE\" });\n };\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (!isResizable && !app.windowSize.isAppWindowResizing) return;\n e.stopPropagation();\n document.body.style.userSelect = \"none\";\n dispatch({ type: \"START_RESIZE\", payload: { x: e.clientX, y: e.clientY } });\n };\n\n useEffect(() => {\n if (state.isDragging || state.resizeStart) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n document.body.style.userSelect = \"\";\n };\n }, [state.isDragging, state.resizeStart]);\n\n useEffect(() => {\n if (windowRef.current) {\n windowRef.current.addEventListener(\"click\", () => {\n if (app?.callback) {\n app?.callback(\"CLICKED\");\n }\n });\n }\n }, [app?.slug, windowRef]);\n\n useEffect(() => {\n const handleExitApp = () => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n };\n addShortcutListener(\"exit_app\", handleExitApp);\n return () => {\n removeShortcutListener(\"exit_app\", handleExitApp);\n };\n }, [app?.slug, app.isActive]);\n\n useEffect(() => {\n const handleMinimize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }\n };\n addShortcutListener(\"minimize_app\", handleMinimize);\n return () => {\n removeShortcutListener(\"minimize_app\", handleMinimize);\n };\n }, [app?.slug, app.isActive, state.isMinimized, state.windowSize]);\n\n useEffect(() => {\n const handleMaximize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }\n };\n addShortcutListener(\"maximize_app\", handleMaximize);\n return () => {\n removeShortcutListener(\"maximize_app\", handleMaximize);\n };\n }, [app?.slug, app.isActive]);\n\n if (state.isMinimized) {\n return null;\n }\n\n return (\n <div\n ref={windowRef}\n className=\"flex rounded-[10px] overflow-hidden window-drop-shadow \"\n style={{\n width: `${state.windowSize.width}px`,\n height: `${state.windowSize.height}px`,\n transform: state.isMaximized\n ? undefined\n : `translate(${state.position.x}px, ${state.position.y - 37}px)`,\n overflow: state.isMinimized ? \"hidden\" : \"auto\",\n position: \"absolute\",\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n zIndex: state.isDragging ? 3 : app?.isActive ? 2 : 1,\n }}\n >\n {/* Sidebar - fixed width */}\n <div\n className=\"bg-primary flex flex-col\"\n style={{\n width: `${SIDEBAR_WIDTH}px`,\n minWidth: `${SIDEBAR_WIDTH}px`,\n maxWidth: `${SIDEBAR_WIDTH}px`,\n flexShrink: 0,\n }}\n >\n <div\n className=\"flex items-center gap-[8px] pl-[20px] pt-[20px]\"\n onMouseDown={handleMouseDown}\n style={{ cursor: state.isMaximized ? \"default\" : \"move\" }}\n >\n <button\n className=\"w-[12px] h-[12px] bg-[#FF6157] rounded-full\"\n onClick={() => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n }}\n title={`Close ${formatKeys(getShortcutByCommand(\"exit_app\"))}`}\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n\n <button\n className=\"w-[12px] h-[12px] bg-[#FFC12F] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }}\n title={\n state.isMinimized\n ? \"Restore\"\n : `Minimize ${formatKeys(getShortcutByCommand(\"minimize_app\"))}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n {isResizable && app.windowSize.isAppWindowResizing && (\n <button\n className=\"w-[12px] h-[12px] bg-[#2ACB42] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }}\n title={\n state.isMaximized\n ? \"Restore\"\n : `Maximize ${formatKeys(\n getShortcutByCommand(\"maximize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n )}\n </div>\n\n {/* Create QR Button */}\n {actionButtons !== undefined && (\n <div className=\"px-[12px] mt-[18px]\">\n <Button\n variant=\"outline\"\n fullWidth\n onClick={actionButtons.onClick}\n className=\"!bg-surface-3\"\n >\n + {actionButtons.title}\n </Button>\n </div>\n )}\n {/* Menu */}\n {menu && (\n <div className=\"mt-[15px] flex flex-col text-[13px]\">\n {/* Dashboard */}\n {menu?.items.map((item, index) => (\n <button\n className={`${\n item.isActive\n ? \"bg-brand-color text-white\"\n : \"text-neutral-500\"\n } px-[10px] mx-2 flex items-center gap-[8px] rounded-[6px] h-[30px] text-neutral-400 cursor-pointer transition-all duration-200`}\n onClick={item.onClick}\n key={index}\n >\n {item.icon}\n <span className=\"\">{item.title}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Main Content */}\n <div\n className=\"flex-1 bg-secondary flex flex-col\"\n style={{\n minWidth: 0,\n width: `calc(100% - ${SIDEBAR_WIDTH}px)`,\n }}\n >\n {/* Top Bar - draggable */}\n <div\n className=\"h-min-[50px] py-2 flex flex-col border-b border-b-surface-1 border-b-[0.5px] justify-center text-[13px] mx-[12px] select-none\"\n onMouseDown={handleMouseDown}\n style={{\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n cursor: state.isMaximized ? \"default\" : \"move\",\n }}\n >\n <Typography variant=\"p\" className=\"font-medium text-neutral-500 \">\n {app?.name}\n </Typography>\n <Typography variant=\"p\" className=\"text-neutral-400 text-[11px]\">\n {menu?.items.find((item) => item.isActive)?.title}\n </Typography>\n </div>\n\n {/* Content */}\n {!state.isMinimized && (\n <div\n className=\"h-full w-full overflow-y-auto\"\n style={{\n maxHeight: `${state.windowSize.height - 37}px`,\n }}\n >\n {isValidElement(children) && typeof children.type !== \"string\"\n ? React.cloneElement(children as ReactElement<WindowSizeProps>, {\n windowSize: state.windowSize,\n isAppWindowResizing: state.resizeStart !== null,\n })\n : children}\n </div>\n )}\n </div>\n\n {/* Resize Handle */}\n {isResizable && !state.isMaximized && (\n <div\n className=\"absolute bottom-0 right-0 w-5 h-5 cursor-se-resize\"\n style={{\n borderBottomRightRadius: \"10px\",\n }}\n onMouseDown={handleResizeStart}\n />\n )}\n </div>\n );\n};\n\nexport default WindowWithSideMenu;\n","import React, {\n useReducer,\n useEffect,\n useRef,\n isValidElement,\n ReactElement,\n} from \"react\";\nimport Typography from \"./Typography\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport { AppInterface } from \"@/types/appsList\";\nimport { globalKeyboardShortcuts } from \"@/utils/constants\";\n\nexport interface WindowSizeProps {\n windowSize: { width: number; height: number };\n isAppWindowResizing: boolean;\n}\n\ninterface WindowWithoutSideMenuProps {\n app: AppInterface;\n children?: React.ReactNode;\n defaultSize?: { width: number; height: number };\n isResizable?: boolean;\n}\n\ninterface State {\n position: { x: number; y: number };\n isDragging: boolean;\n startPosition: { x: number; y: number };\n isMinimized: boolean;\n isMaximized: boolean;\n windowSize: { width: number; height: number };\n resizeStart: { x: number; y: number } | null;\n defaultSize: { width: number; height: number };\n preMaximizeState: {\n position: { x: number; y: number };\n windowSize: { width: number; height: number };\n } | null;\n}\n\ntype Action =\n | { type: \"START_DRAG\"; payload: { x: number; y: number } }\n | { type: \"DRAG\"; payload: { x: number; y: number } }\n | { type: \"STOP_DRAG\" }\n | { type: \"START_RESIZE\"; payload: { x: number; y: number } }\n | { type: \"RESIZE\"; payload: { width: number; height: number } }\n | { type: \"STOP_RESIZE\" }\n | { type: \"TOGGLE_MINIMIZE\"; payload: { width: number; height: number } }\n | { type: \"TOGGLE_MAXIMIZE\"; payload?: { width: number; height: number } }\n | { type: \"SYNC_MINIMIZE_STATE\"; payload: boolean };\n\nconst initialState: State = {\n position: { x: 0, y: 40 },\n isDragging: false,\n startPosition: { x: 0, y: 40 },\n isMinimized: false,\n isMaximized: false,\n windowSize: { width: 300, height: 300 },\n resizeStart: null,\n defaultSize: { width: 300, height: 300 },\n preMaximizeState: null,\n};\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"START_DRAG\":\n return { ...state, isDragging: true, startPosition: action.payload };\n case \"DRAG\":\n return { ...state, position: action.payload };\n case \"STOP_DRAG\":\n return { ...state, isDragging: false };\n case \"START_RESIZE\":\n return {\n ...state,\n resizeStart: action.payload,\n };\n case \"RESIZE\":\n return { ...state, windowSize: action.payload };\n case \"STOP_RESIZE\":\n return { ...state, resizeStart: null };\n case \"TOGGLE_MINIMIZE\":\n return {\n ...state,\n isMinimized: !state.isMinimized,\n windowSize: {\n width: action.payload.width,\n height: state.isMinimized ? action.payload.height : 33,\n },\n };\n case \"SYNC_MINIMIZE_STATE\":\n return {\n ...state,\n isMinimized: action.payload,\n windowSize: action.payload\n ? { width: state.windowSize.width, height: 33 }\n : { width: state.windowSize.width, height: state.defaultSize.height },\n };\n case \"TOGGLE_MAXIMIZE\":\n if (state.isMaximized) {\n return {\n ...state,\n isMaximized: false,\n windowSize: state.preMaximizeState?.windowSize || state.defaultSize,\n position: state.preMaximizeState?.position || { x: 0, y: 40 },\n preMaximizeState: null,\n };\n }\n return {\n ...state,\n isMaximized: true,\n preMaximizeState: {\n position: state.position,\n windowSize: state.windowSize,\n },\n windowSize: action.payload || {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n position: state.position,\n };\n default:\n return state;\n }\n};\n\nconst WindowWithoutSideMenu: React.FC<WindowWithoutSideMenuProps> = ({\n app,\n children,\n defaultSize = { width: 300, height: 300 },\n isResizable = true,\n}) => {\n const {\n formatKeys,\n addShortcutListener,\n removeShortcutListener,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n\n const [state, dispatch] = useReducer(reducer, {\n ...initialState,\n windowSize: app.windowSize.windowSize ?? defaultSize,\n defaultSize: app.windowSize.windowSize ?? defaultSize,\n });\n\n const windowRef = useRef<HTMLDivElement>(null);\n\n // Sync local minimize state from the app model passed from the parent\n useEffect(() => {\n if (app.isMinimize !== state.isMinimized) {\n dispatch({ type: \"SYNC_MINIMIZE_STATE\", payload: app.isMinimize });\n }\n }, [app.isMinimize, state.isMinimized]);\n\n // Drag logic\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (state.isMaximized) return;\n dispatch({\n type: \"START_DRAG\",\n payload: {\n x: e.clientX - state.position.x,\n y: e.clientY - state.position.y,\n },\n });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (state.isDragging) {\n const newX = e.clientX - state.startPosition.x;\n const newY = e.clientY - state.startPosition.y;\n\n const boundedX = Math.max(\n 0,\n Math.min(newX, window.innerWidth - state.windowSize.width),\n );\n const boundedY = Math.max(\n 0,\n Math.min(newY, window.innerHeight - state.windowSize.height),\n );\n\n dispatch({ type: \"DRAG\", payload: { x: boundedX, y: boundedY } });\n }\n\n if (\n state.resizeStart &&\n isResizable &&\n app.windowSize.isAppWindowResizing\n ) {\n // Calculate new width and height based on mouse movement\n let newWidth =\n state.windowSize.width + (e.clientX - (state.resizeStart?.x ?? 0));\n let newHeight =\n state.windowSize.height + (e.clientY - (state.resizeStart?.y ?? 0));\n\n // Clamp to minimum size\n newWidth = Math.max(state.defaultSize.width, newWidth);\n newHeight = Math.max(state.defaultSize.height, newHeight);\n\n // Clamp to viewport\n const maxWidth = window.innerWidth - state.position.x;\n const maxHeight = window.innerHeight - state.position.y;\n newWidth = Math.min(newWidth, maxWidth);\n newHeight = Math.min(newHeight, maxHeight);\n\n dispatch({\n type: \"RESIZE\",\n payload: {\n width: newWidth,\n height: newHeight,\n },\n });\n }\n };\n\n const handleMouseUp = () => {\n if (state.isDragging) dispatch({ type: \"STOP_DRAG\" });\n if (state.resizeStart) dispatch({ type: \"STOP_RESIZE\" });\n };\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (!isResizable && !app.windowSize.isAppWindowResizing) return;\n e.stopPropagation();\n // Prevent text selection while resizing\n document.body.style.userSelect = \"none\";\n dispatch({ type: \"START_RESIZE\", payload: { x: e.clientX, y: e.clientY } });\n };\n\n useEffect(() => {\n if (state.isDragging || state.resizeStart) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n // Restore user-select after resizing\n document.body.style.userSelect = \"\";\n };\n }, [state.isDragging, state.resizeStart]);\n\n useEffect(() => {\n if (windowRef.current) {\n windowRef.current.addEventListener(\"click\", () => {\n if (app?.callback) {\n app?.callback(\"CLICKED\");\n }\n });\n }\n }, [app?.slug, windowRef]);\n\n useEffect(() => {\n const handleExitApp = () => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n };\n addShortcutListener(\"exit_app\", handleExitApp);\n return () => {\n removeShortcutListener(\"exit_app\", handleExitApp);\n };\n }, [app?.slug, app.isActive]);\n\n useEffect(() => {\n const handleMinimize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }\n };\n addShortcutListener(\"minimize_app\", handleMinimize);\n return () => {\n removeShortcutListener(\"minimize_app\", handleMinimize);\n };\n }, [app?.slug, app.isActive, state.isMinimized, state.windowSize]);\n\n useEffect(() => {\n const handleMaximize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }\n };\n addShortcutListener(\"maximize_app\", handleMaximize);\n return () => {\n removeShortcutListener(\"maximize_app\", handleMaximize);\n };\n }, [app?.slug, app.isActive]);\n\n if (state.isMinimized) {\n return null;\n }\n\n return (\n <div\n ref={windowRef}\n className=\"window-drop-shadow rounded-[10px]\"\n style={{\n width: `${state.windowSize.width}px`,\n height: `${state.windowSize.height}px`,\n transform: state.isMaximized\n ? undefined\n : `translate(${state.position.x}px, ${state.position.y - 37}px)`,\n overflow: state.isMinimized ? \"hidden\" : \"auto\",\n position: \"absolute\",\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n zIndex: state.isDragging ? 3 : app?.isActive ? 2 : 1,\n }}\n >\n <div\n className=\"mx-auto overflow-hidden h-full w-full\"\n style={{\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n position: \"relative\",\n }}\n >\n <div\n className=\"relative flex items-center bg-primary h-[35px] select-none\"\n onMouseDown={handleMouseDown}\n style={{ cursor: state.isMaximized ? \"default\" : \"move\" }}\n >\n {/* Left Control Buttons */}\n <div className=\"flex items-center gap-[8px] pl-[10px]\">\n <button\n className=\"w-[12px] h-[12px] bg-[#FF6157] rounded-full\"\n onClick={() => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n }}\n title={`Close ${formatKeys(getShortcutByCommand(\"exit_app\"))}`}\n style={{ outline: \"none\", border: \"none\" }}\n />\n <button\n className=\"w-[12px] h-[12px] bg-[#FFC12F] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }}\n title={\n state.isMinimized\n ? \"Restore\"\n : `Minimize ${formatKeys(\n getShortcutByCommand(\"minimize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n />\n {isResizable && app.windowSize.isAppWindowResizing && (\n <button\n className=\"w-[12px] h-[12px] bg-[#2ACB42] rounded-full\"\n onClick={() => {\n // playSound(\"click\");\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }}\n title={\n state.isMaximized\n ? \"Restore\"\n : `Maximize ${formatKeys(\n getShortcutByCommand(\"maximize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n />\n )}\n </div>\n\n {/* Title */}\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n <Typography variant=\"p\" className=\"text-neutral-500 text-[15px]\">\n {app.name}\n </Typography>\n </div>\n </div>\n\n {!state.isMinimized && (\n <div\n className=\"h-full w-full bg-secondary\"\n style={{\n maxHeight: `${state.windowSize.height - 37}px`,\n }}\n >\n {isValidElement(children) && typeof children.type !== \"string\"\n ? React.cloneElement(children as ReactElement<WindowSizeProps>, {\n windowSize: state.windowSize,\n isAppWindowResizing: state.resizeStart !== null,\n })\n : children}\n </div>\n )}\n\n {/* Resize Handle */}\n {isResizable && !state.isMaximized && (\n <div\n className=\"absolute bottom-0 right-0 w-5 h-5 cursor-se-resize\"\n style={{\n borderBottomRightRadius: \"10px\",\n }}\n onMouseDown={handleResizeStart}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default WindowWithoutSideMenu;\n","import { cn } from \"../utils/helpers\"\nimport * as React from \"react\"\n\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-[13px]\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b text-neutral-400 bg-surface-2\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0 text-neutral-300\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, onClick, ...props }, ref) => {\n const isInteractive = typeof onClick === \"function\";\n\n return (\n <tr\n ref={ref}\n onClick={onClick}\n className={cn(\n \"border-t border-surface-1 group hover:bg-surface-4 hover:text-neutral-500\",\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n className\n )}\n {...props}\n />\n );\n})\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"py-[4px] px-[8px] font-medium\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"py-[6px] px-[8px]\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}","import { useMemo } from \"react\";\n\nconst useGridClasses = (\n windowSize: { width: number; height: number },\n gridRules: Record<string, Record<string, Record<string, string>>>\n) => {\n const deviceType: \"mobile\" | \"tablet\" | \"desktop\" = useMemo(() => {\n if (windowSize.width <= 640) return \"mobile\"; // For mobile (width <= 640px)\n if (windowSize.width <= 1024) return \"tablet\"; // For tablet (width <= 1024px)\n return \"desktop\"; // For desktop (width > 1024px)\n }, [windowSize]);\n\n const gridClasses: Record<string, string> = useMemo(() => {\n const classes: Record<string, string> = {};\n for (const element in gridRules) {\n const classRules = gridRules[element] ?? {};\n const colSpan = classRules[\"col-span\"]?.[deviceType] ?? \"12\";\n classes[element] = `col-span-${deviceType}-${colSpan}`;\n }\n return classes;\n }, [deviceType, gridRules]);\n\n return { gridClasses, deviceType };\n};\n\nexport default useGridClasses;\n","import { useEffect, useState } from \"react\";\n\n// Helper function to detect device type and orientation\nexport const useDeviceSupport = () => {\n const [isSupported, setIsSupported] = useState(true);\n\n useEffect(() => {\n function checkSupport() {\n // Get user agent and screen info\n const ua =\n typeof window !== \"undefined\" ? window.navigator.userAgent : \"\";\n const width = typeof window !== \"undefined\" ? window.innerWidth : 1920;\n const height = typeof window !== \"undefined\" ? window.innerHeight : 1080;\n const isTouch =\n typeof window !== \"undefined\" ? \"ontouchstart\" in window : false;\n\n // Mobile detection (iOS/Android phones)\n const isMobile = /Mobi|Android|iPhone|iPod/.test(ua) && width <= 767;\n\n // Tablet detection (portrait/landscape)\n const isTablet =\n (/iPad|Tablet|Android/.test(ua) && !/Mobile/.test(ua)) ||\n (isTouch && width >= 600 && width <= 1024);\n // Tablet portrait: width < height, width <= 1024, height > width\n const isTabletPortrait = isTablet && width < height;\n // Tablet landscape: width > height, width <= 1366, width >= 1024\n const isTabletLandscape =\n isTablet && width > height && width >= 1024 && width <= 1366;\n\n // Laptop: width >= 1024 (landscape), not touch or not tablet\n const isLaptop =\n width >= 1024 && !isMobile && (!isTablet || isTabletLandscape);\n\n // Support logic:\n // - Mobile: Not supported\n // - Tablet portrait: Not supported\n // - Tablet landscape: Supported\n // - Laptop: Supported\n\n if (isMobile) {\n setIsSupported(false);\n } else if (isTabletPortrait) {\n setIsSupported(false);\n } else if (isTabletLandscape) {\n setIsSupported(true);\n } else if (isLaptop) {\n setIsSupported(true);\n } else {\n // Default: allow desktop\n setIsSupported(true);\n }\n }\n\n checkSupport();\n window.addEventListener(\"resize\", checkSupport);\n return () => window.removeEventListener(\"resize\", checkSupport);\n }, []);\n\n return isSupported;\n};\n","import { useCallback } from \"react\";\nimport clickTone from \"../assets/sounds/click-tone.wav\";\nimport errorTone from \"../assets/sounds/error-tone.wav\";\nimport notificationTone from \"../assets/sounds/notification-tone.wav\";\nimport successTone from \"../assets/sounds/success-tone.wav\";\nimport swipeTone from \"../assets/sounds/swipe-tone.wav\";\n\nexport type SoundType =\n | \"click\"\n | \"error\"\n | \"success\"\n | \"alert\"\n | \"notification\"\n | \"swipe\";\n\nconst soundMap: Record<SoundType, string> = {\n click: clickTone,\n error: errorTone,\n success: successTone,\n alert: errorTone,\n notification: notificationTone,\n swipe: swipeTone,\n};\n\nconst DEFAULT_SOUND_TYPE: SoundType = \"click\";\nconst audioBufferCache = new Map<string, Promise<AudioBuffer>>();\n\nlet sharedAudioContext: AudioContext | null = null;\n\nconst isSoundType = (type: string): type is SoundType => {\n return type in soundMap;\n};\n\nexport const useSound = () => {\n const getAudioContext = () => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const AudioContextCtor = window.AudioContext ?? (window as Window & { webkitAudioContext?: typeof AudioContext }).webkitAudioContext;\n\n if (!AudioContextCtor) {\n return null;\n }\n\n if (!sharedAudioContext || sharedAudioContext.state === \"closed\") {\n sharedAudioContext = new AudioContextCtor();\n }\n\n return sharedAudioContext;\n };\n\n const loadAudioBuffer = async (source: string) => {\n const cached = audioBufferCache.get(source);\n\n if (cached) {\n return cached;\n }\n\n const promise = (async () => {\n if (typeof fetch !== \"function\") {\n throw new Error(\"Fetch is not available\");\n }\n\n const response = await fetch(source);\n\n if (!response.ok) {\n throw new Error(`Failed to load sound source: ${response.status} ${response.statusText}`);\n }\n\n const context = getAudioContext();\n\n if (!context) {\n throw new Error(\"Web Audio API is not available\");\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return await context.decodeAudioData(arrayBuffer.slice(0));\n })().catch((error) => {\n audioBufferCache.delete(source);\n throw error;\n });\n\n audioBufferCache.set(source, promise);\n return promise;\n };\n\n const playWithAudioBuffer = async (buffer: AudioBuffer) => {\n const context = getAudioContext();\n\n if (!context) {\n throw new Error(\"Web Audio API is not available\");\n }\n\n if (context.state === \"suspended\") {\n await context.resume();\n }\n\n await new Promise<void>((resolve, reject) => {\n const sourceNode = context.createBufferSource();\n sourceNode.buffer = buffer;\n sourceNode.connect(context.destination);\n sourceNode.onended = () => resolve();\n\n try {\n sourceNode.start(0);\n } catch (error) {\n reject(error);\n }\n });\n };\n\n const playWithAudioElement = async (source: string) => {\n const audio = new Audio(source);\n audio.preload = \"auto\";\n audio.currentTime = 0;\n await audio.play();\n };\n\n const playSound = useCallback((type: SoundType | string) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const requestedType = isSoundType(type)\n ? type\n : DEFAULT_SOUND_TYPE;\n\n const src = soundMap[requestedType];\n\n if (!src) {\n console.error(`Sound playback failed: no source found for \"${requestedType}\"`);\n return;\n }\n\n void (async () => {\n let lastError: unknown;\n\n if (getAudioContext()) {\n try {\n const buffer = await loadAudioBuffer(src);\n await playWithAudioBuffer(buffer);\n return;\n } catch (error) {\n lastError = error;\n }\n }\n\n try {\n await playWithAudioElement(src);\n return;\n } catch (error) {\n lastError = error;\n }\n\n console.error(`Sound playback failed for \"${requestedType}\":`, lastError);\n })();\n }, []);\n\n return {\n playSound,\n };\n};","export const getFormattedDate = (dateInput: string): string => {\n const timestamp = Number(dateInput);\n if (isNaN(timestamp)) return \"Invalid date\";\n\n const date = new Date(timestamp);\n const formatter = new Intl.DateTimeFormat(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n\n return formatter.format(date);\n};\n"]}
1
+ {"version":3,"sources":["../src/utils/helpers.ts","../src/components/Button.tsx","../src/components/Typography.tsx","../src/components/Input.tsx","../src/components/TextArea.tsx","../src/components/RichEditor.tsx","../src/components/CodeEditor.tsx","../src/components/Select.tsx","../src/components/Checkbox.tsx","../src/components/Toggle.tsx","../src/components/Dropdown.tsx","../src/components/ImageWithPlaceholder.tsx","../src/components/Loading.tsx","../src/components/Skeleton.tsx","../src/components/Toast.tsx","../src/components/Alert.tsx","../src/components/Modal.tsx","../src/components/Card.tsx","../src/components/Badge.tsx","../src/components/Avatar.tsx","../src/components/Divider.tsx","../src/components/Tooltip.tsx","../src/hooks/useShortcutFormatter.tsx","../src/utils/constants.ts","../src/components/SearchInput.tsx","../src/components/FileUpload.tsx","../src/components/Progress.tsx","../src/components/Pagination.tsx","../src/components/Radio.tsx","../src/components/Accordion.tsx","../src/components/Tabs.tsx","../src/components/PluginPlayground.tsx","../src/components/WindowWithSideMenu.tsx","../src/components/WindowWithoutSideMenu.tsx","../src/components/Table.tsx","../src/hooks/useGridClasses.tsx","../src/hooks/useDeviceSupport.tsx","../src/hooks/useSound.tsx","../src/hooks/getFormattedDate.ts"],"names":["React","jsxs","jsx","ArrowCircleRightIcon","useId","useRef","useEffect","Editor","CaretDownIcon","CheckIcon","useState","WarningIcon","CheckCircleIcon","InfoIcon","XIcon","useCallback","UAParser","globalKeyboardShortcuts","useImperativeHandle","UploadIcon","CaretLeftIcon","CaretRightIcon","CaretUpIcon","Children","isValidElement","cloneElement","useMemo","useReducer","initialState","reducer","React23"],"mappings":"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","file":"index.cjs","sourcesContent":["export function cn(...inputs: Array<string | false | null | undefined | 0>): string {\n return inputs.filter(Boolean).join(\" \");\n}\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?:\n | \"primary\"\n | \"secondary\"\n | \"outline\"\n | \"ghost\"\n | \"danger\"\n | \"success\"\n | \"filled\"\n | \"text\";\n tone?: \"primary\" | \"neutral\" | \"success\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n loading?: boolean;\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n fullWidth?: boolean;\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n className,\n variant = \"primary\",\n tone = \"primary\",\n size = \"md\",\n loading = false,\n leftIcon,\n rightIcon,\n fullWidth = false,\n rounded = \"lg\",\n disabled,\n children,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"inline-flex items-center justify-center font-medium transition-all duration-200 focus:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed\";\n \n const variantClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n secondary: \"bg-surface-3 text-neutral-500 hover:bg-surface-4 active:bg-surface-4 focus-visible:ring-surface-3/50 border border-surface-4 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n outline: \"bg-transparent text-neutral-400 border border-surface-1 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n ghost: \"bg-transparent text-neutral-400 hover:bg-surface-1 active:bg-surface-1 focus-visible:ring-surface-1/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n filled: \"\",\n text: \"\",\n } as Record<Required<ButtonProps>[\"variant\"], string>;\n\n const filledToneClasses = {\n primary: \"bg-brand-color text-white hover:bg-brand-color/90 active:bg-brand-color/80 focus-visible:ring-brand-color/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-brand-color/50 disabled:text-white/80\",\n neutral: \"bg-surface-3 text-neutral-700 hover:text-neutral-700 active:text-neutral-700 hover:bg-surface-4 active:bg-surface-4 border border-surface-1 focus-visible:ring-surface-3/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-surface-3/50\",\n success: \"bg-green-500 text-white hover:bg-green-600 active:bg-green-600 focus-visible:ring-green-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-green-500/50\",\n danger: \"bg-red-500 text-white hover:bg-red-600 active:bg-red-600 focus-visible:ring-red-500/50 shadow-sm hover:shadow-md active:shadow-none disabled:bg-red-500/50\",\n } as const;\n\n const textToneClasses = {\n primary: \"bg-transparent text-brand-color hover:text-brand-color/90 active:text-brand-color/80 hover:underline underline-offset-2 focus-visible:ring-brand-color/30\",\n neutral: \"bg-transparent text-neutral-400 hover:text-neutral-300 active:text-neutral-300 focus-visible:ring-surface-1/50\",\n success: \"bg-transparent text-green-600 hover:text-green-700 active:text-green-700 focus-visible:ring-green-500/30\",\n danger: \"bg-transparent text-red-600 hover:text-red-700 active:text-red-700 focus-visible:ring-red-500/30\",\n } as const;\n\n const sizeClasses = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-base\",\n lg: \"h-12 px-5 text-lg\",\n xl: \"h-14 px-6 text-xl\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <button\n ref={ref}\n className={cn(\n baseClasses,\n variant === \"filled\"\n ? filledToneClasses[tone]\n : variant === \"text\"\n ? textToneClasses[tone]\n : variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n widthClasses,\n className\n )}\n data-variant={variant}\n data-tone={tone}\n disabled={disabled || loading}\n {...props}\n >\n {loading && (\n <div className=\"mr-2 h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent\" />\n )}\n {!loading && leftIcon && <span className=\"mr-2\">{leftIcon}</span>}\n {children}\n {!loading && rightIcon && <span className=\"ml-2\">{rightIcon}</span>}\n </button>\n );\n }\n);\n\nButton.displayName = \"Button\";\n\nexport default Button;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\ntype Variant = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\ntype Size = \"xs\" | \"sm\" | \"md\" | \"lg\" | \"xl\" | \"2xl\" | \"3xl\" | \"4xl\" | \"5xl\";\ntype Weight = \"thin\" | \"extralight\" | \"light\" | \"normal\" | \"medium\" | \"semibold\" | \"bold\" | \"extrabold\" | \"black\";\ntype Color = \"neutral-100\" | \"neutral-200\" | \"neutral-300\" | \"neutral-400\" | \"neutral-500\" | \"neutral-600\" | \"neutral-700\" | \"neutral-800\" | \"neutral-900\" | \"brand-color\" | \"red-500\" | \"green-500\" | \"blue-500\" | \"yellow-500\";\n\nexport interface TypographyProps {\n as?: Variant;\n variant?: Variant;\n size?: Size;\n weight?: Weight;\n color?: Color;\n className?: string;\n children: React.ReactNode;\n}\n\nconst Typography: React.FC<TypographyProps> = ({\n as,\n variant = \"p\",\n size,\n weight,\n color,\n className,\n children,\n}) => {\n const Component = as || variant;\n\n const sizeClasses: Record<Size, string> = {\n xs: \"text-xs\",\n sm: \"text-sm\",\n md: \"text-base\",\n lg: \"text-lg\",\n xl: \"text-xl\",\n \"2xl\": \"text-2xl\",\n \"3xl\": \"text-3xl\",\n \"4xl\": \"text-4xl\",\n \"5xl\": \"text-5xl\",\n };\n\n const weightClasses: Record<Weight, string> = {\n thin: \"font-thin\",\n extralight: \"font-extralight\",\n light: \"font-light\",\n normal: \"font-normal\",\n medium: \"font-medium\",\n semibold: \"font-semibold\",\n bold: \"font-bold\",\n extrabold: \"font-extrabold\",\n black: \"font-black\",\n };\n\n const colorClasses: Record<Color, string> = {\n \"neutral-100\": \"text-neutral-100\",\n \"neutral-200\": \"text-neutral-200\",\n \"neutral-300\": \"text-neutral-300\",\n \"neutral-400\": \"text-neutral-400\",\n \"neutral-500\": \"text-neutral-500\",\n \"neutral-600\": \"text-neutral-600\",\n \"neutral-700\": \"text-neutral-700\",\n \"neutral-800\": \"text-neutral-800\",\n \"neutral-900\": \"text-neutral-900\",\n \"brand-color\": \"text-brand-color\",\n \"red-500\": \"text-red-500\",\n \"green-500\": \"text-green-500\",\n \"blue-500\": \"text-blue-500\",\n \"yellow-500\": \"text-yellow-500\",\n };\n\n const classes = cn(\n size && sizeClasses[size],\n weight && weightClasses[weight],\n color && colorClasses[color],\n className\n );\n\n return <Component className={classes}>{children}</Component>;\n};\n\nexport default Typography;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { ArrowCircleRightIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface InputProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'size'> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n leftIcon?: React.ReactNode;\n rightIcon?: React.ReactNode;\n showSubmitButton?: boolean;\n onSubmit?: () => void;\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Input = React.forwardRef<HTMLInputElement, InputProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n leftIcon,\n rightIcon,\n showSubmitButton = false,\n onSubmit,\n error,\n label,\n helperText,\n fullWidth = false,\n onKeyUp,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleKeyUp = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && onSubmit) {\n onSubmit();\n }\n onKeyUp?.(e);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n {leftIcon && (\n <div className=\"absolute left-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {leftIcon}\n </div>\n )}\n \n <input\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n leftIcon ? \"pl-10\" : \"\",\n (rightIcon || showSubmitButton) ? \"pr-10\" : \"\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n onKeyUp={handleKeyUp}\n {...props}\n />\n \n {rightIcon && !showSubmitButton && (\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400\">\n {rightIcon}\n </div>\n )}\n \n {showSubmitButton && (\n <button\n type=\"button\"\n onClick={onSubmit}\n disabled={props.disabled || props.readOnly || !onSubmit}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-300 transition-colors hover:text-neutral-400 disabled:cursor-not-allowed disabled:opacity-50\"\n aria-label=\"Submit input\"\n >\n <ArrowCircleRightIcon size={20} />\n </button>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nInput.displayName = \"Input\";\n\nexport default Input;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface TextAreaProps extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n resize?: \"none\" | \"vertical\" | \"horizontal\" | \"both\";\n}\n\nconst TextArea = React.forwardRef<HTMLTextAreaElement, TextAreaProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n resize = \"vertical\",\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-1 text-sm\",\n md: \"px-3 py-2 text-base\",\n lg: \"px-4 py-3 text-lg\",\n };\n\n const resizeClasses = {\n none: \"resize-none\",\n vertical: \"resize-y\",\n horizontal: \"resize-x\",\n both: \"resize\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <textarea\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n resizeClasses[resize],\n widthClasses,\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n {...props}\n />\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nTextArea.displayName = \"TextArea\";\n\nexport default TextArea;\n","import React, { useEffect, useId, useRef } from \"react\";\nimport \"tinymce/tinymce\";\nimport \"tinymce/icons/default/icons\";\nimport \"tinymce/themes/silver\";\nimport \"tinymce/models/dom/model\";\nimport \"tinymce/skins/ui/oxide/skin.css\";\nimport \"tinymce/skins/ui/oxide/content.css\";\nimport \"tinymce/skins/content/default/content.css\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RichEditorProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"value\" | \"onChange\"> {\n value?: string;\n onChange?: (value: string) => void;\n label?: string;\n helperText?: string;\n error?: string;\n fullWidth?: boolean;\n height?: string;\n menubar?: boolean | string;\n toolbar?: string;\n className?: string;\n plugins?: string[];\n}\n\nconst DEFAULT_PLUGINS = [\n \"advlist\",\n \"autolink\",\n \"lists\",\n \"link\",\n \"image\",\n \"charmap\",\n \"preview\",\n \"anchor\",\n \"searchreplace\",\n \"visualblocks\",\n \"code\",\n \"fullscreen\",\n \"insertdatetime\",\n \"media\",\n \"table\",\n \"wordcount\",\n];\n\nconst DEFAULT_TOOLBAR =\n \"undo redo | blocks | bold italic underline strikethrough | alignleft aligncenter alignright | bullist numlist outdent indent | link image media | code fullscreen\";\n\nconst RichEditor = React.forwardRef<HTMLDivElement, RichEditorProps>(\n (\n {\n value = \"\",\n onChange,\n label,\n helperText,\n error,\n fullWidth = false,\n height = \"220px\",\n menubar = false,\n toolbar = DEFAULT_TOOLBAR,\n className,\n plugins = DEFAULT_PLUGINS,\n disabled = false,\n placeholder,\n rows,\n ...props\n },\n ref\n ) => {\n const editorId = useId().replace(/:/g, \"\");\n const textareaRef = useRef<HTMLTextAreaElement | null>(null);\n const hasTinymce = typeof window !== \"undefined\" && Boolean((window as any).tinymce);\n\n useEffect(() => {\n if (typeof window === \"undefined\" || !textareaRef.current || !(window as any).tinymce) {\n return;\n }\n\n const tinymceApi = (window as any).tinymce;\n const existingEditor = tinymceApi.get(editorId);\n\n if (existingEditor) {\n existingEditor.remove();\n }\n\n tinymceApi.init({\n target: textareaRef.current,\n selector: undefined,\n skin: \"oxide\",\n content_css: \"default\",\n height,\n menubar,\n toolbar,\n plugins,\n statusbar: false,\n resize: false,\n branding: false,\n promotion: false,\n placeholder,\n readonly: disabled,\n content_style: \"body { font-family: Inter, ui-sans-serif, system-ui, -apple-system, sans-serif; font-size: 14px; line-height: 1.6; }\",\n setup: (editor: any) => {\n editor.on(\"init\", () => {\n editor.setContent(value ?? \"\");\n });\n\n editor.on(\"input change keyup\", () => {\n onChange?.(editor.getContent());\n });\n },\n });\n\n return () => {\n const activeEditor = tinymceApi.get(editorId);\n activeEditor?.remove();\n };\n }, [disabled, editorId, height, menubar, onChange, placeholder, plugins, toolbar, value]);\n\n useEffect(() => {\n const tinymceApi = (window as any)?.tinymce;\n const activeEditor = tinymceApi?.get(editorId);\n\n if (activeEditor && activeEditor.getContent() !== (value ?? \"\")) {\n activeEditor.setContent(value ?? \"\");\n }\n }, [editorId, value]);\n\n const fallbackTextArea = (\n <textarea\n ref={textareaRef}\n id={editorId}\n value={value}\n onChange={(event) => onChange?.(event.currentTarget.value)}\n disabled={disabled}\n placeholder={placeholder}\n rows={rows ?? 7}\n aria-label={label ?? props[\"aria-label\"] ?? \"Rich text editor\"}\n className={cn(\n \"w-full min-h-[200px] rounded-[6px] border border-surface-1 bg-primary px-3 py-2 text-base text-neutral-700 transition-all duration-200 focus:border-brand-color focus:outline-none focus:ring-1 focus:ring-brand-color/50 placeholder:text-neutral-400\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n disabled && \"cursor-not-allowed opacity-60\",\n fullWidth && \"w-full\"\n )}\n {...props}\n />\n );\n\n return (\n <div ref={ref} className={cn(\"flex flex-col gap-1\", fullWidth && \"w-full\", className)}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white\" htmlFor={editorId}>\n {label}\n </label>\n )}\n\n <div\n className={cn(\n \"overflow-hidden rounded-[6px] border border-surface-1 bg-white transition-all duration-200\",\n fullWidth && \"w-full\",\n error && \"border-red-500\"\n )}\n style={{ minHeight: height }}\n >\n {hasTinymce ? (\n <textarea\n ref={textareaRef}\n id={editorId}\n defaultValue={value}\n aria-label={label ?? props[\"aria-label\"] ?? \"Rich text editor\"}\n disabled={disabled}\n style={{ display: \"none\" }}\n {...props}\n />\n ) : (\n fallbackTextArea\n )}\n </div>\n\n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">\n {error}\n </Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">\n {helperText}\n </Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRichEditor.displayName = \"RichEditor\";\n\nexport default RichEditor;\n","import Editor, { type EditorProps } from \"@monaco-editor/react\";\nimport React from \"react\";\n\nexport interface CodeEditorProps {\n value: string;\n onChange: (value: string) => void;\n language?: EditorProps[\"language\"];\n theme?: EditorProps[\"theme\"];\n height?: EditorProps[\"height\"];\n options?: EditorProps[\"options\"];\n className?: string;\n}\n\nexport type JsonEditorProps = CodeEditorProps;\n\nconst CodeEditor: React.FC<CodeEditorProps> = ({\n value,\n onChange,\n language = \"json\",\n theme = \"light\",\n height = \"100%\",\n options,\n className,\n}) => {\n return (\n <div className={className} style={{ height }}>\n <Editor\n height=\"100%\"\n language={language}\n theme={theme}\n value={value}\n onChange={(nextValue) => onChange(nextValue ?? \"\")}\n options={options}\n />\n </div>\n );\n};\n\nexport default CodeEditor;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface SelectOption {\n value: string;\n label: string;\n disabled?: boolean;\n}\n\nexport interface SelectProps extends Omit<React.SelectHTMLAttributes<HTMLSelectElement>, 'onChange' | 'size'> {\n options: SelectOption[];\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n onChange?: (value: string) => void;\n placeholder?: string;\n}\n\nconst Select = React.forwardRef<HTMLSelectElement, SelectProps>(\n (\n {\n className,\n options,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n fullWidth = false,\n onChange,\n placeholder,\n value,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none appearance-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleChange = (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange?.(e.target.value);\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n {label && (\n <label className=\"text-sm font-medium text-neutral-500 dark:text-white mb-1\">\n {label}\n </label>\n )}\n \n <div className=\"relative\">\n <select\n ref={ref}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n widthClasses,\n \"pr-10 text-neutral-900 bg-white placeholder:text-neutral-900 dark:text-white dark:bg-slate-900 dark:placeholder:text-white\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n value={value}\n onChange={handleChange}\n {...props}\n >\n {placeholder && (\n <option value=\"\" disabled>\n {placeholder}\n </option>\n )}\n {options.map((option) => (\n <option\n key={option.value}\n value={option.value}\n disabled={option.disabled}\n >\n {option.label}\n </option>\n ))}\n </select>\n \n <CaretDownIcon\n size={16}\n className=\"absolute right-3 top-1/2 transform -translate-y-1/2 text-neutral-400 pointer-events-none\"\n />\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nSelect.displayName = \"Select\";\n\nexport default Select;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface CheckboxProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n variant?: \"default\" | \"filled\";\n size?: \"sm\" | \"md\" | \"lg\";\n error?: string;\n label?: React.ReactNode;\n helperText?: string;\n indeterminate?: boolean;\n}\n\nconst Checkbox = React.forwardRef<HTMLInputElement, CheckboxProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n error,\n label,\n helperText,\n indeterminate = false,\n checked,\n onChange,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"checkbox\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n defaultChecked={checked}\n onChange={onChange}\n disabled={disabled}\n {...props}\n />\n \n {(checked || indeterminate) && (\n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <CheckIcon\n size={size === \"sm\" ? 12 : size === \"md\" ? 16 : 20}\n className=\"text-white\"\n weight={indeterminate ? \"bold\" : \"regular\"}\n />\n </div>\n )}\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\nexport default Checkbox;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface ToggleProps {\n checked: boolean;\n onChange: (checked: boolean) => void;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n label?: string;\n helperText?: string;\n fullWidth?: boolean;\n}\n\nconst Toggle = React.forwardRef<HTMLButtonElement, ToggleProps>(\n (\n {\n checked,\n onChange,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n label,\n helperText,\n fullWidth = false,\n },\n ref\n ) => {\n const baseClasses = \"flex items-center rounded-full cursor-pointer transition-colors duration-300 focus:outline-none focus:ring-2 focus:ring-offset-2\";\n \n const variantClasses = {\n default: \"focus:ring-brand-color/50\",\n success: \"focus:ring-green-500/50\",\n warning: \"focus:ring-yellow-500/50\",\n danger: \"focus:ring-red-500/50\",\n };\n\n const toggleClasses = {\n default: checked ? \"bg-brand-color\" : \"bg-gray-500\",\n success: checked ? \"bg-green-500\" : \"bg-gray-500\",\n warning: checked ? \"bg-yellow-500\" : \"bg-gray-500\",\n danger: checked ? \"bg-red-500\" : \"bg-gray-500\",\n };\n\n const sizeClasses = {\n sm: \"w-8 h-4 px-0.5\",\n md: \"w-10 h-5 px-0.5\",\n lg: \"w-12 h-6 px-1\",\n };\n\n const thumbSizeClasses = {\n sm: \"w-3 h-3\",\n md: \"w-4 h-4\",\n lg: \"w-5 h-5\",\n };\n\n const thumbTransformClasses = {\n sm: checked ? \"translate-x-4\" : \"translate-x-0\",\n md: checked ? \"translate-x-5\" : \"translate-x-0\",\n lg: checked ? \"translate-x-6\" : \"translate-x-0\",\n };\n\n const widthClasses = fullWidth ? \"w-full\" : \"\";\n\n const handleClick = () => {\n if (!disabled) {\n onChange(!checked);\n }\n };\n\n return (\n <div className={cn(\"flex flex-col\", fullWidth && \"w-full\")}>\n <div className={cn(\"flex items-center gap-2\", fullWidth && \"w-full\")}>\n <button\n ref={ref}\n type=\"button\"\n className={cn(\n baseClasses,\n variantClasses[variant],\n toggleClasses[variant],\n sizeClasses[size],\n widthClasses,\n disabled && \"opacity-50 cursor-not-allowed\"\n )}\n onClick={handleClick}\n disabled={disabled}\n role=\"switch\"\n aria-checked={checked}\n >\n <div\n className={cn(\n \"bg-white rounded-full shadow-md transform transition-transform duration-300\",\n thumbSizeClasses[size],\n thumbTransformClasses[size]\n )}\n />\n </button>\n \n {label && (\n <span\n className={cn(\n \"text-sm text-neutral-500 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n onClick={disabled ? undefined : handleClick}\n aria-disabled={disabled}\n >\n {label}\n </span>\n )}\n </div>\n \n {helperText && (\n <div className=\"mt-1 ml-12\">\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n </div>\n )}\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n\nexport default Toggle;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretDownIcon } from \"@phosphor-icons/react\";\n\nexport interface DropdownOption {\n value: string;\n label: string;\n disabled?: boolean;\n icon?: React.ReactNode;\n}\n\nexport interface DropdownProps {\n options: DropdownOption[];\n value?: string;\n onChange?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n trigger?: React.ReactNode;\n}\n\nconst Dropdown: React.FC<DropdownProps> = ({\n options,\n value,\n onChange,\n placeholder = \"Select an option\",\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n trigger,\n}) => {\n const [isOpen, setIsOpen] = useState(false);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const selectedOption = options.find(option => option.value === value);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (dropdownRef.current && !dropdownRef.current.contains(event.target as Node)) {\n setIsOpen(false);\n }\n };\n\n document.addEventListener(\"mousedown\", handleClickOutside);\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n };\n }, []);\n\n const handleToggle = () => {\n if (!disabled) {\n setIsOpen(!isOpen);\n }\n };\n\n const handleSelect = (option: DropdownOption) => {\n if (!option.disabled) {\n onChange?.(option.value);\n setIsOpen(false);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n return (\n <div ref={dropdownRef} className=\"\">\n {trigger ? (\n <div\n onClick={handleToggle}\n className={cn(disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\")}\n aria-disabled={disabled}\n >\n {trigger}\n </div>\n ) : (\n <button\n onClick={handleToggle}\n disabled={disabled}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full flex items-center justify-between pr-8\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <span className={selectedOption ? \"text-neutral-500\" : \"text-neutral-300\"}>\n {selectedOption ? selectedOption.label : placeholder}\n </span>\n <CaretDownIcon\n size={16}\n className={cn(\n \"text-neutral-400 transition-transform duration-200\",\n isOpen && \"rotate-180\"\n )}\n />\n </button>\n )}\n\n {isOpen && (\n <div className=\"absolute top-full left-0 right-0 mt-1 bg-secondary border border-surface-1 rounded-[6px] shadow-lg z-50 max-h-60 overflow-y-auto\">\n {options.map((option) => (\n <div\n key={option.value}\n onClick={() => handleSelect(option)}\n className={cn(\n \"px-3 py-2 cursor-pointer transition-colors duration-200 flex items-center gap-2\",\n option.value === value && \"bg-brand-color text-neutral-500\",\n !option.disabled && \"hover:bg-surface-3\",\n option.disabled && \"opacity-50 cursor-not-allowed\"\n )}\n >\n {option.icon && <span>{option.icon}</span>}\n <span>{option.label}</span>\n </div>\n ))}\n </div>\n )}\n </div>\n );\n};\n\nexport default Dropdown;\n","import React, { useState, useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport fallbackLogo from \"../assets/icon-192x192.svg\";\n\ntype ImageSource = string | { src: string };\n\nexport interface ImageWithPlaceholderProps extends Omit<React.ImgHTMLAttributes<HTMLImageElement>, \"src\"> {\n src?: ImageSource;\n fallbackSrc?: string;\n}\n\nconst ImageWithPlaceholder: React.FC<ImageWithPlaceholderProps> = ({\n src,\n alt,\n fallbackSrc = fallbackLogo,\n className,\n onError,\n ...props\n}) => {\n const resolveSrc = (s: ImageSource | undefined | null) => {\n if (s && typeof s === \"object\" && \"src\" in s && typeof s.src === \"string\") {\n return s.src;\n }\n return typeof s === \"string\" ? s : undefined;\n };\n\n const isValidSrc = (s: string | undefined | null) => {\n if (!s) return false;\n const trimmed = s.trim();\n if (trimmed === \"\") return false;\n if (trimmed.startsWith(\"data:\")) return true;\n\n if (trimmed.startsWith(\"/\") || trimmed.startsWith(\"./\") || trimmed.startsWith(\"../\")) {\n return true;\n }\n\n // Bundlers often emit bare relative asset paths like \"Loader-ABC123.gif\".\n if (/^[^\\s?#]+\\.(png|jpe?g|gif|webp|svg|bmp|ico|avif)(\\?.*)?(#.*)?$/i.test(trimmed)) {\n return true;\n }\n\n try {\n new URL(trimmed);\n return true;\n } catch {\n return false;\n }\n };\n\n const resolvedSrc = resolveSrc(src);\n const initialSrc = isValidSrc(resolvedSrc) ? resolvedSrc : fallbackSrc;\n const [imgSrc, setImgSrc] = useState(initialSrc);\n const [hasError, setHasError] = useState(!isValidSrc(resolvedSrc));\n\n useEffect(() => {\n const nextResolvedSrc = resolveSrc(src);\n if (isValidSrc(nextResolvedSrc)) {\n setImgSrc(nextResolvedSrc);\n setHasError(false);\n } else {\n setImgSrc(fallbackSrc);\n setHasError(true);\n }\n }, [src, fallbackSrc]);\n\n const handleError = (e: React.SyntheticEvent<HTMLImageElement, Event>) => {\n if (!hasError) {\n setHasError(true);\n setImgSrc(fallbackSrc);\n }\n if (onError) {\n onError(e);\n }\n };\n\n return (\n <img\n {...props}\n src={typeof imgSrc === \"string\" ? imgSrc : undefined}\n alt={alt}\n className={cn(className)}\n onError={handleError}\n />\n );\n};\n\nexport default ImageWithPlaceholder;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport ImageWithPlaceholder from \"./ImageWithPlaceholder\";\nimport loaderGif from \"../assets/Loader.gif\";\n\nexport interface LoadingProps {\n variant?: \"spinner\" | \"dots\" | \"pulse\" | \"image\";\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n text?: string;\n fullScreen?: boolean;\n className?: string;\n}\n\nconst Loading: React.FC<LoadingProps> = ({\n variant = \"image\",\n size = \"md\",\n text = \"Loading...\",\n fullScreen = false,\n className,\n}) => {\n const sizeClasses = {\n sm: \"w-6 h-6\",\n md: \"w-8 h-8\",\n lg: \"w-12 h-12\",\n xl: \"w-16 h-16\",\n };\n\n const textSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n xl: \"text-lg\",\n };\n\n const renderSpinner = () => (\n <div className={cn(\"animate-spin rounded-full border-2 border-current border-t-transparent\", sizeClasses[size])} />\n );\n\n const renderDots = () => (\n <div className=\"flex space-x-1\">\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"0ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"150ms\" }} />\n <div className={cn(\"animate-bounce rounded-full bg-current\", sizeClasses[size])} style={{ animationDelay: \"300ms\" }} />\n </div>\n );\n\n const renderPulse = () => (\n <div className={cn(\"animate-pulse rounded-full bg-current\", sizeClasses[size])} />\n );\n\n const imageSizes = {\n sm: 24,\n md: 32,\n lg: 48,\n xl: 64,\n };\n\n const renderImage = () => (\n <ImageWithPlaceholder\n src={loaderGif}\n alt=\"Loader\"\n width={imageSizes[size]}\n height={imageSizes[size]}\n className={sizeClasses[size]}\n />\n );\n\n const renderLoader = () => {\n switch (variant) {\n case \"spinner\":\n return renderSpinner();\n case \"dots\":\n return renderDots();\n case \"pulse\":\n return renderPulse();\n case \"image\":\n default:\n return renderImage();\n }\n };\n\n const content = (\n <div className={cn(\"flex flex-col justify-center items-center\", className)}>\n {renderLoader()}\n {text && (\n <div className={cn(\"mt-2 text-neutral-500\", textSizeClasses[size])}>\n {text}\n </div>\n )}\n </div>\n );\n\n if (fullScreen) {\n return (\n <div className=\"fixed inset-0 flex items-center justify-center bg-primary/50 backdrop-blur-sm z-50\">\n {content}\n </div>\n );\n }\n\n return content;\n};\n\nexport default Loading;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface SkeletonProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"text\" | \"avatar\" | \"image\" | \"card\" | \"rect\";\n lines?: number;\n lineClassName?: string;\n animate?: boolean;\n}\n\nconst basePulseClasses = \"skeleton-bg rounded-md overflow-hidden\";\n\nconst lineWidths = [\"w-full\", \"w-11/12\", \"w-4/5\", \"w-3/5\"];\n\nconst Skeleton: React.FC<SkeletonProps> = ({\n variant = \"text\",\n lines = 3,\n lineClassName,\n className,\n animate = true,\n ...props\n}) => {\n const pulseClasses = animate ? \"animate-pulse\" : \"\";\n\n if (variant === \"avatar\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"rounded-full h-10 w-10\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"image\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"h-40 w-full\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"rect\") {\n return (\n <div\n className={cn(basePulseClasses, pulseClasses, \"h-12 w-full\", className)}\n aria-hidden=\"true\"\n {...props}\n />\n );\n }\n\n if (variant === \"card\") {\n return (\n <div\n className={cn(\n \"w-full rounded-xl border border-surface-1/40 bg-secondary/60 p-4\",\n className,\n )}\n aria-hidden=\"true\"\n {...props}\n >\n <div className=\"flex items-center gap-3\">\n <div className={cn(basePulseClasses, pulseClasses, \"h-10 w-10 rounded-full\")} />\n <div className=\"flex-1 space-y-2\">\n <div className={cn(basePulseClasses, pulseClasses, \"h-3 w-1/3 rounded\")} />\n <div className={cn(basePulseClasses, pulseClasses, \"h-3 w-1/4 rounded\")} />\n </div>\n </div>\n\n <div className=\"mt-4 space-y-2\">\n {Array.from({ length: Math.max(lines, 2) }).map((_, index) => (\n <div\n key={`card-line-${index}`}\n className={cn(\n basePulseClasses,\n pulseClasses,\n \"h-3 rounded\",\n lineWidths[index % lineWidths.length],\n lineClassName,\n )}\n />\n ))}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={cn(\"w-full space-y-2\", className)}\n aria-hidden=\"true\"\n {...props}\n >\n {Array.from({ length: Math.max(lines, 1) }).map((_, index) => (\n <div\n key={`text-line-${index}`}\n className={cn(\n basePulseClasses,\n pulseClasses,\n \"h-3 rounded\",\n lineWidths[index % lineWidths.length],\n lineClassName,\n )}\n />\n ))}\n </div>\n );\n};\n\nexport default Skeleton;\n","import React, { useEffect, useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface ToastProps {\n heading?: string;\n message: string;\n type: \"error\" | \"success\" | \"info\" | \"warning\";\n isVisible: boolean;\n onClose: () => void;\n duration?: number;\n position?: \"top-left\" | \"top-right\" | \"bottom-left\" | \"bottom-right\" | \"top-center\" | \"bottom-center\";\n showCloseButton?: boolean;\n className?: string;\n}\n\nconst Toast: React.FC<ToastProps> = ({\n heading,\n message,\n type,\n isVisible,\n onClose,\n duration = 5000,\n position = \"bottom-left\",\n showCloseButton = true,\n className,\n}) => {\n const [isShowing, setIsShowing] = useState(false);\n\n useEffect(() => {\n if (isVisible) {\n setIsShowing(true);\n let timer: ReturnType<typeof setTimeout> | null = null;\n if (type !== \"error\" && duration > 0) {\n timer = setTimeout(() => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n }, duration);\n }\n\n return () => {\n if (timer) {\n clearTimeout(timer);\n }\n };\n }\n }, [isVisible, type, duration, onClose]);\n\n if (!isVisible) return null;\n\n const getIcon = () => {\n switch (type) {\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"error\":\n return \"border-l-red-500 bg-red-50\";\n case \"success\":\n return \"border-l-green-500 bg-green-50\";\n case \"warning\":\n return \"border-l-yellow-500 bg-yellow-50 dark:text-[#121316]\";\n case \"info\":\n return \"border-l-blue-500 bg-blue-50\";\n default:\n return \"border-l-blue-500 bg-blue-50\";\n }\n };\n\n const getPositionClasses = () => {\n switch (position) {\n case \"top-left\":\n return \"top-4 left-4\";\n case \"top-right\":\n return \"top-4 right-4\";\n case \"bottom-left\":\n return \"bottom-4 left-4\";\n case \"bottom-right\":\n return \"bottom-4 right-4\";\n case \"top-center\":\n return \"top-4 left-1/2 transform -translate-x-1/2\";\n case \"bottom-center\":\n return \"bottom-4 left-1/2 transform -translate-x-1/2\";\n default:\n return \"bottom-4 left-4\";\n }\n };\n\n const handleClose = () => {\n setIsShowing(false);\n setTimeout(onClose, 300);\n };\n\n return (\n <div\n className={cn(\n \"fixed z-50 transform transition-all duration-300\",\n getPositionClasses(),\n isShowing ? \"translate-x-0 opacity-100\" : \"-translate-x-full opacity-0\"\n )}\n >\n <div\n className={cn(\n \"w-80 max-w-sm bg-secondary rounded-[6px] shadow-lg border-l-4 p-4\",\n getTypeClasses(),\n className\n )}\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {heading && (\n <Typography\n variant=\"h4\"\n className={cn(\n \"text-sm font-medium mb-1\",\n type === \"warning\"\n ? \"text-neutral-700 dark:text-[#121316]\"\n : \"text-neutral-700\"\n )}\n >\n {heading}\n </Typography>\n )}\n <Typography\n variant=\"p\"\n className={cn(\n \"text-sm leading-relaxed\",\n type === \"warning\"\n ? \"text-neutral-600 dark:text-[#121316]\"\n : \"text-neutral-600\"\n )}\n >\n {message}\n </Typography>\n </div>\n\n {/* Close Button */}\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"flex-shrink-0 ml-2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Toast;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CheckCircleIcon, InfoIcon, WarningIcon, XIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface AlertProps {\n type: \"success\" | \"error\" | \"warning\" | \"info\";\n title?: string;\n message?: string;\n onClose?: () => void;\n showCloseButton?: boolean;\n variant?: \"default\" | \"filled\" | \"outline\";\n className?: string;\n children?: React.ReactNode;\n}\n\nconst Alert: React.FC<AlertProps> = ({\n type,\n title,\n message,\n onClose,\n showCloseButton = false,\n variant = \"default\",\n className,\n children,\n}) => {\n const getIcon = () => {\n switch (type) {\n case \"success\":\n return <CheckCircleIcon size={20} className=\"text-green-500\" />;\n case \"error\":\n return <WarningIcon size={20} className=\"text-red-500\" />;\n case \"warning\":\n return <WarningIcon size={20} className=\"text-yellow-500\" />;\n case \"info\":\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n default:\n return <InfoIcon size={20} className=\"text-blue-500\" />;\n }\n };\n\n const getTypeClasses = () => {\n switch (type) {\n case \"success\":\n return {\n default: \"bg-green-50 border-green-200 text-green-800\",\n filled: \"bg-green-500 text-white\",\n outline: \"bg-transparent border-green-500 text-green-700\",\n };\n case \"error\":\n return {\n default: \"bg-red-50 border-red-200 text-red-800\",\n filled: \"bg-red-500 text-white\",\n outline: \"bg-transparent border-red-500 text-red-700\",\n };\n case \"warning\":\n return {\n default: \"bg-yellow-50 border-yellow-200 text-yellow-800\",\n filled: \"bg-yellow-500 text-white\",\n outline: \"bg-transparent border-yellow-500 text-yellow-700\",\n };\n case \"info\":\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n default:\n return {\n default: \"bg-blue-50 border-blue-200 text-blue-800\",\n filled: \"bg-blue-500 text-white\",\n outline: \"bg-transparent border-blue-500 text-blue-700\",\n };\n }\n };\n\n const typeClasses = getTypeClasses()[variant];\n\n return (\n <div\n className={cn(\n \"rounded-[6px] border p-4\",\n typeClasses,\n className\n )}\n role=\"alert\"\n >\n <div className=\"flex items-start gap-3\">\n {/* Icon */}\n <div className=\"flex-shrink-0 mt-0.5\">\n {getIcon()}\n </div>\n\n {/* Content */}\n <div className=\"flex-1 min-w-0\">\n {title && (\n <Typography variant=\"h4\" className=\"text-sm font-medium mb-1\">\n {title}\n </Typography>\n )}\n {message && (\n <Typography variant=\"p\" className=\"text-sm leading-relaxed\">\n {message}\n </Typography>\n )}\n {children}\n </div>\n\n {/* Close Button */}\n {showCloseButton && onClose && (\n <button\n onClick={onClose}\n className=\"flex-shrink-0 ml-2 text-current opacity-70 hover:opacity-100 transition-opacity\"\n >\n <XIcon size={16} />\n </button>\n )}\n </div>\n </div>\n );\n};\n\nexport default Alert;\n","import React, { useEffect } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\nimport { XIcon } from \"@phosphor-icons/react\";\n\nexport interface ModalProps {\n isOpen: boolean;\n onClose: () => void;\n title?: string;\n children: React.ReactNode;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\" | \"full\";\n showCloseButton?: boolean;\n closeOnOverlayClick?: boolean;\n closeOnEscape?: boolean;\n className?: string;\n}\n\nconst Modal: React.FC<ModalProps> = ({\n isOpen,\n onClose,\n title,\n children,\n size = \"md\",\n showCloseButton = true,\n closeOnOverlayClick = true,\n closeOnEscape = true,\n className,\n}) => {\n useEffect(() => {\n if (!isOpen) return;\n\n const handleEscape = (e: KeyboardEvent) => {\n if (e.key === \"Escape\" && closeOnEscape) {\n onClose();\n }\n };\n\n document.addEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"hidden\";\n\n return () => {\n document.removeEventListener(\"keydown\", handleEscape);\n document.body.style.overflow = \"unset\";\n };\n }, [isOpen, onClose, closeOnEscape]);\n\n if (!isOpen) return null;\n\n const sizeClasses = {\n sm: \"max-w-sm\",\n md: \"max-w-md\",\n lg: \"max-w-lg\",\n xl: \"max-w-xl\",\n full: \"max-w-full mx-4\",\n };\n\n const handleOverlayClick = (e: React.MouseEvent) => {\n if (e.target === e.currentTarget && closeOnOverlayClick) {\n onClose();\n }\n };\n\n return (\n <div\n className=\"fixed inset-0 z-50 flex items-center justify-center bg-black/50 backdrop-blur-sm\"\n onClick={handleOverlayClick}\n >\n <div\n className={cn(\n \"bg-secondary rounded-[6px] shadow-xl w-full mx-4 max-h-[90vh] overflow-hidden\",\n sizeClasses[size],\n className\n )}\n >\n {/* Header */}\n {(title || showCloseButton) && (\n <div className=\"flex items-center justify-between px-4 py-2 border-b border-surface-1\">\n {title && (\n <Typography\n variant=\"h2\"\n className=\"text-lg font-semibold text-neutral-500\"\n >\n {title}\n </Typography>\n )}\n {showCloseButton && (\n <button\n onClick={onClose}\n className=\"p-1 text-neutral-400 hover:text-neutral-600 transition-colors\"\n >\n <XIcon size={20} />\n </button>\n )}\n </div>\n )}\n\n {/* Content */}\n <div className=\"px-4 py-2 overflow-y-auto max-h-[calc(90vh-120px)]\">\n {children}\n </div>\n </div>\n </div>\n );\n};\n\nexport default Modal;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface CardProps extends React.HTMLAttributes<HTMLDivElement> {\n variant?: \"default\" | \"elevated\" | \"outlined\" | \"filled\";\n padding?: \"none\" | \"sm\" | \"md\" | \"lg\";\n children: React.ReactNode;\n}\n\nconst Card = React.forwardRef<HTMLDivElement, CardProps>(\n (\n {\n className,\n variant = \"default\",\n padding = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-secondary border border-surface-1\",\n elevated: \"bg-secondary border border-surface-1 shadow-lg\",\n outlined: \"bg-transparent border border-surface-1\",\n filled: \"bg-surface-4 border border-surface-4\",\n };\n\n const paddingClasses = {\n none: \"\",\n sm: \"p-3\",\n md: \"p-4\",\n lg: \"p-6\",\n };\n\n return (\n <div\n ref={ref}\n className={cn(\n \"rounded-[6px] transition-all duration-200\",\n variantClasses[variant],\n paddingClasses[padding],\n className\n )}\n {...props}\n >\n {children}\n </div>\n );\n }\n);\n\nCard.displayName = \"Card\";\n\nexport default Card;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface BadgeProps extends React.HTMLAttributes<HTMLSpanElement> {\n variant?: \"default\" | \"primary\" | \"success\" | \"warning\" | \"danger\" | \"info\";\n size?: \"sm\" | \"md\" | \"lg\";\n rounded?: \"sm\" | \"md\" | \"lg\" | \"full\";\n children: React.ReactNode;\n}\n\nconst Badge = React.forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n className,\n variant = \"default\",\n size = \"md\",\n rounded = \"md\",\n children,\n ...props\n },\n ref\n ) => {\n const variantClasses = {\n default: \"bg-surface-3 text-neutral-400\",\n primary: \"bg-brand-color text-neutral-500 dark:text-white\",\n success: \"bg-green-500 text-white\",\n warning: \"bg-yellow-500 text-white\",\n danger: \"bg-red-500 text-white\",\n info: \"bg-blue-500 text-white\",\n };\n\n const sizeClasses = {\n sm: \"px-2 py-0.5 text-xs\",\n md: \"px-2.5 py-1 text-sm\",\n lg: \"px-3 py-1.5 text-base\",\n };\n\n const roundedClasses = {\n sm: \"rounded-[6px]\",\n md: \"rounded-[6px]\",\n lg: \"rounded-[6px]\",\n full: \"rounded-full\",\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n \"inline-flex items-center font-medium\",\n variantClasses[variant],\n sizeClasses[size],\n roundedClasses[rounded],\n className\n )}\n {...props}\n >\n {children}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n\nexport default Badge;\n","import React, { useState, useCallback } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface AvatarProps {\n src?: string;\n alt?: string;\n size?: \"sm\" | \"md\" | \"lg\" | \"xl\";\n fallback?: string;\n className?: string;\n onClick?: () => void;\n}\n\nconst Avatar: React.FC<AvatarProps> = ({\n src,\n alt = \"Avatar\",\n size = \"md\",\n fallback,\n className,\n onClick,\n}) => {\n const [imgError, setImgError] = useState(false);\n\n const sizeClasses = {\n sm: \"w-8 h-8 text-xs\",\n md: \"w-10 h-10 text-sm\",\n lg: \"w-12 h-12 text-base\",\n xl: \"w-16 h-16 text-lg\",\n };\n\n const getInitials = (name: string) => {\n return name\n .split(\" \")\n .map((word) => word[0])\n .join(\"\")\n .toUpperCase()\n .slice(0, 2);\n };\n\n const renderFallback = () => {\n if (fallback) {\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400 font-medium\">\n {getInitials(fallback)}\n </div>\n );\n }\n return (\n <div className=\"flex items-center justify-center w-full h-full bg-surface-3 text-neutral-400\">\n <svg className=\"w-1/2 h-1/2\" fill=\"currentColor\" viewBox=\"0 0 20 20\">\n <path\n fillRule=\"evenodd\"\n d=\"M10 9a3 3 0 100-6 3 3 0 000 6zm-7 9a7 7 0 1114 0H3z\"\n clipRule=\"evenodd\"\n />\n </svg>\n </div>\n );\n };\n\n // Use a callback to avoid unnecessary re-renders\n const handleImgError = useCallback(() => {\n setImgError(true);\n }, []);\n\n // Check if src is a non-empty string\n const isSrcAvailable = typeof src === \"string\" && src.trim() !== \"\";\n\n return (\n <div\n className={cn(\n \"relative rounded-full overflow-hidden bg-surface-3\",\n sizeClasses[size],\n className\n )}\n onClick={onClick}\n style={onClick ? { cursor: \"pointer\" } : undefined}\n >\n {isSrcAvailable && !imgError ? (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={src as string}\n alt={alt}\n className=\"object-cover\"\n sizes={\n size === \"sm\"\n ? \"32px\"\n : size === \"md\"\n ? \"40px\"\n : size === \"lg\"\n ? \"48px\"\n : \"64px\"\n }\n onError={handleImgError}\n />\n ) : (\n renderFallback()\n )}\n </div>\n );\n};\n\nexport default Avatar;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface DividerProps {\n orientation?: \"horizontal\" | \"vertical\";\n variant?: \"solid\" | \"dashed\" | \"dotted\";\n size?: \"sm\" | \"md\" | \"lg\";\n className?: string;\n}\n\nconst Divider: React.FC<DividerProps> = ({\n orientation = \"horizontal\",\n variant = \"solid\",\n size = \"md\",\n className,\n}) => {\n const variantClasses = {\n solid: \"border-solid\",\n dashed: \"border-dashed\",\n dotted: \"border-dotted\",\n };\n\n const sizeClasses = {\n sm: orientation === \"horizontal\" ? \"border-t\" : \"border-l\",\n md: orientation === \"horizontal\" ? \"border-t-2\" : \"border-l-2\",\n lg: orientation === \"horizontal\" ? \"border-t-4\" : \"border-l-4\",\n };\n\n const orientationClasses = {\n horizontal: \"w-full\",\n vertical: \"h-full\",\n };\n\n return (\n <div\n className={cn(\n \"border-surface-1\",\n variantClasses[variant],\n sizeClasses[size],\n orientationClasses[orientation],\n className\n )}\n />\n );\n};\n\nexport default Divider;\n","import React, { useState } from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface TooltipProps {\n content: string;\n children: React.ReactNode;\n position?: \"top\" | \"bottom\" | \"left\" | \"right\";\n delay?: number;\n className?: string;\n}\n\nconst Tooltip: React.FC<TooltipProps> = ({\n content,\n children,\n position = \"top\",\n delay = 200,\n className,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [timeoutId, setTimeoutId] = useState<ReturnType<typeof setTimeout> | null>(null);\n\n const showTooltip = () => {\n const id = setTimeout(() => setIsVisible(true), delay);\n setTimeoutId(id);\n };\n\n const hideTooltip = () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n setIsVisible(false);\n };\n\n const positionClasses = {\n top: \"bottom-full left-1/2 transform -translate-x-1/2 mb-2\",\n bottom: \"top-full left-1/2 transform -translate-x-1/2 mt-2\",\n left: \"right-full top-1/2 transform -translate-y-1/2 mr-2\",\n right: \"left-full top-1/2 transform -translate-y-1/2 ml-2\",\n };\n\n const arrowClasses = {\n top: \"top-full left-1/2 transform -translate-x-1/2 border-t-surface-1\",\n bottom: \"bottom-full left-1/2 transform -translate-x-1/2 border-b-surface-1\",\n left: \"left-full top-1/2 transform -translate-y-1/2 border-l-surface-1\",\n right: \"right-full top-1/2 transform -translate-y-1/2 border-r-surface-1\",\n };\n\n return (\n <div\n className=\"relative inline-block\"\n onMouseEnter={showTooltip}\n onMouseLeave={hideTooltip}\n >\n {children}\n {isVisible && (\n <div\n className={cn(\n \"absolute z-50 px-2 py-1 text-xs tooltip-text bg-surface-1 rounded shadow-lg whitespace-nowrap\",\n positionClasses[position],\n className\n )}\n >\n {content}\n <div\n className={cn(\n \"absolute w-0 h-0 border-4 border-transparent\",\n arrowClasses[position]\n )}\n />\n </div>\n )}\n </div>\n );\n};\n\nexport default Tooltip;\n","import { useState, useEffect, useRef } from \"react\";\nimport { UAParser } from \"ua-parser-js\";\n\ntype OS = \"mac\" | \"windows\" | \"linux\";\n\ntype KeyMap = {\n [key in OS]: {\n [key: string]: string;\n };\n};\n\ntype Shortcut = {\n command: string;\n shortcut: string[];\n usage: string;\n};\n\nconst keyMap: KeyMap = {\n mac: {\n ctrl: \"⌘\",\n alt: \"⌥\",\n shift: \"⇧\",\n enter: \"⏎\",\n backspace: \"⌫\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n windows: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n linux: {\n ctrl: \"Ctrl\",\n alt: \"Alt\",\n shift: \"Shift\",\n enter: \"Enter\",\n backspace: \"Backspace\",\n arrowup: \"↑\",\n arrowdown: \"↓\",\n },\n};\n\nconst detectOS = (): OS => {\n const parser = new UAParser();\n const osName = parser.getOS().name?.toLowerCase() || \"\";\n\n if (osName.includes(\"mac\")) return \"mac\";\n if (osName.includes(\"windows\")) return \"windows\";\n if (osName.includes(\"linux\")) return \"linux\";\n return \"windows\"; // fallback\n};\n\ntype UseShortcutFormatterReturn = {\n formatKeys: (keys: string[]) => string;\n getShortcutByCommand: (command: string) => string[];\n addShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => void;\n removeShortcutListener: (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => void;\n};\n\nconst normalizeKey = (key: string) => key.toLowerCase();\n\nconst matchShortcut = (event: KeyboardEvent, shortcut: string[], os: OS) => {\n // Normalize keys for comparison\n const keySet = new Set(shortcut.map(normalizeKey));\n // Map event to normalized keys\n const pressed: string[] = [];\n if (os === \"mac\") {\n if (event.metaKey) pressed.push(\"ctrl\");\n } else {\n if (event.ctrlKey) pressed.push(\"ctrl\");\n }\n if (event.altKey) pressed.push(\"alt\");\n if (event.shiftKey) pressed.push(\"shift\");\n // The main key\n if (event.key && ![\"Control\", \"Meta\", \"Alt\", \"Shift\"].includes(event.key)) {\n pressed.push(normalizeKey(event.key));\n }\n // Compare sets\n if (pressed.length !== shortcut.length) return false;\n return pressed.every((k) => keySet.has(k));\n};\n\nconst useShortcutFormatter = ({\n globalKeyboardShortcuts = [],\n}: {\n globalKeyboardShortcuts?: Shortcut[];\n}): UseShortcutFormatterReturn => {\n const [os, setOS] = useState<OS>(\"windows\");\n const listenersRef = useRef<Map<string, Set<(e: KeyboardEvent) => void>>>(\n new Map(),\n );\n\n useEffect(() => {\n setOS(detectOS());\n }, []);\n\n useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n for (const shortcut of globalKeyboardShortcuts) {\n if (matchShortcut(event, shortcut.shortcut, os)) {\n const listeners = listenersRef.current.get(shortcut.command);\n if (listeners) {\n event.preventDefault(); // Prevent browser defaults for matched shortcuts\n listeners.forEach((cb) => cb(event));\n }\n }\n }\n };\n window.addEventListener(\"keydown\", handleKeyDown);\n return () => {\n window.removeEventListener(\"keydown\", handleKeyDown);\n };\n }, [os]);\n\n const formatKeys = (keys: string[] = []): string => {\n return keys\n .map((key) => keyMap[os][key.toLowerCase()] || key.toUpperCase())\n .join(\" + \");\n };\n\n const getShortcutByCommand = (command: string): string[] => {\n const found = globalKeyboardShortcuts.find((s) => s.command === command);\n return found ? found.shortcut : [\"\"];\n };\n\n const addShortcutListener = (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => {\n if (!listenersRef.current.has(command)) {\n listenersRef.current.set(command, new Set());\n }\n listenersRef.current.get(command)!.add(listener);\n };\n\n const removeShortcutListener = (\n command: string,\n listener: (e: KeyboardEvent) => void,\n ) => {\n if (listenersRef.current.has(command)) {\n listenersRef.current.get(command)!.delete(listener);\n }\n };\n\n return {\n formatKeys,\n getShortcutByCommand,\n addShortcutListener,\n removeShortcutListener,\n };\n};\n\nexport default useShortcutFormatter;\n","export const globalKeyboardShortcuts = [\n {\n command: \"exit_app\",\n shortcut: [\"ctrl\", \"q\"],\n usage: \"Exit app\",\n },\n {\n command: \"minimize_app\",\n shortcut: [\"ctrl\", \"m\"],\n usage: \"Minimize app\",\n },\n {\n command: \"maximize_app\",\n shortcut: [\"ctrl\", \"shift\", \"m\"],\n usage: \"Maximize app\",\n },\n {\n command: \"focus_search\",\n shortcut: [\"ctrl\", \"k\"],\n usage: \"Focus search\",\n },\n];\n","import React, {\n useImperativeHandle,\n useRef,\n useCallback,\n useEffect,\n} from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport { globalKeyboardShortcuts } from \"../utils/constants\";\n\nexport interface SearchInputProps extends Omit<\n React.InputHTMLAttributes<HTMLInputElement>,\n \"type\" | \"size\"\n> {\n onSearch?: (value: string) => void;\n placeholder?: string;\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n showClearButton?: boolean;\n className?: string;\n enableKeyboardShortcuts?: boolean;\n isActive?: boolean;\n}\n\nconst SearchInput = React.forwardRef<HTMLInputElement, SearchInputProps>(\n (\n {\n onSearch,\n placeholder = \"Search...\",\n variant = \"default\",\n size = \"md\",\n showClearButton = true,\n className,\n value,\n onChange,\n style,\n enableKeyboardShortcuts = false,\n isActive = true,\n ...props\n },\n ref,\n ) => {\n const [searchValue, setSearchValue] = React.useState(value || \"\");\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const {\n addShortcutListener,\n removeShortcutListener,\n formatKeys,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n\n useEffect(() => {\n setSearchValue(value ?? \"\");\n }, [value]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newValue = e.target.value;\n setSearchValue(newValue);\n onChange?.(e);\n onSearch?.(newValue);\n };\n\n const handleClear = useCallback(() => {\n setSearchValue(\"\");\n onSearch?.(\"\");\n // Create a synthetic event for onChange\n const syntheticEvent = {\n target: { value: \"\" },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange?.(syntheticEvent);\n }, [onChange, onSearch]);\n\n useEffect(() => {\n if (!enableKeyboardShortcuts || !isActive) return;\n\n const handleFocusSearch = (e?: KeyboardEvent) => {\n e?.preventDefault();\n inputRef.current?.focus();\n };\n\n const handleClearShortcut = (e?: KeyboardEvent) => {\n e?.preventDefault();\n handleClear();\n inputRef.current?.blur();\n };\n\n addShortcutListener(\"focus_search\", handleFocusSearch);\n addShortcutListener(\"escape_button_action\", handleClearShortcut);\n\n return () => {\n removeShortcutListener(\"focus_search\", handleFocusSearch);\n removeShortcutListener(\"escape_button_action\", handleClearShortcut);\n };\n }, [\n enableKeyboardShortcuts,\n isActive,\n handleClear,\n addShortcutListener,\n removeShortcutListener,\n ]);\n\n const displayPlaceholder = enableKeyboardShortcuts\n ? `${placeholder} (${formatKeys(getShortcutByCommand(\"focus_search\"))})`\n : placeholder;\n\n const baseClasses = \"transition-all duration-200 focus:outline-none rounded-[6px]\";\n\n const variantClasses = {\n default: \"bg-primary input-text-default border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-default\",\n filled: \"bg-surface-4 input-text-filled border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-filled\",\n outline: \"bg-transparent input-text-outline border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50 placeholder-light placeholder-outline\",\n };\n\n const sizeClasses = {\n sm: \"h-8 text-sm leading-tight\",\n md: \"h-10 text-base leading-tight\",\n lg: \"h-12 text-lg leading-tight\",\n };\n\n const iconSizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n const iconPixelSizes = {\n sm: 16,\n md: 18,\n lg: 20,\n };\n\n const iconPositionClasses = {\n sm: \"left-2.5\",\n md: \"left-3\",\n lg: \"left-3.5\",\n };\n\n const inputPaddings = {\n sm: { left: \"2.25rem\", right: \"0.5rem\" },\n md: { left: \"2.75rem\", right: \"0.75rem\" },\n lg: { left: \"3rem\", right: \"1rem\" },\n };\n\n return (\n <div className=\"relative w-full min-w-0\">\n {/* Search Icon */}\n <div\n className={cn(\n \"pointer-events-none absolute top-1/2 z-10 -translate-y-1/2 text-neutral-400\",\n iconPositionClasses[size]\n )}\n >\n <svg\n className={cn(\"block shrink-0\", iconSizeClasses[size])}\n width={iconPixelSizes[size]}\n height={iconPixelSizes[size]}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"1.8\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <circle cx=\"11\" cy=\"11\" r=\"7\" />\n <path d=\"M20 20L16.65 16.65\" />\n </svg>\n </div>\n\n <input\n ref={inputRef}\n type=\"text\"\n placeholder={displayPlaceholder}\n value={searchValue}\n onChange={handleChange}\n className={cn(\n baseClasses,\n variantClasses[variant],\n \"w-full min-w-0\",\n sizeClasses[size],\n className,\n )}\n style={{\n paddingLeft: inputPaddings[size].left,\n paddingRight: showClearButton && searchValue ? \"2.5rem\" : inputPaddings[size].right,\n ...style,\n }}\n {...props}\n />\n\n {/* Clear Button */}\n {showClearButton && searchValue && (\n <button\n onClick={handleClear}\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-neutral-400 hover:text-neutral-600 transition-colors\"\n aria-label=\"Clear search\"\n type=\"button\"\n >\n <svg\n className={iconSizeClasses[size]}\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n );\n },\n);\n\nSearchInput.displayName = \"SearchInput\";\n\nexport default SearchInput;\n","import React, { useRef } from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { UploadIcon } from \"@phosphor-icons/react\";\nimport Typography from \"./Typography\";\n\nexport interface FileUploadProps {\n onFileSelect?: (files: File[]) => void;\n accept?: string;\n multiple?: boolean;\n maxSize?: number; // in bytes\n variant?: \"default\" | \"filled\" | \"outline\";\n size?: \"sm\" | \"md\" | \"lg\";\n disabled?: boolean;\n className?: string;\n children?: React.ReactNode;\n dragAndDrop?: boolean;\n}\n\nconst FileUpload: React.FC<FileUploadProps> = ({\n onFileSelect,\n accept,\n multiple = false,\n maxSize,\n variant = \"default\",\n size = \"md\",\n disabled = false,\n className,\n children,\n dragAndDrop = false,\n}) => {\n const fileInputRef = useRef<HTMLInputElement>(null);\n const [isDragOver, setIsDragOver] = React.useState(false);\n\n const handleFileSelect = (files: FileList | null) => {\n if (!files) return;\n\n const fileArray = Array.from(files);\n \n // Validate file size\n if (maxSize) {\n const validFiles = fileArray.filter(file => file.size <= maxSize);\n if (validFiles.length !== fileArray.length) {\n console.warn(\"Some files were too large and were skipped\");\n }\n onFileSelect?.(validFiles);\n } else {\n onFileSelect?.(fileArray);\n }\n };\n\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n handleFileSelect(e.target.files);\n };\n\n const handleClick = () => {\n if (!disabled) {\n fileInputRef.current?.click();\n }\n };\n\n const handleDragOver = (e: React.DragEvent) => {\n e.preventDefault();\n if (dragAndDrop && !disabled) {\n setIsDragOver(true);\n }\n };\n\n const handleDragLeave = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n };\n\n const handleDrop = (e: React.DragEvent) => {\n e.preventDefault();\n setIsDragOver(false);\n if (dragAndDrop && !disabled) {\n handleFileSelect(e.dataTransfer.files);\n }\n };\n\n const baseClasses = \"transition-all duration-200 focus:outline-none cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n filled: \"bg-surface-4 border border-surface-4 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n outline: \"bg-transparent border border-surface-1 focus:border-brand-color focus:ring-1 focus:ring-brand-color/50\",\n };\n\n const sizeClasses = {\n sm: \"h-20 px-3 text-sm\",\n md: \"h-24 px-4 text-base\",\n lg: \"h-32 px-6 text-lg\",\n };\n\n const defaultTextClasses = variant === \"default\" || variant === \"outline\"\n ? \"text-neutral-600\"\n : \"text-neutral-600\";\n\n const acceptTextClasses = variant === \"default\" || variant === \"outline\"\n ? \"text-xs text-neutral-600\"\n : \"text-xs text-neutral-600\";\n\n const defaultContent = (\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\n <UploadIcon size={24} className={cn(\"mb-2\", defaultTextClasses)} />\n <Typography variant=\"p\" className={cn(\"text-sm\", defaultTextClasses)}>\n {dragAndDrop ? \"Drag and drop files here\" : \"Click to upload files\"}\n </Typography>\n {accept && (\n <Typography variant=\"p\" className={cn(acceptTextClasses, \"mt-1\")}>\n Accepted: {accept}\n </Typography>\n )}\n </div>\n );\n\n return (\n <div\n onClick={handleClick}\n onDragOver={handleDragOver}\n onDragLeave={handleDragLeave}\n onDrop={handleDrop}\n className={cn(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"w-full rounded-[6px] border-2 border-dashed flex items-center justify-center\",\n isDragOver && \"border-brand-color bg-brand-color/10\",\n disabled && \"opacity-50 cursor-not-allowed\",\n className\n )}\n >\n <input\n ref={fileInputRef}\n type=\"file\"\n accept={accept}\n multiple={multiple}\n onChange={handleInputChange}\n className=\"hidden\"\n disabled={disabled}\n />\n {children || defaultContent}\n </div>\n );\n};\n\nexport default FileUpload;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\n\nexport interface ProgressProps {\n value: number; // 0-100\n max?: number;\n variant?: \"default\" | \"success\" | \"warning\" | \"danger\";\n size?: \"sm\" | \"md\" | \"lg\";\n showLabel?: boolean;\n animated?: boolean;\n className?: string;\n}\n\nconst Progress: React.FC<ProgressProps> = ({\n value,\n max = 100,\n variant = \"default\",\n size = \"md\",\n showLabel = false,\n animated = false,\n className,\n}) => {\n const percentage = Math.min(Math.max((value / max) * 100, 0), 100);\n\n const variantClasses = {\n default: \"bg-brand-color\",\n success: \"bg-green-500\",\n warning: \"bg-yellow-500\",\n danger: \"bg-red-500\",\n };\n\n const sizeClasses = {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\",\n };\n\n const labelSizeClasses = {\n sm: \"text-xs\",\n md: \"text-sm\",\n lg: \"text-base\",\n };\n\n return (\n <div className={cn(\"w-full\", className)}>\n <div className=\"flex items-center gap-2\">\n <div className=\"flex-1\">\n <div\n className={cn(\n \"w-full bg-surface-3 rounded-[6px] overflow-hidden\",\n sizeClasses[size]\n )}\n >\n <div\n className={cn(\n \"h-full rounded-[6px] transition-all duration-300\",\n variantClasses[variant],\n animated && \"animate-pulse\"\n )}\n style={{ width: `${percentage}%` }}\n />\n </div>\n </div>\n {showLabel && (\n <span className={cn(\"text-neutral-400 font-medium\", labelSizeClasses[size])}>\n {Math.round(percentage)}%\n </span>\n )}\n </div>\n </div>\n );\n};\n\nexport default Progress;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport { CaretLeftIcon, CaretRightIcon } from \"@phosphor-icons/react\";\n\nexport interface PaginationProps {\n currentPage: number;\n totalPages: number;\n onPageChange: (page: number) => void;\n showFirstLast?: boolean;\n showPrevNext?: boolean;\n maxVisiblePages?: number;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"outline\";\n className?: string;\n}\n\nconst Pagination: React.FC<PaginationProps> = ({\n currentPage,\n totalPages,\n onPageChange,\n showFirstLast = true,\n showPrevNext = true,\n maxVisiblePages = 5,\n size = \"md\",\n variant = \"default\",\n className,\n}) => {\n const getVisiblePages = () => {\n const pages: (number | string)[] = [];\n const halfVisible = Math.floor(maxVisiblePages / 2);\n\n if (totalPages <= maxVisiblePages) {\n for (let i = 1; i <= totalPages; i++) {\n pages.push(i);\n }\n } else {\n let start = Math.max(1, currentPage - halfVisible);\n const end = Math.min(totalPages, start + maxVisiblePages - 1);\n\n if (end - start + 1 < maxVisiblePages) {\n start = Math.max(1, end - maxVisiblePages + 1);\n }\n\n if (start > 1) {\n pages.push(1);\n if (start > 2) {\n pages.push(\"...\");\n }\n }\n\n for (let i = start; i <= end; i++) {\n pages.push(i);\n }\n\n if (end < totalPages) {\n if (end < totalPages - 1) {\n pages.push(\"...\");\n }\n pages.push(totalPages);\n }\n }\n\n return pages;\n };\n\n const handlePageClick = (page: number | string) => {\n if (typeof page === \"number\") {\n onPageChange(page);\n }\n };\n\n const sizeClasses = {\n sm: \"h-8 px-2 text-sm\",\n md: \"h-10 px-3 text-base\",\n lg: \"h-12 px-4 text-lg\",\n };\n\n const variantClasses = {\n default: \"bg-primary border border-surface-1 hover:bg-surface-3\",\n outline: \"bg-transparent border border-surface-1 hover:bg-surface-3\",\n };\n\n const activeClasses = {\n default: \"bg-brand-color text-neutral-500 border-brand-color\",\n outline: \"bg-brand-color text-neutral-500 border-brand-color\",\n };\n\n const renderPageButton = (page: number | string, index: number) => {\n if (page === \"...\") {\n return (\n <span\n key={`ellipsis-${index}`}\n className={cn(\n \"flex items-center justify-center\",\n sizeClasses[size],\n \"text-neutral-400\"\n )}\n >\n ...\n </span>\n );\n }\n\n const isActive = page === currentPage;\n\n return (\n <button\n key={page}\n onClick={() => handlePageClick(page)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n isActive ? activeClasses[variant] : \"text-neutral-400\",\n !isActive && \"hover:text-neutral-500\"\n )}\n >\n {page}\n </button>\n );\n };\n\n return (\n <div className={cn(\"flex items-center justify-center gap-1\", className)}>\n {/* First Page */}\n {showFirstLast && currentPage > 1 && (\n <button\n onClick={() => onPageChange(1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n First\n </button>\n )}\n\n {/* Previous Page */}\n {showPrevNext && currentPage > 1 && (\n <button\n onClick={() => onPageChange(currentPage - 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretLeftIcon size={16} />\n </button>\n )}\n\n {/* Page Numbers */}\n {getVisiblePages().map((page, index) => renderPageButton(page, index))}\n\n {/* Next Page */}\n {showPrevNext && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(currentPage + 1)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n <CaretRightIcon size={16} />\n </button>\n )}\n\n {/* Last Page */}\n {showFirstLast && currentPage < totalPages && (\n <button\n onClick={() => onPageChange(totalPages)}\n className={cn(\n \"flex items-center justify-center font-medium transition-all duration-200 rounded-[6px]\",\n sizeClasses[size],\n variantClasses[variant],\n \"text-neutral-400 hover:text-neutral-500\"\n )}\n >\n Last\n </button>\n )}\n </div>\n );\n};\n\nexport default Pagination;\n","import React from \"react\";\nimport { cn } from \"../utils/helpers\";\nimport Typography from \"./Typography\";\n\nexport interface RadioProps extends Omit<React.InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {\n label?: string;\n size?: \"sm\" | \"md\" | \"lg\";\n variant?: \"default\" | \"filled\";\n error?: string;\n helperText?: string;\n}\n\nconst Radio = React.forwardRef<HTMLInputElement, RadioProps>(\n (\n {\n className,\n label,\n size = \"md\",\n variant = \"default\",\n error,\n helperText,\n disabled,\n ...props\n },\n ref\n ) => {\n const baseClasses = \"transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2 cursor-pointer rounded-[6px]\";\n \n const variantClasses = {\n default: \"bg-primary border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n filled: \"bg-surface-4 border border-surface-1 focus:border-brand-color focus:ring-brand-color/50 checked:bg-brand-color checked:border-brand-color\",\n };\n\n const sizeClasses = {\n sm: \"w-4 h-4\",\n md: \"w-5 h-5\",\n lg: \"w-6 h-6\",\n };\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"flex items-start gap-2\">\n <div className=\"relative\">\n <input\n ref={ref}\n type=\"radio\"\n className={cn(\n \"peer\",\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n \"appearance-none\",\n error && \"border-red-500 focus:border-red-500 focus:ring-red-500/50\",\n className\n )}\n disabled={disabled}\n {...props}\n />\n \n <div className=\"absolute inset-0 flex items-center justify-center pointer-events-none\">\n <div className=\"w-1/2 h-1/2 bg-white rounded-full opacity-0 peer-checked:opacity-100\" />\n </div>\n </div>\n \n {label && (\n <label\n className={cn(\n \"text-sm text-neutral-400 select-none\",\n disabled ? \"cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n >\n {label}\n </label>\n )}\n </div>\n \n {(error || helperText) && (\n <div className=\"mt-1 ml-6\">\n {error && (\n <Typography variant=\"p\" className=\"text-xs text-red-500\">{error}</Typography>\n )}\n {helperText && !error && (\n <Typography variant=\"p\" className=\"text-xs text-neutral-400\">{helperText}</Typography>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nRadio.displayName = \"Radio\";\n\nexport default Radio;\n","import React, { useState } from \"react\";\nimport { CaretUpIcon, CaretDownIcon } from \"@phosphor-icons/react\";\n\ninterface AccordionItem {\n title: string;\n content: React.ReactNode;\n}\n\ninterface AccordionProps {\n items: AccordionItem[];\n active?: number;\n}\n\nconst Accordion: React.FC<AccordionProps> = ({ items, active = -1 }) => {\n const [activeIndex, setActiveIndex] = useState<number | null>(active);\n\n const toggleAccordion = (index: number) => {\n setActiveIndex(activeIndex === index ? null : index);\n };\n\n return (\n <div className=\"w-full space-y-[12px]\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"border border-surface-1 mx-[10px] rounded-[6px]\"\n >\n <button\n onClick={() => toggleAccordion(index)}\n className=\"w-full text-left px-[12px] py-[10px] bg-surface-4 flex justify-between items-center focus:outline-none\"\n >\n <span className=\"font-medium text-neutral-400 text-[13px]\">\n {item.title}\n </span>\n <span className=\"flex flex-row gap-[16px]\">\n {activeIndex === index ? (\n <CaretUpIcon size={18} />\n ) : (\n <CaretDownIcon size={18} />\n )}\n </span>\n </button>\n <div\n className={`overflow-hidden transition-all duration-300 ${\n activeIndex === index ? \"px-[12px] py-[12px]\" : \"max-h-0\"\n }`}\n >\n {item.content}\n </div>\n </div>\n ))}\n </div>\n );\n};\n\nexport default Accordion;\n","import React, { useState, useEffect } from 'react';\n\ninterface TabItem {\n label: string;\n content: React.ReactNode;\n icon?: React.ReactNode;\n}\n\ninterface TabsProps {\n tabs: TabItem[];\n defaultActiveTab?: number;\n onTabChange?: (index: number) => void;\n containerClassName?: string;\n buttonClassName?: string;\n activeButtonClassName?: string;\n}\n\nconst Tabs: React.FC<TabsProps> = ({\n tabs,\n defaultActiveTab = 0,\n onTabChange,\n containerClassName = \"flex w-full border border-border-1 rounded-[6px] mt-[16px]\",\n buttonClassName = \"flex items-center gap-1 px-[8px] py-[2px] text-[13px] cursor-pointer transition-all duration-300 text-neutral-300 rounded-[6px] m-[8px]\",\n activeButtonClassName = \"bg-surface-3 text-neutral-400\",\n}) => {\n const [activeTab, setActiveTab] = useState(defaultActiveTab);\n\n useEffect(() => {\n setActiveTab(defaultActiveTab);\n }, [defaultActiveTab]);\n\n const handleTabClick = (index: number) => {\n setActiveTab(index);\n if (onTabChange) {\n onTabChange(index);\n }\n };\n\n return (\n <div className=\"w-full\">\n <div className={containerClassName}>\n {tabs.map((tab, index) => (\n <div\n key={index}\n className={`${buttonClassName} ${\n activeTab === index ? activeButtonClassName : \"\"\n }`}\n onClick={() => handleTabClick(index)}\n >\n {tab.icon}\n <span>{tab.label}</span>\n </div>\n ))}\n </div>\n <div className=\"w-full mt-4 flex flex-col gap-4\">\n {tabs[activeTab].content}\n </div>\n </div>\n );\n};\n\nexport default Tabs;","import {\n Children,\n cloneElement,\n isValidElement,\n useCallback,\n useEffect,\n useMemo,\n useState,\n} from \"react\";\nimport type { AppInterface } from \"@/types/appsList\";\nimport type {\n PluginAPI,\n PluginComponentProps,\n PluginManifest,\n} from \"@/types/plugins\";\n\ntype ToastType = \"success\" | \"error\" | \"info\";\n\ninterface MockUser {\n id: string;\n name: string;\n email: string;\n}\n\ntype WindowVariant = \"with-side-menu\" | \"without-side-menu\";\n\ninterface PlaygroundMenuItem {\n title: string;\n icon?: string;\n isActive?: boolean;\n}\n\ninterface PlaygroundMenu {\n title: string;\n items: PlaygroundMenuItem[];\n}\n\ninterface PlaygroundActionButton {\n title: string;\n}\n\ninterface PluginPlaygroundMetadata extends Partial<PluginManifest> {\n title?: string;\n defaultWidth?: number;\n defaultHeight?: number;\n minWidth?: number;\n minHeight?: number;\n windowVariant?: WindowVariant;\n menu?: PlaygroundMenu;\n actionButton?: PlaygroundActionButton;\n backgroundImage?: string;\n}\n\ninterface PluginPlaygroundProps {\n children:\n | React.ReactNode\n | ((props: PluginComponentProps) => React.ReactNode);\n metadata: PluginPlaygroundMetadata;\n backgroundImage?: string;\n onClose?: () => void;\n onMinimize?: (isMinimized: boolean) => void;\n}\n\nconst DEFAULT_BACKGROUND = \"/wallpaper/Wallpaper3.webp\";\nconst DEFAULT_MOCK_USER: MockUser = {\n id: \"dev-user\",\n name: \"Plugin Developer\",\n email: \"dev@local.test\",\n};\nconst DEFAULT_TOKEN = \"playground-dev-token\";\n\nfunction renderPluginChild(\n child: React.ReactNode | ((props: PluginComponentProps) => React.ReactNode),\n app: AppInterface,\n api: PluginAPI,\n reloadKey: number,\n): React.ReactNode {\n if (!child) return null;\n\n if (typeof child === \"function\") {\n const renderFn = child as (props: PluginComponentProps) => React.ReactNode;\n return renderFn({ app, api });\n }\n\n return Children.map(child as React.ReactNode, (node, index) => {\n if (!isValidElement(node)) {\n return node;\n }\n\n return cloneElement(\n node as React.ReactElement<Partial<PluginComponentProps>>,\n {\n key: `${reloadKey}-${index}`,\n app,\n api,\n },\n );\n });\n}\n\nfunction getDefaultSize(metadata: PluginPlaygroundMetadata) {\n const manifestWindowSize = metadata.windowSize?.windowSize;\n const minWidth = metadata.minWidth ?? 520;\n const minHeight = metadata.minHeight ?? 360;\n\n return {\n width: Math.max(\n manifestWindowSize?.width ?? metadata.defaultWidth ?? 960,\n minWidth,\n ),\n height: Math.max(\n manifestWindowSize?.height ?? metadata.defaultHeight ?? 680,\n minHeight,\n ),\n };\n}\n\nexport default function PluginPlayground({\n children,\n metadata,\n backgroundImage,\n onClose,\n onMinimize,\n}: Readonly<PluginPlaygroundProps>) {\n const [mockUser] = useState<MockUser>(DEFAULT_MOCK_USER);\n const [mockToken] = useState(DEFAULT_TOKEN);\n const [isMinimized, setIsMinimized] = useState(false);\n const [isClosed, setIsClosed] = useState(false);\n const [isActive, setIsActive] = useState(true);\n const [isNightMode, setIsNightMode] = useState(true);\n\n useEffect(() => {\n if (typeof window === \"undefined\") return;\n\n const storedTheme = window.localStorage.getItem(\"plugin-playground-theme\");\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n const shouldUseDark = storedTheme ? storedTheme === \"dark\" : prefersDark;\n setIsNightMode(shouldUseDark);\n }, []);\n\n useEffect(() => {\n if (typeof document === \"undefined\") return;\n\n document.documentElement.classList.toggle(\"dark\", isNightMode);\n window.localStorage.setItem(\n \"plugin-playground-theme\",\n isNightMode ? \"dark\" : \"light\",\n );\n }, [isNightMode]);\n\n const title = metadata.title ?? metadata.name ?? \"Plugin Playground\";\n const slug = metadata.slug ?? \"local-plugin\";\n const defaultSize = useMemo(() => getDefaultSize(metadata), [metadata]);\n const canvasBackground =\n backgroundImage ?? metadata.backgroundImage ?? DEFAULT_BACKGROUND;\n const isWindowResizable =\n metadata.windowSize?.isAppWindowResizing ?? metadata.isResizing ?? true;\n\n const minimizeWindow = useCallback(() => {\n setIsActive(false);\n setIsMinimized(true);\n setIsClosed(false);\n onMinimize?.(true);\n }, [onMinimize]);\n\n const closeWindow = useCallback(() => {\n setIsActive(false);\n setIsClosed(true);\n setIsMinimized(false);\n onClose?.();\n }, [onClose]);\n\n const restoreWindow = useCallback(() => {\n setIsActive(true);\n setIsClosed(false);\n setIsMinimized(false);\n onMinimize?.(false);\n }, [onMinimize]);\n\n const mockApi: PluginAPI = useMemo(\n () => ({\n showToast: (message: string, type: ToastType) => {\n console.info(`[playground:${type}] ${message}`);\n },\n openApp: (app: AppInterface) => {\n console.info(`[playground:openApp] ${app.slug}`);\n },\n getUser: async () => {\n return mockUser;\n },\n getToken: async () => {\n return mockToken;\n },\n }),\n [mockToken, mockUser],\n );\n\n const appProps: AppInterface = useMemo(\n () => ({\n name: title,\n slug,\n icon: metadata.icon,\n isActive,\n isMinimize: isMinimized,\n componentKey: \"plugin-playground\",\n windowSize: {\n windowSize: defaultSize,\n isAppWindowResizing: isWindowResizable,\n },\n metadata: {\n title,\n description: metadata.description,\n ogImage: metadata.icon,\n keywords: metadata.keywords?.join(\", \"),\n author: metadata.author,\n siteName: \"Plugin Playground\",\n },\n callback: (value) => {\n if (value === \"MINIMIZE_APP\") {\n minimizeWindow();\n return;\n }\n\n if (value === \"CLOSE_APP\") {\n closeWindow();\n return;\n }\n\n if (value === \"CLICKED\") {\n setIsActive(true);\n }\n },\n }),\n [\n closeWindow,\n defaultSize,\n isActive,\n isMinimized,\n metadata.author,\n metadata.description,\n metadata.icon,\n metadata.keywords,\n minimizeWindow,\n isWindowResizable,\n slug,\n title,\n ],\n );\n\n const injectedPlugin = renderPluginChild(\n children,\n appProps,\n mockApi,\n Number(isClosed),\n );\n\n return (\n <div\n className=\"relative h-screen w-screen overflow-hidden bg-cover bg-center bg-no-repeat text-white transition-colors duration-200 dark:text-slate-100\"\n style={{ backgroundImage: `url(${canvasBackground})` }}\n >\n <button\n aria-pressed={isNightMode}\n className=\"absolute left-4 top-4 z-40 rounded-full border border-white/30 bg-white/75 px-3 py-2 text-xs font-medium text-slate-900 shadow-lg shadow-black/20 backdrop-blur-md transition-all duration-200 dark:border-slate-700/60 dark:bg-slate-900/70 dark:text-slate-100 dark:shadow-slate-950/40\"\n onClick={() => setIsNightMode((prev) => !prev)}\n type=\"button\"\n >\n {isNightMode ? \"☀️ Light Mood\" : \"🌙 Night Mood\"}\n </button>\n\n {!isClosed ? injectedPlugin : null}\n\n {isClosed || isMinimized ? (\n <button\n className=\"absolute bottom-6 left-1/2 z-40 -translate-x-1/2 rounded-full border border-white/30 bg-black/55 px-4 py-2 text-xs text-white backdrop-blur-md transition-colors duration-200 dark:border-white/20 dark:bg-slate-950/70 dark:text-slate-100\"\n onClick={restoreWindow}\n type=\"button\"\n >\n {isClosed ? `Reopen ${title}` : `Restore ${title}`}\n </button>\n ) : null}\n </div>\n );\n}\n","import Button from \"./Button\";\nimport Typography from \"./Typography\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport React, {\n useReducer,\n useEffect,\n useRef,\n isValidElement,\n ReactElement,\n} from \"react\";\nimport { AppInterface } from \"@/types/appsList\";\nimport { globalKeyboardShortcuts } from \"../utils/constants\";\n\nconst SIDEBAR_WIDTH = 200; // fixed sidebar width\n\nexport type WindowSizeProps = {\n windowSize: { width: number; height: number };\n isAppWindowResizing: boolean;\n};\n\ntype ActionButton = {\n title: string;\n onClick: () => void;\n};\n\ntype MenuItem = {\n title: string;\n icon: React.ReactNode;\n onClick: () => void;\n isActive?: boolean;\n};\n\ninterface WindowWithSideMenuProps {\n app: AppInterface;\n children?: React.ReactNode;\n defaultSize?: { width: number; height: number };\n isResizable?: boolean;\n actionButtons?: ActionButton;\n menu?: {\n title: string;\n items: MenuItem[];\n };\n}\n\ninterface State {\n position: { x: number; y: number };\n isDragging: boolean;\n startPosition: { x: number; y: number };\n isMinimized: boolean;\n isMaximized: boolean;\n windowSize: { width: number; height: number };\n resizeStart: { x: number; y: number } | null;\n defaultSize: { width: number; height: number };\n preMaximizeState: {\n position: { x: number; y: number };\n windowSize: { width: number; height: number };\n } | null;\n}\n\ntype Action =\n | { type: \"START_DRAG\"; payload: { x: number; y: number } }\n | { type: \"DRAG\"; payload: { x: number; y: number } }\n | { type: \"STOP_DRAG\" }\n | { type: \"START_RESIZE\"; payload: { x: number; y: number } }\n | { type: \"RESIZE\"; payload: { width: number; height: number } }\n | { type: \"STOP_RESIZE\" }\n | { type: \"TOGGLE_MINIMIZE\"; payload: { width: number; height: number } }\n | { type: \"TOGGLE_MAXIMIZE\"; payload?: { width: number; height: number } }\n | { type: \"SYNC_MINIMIZE_STATE\"; payload: boolean };\n\nconst initialState: State = {\n position: { x: 0, y: 40 },\n isDragging: false,\n startPosition: { x: 0, y: 40 },\n isMinimized: false,\n isMaximized: false,\n windowSize: { width: 600, height: 300 },\n resizeStart: null,\n defaultSize: { width: 600, height: 300 },\n preMaximizeState: null,\n};\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"START_DRAG\":\n return { ...state, isDragging: true, startPosition: action.payload };\n case \"DRAG\":\n return { ...state, position: action.payload };\n case \"STOP_DRAG\":\n return { ...state, isDragging: false };\n case \"START_RESIZE\":\n return {\n ...state,\n resizeStart: action.payload,\n };\n case \"RESIZE\":\n return { ...state, windowSize: action.payload };\n case \"STOP_RESIZE\":\n return { ...state, resizeStart: null };\n case \"TOGGLE_MINIMIZE\":\n return {\n ...state,\n isMinimized: !state.isMinimized,\n windowSize: {\n width: action.payload.width,\n height: state.isMinimized ? action.payload.height : 33,\n },\n };\n case \"SYNC_MINIMIZE_STATE\":\n return {\n ...state,\n isMinimized: action.payload,\n windowSize: action.payload\n ? { width: state.windowSize.width, height: 33 }\n : { width: state.windowSize.width, height: state.defaultSize.height },\n };\n case \"TOGGLE_MAXIMIZE\":\n if (state.isMaximized) {\n return {\n ...state,\n isMaximized: false,\n windowSize: state.preMaximizeState?.windowSize || state.defaultSize,\n position: state.preMaximizeState?.position || { x: 0, y: 40 },\n preMaximizeState: null,\n };\n }\n return {\n ...state,\n isMaximized: true,\n preMaximizeState: {\n position: state.position,\n windowSize: state.windowSize,\n },\n windowSize: action.payload || {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n position: { x: 0, y: 40 },\n };\n default:\n return state;\n }\n};\n\nconst WindowWithSideMenu: React.FC<WindowWithSideMenuProps> = ({\n app,\n children,\n defaultSize = { width: 600, height: 300 },\n isResizable = true,\n actionButtons,\n menu,\n}) => {\n const {\n formatKeys,\n addShortcutListener,\n removeShortcutListener,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n const [state, dispatch] = useReducer(reducer, {\n ...initialState,\n windowSize: app.windowSize.windowSize ?? defaultSize,\n defaultSize: app.windowSize.windowSize ?? defaultSize,\n });\n\n const windowRef = useRef<HTMLDivElement>(null);\n\n // Sync local minimize state from the app model passed from the parent\n useEffect(() => {\n if (app.isMinimize !== state.isMinimized) {\n dispatch({ type: \"SYNC_MINIMIZE_STATE\", payload: app.isMinimize });\n }\n }, [app.isMinimize, state.isMinimized]);\n\n // Drag logic\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (state.isMaximized) return;\n dispatch({\n type: \"START_DRAG\",\n payload: {\n x: e.clientX - state.position.x,\n y: e.clientY - state.position.y,\n },\n });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (state.isDragging) {\n const newX = e.clientX - state.startPosition.x;\n const newY = e.clientY - state.startPosition.y;\n\n const boundedX = Math.max(\n 0,\n Math.min(newX, window.innerWidth - state.windowSize.width),\n );\n const boundedY = Math.max(\n 0,\n Math.min(newY, window.innerHeight - state.windowSize.height),\n );\n\n dispatch({ type: \"DRAG\", payload: { x: boundedX, y: boundedY } });\n }\n\n if (\n state.resizeStart &&\n isResizable &&\n app.windowSize.isAppWindowResizing\n ) {\n let newWidth =\n state.windowSize.width + (e.clientX - (state.resizeStart?.x ?? 0));\n let newHeight =\n state.windowSize.height + (e.clientY - (state.resizeStart?.y ?? 0));\n\n newWidth = Math.max(defaultSize.width, newWidth, state.defaultSize.width);\n newHeight = Math.max(\n defaultSize.height,\n newHeight,\n state.defaultSize.height,\n );\n\n const maxWidth = window.innerWidth - state.position.x;\n const maxHeight = window.innerHeight - state.position.y;\n newWidth = Math.min(newWidth, maxWidth);\n newHeight = Math.min(newHeight, maxHeight);\n\n dispatch({\n type: \"RESIZE\",\n payload: {\n width: newWidth,\n height: newHeight,\n },\n });\n }\n };\n\n const handleMouseUp = () => {\n if (state.isDragging) dispatch({ type: \"STOP_DRAG\" });\n if (state.resizeStart) dispatch({ type: \"STOP_RESIZE\" });\n };\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (!isResizable && !app.windowSize.isAppWindowResizing) return;\n e.stopPropagation();\n document.body.style.userSelect = \"none\";\n dispatch({ type: \"START_RESIZE\", payload: { x: e.clientX, y: e.clientY } });\n };\n\n useEffect(() => {\n if (state.isDragging || state.resizeStart) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n document.body.style.userSelect = \"\";\n };\n }, [state.isDragging, state.resizeStart]);\n\n useEffect(() => {\n if (windowRef.current) {\n windowRef.current.addEventListener(\"click\", () => {\n if (app?.callback) {\n app?.callback(\"CLICKED\");\n }\n });\n }\n }, [app?.slug, windowRef]);\n\n useEffect(() => {\n const handleExitApp = () => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n };\n addShortcutListener(\"exit_app\", handleExitApp);\n return () => {\n removeShortcutListener(\"exit_app\", handleExitApp);\n };\n }, [app?.slug, app.isActive]);\n\n useEffect(() => {\n const handleMinimize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }\n };\n addShortcutListener(\"minimize_app\", handleMinimize);\n return () => {\n removeShortcutListener(\"minimize_app\", handleMinimize);\n };\n }, [app?.slug, app.isActive, state.isMinimized, state.windowSize]);\n\n useEffect(() => {\n const handleMaximize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }\n };\n addShortcutListener(\"maximize_app\", handleMaximize);\n return () => {\n removeShortcutListener(\"maximize_app\", handleMaximize);\n };\n }, [app?.slug, app.isActive]);\n\n if (state.isMinimized) {\n return null;\n }\n\n return (\n <div\n ref={windowRef}\n className=\"flex rounded-[10px] overflow-hidden window-drop-shadow \"\n style={{\n width: `${state.windowSize.width}px`,\n height: `${state.windowSize.height}px`,\n transform: state.isMaximized\n ? undefined\n : `translate(${state.position.x}px, ${state.position.y - 37}px)`,\n overflow: state.isMinimized ? \"hidden\" : \"auto\",\n position: \"absolute\",\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n zIndex: state.isDragging ? 3 : app?.isActive ? 2 : 1,\n }}\n >\n {/* Sidebar - fixed width */}\n <div\n className=\"bg-primary flex flex-col\"\n style={{\n width: `${SIDEBAR_WIDTH}px`,\n minWidth: `${SIDEBAR_WIDTH}px`,\n maxWidth: `${SIDEBAR_WIDTH}px`,\n flexShrink: 0,\n }}\n >\n <div\n className=\"flex items-center gap-[8px] pl-[20px] pt-[20px]\"\n onMouseDown={handleMouseDown}\n style={{ cursor: state.isMaximized ? \"default\" : \"move\" }}\n >\n <button\n className=\"w-[12px] h-[12px] bg-[#FF6157] rounded-full\"\n onClick={() => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n }}\n title={`Close ${formatKeys(getShortcutByCommand(\"exit_app\"))}`}\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n\n <button\n className=\"w-[12px] h-[12px] bg-[#FFC12F] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }}\n title={\n state.isMinimized\n ? \"Restore\"\n : `Minimize ${formatKeys(getShortcutByCommand(\"minimize_app\"))}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n {isResizable && app.windowSize.isAppWindowResizing && (\n <button\n className=\"w-[12px] h-[12px] bg-[#2ACB42] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }}\n title={\n state.isMaximized\n ? \"Restore\"\n : `Maximize ${formatKeys(\n getShortcutByCommand(\"maximize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n tabIndex={-1}\n />\n )}\n </div>\n\n {/* Create QR Button */}\n {actionButtons !== undefined && (\n <div className=\"px-[12px] mt-[18px]\">\n <Button\n variant=\"outline\"\n fullWidth\n onClick={actionButtons.onClick}\n className=\"!bg-surface-3\"\n >\n + {actionButtons.title}\n </Button>\n </div>\n )}\n {/* Menu */}\n {menu && (\n <div className=\"mt-[15px] flex flex-col text-[13px]\">\n {/* Dashboard */}\n {menu?.items.map((item, index) => (\n <button\n className={`${\n item.isActive\n ? \"bg-brand-color text-white\"\n : \"text-neutral-500\"\n } px-[10px] mx-2 flex items-center gap-[8px] rounded-[6px] h-[30px] text-neutral-400 cursor-pointer transition-all duration-200`}\n onClick={item.onClick}\n key={index}\n >\n {item.icon}\n <span className=\"\">{item.title}</span>\n </button>\n ))}\n </div>\n )}\n </div>\n\n {/* Main Content */}\n <div\n className=\"flex-1 bg-secondary flex flex-col\"\n style={{\n minWidth: 0,\n width: `calc(100% - ${SIDEBAR_WIDTH}px)`,\n }}\n >\n {/* Top Bar - draggable */}\n <div\n className=\"h-min-[50px] py-2 flex flex-col border-b border-b-surface-1 border-b-[0.5px] justify-center text-[13px] mx-[12px] select-none\"\n onMouseDown={handleMouseDown}\n style={{\n userSelect: \"none\",\n WebkitUserSelect: \"none\",\n MozUserSelect: \"none\",\n msUserSelect: \"none\",\n cursor: state.isMaximized ? \"default\" : \"move\",\n }}\n >\n <Typography variant=\"p\" className=\"font-medium text-neutral-500 \">\n {app?.name}\n </Typography>\n <Typography variant=\"p\" className=\"text-neutral-400 text-[11px]\">\n {menu?.items.find((item) => item.isActive)?.title}\n </Typography>\n </div>\n\n {/* Content */}\n {!state.isMinimized && (\n <div\n className=\"h-full w-full overflow-y-auto\"\n style={{\n maxHeight: `${state.windowSize.height - 37}px`,\n }}\n >\n {isValidElement(children) && typeof children.type !== \"string\"\n ? React.cloneElement(children as ReactElement<WindowSizeProps>, {\n windowSize: state.windowSize,\n isAppWindowResizing: state.resizeStart !== null,\n })\n : children}\n </div>\n )}\n </div>\n\n {/* Resize Handle */}\n {isResizable && !state.isMaximized && (\n <div\n className=\"absolute bottom-0 right-0 w-5 h-5 cursor-se-resize\"\n style={{\n borderBottomRightRadius: \"10px\",\n }}\n onMouseDown={handleResizeStart}\n />\n )}\n </div>\n );\n};\n\nexport default WindowWithSideMenu;\n","import React, {\n useReducer,\n useEffect,\n useRef,\n isValidElement,\n ReactElement,\n} from \"react\";\nimport Typography from \"./Typography\";\nimport useShortcutFormatter from \"../hooks/useShortcutFormatter\";\nimport { AppInterface } from \"@/types/appsList\";\nimport { globalKeyboardShortcuts } from \"../utils/constants\";\n\nexport interface WindowSizeProps {\n windowSize: { width: number; height: number };\n isAppWindowResizing: boolean;\n}\n\ninterface WindowWithoutSideMenuProps {\n app: AppInterface;\n children?: React.ReactNode;\n defaultSize?: { width: number; height: number };\n isResizable?: boolean;\n}\n\ninterface State {\n position: { x: number; y: number };\n isDragging: boolean;\n startPosition: { x: number; y: number };\n isMinimized: boolean;\n isMaximized: boolean;\n windowSize: { width: number; height: number };\n resizeStart: { x: number; y: number } | null;\n defaultSize: { width: number; height: number };\n preMaximizeState: {\n position: { x: number; y: number };\n windowSize: { width: number; height: number };\n } | null;\n}\n\ntype Action =\n | { type: \"START_DRAG\"; payload: { x: number; y: number } }\n | { type: \"DRAG\"; payload: { x: number; y: number } }\n | { type: \"STOP_DRAG\" }\n | { type: \"START_RESIZE\"; payload: { x: number; y: number } }\n | { type: \"RESIZE\"; payload: { width: number; height: number } }\n | { type: \"STOP_RESIZE\" }\n | { type: \"TOGGLE_MINIMIZE\"; payload: { width: number; height: number } }\n | { type: \"TOGGLE_MAXIMIZE\"; payload?: { width: number; height: number } }\n | { type: \"SYNC_MINIMIZE_STATE\"; payload: boolean };\n\nconst initialState: State = {\n position: { x: 0, y: 40 },\n isDragging: false,\n startPosition: { x: 0, y: 40 },\n isMinimized: false,\n isMaximized: false,\n windowSize: { width: 300, height: 300 },\n resizeStart: null,\n defaultSize: { width: 300, height: 300 },\n preMaximizeState: null,\n};\n\nconst reducer = (state: State, action: Action): State => {\n switch (action.type) {\n case \"START_DRAG\":\n return { ...state, isDragging: true, startPosition: action.payload };\n case \"DRAG\":\n return { ...state, position: action.payload };\n case \"STOP_DRAG\":\n return { ...state, isDragging: false };\n case \"START_RESIZE\":\n return {\n ...state,\n resizeStart: action.payload,\n };\n case \"RESIZE\":\n return { ...state, windowSize: action.payload };\n case \"STOP_RESIZE\":\n return { ...state, resizeStart: null };\n case \"TOGGLE_MINIMIZE\":\n return {\n ...state,\n isMinimized: !state.isMinimized,\n windowSize: {\n width: action.payload.width,\n height: state.isMinimized ? action.payload.height : 33,\n },\n };\n case \"SYNC_MINIMIZE_STATE\":\n return {\n ...state,\n isMinimized: action.payload,\n windowSize: action.payload\n ? { width: state.windowSize.width, height: 33 }\n : { width: state.windowSize.width, height: state.defaultSize.height },\n };\n case \"TOGGLE_MAXIMIZE\":\n if (state.isMaximized) {\n return {\n ...state,\n isMaximized: false,\n windowSize: state.preMaximizeState?.windowSize || state.defaultSize,\n position: state.preMaximizeState?.position || { x: 0, y: 40 },\n preMaximizeState: null,\n };\n }\n return {\n ...state,\n isMaximized: true,\n preMaximizeState: {\n position: state.position,\n windowSize: state.windowSize,\n },\n windowSize: action.payload || {\n width: window.innerWidth,\n height: window.innerHeight,\n },\n position: state.position,\n };\n default:\n return state;\n }\n};\n\nconst WindowWithoutSideMenu: React.FC<WindowWithoutSideMenuProps> = ({\n app,\n children,\n defaultSize = { width: 300, height: 300 },\n isResizable = true,\n}) => {\n const {\n formatKeys,\n addShortcutListener,\n removeShortcutListener,\n getShortcutByCommand,\n } = useShortcutFormatter({ globalKeyboardShortcuts });\n\n const [state, dispatch] = useReducer(reducer, {\n ...initialState,\n windowSize: app.windowSize.windowSize ?? defaultSize,\n defaultSize: app.windowSize.windowSize ?? defaultSize,\n });\n\n const windowRef = useRef<HTMLDivElement>(null);\n\n // Sync local minimize state from the app model passed from the parent\n useEffect(() => {\n if (app.isMinimize !== state.isMinimized) {\n dispatch({ type: \"SYNC_MINIMIZE_STATE\", payload: app.isMinimize });\n }\n }, [app.isMinimize, state.isMinimized]);\n\n // Drag logic\n const handleMouseDown = (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => {\n if (state.isMaximized) return;\n dispatch({\n type: \"START_DRAG\",\n payload: {\n x: e.clientX - state.position.x,\n y: e.clientY - state.position.y,\n },\n });\n };\n\n const handleMouseMove = (e: MouseEvent) => {\n if (state.isDragging) {\n const newX = e.clientX - state.startPosition.x;\n const newY = e.clientY - state.startPosition.y;\n\n const boundedX = Math.max(\n 0,\n Math.min(newX, window.innerWidth - state.windowSize.width),\n );\n const boundedY = Math.max(\n 0,\n Math.min(newY, window.innerHeight - state.windowSize.height),\n );\n\n dispatch({ type: \"DRAG\", payload: { x: boundedX, y: boundedY } });\n }\n\n if (\n state.resizeStart &&\n isResizable &&\n app.windowSize.isAppWindowResizing\n ) {\n // Calculate new width and height based on mouse movement\n let newWidth =\n state.windowSize.width + (e.clientX - (state.resizeStart?.x ?? 0));\n let newHeight =\n state.windowSize.height + (e.clientY - (state.resizeStart?.y ?? 0));\n\n // Clamp to minimum size\n newWidth = Math.max(state.defaultSize.width, newWidth);\n newHeight = Math.max(state.defaultSize.height, newHeight);\n\n // Clamp to viewport\n const maxWidth = window.innerWidth - state.position.x;\n const maxHeight = window.innerHeight - state.position.y;\n newWidth = Math.min(newWidth, maxWidth);\n newHeight = Math.min(newHeight, maxHeight);\n\n dispatch({\n type: \"RESIZE\",\n payload: {\n width: newWidth,\n height: newHeight,\n },\n });\n }\n };\n\n const handleMouseUp = () => {\n if (state.isDragging) dispatch({ type: \"STOP_DRAG\" });\n if (state.resizeStart) dispatch({ type: \"STOP_RESIZE\" });\n };\n\n const handleResizeStart = (\n e: React.MouseEvent<HTMLDivElement, MouseEvent>,\n ) => {\n if (!isResizable && !app.windowSize.isAppWindowResizing) return;\n e.stopPropagation();\n // Prevent text selection while resizing\n document.body.style.userSelect = \"none\";\n dispatch({ type: \"START_RESIZE\", payload: { x: e.clientX, y: e.clientY } });\n };\n\n useEffect(() => {\n if (state.isDragging || state.resizeStart) {\n window.addEventListener(\"mousemove\", handleMouseMove);\n window.addEventListener(\"mouseup\", handleMouseUp);\n }\n\n return () => {\n window.removeEventListener(\"mousemove\", handleMouseMove);\n window.removeEventListener(\"mouseup\", handleMouseUp);\n // Restore user-select after resizing\n document.body.style.userSelect = \"\";\n };\n }, [state.isDragging, state.resizeStart]);\n\n useEffect(() => {\n if (windowRef.current) {\n windowRef.current.addEventListener(\"click\", () => {\n if (app?.callback) {\n app?.callback(\"CLICKED\");\n }\n });\n }\n }, [app?.slug, windowRef]);\n\n useEffect(() => {\n const handleExitApp = () => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n };\n addShortcutListener(\"exit_app\", handleExitApp);\n return () => {\n removeShortcutListener(\"exit_app\", handleExitApp);\n };\n }, [app?.slug, app.isActive]);\n\n useEffect(() => {\n const handleMinimize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }\n };\n addShortcutListener(\"minimize_app\", handleMinimize);\n return () => {\n removeShortcutListener(\"minimize_app\", handleMinimize);\n };\n }, [app?.slug, app.isActive, state.isMinimized, state.windowSize]);\n\n useEffect(() => {\n const handleMaximize = () => {\n if (app?.slug && app.isActive) {\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }\n };\n addShortcutListener(\"maximize_app\", handleMaximize);\n return () => {\n removeShortcutListener(\"maximize_app\", handleMaximize);\n };\n }, [app?.slug, app.isActive]);\n\n if (state.isMinimized) {\n return null;\n }\n\n return (\n <div\n ref={windowRef}\n className=\"window-drop-shadow rounded-[10px]\"\n style={{\n width: `${state.windowSize.width}px`,\n height: `${state.windowSize.height}px`,\n transform: state.isMaximized\n ? undefined\n : `translate(${state.position.x}px, ${state.position.y - 37}px)`,\n overflow: state.isMinimized ? \"hidden\" : \"auto\",\n position: \"absolute\",\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n zIndex: state.isDragging ? 3 : app?.isActive ? 2 : 1,\n }}\n >\n <div\n className=\"mx-auto overflow-hidden h-full w-full\"\n style={{\n minWidth: `${state.defaultSize.width}px`,\n minHeight: `${state.defaultSize.height}px`,\n position: \"relative\",\n }}\n >\n <div\n className=\"relative flex items-center bg-primary h-[35px] select-none\"\n onMouseDown={handleMouseDown}\n style={{ cursor: state.isMaximized ? \"default\" : \"move\" }}\n >\n {/* Left Control Buttons */}\n <div className=\"flex items-center gap-[8px] pl-[10px]\">\n <button\n className=\"w-[12px] h-[12px] bg-[#FF6157] rounded-full\"\n onClick={() => {\n if (app?.callback) {\n app?.callback(\"CLOSE_APP\");\n }\n }}\n title={`Close ${formatKeys(getShortcutByCommand(\"exit_app\"))}`}\n style={{ outline: \"none\", border: \"none\" }}\n />\n <button\n className=\"w-[12px] h-[12px] bg-[#FFC12F] rounded-full\"\n onClick={() => {\n dispatch({\n type: \"TOGGLE_MINIMIZE\",\n payload: state.windowSize,\n });\n if (app?.callback) {\n app?.callback(\"MINIMIZE_APP\");\n }\n }}\n title={\n state.isMinimized\n ? \"Restore\"\n : `Minimize ${formatKeys(\n getShortcutByCommand(\"minimize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n />\n {isResizable && app.windowSize.isAppWindowResizing && (\n <button\n className=\"w-[12px] h-[12px] bg-[#2ACB42] rounded-full\"\n onClick={() => {\n // playSound(\"click\");\n dispatch({\n type: \"TOGGLE_MAXIMIZE\",\n payload: {\n width: window.innerWidth,\n height: window.innerHeight - 37,\n },\n });\n }}\n title={\n state.isMaximized\n ? \"Restore\"\n : `Maximize ${formatKeys(\n getShortcutByCommand(\"maximize_app\"),\n )}`\n }\n style={{ outline: \"none\", border: \"none\" }}\n />\n )}\n </div>\n\n {/* Title */}\n <div className=\"absolute left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2\">\n <Typography variant=\"p\" className=\"text-neutral-500 text-[15px]\">\n {app.name}\n </Typography>\n </div>\n </div>\n\n {!state.isMinimized && (\n <div\n className=\"h-full w-full bg-secondary\"\n style={{\n maxHeight: `${state.windowSize.height - 37}px`,\n }}\n >\n {isValidElement(children) && typeof children.type !== \"string\"\n ? React.cloneElement(children as ReactElement<WindowSizeProps>, {\n windowSize: state.windowSize,\n isAppWindowResizing: state.resizeStart !== null,\n })\n : children}\n </div>\n )}\n\n {/* Resize Handle */}\n {isResizable && !state.isMaximized && (\n <div\n className=\"absolute bottom-0 right-0 w-5 h-5 cursor-se-resize\"\n style={{\n borderBottomRightRadius: \"10px\",\n }}\n onMouseDown={handleResizeStart}\n />\n )}\n </div>\n </div>\n );\n};\n\nexport default WindowWithoutSideMenu;\n","import { cn } from \"../utils/helpers\"\nimport * as React from \"react\"\n\n\nconst Table = React.forwardRef<\n HTMLTableElement,\n React.HTMLAttributes<HTMLTableElement>\n>(({ className, ...props }, ref) => (\n <div className=\"relative w-full overflow-auto\">\n <table\n ref={ref}\n className={cn(\"w-full caption-bottom text-[13px]\", className)}\n {...props}\n />\n </div>\n))\nTable.displayName = \"Table\"\n\nconst TableHeader = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <thead ref={ref} className={cn(\"[&_tr]:border-b text-neutral-400 bg-surface-2\", className)} {...props} />\n))\nTableHeader.displayName = \"TableHeader\"\n\nconst TableBody = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tbody\n ref={ref}\n className={cn(\"[&_tr:last-child]:border-0 text-neutral-300\", className)}\n {...props}\n />\n))\nTableBody.displayName = \"TableBody\"\n\nconst TableFooter = React.forwardRef<\n HTMLTableSectionElement,\n React.HTMLAttributes<HTMLTableSectionElement>\n>(({ className, ...props }, ref) => (\n <tfoot\n ref={ref}\n className={cn(\n \"border-t bg-muted/50 font-medium [&>tr]:last:border-b-0\",\n className\n )}\n {...props}\n />\n))\nTableFooter.displayName = \"TableFooter\"\n\nconst TableRow = React.forwardRef<\n HTMLTableRowElement,\n React.HTMLAttributes<HTMLTableRowElement>\n>(({ className, onClick, ...props }, ref) => {\n const isInteractive = typeof onClick === \"function\";\n\n return (\n <tr\n ref={ref}\n onClick={onClick}\n className={cn(\n \"border-t border-surface-1 group hover:bg-surface-4 hover:text-neutral-500\",\n isInteractive ? \"cursor-pointer\" : \"cursor-default\",\n className\n )}\n {...props}\n />\n );\n})\nTableRow.displayName = \"TableRow\"\n\nconst TableHead = React.forwardRef<\n HTMLTableCellElement,\n React.ThHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <th\n ref={ref}\n className={cn(\n \"py-[4px] px-[8px] font-medium\",\n className\n )}\n {...props}\n />\n))\nTableHead.displayName = \"TableHead\"\n\nconst TableCell = React.forwardRef<\n HTMLTableCellElement,\n React.TdHTMLAttributes<HTMLTableCellElement>\n>(({ className, ...props }, ref) => (\n <td\n ref={ref}\n className={cn(\"py-[6px] px-[8px]\", className)}\n {...props}\n />\n))\nTableCell.displayName = \"TableCell\"\n\nconst TableCaption = React.forwardRef<\n HTMLTableCaptionElement,\n React.HTMLAttributes<HTMLTableCaptionElement>\n>(({ className, ...props }, ref) => (\n <caption\n ref={ref}\n className={cn(\"mt-4 text-sm text-muted-foreground\", className)}\n {...props}\n />\n))\nTableCaption.displayName = \"TableCaption\"\n\nexport {\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption,\n}","import { useMemo } from \"react\";\n\nconst useGridClasses = (\n windowSize: { width: number; height: number },\n gridRules: Record<string, Record<string, Record<string, string>>>\n) => {\n const deviceType: \"mobile\" | \"tablet\" | \"desktop\" = useMemo(() => {\n if (windowSize.width <= 640) return \"mobile\"; // For mobile (width <= 640px)\n if (windowSize.width <= 1024) return \"tablet\"; // For tablet (width <= 1024px)\n return \"desktop\"; // For desktop (width > 1024px)\n }, [windowSize]);\n\n const gridClasses: Record<string, string> = useMemo(() => {\n const classes: Record<string, string> = {};\n for (const element in gridRules) {\n const classRules = gridRules[element] ?? {};\n const colSpan = classRules[\"col-span\"]?.[deviceType] ?? \"12\";\n classes[element] = `col-span-${deviceType}-${colSpan}`;\n }\n return classes;\n }, [deviceType, gridRules]);\n\n return { gridClasses, deviceType };\n};\n\nexport default useGridClasses;\n","import { useEffect, useState } from \"react\";\n\n// Helper function to detect device type and orientation\nexport const useDeviceSupport = () => {\n const [isSupported, setIsSupported] = useState(true);\n\n useEffect(() => {\n function checkSupport() {\n // Get user agent and screen info\n const ua =\n typeof window !== \"undefined\" ? window.navigator.userAgent : \"\";\n const width = typeof window !== \"undefined\" ? window.innerWidth : 1920;\n const height = typeof window !== \"undefined\" ? window.innerHeight : 1080;\n const isTouch =\n typeof window !== \"undefined\" ? \"ontouchstart\" in window : false;\n\n // Mobile detection (iOS/Android phones)\n const isMobile = /Mobi|Android|iPhone|iPod/.test(ua) && width <= 767;\n\n // Tablet detection (portrait/landscape)\n const isTablet =\n (/iPad|Tablet|Android/.test(ua) && !/Mobile/.test(ua)) ||\n (isTouch && width >= 600 && width <= 1024);\n // Tablet portrait: width < height, width <= 1024, height > width\n const isTabletPortrait = isTablet && width < height;\n // Tablet landscape: width > height, width <= 1366, width >= 1024\n const isTabletLandscape =\n isTablet && width > height && width >= 1024 && width <= 1366;\n\n // Laptop: width >= 1024 (landscape), not touch or not tablet\n const isLaptop =\n width >= 1024 && !isMobile && (!isTablet || isTabletLandscape);\n\n // Support logic:\n // - Mobile: Not supported\n // - Tablet portrait: Not supported\n // - Tablet landscape: Supported\n // - Laptop: Supported\n\n if (isMobile) {\n setIsSupported(false);\n } else if (isTabletPortrait) {\n setIsSupported(false);\n } else if (isTabletLandscape) {\n setIsSupported(true);\n } else if (isLaptop) {\n setIsSupported(true);\n } else {\n // Default: allow desktop\n setIsSupported(true);\n }\n }\n\n checkSupport();\n window.addEventListener(\"resize\", checkSupport);\n return () => window.removeEventListener(\"resize\", checkSupport);\n }, []);\n\n return isSupported;\n};\n","import { useCallback } from \"react\";\nimport clickTone from \"../assets/sounds/click-tone.wav\";\nimport errorTone from \"../assets/sounds/error-tone.wav\";\nimport notificationTone from \"../assets/sounds/notification-tone.wav\";\nimport successTone from \"../assets/sounds/success-tone.wav\";\nimport swipeTone from \"../assets/sounds/swipe-tone.wav\";\n\nexport type SoundType =\n | \"click\"\n | \"error\"\n | \"success\"\n | \"alert\"\n | \"notification\"\n | \"swipe\";\n\nconst soundMap: Record<SoundType, string> = {\n click: clickTone,\n error: errorTone,\n success: successTone,\n alert: errorTone,\n notification: notificationTone,\n swipe: swipeTone,\n};\n\nconst DEFAULT_SOUND_TYPE: SoundType = \"click\";\nconst audioBufferCache = new Map<string, Promise<AudioBuffer>>();\n\nlet sharedAudioContext: AudioContext | null = null;\n\nconst isSoundType = (type: string): type is SoundType => {\n return type in soundMap;\n};\n\nexport const useSound = () => {\n const getAudioContext = () => {\n if (typeof window === \"undefined\") {\n return null;\n }\n\n const AudioContextCtor = window.AudioContext ?? (window as Window & { webkitAudioContext?: typeof AudioContext }).webkitAudioContext;\n\n if (!AudioContextCtor) {\n return null;\n }\n\n if (!sharedAudioContext || sharedAudioContext.state === \"closed\") {\n sharedAudioContext = new AudioContextCtor();\n }\n\n return sharedAudioContext;\n };\n\n const loadAudioBuffer = async (source: string) => {\n const cached = audioBufferCache.get(source);\n\n if (cached) {\n return cached;\n }\n\n const promise = (async () => {\n if (typeof fetch !== \"function\") {\n throw new Error(\"Fetch is not available\");\n }\n\n const response = await fetch(source);\n\n if (!response.ok) {\n throw new Error(`Failed to load sound source: ${response.status} ${response.statusText}`);\n }\n\n const context = getAudioContext();\n\n if (!context) {\n throw new Error(\"Web Audio API is not available\");\n }\n\n const arrayBuffer = await response.arrayBuffer();\n return await context.decodeAudioData(arrayBuffer.slice(0));\n })().catch((error) => {\n audioBufferCache.delete(source);\n throw error;\n });\n\n audioBufferCache.set(source, promise);\n return promise;\n };\n\n const playWithAudioBuffer = async (buffer: AudioBuffer) => {\n const context = getAudioContext();\n\n if (!context) {\n throw new Error(\"Web Audio API is not available\");\n }\n\n if (context.state === \"suspended\") {\n await context.resume();\n }\n\n await new Promise<void>((resolve, reject) => {\n const sourceNode = context.createBufferSource();\n sourceNode.buffer = buffer;\n sourceNode.connect(context.destination);\n sourceNode.onended = () => resolve();\n\n try {\n sourceNode.start(0);\n } catch (error) {\n reject(error);\n }\n });\n };\n\n const playWithAudioElement = async (source: string) => {\n const audio = new Audio(source);\n audio.preload = \"auto\";\n audio.currentTime = 0;\n await audio.play();\n };\n\n const playSound = useCallback((type: SoundType | string) => {\n if (typeof window === \"undefined\") {\n return;\n }\n\n const requestedType = isSoundType(type)\n ? type\n : DEFAULT_SOUND_TYPE;\n\n const src = soundMap[requestedType];\n\n if (!src) {\n console.error(`Sound playback failed: no source found for \"${requestedType}\"`);\n return;\n }\n\n void (async () => {\n let lastError: unknown;\n\n if (getAudioContext()) {\n try {\n const buffer = await loadAudioBuffer(src);\n await playWithAudioBuffer(buffer);\n return;\n } catch (error) {\n lastError = error;\n }\n }\n\n try {\n await playWithAudioElement(src);\n return;\n } catch (error) {\n lastError = error;\n }\n\n console.error(`Sound playback failed for \"${requestedType}\":`, lastError);\n })();\n }, []);\n\n return {\n playSound,\n };\n};","export const getFormattedDate = (dateInput: string): string => {\n const timestamp = Number(dateInput);\n if (isNaN(timestamp)) return \"Invalid date\";\n\n const date = new Date(timestamp);\n const formatter = new Intl.DateTimeFormat(\"en-GB\", {\n day: \"2-digit\",\n month: \"short\",\n year: \"numeric\",\n });\n\n return formatter.format(date);\n};\n"]}