@attabot/complaint-app 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +149 -0
- package/dist/complaint-app.js +2095 -0
- package/dist/complaint-app.js.map +1 -0
- package/dist/complaint-app.umd.js +2 -0
- package/dist/complaint-app.umd.js.map +1 -0
- package/dist/index.d.ts +175 -0
- package/dist/style.css +1 -0
- package/package.json +60 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"complaint-app.js","sources":["../src/utils/api.js","../src/context/ApiContext.jsx","../src/theme/defaultTheme.js","../src/theme/resolveTheme.js","../src/context/ThemeContext.jsx","../src/components/atoms/Button.jsx","../src/components/atoms/PlusIcon.jsx","../src/components/atoms/Typography.jsx","../src/components/organisms/PageHeader.jsx","../src/components/atoms/StatusBadge.jsx","../src/components/molecules/CardHeader.jsx","../src/components/atoms/ChevronRightIcon.jsx","../src/components/molecules/CardFooter.jsx","../src/components/molecules/DataPoint.jsx","../src/components/atoms/Divider.jsx","../src/components/organisms/SystemCard.jsx","../src/components/organisms/SystemCardGrid.jsx","../src/components/atoms/Input.jsx","../src/components/atoms/SearchIcon.jsx","../src/components/molecules/SearchBar.jsx","../src/components/atoms/Loading.jsx","../src/data/demoSystems.js","../src/pages/ComplaintManagementPage.jsx","../src/components/organisms/Stepper.jsx","../src/context/SettingsWizardContext.jsx","../src/data/settingsSteps.js","../src/components/atoms/LayersIcon.jsx","../src/components/molecules/SettingsCardHeader.jsx","../src/components/organisms/SettingsCard.jsx","../src/components/atoms/FieldLabel.jsx","../src/components/atoms/ChevronDownIcon.jsx","../src/components/atoms/Select.jsx","../src/components/atoms/Textarea.jsx","../src/components/molecules/FormField.jsx","../src/components/atoms/Toggle.jsx","../src/components/molecules/ToggleField.jsx","../src/components/atoms/CloseIcon.jsx","../src/components/atoms/Tag.jsx","../src/components/molecules/RoleMultiSelect.jsx","../src/components/organisms/settings-steps/CategoryTypeStep.jsx","../src/components/organisms/settings-steps/DepartmentsStep.jsx","../src/components/atoms/Chip.jsx","../src/components/atoms/Radio.jsx","../src/components/atoms/DragHandleIcon.jsx","../src/components/organisms/settings-steps/PrioritiesStep.jsx","../src/components/organisms/settings-steps/WorkflowStep.jsx","../src/components/atoms/TrashIcon.jsx","../src/components/organisms/settings-steps/FormFieldsStep.jsx","../src/components/organisms/settings-steps/ReviewPublishStep.jsx","../src/pages/ComplaintSettingsPage.jsx","../src/ComplaintApp.jsx","../src/theme/tokens.js"],"sourcesContent":["import axios from 'axios';\nimport Cookies from 'js-cookie';\n\nlet BASE_URL_VALUE = '';\n\ntry {\n if (typeof import.meta !== 'undefined' && import.meta.env?.VITE_API_URL) {\n BASE_URL_VALUE = import.meta.env.VITE_API_URL;\n } else {\n // eslint-disable-next-line no-undef\n const nodeProcess = typeof process !== 'undefined' ? process : null;\n if (nodeProcess?.env?.VITE_API_URL) {\n BASE_URL_VALUE = nodeProcess.env.VITE_API_URL;\n }\n }\n} catch {\n // Ignore env resolution errors in non-Vite hosts\n}\n\n/** Runtime override for API host; updates the shared axios instance baseURL. */\nexport const setBaseUrl = (url) => {\n BASE_URL_VALUE = url || '';\n instance.defaults.baseURL = BASE_URL_VALUE;\n};\n\nexport const setAuthToken = (token) => {\n if (token) {\n Cookies.set('token', token, { secure: true, sameSite: 'Strict' });\n } else {\n Cookies.remove('token');\n }\n};\n\nconst getAccessToken = () => Cookies.get('token') || null;\n\nconst instance = axios.create({\n baseURL: BASE_URL_VALUE,\n transformRequest: [\n function (data, headers) {\n const accessToken = getAccessToken();\n if (accessToken) {\n headers.Authorization = `Bearer ${accessToken}`;\n } else {\n delete headers.Authorization;\n }\n if (data === undefined || data === null) return data;\n if (typeof data === 'string') return data;\n return JSON.stringify(data);\n },\n ],\n headers: {\n Accept: 'application/json',\n 'Content-Type': 'application/json',\n },\n});\n\nlet isRefreshing = false;\nlet refreshTokenPromise = null;\n\ninstance.interceptors.response.use(\n (response) => response,\n async (error) => {\n const originalRequest = error.config;\n const response = error.response;\n\n if (response && (response.status === 401 || response.status === 402)) {\n const refreshToken = Cookies.get('refreshToken');\n\n if (refreshToken) {\n try {\n if (!isRefreshing) {\n isRefreshing = true;\n refreshTokenPromise = axios.post(\n `${BASE_URL_VALUE}/api/v1/auth/refresh`,\n {},\n {\n headers: {\n Authorization: `Bearer ${refreshToken}`,\n },\n },\n );\n }\n\n const refreshResponse = await refreshTokenPromise;\n const { token: newToken, refreshToken: newRefreshToken } =\n refreshResponse.data;\n\n Cookies.set('token', newToken, { secure: true, sameSite: 'Strict' });\n if (newRefreshToken) {\n Cookies.set('refreshToken', newRefreshToken);\n }\n\n originalRequest.headers.Authorization = `Bearer ${newToken}`;\n return instance(originalRequest);\n } catch {\n Cookies.remove('token');\n Cookies.remove('refreshToken');\n } finally {\n isRefreshing = false;\n refreshTokenPromise = null;\n }\n }\n }\n\n return Promise.reject(error);\n },\n);\n\n/** Shared axios client used by package pages/hooks. Parent sets base URL + token via ApiProvider. */\nexport default instance;\n","import React, { createContext, useEffect } from 'react';\nimport { setBaseUrl, setAuthToken } from '../utils/api';\n\nconst ApiContext = createContext(null);\n\n/**\n * Provides runtime API base URL + auth token from the parent app.\n * All package requests go through `utils/api` (axios) so the parent owns auth.\n */\nexport const ApiProvider = ({ children, apiUrl, authToken }) => {\n useEffect(() => {\n if (apiUrl) {\n setBaseUrl(apiUrl);\n }\n }, [apiUrl]);\n\n useEffect(() => {\n setAuthToken(authToken || null);\n }, [authToken]);\n\n return (\n <ApiContext.Provider value={{ apiUrl, authToken }}>\n {children}\n </ApiContext.Provider>\n );\n};\n\nexport default ApiContext;\n","/**\n * Default light theme tokens.\n * Parent apps can import, extend, or replace via the `theme` prop.\n */\nexport const lightTheme = {\n mode: 'light',\n colors: {\n primary: '#2D64B8',\n primaryHover: '#2557A3',\n text: '#111827',\n textSecondary: '#6B7280',\n textMuted: '#9CA3AF',\n border: '#E5E7EB',\n borderLight: '#F3F4F6',\n background: '#F5F5F5',\n surface: '#FFFFFF',\n white: '#FFFFFF',\n onPrimary: '#FFFFFF',\n activeBg: '#ECFDF5',\n activeBorder: '#A7F3D0',\n activeText: '#059669',\n inactiveBg: '#F3F4F6',\n inactiveBorder: '#D1D5DB',\n inactiveText: '#6B7280',\n link: '#2D64B8',\n divider: '#E5E7EB',\n accentBorder: '#C5D7F0',\n accentBg: '#EEF4FB',\n stepDone: '#D6E4F7',\n success: '#22C55E',\n danger: '#EF4444',\n secondaryBtn: '#D1D5DB',\n secondaryBtnHover: '#C4C9D1',\n inputBg: '#FFFFFF',\n tableHeadBg: '#EEF4FB',\n sidebarBg: '#FAFBFD',\n overlay: 'rgba(16, 24, 40, 0.06)',\n },\n radii: {\n sm: '6px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n pill: '999px',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n xxl: '32px',\n },\n typography: {\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n h1Size: '28px',\n h2Size: '16px',\n bodySize: '14px',\n labelSize: '13px',\n valueSize: '22px',\n smallSize: '13px',\n },\n shadow: {\n card: '0 1px 2px rgba(16, 24, 40, 0.04)',\n settings: '0 1px 3px rgba(16, 24, 40, 0.06)',\n },\n};\n\n/**\n * Default dark theme tokens.\n */\nexport const darkTheme = {\n mode: 'dark',\n colors: {\n primary: '#5B8DEF',\n primaryHover: '#7BA3F3',\n text: '#F3F4F6',\n textSecondary: '#A1A1AA',\n textMuted: '#71717A',\n border: '#3F3F46',\n borderLight: '#27272A',\n background: '#0F1115',\n surface: '#18181B',\n white: '#FFFFFF',\n onPrimary: '#FFFFFF',\n activeBg: '#052E1C',\n activeBorder: '#166534',\n activeText: '#4ADE80',\n inactiveBg: '#27272A',\n inactiveBorder: '#3F3F46',\n inactiveText: '#A1A1AA',\n link: '#7BA3F3',\n divider: '#3F3F46',\n accentBorder: '#2A3A55',\n accentBg: '#1A2333',\n stepDone: '#1E3A5F',\n success: '#22C55E',\n danger: '#F87171',\n secondaryBtn: '#3F3F46',\n secondaryBtnHover: '#52525B',\n inputBg: '#18181B',\n tableHeadBg: '#1A2333',\n sidebarBg: '#12141A',\n overlay: 'rgba(0, 0, 0, 0.35)',\n },\n radii: {\n sm: '6px',\n md: '8px',\n lg: '12px',\n xl: '16px',\n pill: '999px',\n },\n spacing: {\n xs: '4px',\n sm: '8px',\n md: '12px',\n lg: '16px',\n xl: '24px',\n xxl: '32px',\n },\n typography: {\n fontFamily:\n '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif',\n h1Size: '28px',\n h2Size: '16px',\n bodySize: '14px',\n labelSize: '13px',\n valueSize: '22px',\n smallSize: '13px',\n },\n shadow: {\n card: '0 1px 2px rgba(0, 0, 0, 0.35)',\n settings: '0 1px 3px rgba(0, 0, 0, 0.4)',\n },\n};\n\n/** Bundled theme file shape parents can mirror / extend. */\nexport const defaultThemeFile = {\n light: lightTheme,\n dark: darkTheme,\n};\n","import { lightTheme, darkTheme } from './defaultTheme';\n\nfunction isObject(value) {\n return value != null && typeof value === 'object' && !Array.isArray(value);\n}\n\n/** Deep-merge plain objects (arrays / primitives replaced). */\nexport function deepMerge(base, override) {\n if (!isObject(override)) return base;\n const result = { ...base };\n Object.keys(override).forEach((key) => {\n const next = override[key];\n if (isObject(next) && isObject(base[key])) {\n result[key] = deepMerge(base[key], next);\n } else if (next !== undefined) {\n result[key] = next;\n }\n });\n return result;\n}\n\n/**\n * Normalize parent `theme` prop into { light, dark } packs.\n *\n * Supported shapes:\n * 1. Full theme file: `{ light: {...}, dark: {...} }`\n * 2. Flat tokens: `{ colors, radii, ... }` → applied to both modes (merged over defaults)\n * 3. Mode-specific partial: `{ light: { colors: { primary } } }`\n */\nexport function normalizeThemeFile(themeProp) {\n if (!themeProp || !isObject(themeProp)) {\n return { light: lightTheme, dark: darkTheme };\n }\n\n const hasModes = isObject(themeProp.light) || isObject(themeProp.dark);\n\n if (hasModes) {\n return {\n light: deepMerge(lightTheme, themeProp.light || {}),\n dark: deepMerge(darkTheme, themeProp.dark || {}),\n };\n }\n\n // Flat token object — treat as overrides for both modes\n return {\n light: deepMerge(lightTheme, themeProp),\n dark: deepMerge(darkTheme, themeProp),\n };\n}\n\n/**\n * Pick active theme for current mode and ensure mode flag is set.\n */\nexport function resolveActiveTheme(themeFile, darkMode = false) {\n const pack = normalizeThemeFile(themeFile);\n const active = darkMode ? pack.dark : pack.light;\n return {\n ...active,\n mode: darkMode ? 'dark' : 'light',\n __pack: pack,\n };\n}\n\n/** camelCase / nested keys → CSS custom property map for .ca-root */\nconst COLOR_VAR_MAP = {\n primary: '--ca-primary',\n primaryHover: '--ca-primary-hover',\n text: '--ca-text',\n textSecondary: '--ca-text-secondary',\n textMuted: '--ca-text-muted',\n border: '--ca-border',\n borderLight: '--ca-border-light',\n background: '--ca-bg',\n surface: '--ca-surface',\n white: '--ca-white',\n onPrimary: '--ca-on-primary',\n activeBg: '--ca-active-bg',\n activeBorder: '--ca-active-border',\n activeText: '--ca-active-text',\n inactiveBg: '--ca-inactive-bg',\n inactiveBorder: '--ca-inactive-border',\n inactiveText: '--ca-inactive-text',\n link: '--ca-link',\n divider: '--ca-divider',\n accentBorder: '--ca-accent-border',\n accentBg: '--ca-accent-bg',\n stepDone: '--ca-step-done',\n success: '--ca-success',\n danger: '--ca-danger',\n secondaryBtn: '--ca-secondary-btn',\n secondaryBtnHover: '--ca-secondary-btn-hover',\n inputBg: '--ca-input-bg',\n tableHeadBg: '--ca-table-head-bg',\n sidebarBg: '--ca-sidebar-bg',\n overlay: '--ca-overlay',\n};\n\nconst RADIUS_VAR_MAP = {\n sm: '--ca-radius-sm',\n md: '--ca-radius-md',\n lg: '--ca-radius-lg',\n xl: '--ca-radius-xl',\n pill: '--ca-radius-pill',\n};\n\nconst TYPE_VAR_MAP = {\n fontFamily: '--ca-font',\n h1Size: '--ca-h1-size',\n h2Size: '--ca-h2-size',\n bodySize: '--ca-body-size',\n labelSize: '--ca-label-size',\n valueSize: '--ca-value-size',\n smallSize: '--ca-small-size',\n};\n\nconst SHADOW_VAR_MAP = {\n card: '--ca-shadow-card',\n settings: '--ca-shadow-settings',\n};\n\n/**\n * Convert a resolved theme object into inline CSS variable styles.\n */\nexport function themeToCssVars(theme) {\n const vars = {};\n\n if (theme?.colors) {\n Object.entries(COLOR_VAR_MAP).forEach(([key, cssVar]) => {\n if (theme.colors[key] != null) vars[cssVar] = theme.colors[key];\n });\n }\n\n if (theme?.radii) {\n Object.entries(RADIUS_VAR_MAP).forEach(([key, cssVar]) => {\n if (theme.radii[key] != null) vars[cssVar] = theme.radii[key];\n });\n }\n\n if (theme?.typography) {\n Object.entries(TYPE_VAR_MAP).forEach(([key, cssVar]) => {\n if (theme.typography[key] != null) vars[cssVar] = theme.typography[key];\n });\n }\n\n if (theme?.shadow) {\n Object.entries(SHADOW_VAR_MAP).forEach(([key, cssVar]) => {\n if (theme.shadow[key] != null) vars[cssVar] = theme.shadow[key];\n });\n }\n\n // Ensure primary button text stays readable\n if (vars['--ca-on-primary'] && !vars['--ca-white']) {\n vars['--ca-white'] = vars['--ca-on-primary'];\n }\n\n return vars;\n}\n","import React, { createContext, useContext, useMemo } from 'react';\nimport { resolveActiveTheme, themeToCssVars } from '../theme/resolveTheme';\nimport { defaultThemeFile } from '../theme/defaultTheme';\n\nconst ThemeContext = createContext({\n darkMode: false,\n theme: null,\n themeFile: defaultThemeFile,\n cssVars: {},\n});\n\n/**\n * Applies parent theme + darkMode to the whole package via CSS variables on `.ca-root`.\n *\n * @param {object} [theme] - Static theme file / tokens from parent\n * @param {boolean} [darkMode=false] - Parent-controlled dark mode flag\n */\nexport function ThemeProvider({ theme, darkMode = false, children }) {\n const value = useMemo(() => {\n const active = resolveActiveTheme(theme, Boolean(darkMode));\n const cssVars = themeToCssVars(active);\n return {\n darkMode: Boolean(darkMode),\n theme: active,\n themeFile: active.__pack,\n cssVars,\n mode: active.mode,\n };\n }, [theme, darkMode]);\n\n return (\n <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>\n );\n}\n\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useTheme() {\n return useContext(ThemeContext);\n}\n\nexport default ThemeContext;\n","import React from 'react';\n\n/**\n * Button atom — primary | secondary | outline | ghost | link.\n */\nexport default function Button({\n children,\n variant = 'primary',\n size = 'md',\n startIcon,\n endIcon,\n className = '',\n type = 'button',\n disabled = false,\n onClick,\n ...props\n}) {\n const classes = [\n 'ca-btn',\n `ca-btn--${variant}`,\n size === 'sm' ? 'ca-btn--sm' : '',\n size === 'lg' ? 'ca-btn--lg' : '',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n type={type}\n className={classes}\n disabled={disabled}\n onClick={onClick}\n {...props}\n >\n {startIcon ? <span className=\"ca-btn__icon\">{startIcon}</span> : null}\n {children}\n {endIcon ? <span className=\"ca-btn__icon\">{endIcon}</span> : null}\n </button>\n );\n}\n","import React from 'react';\n\n/** Plus icon for create actions. */\nexport default function PlusIcon({ size = 16, color = 'currentColor', ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M12 5v14M5 12h14\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\n\nconst VARIANT_CLASS = {\n h1: 'ca-h1',\n h2: 'ca-h2',\n body: 'ca-body',\n label: 'ca-label',\n value: 'ca-value',\n small: 'ca-small',\n link: 'ca-link',\n};\n\nconst VARIANT_TAG = {\n h1: 'h1',\n h2: 'h2',\n body: 'p',\n label: 'span',\n value: 'span',\n small: 'span',\n link: 'button',\n};\n\n/**\n * Typography atom — shared text styles across the package.\n */\nexport default function Typography({\n variant = 'body',\n as,\n className = '',\n children,\n ...props\n}) {\n const Tag = as || VARIANT_TAG[variant] || 'p';\n const baseClass = VARIANT_CLASS[variant] || VARIANT_CLASS.body;\n\n return (\n <Tag className={`${baseClass} ${className}`.trim()} {...props}>\n {children}\n </Tag>\n );\n}\n\nexport function Heading1(props) {\n return <Typography variant=\"h1\" {...props} />;\n}\n\nexport function Heading2(props) {\n return <Typography variant=\"h2\" {...props} />;\n}\n\nexport function BodyText(props) {\n return <Typography variant=\"body\" {...props} />;\n}\n\nexport function LabelText(props) {\n return <Typography variant=\"label\" {...props} />;\n}\n\nexport function ValueText(props) {\n return <Typography variant=\"value\" {...props} />;\n}\n\nexport function LinkText(props) {\n return <Typography variant=\"link\" type=\"button\" {...props} />;\n}\n","import React from 'react';\nimport Button from '../atoms/Button';\nimport PlusIcon from '../atoms/PlusIcon';\nimport { Heading1, BodyText } from '../atoms/Typography';\n\n/**\n * Page header organism — title, description, primary CTA.\n */\nexport default function PageHeader({\n title = 'Complaint Management',\n description,\n actionLabel = 'Create New Form',\n onAction,\n className = '',\n}) {\n return (\n <header className={`ca-page-header ${className}`.trim()}>\n <div className=\"ca-page-header__text\">\n <Heading1>{title}</Heading1>\n {description ? <BodyText>{description}</BodyText> : null}\n </div>\n <div className=\"ca-page-header__actions\">\n <Button startIcon={<PlusIcon />} onClick={onAction}>\n {actionLabel}\n </Button>\n </div>\n </header>\n );\n}\n","import React from 'react';\n\n/**\n * Pill-style status badge atom.\n * @param {'active' | 'inactive' | string} status\n */\nexport default function StatusBadge({ status = 'inactive', label, className = '' }) {\n const normalized = String(status).toLowerCase();\n const isActive = normalized === 'active';\n const text = label ?? (isActive ? 'Active' : 'Inactive');\n\n return (\n <span\n className={`ca-badge ca-badge--${isActive ? 'active' : 'inactive'} ${className}`.trim()}\n >\n {text}\n </span>\n );\n}\n","import React from 'react';\nimport { Heading2 } from '../atoms/Typography';\nimport StatusBadge from '../atoms/StatusBadge';\n\n/**\n * Card header molecule — system title + status badge.\n */\nexport default function CardHeader({\n title,\n status,\n statusLabel,\n titleAsLink = false,\n onTitleClick,\n className = '',\n}) {\n return (\n <div className={`ca-system-card__header ${className}`.trim()}>\n <div className=\"ca-system-card__title-wrap\">\n {titleAsLink ? (\n <button\n type=\"button\"\n className=\"ca-h2 ca-h2--link\"\n onClick={onTitleClick}\n >\n {title}\n </button>\n ) : (\n <Heading2>{title}</Heading2>\n )}\n </div>\n <StatusBadge status={status} label={statusLabel} />\n </div>\n );\n}\n","import React from 'react';\n\n/** Chevron-right icon (reused pattern from Icons/ChevronRightIcon). */\nexport default function ChevronRightIcon({ size = 16, color = 'currentColor', ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M9 6l6 6-6 6\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport Typography from '../atoms/Typography';\nimport Button from '../atoms/Button';\nimport ChevronRightIcon from '../atoms/ChevronRightIcon';\n\n/**\n * Card footer molecule — \"Updated on…\" text + Configure button.\n */\nexport default function CardFooter({\n updatedOn,\n configureLabel = 'Configure',\n onConfigure,\n className = '',\n}) {\n return (\n <div className={`ca-system-card__footer ${className}`.trim()}>\n <Typography variant=\"small\" as=\"span\">\n {updatedOn ? `Updated on ${updatedOn}` : ''}\n </Typography>\n <Button\n size=\"sm\"\n onClick={onConfigure}\n endIcon={<ChevronRightIcon size={14} color=\"#fff\" />}\n >\n {configureLabel}\n </Button>\n </div>\n );\n}\n","import React from 'react';\nimport { LabelText, ValueText } from '../atoms/Typography';\n\n/**\n * Data point molecule — label above value (e.g. Departments / 03).\n */\nexport default function DataPoint({ label, value, className = '' }) {\n const display =\n value === null || value === undefined\n ? '—'\n : typeof value === 'number'\n ? String(value).padStart(2, '0')\n : value;\n\n return (\n <div className={`ca-data-point ${className}`.trim()}>\n <LabelText>{label}</LabelText>\n <ValueText>{display}</ValueText>\n </div>\n );\n}\n","import React from 'react';\n\n/** Vertical divider used between data points in system cards. */\nexport default function Divider({ className = '' }) {\n return <div className={`ca-divider ${className}`.trim()} role=\"separator\" aria-orientation=\"vertical\" />;\n}\n","import React from 'react';\nimport CardHeader from '../molecules/CardHeader';\nimport CardFooter from '../molecules/CardFooter';\nimport DataPoint from '../molecules/DataPoint';\nimport Divider from '../atoms/Divider';\nimport { LinkText } from '../atoms/Typography';\n\n/**\n * System / template card organism.\n *\n * Props are data-only so the parent app owns API & auth.\n */\nexport default function SystemCard({\n id,\n title,\n status = 'inactive',\n statusLabel,\n description,\n descriptionHref,\n departments,\n workflows,\n fields,\n formsFilled,\n updatedOn,\n titleAsLink = false,\n onTitleClick,\n onDescriptionClick,\n onConfigure,\n className = '',\n}) {\n const handleConfigure = () => {\n onConfigure?.({\n id,\n title,\n status,\n departments,\n workflows,\n fields,\n formsFilled,\n updatedOn,\n });\n };\n\n const handleDescription = () => {\n if (onDescriptionClick) {\n onDescriptionClick({ id, title, descriptionHref });\n return;\n }\n if (descriptionHref && typeof window !== 'undefined') {\n window.open(descriptionHref, '_blank', 'noopener,noreferrer');\n }\n };\n\n const stats = [\n { label: 'Departments', value: departments },\n { label: 'Workflows', value: workflows },\n { label: 'Fields', value: fields },\n { label: 'Forms Filled', value: formsFilled },\n ];\n\n return (\n <article className={`ca-system-card ${className}`.trim()}>\n <CardHeader\n title={title}\n status={status}\n statusLabel={statusLabel}\n titleAsLink={titleAsLink}\n onTitleClick={() => onTitleClick?.({ id, title })}\n />\n\n {description ? (\n <LinkText onClick={handleDescription}>{description}</LinkText>\n ) : null}\n\n <div className=\"ca-system-card__stats\">\n {stats.map((stat, index) => (\n <React.Fragment key={stat.label}>\n {index > 0 ? <Divider /> : null}\n <DataPoint label={stat.label} value={stat.value} />\n </React.Fragment>\n ))}\n </div>\n\n <CardFooter updatedOn={updatedOn} onConfigure={handleConfigure} />\n </article>\n );\n}\n","import React from 'react';\nimport SystemCard from './SystemCard';\nimport { BodyText } from '../atoms/Typography';\n\n/**\n * Responsive grid of system cards.\n */\nexport default function SystemCardGrid({\n systems = [],\n onConfigure,\n onTitleClick,\n onDescriptionClick,\n emptyMessage = 'No systems found.',\n className = '',\n}) {\n if (!systems.length) {\n return (\n <div className={`ca-system-grid ${className}`.trim()}>\n <div className=\"ca-empty\">\n <BodyText>{emptyMessage}</BodyText>\n </div>\n </div>\n );\n }\n\n return (\n <div className={`ca-system-grid ${className}`.trim()}>\n {systems.map((system) => (\n <SystemCard\n key={system.id ?? system.title}\n {...system}\n onConfigure={onConfigure}\n onTitleClick={onTitleClick}\n onDescriptionClick={onDescriptionClick}\n />\n ))}\n </div>\n );\n}\n","import React from 'react';\n\n/**\n * Text input atom. Supports an optional leading icon (e.g. search).\n */\nexport default function Input({\n value,\n onChange,\n placeholder,\n type = 'text',\n icon,\n className = '',\n inputClassName = '',\n ...props\n}) {\n return (\n <div className={`ca-input-wrap ${className}`.trim()}>\n {icon ? <span className=\"ca-input-wrap__icon\">{icon}</span> : null}\n <input\n type={type}\n className={`ca-input ${icon ? 'ca-input--with-icon' : ''} ${inputClassName}`.trim()}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n {...props}\n />\n </div>\n );\n}\n","import React from 'react';\n\n/** Magnifying-glass icon for search inputs. */\nexport default function SearchIcon({ size = 18, color = 'currentColor', ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n aria-hidden=\"true\"\n {...props}\n >\n <path\n d=\"M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z\"\n stroke={color}\n strokeWidth=\"1.75\"\n />\n <path\n d=\"M16.5 16.5 21 21\"\n stroke={color}\n strokeWidth=\"1.75\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport Input from '../atoms/Input';\nimport SearchIcon from '../atoms/SearchIcon';\n\n/**\n * Search bar molecule — Input + search icon.\n */\nexport default function SearchBar({\n value,\n onChange,\n onSearch,\n placeholder = 'Search',\n className = '',\n}) {\n const handleKeyDown = (e) => {\n if (e.key === 'Enter' && onSearch) {\n onSearch(value);\n }\n };\n\n return (\n <div className={`ca-search ${className}`.trim()}>\n <Input\n value={value}\n onChange={onChange}\n onKeyDown={handleKeyDown}\n placeholder={placeholder}\n icon={<SearchIcon />}\n aria-label={placeholder}\n />\n </div>\n );\n}\n","import React from 'react';\n\n/**\n * Generic loading atom (reused from previous package pattern).\n */\nexport default function Loading({ text = 'Loading', fullScreen = false }) {\n return (\n <div\n className=\"ca-loading\"\n style={fullScreen ? { minHeight: 'calc(100vh - 80px)' } : undefined}\n role=\"status\"\n aria-live=\"polite\"\n >\n <span className=\"ca-loading__spinner\" />\n <span>{text}…</span>\n </div>\n );\n}\n","/** Demo systems matching the Complaint Management design (used when no data is passed). */\nexport const DEMO_SYSTEMS = [\n {\n id: 'qms',\n title: 'QMS - Query Management System',\n status: 'active',\n description: 'Description of the template',\n departments: 3,\n workflows: 12,\n fields: 55,\n formsFilled: 234,\n updatedOn: '12 Mar 2024',\n titleAsLink: true,\n },\n {\n id: 'cms',\n title: 'CMS - Complaint Management System',\n status: 'active',\n description: 'Description of the template',\n departments: 5,\n workflows: 8,\n fields: 42,\n formsFilled: 189,\n updatedOn: '08 Mar 2024',\n },\n {\n id: 'fms',\n title: 'FMS - Feedback Management System',\n status: 'inactive',\n description: 'Description of the template',\n departments: 2,\n workflows: 4,\n fields: 28,\n formsFilled: 56,\n updatedOn: '01 Feb 2024',\n },\n {\n id: 'rms',\n title: 'RMS - Request Management System',\n status: 'active',\n description: 'Description of the template',\n departments: 4,\n workflows: 10,\n fields: 61,\n formsFilled: 312,\n updatedOn: '20 Mar 2024',\n },\n];\n\nexport const DEFAULT_PAGE_DESCRIPTION =\n 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.';\n","import React, { useMemo, useState, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport PageHeader from '../components/organisms/PageHeader';\nimport SystemCardGrid from '../components/organisms/SystemCardGrid';\nimport SearchBar from '../components/molecules/SearchBar';\nimport Loading from '../components/atoms/Loading';\nimport { DEMO_SYSTEMS, DEFAULT_PAGE_DESCRIPTION } from '../data/demoSystems';\nimport api from '../utils/api';\n\n/**\n * Normalize API / parent payloads into SystemCard props.\n */\nfunction normalizeSystems(list = []) {\n return list.map((item, index) => ({\n id: item.id ?? item._id ?? `system-${index}`,\n title: item.title ?? item.name ?? 'Untitled',\n status: item.status ?? 'inactive',\n statusLabel: item.statusLabel,\n description: item.description ?? item.templateDescription,\n descriptionHref: item.descriptionHref ?? item.url,\n departments: item.departments ?? item.departmentCount ?? 0,\n workflows: item.workflows ?? item.workflowCount ?? 0,\n fields: item.fields ?? item.fieldCount ?? 0,\n formsFilled: item.formsFilled ?? item.formFilledCount ?? item.forms_filled ?? 0,\n updatedOn: item.updatedOn ?? item.updatedAt ?? item.updated_on,\n titleAsLink: Boolean(item.titleAsLink ?? item.isLink),\n }));\n}\n\n/**\n * Complaint Management page — composes header, search, and system cards.\n *\n * Data comes from:\n * 1. `systems` prop (parent-controlled), or\n * 2. `systemsEndpoint` fetched via shared api client (parent auth/base URL), or\n * 3. demo data (dev / design preview).\n */\nexport default function ComplaintManagementPage({\n title = 'Complaint Management',\n description = DEFAULT_PAGE_DESCRIPTION,\n systems: systemsProp,\n systemsEndpoint,\n useDemoData = true,\n createLabel = 'Create New Form',\n onCreateForm,\n onConfigure,\n onTitleClick,\n onDescriptionClick,\n onSearch,\n}) {\n const navigate = useNavigate();\n const [search, setSearch] = useState('');\n const [fetchedSystems, setFetchedSystems] = useState(null);\n const [fetchError, setFetchError] = useState(null);\n const [fetchStatus, setFetchStatus] = useState(\n systemsEndpoint && !systemsProp ? 'loading' : 'idle',\n );\n\n useEffect(() => {\n if (!systemsEndpoint || systemsProp) {\n return undefined;\n }\n\n const controller = new AbortController();\n\n api\n .get(systemsEndpoint, { signal: controller.signal })\n .then((response) => {\n const payload = response?.data;\n const list = Array.isArray(payload)\n ? payload\n : payload?.data ?? payload?.systems ?? payload?.results ?? [];\n setFetchedSystems(normalizeSystems(list));\n setFetchError(null);\n setFetchStatus('success');\n })\n .catch((err) => {\n if (controller.signal.aborted) return;\n setFetchError(err?.message || 'Failed to load systems');\n setFetchedSystems([]);\n setFetchStatus('error');\n });\n\n return () => controller.abort();\n }, [systemsEndpoint, systemsProp]);\n\n const sourceSystems = useMemo(() => {\n if (systemsProp) return normalizeSystems(systemsProp);\n if (fetchedSystems) return fetchedSystems;\n if (useDemoData) return DEMO_SYSTEMS;\n return [];\n }, [systemsProp, fetchedSystems, useDemoData]);\n\n const filteredSystems = useMemo(() => {\n const q = search.trim().toLowerCase();\n if (!q) return sourceSystems;\n return sourceSystems.filter((s) => {\n const haystack = `${s.title} ${s.description ?? ''} ${s.status ?? ''}`.toLowerCase();\n return haystack.includes(q);\n });\n }, [sourceSystems, search]);\n\n const handleSearchChange = (e) => {\n const next = e.target.value;\n setSearch(next);\n onSearch?.(next);\n };\n\n const handleConfigure = (system) => {\n onConfigure?.(system);\n navigate(`/settings/${system.id ?? 'new'}?step=1`);\n };\n\n const loading = fetchStatus === 'loading';\n\n return (\n <>\n <PageHeader\n title={title}\n description={description}\n actionLabel={createLabel}\n onAction={onCreateForm}\n />\n\n <SearchBar value={search} onChange={handleSearchChange} placeholder=\"Search\" />\n\n {loading ? (\n <Loading text=\"Loading systems\" />\n ) : fetchError ? (\n <div className=\"ca-empty\">\n <p className=\"ca-body\">{fetchError}</p>\n </div>\n ) : (\n <SystemCardGrid\n systems={filteredSystems}\n onConfigure={handleConfigure}\n onTitleClick={onTitleClick}\n onDescriptionClick={onDescriptionClick}\n emptyMessage={search ? 'No systems match your search.' : 'No systems found.'}\n />\n )}\n </>\n );\n}\n","import React from 'react';\n\n/**\n * Horizontal stepper organism.\n * Reflects URL-driven step (1-indexed).\n */\nexport default function Stepper({\n steps = [],\n currentStep = 1,\n onStepClick,\n className = '',\n size = 'md',\n}) {\n return (\n <nav\n className={`ca-stepper ca-stepper--${size} ${className}`.trim()}\n aria-label=\"Progress\"\n >\n {steps.map((step, index) => {\n const stepId = step.id ?? index + 1;\n const isActive = stepId === currentStep;\n const isDone = stepId < currentStep;\n const clickable = Boolean(onStepClick) && (isDone || isActive);\n\n return (\n <React.Fragment key={stepId}>\n {index > 0 ? (\n <div\n className={`ca-stepper__line ${isDone || isActive ? 'ca-stepper__line--active' : ''}`}\n />\n ) : null}\n <button\n type=\"button\"\n className={[\n 'ca-stepper__item',\n isActive ? 'ca-stepper__item--active' : '',\n isDone ? 'ca-stepper__item--done' : '',\n ]\n .filter(Boolean)\n .join(' ')}\n onClick={() => clickable && onStepClick?.(stepId)}\n disabled={!clickable}\n aria-current={isActive ? 'step' : undefined}\n >\n <span className=\"ca-stepper__circle\">{stepId}</span>\n <span className=\"ca-stepper__label\">{step.label}</span>\n </button>\n </React.Fragment>\n );\n })}\n </nav>\n );\n}\n","import React, { createContext, useContext, useMemo, useState, useCallback } from 'react';\n\nconst SettingsWizardContext = createContext(null);\n\nconst initialState = {\n categoryType: 'qms',\n active: true,\n description: '',\n roles: ['Store Staff', 'HR Executive', 'HR Manager'],\n departmentRows: [\n { id: '1', department: '', subDepartment: '', roles: '' },\n ],\n priorityDraft: '',\n priorities: [],\n defaultPriorityId: null,\n selectedDeptNode: 'payroll',\n workflow: {\n name: '',\n tatMinutes: '',\n description: '',\n statuses: [],\n steps: [],\n },\n fieldDraft: { name: '', type: '' },\n formFields: [],\n};\n\nexport function SettingsWizardProvider({ children, initialValues }) {\n const [state, setState] = useState({ ...initialState, ...initialValues });\n\n const update = useCallback((patch) => {\n setState((prev) => ({ ...prev, ...patch }));\n }, []);\n\n const updateWorkflow = useCallback((patch) => {\n setState((prev) => ({\n ...prev,\n workflow: { ...prev.workflow, ...patch },\n }));\n }, []);\n\n const value = useMemo(\n () => ({ state, setState, update, updateWorkflow }),\n [state, update, updateWorkflow],\n );\n\n return (\n <SettingsWizardContext.Provider value={value}>\n {children}\n </SettingsWizardContext.Provider>\n );\n}\n\n// Context hook co-located with provider (standard React pattern).\n// eslint-disable-next-line react-refresh/only-export-components\nexport function useSettingsWizard() {\n const ctx = useContext(SettingsWizardContext);\n if (!ctx) {\n throw new Error('useSettingsWizard must be used within SettingsWizardProvider');\n }\n return ctx;\n}\n\nexport default SettingsWizardContext;\n","/** Settings wizard step definitions (1-indexed for URL ?step=). */\nexport const SETTINGS_STEPS = [\n {\n id: 1,\n key: 'category',\n label: 'Category Type',\n title: 'Category Type',\n description: 'Define the type and basic details for this category type.',\n },\n {\n id: 2,\n key: 'departments',\n label: 'Departments',\n title: 'Departments',\n description: '----',\n },\n {\n id: 3,\n key: 'priorities',\n label: 'Priorities',\n title: 'Priorities',\n description: '----',\n },\n {\n id: 4,\n key: 'workflow',\n label: 'Workflow',\n title: 'Workflow',\n description: '----',\n },\n {\n id: 5,\n key: 'formFields',\n label: 'Form Fields',\n title: 'Form Fields',\n description: '----',\n },\n {\n id: 6,\n key: 'review',\n label: 'Review & Publish',\n title: 'Review & Publish',\n description: 'Review your configuration and publish.',\n },\n];\n\nexport const WORKFLOW_SUBSTEPS = [\n { id: 1, label: 'Create Workflow' },\n { id: 2, label: 'Statuses' },\n { id: 3, label: 'Workflow Steps' },\n];\n\nexport const QUICK_PRIORITIES = ['Urgent', 'High', 'Medium', 'Low'];\n\nexport const FIELD_LIBRARY = [\n { id: 'short', label: 'Textfield / Short Answer', icon: 'text' },\n { id: 'long', label: 'Description / Long Answer', icon: 'doc' },\n { id: 'date', label: 'Date', icon: 'calendar' },\n { id: 'time', label: 'Time', icon: 'clock' },\n { id: 'single', label: 'Dropdown - Single Select', icon: 'chevron' },\n { id: 'multi', label: 'Dropdown - Multiple Select', icon: 'chevron' },\n];\n\nexport const DEMO_ROLES = [\n 'Store Staff',\n 'HR Executive',\n 'HR Manager',\n 'Store Manager',\n 'Admin',\n];\n\nexport const DEMO_CATEGORY_TYPES = [\n { value: 'qms', label: 'QMS - Query Management System' },\n { value: 'cms', label: 'CMS - Complaint Management System' },\n { value: 'fms', label: 'FMS - Feedback Management System' },\n { value: 'rms', label: 'RMS - Request Management System' },\n];\n\nexport const DEMO_DEPARTMENTS_TREE = [\n {\n id: 'hr',\n name: 'HR',\n children: [\n { id: 'payroll', name: 'Payroll' },\n { id: 'recruitment', name: 'Recruitment' },\n ],\n },\n {\n id: 'finance',\n name: 'Finance',\n children: [{ id: 'ap', name: 'Accounts Payable' }],\n },\n {\n id: 'it',\n name: 'IT',\n children: [],\n },\n];\n\nexport const PRIORITY_COLORS = [\n { value: '#EF4444', label: 'Red' },\n { value: '#F59E0B', label: 'Orange' },\n { value: '#EAB308', label: 'Yellow' },\n { value: '#22C55E', label: 'Green' },\n { value: '#3B82F6', label: 'Blue' },\n { value: '#8B5CF6', label: 'Purple' },\n];\n","import React from 'react';\n\n/** Stacked-layers icon used in settings card headers. */\nexport default function LayersIcon({ size = 28, color = 'currentColor', ...props }) {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n aria-hidden=\"true\"\n style={{ color: 'var(--ca-primary)' }}\n {...props}\n >\n <path\n d=\"M12 3 3 8l9 5 9-5-9-5Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3 12.5 12 17.5l9-5\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n <path\n d=\"M3 16.5 12 21.5l9-5\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinejoin=\"round\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport LayersIcon from '../atoms/LayersIcon';\nimport Button from '../atoms/Button';\nimport ChevronRightIcon from '../atoms/ChevronRightIcon';\nimport { Heading2, BodyText } from '../atoms/Typography';\n\n/**\n * Settings card header — icon, title, description, Next button.\n */\nexport default function SettingsCardHeader({\n title,\n description,\n nextLabel = 'Next',\n onNext,\n showNext = true,\n nextDisabled = false,\n nextVariant = 'primary',\n className = '',\n}) {\n return (\n <div className={`ca-settings-card__header ${className}`.trim()}>\n <div className=\"ca-settings-card__heading\">\n <LayersIcon />\n <div>\n <Heading2>{title}</Heading2>\n {description ? <BodyText className=\"ca-settings-card__desc\">{description}</BodyText> : null}\n </div>\n </div>\n {showNext ? (\n <Button\n variant={nextVariant}\n disabled={nextDisabled}\n onClick={onNext}\n endIcon={<ChevronRightIcon size={14} color=\"currentColor\" />}\n >\n {nextLabel}\n </Button>\n ) : null}\n </div>\n );\n}\n","import React from 'react';\nimport SettingsCardHeader from '../molecules/SettingsCardHeader';\n\n/**\n * White bordered card shell for settings step content.\n */\nexport default function SettingsCard({\n title,\n description,\n onNext,\n nextLabel,\n showNext = true,\n nextDisabled,\n nextVariant,\n children,\n footer,\n className = '',\n}) {\n return (\n <section className={`ca-settings-card ${className}`.trim()}>\n <SettingsCardHeader\n title={title}\n description={description}\n onNext={onNext}\n nextLabel={nextLabel}\n showNext={showNext}\n nextDisabled={nextDisabled}\n nextVariant={nextVariant}\n />\n <div className=\"ca-settings-card__divider\" />\n <div className=\"ca-settings-card__body\">{children}</div>\n {footer ? <div className=\"ca-settings-card__footer\">{footer}</div> : null}\n </section>\n );\n}\n","import React from 'react';\n\n/**\n * Field label atom with optional trailing hint (e.g. character count).\n */\nexport default function FieldLabel({ children, hint, htmlFor, className = '' }) {\n return (\n <div className={`ca-field-label ${className}`.trim()}>\n <label className=\"ca-label\" htmlFor={htmlFor}>\n {children}\n </label>\n {hint != null ? <span className=\"ca-field-label__hint\">{hint}</span> : null}\n </div>\n );\n}\n","import React from 'react';\n\nexport default function ChevronDownIcon({ size = 16, color = 'currentColor', ...props }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" {...props}>\n <path\n d=\"M6 9l6 6 6-6\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport ChevronDownIcon from './ChevronDownIcon';\n\n/**\n * Select / dropdown atom.\n */\nexport default function Select({\n value,\n onChange,\n options = [],\n placeholder = 'Select',\n className = '',\n disabled = false,\n ...props\n}) {\n return (\n <div className={`ca-select ${className}`.trim()}>\n <select\n className=\"ca-select__control\"\n value={value ?? ''}\n onChange={onChange}\n disabled={disabled}\n {...props}\n >\n <option value=\"\" disabled>\n {placeholder}\n </option>\n {options.map((opt) => {\n const val = typeof opt === 'string' ? opt : opt.value;\n const label = typeof opt === 'string' ? opt : opt.label;\n return (\n <option key={val} value={val}>\n {label}\n </option>\n );\n })}\n </select>\n <span className=\"ca-select__chevron\">\n <ChevronDownIcon size={16} />\n </span>\n </div>\n );\n}\n","import React from 'react';\n\n/**\n * Multi-line text input atom.\n */\nexport default function Textarea({\n value,\n onChange,\n placeholder,\n maxLength,\n rows = 4,\n className = '',\n ...props\n}) {\n return (\n <textarea\n className={`ca-textarea ${className}`.trim()}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n maxLength={maxLength}\n rows={rows}\n {...props}\n />\n );\n}\n","import React from 'react';\nimport FieldLabel from '../atoms/FieldLabel';\nimport Input from '../atoms/Input';\nimport Select from '../atoms/Select';\nimport Textarea from '../atoms/Textarea';\n\n/**\n * Labeled form control molecule.\n */\nexport default function FormField({\n label,\n hint,\n children,\n className = '',\n htmlFor,\n}) {\n return (\n <div className={`ca-form-field ${className}`.trim()}>\n {label != null ? (\n <FieldLabel htmlFor={htmlFor} hint={hint}>\n {label}\n </FieldLabel>\n ) : null}\n {children}\n </div>\n );\n}\n\nexport function FormInput({ label, hint, ...inputProps }) {\n return (\n <FormField label={label} hint={hint} htmlFor={inputProps.id}>\n <Input {...inputProps} />\n </FormField>\n );\n}\n\nexport function FormSelect({ label, hint, ...selectProps }) {\n return (\n <FormField label={label} hint={hint} htmlFor={selectProps.id}>\n <Select {...selectProps} />\n </FormField>\n );\n}\n\nexport function FormTextarea({ label, hint, maxLength, value = '', ...textareaProps }) {\n const computedHint =\n hint ??\n (maxLength != null ? `${String(value).length}/${maxLength}` : undefined);\n\n return (\n <FormField label={label} hint={computedHint} htmlFor={textareaProps.id}>\n <Textarea value={value} maxLength={maxLength} {...textareaProps} />\n </FormField>\n );\n}\n","import React from 'react';\n\n/**\n * Toggle switch atom.\n */\nexport default function Toggle({\n checked = false,\n onChange,\n disabled = false,\n 'aria-label': ariaLabel = 'Toggle',\n className = '',\n}) {\n return (\n <button\n type=\"button\"\n role=\"switch\"\n aria-checked={checked}\n aria-label={ariaLabel}\n disabled={disabled}\n className={`ca-toggle ${checked ? 'ca-toggle--on' : ''} ${className}`.trim()}\n onClick={() => onChange?.(!checked)}\n >\n <span className=\"ca-toggle__thumb\" />\n </button>\n );\n}\n","import React from 'react';\nimport Toggle from '../atoms/Toggle';\nimport { LabelText } from '../atoms/Typography';\n\n/** Label + toggle molecule. */\nexport default function ToggleField({\n label = 'Active',\n checked,\n onChange,\n className = '',\n}) {\n return (\n <div className={`ca-toggle-field ${className}`.trim()}>\n <LabelText>{label}</LabelText>\n <Toggle checked={checked} onChange={onChange} aria-label={label} />\n </div>\n );\n}\n","import React from 'react';\n\nexport default function CloseIcon({ size = 12, color = 'currentColor', ...props }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" {...props}>\n <path\n d=\"M6 6l12 12M18 6L6 18\"\n stroke={color}\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport CloseIcon from './CloseIcon';\n\n/**\n * Removable tag / pill atom.\n */\nexport default function Tag({ label, onRemove, className = '' }) {\n return (\n <span className={`ca-tag ${className}`.trim()}>\n {label}\n {onRemove ? (\n <button\n type=\"button\"\n className=\"ca-tag__remove\"\n onClick={onRemove}\n aria-label={`Remove ${label}`}\n >\n <CloseIcon size={10} />\n </button>\n ) : null}\n </span>\n );\n}\n","import React, { useState } from 'react';\nimport Select from '../atoms/Select';\nimport Tag from '../atoms/Tag';\nimport FieldLabel from '../atoms/FieldLabel';\n\n/**\n * Multi-select via dropdown + removable tags.\n */\nexport default function RoleMultiSelect({\n label = 'Select Roles',\n options = [],\n value = [],\n onChange,\n placeholder = 'Select roles',\n className = '',\n}) {\n const [openValue, setOpenValue] = useState('');\n\n const available = options.filter((opt) => {\n const val = typeof opt === 'string' ? opt : opt.value;\n return !value.includes(val);\n });\n\n const handleSelect = (e) => {\n const next = e.target.value;\n if (!next) return;\n onChange?.([...value, next]);\n setOpenValue('');\n };\n\n const handleRemove = (role) => {\n onChange?.(value.filter((r) => r !== role));\n };\n\n return (\n <div className={`ca-role-select ${className}`.trim()}>\n <FieldLabel>{label}</FieldLabel>\n <Select\n value={openValue}\n onChange={handleSelect}\n options={available}\n placeholder={placeholder}\n />\n {value.length > 0 ? (\n <div className=\"ca-tag-list\">\n {value.map((role) => (\n <Tag key={role} label={role} onRemove={() => handleRemove(role)} />\n ))}\n </div>\n ) : null}\n </div>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport { FormSelect, FormTextarea } from '../../molecules/FormField';\nimport ToggleField from '../../molecules/ToggleField';\nimport RoleMultiSelect from '../../molecules/RoleMultiSelect';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { DEMO_CATEGORY_TYPES, DEMO_ROLES } from '../../../data/settingsSteps';\n\nexport default function CategoryTypeStep({ onNext, stepMeta }) {\n const { state, update } = useSettingsWizard();\n\n return (\n <SettingsCard\n title={stepMeta.title}\n description={stepMeta.description}\n onNext={onNext}\n >\n <div className=\"ca-step-section\">\n <div className=\"ca-step-row ca-step-row--category\">\n <FormSelect\n label=\"Category Type\"\n className=\"ca-step-row__grow\"\n value={state.categoryType}\n onChange={(e) => update({ categoryType: e.target.value })}\n options={DEMO_CATEGORY_TYPES}\n placeholder=\"Select category type\"\n />\n <ToggleField\n checked={state.active}\n onChange={(active) => update({ active })}\n />\n </div>\n </div>\n\n <div className=\"ca-step-section\">\n <FormTextarea\n label=\"Description\"\n placeholder=\"Enter description\"\n maxLength={500}\n value={state.description}\n onChange={(e) => update({ description: e.target.value })}\n rows={5}\n />\n </div>\n\n <div className=\"ca-step-section ca-step-section--last\">\n <RoleMultiSelect\n options={DEMO_ROLES}\n value={state.roles}\n onChange={(roles) => update({ roles })}\n />\n </div>\n </SettingsCard>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport Select from '../../atoms/Select';\nimport Input from '../../atoms/Input';\nimport Button from '../../atoms/Button';\nimport PlusIcon from '../../atoms/PlusIcon';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { DEMO_ROLES } from '../../../data/settingsSteps';\n\nconst DEPARTMENT_OPTIONS = ['HR', 'Finance', 'IT', 'Operations', 'Sales'];\n\nfunction newRow() {\n return {\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,\n department: '',\n subDepartment: '',\n roles: '',\n };\n}\n\nexport default function DepartmentsStep({ onNext, stepMeta }) {\n const { state, update } = useSettingsWizard();\n const rows = state.departmentRows;\n\n const patchRow = (id, patch) => {\n update({\n departmentRows: rows.map((r) => (r.id === id ? { ...r, ...patch } : r)),\n });\n };\n\n const addRow = () => {\n update({ departmentRows: [...rows, newRow()] });\n };\n\n return (\n <SettingsCard title={stepMeta.title} description={stepMeta.description} onNext={onNext}>\n <div className=\"ca-dept-table\">\n <div className=\"ca-dept-table__head\">\n <div>Department</div>\n <div>Sub-department</div>\n <div>Roles</div>\n <div />\n </div>\n {rows.map((row) => (\n <div className=\"ca-dept-table__row\" key={row.id}>\n <Select\n value={row.department}\n onChange={(e) => patchRow(row.id, { department: e.target.value })}\n options={DEPARTMENT_OPTIONS}\n placeholder=\"Select or add department\"\n />\n <div className=\"ca-input-with-action\">\n <Input\n value={row.subDepartment}\n onChange={(e) => patchRow(row.id, { subDepartment: e.target.value })}\n placeholder=\"Add sub-department\"\n />\n <button\n type=\"button\"\n className=\"ca-input-with-action__btn\"\n aria-label=\"Add sub-department\"\n onClick={() => {\n if (!row.subDepartment.trim()) return;\n }}\n >\n <PlusIcon size={14} color=\"currentColor\" />\n </button>\n </div>\n <Select\n value={row.roles}\n onChange={(e) => patchRow(row.id, { roles: e.target.value })}\n options={DEMO_ROLES}\n placeholder=\"Select roles\"\n />\n <Button variant=\"link\" size=\"sm\" onClick={addRow}>\n + Add\n </Button>\n </div>\n ))}\n </div>\n </SettingsCard>\n );\n}\n","import React from 'react';\n\n/**\n * Chip / quick-add pill atom.\n */\nexport default function Chip({ children, onClick, className = '', active = false }) {\n return (\n <button\n type=\"button\"\n className={`ca-chip ${active ? 'ca-chip--active' : ''} ${className}`.trim()}\n onClick={onClick}\n >\n {children}\n </button>\n );\n}\n","import React from 'react';\n\n/**\n * Radio button atom.\n */\nexport default function Radio({\n checked = false,\n onChange,\n name,\n value,\n 'aria-label': ariaLabel,\n className = '',\n}) {\n return (\n <label className={`ca-radio ${className}`.trim()}>\n <input\n type=\"radio\"\n className=\"ca-radio__input\"\n name={name}\n value={value}\n checked={checked}\n onChange={onChange}\n aria-label={ariaLabel}\n />\n <span className=\"ca-radio__mark\" />\n </label>\n );\n}\n","import React from 'react';\n\nexport default function DragHandleIcon({ size = 16, color = '#9CA3AF', ...props }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 16 16\" fill=\"none\" aria-hidden=\"true\" {...props}>\n <circle cx=\"5\" cy=\"4\" r=\"1.2\" fill={color} />\n <circle cx=\"11\" cy=\"4\" r=\"1.2\" fill={color} />\n <circle cx=\"5\" cy=\"8\" r=\"1.2\" fill={color} />\n <circle cx=\"11\" cy=\"8\" r=\"1.2\" fill={color} />\n <circle cx=\"5\" cy=\"12\" r=\"1.2\" fill={color} />\n <circle cx=\"11\" cy=\"12\" r=\"1.2\" fill={color} />\n </svg>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport Input from '../../atoms/Input';\nimport Button from '../../atoms/Button';\nimport Chip from '../../atoms/Chip';\nimport Select from '../../atoms/Select';\nimport Radio from '../../atoms/Radio';\nimport DragHandleIcon from '../../atoms/DragHandleIcon';\nimport FieldLabel from '../../atoms/FieldLabel';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { QUICK_PRIORITIES, PRIORITY_COLORS } from '../../../data/settingsSteps';\n\nfunction makePriority(name) {\n return {\n id: `${Date.now()}-${Math.random().toString(36).slice(2, 7)}`,\n name,\n color: '',\n };\n}\n\nexport default function PrioritiesStep({ onNext, stepMeta }) {\n const { state, update } = useSettingsWizard();\n const { priorityDraft, priorities, defaultPriorityId } = state;\n\n const addPriority = (name) => {\n const trimmed = (name ?? priorityDraft).trim();\n if (!trimmed) return;\n if (priorities.some((p) => p.name.toLowerCase() === trimmed.toLowerCase())) {\n update({ priorityDraft: '' });\n return;\n }\n const next = [...priorities, makePriority(trimmed)];\n update({\n priorities: next,\n priorityDraft: '',\n defaultPriorityId: defaultPriorityId ?? next[0].id,\n });\n };\n\n const patchPriority = (id, patch) => {\n update({\n priorities: priorities.map((p) => (p.id === id ? { ...p, ...patch } : p)),\n });\n };\n\n const colorOptions = PRIORITY_COLORS.map((c) => ({\n value: c.value,\n label: c.label,\n }));\n\n return (\n <SettingsCard title={stepMeta.title} description={stepMeta.description} onNext={onNext}>\n <div className=\"ca-priority-add\">\n <FieldLabel>Priorities</FieldLabel>\n <div className=\"ca-priority-add__row\">\n <Input\n value={priorityDraft}\n onChange={(e) => update({ priorityDraft: e.target.value })}\n placeholder=\"Add priority\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n addPriority();\n }\n }}\n />\n <Button variant=\"outline\" onClick={() => addPriority()}>\n + Add\n </Button>\n </div>\n <div className=\"ca-chip-row\">\n {QUICK_PRIORITIES.map((p) => (\n <Chip key={p} onClick={() => addPriority(p)}>\n + {p}\n </Chip>\n ))}\n </div>\n </div>\n\n <div className=\"ca-priority-table\">\n <div className=\"ca-priority-table__head\">\n <div>Priority</div>\n <div>Color</div>\n <div>Default</div>\n </div>\n {(priorities.length ? priorities : [makePriority('')]).map((row, index) => {\n const isPlaceholder = !priorities.length;\n return (\n <div className=\"ca-priority-table__row\" key={row.id || index}>\n <div className=\"ca-priority-table__name\">\n <DragHandleIcon />\n <Input\n value={isPlaceholder ? priorityDraft : row.name}\n onChange={(e) => {\n if (isPlaceholder) {\n update({ priorityDraft: e.target.value });\n } else {\n patchPriority(row.id, { name: e.target.value });\n }\n }}\n placeholder=\"Add priority\"\n />\n </div>\n <Select\n value={row.color}\n onChange={(e) => {\n if (!isPlaceholder) patchPriority(row.id, { color: e.target.value });\n }}\n options={colorOptions}\n placeholder=\"Select color\"\n />\n <Radio\n name=\"default-priority\"\n value={row.id}\n checked={!isPlaceholder && defaultPriorityId === row.id}\n onChange={() => !isPlaceholder && update({ defaultPriorityId: row.id })}\n aria-label=\"Default priority\"\n />\n </div>\n );\n })}\n </div>\n </SettingsCard>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport Stepper from '../../organisms/Stepper';\nimport { FormInput, FormTextarea } from '../../molecules/FormField';\nimport Button from '../../atoms/Button';\nimport ChevronRightIcon from '../../atoms/ChevronRightIcon';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { DEMO_DEPARTMENTS_TREE, WORKFLOW_SUBSTEPS } from '../../../data/settingsSteps';\n\nexport default function WorkflowStep({\n onNext,\n stepMeta,\n substep = 1,\n onSubstepChange,\n}) {\n const { state, update, updateWorkflow } = useSettingsWizard();\n const { selectedDeptNode, workflow } = state;\n\n const handleNextSubstep = () => {\n if (substep < WORKFLOW_SUBSTEPS.length) {\n onSubstepChange?.(substep + 1);\n return;\n }\n onNext?.();\n };\n\n return (\n <SettingsCard\n title={stepMeta.title}\n description={stepMeta.description}\n onNext={onNext}\n nextVariant=\"secondary\"\n >\n <div className=\"ca-workflow\">\n <aside className=\"ca-workflow__sidebar\">\n <h3 className=\"ca-workflow__sidebar-title\">Select Department</h3>\n <p className=\"ca-small\">Add workflow for selected department</p>\n <ul className=\"ca-dept-tree\">\n {DEMO_DEPARTMENTS_TREE.map((dept) => (\n <li key={dept.id} className=\"ca-dept-tree__group\">\n <button\n type=\"button\"\n className={`ca-dept-tree__item ${\n selectedDeptNode === dept.id ? 'ca-dept-tree__item--active' : ''\n }`}\n onClick={() => update({ selectedDeptNode: dept.id })}\n >\n {dept.name}\n </button>\n {dept.children?.length ? (\n <ul className=\"ca-dept-tree__children\">\n {dept.children.map((child) => (\n <li key={child.id}>\n <button\n type=\"button\"\n className={`ca-dept-tree__item ca-dept-tree__item--child ${\n selectedDeptNode === child.id\n ? 'ca-dept-tree__item--active'\n : ''\n }`}\n onClick={() => update({ selectedDeptNode: child.id })}\n >\n <span className=\"ca-dept-tree__branch\" aria-hidden=\"true\">\n └\n </span>\n {child.name}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </li>\n ))}\n </ul>\n </aside>\n\n <div className=\"ca-workflow__main\">\n <Stepper\n steps={WORKFLOW_SUBSTEPS}\n currentStep={substep}\n onStepClick={onSubstepChange}\n size=\"sm\"\n className=\"ca-workflow__substepper\"\n />\n\n {substep === 1 ? (\n <div className=\"ca-workflow__form\">\n <div className=\"ca-step-row\">\n <FormInput\n className=\"ca-step-row__grow\"\n label=\"Name\"\n placeholder=\"Enter name\"\n value={workflow.name}\n onChange={(e) => updateWorkflow({ name: e.target.value })}\n />\n <FormInput\n className=\"ca-step-row__grow\"\n label=\"TAT Minutes\"\n placeholder=\"Enter here\"\n value={workflow.tatMinutes}\n onChange={(e) => updateWorkflow({ tatMinutes: e.target.value })}\n />\n </div>\n <FormTextarea\n label=\"Description\"\n placeholder=\"Enter description\"\n value={workflow.description}\n onChange={(e) => updateWorkflow({ description: e.target.value })}\n rows={5}\n />\n </div>\n ) : null}\n\n {substep === 2 ? (\n <div className=\"ca-workflow__placeholder\">\n <p className=\"ca-body\">\n Configure workflow statuses for the selected department.\n </p>\n </div>\n ) : null}\n\n {substep === 3 ? (\n <div className=\"ca-workflow__placeholder\">\n <p className=\"ca-body\">Define ordered workflow steps and assignees.</p>\n </div>\n ) : null}\n\n <div className=\"ca-workflow__actions\">\n <Button\n onClick={handleNextSubstep}\n endIcon={<ChevronRightIcon size={14} color=\"#fff\" />}\n >\n Next Step\n </Button>\n </div>\n </div>\n </div>\n </SettingsCard>\n );\n}\n","import React from 'react';\n\nexport default function TrashIcon({ size = 16, color = '#9CA3AF', ...props }) {\n return (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\" aria-hidden=\"true\" {...props}>\n <path\n d=\"M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2m2 0v12a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V7h12Z\"\n stroke={color}\n strokeWidth=\"1.6\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport Input from '../../atoms/Input';\nimport Select from '../../atoms/Select';\nimport Button from '../../atoms/Button';\nimport Toggle from '../../atoms/Toggle';\nimport DragHandleIcon from '../../atoms/DragHandleIcon';\nimport TrashIcon from '../../atoms/TrashIcon';\nimport FieldLabel from '../../atoms/FieldLabel';\nimport ChevronRightIcon from '../../atoms/ChevronRightIcon';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { FIELD_LIBRARY } from '../../../data/settingsSteps';\n\nconst FIELD_TYPE_OPTIONS = FIELD_LIBRARY.map((f) => ({\n value: f.id,\n label: f.label,\n}));\n\nfunction FieldLibraryIcon({ type }) {\n const map = {\n text: 'A',\n doc: '¶',\n calendar: '口',\n clock: '◷',\n chevron: '▾',\n };\n return <span className=\"ca-field-lib__glyph\">{map[type] || '▾'}</span>;\n}\n\nexport default function FormFieldsStep({ onNext, stepMeta }) {\n const { state, update } = useSettingsWizard();\n const { fieldDraft, formFields } = state;\n\n const setDraft = (patch) => update({ fieldDraft: { ...fieldDraft, ...patch } });\n\n const addField = () => {\n if (!fieldDraft.name.trim() || !fieldDraft.type) return;\n const typeLabel =\n FIELD_TYPE_OPTIONS.find((o) => o.value === fieldDraft.type)?.label || fieldDraft.type;\n update({\n formFields: [\n ...formFields,\n {\n id: `${Date.now()}`,\n name: fieldDraft.name.trim(),\n type: fieldDraft.type,\n typeLabel,\n required: false,\n },\n ],\n fieldDraft: { name: '', type: '' },\n });\n };\n\n const patchField = (id, patch) => {\n update({\n formFields: formFields.map((f) => (f.id === id ? { ...f, ...patch } : f)),\n });\n };\n\n const removeField = (id) => {\n update({ formFields: formFields.filter((f) => f.id !== id) });\n };\n\n const applyLibraryType = (item) => {\n setDraft({ type: item.id });\n };\n\n return (\n <SettingsCard\n title={stepMeta.title}\n description={stepMeta.description}\n showNext={false}\n footer={\n <Button\n onClick={onNext}\n endIcon={<ChevronRightIcon size={14} color=\"#fff\" />}\n >\n Next\n </Button>\n }\n >\n <div className=\"ca-form-fields\">\n <aside className=\"ca-field-lib\">\n <h3 className=\"ca-field-lib__title\">Field Library</h3>\n <p className=\"ca-small\">Drag and drop the fields to add.</p>\n <ul className=\"ca-field-lib__list\">\n {FIELD_LIBRARY.map((item) => (\n <li key={item.id}>\n <button\n type=\"button\"\n className=\"ca-field-lib__item\"\n draggable\n onDragStart={(e) => {\n e.dataTransfer.setData('text/plain', item.id);\n }}\n onClick={() => applyLibraryType(item)}\n >\n <FieldLibraryIcon type={item.icon} />\n <span>{item.label}</span>\n </button>\n </li>\n ))}\n </ul>\n </aside>\n\n <div className=\"ca-form-fields__main\">\n <div\n className=\"ca-add-fields\"\n onDragOver={(e) => e.preventDefault()}\n onDrop={(e) => {\n e.preventDefault();\n const type = e.dataTransfer.getData('text/plain');\n if (type) setDraft({ type });\n }}\n >\n <div className=\"ca-add-fields__top\">\n <h3 className=\"ca-add-fields__title\">Add Fields</h3>\n <Button onClick={addField}>Add Field</Button>\n </div>\n <div className=\"ca-step-row\">\n <div className=\"ca-step-row__grow\">\n <FieldLabel>Name of Field</FieldLabel>\n <Input\n value={fieldDraft.name}\n onChange={(e) => setDraft({ name: e.target.value })}\n placeholder=\"Enter name of the field.\"\n />\n </div>\n <div className=\"ca-step-row__grow\">\n <FieldLabel>Type of Field</FieldLabel>\n <Select\n value={fieldDraft.type}\n onChange={(e) => setDraft({ type: e.target.value })}\n options={FIELD_TYPE_OPTIONS}\n placeholder=\"Select type of the field.\"\n />\n </div>\n </div>\n </div>\n\n <div className=\"ca-fields-table\">\n <div className=\"ca-fields-table__head\">\n <div>Field Name</div>\n <div>Field Type</div>\n <div>Required</div>\n <div />\n </div>\n {formFields.length === 0 ? (\n <div className=\"ca-fields-table__empty\">\n <p className=\"ca-small\">No fields added yet.</p>\n </div>\n ) : (\n formFields.map((field) => (\n <div className=\"ca-fields-table__row\" key={field.id}>\n <div className=\"ca-fields-table__name\">\n <DragHandleIcon />\n <Input\n value={field.name}\n onChange={(e) => patchField(field.id, { name: e.target.value })}\n />\n </div>\n <Select\n value={field.type}\n onChange={(e) => {\n const type = e.target.value;\n const typeLabel =\n FIELD_TYPE_OPTIONS.find((o) => o.value === type)?.label || type;\n patchField(field.id, { type, typeLabel });\n }}\n options={FIELD_TYPE_OPTIONS}\n placeholder=\"Select type\"\n />\n <Toggle\n checked={field.required}\n onChange={(required) => patchField(field.id, { required })}\n aria-label=\"Required\"\n />\n <button\n type=\"button\"\n className=\"ca-icon-btn\"\n aria-label=\"Delete field\"\n onClick={() => removeField(field.id)}\n >\n <TrashIcon />\n </button>\n </div>\n ))\n )}\n </div>\n </div>\n </div>\n </SettingsCard>\n );\n}\n","import React from 'react';\nimport SettingsCard from '../../organisms/SettingsCard';\nimport Button from '../../atoms/Button';\nimport { BodyText, LabelText, Heading2 } from '../../atoms/Typography';\nimport StatusBadge from '../../atoms/StatusBadge';\nimport { useSettingsWizard } from '../../../context/SettingsWizardContext';\nimport { DEMO_CATEGORY_TYPES } from '../../../data/settingsSteps';\n\nexport default function ReviewPublishStep({ onPublish, stepMeta }) {\n const { state } = useSettingsWizard();\n const categoryLabel =\n DEMO_CATEGORY_TYPES.find((c) => c.value === state.categoryType)?.label ||\n state.categoryType;\n\n return (\n <SettingsCard\n title={stepMeta.title}\n description={stepMeta.description}\n nextLabel=\"Publish\"\n onNext={onPublish}\n >\n <div className=\"ca-review\">\n <section className=\"ca-review__block\">\n <Heading2>Category Type</Heading2>\n <div className=\"ca-review__row\">\n <LabelText>{categoryLabel}</LabelText>\n <StatusBadge status={state.active ? 'active' : 'inactive'} />\n </div>\n {state.description ? <BodyText>{state.description}</BodyText> : null}\n {state.roles.length ? (\n <BodyText>Roles: {state.roles.join(', ')}</BodyText>\n ) : null}\n </section>\n\n <section className=\"ca-review__block\">\n <Heading2>Departments</Heading2>\n <BodyText>\n {state.departmentRows.filter((r) => r.department).length} department row(s)\n configured\n </BodyText>\n </section>\n\n <section className=\"ca-review__block\">\n <Heading2>Priorities</Heading2>\n <BodyText>\n {state.priorities.length\n ? state.priorities.map((p) => p.name).join(', ')\n : 'No priorities added'}\n </BodyText>\n </section>\n\n <section className=\"ca-review__block\">\n <Heading2>Workflow</Heading2>\n <BodyText>\n {state.workflow.name\n ? `${state.workflow.name} (TAT: ${state.workflow.tatMinutes || '—'} min)`\n : 'No workflow created yet'}\n </BodyText>\n </section>\n\n <section className=\"ca-review__block ca-review__block--last\">\n <Heading2>Form Fields</Heading2>\n <BodyText>\n {state.formFields.length\n ? state.formFields.map((f) => f.name).join(', ')\n : 'No form fields added'}\n </BodyText>\n </section>\n\n <div className=\"ca-workflow__actions\">\n <Button onClick={onPublish}>Publish</Button>\n </div>\n </div>\n </SettingsCard>\n );\n}\n","import React, { useMemo, useCallback, useEffect } from 'react';\nimport { useNavigate, useParams, useSearchParams } from 'react-router-dom';\nimport { Heading1 } from '../components/atoms/Typography';\nimport Stepper from '../components/organisms/Stepper';\nimport { SettingsWizardProvider } from '../context/SettingsWizardContext';\nimport { SETTINGS_STEPS } from '../data/settingsSteps';\nimport CategoryTypeStep from '../components/organisms/settings-steps/CategoryTypeStep';\nimport DepartmentsStep from '../components/organisms/settings-steps/DepartmentsStep';\nimport PrioritiesStep from '../components/organisms/settings-steps/PrioritiesStep';\nimport WorkflowStep from '../components/organisms/settings-steps/WorkflowStep';\nimport FormFieldsStep from '../components/organisms/settings-steps/FormFieldsStep';\nimport ReviewPublishStep from '../components/organisms/settings-steps/ReviewPublishStep';\n\nfunction clampStep(value) {\n const n = Number(value);\n if (!Number.isFinite(n) || n < 1) return 1;\n if (n > SETTINGS_STEPS.length) return SETTINGS_STEPS.length;\n return Math.floor(n);\n}\n\nfunction clampSubstep(value) {\n const n = Number(value);\n if (!Number.isFinite(n) || n < 1) return 1;\n if (n > 3) return 3;\n return Math.floor(n);\n}\n\n/**\n * Complaint Management Settings wizard.\n * Step navigation is driven by URL search params: ?step=2&substep=1\n */\nexport default function ComplaintSettingsPage({\n title = 'Complaint Management Settings',\n onPublish,\n onStepChange,\n}) {\n const navigate = useNavigate();\n const { systemId } = useParams();\n const [searchParams, setSearchParams] = useSearchParams();\n\n const step = clampStep(searchParams.get('step') || 1);\n const substep = clampSubstep(searchParams.get('substep') || 1);\n\n // Keep URL in sync when step param is missing (e.g. /settings/qms → ?step=1)\n useEffect(() => {\n if (!searchParams.get('step')) {\n const params = new URLSearchParams(searchParams);\n params.set('step', '1');\n setSearchParams(params, { replace: true });\n }\n }, [searchParams, setSearchParams]);\n\n const stepMeta = useMemo(\n () => SETTINGS_STEPS.find((s) => s.id === step) || SETTINGS_STEPS[0],\n [step],\n );\n\n const setStep = useCallback(\n (nextStep, nextSubstep) => {\n const params = new URLSearchParams(searchParams);\n params.set('step', String(nextStep));\n if (nextStep === 4) {\n params.set('substep', String(nextSubstep ?? (nextStep === step ? substep : 1)));\n } else {\n params.delete('substep');\n }\n setSearchParams(params, { replace: false });\n onStepChange?.({ systemId, step: nextStep, substep: nextSubstep });\n },\n [searchParams, setSearchParams, onStepChange, systemId, step, substep],\n );\n\n const goNext = () => {\n if (step < SETTINGS_STEPS.length) {\n setStep(step + 1, 1);\n }\n };\n\n const handleSubstepChange = (next) => {\n setStep(4, next);\n };\n\n const handlePublish = () => {\n onPublish?.({ systemId, step });\n };\n\n return (\n <SettingsWizardProvider>\n <div className=\"ca-settings-page\">\n <Heading1>{title}</Heading1>\n\n <Stepper\n steps={SETTINGS_STEPS}\n currentStep={step}\n onStepClick={(id) => setStep(id, id === 4 ? 1 : undefined)}\n className=\"ca-settings-page__stepper\"\n />\n\n {step === 1 ? (\n <CategoryTypeStep onNext={goNext} stepMeta={stepMeta} />\n ) : null}\n {step === 2 ? (\n <DepartmentsStep onNext={goNext} stepMeta={stepMeta} />\n ) : null}\n {step === 3 ? (\n <PrioritiesStep onNext={goNext} stepMeta={stepMeta} />\n ) : null}\n {step === 4 ? (\n <WorkflowStep\n onNext={goNext}\n stepMeta={stepMeta}\n substep={substep}\n onSubstepChange={handleSubstepChange}\n />\n ) : null}\n {step === 5 ? (\n <FormFieldsStep onNext={goNext} stepMeta={stepMeta} />\n ) : null}\n {step === 6 ? (\n <ReviewPublishStep onPublish={handlePublish} stepMeta={stepMeta} />\n ) : null}\n\n <button\n type=\"button\"\n className=\"ca-back-link\"\n onClick={() => navigate('/')}\n >\n ← Back to Complaint Management\n </button>\n </div>\n </SettingsWizardProvider>\n );\n}\n","import React from 'react';\nimport { BrowserRouter, Routes, Route } from 'react-router-dom';\nimport { ApiProvider } from './context/ApiContext';\nimport { ThemeProvider, useTheme } from './context/ThemeContext';\nimport ComplaintManagementPage from './pages/ComplaintManagementPage';\nimport ComplaintSettingsPage from './pages/ComplaintSettingsPage';\nimport './styles/index.css';\n\nfunction ThemedShell({ children }) {\n const { cssVars, darkMode, mode } = useTheme();\n\n return (\n <div\n className={`ca-root ${darkMode ? 'ca-root--dark' : 'ca-root--light'}`}\n data-ca-theme={mode}\n style={cssVars}\n >\n {children}\n </div>\n );\n}\n\n/**\n * Root package component — mount inside the parent app.\n *\n * Theme & dark mode are parent-controlled:\n * <ComplaintApp theme={brandTheme} darkMode={parentIsDark} />\n */\nconst ComplaintApp = ({\n apiUrl,\n authToken,\n basePath = '/',\n theme,\n darkMode = false,\n title,\n description,\n systems,\n systemsEndpoint,\n useDemoData = true,\n createLabel,\n onCreateForm,\n onConfigure,\n onTitleClick,\n onDescriptionClick,\n onSearch,\n onPublish,\n onStepChange,\n children,\n}) => {\n const pageProps = {\n title,\n description,\n systems,\n systemsEndpoint,\n useDemoData,\n createLabel,\n onCreateForm,\n onConfigure,\n onTitleClick,\n onDescriptionClick,\n onSearch,\n };\n\n return (\n <ThemeProvider theme={theme} darkMode={darkMode}>\n <ThemedShell>\n <ApiProvider apiUrl={apiUrl} authToken={authToken}>\n <BrowserRouter basename={basePath}>\n <Routes>\n <Route\n path=\"/\"\n element={children ?? <ComplaintManagementPage {...pageProps} />}\n />\n <Route\n path=\"/settings/:systemId\"\n element={\n <ComplaintSettingsPage\n onPublish={onPublish}\n onStepChange={onStepChange}\n />\n }\n />\n <Route\n path=\"*\"\n element={children ?? <ComplaintManagementPage {...pageProps} />}\n />\n </Routes>\n </BrowserRouter>\n </ApiProvider>\n </ThemedShell>\n </ThemeProvider>\n );\n};\n\nexport default ComplaintApp;\n","import { lightTheme } from './defaultTheme';\n\n/** @deprecated Prefer `lightTheme` / `darkTheme` from `./defaultTheme`. */\nexport const colors = lightTheme.colors;\nexport const radii = lightTheme.radii;\nexport const spacing = lightTheme.spacing;\nexport const typography = lightTheme.typography;\n"],"names":["BASE_URL_VALUE","__vite_import_meta_env__","nodeProcess","setBaseUrl","url","instance","setAuthToken","token","Cookies","getAccessToken","axios","data","headers","accessToken","isRefreshing","refreshTokenPromise","response","error","originalRequest","refreshToken","refreshResponse","newToken","newRefreshToken","ApiContext","createContext","ApiProvider","children","apiUrl","authToken","useEffect","jsx","lightTheme","darkTheme","defaultThemeFile","isObject","value","deepMerge","base","override","result","key","next","normalizeThemeFile","themeProp","resolveActiveTheme","themeFile","darkMode","pack","COLOR_VAR_MAP","RADIUS_VAR_MAP","TYPE_VAR_MAP","SHADOW_VAR_MAP","themeToCssVars","theme","vars","cssVar","ThemeContext","ThemeProvider","useMemo","active","cssVars","useTheme","useContext","Button","variant","size","startIcon","endIcon","className","type","disabled","onClick","props","classes","jsxs","PlusIcon","color","VARIANT_CLASS","VARIANT_TAG","Typography","as","Tag","baseClass","Heading1","Heading2","BodyText","LabelText","ValueText","LinkText","PageHeader","title","description","actionLabel","onAction","StatusBadge","status","label","isActive","text","CardHeader","statusLabel","titleAsLink","onTitleClick","ChevronRightIcon","CardFooter","updatedOn","configureLabel","onConfigure","DataPoint","display","Divider","SystemCard","id","descriptionHref","departments","workflows","fields","formsFilled","onDescriptionClick","handleConfigure","handleDescription","stats","stat","index","React","SystemCardGrid","systems","emptyMessage","system","Input","onChange","placeholder","icon","inputClassName","SearchIcon","SearchBar","onSearch","handleKeyDown","e","Loading","fullScreen","DEMO_SYSTEMS","DEFAULT_PAGE_DESCRIPTION","normalizeSystems","list","item","ComplaintManagementPage","systemsProp","systemsEndpoint","useDemoData","createLabel","onCreateForm","navigate","useNavigate","search","setSearch","useState","fetchedSystems","setFetchedSystems","fetchError","setFetchError","fetchStatus","setFetchStatus","controller","api","payload","err","sourceSystems","filteredSystems","q","s","Fragment","Stepper","steps","currentStep","onStepClick","step","stepId","isDone","clickable","SettingsWizardContext","initialState","SettingsWizardProvider","initialValues","state","setState","update","useCallback","patch","prev","updateWorkflow","useSettingsWizard","ctx","SETTINGS_STEPS","WORKFLOW_SUBSTEPS","QUICK_PRIORITIES","FIELD_LIBRARY","DEMO_ROLES","DEMO_CATEGORY_TYPES","DEMO_DEPARTMENTS_TREE","PRIORITY_COLORS","LayersIcon","SettingsCardHeader","nextLabel","onNext","showNext","nextDisabled","nextVariant","SettingsCard","footer","FieldLabel","hint","htmlFor","ChevronDownIcon","Select","options","opt","val","Textarea","maxLength","rows","FormField","FormInput","inputProps","FormSelect","selectProps","FormTextarea","textareaProps","computedHint","Toggle","checked","ariaLabel","ToggleField","CloseIcon","onRemove","RoleMultiSelect","openValue","setOpenValue","available","handleSelect","handleRemove","role","r","CategoryTypeStep","stepMeta","roles","DEPARTMENT_OPTIONS","newRow","DepartmentsStep","patchRow","addRow","row","Chip","Radio","name","DragHandleIcon","makePriority","PrioritiesStep","priorityDraft","priorities","defaultPriorityId","addPriority","trimmed","p","patchPriority","colorOptions","c","isPlaceholder","WorkflowStep","substep","onSubstepChange","selectedDeptNode","workflow","handleNextSubstep","dept","child","TrashIcon","FIELD_TYPE_OPTIONS","f","FieldLibraryIcon","FormFieldsStep","fieldDraft","formFields","setDraft","addField","typeLabel","o","patchField","removeField","applyLibraryType","field","required","ReviewPublishStep","onPublish","categoryLabel","clampStep","n","clampSubstep","ComplaintSettingsPage","onStepChange","systemId","useParams","searchParams","setSearchParams","useSearchParams","params","setStep","nextStep","nextSubstep","goNext","ThemedShell","mode","ComplaintApp","basePath","pageProps","BrowserRouter","Routes","Route","colors","radii","spacing","typography"],"mappings":";;;;;;AAGA,IAAIA,IAAiB;AAErB,IAAI;AACF,MAAI,OAAO,cAAgB,OAAeC,IAAiB;AACzD,IAAAD,IAAiB;AAAA,OACZ;AAEL,UAAME,IAAc,OAAO,UAAY,MAAc,UAAU;AAC/D,IAAIA,GAAa,KAAK,iBACpBF,IAAiBE,EAAY,IAAI;AAAA,EAErC;AACF,QAAQ;AAER;AAGO,MAAMC,KAAa,CAACC,MAAQ;AACjC,EAAAJ,IAAiBI,KAAO,IACxBC,EAAS,SAAS,UAAUL;AAC9B,GAEaM,KAAe,CAACC,MAAU;AACrC,EAAIA,IACFC,EAAQ,IAAI,SAASD,GAAO,EAAE,QAAQ,IAAM,UAAU,UAAU,IAEhEC,EAAQ,OAAO,OAAO;AAE1B,GAEMC,KAAiB,MAAMD,EAAQ,IAAI,OAAO,KAAK,MAE/CH,IAAWK,GAAM,OAAO;AAAA,EAC5B,SAASV;AAAA,EACT,kBAAkB;AAAA,IAChB,SAAUW,GAAMC,GAAS;AACvB,YAAMC,IAAcJ,GAAA;AAOpB,aANII,IACFD,EAAQ,gBAAgB,UAAUC,CAAW,KAE7C,OAAOD,EAAQ,eAESD,KAAS,QAC/B,OAAOA,KAAS,WAAiBA,IAC9B,KAAK,UAAUA,CAAI;AAAA,IAC5B;AAAA,EAAA;AAAA,EAEF,SAAS;AAAA,IACP,QAAQ;AAAA,IACR,gBAAgB;AAAA,EAAA;AAEpB,CAAC;AAED,IAAIG,IAAe,IACfC,IAAsB;AAE1BV,EAAS,aAAa,SAAS;AAAA,EAC7B,CAACW,MAAaA;AAAA,EACd,OAAOC,MAAU;AACf,UAAMC,IAAkBD,EAAM,QACxBD,IAAWC,EAAM;AAEvB,QAAID,MAAaA,EAAS,WAAW,OAAOA,EAAS,WAAW,MAAM;AACpE,YAAMG,IAAeX,EAAQ,IAAI,cAAc;AAE/C,UAAIW;AACF,YAAI;AACF,UAAKL,MACHA,IAAe,IACfC,IAAsBL,GAAM;AAAA,YAC1B,GAAGV,CAAc;AAAA,YACjB,CAAA;AAAA,YACA;AAAA,cACE,SAAS;AAAA,gBACP,eAAe,UAAUmB,CAAY;AAAA,cAAA;AAAA,YACvC;AAAA,UACF;AAIJ,gBAAMC,IAAkB,MAAML,GACxB,EAAE,OAAOM,GAAU,cAAcC,EAAA,IACrCF,EAAgB;AAElB,iBAAAZ,EAAQ,IAAI,SAASa,GAAU,EAAE,QAAQ,IAAM,UAAU,UAAU,GAC/DC,KACFd,EAAQ,IAAI,gBAAgBc,CAAe,GAG7CJ,EAAgB,QAAQ,gBAAgB,UAAUG,CAAQ,IACnDhB,EAASa,CAAe;AAAA,QACjC,QAAQ;AACN,UAAAV,EAAQ,OAAO,OAAO,GACtBA,EAAQ,OAAO,cAAc;AAAA,QAC/B,UAAA;AACE,UAAAM,IAAe,IACfC,IAAsB;AAAA,QACxB;AAAA,IAEJ;AAEA,WAAO,QAAQ,OAAOE,CAAK;AAAA,EAC7B;AACF;ACvGA,MAAMM,KAAaC,EAAc,IAAI,GAMxBC,KAAc,CAAC,EAAE,UAAAC,GAAU,QAAAC,GAAQ,WAAAC,SAC9CC,EAAU,MAAM;AACd,EAAIF,KACFxB,GAAWwB,CAAM;AAErB,GAAG,CAACA,CAAM,CAAC,GAEXE,EAAU,MAAM;AACd,EAAAvB,GAAasB,KAAa,IAAI;AAChC,GAAG,CAACA,CAAS,CAAC,GAGZ,gBAAAE,EAACP,GAAW,UAAX,EAAoB,OAAO,EAAE,QAAAI,GAAQ,WAAAC,KACnC,UAAAF,GACH,ICnBSK,IAAa;AAAA,EACxB,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,eAAe;AAAA,IACf,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AAAA,EACE,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACE,YAAY;AAAA,IACV,YACE;AAAA,IACF,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACE,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AACA,GAKaC,IAAY;AAAA,EACvB,MAAM;AAAA,EACN,QAAQ;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,MAAM;AAAA,IACN,eAAe;AAAA,IACf,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,YAAY;AAAA,IACZ,SAAS;AAAA,IACT,OAAO;AAAA,IACP,WAAW;AAAA,IACX,UAAU;AAAA,IACV,cAAc;AAAA,IACd,YAAY;AAAA,IACZ,YAAY;AAAA,IACZ,gBAAgB;AAAA,IAChB,cAAc;AAAA,IACd,MAAM;AAAA,IACN,SAAS;AAAA,IACT,cAAc;AAAA,IACd,UAAU;AAAA,IACV,UAAU;AAAA,IACV,SAAS;AAAA,IACT,QAAQ;AAAA,IACR,cAAc;AAAA,IACd,mBAAmB;AAAA,IACnB,SAAS;AAAA,IACT,aAAa;AAAA,IACb,WAAW;AAAA,IACX,SAAS;AAAA,EACb;AAAA,EACE,OAAO;AAAA,IACL,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,MAAM;AAAA,EACV;AAAA,EACE,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,IAAI;AAAA,IACJ,KAAK;AAAA,EACT;AAAA,EACE,YAAY;AAAA,IACV,YACE;AAAA,IACF,QAAQ;AAAA,IACR,QAAQ;AAAA,IACR,UAAU;AAAA,IACV,WAAW;AAAA,IACX,WAAW;AAAA,IACX,WAAW;AAAA,EACf;AAAA,EACE,QAAQ;AAAA,IACN,MAAM;AAAA,IACN,UAAU;AAAA,EACd;AACA,GAGaC,KAAmB;AAAA,EAC9B,OAAOF;AAAA,EACP,MAAMC;AACR;AC3IA,SAASE,EAASC,GAAO;AACvB,SAAOA,KAAS,QAAQ,OAAOA,KAAU,YAAY,CAAC,MAAM,QAAQA,CAAK;AAC3E;AAGO,SAASC,EAAUC,GAAMC,GAAU;AACxC,MAAI,CAACJ,EAASI,CAAQ,EAAG,QAAOD;AAChC,QAAME,IAAS,EAAE,GAAGF,EAAI;AACxB,gBAAO,KAAKC,CAAQ,EAAE,QAAQ,CAACE,MAAQ;AACrC,UAAMC,IAAOH,EAASE,CAAG;AACzB,IAAIN,EAASO,CAAI,KAAKP,EAASG,EAAKG,CAAG,CAAC,IACtCD,EAAOC,CAAG,IAAIJ,EAAUC,EAAKG,CAAG,GAAGC,CAAI,IAC9BA,MAAS,WAClBF,EAAOC,CAAG,IAAIC;AAAA,EAElB,CAAC,GACMF;AACT;AAUO,SAASG,GAAmBC,GAAW;AAC5C,SAAI,CAACA,KAAa,CAACT,EAASS,CAAS,IAC5B,EAAE,OAAOZ,GAAY,MAAMC,EAAS,IAG5BE,EAASS,EAAU,KAAK,KAAKT,EAASS,EAAU,IAAI,IAG5D;AAAA,IACL,OAAOP,EAAUL,GAAYY,EAAU,SAAS,CAAA,CAAE;AAAA,IAClD,MAAMP,EAAUJ,GAAWW,EAAU,QAAQ,CAAA,CAAE;AAAA,EACrD,IAIS;AAAA,IACL,OAAOP,EAAUL,GAAYY,CAAS;AAAA,IACtC,MAAMP,EAAUJ,GAAWW,CAAS;AAAA,EACxC;AACA;AAKO,SAASC,GAAmBC,GAAWC,IAAW,IAAO;AAC9D,QAAMC,IAAOL,GAAmBG,CAAS;AAEzC,SAAO;AAAA,IACL,GAFaC,IAAWC,EAAK,OAAOA,EAAK;AAAA,IAGzC,MAAMD,IAAW,SAAS;AAAA,IAC1B,QAAQC;AAAA,EACZ;AACA;AAGA,MAAMC,KAAgB;AAAA,EACpB,SAAS;AAAA,EACT,cAAc;AAAA,EACd,MAAM;AAAA,EACN,eAAe;AAAA,EACf,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,OAAO;AAAA,EACP,WAAW;AAAA,EACX,UAAU;AAAA,EACV,cAAc;AAAA,EACd,YAAY;AAAA,EACZ,YAAY;AAAA,EACZ,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,MAAM;AAAA,EACN,SAAS;AAAA,EACT,cAAc;AAAA,EACd,UAAU;AAAA,EACV,UAAU;AAAA,EACV,SAAS;AAAA,EACT,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,SAAS;AAAA,EACT,aAAa;AAAA,EACb,WAAW;AAAA,EACX,SAAS;AACX,GAEMC,KAAiB;AAAA,EACrB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AACR,GAEMC,KAAe;AAAA,EACnB,YAAY;AAAA,EACZ,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,WAAW;AAAA,EACX,WAAW;AAAA,EACX,WAAW;AACb,GAEMC,KAAiB;AAAA,EACrB,MAAM;AAAA,EACN,UAAU;AACZ;AAKO,SAASC,GAAeC,GAAO;AACpC,QAAMC,IAAO,CAAA;AAEb,SAAID,GAAO,UACT,OAAO,QAAQL,EAAa,EAAE,QAAQ,CAAC,CAACR,GAAKe,CAAM,MAAM;AACvD,IAAIF,EAAM,OAAOb,CAAG,KAAK,SAAMc,EAAKC,CAAM,IAAIF,EAAM,OAAOb,CAAG;AAAA,EAChE,CAAC,GAGCa,GAAO,SACT,OAAO,QAAQJ,EAAc,EAAE,QAAQ,CAAC,CAACT,GAAKe,CAAM,MAAM;AACxD,IAAIF,EAAM,MAAMb,CAAG,KAAK,SAAMc,EAAKC,CAAM,IAAIF,EAAM,MAAMb,CAAG;AAAA,EAC9D,CAAC,GAGCa,GAAO,cACT,OAAO,QAAQH,EAAY,EAAE,QAAQ,CAAC,CAACV,GAAKe,CAAM,MAAM;AACtD,IAAIF,EAAM,WAAWb,CAAG,KAAK,SAAMc,EAAKC,CAAM,IAAIF,EAAM,WAAWb,CAAG;AAAA,EACxE,CAAC,GAGCa,GAAO,UACT,OAAO,QAAQF,EAAc,EAAE,QAAQ,CAAC,CAACX,GAAKe,CAAM,MAAM;AACxD,IAAIF,EAAM,OAAOb,CAAG,KAAK,SAAMc,EAAKC,CAAM,IAAIF,EAAM,OAAOb,CAAG;AAAA,EAChE,CAAC,GAICc,EAAK,iBAAiB,KAAK,CAACA,EAAK,YAAY,MAC/CA,EAAK,YAAY,IAAIA,EAAK,iBAAiB,IAGtCA;AACT;ACxJA,MAAME,KAAehC,EAAc;AAAA,EACjC,UAAU;AAAA,EACV,OAAO;AAAA,EACP,WAAWS;AAAA,EACX,SAAS,CAAA;AACX,CAAC;AAQM,SAASwB,GAAc,EAAE,OAAAJ,GAAO,UAAAP,IAAW,IAAO,UAAApB,KAAY;AACnE,QAAMS,IAAQuB,EAAQ,MAAM;AAC1B,UAAMC,IAASf,GAAmBS,GAAO,EAAQP,CAAS,GACpDc,IAAUR,GAAeO,CAAM;AACrC,WAAO;AAAA,MACL,UAAU,EAAQb;AAAA,MAClB,OAAOa;AAAA,MACP,WAAWA,EAAO;AAAA,MAClB,SAAAC;AAAA,MACA,MAAMD,EAAO;AAAA,IAAA;AAAA,EAEjB,GAAG,CAACN,GAAOP,CAAQ,CAAC;AAEpB,SACE,gBAAAhB,EAAC0B,GAAa,UAAb,EAAsB,OAAArB,GAAe,UAAAT,EAAA,CAAS;AAEnD;AAGO,SAASmC,KAAW;AACzB,SAAOC,GAAWN,EAAY;AAChC;ACjCA,SAAwBO,EAAO;AAAA,EAC7B,UAAArC;AAAA,EACA,SAAAsC,IAAU;AAAA,EACV,MAAAC,IAAO;AAAA,EACP,WAAAC;AAAA,EACA,SAAAC;AAAA,EACA,WAAAC,IAAY;AAAA,EACZ,MAAAC,IAAO;AAAA,EACP,UAAAC,IAAW;AAAA,EACX,SAAAC;AAAA,EACA,GAAGC;AACL,GAAG;AACD,QAAMC,IAAU;AAAA,IACd;AAAA,IACA,WAAWT,CAAO;AAAA,IAClBC,MAAS,OAAO,eAAe;AAAA,IAC/BA,MAAS,OAAO,eAAe;AAAA,IAC/BG;AAAA,EAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAEX,SACE,gBAAAM;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAAL;AAAA,MACA,WAAWI;AAAA,MACX,UAAAH;AAAA,MACA,SAAAC;AAAA,MACC,GAAGC;AAAA,MAEH,UAAA;AAAA,QAAAN,IAAY,gBAAApC,EAAC,QAAA,EAAK,WAAU,gBAAgB,aAAU,IAAU;AAAA,QAChEJ;AAAA,QACAyC,IAAU,gBAAArC,EAAC,QAAA,EAAK,WAAU,gBAAgB,aAAQ,IAAU;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnE;ACrCA,SAAwB6C,GAAS,EAAE,MAAAV,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AAChF,SACE,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAOmC;AAAA,MACP,QAAQA;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,eAAY;AAAA,MACX,GAAGO;AAAA,MAEJ,UAAA,gBAAA1C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAQ8C;AAAA,UACR,aAAY;AAAA,UACZ,eAAc;AAAA,QAAA;AAAA,MAAA;AAAA,IAChB;AAAA,EAAA;AAGN;ACpBA,MAAMC,KAAgB;AAAA,EACpB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AACR,GAEMC,KAAc;AAAA,EAClB,IAAI;AAAA,EACJ,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,MAAM;AACR;AAKA,SAAwBC,EAAW;AAAA,EACjC,SAAAf,IAAU;AAAA,EACV,IAAAgB;AAAA,EACA,WAAAZ,IAAY;AAAA,EACZ,UAAA1C;AAAA,EACA,GAAG8C;AACL,GAAG;AACD,QAAMS,IAAMD,KAAMF,GAAYd,CAAO,KAAK,KACpCkB,IAAYL,GAAcb,CAAO,KAAKa,GAAc;AAE1D,SACE,gBAAA/C,EAACmD,GAAA,EAAI,WAAW,GAAGC,CAAS,IAAId,CAAS,GAAG,KAAA,GAAS,GAAGI,GACrD,UAAA9C,EAAA,CACH;AAEJ;AAEO,SAASyD,GAASX,GAAO;AAC9B,SAAO,gBAAA1C,EAACiD,GAAA,EAAW,SAAQ,MAAM,GAAGP,GAAO;AAC7C;AAEO,SAASY,EAASZ,GAAO;AAC9B,SAAO,gBAAA1C,EAACiD,GAAA,EAAW,SAAQ,MAAM,GAAGP,GAAO;AAC7C;AAEO,SAASa,EAASb,GAAO;AAC9B,SAAO,gBAAA1C,EAACiD,GAAA,EAAW,SAAQ,QAAQ,GAAGP,GAAO;AAC/C;AAEO,SAASc,EAAUd,GAAO;AAC/B,SAAO,gBAAA1C,EAACiD,GAAA,EAAW,SAAQ,SAAS,GAAGP,GAAO;AAChD;AAEO,SAASe,GAAUf,GAAO;AAC/B,SAAO,gBAAA1C,EAACiD,GAAA,EAAW,SAAQ,SAAS,GAAGP,GAAO;AAChD;AAEO,SAASgB,GAAShB,GAAO;AAC9B,2BAAQO,GAAA,EAAW,SAAQ,QAAO,MAAK,UAAU,GAAGP,GAAO;AAC7D;ACxDA,SAAwBiB,GAAW;AAAA,EACjC,OAAAC,IAAQ;AAAA,EACR,aAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,UAAAC;AAAA,EACA,WAAAzB,IAAY;AACd,GAAG;AACD,2BACG,UAAA,EAAO,WAAW,kBAAkBA,CAAS,GAAG,QAC/C,UAAA;AAAA,IAAA,gBAAAM,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,MAAA,gBAAA5C,EAACqD,MAAU,UAAAO,EAAA,CAAM;AAAA,MAChBC,IAAc,gBAAA7D,EAACuD,GAAA,EAAU,UAAAM,EAAA,CAAY,IAAc;AAAA,IAAA,GACtD;AAAA,IACA,gBAAA7D,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA,gBAAAA,EAACiC,GAAA,EAAO,WAAW,gBAAAjC,EAAC6C,IAAA,CAAA,CAAS,GAAI,SAASkB,GACvC,aACH,EAAA,CACF;AAAA,EAAA,GACF;AAEJ;ACtBA,SAAwBC,GAAY,EAAE,QAAAC,IAAS,YAAY,OAAAC,GAAO,WAAA5B,IAAY,MAAM;AAElF,QAAM6B,IADa,OAAOF,CAAM,EAAE,YAAA,MACF,UAC1BG,IAAOF,MAAUC,IAAW,WAAW;AAE7C,SACE,gBAAAnE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,sBAAsBmE,IAAW,WAAW,UAAU,IAAI7B,CAAS,GAAG,KAAA;AAAA,MAEhF,UAAA8B;AAAA,IAAA;AAAA,EAAA;AAGP;ACXA,SAAwBC,GAAW;AAAA,EACjC,OAAAT;AAAA,EACA,QAAAK;AAAA,EACA,aAAAK;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,WAAAlC,IAAY;AACd,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,0BAA0BA,CAAS,GAAG,QACpD,UAAA;AAAA,IAAA,gBAAAtC,EAAC,OAAA,EAAI,WAAU,8BACZ,UAAAuE,IACC,gBAAAvE;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAASwE;AAAA,QAER,UAAAZ;AAAA,MAAA;AAAA,IAAA,IAGH,gBAAA5D,EAACsD,GAAA,EAAU,UAAAM,EAAA,CAAM,EAAA,CAErB;AAAA,IACA,gBAAA5D,EAACgE,IAAA,EAAY,QAAAC,GAAgB,OAAOK,EAAA,CAAa;AAAA,EAAA,GACnD;AAEJ;AC9BA,SAAwBG,EAAiB,EAAE,MAAAtC,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AACxF,SACE,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAOmC;AAAA,MACP,QAAQA;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,eAAY;AAAA,MACX,GAAGO;AAAA,MAEJ,UAAA,gBAAA1C;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,GAAE;AAAA,UACF,QAAQ8C;AAAA,UACR,aAAY;AAAA,UACZ,eAAc;AAAA,UACd,gBAAe;AAAA,QAAA;AAAA,MAAA;AAAA,IACjB;AAAA,EAAA;AAGN;ACfA,SAAwB4B,GAAW;AAAA,EACjC,WAAAC;AAAA,EACA,gBAAAC,IAAiB;AAAA,EACjB,aAAAC;AAAA,EACA,WAAAvC,IAAY;AACd,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,0BAA0BA,CAAS,GAAG,QACpD,UAAA;AAAA,IAAA,gBAAAtC,EAACiD,GAAA,EAAW,SAAQ,SAAQ,IAAG,QAC5B,UAAA0B,IAAY,cAAcA,CAAS,KAAK,GAAA,CAC3C;AAAA,IACA,gBAAA3E;AAAA,MAACiC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAAS4C;AAAA,QACT,SAAS,gBAAA7E,EAACyE,GAAA,EAAiB,MAAM,IAAI,OAAM,QAAO;AAAA,QAEjD,UAAAG;AAAA,MAAA;AAAA,IAAA;AAAA,EACH,GACF;AAEJ;ACtBA,SAAwBE,GAAU,EAAE,OAAAZ,GAAO,OAAA7D,GAAO,WAAAiC,IAAY,MAAM;AAClE,QAAMyC,IACJ1E,KAAU,OACN,MACA,OAAOA,KAAU,WACf,OAAOA,CAAK,EAAE,SAAS,GAAG,GAAG,IAC7BA;AAER,2BACG,OAAA,EAAI,WAAW,iBAAiBiC,CAAS,GAAG,QAC3C,UAAA;AAAA,IAAA,gBAAAtC,EAACwD,KAAW,UAAAU,EAAA,CAAM;AAAA,IAClB,gBAAAlE,EAACyD,MAAW,UAAAsB,EAAA,CAAQ;AAAA,EAAA,GACtB;AAEJ;ACjBA,SAAwBC,GAAQ,EAAE,WAAA1C,IAAY,MAAM;AAClD,SAAO,gBAAAtC,EAAC,OAAA,EAAI,WAAW,cAAcsC,CAAS,GAAG,KAAA,GAAQ,MAAK,aAAY,oBAAiB,WAAA,CAAW;AACxG;ACOA,SAAwB2C,GAAW;AAAA,EACjC,IAAAC;AAAA,EACA,OAAAtB;AAAA,EACA,QAAAK,IAAS;AAAA,EACT,aAAAK;AAAA,EACA,aAAAT;AAAA,EACA,iBAAAsB;AAAA,EACA,aAAAC;AAAA,EACA,WAAAC;AAAA,EACA,QAAAC;AAAA,EACA,aAAAC;AAAA,EACA,WAAAZ;AAAA,EACA,aAAAJ,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,oBAAAgB;AAAA,EACA,aAAAX;AAAA,EACA,WAAAvC,IAAY;AACd,GAAG;AACD,QAAMmD,IAAkB,MAAM;AAC5B,IAAAZ,IAAc;AAAA,MACZ,IAAAK;AAAA,MACA,OAAAtB;AAAA,MACA,QAAAK;AAAA,MACA,aAAAmB;AAAA,MACA,WAAAC;AAAA,MACA,QAAAC;AAAA,MACA,aAAAC;AAAA,MACA,WAAAZ;AAAA,IAAA,CACD;AAAA,EACH,GAEMe,IAAoB,MAAM;AAC9B,QAAIF,GAAoB;AACtB,MAAAA,EAAmB,EAAE,IAAAN,GAAI,OAAAtB,GAAO,iBAAAuB,EAAA,CAAiB;AACjD;AAAA,IACF;AACA,IAAIA,KAAmB,OAAO,SAAW,OACvC,OAAO,KAAKA,GAAiB,UAAU,qBAAqB;AAAA,EAEhE,GAEMQ,IAAQ;AAAA,IACZ,EAAE,OAAO,eAAe,OAAOP,EAAA;AAAA,IAC/B,EAAE,OAAO,aAAa,OAAOC,EAAA;AAAA,IAC7B,EAAE,OAAO,UAAU,OAAOC,EAAA;AAAA,IAC1B,EAAE,OAAO,gBAAgB,OAAOC,EAAA;AAAA,EAAY;AAG9C,2BACG,WAAA,EAAQ,WAAW,kBAAkBjD,CAAS,GAAG,QAChD,UAAA;AAAA,IAAA,gBAAAtC;AAAA,MAACqE;AAAA,MAAA;AAAA,QACC,OAAAT;AAAA,QACA,QAAAK;AAAA,QACA,aAAAK;AAAA,QACA,aAAAC;AAAA,QACA,cAAc,MAAMC,IAAe,EAAE,IAAAU,GAAI,OAAAtB,GAAO;AAAA,MAAA;AAAA,IAAA;AAAA,IAGjDC,IACC,gBAAA7D,EAAC0D,IAAA,EAAS,SAASgC,GAAoB,aAAY,IACjD;AAAA,IAEJ,gBAAA1F,EAAC,OAAA,EAAI,WAAU,yBACZ,UAAA2F,EAAM,IAAI,CAACC,GAAMC,MAChB,gBAAAjD,EAACkD,GAAM,UAAN,EACE,UAAA;AAAA,MAAAD,IAAQ,IAAI,gBAAA7F,EAACgF,IAAA,CAAA,CAAQ,IAAK;AAAA,wBAC1BF,IAAA,EAAU,OAAOc,EAAK,OAAO,OAAOA,EAAK,MAAA,CAAO;AAAA,IAAA,EAAA,GAF9BA,EAAK,KAG1B,CACD,GACH;AAAA,IAEA,gBAAA5F,EAAC0E,IAAA,EAAW,WAAAC,GAAsB,aAAac,EAAA,CAAiB;AAAA,EAAA,GAClE;AAEJ;AC/EA,SAAwBM,GAAe;AAAA,EACrC,SAAAC,IAAU,CAAA;AAAA,EACV,aAAAnB;AAAA,EACA,cAAAL;AAAA,EACA,oBAAAgB;AAAA,EACA,cAAAS,IAAe;AAAA,EACf,WAAA3D,IAAY;AACd,GAAG;AACD,SAAK0D,EAAQ,SAWX,gBAAAhG,EAAC,OAAA,EAAI,WAAW,kBAAkBsC,CAAS,GAAG,KAAA,GAC3C,UAAA0D,EAAQ,IAAI,CAACE,MACZ,gBAAAlG;AAAA,IAACiF;AAAA,IAAA;AAAA,MAEE,GAAGiB;AAAA,MACJ,aAAArB;AAAA,MACA,cAAAL;AAAA,MACA,oBAAAgB;AAAA,IAAA;AAAA,IAJKU,EAAO,MAAMA,EAAO;AAAA,EAAA,CAM5B,GACH,sBAnBG,OAAA,EAAI,WAAW,kBAAkB5D,CAAS,GAAG,QAC5C,UAAA,gBAAAtC,EAAC,OAAA,EAAI,WAAU,YACb,UAAA,gBAAAA,EAACuD,GAAA,EAAU,UAAA0C,EAAA,CAAa,GAC1B,GACF;AAiBN;ACjCA,SAAwBE,EAAM;AAAA,EAC5B,OAAA9F;AAAA,EACA,UAAA+F;AAAA,EACA,aAAAC;AAAA,EACA,MAAA9D,IAAO;AAAA,EACP,MAAA+D;AAAA,EACA,WAAAhE,IAAY;AAAA,EACZ,gBAAAiE,IAAiB;AAAA,EACjB,GAAG7D;AACL,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,iBAAiBJ,CAAS,GAAG,QAC1C,UAAA;AAAA,IAAAgE,IAAO,gBAAAtG,EAAC,QAAA,EAAK,WAAU,uBAAuB,aAAK,IAAU;AAAA,IAC9D,gBAAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAAuC;AAAA,QACA,WAAW,YAAY+D,IAAO,wBAAwB,EAAE,IAAIC,CAAc,GAAG,KAAA;AAAA,QAC7E,OAAAlG;AAAA,QACA,UAAA+F;AAAA,QACA,aAAAC;AAAA,QACC,GAAG3D;AAAA,MAAA;AAAA,IAAA;AAAA,EACN,GACF;AAEJ;ACzBA,SAAwB8D,GAAW,EAAE,MAAArE,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AAClF,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAOT;AAAA,MACP,QAAQA;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,eAAY;AAAA,MACX,GAAGO;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAA1C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAQ8C;AAAA,YACR,aAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEd,gBAAA9C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAQ8C;AAAA,YACR,aAAY;AAAA,YACZ,eAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA;AAAA,EAAA;AAGN;ACpBA,SAAwB2D,GAAU;AAAA,EAChC,OAAApG;AAAA,EACA,UAAA+F;AAAA,EACA,UAAAM;AAAA,EACA,aAAAL,IAAc;AAAA,EACd,WAAA/D,IAAY;AACd,GAAG;AACD,QAAMqE,IAAgB,CAACC,MAAM;AAC3B,IAAIA,EAAE,QAAQ,WAAWF,KACvBA,EAASrG,CAAK;AAAA,EAElB;AAEA,2BACG,OAAA,EAAI,WAAW,aAAaiC,CAAS,GAAG,QACvC,UAAA,gBAAAtC;AAAA,IAACmG;AAAA,IAAA;AAAA,MACC,OAAA9F;AAAA,MACA,UAAA+F;AAAA,MACA,WAAWO;AAAA,MACX,aAAAN;AAAA,MACA,wBAAOG,IAAA,EAAW;AAAA,MAClB,cAAYH;AAAA,IAAA;AAAA,EAAA,GAEhB;AAEJ;AC3BA,SAAwBQ,GAAQ,EAAE,MAAAzC,IAAO,WAAW,YAAA0C,IAAa,MAAS;AACxE,SACE,gBAAAlE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,OAAOkE,IAAa,EAAE,WAAW,yBAAyB;AAAA,MAC1D,MAAK;AAAA,MACL,aAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAA9G,EAAC,QAAA,EAAK,WAAU,sBAAA,CAAsB;AAAA,0BACrC,QAAA,EAAM,UAAA;AAAA,UAAAoE;AAAA,UAAK;AAAA,QAAA,EAAA,CAAC;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGnB;AChBY,MAAC2C,KAAe;AAAA,EAC1B;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,IACX,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,EACf;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,EACf;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,OAAO;AAAA,IACP,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,aAAa;AAAA,IACb,WAAW;AAAA,IACX,QAAQ;AAAA,IACR,aAAa;AAAA,IACb,WAAW;AAAA,EACf;AACA,GAEaC,KACX;ACtCF,SAASC,GAAiBC,IAAO,IAAI;AACnC,SAAOA,EAAK,IAAI,CAACC,GAAMtB,OAAW;AAAA,IAChC,IAAIsB,EAAK,MAAMA,EAAK,OAAO,UAAUtB,CAAK;AAAA,IAC1C,OAAOsB,EAAK,SAASA,EAAK,QAAQ;AAAA,IAClC,QAAQA,EAAK,UAAU;AAAA,IACvB,aAAaA,EAAK;AAAA,IAClB,aAAaA,EAAK,eAAeA,EAAK;AAAA,IACtC,iBAAiBA,EAAK,mBAAmBA,EAAK;AAAA,IAC9C,aAAaA,EAAK,eAAeA,EAAK,mBAAmB;AAAA,IACzD,WAAWA,EAAK,aAAaA,EAAK,iBAAiB;AAAA,IACnD,QAAQA,EAAK,UAAUA,EAAK,cAAc;AAAA,IAC1C,aAAaA,EAAK,eAAeA,EAAK,mBAAmBA,EAAK,gBAAgB;AAAA,IAC9E,WAAWA,EAAK,aAAaA,EAAK,aAAaA,EAAK;AAAA,IACpD,aAAa,GAAQA,EAAK,eAAeA,EAAK;AAAA,EAAM,EACpD;AACJ;AAUA,SAAwBC,GAAwB;AAAA,EAC9C,OAAAxD,IAAQ;AAAA,EACR,aAAAC,IAAcmD;AAAA,EACd,SAASK;AAAA,EACT,iBAAAC;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,aAAAC,IAAc;AAAA,EACd,cAAAC;AAAA,EACA,aAAA5C;AAAA,EACA,cAAAL;AAAA,EACA,oBAAAgB;AAAA,EACA,UAAAkB;AACF,GAAG;AACD,QAAMgB,IAAWC,GAAA,GACX,CAACC,GAAQC,CAAS,IAAIC,EAAS,EAAE,GACjC,CAACC,GAAgBC,CAAiB,IAAIF,EAAS,IAAI,GACnD,CAACG,GAAYC,CAAa,IAAIJ,EAAS,IAAI,GAC3C,CAACK,GAAaC,CAAc,IAAIN;AAAA,IACpCR,KAAmB,CAACD,IAAc,YAAY;AAAA,EAAA;AAGhD,EAAAtH,EAAU,MAAM;AACd,QAAI,CAACuH,KAAmBD;AACtB;AAGF,UAAMgB,IAAa,IAAI,gBAAA;AAEvBC,WAAAA,EACG,IAAIhB,GAAiB,EAAE,QAAQe,EAAW,QAAQ,EAClD,KAAK,CAACnJ,MAAa;AAClB,YAAMqJ,IAAUrJ,GAAU,MACpBgI,KAAO,MAAM,QAAQqB,CAAO,IAC9BA,IACAA,GAAS,QAAQA,GAAS,WAAWA,GAAS,WAAW,CAAA;AAC7D,MAAAP,EAAkBf,GAAiBC,EAAI,CAAC,GACxCgB,EAAc,IAAI,GAClBE,EAAe,SAAS;AAAA,IAC1B,CAAC,EACA,MAAM,CAACI,MAAQ;AACd,MAAIH,EAAW,OAAO,YACtBH,EAAcM,GAAK,WAAW,wBAAwB,GACtDR,EAAkB,CAAA,CAAE,GACpBI,EAAe,OAAO;AAAA,IACxB,CAAC,GAEI,MAAMC,EAAW,MAAA;AAAA,EAC1B,GAAG,CAACf,GAAiBD,CAAW,CAAC;AAEjC,QAAMoB,IAAgB7G,EAAQ,MACxByF,IAAoBJ,GAAiBI,CAAW,IAChDU,MACAR,IAAoBR,KACjB,CAAA,IACN,CAACM,GAAaU,GAAgBR,CAAW,CAAC,GAEvCmB,KAAkB9G,EAAQ,MAAM;AACpC,UAAM+G,IAAIf,EAAO,KAAA,EAAO,YAAA;AACxB,WAAKe,IACEF,EAAc,OAAO,CAACG,MACV,GAAGA,EAAE,KAAK,IAAIA,EAAE,eAAe,EAAE,IAAIA,EAAE,UAAU,EAAE,GAAG,YAAA,EACvD,SAASD,CAAC,CAC3B,IAJcF;AAAA,EAKjB,GAAG,CAACA,GAAeb,CAAM,CAAC;AAe1B,SACE,gBAAAhF,EAAAiG,IAAA,EACE,UAAA;AAAA,IAAA,gBAAA7I;AAAA,MAAC2D;AAAA,MAAA;AAAA,QACC,OAAAC;AAAA,QACA,aAAAC;AAAA,QACA,aAAa2D;AAAA,QACb,UAAUC;AAAA,MAAA;AAAA,IAAA;AAAA,sBAGXhB,IAAA,EAAU,OAAOmB,GAAQ,UAtBH,CAAChB,MAAM;AAChC,YAAMjG,IAAOiG,EAAE,OAAO;AACtB,MAAAiB,EAAUlH,CAAI,GACd+F,IAAW/F,CAAI;AAAA,IACjB,GAkB4D,aAAY,UAAS;AAAA,IAXjEwH,MAAgB,YAc1B,gBAAAnI,EAAC6G,IAAA,EAAQ,MAAK,kBAAA,CAAkB,IAC9BoB,IACF,gBAAAjI,EAAC,OAAA,EAAI,WAAU,YACb,UAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,WAAW,UAAAiI,EAAA,CAAW,GACrC,IAEA,gBAAAjI;AAAA,MAAC+F;AAAA,MAAA;AAAA,QACC,SAAS2C;AAAA,QACT,aA3BgB,CAACxC,MAAW;AAClC,UAAArB,IAAcqB,CAAM,GACpBwB,EAAS,aAAaxB,EAAO,MAAM,KAAK,SAAS;AAAA,QACnD;AAAA,QAyBQ,cAAA1B;AAAA,QACA,oBAAAgB;AAAA,QACA,cAAcoC,IAAS,kCAAkC;AAAA,MAAA;AAAA,IAAA;AAAA,EAC3D,GAEJ;AAEJ;ACzIA,SAAwBkB,GAAQ;AAAA,EAC9B,OAAAC,IAAQ,CAAA;AAAA,EACR,aAAAC,IAAc;AAAA,EACd,aAAAC;AAAA,EACA,WAAA3G,IAAY;AAAA,EACZ,MAAAH,IAAO;AACT,GAAG;AACD,SACE,gBAAAnC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,0BAA0BmC,CAAI,IAAIG,CAAS,GAAG,KAAA;AAAA,MACzD,cAAW;AAAA,MAEV,UAAAyG,EAAM,IAAI,CAACG,GAAMrD,MAAU;AAC1B,cAAMsD,IAASD,EAAK,MAAMrD,IAAQ,GAC5B1B,IAAWgF,MAAWH,GACtBI,IAASD,IAASH,GAClBK,IAAY,EAAQJ,MAAiBG,KAAUjF;AAErD,eACE,gBAAAvB,EAACkD,GAAM,UAAN,EACE,UAAA;AAAA,UAAAD,IAAQ,IACP,gBAAA7F;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAW,oBAAoBoJ,KAAUjF,IAAW,6BAA6B,EAAE;AAAA,YAAA;AAAA,UAAA,IAEnF;AAAA,UACJ,gBAAAvB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAW;AAAA,gBACT;AAAA,gBACAuB,IAAW,6BAA6B;AAAA,gBACxCiF,IAAS,2BAA2B;AAAA,cAAA,EAEnC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,cACX,SAAS,MAAMC,KAAaJ,IAAcE,CAAM;AAAA,cAChD,UAAU,CAACE;AAAA,cACX,gBAAclF,IAAW,SAAS;AAAA,cAElC,UAAA;AAAA,gBAAA,gBAAAnE,EAAC,QAAA,EAAK,WAAU,sBAAsB,UAAAmJ,GAAO;AAAA,gBAC7C,gBAAAnJ,EAAC,QAAA,EAAK,WAAU,qBAAqB,YAAK,MAAA,CAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,QAClD,EAAA,GArBmBmJ,CAsBrB;AAAA,MAEJ,CAAC;AAAA,IAAA;AAAA,EAAA;AAGP;AClDA,MAAMG,KAAwB5J,EAAc,IAAI,GAE1C6J,KAAe;AAAA,EACnB,cAAc;AAAA,EACd,QAAQ;AAAA,EACR,aAAa;AAAA,EACb,OAAO,CAAC,eAAe,gBAAgB,YAAY;AAAA,EACnD,gBAAgB;AAAA,IACd,EAAE,IAAI,KAAK,YAAY,IAAI,eAAe,IAAI,OAAO,GAAA;AAAA,EAAG;AAAA,EAE1D,eAAe;AAAA,EACf,YAAY,CAAA;AAAA,EACZ,mBAAmB;AAAA,EACnB,kBAAkB;AAAA,EAClB,UAAU;AAAA,IACR,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,UAAU,CAAA;AAAA,IACV,OAAO,CAAA;AAAA,EAAC;AAAA,EAEV,YAAY,EAAE,MAAM,IAAI,MAAM,GAAA;AAAA,EAC9B,YAAY,CAAA;AACd;AAEO,SAASC,GAAuB,EAAE,UAAA5J,GAAU,eAAA6J,KAAiB;AAClE,QAAM,CAACC,GAAOC,CAAQ,IAAI7B,EAAS,EAAE,GAAGyB,IAAc,GAAGE,GAAe,GAElEG,IAASC,EAAY,CAACC,MAAU;AACpC,IAAAH,EAAS,CAACI,OAAU,EAAE,GAAGA,GAAM,GAAGD,IAAQ;AAAA,EAC5C,GAAG,CAAA,CAAE,GAECE,IAAiBH,EAAY,CAACC,MAAU;AAC5C,IAAAH,EAAS,CAACI,OAAU;AAAA,MAClB,GAAGA;AAAA,MACH,UAAU,EAAE,GAAGA,EAAK,UAAU,GAAGD,EAAA;AAAA,IAAM,EACvC;AAAA,EACJ,GAAG,CAAA,CAAE,GAECzJ,IAAQuB;AAAA,IACZ,OAAO,EAAE,OAAA8H,GAAO,UAAAC,GAAU,QAAAC,GAAQ,gBAAAI,EAAA;AAAA,IAClC,CAACN,GAAOE,GAAQI,CAAc;AAAA,EAAA;AAGhC,SACE,gBAAAhK,EAACsJ,GAAsB,UAAtB,EAA+B,OAAAjJ,GAC7B,UAAAT,EAAA,CACH;AAEJ;AAIO,SAASqK,IAAoB;AAClC,QAAMC,IAAMlI,GAAWsH,EAAqB;AAC5C,MAAI,CAACY;AACH,UAAM,IAAI,MAAM,8DAA8D;AAEhF,SAAOA;AACT;AC5DY,MAACC,IAAiB;AAAA,EAC5B;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,KAAK;AAAA,IACL,OAAO;AAAA,IACP,OAAO;AAAA,IACP,aAAa;AAAA,EACjB;AACA,GAEaC,KAAoB;AAAA,EAC/B,EAAE,IAAI,GAAG,OAAO,kBAAiB;AAAA,EACjC,EAAE,IAAI,GAAG,OAAO,WAAU;AAAA,EAC1B,EAAE,IAAI,GAAG,OAAO,iBAAgB;AAClC,GAEaC,KAAmB,CAAC,UAAU,QAAQ,UAAU,KAAK,GAErDC,KAAgB;AAAA,EAC3B,EAAE,IAAI,SAAS,OAAO,4BAA4B,MAAM,OAAM;AAAA,EAC9D,EAAE,IAAI,QAAQ,OAAO,6BAA6B,MAAM,MAAK;AAAA,EAC7D,EAAE,IAAI,QAAQ,OAAO,QAAQ,MAAM,WAAU;AAAA,EAC7C,EAAE,IAAI,QAAQ,OAAO,QAAQ,MAAM,QAAO;AAAA,EAC1C,EAAE,IAAI,UAAU,OAAO,4BAA4B,MAAM,UAAS;AAAA,EAClE,EAAE,IAAI,SAAS,OAAO,8BAA8B,MAAM,UAAS;AACrE,GAEaC,KAAa;AAAA,EACxB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAEaC,KAAsB;AAAA,EACjC,EAAE,OAAO,OAAO,OAAO,gCAA+B;AAAA,EACtD,EAAE,OAAO,OAAO,OAAO,oCAAmC;AAAA,EAC1D,EAAE,OAAO,OAAO,OAAO,mCAAkC;AAAA,EACzD,EAAE,OAAO,OAAO,OAAO,kCAAiC;AAC1D,GAEaC,KAAwB;AAAA,EACnC;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU;AAAA,MACR,EAAE,IAAI,WAAW,MAAM,UAAS;AAAA,MAChC,EAAE,IAAI,eAAe,MAAM,cAAa;AAAA,IAC9C;AAAA,EACA;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU,CAAC,EAAE,IAAI,MAAM,MAAM,mBAAkB,CAAE;AAAA,EACrD;AAAA,EACE;AAAA,IACE,IAAI;AAAA,IACJ,MAAM;AAAA,IACN,UAAU,CAAA;AAAA,EACd;AACA,GAEaC,KAAkB;AAAA,EAC7B,EAAE,OAAO,WAAW,OAAO,MAAK;AAAA,EAChC,EAAE,OAAO,WAAW,OAAO,SAAQ;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,SAAQ;AAAA,EACnC,EAAE,OAAO,WAAW,OAAO,QAAO;AAAA,EAClC,EAAE,OAAO,WAAW,OAAO,OAAM;AAAA,EACjC,EAAE,OAAO,WAAW,OAAO,SAAQ;AACrC;ACvGA,SAAwBC,GAAW,EAAE,MAAAxI,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AAClF,SACE,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,OAAOT;AAAA,MACP,QAAQA;AAAA,MACR,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,eAAY;AAAA,MACZ,OAAO,EAAE,OAAO,oBAAA;AAAA,MACf,GAAGO;AAAA,MAEJ,UAAA;AAAA,QAAA,gBAAA1C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAQ8C;AAAA,YACR,aAAY;AAAA,YACZ,gBAAe;AAAA,UAAA;AAAA,QAAA;AAAA,QAEjB,gBAAA9C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAQ8C;AAAA,YACR,aAAY;AAAA,YACZ,gBAAe;AAAA,YACf,eAAc;AAAA,UAAA;AAAA,QAAA;AAAA,QAEhB,gBAAA9C;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,GAAE;AAAA,YACF,QAAQ8C;AAAA,YACR,aAAY;AAAA,YACZ,gBAAe;AAAA,YACf,eAAc;AAAA,UAAA;AAAA,QAAA;AAAA,MAChB;AAAA,IAAA;AAAA,EAAA;AAGN;AC3BA,SAAwB8H,GAAmB;AAAA,EACzC,OAAAhH;AAAA,EACA,aAAAC;AAAA,EACA,WAAAgH,IAAY;AAAA,EACZ,QAAAC;AAAA,EACA,UAAAC,IAAW;AAAA,EACX,cAAAC,IAAe;AAAA,EACf,aAAAC,IAAc;AAAA,EACd,WAAA3I,IAAY;AACd,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,4BAA4BA,CAAS,GAAG,QACtD,UAAA;AAAA,IAAA,gBAAAM,EAAC,OAAA,EAAI,WAAU,6BACb,UAAA;AAAA,MAAA,gBAAA5C,EAAC2K,IAAA,EAAW;AAAA,wBACX,OAAA,EACC,UAAA;AAAA,QAAA,gBAAA3K,EAACsD,KAAU,UAAAM,EAAA,CAAM;AAAA,QAChBC,IAAc,gBAAA7D,EAACuD,GAAA,EAAS,WAAU,0BAA0B,aAAY,IAAc;AAAA,MAAA,EAAA,CACzF;AAAA,IAAA,GACF;AAAA,IACCwH,IACC,gBAAA/K;AAAA,MAACiC;AAAA,MAAA;AAAA,QACC,SAASgJ;AAAA,QACT,UAAUD;AAAA,QACV,SAASF;AAAA,QACT,SAAS,gBAAA9K,EAACyE,GAAA,EAAiB,MAAM,IAAI,OAAM,gBAAe;AAAA,QAEzD,UAAAoG;AAAA,MAAA;AAAA,IAAA,IAED;AAAA,EAAA,GACN;AAEJ;AClCA,SAAwBK,EAAa;AAAA,EACnC,OAAAtH;AAAA,EACA,aAAAC;AAAA,EACA,QAAAiH;AAAA,EACA,WAAAD;AAAA,EACA,UAAAE,IAAW;AAAA,EACX,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,UAAArL;AAAA,EACA,QAAAuL;AAAA,EACA,WAAA7I,IAAY;AACd,GAAG;AACD,2BACG,WAAA,EAAQ,WAAW,oBAAoBA,CAAS,GAAG,QAClD,UAAA;AAAA,IAAA,gBAAAtC;AAAA,MAAC4K;AAAA,MAAA;AAAA,QACC,OAAAhH;AAAA,QACA,aAAAC;AAAA,QACA,QAAAiH;AAAA,QACA,WAAAD;AAAA,QACA,UAAAE;AAAA,QACA,cAAAC;AAAA,QACA,aAAAC;AAAA,MAAA;AAAA,IAAA;AAAA,IAEF,gBAAAjL,EAAC,OAAA,EAAI,WAAU,4BAAA,CAA4B;AAAA,IAC3C,gBAAAA,EAAC,OAAA,EAAI,WAAU,0BAA0B,UAAAJ,EAAA,CAAS;AAAA,IACjDuL,IAAS,gBAAAnL,EAAC,OAAA,EAAI,WAAU,4BAA4B,aAAO,IAAS;AAAA,EAAA,GACvE;AAEJ;AC7BA,SAAwBoL,EAAW,EAAE,UAAAxL,GAAU,MAAAyL,GAAM,SAAAC,GAAS,WAAAhJ,IAAY,MAAM;AAC9E,2BACG,OAAA,EAAI,WAAW,kBAAkBA,CAAS,GAAG,QAC5C,UAAA;AAAA,IAAA,gBAAAtC,EAAC,SAAA,EAAM,WAAU,YAAW,SAAAsL,GACzB,UAAA1L,GACH;AAAA,IACCyL,KAAQ,OAAO,gBAAArL,EAAC,UAAK,WAAU,wBAAwB,aAAK,IAAU;AAAA,EAAA,GACzE;AAEJ;ACZA,SAAwBuL,GAAgB,EAAE,MAAApJ,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AACvF,SACE,gBAAA1C,EAAC,OAAA,EAAI,OAAOmC,GAAM,QAAQA,GAAM,SAAQ,aAAY,MAAK,QAAO,eAAY,QAAQ,GAAGO,GACrF,UAAA,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAE;AAAA,MACF,QAAQ8C;AAAA,MACR,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,IAAA;AAAA,EAAA,GAEnB;AAEJ;ACRA,SAAwB0I,EAAO;AAAA,EAC7B,OAAAnL;AAAA,EACA,UAAA+F;AAAA,EACA,SAAAqF,IAAU,CAAA;AAAA,EACV,aAAApF,IAAc;AAAA,EACd,WAAA/D,IAAY;AAAA,EACZ,UAAAE,IAAW;AAAA,EACX,GAAGE;AACL,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,aAAaJ,CAAS,GAAG,QACvC,UAAA;AAAA,IAAA,gBAAAM;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAU;AAAA,QACV,OAAOvC,KAAS;AAAA,QAChB,UAAA+F;AAAA,QACA,UAAA5D;AAAA,QACC,GAAGE;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAA1C,EAAC,UAAA,EAAO,OAAM,IAAG,UAAQ,IACtB,UAAAqG,GACH;AAAA,UACCoF,EAAQ,IAAI,CAACC,MAAQ;AACpB,kBAAMC,IAAM,OAAOD,KAAQ,WAAWA,IAAMA,EAAI,OAC1CxH,IAAQ,OAAOwH,KAAQ,WAAWA,IAAMA,EAAI;AAClD,mBACE,gBAAA1L,EAAC,UAAA,EAAiB,OAAO2L,GACtB,eADUA,CAEb;AAAA,UAEJ,CAAC;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,IAEH,gBAAA3L,EAAC,UAAK,WAAU,sBACd,4BAACuL,IAAA,EAAgB,MAAM,IAAI,EAAA,CAC7B;AAAA,EAAA,GACF;AAEJ;ACrCA,SAAwBK,GAAS;AAAA,EAC/B,OAAAvL;AAAA,EACA,UAAA+F;AAAA,EACA,aAAAC;AAAA,EACA,WAAAwF;AAAA,EACA,MAAAC,IAAO;AAAA,EACP,WAAAxJ,IAAY;AAAA,EACZ,GAAGI;AACL,GAAG;AACD,SACE,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,eAAesC,CAAS,GAAG,KAAA;AAAA,MACtC,OAAAjC;AAAA,MACA,UAAA+F;AAAA,MACA,aAAAC;AAAA,MACA,WAAAwF;AAAA,MACA,MAAAC;AAAA,MACC,GAAGpJ;AAAA,IAAA;AAAA,EAAA;AAGV;AChBA,SAAwBqJ,GAAU;AAAA,EAChC,OAAA7H;AAAA,EACA,MAAAmH;AAAA,EACA,UAAAzL;AAAA,EACA,WAAA0C,IAAY;AAAA,EACZ,SAAAgJ;AACF,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,iBAAiBhJ,CAAS,GAAG,QAC1C,UAAA;AAAA,IAAA4B,KAAS,OACR,gBAAAlE,EAACoL,GAAA,EAAW,SAAAE,GAAkB,MAAAD,GAC3B,aACH,IACE;AAAA,IACHzL;AAAA,EAAA,GACH;AAEJ;AAEO,SAASoM,GAAU,EAAE,OAAA9H,GAAO,MAAAmH,GAAM,GAAGY,KAAc;AACxD,SACE,gBAAAjM,EAAC+L,IAAA,EAAU,OAAA7H,GAAc,MAAAmH,GAAY,SAASY,EAAW,IACvD,UAAA,gBAAAjM,EAACmG,GAAA,EAAO,GAAG8F,EAAA,CAAY,EAAA,CACzB;AAEJ;AAEO,SAASC,GAAW,EAAE,OAAAhI,GAAO,MAAAmH,GAAM,GAAGc,KAAe;AAC1D,SACE,gBAAAnM,EAAC+L,IAAA,EAAU,OAAA7H,GAAc,MAAAmH,GAAY,SAASc,EAAY,IACxD,UAAA,gBAAAnM,EAACwL,GAAA,EAAQ,GAAGW,EAAA,CAAa,EAAA,CAC3B;AAEJ;AAEO,SAASC,GAAa,EAAE,OAAAlI,GAAO,MAAAmH,GAAM,WAAAQ,GAAW,OAAAxL,IAAQ,IAAI,GAAGgM,KAAiB;AACrF,QAAMC,IACJjB,MACCQ,KAAa,OAAO,GAAG,OAAOxL,CAAK,EAAE,MAAM,IAAIwL,CAAS,KAAK;AAEhE,SACE,gBAAA7L,EAAC+L,IAAA,EAAU,OAAA7H,GAAc,MAAMoI,GAAc,SAASD,EAAc,IAClE,UAAA,gBAAArM,EAAC4L,IAAA,EAAS,OAAAvL,GAAc,WAAAwL,GAAuB,GAAGQ,GAAe,GACnE;AAEJ;ACjDA,SAAwBE,GAAO;AAAA,EAC7B,SAAAC,IAAU;AAAA,EACV,UAAApG;AAAA,EACA,UAAA5D,IAAW;AAAA,EACX,cAAciK,IAAY;AAAA,EAC1B,WAAAnK,IAAY;AACd,GAAG;AACD,SACE,gBAAAtC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,MAAK;AAAA,MACL,gBAAcwM;AAAA,MACd,cAAYC;AAAA,MACZ,UAAAjK;AAAA,MACA,WAAW,aAAagK,IAAU,kBAAkB,EAAE,IAAIlK,CAAS,GAAG,KAAA;AAAA,MACtE,SAAS,MAAM8D,IAAW,CAACoG,CAAO;AAAA,MAElC,UAAA,gBAAAxM,EAAC,QAAA,EAAK,WAAU,mBAAA,CAAmB;AAAA,IAAA;AAAA,EAAA;AAGzC;ACpBA,SAAwB0M,GAAY;AAAA,EAClC,OAAAxI,IAAQ;AAAA,EACR,SAAAsI;AAAA,EACA,UAAApG;AAAA,EACA,WAAA9D,IAAY;AACd,GAAG;AACD,2BACG,OAAA,EAAI,WAAW,mBAAmBA,CAAS,GAAG,QAC7C,UAAA;AAAA,IAAA,gBAAAtC,EAACwD,KAAW,UAAAU,EAAA,CAAM;AAAA,IAClB,gBAAAlE,EAACuM,IAAA,EAAO,SAAAC,GAAkB,UAAApG,GAAoB,cAAYlC,EAAA,CAAO;AAAA,EAAA,GACnE;AAEJ;ACfA,SAAwByI,GAAU,EAAE,MAAAxK,IAAO,IAAI,OAAAW,IAAQ,gBAAgB,GAAGJ,KAAS;AACjF,SACE,gBAAA1C,EAAC,OAAA,EAAI,OAAOmC,GAAM,QAAQA,GAAM,SAAQ,aAAY,MAAK,QAAO,eAAY,QAAQ,GAAGO,GACrF,UAAA,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAE;AAAA,MACF,QAAQ8C;AAAA,MACR,aAAY;AAAA,MACZ,eAAc;AAAA,IAAA;AAAA,EAAA,GAElB;AAEJ;ACPA,SAAwBK,GAAI,EAAE,OAAAe,GAAO,UAAA0I,GAAU,WAAAtK,IAAY,MAAM;AAC/D,2BACG,QAAA,EAAK,WAAW,UAAUA,CAAS,GAAG,QACpC,UAAA;AAAA,IAAA4B;AAAA,IACA0I,IACC,gBAAA5M;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS4M;AAAA,QACT,cAAY,UAAU1I,CAAK;AAAA,QAE3B,UAAA,gBAAAlE,EAAC2M,IAAA,EAAU,MAAM,GAAA,CAAI;AAAA,MAAA;AAAA,IAAA,IAErB;AAAA,EAAA,GACN;AAEJ;ACdA,SAAwBE,GAAgB;AAAA,EACtC,OAAA3I,IAAQ;AAAA,EACR,SAAAuH,IAAU,CAAA;AAAA,EACV,OAAApL,IAAQ,CAAA;AAAA,EACR,UAAA+F;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,WAAA/D,IAAY;AACd,GAAG;AACD,QAAM,CAACwK,GAAWC,CAAY,IAAIjF,EAAS,EAAE,GAEvCkF,IAAYvB,EAAQ,OAAO,CAACC,MAAQ;AACxC,UAAMC,IAAM,OAAOD,KAAQ,WAAWA,IAAMA,EAAI;AAChD,WAAO,CAACrL,EAAM,SAASsL,CAAG;AAAA,EAC5B,CAAC,GAEKsB,IAAe,CAACrG,MAAM;AAC1B,UAAMjG,IAAOiG,EAAE,OAAO;AACtB,IAAKjG,MACLyF,IAAW,CAAC,GAAG/F,GAAOM,CAAI,CAAC,GAC3BoM,EAAa,EAAE;AAAA,EACjB,GAEMG,IAAe,CAACC,MAAS;AAC7B,IAAA/G,IAAW/F,EAAM,OAAO,CAAC+M,MAAMA,MAAMD,CAAI,CAAC;AAAA,EAC5C;AAEA,2BACG,OAAA,EAAI,WAAW,kBAAkB7K,CAAS,GAAG,QAC5C,UAAA;AAAA,IAAA,gBAAAtC,EAACoL,KAAY,UAAAlH,EAAA,CAAM;AAAA,IACnB,gBAAAlE;AAAA,MAACwL;AAAA,MAAA;AAAA,QACC,OAAOsB;AAAA,QACP,UAAUG;AAAA,QACV,SAASD;AAAA,QACT,aAAA3G;AAAA,MAAA;AAAA,IAAA;AAAA,IAEDhG,EAAM,SAAS,IACd,gBAAAL,EAAC,SAAI,WAAU,eACZ,UAAAK,EAAM,IAAI,CAAC8M,wBACThK,IAAA,EAAe,OAAOgK,GAAM,UAAU,MAAMD,EAAaC,CAAI,EAAA,GAApDA,CAAuD,CAClE,EAAA,CACH,IACE;AAAA,EAAA,GACN;AAEJ;AC5CA,SAAwBE,GAAiB,EAAE,QAAAvC,GAAQ,UAAAwC,KAAY;AAC7D,QAAM,EAAE,OAAA5D,GAAO,QAAAE,EAAA,IAAWK,EAAA;AAE1B,SACE,gBAAArH;AAAA,IAACsI;AAAA,IAAA;AAAA,MACC,OAAOoC,EAAS;AAAA,MAChB,aAAaA,EAAS;AAAA,MACtB,QAAAxC;AAAA,MAEA,UAAA;AAAA,QAAA,gBAAA9K,EAAC,SAAI,WAAU,mBACb,UAAA,gBAAA4C,EAAC,OAAA,EAAI,WAAU,qCACb,UAAA;AAAA,UAAA,gBAAA5C;AAAA,YAACkM;AAAA,YAAA;AAAA,cACC,OAAM;AAAA,cACN,WAAU;AAAA,cACV,OAAOxC,EAAM;AAAA,cACb,UAAU,CAAC9C,MAAMgD,EAAO,EAAE,cAAchD,EAAE,OAAO,OAAO;AAAA,cACxD,SAAS4D;AAAA,cACT,aAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAAxK;AAAA,YAAC0M;AAAA,YAAA;AAAA,cACC,SAAShD,EAAM;AAAA,cACf,UAAU,CAAC7H,MAAW+H,EAAO,EAAE,QAAA/H,GAAQ;AAAA,YAAA;AAAA,UAAA;AAAA,QACzC,EAAA,CACF,EAAA,CACF;AAAA,QAEA,gBAAA7B,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA,gBAAAA;AAAA,UAACoM;AAAA,UAAA;AAAA,YACC,OAAM;AAAA,YACN,aAAY;AAAA,YACZ,WAAW;AAAA,YACX,OAAO1C,EAAM;AAAA,YACb,UAAU,CAAC9C,MAAMgD,EAAO,EAAE,aAAahD,EAAE,OAAO,OAAO;AAAA,YACvD,MAAM;AAAA,UAAA;AAAA,QAAA,GAEV;AAAA,QAEA,gBAAA5G,EAAC,OAAA,EAAI,WAAU,yCACb,UAAA,gBAAAA;AAAA,UAAC6M;AAAA,UAAA;AAAA,YACC,SAAStC;AAAA,YACT,OAAOb,EAAM;AAAA,YACb,UAAU,CAAC6D,MAAU3D,EAAO,EAAE,OAAA2D,GAAO;AAAA,UAAA;AAAA,QAAA,EACvC,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AC7CA,MAAMC,KAAqB,CAAC,MAAM,WAAW,MAAM,cAAc,OAAO;AAExE,SAASC,KAAS;AAChB,SAAO;AAAA,IACL,IAAI,GAAG,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC3D,YAAY;AAAA,IACZ,eAAe;AAAA,IACf,OAAO;AAAA,EAAA;AAEX;AAEA,SAAwBC,GAAgB,EAAE,QAAA5C,GAAQ,UAAAwC,KAAY;AAC5D,QAAM,EAAE,OAAA5D,GAAO,QAAAE,EAAA,IAAWK,EAAA,GACpB6B,IAAOpC,EAAM,gBAEbiE,IAAW,CAACzI,GAAI4E,MAAU;AAC9B,IAAAF,EAAO;AAAA,MACL,gBAAgBkC,EAAK,IAAI,CAACsB,MAAOA,EAAE,OAAOlI,IAAK,EAAE,GAAGkI,GAAG,GAAGtD,EAAA,IAAUsD,CAAE;AAAA,IAAA,CACvE;AAAA,EACH,GAEMQ,IAAS,MAAM;AACnB,IAAAhE,EAAO,EAAE,gBAAgB,CAAC,GAAGkC,GAAM2B,GAAA,CAAQ,GAAG;AAAA,EAChD;AAEA,SACE,gBAAAzN,EAACkL,GAAA,EAAa,OAAOoC,EAAS,OAAO,aAAaA,EAAS,aAAa,QAAAxC,GACtE,UAAA,gBAAAlI,EAAC,OAAA,EAAI,WAAU,iBACb,UAAA;AAAA,IAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,uBACb,UAAA;AAAA,MAAA,gBAAA5C,EAAC,SAAI,UAAA,aAAA,CAAU;AAAA,MACf,gBAAAA,EAAC,SAAI,UAAA,iBAAA,CAAc;AAAA,MACnB,gBAAAA,EAAC,SAAI,UAAA,QAAA,CAAK;AAAA,wBACT,OAAA,CAAA,CAAI;AAAA,IAAA,GACP;AAAA,IACC8L,EAAK,IAAI,CAAC+B,MACT,gBAAAjL,EAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,MAAA,gBAAA5C;AAAA,QAACwL;AAAA,QAAA;AAAA,UACC,OAAOqC,EAAI;AAAA,UACX,UAAU,CAACjH,MAAM+G,EAASE,EAAI,IAAI,EAAE,YAAYjH,EAAE,OAAO,OAAO;AAAA,UAChE,SAAS4G;AAAA,UACT,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,gBAAA5K,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,QAAA,gBAAA5C;AAAA,UAACmG;AAAA,UAAA;AAAA,YACC,OAAO0H,EAAI;AAAA,YACX,UAAU,CAACjH,MAAM+G,EAASE,EAAI,IAAI,EAAE,eAAejH,EAAE,OAAO,OAAO;AAAA,YACnE,aAAY;AAAA,UAAA;AAAA,QAAA;AAAA,QAEd,gBAAA5G;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YACV,cAAW;AAAA,YACX,SAAS,MAAM;AACb,cAAK6N,EAAI,cAAc;YACzB;AAAA,YAEA,UAAA,gBAAA7N,EAAC6C,IAAA,EAAS,MAAM,IAAI,OAAM,eAAA,CAAe;AAAA,UAAA;AAAA,QAAA;AAAA,MAC3C,GACF;AAAA,MACA,gBAAA7C;AAAA,QAACwL;AAAA,QAAA;AAAA,UACC,OAAOqC,EAAI;AAAA,UACX,UAAU,CAACjH,MAAM+G,EAASE,EAAI,IAAI,EAAE,OAAOjH,EAAE,OAAO,OAAO;AAAA,UAC3D,SAAS2D;AAAA,UACT,aAAY;AAAA,QAAA;AAAA,MAAA;AAAA,MAEd,gBAAAvK,EAACiC,KAAO,SAAQ,QAAO,MAAK,MAAK,SAAS2L,GAAQ,UAAA,QAAA,CAElD;AAAA,IAAA,EAAA,GAhCuCC,EAAI,EAiC7C,CACD;AAAA,EAAA,EAAA,CACH,EAAA,CACF;AAEJ;AC7EA,SAAwBC,GAAK,EAAE,UAAAlO,GAAU,SAAA6C,GAAS,WAAAH,IAAY,IAAI,QAAAT,IAAS,MAAS;AAClF,SACE,gBAAA7B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,WAAW,WAAW6B,IAAS,oBAAoB,EAAE,IAAIS,CAAS,GAAG,KAAA;AAAA,MACrE,SAAAG;AAAA,MAEC,UAAA7C;AAAA,IAAA;AAAA,EAAA;AAGP;ACVA,SAAwBmO,GAAM;AAAA,EAC5B,SAAAvB,IAAU;AAAA,EACV,UAAApG;AAAA,EACA,MAAA4H;AAAA,EACA,OAAA3N;AAAA,EACA,cAAcoM;AAAA,EACd,WAAAnK,IAAY;AACd,GAAG;AACD,2BACG,SAAA,EAAM,WAAW,YAAYA,CAAS,GAAG,QACxC,UAAA;AAAA,IAAA,gBAAAtC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,MAAAgO;AAAA,QACA,OAAA3N;AAAA,QACA,SAAAmM;AAAA,QACA,UAAApG;AAAA,QACA,cAAYqG;AAAA,MAAA;AAAA,IAAA;AAAA,IAEd,gBAAAzM,EAAC,QAAA,EAAK,WAAU,iBAAA,CAAiB;AAAA,EAAA,GACnC;AAEJ;ACzBA,SAAwBiO,GAAe,EAAE,MAAA9L,IAAO,IAAI,OAAAW,IAAQ,WAAW,GAAGJ,KAAS;AACjF,SACE,gBAAAE,EAAC,OAAA,EAAI,OAAOT,GAAM,QAAQA,GAAM,SAAQ,aAAY,MAAK,QAAO,eAAY,QAAQ,GAAGO,GACrF,UAAA;AAAA,IAAA,gBAAA1C,EAAC,UAAA,EAAO,IAAG,KAAI,IAAG,KAAI,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,IAC3C,gBAAA9C,EAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,IAC5C,gBAAA9C,EAAC,YAAO,IAAG,KAAI,IAAG,KAAI,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,IAC3C,gBAAA9C,EAAC,YAAO,IAAG,MAAK,IAAG,KAAI,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,IAC5C,gBAAA9C,EAAC,YAAO,IAAG,KAAI,IAAG,MAAK,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,IAC5C,gBAAA9C,EAAC,YAAO,IAAG,MAAK,IAAG,MAAK,GAAE,OAAM,MAAM8C,EAAA,CAAO;AAAA,EAAA,GAC/C;AAEJ;ACDA,SAASoL,GAAaF,GAAM;AAC1B,SAAO;AAAA,IACL,IAAI,GAAG,KAAK,IAAA,CAAK,IAAI,KAAK,OAAA,EAAS,SAAS,EAAE,EAAE,MAAM,GAAG,CAAC,CAAC;AAAA,IAC3D,MAAAA;AAAA,IACA,OAAO;AAAA,EAAA;AAEX;AAEA,SAAwBG,GAAe,EAAE,QAAArD,GAAQ,UAAAwC,KAAY;AAC3D,QAAM,EAAE,OAAA5D,GAAO,QAAAE,EAAA,IAAWK,EAAA,GACpB,EAAE,eAAAmE,GAAe,YAAAC,GAAY,mBAAAC,EAAA,IAAsB5E,GAEnD6E,IAAc,CAACP,MAAS;AAC5B,UAAMQ,KAAWR,KAAQI,GAAe,KAAA;AACxC,QAAI,CAACI,EAAS;AACd,QAAIH,EAAW,KAAK,CAACI,MAAMA,EAAE,KAAK,kBAAkBD,EAAQ,YAAA,CAAa,GAAG;AAC1E,MAAA5E,EAAO,EAAE,eAAe,IAAI;AAC5B;AAAA,IACF;AACA,UAAMjJ,IAAO,CAAC,GAAG0N,GAAYH,GAAaM,CAAO,CAAC;AAClD,IAAA5E,EAAO;AAAA,MACL,YAAYjJ;AAAA,MACZ,eAAe;AAAA,MACf,mBAAmB2N,KAAqB3N,EAAK,CAAC,EAAE;AAAA,IAAA,CACjD;AAAA,EACH,GAEM+N,IAAgB,CAACxJ,GAAI4E,MAAU;AACnC,IAAAF,EAAO;AAAA,MACL,YAAYyE,EAAW,IAAI,CAACI,MAAOA,EAAE,OAAOvJ,IAAK,EAAE,GAAGuJ,GAAG,GAAG3E,EAAA,IAAU2E,CAAE;AAAA,IAAA,CACzE;AAAA,EACH,GAEME,IAAejE,GAAgB,IAAI,CAACkE,OAAO;AAAA,IAC/C,OAAOA,EAAE;AAAA,IACT,OAAOA,EAAE;AAAA,EAAA,EACT;AAEF,SACE,gBAAAhM,EAACsI,KAAa,OAAOoC,EAAS,OAAO,aAAaA,EAAS,aAAa,QAAAxC,GACtE,UAAA;AAAA,IAAA,gBAAAlI,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA;AAAA,MAAA,gBAAA5C,EAACoL,KAAW,UAAA,aAAA,CAAU;AAAA,MACtB,gBAAAxI,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,QAAA,gBAAA5C;AAAA,UAACmG;AAAA,UAAA;AAAA,YACC,OAAOiI;AAAA,YACP,UAAU,CAACxH,MAAMgD,EAAO,EAAE,eAAehD,EAAE,OAAO,OAAO;AAAA,YACzD,aAAY;AAAA,YACZ,WAAW,CAACA,MAAM;AAChB,cAAIA,EAAE,QAAQ,YACZA,EAAE,eAAA,GACF2H,EAAA;AAAA,YAEJ;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAvO,EAACiC,KAAO,SAAQ,WAAU,SAAS,MAAMsM,EAAA,GAAe,UAAA,QAAA,CAExD;AAAA,MAAA,GACF;AAAA,MACA,gBAAAvO,EAAC,OAAA,EAAI,WAAU,eACZ,aAAiB,IAAI,CAACyO,MACrB,gBAAA7L,EAACkL,IAAA,EAAa,SAAS,MAAMS,EAAYE,CAAC,GAAG,UAAA;AAAA,QAAA;AAAA,QACxCA;AAAA,MAAA,EAAA,GADMA,CAEX,CACD,EAAA,CACH;AAAA,IAAA,GACF;AAAA,IAEA,gBAAA7L,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,MAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,QAAA,gBAAA5C,EAAC,SAAI,UAAA,WAAA,CAAQ;AAAA,QACb,gBAAAA,EAAC,SAAI,UAAA,QAAA,CAAK;AAAA,QACV,gBAAAA,EAAC,SAAI,UAAA,UAAA,CAAO;AAAA,MAAA,GACd;AAAA,OACEqO,EAAW,SAASA,IAAa,CAACH,GAAa,EAAE,CAAC,GAAG,IAAI,CAACL,GAAKhI,MAAU;AACzE,cAAMgJ,IAAgB,CAACR,EAAW;AAClC,eACE,gBAAAzL,EAAC,OAAA,EAAI,WAAU,0BACb,UAAA;AAAA,UAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,2BACb,UAAA;AAAA,YAAA,gBAAA5C,EAACiO,IAAA,EAAe;AAAA,YAChB,gBAAAjO;AAAA,cAACmG;AAAA,cAAA;AAAA,gBACC,OAAO0I,IAAgBT,IAAgBP,EAAI;AAAA,gBAC3C,UAAU,CAACjH,MAAM;AACf,kBAAIiI,IACFjF,EAAO,EAAE,eAAehD,EAAE,OAAO,OAAO,IAExC8H,EAAcb,EAAI,IAAI,EAAE,MAAMjH,EAAE,OAAO,OAAO;AAAA,gBAElD;AAAA,gBACA,aAAY;AAAA,cAAA;AAAA,YAAA;AAAA,UACd,GACF;AAAA,UACA,gBAAA5G;AAAA,YAACwL;AAAA,YAAA;AAAA,cACC,OAAOqC,EAAI;AAAA,cACX,UAAU,CAACjH,MAAM;AACf,gBAAKiI,KAAeH,EAAcb,EAAI,IAAI,EAAE,OAAOjH,EAAE,OAAO,OAAO;AAAA,cACrE;AAAA,cACA,SAAS+H;AAAA,cACT,aAAY;AAAA,YAAA;AAAA,UAAA;AAAA,UAEd,gBAAA3O;AAAA,YAAC+N;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,OAAOF,EAAI;AAAA,cACX,SAAS,CAACgB,KAAiBP,MAAsBT,EAAI;AAAA,cACrD,UAAU,MAAM,CAACgB,KAAiBjF,EAAO,EAAE,mBAAmBiE,EAAI,IAAI;AAAA,cACtE,cAAW;AAAA,YAAA;AAAA,UAAA;AAAA,QACb,KA7B2CA,EAAI,MAAMhI,CA8BvD;AAAA,MAEJ,CAAC;AAAA,IAAA,EAAA,CACH;AAAA,EAAA,GACF;AAEJ;ACnHA,SAAwBiJ,GAAa;AAAA,EACnC,QAAAhE;AAAA,EACA,UAAAwC;AAAA,EACA,SAAAyB,IAAU;AAAA,EACV,iBAAAC;AACF,GAAG;AACD,QAAM,EAAE,OAAAtF,GAAO,QAAAE,GAAQ,gBAAAI,EAAA,IAAmBC,EAAA,GACpC,EAAE,kBAAAgF,GAAkB,UAAAC,EAAA,IAAaxF,GAEjCyF,IAAoB,MAAM;AAC9B,QAAIJ,IAAU3E,GAAkB,QAAQ;AACtC,MAAA4E,IAAkBD,IAAU,CAAC;AAC7B;AAAA,IACF;AACA,IAAAjE,IAAA;AAAA,EACF;AAEA,SACE,gBAAA9K;AAAA,IAACkL;AAAA,IAAA;AAAA,MACC,OAAOoC,EAAS;AAAA,MAChB,aAAaA,EAAS;AAAA,MACtB,QAAAxC;AAAA,MACA,aAAY;AAAA,MAEZ,UAAA,gBAAAlI,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,SAAA,EAAM,WAAU,wBACf,UAAA;AAAA,UAAA,gBAAA5C,EAAC,MAAA,EAAG,WAAU,8BAA6B,UAAA,qBAAiB;AAAA,UAC5D,gBAAAA,EAAC,KAAA,EAAE,WAAU,YAAW,UAAA,wCAAoC;AAAA,UAC5D,gBAAAA,EAAC,MAAA,EAAG,WAAU,gBACX,UAAAyK,GAAsB,IAAI,CAAC2E,MAC1B,gBAAAxM,EAAC,MAAA,EAAiB,WAAU,uBAC1B,UAAA;AAAA,YAAA,gBAAA5C;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW,sBACTiP,MAAqBG,EAAK,KAAK,+BAA+B,EAChE;AAAA,gBACA,SAAS,MAAMxF,EAAO,EAAE,kBAAkBwF,EAAK,IAAI;AAAA,gBAElD,UAAAA,EAAK;AAAA,cAAA;AAAA,YAAA;AAAA,YAEPA,EAAK,UAAU,SACd,gBAAApP,EAAC,MAAA,EAAG,WAAU,0BACX,UAAAoP,EAAK,SAAS,IAAI,CAACC,wBACjB,MAAA,EACC,UAAA,gBAAAzM;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAW,gDACTqM,MAAqBI,EAAM,KACvB,+BACA,EACN;AAAA,gBACA,SAAS,MAAMzF,EAAO,EAAE,kBAAkByF,EAAM,IAAI;AAAA,gBAEpD,UAAA;AAAA,kBAAA,gBAAArP,EAAC,QAAA,EAAK,WAAU,wBAAuB,eAAY,QAAO,UAAA,KAE1D;AAAA,kBACCqP,EAAM;AAAA,gBAAA;AAAA,cAAA;AAAA,YAAA,EACT,GAdOA,EAAM,EAef,CACD,GACH,IACE;AAAA,UAAA,KA/BGD,EAAK,EAgCd,CACD,EAAA,CACH;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAxM,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,UAAA,gBAAA5C;AAAA,YAAC8I;AAAA,YAAA;AAAA,cACC,OAAOsB;AAAA,cACP,aAAa2E;AAAA,cACb,aAAaC;AAAA,cACb,MAAK;AAAA,cACL,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,UAGXD,MAAY,IACX,gBAAAnM,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,cAAA,gBAAA5C;AAAA,gBAACgM;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAM;AAAA,kBACN,aAAY;AAAA,kBACZ,OAAOkD,EAAS;AAAA,kBAChB,UAAU,CAACtI,MAAMoD,EAAe,EAAE,MAAMpD,EAAE,OAAO,MAAA,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,cAE1D,gBAAA5G;AAAA,gBAACgM;AAAA,gBAAA;AAAA,kBACC,WAAU;AAAA,kBACV,OAAM;AAAA,kBACN,aAAY;AAAA,kBACZ,OAAOkD,EAAS;AAAA,kBAChB,UAAU,CAACtI,MAAMoD,EAAe,EAAE,YAAYpD,EAAE,OAAO,MAAA,CAAO;AAAA,gBAAA;AAAA,cAAA;AAAA,YAChE,GACF;AAAA,YACA,gBAAA5G;AAAA,cAACoM;AAAA,cAAA;AAAA,gBACC,OAAM;AAAA,gBACN,aAAY;AAAA,gBACZ,OAAO8C,EAAS;AAAA,gBAChB,UAAU,CAACtI,MAAMoD,EAAe,EAAE,aAAapD,EAAE,OAAO,OAAO;AAAA,gBAC/D,MAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UACR,EAAA,CACF,IACE;AAAA,UAEHmI,MAAY,IACX,gBAAA/O,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,WAAU,UAAA,2DAAA,CAEvB,EAAA,CACF,IACE;AAAA,UAEH+O,MAAY,IACX,gBAAA/O,EAAC,OAAA,EAAI,WAAU,4BACb,UAAA,gBAAAA,EAAC,KAAA,EAAE,WAAU,WAAU,UAAA,+CAAA,CAA4C,EAAA,CACrE,IACE;AAAA,UAEJ,gBAAAA,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA,gBAAAA;AAAA,YAACiC;AAAA,YAAA;AAAA,cACC,SAASkN;AAAA,cACT,SAAS,gBAAAnP,EAACyE,GAAA,EAAiB,MAAM,IAAI,OAAM,QAAO;AAAA,cACnD,UAAA;AAAA,YAAA;AAAA,UAAA,EAED,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;ACzIA,SAAwB6K,GAAU,EAAE,MAAAnN,IAAO,IAAI,OAAAW,IAAQ,WAAW,GAAGJ,KAAS;AAC5E,SACE,gBAAA1C,EAAC,OAAA,EAAI,OAAOmC,GAAM,QAAQA,GAAM,SAAQ,aAAY,MAAK,QAAO,eAAY,QAAQ,GAAGO,GACrF,UAAA,gBAAA1C;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,GAAE;AAAA,MACF,QAAQ8C;AAAA,MACR,aAAY;AAAA,MACZ,eAAc;AAAA,MACd,gBAAe;AAAA,IAAA;AAAA,EAAA,GAEnB;AAEJ;ACDA,MAAMyM,IAAqBjF,GAAc,IAAI,CAACkF,OAAO;AAAA,EACnD,OAAOA,EAAE;AAAA,EACT,OAAOA,EAAE;AACX,EAAE;AAEF,SAASC,GAAiB,EAAE,MAAAlN,KAAQ;AAQlC,2BAAQ,QAAA,EAAK,WAAU,uBAAuB,UAPlC;AAAA,IACV,MAAM;AAAA,IACN,KAAK;AAAA,IACL,UAAU;AAAA,IACV,OAAO;AAAA,IACP,SAAS;AAAA,EAAA,EAEuCA,CAAI,KAAK,KAAI;AACjE;AAEA,SAAwBmN,GAAe,EAAE,QAAA5E,GAAQ,UAAAwC,KAAY;AAC3D,QAAM,EAAE,OAAA5D,GAAO,QAAAE,EAAA,IAAWK,EAAA,GACpB,EAAE,YAAA0F,GAAY,YAAAC,EAAA,IAAelG,GAE7BmG,IAAW,CAAC/F,MAAUF,EAAO,EAAE,YAAY,EAAE,GAAG+F,GAAY,GAAG7F,EAAA,GAAS,GAExEgG,IAAW,MAAM;AACrB,QAAI,CAACH,EAAW,KAAK,UAAU,CAACA,EAAW,KAAM;AACjD,UAAMI,IACJR,EAAmB,KAAK,CAACS,MAAMA,EAAE,UAAUL,EAAW,IAAI,GAAG,SAASA,EAAW;AACnF,IAAA/F,EAAO;AAAA,MACL,YAAY;AAAA,QACV,GAAGgG;AAAA,QACH;AAAA,UACE,IAAI,GAAG,KAAK,IAAA,CAAK;AAAA,UACjB,MAAMD,EAAW,KAAK,KAAA;AAAA,UACtB,MAAMA,EAAW;AAAA,UACjB,WAAAI;AAAA,UACA,UAAU;AAAA,QAAA;AAAA,MACZ;AAAA,MAEF,YAAY,EAAE,MAAM,IAAI,MAAM,GAAA;AAAA,IAAG,CAClC;AAAA,EACH,GAEME,IAAa,CAAC/K,GAAI4E,MAAU;AAChC,IAAAF,EAAO;AAAA,MACL,YAAYgG,EAAW,IAAI,CAACJ,MAAOA,EAAE,OAAOtK,IAAK,EAAE,GAAGsK,GAAG,GAAG1F,EAAA,IAAU0F,CAAE;AAAA,IAAA,CACzE;AAAA,EACH,GAEMU,IAAc,CAAChL,MAAO;AAC1B,IAAA0E,EAAO,EAAE,YAAYgG,EAAW,OAAO,CAACJ,MAAMA,EAAE,OAAOtK,CAAE,GAAG;AAAA,EAC9D,GAEMiL,IAAmB,CAAChJ,MAAS;AACjC,IAAA0I,EAAS,EAAE,MAAM1I,EAAK,GAAA,CAAI;AAAA,EAC5B;AAEA,SACE,gBAAAnH;AAAA,IAACkL;AAAA,IAAA;AAAA,MACC,OAAOoC,EAAS;AAAA,MAChB,aAAaA,EAAS;AAAA,MACtB,UAAU;AAAA,MACV,QACE,gBAAAtN;AAAA,QAACiC;AAAA,QAAA;AAAA,UACC,SAAS6I;AAAA,UACT,SAAS,gBAAA9K,EAACyE,GAAA,EAAiB,MAAM,IAAI,OAAM,QAAO;AAAA,UACnD,UAAA;AAAA,QAAA;AAAA,MAAA;AAAA,MAKH,UAAA,gBAAA7B,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,SAAA,EAAM,WAAU,gBACf,UAAA;AAAA,UAAA,gBAAA5C,EAAC,MAAA,EAAG,WAAU,uBAAsB,UAAA,iBAAa;AAAA,UACjD,gBAAAA,EAAC,KAAA,EAAE,WAAU,YAAW,UAAA,oCAAgC;AAAA,UACxD,gBAAAA,EAAC,QAAG,WAAU,sBACX,aAAc,IAAI,CAACmH,MAClB,gBAAAnH,EAAC,MAAA,EACC,UAAA,gBAAA4C;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAU;AAAA,cACV,WAAS;AAAA,cACT,aAAa,CAACgE,MAAM;AAClB,gBAAAA,EAAE,aAAa,QAAQ,cAAcO,EAAK,EAAE;AAAA,cAC9C;AAAA,cACA,SAAS,MAAMgJ,EAAiBhJ,CAAI;AAAA,cAEpC,UAAA;AAAA,gBAAA,gBAAAnH,EAACyP,IAAA,EAAiB,MAAMtI,EAAK,KAAA,CAAM;AAAA,gBACnC,gBAAAnH,EAAC,QAAA,EAAM,UAAAmH,EAAK,MAAA,CAAM;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,KAXbA,EAAK,EAad,CACD,EAAA,CACH;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAvE,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,UAAA,gBAAAA;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,WAAU;AAAA,cACV,YAAY,CAACgE,MAAMA,EAAE,eAAA;AAAA,cACrB,QAAQ,CAACA,MAAM;AACb,gBAAAA,EAAE,eAAA;AACF,sBAAMrE,IAAOqE,EAAE,aAAa,QAAQ,YAAY;AAChD,gBAAIrE,KAAMsN,EAAS,EAAE,MAAAtN,GAAM;AAAA,cAC7B;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,sBACb,UAAA;AAAA,kBAAA,gBAAA5C,EAAC,MAAA,EAAG,WAAU,wBAAuB,UAAA,cAAU;AAAA,kBAC/C,gBAAAA,EAACiC,GAAA,EAAO,SAAS6N,GAAU,UAAA,YAAA,CAAS;AAAA,gBAAA,GACtC;AAAA,gBACA,gBAAAlN,EAAC,OAAA,EAAI,WAAU,eACb,UAAA;AAAA,kBAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,oBAAA,gBAAA5C,EAACoL,KAAW,UAAA,gBAAA,CAAa;AAAA,oBACzB,gBAAApL;AAAA,sBAACmG;AAAA,sBAAA;AAAA,wBACC,OAAOwJ,EAAW;AAAA,wBAClB,UAAU,CAAC/I,MAAMiJ,EAAS,EAAE,MAAMjJ,EAAE,OAAO,OAAO;AAAA,wBAClD,aAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACd,GACF;AAAA,kBACA,gBAAAhE,EAAC,OAAA,EAAI,WAAU,qBACb,UAAA;AAAA,oBAAA,gBAAA5C,EAACoL,KAAW,UAAA,gBAAA,CAAa;AAAA,oBACzB,gBAAApL;AAAA,sBAACwL;AAAA,sBAAA;AAAA,wBACC,OAAOmE,EAAW;AAAA,wBAClB,UAAU,CAAC/I,MAAMiJ,EAAS,EAAE,MAAMjJ,EAAE,OAAO,OAAO;AAAA,wBAClD,SAAS2I;AAAA,wBACT,aAAY;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACd,EAAA,CACF;AAAA,gBAAA,EAAA,CACF;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA;AAAA,UAGF,gBAAA3M,EAAC,OAAA,EAAI,WAAU,mBACb,UAAA;AAAA,YAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,cAAA,gBAAA5C,EAAC,SAAI,UAAA,aAAA,CAAU;AAAA,cACf,gBAAAA,EAAC,SAAI,UAAA,aAAA,CAAU;AAAA,cACf,gBAAAA,EAAC,SAAI,UAAA,WAAA,CAAQ;AAAA,gCACZ,OAAA,CAAA,CAAI;AAAA,YAAA,GACP;AAAA,YACC4P,EAAW,WAAW,IACrB,gBAAA5P,EAAC,SAAI,WAAU,0BACb,4BAAC,KAAA,EAAE,WAAU,YAAW,UAAA,uBAAA,CAAoB,EAAA,CAC9C,IAEA4P,EAAW,IAAI,CAACQ,MACd,gBAAAxN,EAAC,OAAA,EAAI,WAAU,wBACb,UAAA;AAAA,cAAA,gBAAAA,EAAC,OAAA,EAAI,WAAU,yBACb,UAAA;AAAA,gBAAA,gBAAA5C,EAACiO,IAAA,EAAe;AAAA,gBAChB,gBAAAjO;AAAA,kBAACmG;AAAA,kBAAA;AAAA,oBACC,OAAOiK,EAAM;AAAA,oBACb,UAAU,CAACxJ,MAAMqJ,EAAWG,EAAM,IAAI,EAAE,MAAMxJ,EAAE,OAAO,MAAA,CAAO;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAChE,GACF;AAAA,cACA,gBAAA5G;AAAA,gBAACwL;AAAA,gBAAA;AAAA,kBACC,OAAO4E,EAAM;AAAA,kBACb,UAAU,CAACxJ,MAAM;AACf,0BAAMrE,IAAOqE,EAAE,OAAO,OAChBmJ,IACJR,EAAmB,KAAK,CAACS,MAAMA,EAAE,UAAUzN,CAAI,GAAG,SAASA;AAC7D,oBAAA0N,EAAWG,EAAM,IAAI,EAAE,MAAA7N,GAAM,WAAAwN,GAAW;AAAA,kBAC1C;AAAA,kBACA,SAASR;AAAA,kBACT,aAAY;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEd,gBAAAvP;AAAA,gBAACuM;AAAA,gBAAA;AAAA,kBACC,SAAS6D,EAAM;AAAA,kBACf,UAAU,CAACC,MAAaJ,EAAWG,EAAM,IAAI,EAAE,UAAAC,GAAU;AAAA,kBACzD,cAAW;AAAA,gBAAA;AAAA,cAAA;AAAA,cAEb,gBAAArQ;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,MAAK;AAAA,kBACL,WAAU;AAAA,kBACV,cAAW;AAAA,kBACX,SAAS,MAAMkQ,EAAYE,EAAM,EAAE;AAAA,kBAEnC,4BAACd,IAAA,CAAA,CAAU;AAAA,gBAAA;AAAA,cAAA;AAAA,YACb,EAAA,GA/ByCc,EAAM,EAgCjD,CACD;AAAA,UAAA,EAAA,CAEL;AAAA,QAAA,EAAA,CACF;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AC1LA,SAAwBE,GAAkB,EAAE,WAAAC,GAAW,UAAAjD,KAAY;AACjE,QAAM,EAAE,OAAA5D,EAAA,IAAUO,EAAA,GACZuG,IACJhG,GAAoB,KAAK,CAACoE,MAAMA,EAAE,UAAUlF,EAAM,YAAY,GAAG,SACjEA,EAAM;AAER,SACE,gBAAA1J;AAAA,IAACkL;AAAA,IAAA;AAAA,MACC,OAAOoC,EAAS;AAAA,MAChB,aAAaA,EAAS;AAAA,MACtB,WAAU;AAAA,MACV,QAAQiD;AAAA,MAER,UAAA,gBAAA3N,EAAC,OAAA,EAAI,WAAU,aACb,UAAA;AAAA,QAAA,gBAAAA,EAAC,WAAA,EAAQ,WAAU,oBACjB,UAAA;AAAA,UAAA,gBAAA5C,EAACsD,KAAS,UAAA,gBAAA,CAAa;AAAA,UACvB,gBAAAV,EAAC,OAAA,EAAI,WAAU,kBACb,UAAA;AAAA,YAAA,gBAAA5C,EAACwD,KAAW,UAAAgN,EAAA,CAAc;AAAA,8BACzBxM,IAAA,EAAY,QAAQ0F,EAAM,SAAS,WAAW,WAAA,CAAY;AAAA,UAAA,GAC7D;AAAA,UACCA,EAAM,cAAc,gBAAA1J,EAACuD,GAAA,EAAU,UAAAmG,EAAM,aAAY,IAAc;AAAA,UAC/DA,EAAM,MAAM,SACX,gBAAA9G,EAACW,GAAA,EAAS,UAAA;AAAA,YAAA;AAAA,YAAQmG,EAAM,MAAM,KAAK,IAAI;AAAA,UAAA,EAAA,CAAE,IACvC;AAAA,QAAA,GACN;AAAA,QAEA,gBAAA9G,EAAC,WAAA,EAAQ,WAAU,oBACjB,UAAA;AAAA,UAAA,gBAAA5C,EAACsD,KAAS,UAAA,cAAA,CAAW;AAAA,4BACpBC,GAAA,EACE,UAAA;AAAA,YAAAmG,EAAM,eAAe,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE;AAAA,YAAO;AAAA,UAAA,EAAA,CAE3D;AAAA,QAAA,GACF;AAAA,QAEA,gBAAA9G,EAAC,WAAA,EAAQ,WAAU,oBACjB,UAAA;AAAA,UAAA,gBAAA5C,EAACsD,KAAS,UAAA,aAAA,CAAU;AAAA,4BACnBC,GAAA,EACE,UAAAmG,EAAM,WAAW,SACdA,EAAM,WAAW,IAAI,CAAC+E,MAAMA,EAAE,IAAI,EAAE,KAAK,IAAI,IAC7C,sBAAA,CACN;AAAA,QAAA,GACF;AAAA,QAEA,gBAAA7L,EAAC,WAAA,EAAQ,WAAU,oBACjB,UAAA;AAAA,UAAA,gBAAA5C,EAACsD,KAAS,UAAA,WAAA,CAAQ;AAAA,UAClB,gBAAAtD,EAACuD,GAAA,EACE,UAAAmG,EAAM,SAAS,OACZ,GAAGA,EAAM,SAAS,IAAI,UAAUA,EAAM,SAAS,cAAc,GAAG,UAChE,0BAAA,CACN;AAAA,QAAA,GACF;AAAA,QAEA,gBAAA9G,EAAC,WAAA,EAAQ,WAAU,2CACjB,UAAA;AAAA,UAAA,gBAAA5C,EAACsD,KAAS,UAAA,cAAA,CAAW;AAAA,4BACpBC,GAAA,EACE,UAAAmG,EAAM,WAAW,SACdA,EAAM,WAAW,IAAI,CAAC8F,MAAMA,EAAE,IAAI,EAAE,KAAK,IAAI,IAC7C,uBAAA,CACN;AAAA,QAAA,GACF;AAAA,QAEA,gBAAAxP,EAAC,SAAI,WAAU,wBACb,4BAACiC,GAAA,EAAO,SAASsO,GAAW,UAAA,UAAA,CAAO,EAAA,CACrC;AAAA,MAAA,EAAA,CACF;AAAA,IAAA;AAAA,EAAA;AAGN;AC9DA,SAASE,GAAUpQ,GAAO;AACxB,QAAMqQ,IAAI,OAAOrQ,CAAK;AACtB,SAAI,CAAC,OAAO,SAASqQ,CAAC,KAAKA,IAAI,IAAU,IACrCA,IAAIvG,EAAe,SAAeA,EAAe,SAC9C,KAAK,MAAMuG,CAAC;AACrB;AAEA,SAASC,GAAatQ,GAAO;AAC3B,QAAMqQ,IAAI,OAAOrQ,CAAK;AACtB,SAAI,CAAC,OAAO,SAASqQ,CAAC,KAAKA,IAAI,IAAU,IACrCA,IAAI,IAAU,IACX,KAAK,MAAMA,CAAC;AACrB;AAMA,SAAwBE,GAAsB;AAAA,EAC5C,OAAAhN,IAAQ;AAAA,EACR,WAAA2M;AAAA,EACA,cAAAM;AACF,GAAG;AACD,QAAMnJ,IAAWC,GAAA,GACX,EAAE,UAAAmJ,EAAA,IAAaC,GAAA,GACf,CAACC,GAAcC,CAAe,IAAIC,GAAA,GAElChI,IAAOuH,GAAUO,EAAa,IAAI,MAAM,KAAK,CAAC,GAC9CjC,IAAU4B,GAAaK,EAAa,IAAI,SAAS,KAAK,CAAC;AAG7D,EAAAjR,EAAU,MAAM;AACd,QAAI,CAACiR,EAAa,IAAI,MAAM,GAAG;AAC7B,YAAMG,IAAS,IAAI,gBAAgBH,CAAY;AAC/C,MAAAG,EAAO,IAAI,QAAQ,GAAG,GACtBF,EAAgBE,GAAQ,EAAE,SAAS,GAAA,CAAM;AAAA,IAC3C;AAAA,EACF,GAAG,CAACH,GAAcC,CAAe,CAAC;AAElC,QAAM3D,IAAW1L;AAAA,IACf,MAAMuI,EAAe,KAAK,CAACvB,MAAMA,EAAE,OAAOM,CAAI,KAAKiB,EAAe,CAAC;AAAA,IACnE,CAACjB,CAAI;AAAA,EAAA,GAGDkI,IAAUvH;AAAA,IACd,CAACwH,GAAUC,MAAgB;AACzB,YAAMH,IAAS,IAAI,gBAAgBH,CAAY;AAC/C,MAAAG,EAAO,IAAI,QAAQ,OAAOE,CAAQ,CAAC,GAC/BA,MAAa,IACfF,EAAO,IAAI,WAAW,OAAOG,MAAgBD,MAAanI,IAAO6F,IAAU,EAAE,CAAC,IAE9EoC,EAAO,OAAO,SAAS,GAEzBF,EAAgBE,GAAQ,EAAE,SAAS,GAAA,CAAO,GAC1CN,IAAe,EAAE,UAAAC,GAAU,MAAMO,GAAU,SAASC,GAAa;AAAA,IACnE;AAAA,IACA,CAACN,GAAcC,GAAiBJ,GAAcC,GAAU5H,GAAM6F,CAAO;AAAA,EAAA,GAGjEwC,IAAS,MAAM;AACnB,IAAIrI,IAAOiB,EAAe,UACxBiH,EAAQlI,IAAO,GAAG,CAAC;AAAA,EAEvB;AAUA,SACE,gBAAAlJ,EAACwJ,IAAA,EACC,UAAA,gBAAA5G,EAAC,OAAA,EAAI,WAAU,oBACb,UAAA;AAAA,IAAA,gBAAA5C,EAACqD,MAAU,UAAAO,EAAA,CAAM;AAAA,IAEjB,gBAAA5D;AAAA,MAAC8I;AAAA,MAAA;AAAA,QACC,OAAOqB;AAAA,QACP,aAAajB;AAAA,QACb,aAAa,CAAChE,MAAOkM,EAAQlM,GAAIA,MAAO,IAAI,IAAI,MAAS;AAAA,QACzD,WAAU;AAAA,MAAA;AAAA,IAAA;AAAA,IAGXgE,MAAS,IACR,gBAAAlJ,EAACqN,MAAiB,QAAQkE,GAAQ,UAAAjE,GAAoB,IACpD;AAAA,IACHpE,MAAS,IACR,gBAAAlJ,EAAC0N,MAAgB,QAAQ6D,GAAQ,UAAAjE,GAAoB,IACnD;AAAA,IACHpE,MAAS,IACR,gBAAAlJ,EAACmO,MAAe,QAAQoD,GAAQ,UAAAjE,GAAoB,IAClD;AAAA,IACHpE,MAAS,IACR,gBAAAlJ;AAAA,MAAC8O;AAAA,MAAA;AAAA,QACC,QAAQyC;AAAA,QACR,UAAAjE;AAAA,QACA,SAAAyB;AAAA,QACA,iBAlCkB,CAACpO,MAAS;AACpC,UAAAyQ,EAAQ,GAAGzQ,CAAI;AAAA,QACjB;AAAA,MAgC2B;AAAA,IAAA,IAEjB;AAAA,IACHuI,MAAS,IACR,gBAAAlJ,EAAC0P,MAAe,QAAQ6B,GAAQ,UAAAjE,GAAoB,IAClD;AAAA,IACHpE,MAAS,IACR,gBAAAlJ,EAACsQ,MAAkB,WArCL,MAAM;AAC1B,MAAAC,IAAY,EAAE,UAAAO,GAAU,MAAA5H,GAAM;AAAA,IAChC,GAmCqD,UAAAoE,GAAoB,IAC/D;AAAA,IAEJ,gBAAAtN;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,WAAU;AAAA,QACV,SAAS,MAAM0H,EAAS,GAAG;AAAA,QAC5B,UAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAED,EAAA,CACF,EAAA,CACF;AAEJ;AC5HA,SAAS8J,GAAY,EAAE,UAAA5R,KAAY;AACjC,QAAM,EAAE,SAAAkC,GAAS,UAAAd,GAAU,MAAAyQ,EAAA,IAAS1P,GAAA;AAEpC,SACE,gBAAA/B;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAW,WAAWgB,IAAW,kBAAkB,gBAAgB;AAAA,MACnE,iBAAeyQ;AAAA,MACf,OAAO3P;AAAA,MAEN,UAAAlC;AAAA,IAAA;AAAA,EAAA;AAGP;AAQA,MAAM8R,KAAe,CAAC;AAAA,EACpB,QAAA7R;AAAA,EACA,WAAAC;AAAA,EACA,UAAA6R,IAAW;AAAA,EACX,OAAApQ;AAAA,EACA,UAAAP,IAAW;AAAA,EACX,OAAA4C;AAAA,EACA,aAAAC;AAAA,EACA,SAAAmC;AAAA,EACA,iBAAAsB;AAAA,EACA,aAAAC,IAAc;AAAA,EACd,aAAAC;AAAA,EACA,cAAAC;AAAA,EACA,aAAA5C;AAAA,EACA,cAAAL;AAAA,EACA,oBAAAgB;AAAA,EACA,UAAAkB;AAAA,EACA,WAAA6J;AAAA,EACA,cAAAM;AAAA,EACA,UAAAjR;AACF,MAAM;AACJ,QAAMgS,IAAY;AAAA,IAChB,OAAAhO;AAAA,IACA,aAAAC;AAAA,IACA,SAAAmC;AAAA,IACA,iBAAAsB;AAAA,IACA,aAAAC;AAAA,IACA,aAAAC;AAAA,IACA,cAAAC;AAAA,IACA,aAAA5C;AAAA,IACA,cAAAL;AAAA,IACA,oBAAAgB;AAAA,IACA,UAAAkB;AAAA,EAAA;AAGF,SACE,gBAAA1G,EAAC2B,IAAA,EAAc,OAAAJ,GAAc,UAAAP,GAC3B,4BAACwQ,IAAA,EACC,UAAA,gBAAAxR,EAACL,IAAA,EAAY,QAAAE,GAAgB,WAAAC,GAC3B,UAAA,gBAAAE,EAAC6R,IAAA,EAAc,UAAUF,GACvB,4BAACG,IAAA,EACC,UAAA;AAAA,IAAA,gBAAA9R;AAAA,MAAC+R;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASnS,KAAY,gBAAAI,EAACoH,IAAA,EAAyB,GAAGwK,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,IAE/D,gBAAA5R;AAAA,MAAC+R;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SACE,gBAAA/R;AAAA,UAAC4Q;AAAA,UAAA;AAAA,YACC,WAAAL;AAAA,YACA,cAAAM;AAAA,UAAA;AAAA,QAAA;AAAA,MACF;AAAA,IAAA;AAAA,IAGJ,gBAAA7Q;AAAA,MAAC+R;AAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,SAASnS,KAAY,gBAAAI,EAACoH,IAAA,EAAyB,GAAGwK,EAAA,CAAW;AAAA,MAAA;AAAA,IAAA;AAAA,EAC/D,EAAA,CACF,EAAA,CACF,GACF,EAAA,CACF,EAAA,CACF;AAEJ,GCzFaI,KAAS/R,EAAW,QACpBgS,KAAQhS,EAAW,OACnBiS,KAAUjS,EAAW,SACrBkS,KAAalS,EAAW;"}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
(function(n,e){typeof exports=="object"&&typeof module<"u"?e(exports,require("react/jsx-runtime"),require("react"),require("react-router-dom"),require("axios"),require("js-cookie")):typeof define=="function"&&define.amd?define(["exports","react/jsx-runtime","react","react-router-dom","axios","js-cookie"],e):(n=typeof globalThis<"u"?globalThis:n||self,e(n.ComplaintApp={},n["react/jsx-runtime"],n.React,n.ReactRouterDOM,n.axios,n.Cookies))})(this,(function(n,e,u,F,se,T){"use strict";var Q=typeof document<"u"?document.currentScript:null;const aa={BASE_URL:"/",DEV:!1,MODE:"production",PROD:!0,SSR:!1};let P="";try{if(typeof{url:typeof document>"u"&&typeof location>"u"?require("url").pathToFileURL(__filename).href:typeof document>"u"?location.href:Q&&Q.tagName.toUpperCase()==="SCRIPT"&&Q.src||new URL("complaint-app.umd.js",document.baseURI).href}<"u"&&aa?.VITE_API_URL)P=void 0;else{const a=typeof process<"u"?process:null;a?.env?.VITE_API_URL&&(P=a.env.VITE_API_URL)}}catch{}const oe=a=>{P=a||"",j.defaults.baseURL=P},de=a=>{a?T.set("token",a,{secure:!0,sameSite:"Strict"}):T.remove("token")},ra=()=>T.get("token")||null,j=se.create({baseURL:P,transformRequest:[function(a,r){const t=ra();return t?r.Authorization=`Bearer ${t}`:delete r.Authorization,a==null||typeof a=="string"?a:JSON.stringify(a)}],headers:{Accept:"application/json","Content-Type":"application/json"}});let Z=!1,J=null;j.interceptors.response.use(a=>a,async a=>{const r=a.config,t=a.response;if(t&&(t.status===401||t.status===402)){const l=T.get("refreshToken");if(l)try{Z||(Z=!0,J=se.post(`${P}/api/v1/auth/refresh`,{},{headers:{Authorization:`Bearer ${l}`}}));const c=await J,{token:i,refreshToken:h}=c.data;return T.set("token",i,{secure:!0,sameSite:"Strict"}),h&&T.set("refreshToken",h),r.headers.Authorization=`Bearer ${i}`,j(r)}catch{T.remove("token"),T.remove("refreshToken")}finally{Z=!1,J=null}}return Promise.reject(a)});const ta=u.createContext(null),he=({children:a,apiUrl:r,authToken:t})=>(u.useEffect(()=>{r&&oe(r)},[r]),u.useEffect(()=>{de(t||null)},[t]),e.jsx(ta.Provider,{value:{apiUrl:r,authToken:t},children:a})),k={mode:"light",colors:{primary:"#2D64B8",primaryHover:"#2557A3",text:"#111827",textSecondary:"#6B7280",textMuted:"#9CA3AF",border:"#E5E7EB",borderLight:"#F3F4F6",background:"#F5F5F5",surface:"#FFFFFF",white:"#FFFFFF",onPrimary:"#FFFFFF",activeBg:"#ECFDF5",activeBorder:"#A7F3D0",activeText:"#059669",inactiveBg:"#F3F4F6",inactiveBorder:"#D1D5DB",inactiveText:"#6B7280",link:"#2D64B8",divider:"#E5E7EB",accentBorder:"#C5D7F0",accentBg:"#EEF4FB",stepDone:"#D6E4F7",success:"#22C55E",danger:"#EF4444",secondaryBtn:"#D1D5DB",secondaryBtnHover:"#C4C9D1",inputBg:"#FFFFFF",tableHeadBg:"#EEF4FB",sidebarBg:"#FAFBFD",overlay:"rgba(16, 24, 40, 0.06)"},radii:{sm:"6px",md:"8px",lg:"12px",xl:"16px",pill:"999px"},spacing:{xs:"4px",sm:"8px",md:"12px",lg:"16px",xl:"24px",xxl:"32px"},typography:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',h1Size:"28px",h2Size:"16px",bodySize:"14px",labelSize:"13px",valueSize:"22px",smallSize:"13px"},shadow:{card:"0 1px 2px rgba(16, 24, 40, 0.04)",settings:"0 1px 3px rgba(16, 24, 40, 0.06)"}},U={mode:"dark",colors:{primary:"#5B8DEF",primaryHover:"#7BA3F3",text:"#F3F4F6",textSecondary:"#A1A1AA",textMuted:"#71717A",border:"#3F3F46",borderLight:"#27272A",background:"#0F1115",surface:"#18181B",white:"#FFFFFF",onPrimary:"#FFFFFF",activeBg:"#052E1C",activeBorder:"#166534",activeText:"#4ADE80",inactiveBg:"#27272A",inactiveBorder:"#3F3F46",inactiveText:"#A1A1AA",link:"#7BA3F3",divider:"#3F3F46",accentBorder:"#2A3A55",accentBg:"#1A2333",stepDone:"#1E3A5F",success:"#22C55E",danger:"#F87171",secondaryBtn:"#3F3F46",secondaryBtnHover:"#52525B",inputBg:"#18181B",tableHeadBg:"#1A2333",sidebarBg:"#12141A",overlay:"rgba(0, 0, 0, 0.35)"},radii:{sm:"6px",md:"8px",lg:"12px",xl:"16px",pill:"999px"},spacing:{xs:"4px",sm:"8px",md:"12px",lg:"16px",xl:"24px",xxl:"32px"},typography:{fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',h1Size:"28px",h2Size:"16px",bodySize:"14px",labelSize:"13px",valueSize:"22px",smallSize:"13px"},shadow:{card:"0 1px 2px rgba(0, 0, 0, 0.35)",settings:"0 1px 3px rgba(0, 0, 0, 0.4)"}},pe={light:k,dark:U};function I(a){return a!=null&&typeof a=="object"&&!Array.isArray(a)}function $(a,r){if(!I(r))return a;const t={...a};return Object.keys(r).forEach(l=>{const c=r[l];I(c)&&I(a[l])?t[l]=$(a[l],c):c!==void 0&&(t[l]=c)}),t}function fe(a){return!a||!I(a)?{light:k,dark:U}:I(a.light)||I(a.dark)?{light:$(k,a.light||{}),dark:$(U,a.dark||{})}:{light:$(k,a),dark:$(U,a)}}function ge(a,r=!1){const t=fe(a);return{...r?t.dark:t.light,mode:r?"dark":"light",__pack:t}}const la={primary:"--ca-primary",primaryHover:"--ca-primary-hover",text:"--ca-text",textSecondary:"--ca-text-secondary",textMuted:"--ca-text-muted",border:"--ca-border",borderLight:"--ca-border-light",background:"--ca-bg",surface:"--ca-surface",white:"--ca-white",onPrimary:"--ca-on-primary",activeBg:"--ca-active-bg",activeBorder:"--ca-active-border",activeText:"--ca-active-text",inactiveBg:"--ca-inactive-bg",inactiveBorder:"--ca-inactive-border",inactiveText:"--ca-inactive-text",link:"--ca-link",divider:"--ca-divider",accentBorder:"--ca-accent-border",accentBg:"--ca-accent-bg",stepDone:"--ca-step-done",success:"--ca-success",danger:"--ca-danger",secondaryBtn:"--ca-secondary-btn",secondaryBtnHover:"--ca-secondary-btn-hover",inputBg:"--ca-input-bg",tableHeadBg:"--ca-table-head-bg",sidebarBg:"--ca-sidebar-bg",overlay:"--ca-overlay"},ca={sm:"--ca-radius-sm",md:"--ca-radius-md",lg:"--ca-radius-lg",xl:"--ca-radius-xl",pill:"--ca-radius-pill"},na={fontFamily:"--ca-font",h1Size:"--ca-h1-size",h2Size:"--ca-h2-size",bodySize:"--ca-body-size",labelSize:"--ca-label-size",valueSize:"--ca-value-size",smallSize:"--ca-small-size"},ia={card:"--ca-shadow-card",settings:"--ca-shadow-settings"};function ue(a){const r={};return a?.colors&&Object.entries(la).forEach(([t,l])=>{a.colors[t]!=null&&(r[l]=a.colors[t])}),a?.radii&&Object.entries(ca).forEach(([t,l])=>{a.radii[t]!=null&&(r[l]=a.radii[t])}),a?.typography&&Object.entries(na).forEach(([t,l])=>{a.typography[t]!=null&&(r[l]=a.typography[t])}),a?.shadow&&Object.entries(ia).forEach(([t,l])=>{a.shadow[t]!=null&&(r[l]=a.shadow[t])}),r["--ca-on-primary"]&&!r["--ca-white"]&&(r["--ca-white"]=r["--ca-on-primary"]),r}const ve=u.createContext({darkMode:!1,theme:null,themeFile:pe,cssVars:{}});function be({theme:a,darkMode:r=!1,children:t}){const l=u.useMemo(()=>{const c=ge(a,!!r),i=ue(c);return{darkMode:!!r,theme:c,themeFile:c.__pack,cssVars:i,mode:c.mode}},[a,r]);return e.jsx(ve.Provider,{value:l,children:t})}function ye(){return u.useContext(ve)}function S({children:a,variant:r="primary",size:t="md",startIcon:l,endIcon:c,className:i="",type:h="button",disabled:o=!1,onClick:p,...g}){const d=["ca-btn",`ca-btn--${r}`,t==="sm"?"ca-btn--sm":"",t==="lg"?"ca-btn--lg":"",i].filter(Boolean).join(" ");return e.jsxs("button",{type:h,className:d,disabled:o,onClick:p,...g,children:[l?e.jsx("span",{className:"ca-btn__icon",children:l}):null,a,c?e.jsx("span",{className:"ca-btn__icon",children:c}):null]})}function X({size:a=16,color:r="currentColor",...t}){return e.jsx("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",...t,children:e.jsx("path",{d:"M12 5v14M5 12h14",stroke:r,strokeWidth:"2",strokeLinecap:"round"})})}const _e={h1:"ca-h1",h2:"ca-h2",body:"ca-body",label:"ca-label",value:"ca-value",small:"ca-small",link:"ca-link"},sa={h1:"h1",h2:"h2",body:"p",label:"span",value:"span",small:"span",link:"button"};function A({variant:a="body",as:r,className:t="",children:l,...c}){const i=r||sa[a]||"p",h=_e[a]||_e.body;return e.jsx(i,{className:`${h} ${t}`.trim(),...c,children:l})}function R(a){return e.jsx(A,{variant:"h1",...a})}function D(a){return e.jsx(A,{variant:"h2",...a})}function w(a){return e.jsx(A,{variant:"body",...a})}function G(a){return e.jsx(A,{variant:"label",...a})}function me(a){return e.jsx(A,{variant:"value",...a})}function Se(a){return e.jsx(A,{variant:"link",type:"button",...a})}function we({title:a="Complaint Management",description:r,actionLabel:t="Create New Form",onAction:l,className:c=""}){return e.jsxs("header",{className:`ca-page-header ${c}`.trim(),children:[e.jsxs("div",{className:"ca-page-header__text",children:[e.jsx(R,{children:a}),r?e.jsx(w,{children:r}):null]}),e.jsx("div",{className:"ca-page-header__actions",children:e.jsx(S,{startIcon:e.jsx(X,{}),onClick:l,children:t})})]})}function ee({status:a="inactive",label:r,className:t=""}){const c=String(a).toLowerCase()==="active",i=r??(c?"Active":"Inactive");return e.jsx("span",{className:`ca-badge ca-badge--${c?"active":"inactive"} ${t}`.trim(),children:i})}function Ne({title:a,status:r,statusLabel:t,titleAsLink:l=!1,onTitleClick:c,className:i=""}){return e.jsxs("div",{className:`ca-system-card__header ${i}`.trim(),children:[e.jsx("div",{className:"ca-system-card__title-wrap",children:l?e.jsx("button",{type:"button",className:"ca-h2 ca-h2--link",onClick:c,children:a}):e.jsx(D,{children:a})}),e.jsx(ee,{status:r,label:t})]})}function V({size:a=16,color:r="currentColor",...t}){return e.jsx("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",...t,children:e.jsx("path",{d:"M9 6l6 6-6 6",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function Fe({updatedOn:a,configureLabel:r="Configure",onConfigure:t,className:l=""}){return e.jsxs("div",{className:`ca-system-card__footer ${l}`.trim(),children:[e.jsx(A,{variant:"small",as:"span",children:a?`Updated on ${a}`:""}),e.jsx(S,{size:"sm",onClick:t,endIcon:e.jsx(V,{size:14,color:"#fff"}),children:r})]})}function ke({label:a,value:r,className:t=""}){const l=r==null?"—":typeof r=="number"?String(r).padStart(2,"0"):r;return e.jsxs("div",{className:`ca-data-point ${t}`.trim(),children:[e.jsx(G,{children:a}),e.jsx(me,{children:l})]})}function Ce({className:a=""}){return e.jsx("div",{className:`ca-divider ${a}`.trim(),role:"separator","aria-orientation":"vertical"})}function Te({id:a,title:r,status:t="inactive",statusLabel:l,description:c,descriptionHref:i,departments:h,workflows:o,fields:p,formsFilled:g,updatedOn:d,titleAsLink:s=!1,onTitleClick:f,onDescriptionClick:b,onConfigure:v,className:y=""}){const _=()=>{v?.({id:a,title:r,status:t,departments:h,workflows:o,fields:p,formsFilled:g,updatedOn:d})},z=()=>{if(b){b({id:a,title:r,descriptionHref:i});return}i&&typeof window<"u"&&window.open(i,"_blank","noopener,noreferrer")},H=[{label:"Departments",value:h},{label:"Workflows",value:o},{label:"Fields",value:p},{label:"Forms Filled",value:g}];return e.jsxs("article",{className:`ca-system-card ${y}`.trim(),children:[e.jsx(Ne,{title:r,status:t,statusLabel:l,titleAsLink:s,onTitleClick:()=>f?.({id:a,title:r})}),c?e.jsx(Se,{onClick:z,children:c}):null,e.jsx("div",{className:"ca-system-card__stats",children:H.map((C,q)=>e.jsxs(u.Fragment,{children:[q>0?e.jsx(Ce,{}):null,e.jsx(ke,{label:C.label,value:C.value})]},C.label))}),e.jsx(Fe,{updatedOn:d,onConfigure:_})]})}function Ae({systems:a=[],onConfigure:r,onTitleClick:t,onDescriptionClick:l,emptyMessage:c="No systems found.",className:i=""}){return a.length?e.jsx("div",{className:`ca-system-grid ${i}`.trim(),children:a.map(h=>e.jsx(Te,{...h,onConfigure:r,onTitleClick:t,onDescriptionClick:l},h.id??h.title))}):e.jsx("div",{className:`ca-system-grid ${i}`.trim(),children:e.jsx("div",{className:"ca-empty",children:e.jsx(w,{children:c})})})}function B({value:a,onChange:r,placeholder:t,type:l="text",icon:c,className:i="",inputClassName:h="",...o}){return e.jsxs("div",{className:`ca-input-wrap ${i}`.trim(),children:[c?e.jsx("span",{className:"ca-input-wrap__icon",children:c}):null,e.jsx("input",{type:l,className:`ca-input ${c?"ca-input--with-icon":""} ${h}`.trim(),value:a,onChange:r,placeholder:t,...o})]})}function De({size:a=18,color:r="currentColor",...t}){return e.jsxs("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",...t,children:[e.jsx("path",{d:"M10.5 18a7.5 7.5 0 1 1 0-15 7.5 7.5 0 0 1 0 15Z",stroke:r,strokeWidth:"1.75"}),e.jsx("path",{d:"M16.5 16.5 21 21",stroke:r,strokeWidth:"1.75",strokeLinecap:"round"})]})}function Be({value:a,onChange:r,onSearch:t,placeholder:l="Search",className:c=""}){const i=h=>{h.key==="Enter"&&t&&t(a)};return e.jsx("div",{className:`ca-search ${c}`.trim(),children:e.jsx(B,{value:a,onChange:r,onKeyDown:i,placeholder:l,icon:e.jsx(De,{}),"aria-label":l})})}function Ee({text:a="Loading",fullScreen:r=!1}){return e.jsxs("div",{className:"ca-loading",style:r?{minHeight:"calc(100vh - 80px)"}:void 0,role:"status","aria-live":"polite",children:[e.jsx("span",{className:"ca-loading__spinner"}),e.jsxs("span",{children:[a,"…"]})]})}const Me=[{id:"qms",title:"QMS - Query Management System",status:"active",description:"Description of the template",departments:3,workflows:12,fields:55,formsFilled:234,updatedOn:"12 Mar 2024",titleAsLink:!0},{id:"cms",title:"CMS - Complaint Management System",status:"active",description:"Description of the template",departments:5,workflows:8,fields:42,formsFilled:189,updatedOn:"08 Mar 2024"},{id:"fms",title:"FMS - Feedback Management System",status:"inactive",description:"Description of the template",departments:2,workflows:4,fields:28,formsFilled:56,updatedOn:"01 Feb 2024"},{id:"rms",title:"RMS - Request Management System",status:"active",description:"Description of the template",departments:4,workflows:10,fields:61,formsFilled:312,updatedOn:"20 Mar 2024"}],xe="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi.";function Le(a=[]){return a.map((r,t)=>({id:r.id??r._id??`system-${t}`,title:r.title??r.name??"Untitled",status:r.status??"inactive",statusLabel:r.statusLabel,description:r.description??r.templateDescription,descriptionHref:r.descriptionHref??r.url,departments:r.departments??r.departmentCount??0,workflows:r.workflows??r.workflowCount??0,fields:r.fields??r.fieldCount??0,formsFilled:r.formsFilled??r.formFilledCount??r.forms_filled??0,updatedOn:r.updatedOn??r.updatedAt??r.updated_on,titleAsLink:!!(r.titleAsLink??r.isLink)}))}function ae({title:a="Complaint Management",description:r=xe,systems:t,systemsEndpoint:l,useDemoData:c=!0,createLabel:i="Create New Form",onCreateForm:h,onConfigure:o,onTitleClick:p,onDescriptionClick:g,onSearch:d}){const s=F.useNavigate(),[f,b]=u.useState(""),[v,y]=u.useState(null),[_,z]=u.useState(null),[H,C]=u.useState(l&&!t?"loading":"idle");u.useEffect(()=>{if(!l||t)return;const m=new AbortController;return j.get(l,{signal:m.signal}).then(N=>{const W=N?.data,xa=Array.isArray(W)?W:W?.data??W?.systems??W?.results??[];y(Le(xa)),z(null),C("success")}).catch(N=>{m.signal.aborted||(z(N?.message||"Failed to load systems"),y([]),C("error"))}),()=>m.abort()},[l,t]);const q=u.useMemo(()=>t?Le(t):v||(c?Me:[]),[t,v,c]),Da=u.useMemo(()=>{const m=f.trim().toLowerCase();return m?q.filter(N=>`${N.title} ${N.description??""} ${N.status??""}`.toLowerCase().includes(m)):q},[q,f]),Ba=m=>{const N=m.target.value;b(N),d?.(N)},Ea=m=>{o?.(m),s(`/settings/${m.id??"new"}?step=1`)},Ma=H==="loading";return e.jsxs(e.Fragment,{children:[e.jsx(we,{title:a,description:r,actionLabel:i,onAction:h}),e.jsx(Be,{value:f,onChange:Ba,placeholder:"Search"}),Ma?e.jsx(Ee,{text:"Loading systems"}):_?e.jsx("div",{className:"ca-empty",children:e.jsx("p",{className:"ca-body",children:_})}):e.jsx(Ae,{systems:Da,onConfigure:Ea,onTitleClick:p,onDescriptionClick:g,emptyMessage:f?"No systems match your search.":"No systems found."})]})}function re({steps:a=[],currentStep:r=1,onStepClick:t,className:l="",size:c="md"}){return e.jsx("nav",{className:`ca-stepper ca-stepper--${c} ${l}`.trim(),"aria-label":"Progress",children:a.map((i,h)=>{const o=i.id??h+1,p=o===r,g=o<r,d=!!t&&(g||p);return e.jsxs(u.Fragment,{children:[h>0?e.jsx("div",{className:`ca-stepper__line ${g||p?"ca-stepper__line--active":""}`}):null,e.jsxs("button",{type:"button",className:["ca-stepper__item",p?"ca-stepper__item--active":"",g?"ca-stepper__item--done":""].filter(Boolean).join(" "),onClick:()=>d&&t?.(o),disabled:!d,"aria-current":p?"step":void 0,children:[e.jsx("span",{className:"ca-stepper__circle",children:o}),e.jsx("span",{className:"ca-stepper__label",children:i.label})]})]},o)})})}const Pe=u.createContext(null),oa={categoryType:"qms",active:!0,description:"",roles:["Store Staff","HR Executive","HR Manager"],departmentRows:[{id:"1",department:"",subDepartment:"",roles:""}],priorityDraft:"",priorities:[],defaultPriorityId:null,selectedDeptNode:"payroll",workflow:{name:"",tatMinutes:"",description:"",statuses:[],steps:[]},fieldDraft:{name:"",type:""},formFields:[]};function Ie({children:a,initialValues:r}){const[t,l]=u.useState({...oa,...r}),c=u.useCallback(o=>{l(p=>({...p,...o}))},[]),i=u.useCallback(o=>{l(p=>({...p,workflow:{...p.workflow,...o}}))},[]),h=u.useMemo(()=>({state:t,setState:l,update:c,updateWorkflow:i}),[t,c,i]);return e.jsx(Pe.Provider,{value:h,children:a})}function M(){const a=u.useContext(Pe);if(!a)throw new Error("useSettingsWizard must be used within SettingsWizardProvider");return a}const x=[{id:1,key:"category",label:"Category Type",title:"Category Type",description:"Define the type and basic details for this category type."},{id:2,key:"departments",label:"Departments",title:"Departments",description:"----"},{id:3,key:"priorities",label:"Priorities",title:"Priorities",description:"----"},{id:4,key:"workflow",label:"Workflow",title:"Workflow",description:"----"},{id:5,key:"formFields",label:"Form Fields",title:"Form Fields",description:"----"},{id:6,key:"review",label:"Review & Publish",title:"Review & Publish",description:"Review your configuration and publish."}],te=[{id:1,label:"Create Workflow"},{id:2,label:"Statuses"},{id:3,label:"Workflow Steps"}],da=["Urgent","High","Medium","Low"],$e=[{id:"short",label:"Textfield / Short Answer",icon:"text"},{id:"long",label:"Description / Long Answer",icon:"doc"},{id:"date",label:"Date",icon:"calendar"},{id:"time",label:"Time",icon:"clock"},{id:"single",label:"Dropdown - Single Select",icon:"chevron"},{id:"multi",label:"Dropdown - Multiple Select",icon:"chevron"}],Oe=["Store Staff","HR Executive","HR Manager","Store Manager","Admin"],ze=[{value:"qms",label:"QMS - Query Management System"},{value:"cms",label:"CMS - Complaint Management System"},{value:"fms",label:"FMS - Feedback Management System"},{value:"rms",label:"RMS - Request Management System"}],ha=[{id:"hr",name:"HR",children:[{id:"payroll",name:"Payroll"},{id:"recruitment",name:"Recruitment"}]},{id:"finance",name:"Finance",children:[{id:"ap",name:"Accounts Payable"}]},{id:"it",name:"IT",children:[]}],pa=[{value:"#EF4444",label:"Red"},{value:"#F59E0B",label:"Orange"},{value:"#EAB308",label:"Yellow"},{value:"#22C55E",label:"Green"},{value:"#3B82F6",label:"Blue"},{value:"#8B5CF6",label:"Purple"}];function He({size:a=28,color:r="currentColor",...t}){return e.jsxs("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",style:{color:"var(--ca-primary)"},...t,children:[e.jsx("path",{d:"M12 3 3 8l9 5 9-5-9-5Z",stroke:r,strokeWidth:"1.6",strokeLinejoin:"round"}),e.jsx("path",{d:"M3 12.5 12 17.5l9-5",stroke:r,strokeWidth:"1.6",strokeLinejoin:"round",strokeLinecap:"round"}),e.jsx("path",{d:"M3 16.5 12 21.5l9-5",stroke:r,strokeWidth:"1.6",strokeLinejoin:"round",strokeLinecap:"round"})]})}function We({title:a,description:r,nextLabel:t="Next",onNext:l,showNext:c=!0,nextDisabled:i=!1,nextVariant:h="primary",className:o=""}){return e.jsxs("div",{className:`ca-settings-card__header ${o}`.trim(),children:[e.jsxs("div",{className:"ca-settings-card__heading",children:[e.jsx(He,{}),e.jsxs("div",{children:[e.jsx(D,{children:a}),r?e.jsx(w,{className:"ca-settings-card__desc",children:r}):null]})]}),c?e.jsx(S,{variant:h,disabled:i,onClick:l,endIcon:e.jsx(V,{size:14,color:"currentColor"}),children:t}):null]})}function L({title:a,description:r,onNext:t,nextLabel:l,showNext:c=!0,nextDisabled:i,nextVariant:h,children:o,footer:p,className:g=""}){return e.jsxs("section",{className:`ca-settings-card ${g}`.trim(),children:[e.jsx(We,{title:a,description:r,onNext:t,nextLabel:l,showNext:c,nextDisabled:i,nextVariant:h}),e.jsx("div",{className:"ca-settings-card__divider"}),e.jsx("div",{className:"ca-settings-card__body",children:o}),p?e.jsx("div",{className:"ca-settings-card__footer",children:p}):null]})}function O({children:a,hint:r,htmlFor:t,className:l=""}){return e.jsxs("div",{className:`ca-field-label ${l}`.trim(),children:[e.jsx("label",{className:"ca-label",htmlFor:t,children:a}),r!=null?e.jsx("span",{className:"ca-field-label__hint",children:r}):null]})}function je({size:a=16,color:r="currentColor",...t}){return e.jsx("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",...t,children:e.jsx("path",{d:"M6 9l6 6 6-6",stroke:r,strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}function E({value:a,onChange:r,options:t=[],placeholder:l="Select",className:c="",disabled:i=!1,...h}){return e.jsxs("div",{className:`ca-select ${c}`.trim(),children:[e.jsxs("select",{className:"ca-select__control",value:a??"",onChange:r,disabled:i,...h,children:[e.jsx("option",{value:"",disabled:!0,children:l}),t.map(o=>{const p=typeof o=="string"?o:o.value,g=typeof o=="string"?o:o.label;return e.jsx("option",{value:p,children:g},p)})]}),e.jsx("span",{className:"ca-select__chevron",children:e.jsx(je,{size:16})})]})}function Ue({value:a,onChange:r,placeholder:t,maxLength:l,rows:c=4,className:i="",...h}){return e.jsx("textarea",{className:`ca-textarea ${i}`.trim(),value:a,onChange:r,placeholder:t,maxLength:l,rows:c,...h})}function Y({label:a,hint:r,children:t,className:l="",htmlFor:c}){return e.jsxs("div",{className:`ca-form-field ${l}`.trim(),children:[a!=null?e.jsx(O,{htmlFor:c,hint:r,children:a}):null,t]})}function le({label:a,hint:r,...t}){return e.jsx(Y,{label:a,hint:r,htmlFor:t.id,children:e.jsx(B,{...t})})}function Ve({label:a,hint:r,...t}){return e.jsx(Y,{label:a,hint:r,htmlFor:t.id,children:e.jsx(E,{...t})})}function ce({label:a,hint:r,maxLength:t,value:l="",...c}){const i=r??(t!=null?`${String(l).length}/${t}`:void 0);return e.jsx(Y,{label:a,hint:i,htmlFor:c.id,children:e.jsx(Ue,{value:l,maxLength:t,...c})})}function ne({checked:a=!1,onChange:r,disabled:t=!1,"aria-label":l="Toggle",className:c=""}){return e.jsx("button",{type:"button",role:"switch","aria-checked":a,"aria-label":l,disabled:t,className:`ca-toggle ${a?"ca-toggle--on":""} ${c}`.trim(),onClick:()=>r?.(!a),children:e.jsx("span",{className:"ca-toggle__thumb"})})}function qe({label:a="Active",checked:r,onChange:t,className:l=""}){return e.jsxs("div",{className:`ca-toggle-field ${l}`.trim(),children:[e.jsx(G,{children:a}),e.jsx(ne,{checked:r,onChange:t,"aria-label":a})]})}function Ge({size:a=12,color:r="currentColor",...t}){return e.jsx("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",...t,children:e.jsx("path",{d:"M6 6l12 12M18 6L6 18",stroke:r,strokeWidth:"2",strokeLinecap:"round"})})}function Ye({label:a,onRemove:r,className:t=""}){return e.jsxs("span",{className:`ca-tag ${t}`.trim(),children:[a,r?e.jsx("button",{type:"button",className:"ca-tag__remove",onClick:r,"aria-label":`Remove ${a}`,children:e.jsx(Ge,{size:10})}):null]})}function Ke({label:a="Select Roles",options:r=[],value:t=[],onChange:l,placeholder:c="Select roles",className:i=""}){const[h,o]=u.useState(""),p=r.filter(s=>{const f=typeof s=="string"?s:s.value;return!t.includes(f)}),g=s=>{const f=s.target.value;f&&(l?.([...t,f]),o(""))},d=s=>{l?.(t.filter(f=>f!==s))};return e.jsxs("div",{className:`ca-role-select ${i}`.trim(),children:[e.jsx(O,{children:a}),e.jsx(E,{value:h,onChange:g,options:p,placeholder:c}),t.length>0?e.jsx("div",{className:"ca-tag-list",children:t.map(s=>e.jsx(Ye,{label:s,onRemove:()=>d(s)},s))}):null]})}function fa({onNext:a,stepMeta:r}){const{state:t,update:l}=M();return e.jsxs(L,{title:r.title,description:r.description,onNext:a,children:[e.jsx("div",{className:"ca-step-section",children:e.jsxs("div",{className:"ca-step-row ca-step-row--category",children:[e.jsx(Ve,{label:"Category Type",className:"ca-step-row__grow",value:t.categoryType,onChange:c=>l({categoryType:c.target.value}),options:ze,placeholder:"Select category type"}),e.jsx(qe,{checked:t.active,onChange:c=>l({active:c})})]})}),e.jsx("div",{className:"ca-step-section",children:e.jsx(ce,{label:"Description",placeholder:"Enter description",maxLength:500,value:t.description,onChange:c=>l({description:c.target.value}),rows:5})}),e.jsx("div",{className:"ca-step-section ca-step-section--last",children:e.jsx(Ke,{options:Oe,value:t.roles,onChange:c=>l({roles:c})})})]})}const ga=["HR","Finance","IT","Operations","Sales"];function ua(){return{id:`${Date.now()}-${Math.random().toString(36).slice(2,7)}`,department:"",subDepartment:"",roles:""}}function va({onNext:a,stepMeta:r}){const{state:t,update:l}=M(),c=t.departmentRows,i=(o,p)=>{l({departmentRows:c.map(g=>g.id===o?{...g,...p}:g)})},h=()=>{l({departmentRows:[...c,ua()]})};return e.jsx(L,{title:r.title,description:r.description,onNext:a,children:e.jsxs("div",{className:"ca-dept-table",children:[e.jsxs("div",{className:"ca-dept-table__head",children:[e.jsx("div",{children:"Department"}),e.jsx("div",{children:"Sub-department"}),e.jsx("div",{children:"Roles"}),e.jsx("div",{})]}),c.map(o=>e.jsxs("div",{className:"ca-dept-table__row",children:[e.jsx(E,{value:o.department,onChange:p=>i(o.id,{department:p.target.value}),options:ga,placeholder:"Select or add department"}),e.jsxs("div",{className:"ca-input-with-action",children:[e.jsx(B,{value:o.subDepartment,onChange:p=>i(o.id,{subDepartment:p.target.value}),placeholder:"Add sub-department"}),e.jsx("button",{type:"button",className:"ca-input-with-action__btn","aria-label":"Add sub-department",onClick:()=>{o.subDepartment.trim()},children:e.jsx(X,{size:14,color:"currentColor"})})]}),e.jsx(E,{value:o.roles,onChange:p=>i(o.id,{roles:p.target.value}),options:Oe,placeholder:"Select roles"}),e.jsx(S,{variant:"link",size:"sm",onClick:h,children:"+ Add"})]},o.id))]})})}function Qe({children:a,onClick:r,className:t="",active:l=!1}){return e.jsx("button",{type:"button",className:`ca-chip ${l?"ca-chip--active":""} ${t}`.trim(),onClick:r,children:a})}function Ze({checked:a=!1,onChange:r,name:t,value:l,"aria-label":c,className:i=""}){return e.jsxs("label",{className:`ca-radio ${i}`.trim(),children:[e.jsx("input",{type:"radio",className:"ca-radio__input",name:t,value:l,checked:a,onChange:r,"aria-label":c}),e.jsx("span",{className:"ca-radio__mark"})]})}function ie({size:a=16,color:r="#9CA3AF",...t}){return e.jsxs("svg",{width:a,height:a,viewBox:"0 0 16 16",fill:"none","aria-hidden":"true",...t,children:[e.jsx("circle",{cx:"5",cy:"4",r:"1.2",fill:r}),e.jsx("circle",{cx:"11",cy:"4",r:"1.2",fill:r}),e.jsx("circle",{cx:"5",cy:"8",r:"1.2",fill:r}),e.jsx("circle",{cx:"11",cy:"8",r:"1.2",fill:r}),e.jsx("circle",{cx:"5",cy:"12",r:"1.2",fill:r}),e.jsx("circle",{cx:"11",cy:"12",r:"1.2",fill:r})]})}function Je(a){return{id:`${Date.now()}-${Math.random().toString(36).slice(2,7)}`,name:a,color:""}}function ba({onNext:a,stepMeta:r}){const{state:t,update:l}=M(),{priorityDraft:c,priorities:i,defaultPriorityId:h}=t,o=d=>{const s=(d??c).trim();if(!s)return;if(i.some(b=>b.name.toLowerCase()===s.toLowerCase())){l({priorityDraft:""});return}const f=[...i,Je(s)];l({priorities:f,priorityDraft:"",defaultPriorityId:h??f[0].id})},p=(d,s)=>{l({priorities:i.map(f=>f.id===d?{...f,...s}:f)})},g=pa.map(d=>({value:d.value,label:d.label}));return e.jsxs(L,{title:r.title,description:r.description,onNext:a,children:[e.jsxs("div",{className:"ca-priority-add",children:[e.jsx(O,{children:"Priorities"}),e.jsxs("div",{className:"ca-priority-add__row",children:[e.jsx(B,{value:c,onChange:d=>l({priorityDraft:d.target.value}),placeholder:"Add priority",onKeyDown:d=>{d.key==="Enter"&&(d.preventDefault(),o())}}),e.jsx(S,{variant:"outline",onClick:()=>o(),children:"+ Add"})]}),e.jsx("div",{className:"ca-chip-row",children:da.map(d=>e.jsxs(Qe,{onClick:()=>o(d),children:["+ ",d]},d))})]}),e.jsxs("div",{className:"ca-priority-table",children:[e.jsxs("div",{className:"ca-priority-table__head",children:[e.jsx("div",{children:"Priority"}),e.jsx("div",{children:"Color"}),e.jsx("div",{children:"Default"})]}),(i.length?i:[Je("")]).map((d,s)=>{const f=!i.length;return e.jsxs("div",{className:"ca-priority-table__row",children:[e.jsxs("div",{className:"ca-priority-table__name",children:[e.jsx(ie,{}),e.jsx(B,{value:f?c:d.name,onChange:b=>{f?l({priorityDraft:b.target.value}):p(d.id,{name:b.target.value})},placeholder:"Add priority"})]}),e.jsx(E,{value:d.color,onChange:b=>{f||p(d.id,{color:b.target.value})},options:g,placeholder:"Select color"}),e.jsx(Ze,{name:"default-priority",value:d.id,checked:!f&&h===d.id,onChange:()=>!f&&l({defaultPriorityId:d.id}),"aria-label":"Default priority"})]},d.id||s)})]})]})}function ya({onNext:a,stepMeta:r,substep:t=1,onSubstepChange:l}){const{state:c,update:i,updateWorkflow:h}=M(),{selectedDeptNode:o,workflow:p}=c,g=()=>{if(t<te.length){l?.(t+1);return}a?.()};return e.jsx(L,{title:r.title,description:r.description,onNext:a,nextVariant:"secondary",children:e.jsxs("div",{className:"ca-workflow",children:[e.jsxs("aside",{className:"ca-workflow__sidebar",children:[e.jsx("h3",{className:"ca-workflow__sidebar-title",children:"Select Department"}),e.jsx("p",{className:"ca-small",children:"Add workflow for selected department"}),e.jsx("ul",{className:"ca-dept-tree",children:ha.map(d=>e.jsxs("li",{className:"ca-dept-tree__group",children:[e.jsx("button",{type:"button",className:`ca-dept-tree__item ${o===d.id?"ca-dept-tree__item--active":""}`,onClick:()=>i({selectedDeptNode:d.id}),children:d.name}),d.children?.length?e.jsx("ul",{className:"ca-dept-tree__children",children:d.children.map(s=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:`ca-dept-tree__item ca-dept-tree__item--child ${o===s.id?"ca-dept-tree__item--active":""}`,onClick:()=>i({selectedDeptNode:s.id}),children:[e.jsx("span",{className:"ca-dept-tree__branch","aria-hidden":"true",children:"└"}),s.name]})},s.id))}):null]},d.id))})]}),e.jsxs("div",{className:"ca-workflow__main",children:[e.jsx(re,{steps:te,currentStep:t,onStepClick:l,size:"sm",className:"ca-workflow__substepper"}),t===1?e.jsxs("div",{className:"ca-workflow__form",children:[e.jsxs("div",{className:"ca-step-row",children:[e.jsx(le,{className:"ca-step-row__grow",label:"Name",placeholder:"Enter name",value:p.name,onChange:d=>h({name:d.target.value})}),e.jsx(le,{className:"ca-step-row__grow",label:"TAT Minutes",placeholder:"Enter here",value:p.tatMinutes,onChange:d=>h({tatMinutes:d.target.value})})]}),e.jsx(ce,{label:"Description",placeholder:"Enter description",value:p.description,onChange:d=>h({description:d.target.value}),rows:5})]}):null,t===2?e.jsx("div",{className:"ca-workflow__placeholder",children:e.jsx("p",{className:"ca-body",children:"Configure workflow statuses for the selected department."})}):null,t===3?e.jsx("div",{className:"ca-workflow__placeholder",children:e.jsx("p",{className:"ca-body",children:"Define ordered workflow steps and assignees."})}):null,e.jsx("div",{className:"ca-workflow__actions",children:e.jsx(S,{onClick:g,endIcon:e.jsx(V,{size:14,color:"#fff"}),children:"Next Step"})})]})]})})}function Xe({size:a=16,color:r="#9CA3AF",...t}){return e.jsx("svg",{width:a,height:a,viewBox:"0 0 24 24",fill:"none","aria-hidden":"true",...t,children:e.jsx("path",{d:"M4 7h16M9 7V5a1 1 0 0 1 1-1h4a1 1 0 0 1 1 1v2m2 0v12a2 2 0 0 1-2 2H8a2 2 0 0 1-2-2V7h12Z",stroke:r,strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round"})})}const K=$e.map(a=>({value:a.id,label:a.label}));function _a({type:a}){const r={text:"A",doc:"¶",calendar:"口",clock:"◷",chevron:"▾"};return e.jsx("span",{className:"ca-field-lib__glyph",children:r[a]||"▾"})}function ma({onNext:a,stepMeta:r}){const{state:t,update:l}=M(),{fieldDraft:c,formFields:i}=t,h=s=>l({fieldDraft:{...c,...s}}),o=()=>{if(!c.name.trim()||!c.type)return;const s=K.find(f=>f.value===c.type)?.label||c.type;l({formFields:[...i,{id:`${Date.now()}`,name:c.name.trim(),type:c.type,typeLabel:s,required:!1}],fieldDraft:{name:"",type:""}})},p=(s,f)=>{l({formFields:i.map(b=>b.id===s?{...b,...f}:b)})},g=s=>{l({formFields:i.filter(f=>f.id!==s)})},d=s=>{h({type:s.id})};return e.jsx(L,{title:r.title,description:r.description,showNext:!1,footer:e.jsx(S,{onClick:a,endIcon:e.jsx(V,{size:14,color:"#fff"}),children:"Next"}),children:e.jsxs("div",{className:"ca-form-fields",children:[e.jsxs("aside",{className:"ca-field-lib",children:[e.jsx("h3",{className:"ca-field-lib__title",children:"Field Library"}),e.jsx("p",{className:"ca-small",children:"Drag and drop the fields to add."}),e.jsx("ul",{className:"ca-field-lib__list",children:$e.map(s=>e.jsx("li",{children:e.jsxs("button",{type:"button",className:"ca-field-lib__item",draggable:!0,onDragStart:f=>{f.dataTransfer.setData("text/plain",s.id)},onClick:()=>d(s),children:[e.jsx(_a,{type:s.icon}),e.jsx("span",{children:s.label})]})},s.id))})]}),e.jsxs("div",{className:"ca-form-fields__main",children:[e.jsxs("div",{className:"ca-add-fields",onDragOver:s=>s.preventDefault(),onDrop:s=>{s.preventDefault();const f=s.dataTransfer.getData("text/plain");f&&h({type:f})},children:[e.jsxs("div",{className:"ca-add-fields__top",children:[e.jsx("h3",{className:"ca-add-fields__title",children:"Add Fields"}),e.jsx(S,{onClick:o,children:"Add Field"})]}),e.jsxs("div",{className:"ca-step-row",children:[e.jsxs("div",{className:"ca-step-row__grow",children:[e.jsx(O,{children:"Name of Field"}),e.jsx(B,{value:c.name,onChange:s=>h({name:s.target.value}),placeholder:"Enter name of the field."})]}),e.jsxs("div",{className:"ca-step-row__grow",children:[e.jsx(O,{children:"Type of Field"}),e.jsx(E,{value:c.type,onChange:s=>h({type:s.target.value}),options:K,placeholder:"Select type of the field."})]})]})]}),e.jsxs("div",{className:"ca-fields-table",children:[e.jsxs("div",{className:"ca-fields-table__head",children:[e.jsx("div",{children:"Field Name"}),e.jsx("div",{children:"Field Type"}),e.jsx("div",{children:"Required"}),e.jsx("div",{})]}),i.length===0?e.jsx("div",{className:"ca-fields-table__empty",children:e.jsx("p",{className:"ca-small",children:"No fields added yet."})}):i.map(s=>e.jsxs("div",{className:"ca-fields-table__row",children:[e.jsxs("div",{className:"ca-fields-table__name",children:[e.jsx(ie,{}),e.jsx(B,{value:s.name,onChange:f=>p(s.id,{name:f.target.value})})]}),e.jsx(E,{value:s.type,onChange:f=>{const b=f.target.value,v=K.find(y=>y.value===b)?.label||b;p(s.id,{type:b,typeLabel:v})},options:K,placeholder:"Select type"}),e.jsx(ne,{checked:s.required,onChange:f=>p(s.id,{required:f}),"aria-label":"Required"}),e.jsx("button",{type:"button",className:"ca-icon-btn","aria-label":"Delete field",onClick:()=>g(s.id),children:e.jsx(Xe,{})})]},s.id))]})]})]})})}function Sa({onPublish:a,stepMeta:r}){const{state:t}=M(),l=ze.find(c=>c.value===t.categoryType)?.label||t.categoryType;return e.jsx(L,{title:r.title,description:r.description,nextLabel:"Publish",onNext:a,children:e.jsxs("div",{className:"ca-review",children:[e.jsxs("section",{className:"ca-review__block",children:[e.jsx(D,{children:"Category Type"}),e.jsxs("div",{className:"ca-review__row",children:[e.jsx(G,{children:l}),e.jsx(ee,{status:t.active?"active":"inactive"})]}),t.description?e.jsx(w,{children:t.description}):null,t.roles.length?e.jsxs(w,{children:["Roles: ",t.roles.join(", ")]}):null]}),e.jsxs("section",{className:"ca-review__block",children:[e.jsx(D,{children:"Departments"}),e.jsxs(w,{children:[t.departmentRows.filter(c=>c.department).length," department row(s) configured"]})]}),e.jsxs("section",{className:"ca-review__block",children:[e.jsx(D,{children:"Priorities"}),e.jsx(w,{children:t.priorities.length?t.priorities.map(c=>c.name).join(", "):"No priorities added"})]}),e.jsxs("section",{className:"ca-review__block",children:[e.jsx(D,{children:"Workflow"}),e.jsx(w,{children:t.workflow.name?`${t.workflow.name} (TAT: ${t.workflow.tatMinutes||"—"} min)`:"No workflow created yet"})]}),e.jsxs("section",{className:"ca-review__block ca-review__block--last",children:[e.jsx(D,{children:"Form Fields"}),e.jsx(w,{children:t.formFields.length?t.formFields.map(c=>c.name).join(", "):"No form fields added"})]}),e.jsx("div",{className:"ca-workflow__actions",children:e.jsx(S,{onClick:a,children:"Publish"})})]})})}function wa(a){const r=Number(a);return!Number.isFinite(r)||r<1?1:r>x.length?x.length:Math.floor(r)}function Na(a){const r=Number(a);return!Number.isFinite(r)||r<1?1:r>3?3:Math.floor(r)}function Re({title:a="Complaint Management Settings",onPublish:r,onStepChange:t}){const l=F.useNavigate(),{systemId:c}=F.useParams(),[i,h]=F.useSearchParams(),o=wa(i.get("step")||1),p=Na(i.get("substep")||1);u.useEffect(()=>{if(!i.get("step")){const v=new URLSearchParams(i);v.set("step","1"),h(v,{replace:!0})}},[i,h]);const g=u.useMemo(()=>x.find(v=>v.id===o)||x[0],[o]),d=u.useCallback((v,y)=>{const _=new URLSearchParams(i);_.set("step",String(v)),v===4?_.set("substep",String(y??(v===o?p:1))):_.delete("substep"),h(_,{replace:!1}),t?.({systemId:c,step:v,substep:y})},[i,h,t,c,o,p]),s=()=>{o<x.length&&d(o+1,1)},f=v=>{d(4,v)},b=()=>{r?.({systemId:c,step:o})};return e.jsx(Ie,{children:e.jsxs("div",{className:"ca-settings-page",children:[e.jsx(R,{children:a}),e.jsx(re,{steps:x,currentStep:o,onStepClick:v=>d(v,v===4?1:void 0),className:"ca-settings-page__stepper"}),o===1?e.jsx(fa,{onNext:s,stepMeta:g}):null,o===2?e.jsx(va,{onNext:s,stepMeta:g}):null,o===3?e.jsx(ba,{onNext:s,stepMeta:g}):null,o===4?e.jsx(ya,{onNext:s,stepMeta:g,substep:p,onSubstepChange:f}):null,o===5?e.jsx(ma,{onNext:s,stepMeta:g}):null,o===6?e.jsx(Sa,{onPublish:b,stepMeta:g}):null,e.jsx("button",{type:"button",className:"ca-back-link",onClick:()=>l("/"),children:"← Back to Complaint Management"})]})})}function Fa({children:a}){const{cssVars:r,darkMode:t,mode:l}=ye();return e.jsx("div",{className:`ca-root ${t?"ca-root--dark":"ca-root--light"}`,"data-ca-theme":l,style:r,children:a})}const ea=({apiUrl:a,authToken:r,basePath:t="/",theme:l,darkMode:c=!1,title:i,description:h,systems:o,systemsEndpoint:p,useDemoData:g=!0,createLabel:d,onCreateForm:s,onConfigure:f,onTitleClick:b,onDescriptionClick:v,onSearch:y,onPublish:_,onStepChange:z,children:H})=>{const C={title:i,description:h,systems:o,systemsEndpoint:p,useDemoData:g,createLabel:d,onCreateForm:s,onConfigure:f,onTitleClick:b,onDescriptionClick:v,onSearch:y};return e.jsx(be,{theme:l,darkMode:c,children:e.jsx(Fa,{children:e.jsx(he,{apiUrl:a,authToken:r,children:e.jsx(F.BrowserRouter,{basename:t,children:e.jsxs(F.Routes,{children:[e.jsx(F.Route,{path:"/",element:H??e.jsx(ae,{...C})}),e.jsx(F.Route,{path:"/settings/:systemId",element:e.jsx(Re,{onPublish:_,onStepChange:z})}),e.jsx(F.Route,{path:"*",element:H??e.jsx(ae,{...C})})]})})})})})},ka=k.colors,Ca=k.radii,Ta=k.spacing,Aa=k.typography;n.ApiProvider=he,n.BodyText=w,n.Button=S,n.CardFooter=Fe,n.CardHeader=Ne,n.ChevronDownIcon=je,n.ChevronRightIcon=V,n.Chip=Qe,n.CloseIcon=Ge,n.ComplaintApp=ea,n.ComplaintManagementPage=ae,n.ComplaintSettingsPage=Re,n.DEFAULT_PAGE_DESCRIPTION=xe,n.DEMO_SYSTEMS=Me,n.DataPoint=ke,n.Divider=Ce,n.DragHandleIcon=ie,n.FieldLabel=O,n.FormField=Y,n.FormInput=le,n.FormSelect=Ve,n.FormTextarea=ce,n.Heading1=R,n.Heading2=D,n.Input=B,n.LabelText=G,n.LayersIcon=He,n.LinkText=Se,n.Loading=Ee,n.PageHeader=we,n.PlusIcon=X,n.Radio=Ze,n.RoleMultiSelect=Ke,n.SETTINGS_STEPS=x,n.SearchBar=Be,n.SearchIcon=De,n.Select=E,n.SettingsCard=L,n.SettingsCardHeader=We,n.SettingsWizardProvider=Ie,n.StatusBadge=ee,n.Stepper=re,n.SystemCard=Te,n.SystemCardGrid=Ae,n.Tag=Ye,n.Textarea=Ue,n.ThemeProvider=be,n.Toggle=ne,n.ToggleField=qe,n.TrashIcon=Xe,n.Typography=A,n.ValueText=me,n.WORKFLOW_SUBSTEPS=te,n.api=j,n.colors=ka,n.darkTheme=U,n.deepMerge=$,n.default=ea,n.defaultThemeFile=pe,n.lightTheme=k,n.normalizeThemeFile=fe,n.radii=Ca,n.resolveActiveTheme=ge,n.setAuthToken=de,n.setBaseUrl=oe,n.spacing=Ta,n.themeToCssVars=ue,n.typography=Aa,n.useSettingsWizard=M,n.useTheme=ye,Object.defineProperties(n,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})}));
|
|
2
|
+
//# sourceMappingURL=complaint-app.umd.js.map
|