@nccirtu/tablefy 0.9.1 → 0.9.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.esm.js","sources":["../../src/forms/builders/actions-builder.ts","../../src/forms/builders/form-schema.ts","../../src/forms/builders/section-builder.ts","../../src/forms/builders/tab-builder.ts","../../src/forms/builders/wizard-builder.ts","../../src/forms/fields/base-field.ts","../../src/forms/fields/text-input.tsx","../../src/forms/fields/textarea.tsx","../../src/forms/fields/select.tsx","../../src/forms/fields/checkbox.tsx","../../src/forms/fields/toggle.tsx","../../src/forms/fields/radio-group.tsx","../../src/forms/fields/date-picker.tsx","../../src/forms/fields/hidden.tsx","../../src/forms/fields/file-upload.tsx","../../src/forms/fields/checkbox-group.tsx","../../src/forms/fields/repeater.tsx","../../src/forms/components/field-renderer.tsx","../../src/forms/components/grid-layout.tsx","../../src/forms/components/form-actions.tsx","../../src/forms/components/section-renderer.tsx","../../src/forms/components/tab-renderer.tsx","../../src/forms/components/wizard-renderer.tsx","../../src/forms/components/form-renderer.tsx"],"sourcesContent":["import { FormActionConfig } from \"../types/actions\";\n\nexport class ActionsBuilder<TData extends Record<string, any>> {\n private actionsList: FormActionConfig<TData>[] = [];\n\n submit(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"submit\",\n label: opts.label || \"Submit\",\n variant: opts.variant || \"default\",\n ...opts,\n });\n return this;\n }\n\n cancel(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"cancel\",\n label: opts.label || \"Cancel\",\n variant: opts.variant || \"outline\",\n ...opts,\n });\n return this;\n }\n\n custom(opts: Omit<FormActionConfig<TData>, \"type\"> & { label: string }): this {\n this.actionsList.push({ ...opts, type: \"custom\" });\n return this;\n }\n\n build(): FormActionConfig<TData>[] {\n return [...this.actionsList];\n }\n}\n","import { FormSchemaConfig, FormBuildResult, BuiltField } from \"../types/form\";\nimport { SectionConfig, TabConfig, WizardStepConfig } from \"../types/layout\";\nimport { FormActionConfig } from \"../types/actions\";\nimport { ActionsBuilder } from \"./actions-builder\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\n/**\n * Form Schema Builder\n * Fluent API for building complete form configurations\n */\nexport class FormSchema<TData extends Record<string, any>> {\n private fieldBuilders: FieldBuilder<TData>[] = [];\n private schemaConfig: Partial<FormSchemaConfig<TData>> = {};\n\n static make<TData extends Record<string, any>>(): FormSchema<TData> {\n return new FormSchema();\n }\n\n // --- Configuration ---\n\n title(title: string | ((data: TData) => string)): this {\n this.schemaConfig.title = title;\n return this;\n }\n\n description(description: string | ((data: TData) => string)): this {\n this.schemaConfig.description = description;\n return this;\n }\n\n columns(columns: number): this {\n this.schemaConfig.columns = columns;\n return this;\n }\n\n bordered(bordered = true): this {\n this.schemaConfig.bordered = bordered;\n return this;\n }\n\n spacing(spacing: \"compact\" | \"normal\" | \"relaxed\"): this {\n this.schemaConfig.spacing = spacing;\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean)): this {\n this.schemaConfig.disabled = disabled;\n return this;\n }\n\n // --- Fields ---\n\n fields(...builders: FieldBuilder<TData>[]): this {\n this.fieldBuilders.push(...builders);\n return this;\n }\n\n // --- Layout ---\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.schemaConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n tabs(...tabs: { build(): TabConfig<TData> }[]): this {\n this.schemaConfig.tabs = tabs.map((t) => t.build());\n return this;\n }\n\n wizard(\n ...steps: { build(): WizardStepConfig<TData> }[]\n ): this {\n this.schemaConfig.wizardSteps = steps.map((s) => s.build());\n return this;\n }\n\n // --- Actions ---\n\n actions(\n fn: (builder: ActionsBuilder<TData>) => ActionsBuilder<TData>,\n ): this {\n const builder = new ActionsBuilder<TData>();\n this.schemaConfig.actions = fn(builder).build();\n return this;\n }\n\n actionsPosition(position: \"start\" | \"end\" | \"between\" | \"center\"): this {\n this.schemaConfig.actionsPosition = position;\n return this;\n }\n\n // --- Build ---\n\n build(): FormBuildResult<TData> {\n const fields = this.fieldBuilders.map((b) => b.build());\n return {\n fields,\n config: {\n ...(this.schemaConfig as FormSchemaConfig<TData>),\n fields,\n },\n };\n }\n}\n","import { ReactNode } from \"react\";\nimport { SectionConfig } from \"../types/layout\";\n\nexport class SectionBuilder<TData extends Record<string, any>> {\n private sectionConfig: SectionConfig<TData>;\n\n constructor(title: string) {\n this.sectionConfig = {\n id: title.toLowerCase().replace(/\\s+/g, \"-\"),\n title,\n fields: [],\n columns: 1,\n collapsible: false,\n collapsed: false,\n };\n }\n\n static make<TData extends Record<string, any>>(\n title: string,\n ): SectionBuilder<TData> {\n return new SectionBuilder(title);\n }\n\n id(id: string): this {\n this.sectionConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.sectionConfig.description = description;\n return this;\n }\n\n fields(fields: string[]): this {\n this.sectionConfig.fields = fields;\n return this;\n }\n\n columns(columns: number): this {\n this.sectionConfig.columns = columns;\n return this;\n }\n\n collapsible(collapsible = true): this {\n this.sectionConfig.collapsible = collapsible;\n return this;\n }\n\n collapsed(collapsed = true): this {\n this.sectionConfig.collapsed = collapsed;\n this.sectionConfig.collapsible = true;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.sectionConfig.icon = icon;\n return this;\n }\n\n hidden(fn: (data: TData) => boolean): this {\n this.sectionConfig.hidden = fn;\n return this;\n }\n\n build(): SectionConfig<TData> {\n return { ...this.sectionConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { TabConfig, SectionConfig } from \"../types/layout\";\n\nexport class TabBuilder<TData extends Record<string, any>> {\n private tabConfig: TabConfig<TData>;\n\n constructor(label: string) {\n this.tabConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): TabBuilder<TData> {\n return new TabBuilder(label);\n }\n\n id(id: string): this {\n this.tabConfig.id = id;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.tabConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.tabConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.tabConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n badge(\n badge: string | number | ((data: TData) => string | number),\n ): this {\n this.tabConfig.badge = badge;\n return this;\n }\n\n disabled(fn: (data: TData) => boolean): this {\n this.tabConfig.disabled = fn;\n return this;\n }\n\n build(): TabConfig<TData> {\n return { ...this.tabConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { WizardStepConfig, SectionConfig } from \"../types/layout\";\n\nexport class WizardStep<TData extends Record<string, any>> {\n private stepConfig: WizardStepConfig<TData>;\n\n constructor(label: string) {\n this.stepConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): WizardStep<TData> {\n return new WizardStep(label);\n }\n\n id(id: string): this {\n this.stepConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.stepConfig.description = description;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.stepConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.stepConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.stepConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n canProceed(fn: (data: TData) => boolean): this {\n this.stepConfig.canProceed = fn;\n return this;\n }\n\n beforeNext(fn: (data: TData) => Promise<boolean> | boolean): this {\n this.stepConfig.beforeNext = fn;\n return this;\n }\n\n build(): WizardStepConfig<TData> {\n return { ...this.stepConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport {\n BaseFieldConfig,\n ValidationRule,\n DependencyConfig,\n} from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\nexport abstract class BaseField<\n TData extends Record<string, any>,\n TConfig extends BaseFieldConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(name: string) {\n this.config = {\n name,\n required: false,\n disabled: false,\n readOnly: false,\n hidden: false,\n columnSpan: 1,\n rules: [],\n dependsOn: [],\n } as unknown as TConfig;\n }\n\n // --- Fluent API ---\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n helperText(text: string): this {\n this.config.helperText = text;\n return this;\n }\n\n required(required = true): this {\n this.config.required = required;\n if (\n required &&\n !this.config.rules?.some((r: ValidationRule) => r.type === \"required\")\n ) {\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"required\",\n message: `${this.config.label || this.config.name} is required`,\n },\n ];\n }\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean) = true): this {\n this.config.disabled = disabled;\n return this;\n }\n\n readOnly(readOnly = true): this {\n this.config.readOnly = readOnly;\n return this;\n }\n\n hidden(hidden: boolean | ((data: TData) => boolean) = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n default(value: any): this {\n this.config.defaultValue = value;\n return this;\n }\n\n columnSpan(span: number): this {\n this.config.columnSpan = span;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n rules(rules: ValidationRule[]): this {\n this.config.rules = [...(this.config.rules || []), ...rules];\n return this;\n }\n\n zodSchema(schema: any): this {\n this.config.zodSchema = schema;\n return this;\n }\n\n dependsOn<K extends string & keyof TData>(\n field: K,\n condition: (value: TData[K], data: TData) => boolean,\n effect: \"show\" | \"hide\" | \"enable\" | \"disable\" | \"setValue\" = \"show\",\n effectValue?: any,\n ): this {\n this.config.dependsOn = [\n ...(this.config.dependsOn || []),\n { field, condition, effect, effectValue } as DependencyConfig<TData>,\n ];\n return this;\n }\n\n reactive(reactive = true): this {\n this.config.reactive = reactive;\n return this;\n }\n\n // --- Abstract ---\n\n abstract readonly fieldType: FieldType;\n\n abstract renderField(props: FieldRenderProps<TData>): ReactNode;\n\n // --- Build ---\n\n build(): BuiltField<TData> {\n return {\n name: this.config.name,\n type: this.fieldType,\n config: { ...this.config },\n render: (props: FieldRenderProps<TData>) => this.renderField(props),\n };\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextInputConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class TextInput<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextInputConfig<TData>> {\n readonly fieldType: FieldType = \"text\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): TextInput<TData> {\n return new TextInput(name);\n }\n\n type(type: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\"): this {\n this.config.type = type;\n return this;\n }\n\n email(): this {\n return this.type(\"email\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n tel(): this {\n return this.type(\"tel\");\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n prefix(prefix: string | ReactNode): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string | ReactNode): this {\n this.config.suffix = suffix;\n return this;\n }\n\n autocomplete(value: string): this {\n this.config.autocomplete = value;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const {\n type,\n placeholder,\n maxLength,\n readOnly,\n autocomplete,\n className,\n prefix,\n suffix,\n } = this.config;\n\n const input = (\n <Input\n type={type || \"text\"}\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onChange(\n type === \"number\" ? Number(e.target.value) : e.target.value,\n )\n }\n onBlur={onBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autocomplete}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n\n if (prefix || suffix) {\n return (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-muted-foreground\">{prefix}</span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-muted-foreground\">{suffix}</span>\n )}\n </div>\n );\n }\n\n return input;\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Textarea as ShadcnTextarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextareaConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Textarea<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextareaConfig<TData>> {\n readonly fieldType: FieldType = \"textarea\";\n\n constructor(name: string) {\n super(name);\n this.config.rows = 3;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Textarea<TData> {\n return new Textarea(name);\n }\n\n rows(rows: number): this {\n this.config.rows = rows;\n return this;\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n autoResize(autoResize = true): this {\n this.config.autoResize = autoResize;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, rows, maxLength, readOnly, className } = this.config;\n\n return (\n <ShadcnTextarea\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChange(e.target.value)\n }\n onBlur={onBlur}\n placeholder={placeholder}\n rows={rows}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n Select as ShadcnSelect,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { SelectConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Select<\n TData extends Record<string, any>,\n> extends BaseField<TData, SelectConfig<TData>> {\n readonly fieldType: FieldType = \"select\";\n\n constructor(name: string) {\n super(name);\n (this.config as SelectConfig<TData>).options = [];\n (this.config as SelectConfig<TData>).multiple = false;\n (this.config as SelectConfig<TData>).searchable = false;\n (this.config as SelectConfig<TData>).clearable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Select<TData> {\n return new Select(name);\n }\n\n options(\n options: SelectOption[] | ((data: TData) => SelectOption[]),\n ): this {\n (this.config as SelectConfig<TData>).options = options;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as SelectConfig<TData>).multiple = multiple;\n return this;\n }\n\n searchable(searchable = true): this {\n (this.config as SelectConfig<TData>).searchable = searchable;\n return this;\n }\n\n clearable(clearable = true): this {\n (this.config as SelectConfig<TData>).clearable = clearable;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as SelectConfig<TData>).maxItems = max;\n return this;\n }\n\n loadOptions(fn: (query: string) => Promise<SelectOption[]>): this {\n (this.config as SelectConfig<TData>).loadOptions = fn;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as SelectConfig<TData>;\n const resolvedOptions =\n typeof cfg.options === \"function\" ? cfg.options(data) : cfg.options;\n\n return (\n <ShadcnSelect\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(error && \"border-destructive\", cfg.className)}\n >\n <SelectValue placeholder={cfg.placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {resolvedOptions.map((opt) => (\n <SelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </ShadcnSelect>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Checkbox<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Checkbox<TData> {\n return new Checkbox(name);\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { className } = this.config;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <ShadcnCheckbox\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(!!checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {this.config.label && (\n <label\n htmlFor={this.config.name}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n error && \"text-destructive\",\n )}\n >\n {this.config.label}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { ToggleConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Toggle<\n TData extends Record<string, any>,\n> extends BaseField<TData, ToggleConfig<TData>> {\n readonly fieldType: FieldType = \"toggle\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Toggle<TData> {\n return new Toggle(name);\n }\n\n onLabel(label: string): this {\n this.config.onLabel = label;\n return this;\n }\n\n offLabel(label: string): this {\n this.config.offLabel = label;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { onLabel, offLabel, className } = this.config;\n const displayLabel = value ? onLabel : offLabel;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <Switch\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {displayLabel && (\n <label\n htmlFor={this.config.name}\n className=\"text-sm text-muted-foreground\"\n >\n {displayLabel}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n RadioGroup as ShadcnRadioGroup,\n RadioGroupItem,\n} from \"@/components/ui/radio-group\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { RadioGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class RadioGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, RadioGroupConfig<TData>> {\n readonly fieldType: FieldType = \"radio-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as RadioGroupConfig<TData>).options = [];\n (this.config as RadioGroupConfig<TData>).orientation = \"vertical\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): RadioGroup<TData> {\n return new RadioGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as RadioGroupConfig<TData>).options = options;\n return this;\n }\n\n orientation(orientation: \"horizontal\" | \"vertical\"): this {\n (this.config as RadioGroupConfig<TData>).orientation = orientation;\n return this;\n }\n\n horizontal(): this {\n return this.orientation(\"horizontal\");\n }\n\n vertical(): this {\n return this.orientation(\"vertical\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RadioGroupConfig<TData>;\n const isHorizontal = cfg.orientation === \"horizontal\";\n\n return (\n <ShadcnRadioGroup\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n className={cn(\n isHorizontal ? \"flex flex-row gap-4\" : \"flex flex-col gap-2\",\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={opt.value}\n id={`${cfg.name}-${opt.value}`}\n disabled={opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n}\n","import React, { ReactNode, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { DatePickerConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class DatePicker<\n TData extends Record<string, any>,\n> extends BaseField<TData, DatePickerConfig<TData>> {\n readonly fieldType: FieldType = \"date-picker\";\n\n constructor(name: string) {\n super(name);\n this.config.format = \"PPP\";\n this.config.includeTime = false;\n this.config.locale = \"en-US\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): DatePicker<TData> {\n return new DatePicker(name);\n }\n\n minDate(date: Date | ((data: TData) => Date)): this {\n this.config.minDate = date;\n return this;\n }\n\n maxDate(date: Date | ((data: TData) => Date)): this {\n this.config.maxDate = date;\n return this;\n }\n\n format(format: string): this {\n this.config.format = format;\n return this;\n }\n\n includeTime(includeTime = true): this {\n this.config.includeTime = includeTime;\n if (includeTime) {\n (this as any).fieldType = \"date-time-picker\";\n }\n return this;\n }\n\n locale(locale: string): this {\n this.config.locale = locale;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, className, locale } = this.config;\n\n const resolvedMinDate =\n typeof this.config.minDate === \"function\"\n ? this.config.minDate(data)\n : this.config.minDate;\n const resolvedMaxDate =\n typeof this.config.maxDate === \"function\"\n ? this.config.maxDate(data)\n : this.config.maxDate;\n\n const dateValue = value ? new Date(value) : undefined;\n\n const formatDate = (date: Date): string => {\n return date.toLocaleDateString(locale || \"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateValue && \"text-muted-foreground\",\n error && \"border-destructive\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateValue ? formatDate(dateValue) : placeholder || \"Pick a date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={dateValue}\n onSelect={(date) =>\n onChange(date ? date.toISOString().split(\"T\")[0] : \"\")\n }\n disabled={(date) => {\n if (resolvedMinDate && date < resolvedMinDate) return true;\n if (resolvedMaxDate && date > resolvedMaxDate) return true;\n return false;\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseField } from \"./base-field\";\nimport { HiddenConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Hidden<\n TData extends Record<string, any>,\n> extends BaseField<TData, HiddenConfig<TData>> {\n readonly fieldType: FieldType = \"hidden\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Hidden<TData> {\n return new Hidden(name);\n }\n\n renderField({ value }: FieldRenderProps<TData>): ReactNode {\n return <input type=\"hidden\" name={this.config.name} value={value ?? \"\"} />;\n }\n}\n","\"use client\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Upload, X, File } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { FileUploadConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class FileUpload<\n TData extends Record<string, any>,\n> extends BaseField<TData, FileUploadConfig<TData>> {\n readonly fieldType: FieldType = \"file-upload\";\n\n constructor(name: string) {\n super(name);\n (this.config as FileUploadConfig<TData>).multiple = false;\n (this.config as FileUploadConfig<TData>).preview = true;\n (this.config as FileUploadConfig<TData>).maxFiles = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): FileUpload<TData> {\n return new FileUpload(name);\n }\n\n accept(accept: string): this {\n (this.config as FileUploadConfig<TData>).accept = accept;\n return this;\n }\n\n maxSize(bytes: number): this {\n (this.config as FileUploadConfig<TData>).maxSize = bytes;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as FileUploadConfig<TData>).multiple = multiple;\n return this;\n }\n\n maxFiles(max: number): this {\n (this.config as FileUploadConfig<TData>).maxFiles = max;\n return this;\n }\n\n preview(preview = true): this {\n (this.config as FileUploadConfig<TData>).preview = preview;\n return this;\n }\n\n image(): this {\n return this.accept(\"image/*\");\n }\n\n pdf(): this {\n return this.accept(\"application/pdf\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as FileUploadConfig<TData>;\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n\n const files: File[] = Array.isArray(value) ? value : value ? [value] : [];\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList) return;\n const newFiles = Array.from(fileList);\n\n if (cfg.maxSize) {\n const oversized = newFiles.find((f) => f.size > cfg.maxSize!);\n if (oversized) return;\n }\n\n if (cfg.multiple) {\n const combined = [...files, ...newFiles].slice(0, cfg.maxFiles);\n onChange(combined);\n } else {\n onChange(newFiles[0] || null);\n }\n };\n\n const removeFile = (index: number) => {\n if (cfg.multiple) {\n const updated = files.filter((_, i) => i !== index);\n onChange(updated.length ? updated : null);\n } else {\n onChange(null);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", cfg.className)}>\n <div\n className={cn(\n \"flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 transition-colors\",\n dragOver\n ? \"border-primary bg-primary/5\"\n : \"border-muted-foreground/25\",\n error && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDragOver(false);\n if (!disabled) handleFiles(e.dataTransfer.files);\n }}\n >\n <Upload className=\"mb-2 h-8 w-8 text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop or{\" \"}\n <button\n type=\"button\"\n className=\"text-primary underline\"\n onClick={() => inputRef.current?.click()}\n disabled={disabled}\n >\n browse\n </button>\n </p>\n {cfg.accept && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Accepted: {cfg.accept}\n </p>\n )}\n <input\n ref={inputRef}\n type=\"file\"\n accept={cfg.accept}\n multiple={cfg.multiple}\n onChange={(e) => handleFiles(e.target.files)}\n className=\"hidden\"\n disabled={disabled}\n />\n </div>\n\n {files.length > 0 && (\n <ul className=\"space-y-1\">\n {files.map((file, index) => (\n <li\n key={index}\n className=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <File className=\"h-4 w-4 text-muted-foreground\" />\n {file.name}\n </span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => removeFile(index)}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class CheckboxGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxGroupConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as CheckboxGroupConfig<TData>).options = [];\n (this.config as CheckboxGroupConfig<TData>).columns = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): CheckboxGroup<TData> {\n return new CheckboxGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as CheckboxGroupConfig<TData>).options = options;\n return this;\n }\n\n columns(columns: number): this {\n (this.config as CheckboxGroupConfig<TData>).columns = columns;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as CheckboxGroupConfig<TData>;\n const selectedValues: string[] = Array.isArray(value) ? value : [];\n\n const gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n const handleToggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...selectedValues, optionValue]);\n } else {\n onChange(selectedValues.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div\n className={cn(\n \"grid gap-2\",\n gridColsClass[cfg.columns || 1] || gridColsClass[1],\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <ShadcnCheckbox\n id={`${cfg.name}-${opt.value}`}\n checked={selectedValues.includes(opt.value)}\n onCheckedChange={(checked) =>\n handleToggle(opt.value, !!checked)\n }\n disabled={disabled || opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </div>\n );\n }\n}\n","\"use client\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { Plus, Trash2, GripVertical } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { RepeaterConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\nexport class Repeater<\n TData extends Record<string, any>,\n> extends BaseField<TData, RepeaterConfig<TData>> {\n readonly fieldType: FieldType = \"repeater\";\n private fieldBuilders: FieldBuilder<any>[] = [];\n\n constructor(name: string) {\n super(name);\n (this.config as RepeaterConfig<TData>).minItems = 0;\n (this.config as RepeaterConfig<TData>).maxItems = Infinity;\n (this.config as RepeaterConfig<TData>).addLabel = \"Add item\";\n (this.config as RepeaterConfig<TData>).collapsible = false;\n (this.config as RepeaterConfig<TData>).orderable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Repeater<TData> {\n return new Repeater(name);\n }\n\n fields(...builders: FieldBuilder<any>[]): this {\n this.fieldBuilders = builders;\n (this.config as RepeaterConfig<TData>).fields = builders.map((b) =>\n b.build(),\n );\n return this;\n }\n\n minItems(min: number): this {\n (this.config as RepeaterConfig<TData>).minItems = min;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as RepeaterConfig<TData>).maxItems = max;\n return this;\n }\n\n addLabel(label: string): this {\n (this.config as RepeaterConfig<TData>).addLabel = label;\n return this;\n }\n\n collapsible(collapsible = true): this {\n (this.config as RepeaterConfig<TData>).collapsible = collapsible;\n return this;\n }\n\n orderable(orderable = true): this {\n (this.config as RepeaterConfig<TData>).orderable = orderable;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RepeaterConfig<TData>;\n const items: Record<string, any>[] = Array.isArray(value) ? value : [];\n const builtFields = cfg.fields as BuiltField<any>[];\n\n const addItem = () => {\n if (items.length >= (cfg.maxItems || Infinity)) return;\n const defaults: Record<string, any> = {};\n builtFields.forEach((f) => {\n defaults[f.name] = f.config.defaultValue ?? \"\";\n });\n onChange([...items, defaults]);\n };\n\n const removeItem = (index: number) => {\n if (items.length <= (cfg.minItems || 0)) return;\n onChange(items.filter((_, i) => i !== index));\n };\n\n const updateItem = (\n index: number,\n fieldName: string,\n fieldValue: any,\n ) => {\n const updated = items.map((item, i) =>\n i === index ? { ...item, [fieldName]: fieldValue } : item,\n );\n onChange(updated);\n };\n\n const canAdd = items.length < (cfg.maxItems || Infinity);\n const canRemove = items.length > (cfg.minItems || 0);\n\n return (\n <div className={cn(\"space-y-3\", cfg.className)}>\n {items.map((item, index) => (\n <Card key={index}>\n <CardContent className=\"flex items-start gap-3 pt-4\">\n {cfg.orderable && (\n <GripVertical className=\"mt-2 h-5 w-5 cursor-grab text-muted-foreground\" />\n )}\n <div className=\"grid flex-1 gap-3\">\n {builtFields.map((field) => (\n <div key={field.name} className=\"space-y-1\">\n {field.config.label && (\n <label className=\"text-sm font-medium\">\n {field.config.label}\n </label>\n )}\n {field.render({\n value: item[field.name],\n onChange: (v) => updateItem(index, field.name, v),\n disabled,\n data,\n })}\n </div>\n ))}\n </div>\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"mt-1 h-8 w-8 p-0 text-destructive\"\n onClick={() => removeItem(index)}\n disabled={disabled}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n )}\n </CardContent>\n </Card>\n ))}\n\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addItem}\n disabled={disabled}\n className=\"w-full\"\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n {cfg.addLabel}\n </Button>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BuiltField, FieldRenderProps } from \"../types/form\";\n\nexport interface FieldRendererProps<TData extends Record<string, any>> {\n field: BuiltField<TData>;\n value: any;\n error?: string;\n disabled?: boolean;\n data: TData;\n onChange: (value: any) => void;\n onBlur?: () => void;\n}\n\nexport function FieldRenderer<TData extends Record<string, any>>({\n field,\n value,\n error,\n disabled,\n data,\n onChange,\n onBlur,\n}: FieldRendererProps<TData>): ReactNode {\n // Hidden fields render without wrapper\n if (field.type === \"hidden\") {\n return field.render({ value, onChange, onBlur, error, disabled, data });\n }\n\n // Checkbox and Toggle handle their own labels inline\n const skipLabel = field.type === \"checkbox\" || field.type === \"toggle\";\n\n return (\n <div\n className={cn(\n \"space-y-2\",\n field.config.columnSpan && field.config.columnSpan > 1\n ? `col-span-${field.config.columnSpan}`\n : undefined,\n field.config.className,\n )}\n >\n {field.config.label && !skipLabel && (\n <Label\n htmlFor={field.name}\n className={cn(error && \"text-destructive\")}\n >\n {field.config.label}\n {field.config.required && (\n <span className=\"text-destructive ml-1\">*</span>\n )}\n </Label>\n )}\n {field.render({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n data,\n })}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n {!error && field.config.helperText && (\n <p className=\"text-sm text-muted-foreground\">\n {field.config.helperText}\n </p>\n )}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface GridLayoutProps {\n columns?: number;\n children: ReactNode;\n className?: string;\n}\n\nconst gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function GridLayout({\n columns = 1,\n children,\n className,\n}: GridLayoutProps): ReactNode {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n gridColsClass[columns] || gridColsClass[1],\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { FormActionConfig } from \"../types/actions\";\n\nexport interface FormActionsProps<TData extends Record<string, any>> {\n actions: FormActionConfig<TData>[];\n position?: \"start\" | \"end\" | \"between\" | \"center\";\n data: TData;\n processing?: boolean;\n}\n\nconst positionClass: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n end: \"justify-end\",\n};\n\nexport function FormActions<TData extends Record<string, any>>({\n actions,\n position = \"end\",\n data,\n processing = false,\n}: FormActionsProps<TData>): ReactNode {\n if (!actions.length) return null;\n\n return (\n <div className={cn(\"flex gap-2\", positionClass[position])}>\n {actions.map((action, i) => {\n const isDisabled =\n typeof action.disabled === \"function\"\n ? action.disabled(data, processing)\n : action.disabled;\n\n if (action.type === \"submit\") {\n return (\n <Button\n key={i}\n type=\"submit\"\n variant={action.variant || \"default\"}\n disabled={isDisabled || processing}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {processing ? \"Processing...\" : action.label}\n </Button>\n );\n }\n\n if (action.type === \"cancel\" && action.href) {\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n disabled={processing}\n asChild\n >\n <a href={action.href}>\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n onClick={action.onClick}\n disabled={isDisabled || (action.type === \"cancel\" && processing)}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState } from \"react\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { SectionConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface SectionRendererProps<TData extends Record<string, any>> {\n section: SectionConfig<TData>;\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n}\n\nexport function SectionRenderer<TData extends Record<string, any>>({\n section,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n}: SectionRendererProps<TData>): ReactNode {\n const [isCollapsed, setIsCollapsed] = useState(section.collapsed ?? false);\n\n if (section.hidden && section.hidden(data)) return null;\n\n const sectionFields = fields.filter((f) =>\n section.fields.includes(f.name),\n );\n\n return (\n <Card>\n <CardHeader\n className={cn(\n section.collapsible && \"cursor-pointer select-none\",\n )}\n onClick={\n section.collapsible ? () => setIsCollapsed(!isCollapsed) : undefined\n }\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {section.icon}\n <CardTitle className=\"text-lg\">{section.title}</CardTitle>\n </div>\n {section.collapsible && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n </Button>\n )}\n </div>\n {section.description && (\n <CardDescription>{section.description}</CardDescription>\n )}\n </CardHeader>\n {!isCollapsed && (\n <CardContent>\n <GridLayout columns={section.columns}>\n {sectionFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n </CardContent>\n )}\n </Card>\n );\n}\n","\"use client\";\nimport React, { ReactNode } from \"react\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"@/components/ui/tabs\";\nimport { cn } from \"@/lib/utils\";\nimport { TabConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface TabRendererProps<TData extends Record<string, any>> {\n tabs: TabConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n}\n\nexport function TabRenderer<TData extends Record<string, any>>({\n tabs,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n}: TabRendererProps<TData>): ReactNode {\n const firstTab = tabs[0]?.id;\n\n return (\n <Tabs defaultValue={firstTab}>\n <TabsList>\n {tabs.map((tab) => {\n const isDisabled = tab.disabled ? tab.disabled(data) : false;\n const badge =\n typeof tab.badge === \"function\" ? tab.badge(data) : tab.badge;\n\n return (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n disabled={isDisabled}\n >\n <span className=\"flex items-center gap-2\">\n {tab.icon}\n {tab.label}\n {badge !== undefined && badge !== null && (\n <span className=\"ml-1 rounded-full bg-muted px-2 py-0.5 text-xs\">\n {badge}\n </span>\n )}\n </span>\n </TabsTrigger>\n );\n })}\n </TabsList>\n {tabs.map((tab) => {\n const tabFields = tab.fields\n ? fields.filter((f) => tab.fields!.includes(f.name))\n : [];\n\n return (\n <TabsContent key={tab.id} value={tab.id} className=\"mt-4\">\n {tab.sections ? (\n <div className=\"space-y-4\">\n {tab.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {tabFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) =>\n onChange(field.name as keyof TData, v)\n }\n onBlur={\n onBlur ? () => onBlur(field.name) : undefined\n }\n />\n );\n })}\n </GridLayout>\n )}\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Check } from \"lucide-react\";\nimport { WizardStepConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface WizardRendererProps<TData extends Record<string, any>> {\n steps: WizardStepConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n onSubmit: () => void;\n processing?: boolean;\n}\n\nexport function WizardRenderer<TData extends Record<string, any>>({\n steps,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n onSubmit,\n processing = false,\n}: WizardRendererProps<TData>): ReactNode {\n const [currentStep, setCurrentStep] = useState(0);\n\n const currentStepConfig = steps[currentStep];\n const isLastStep = currentStep === steps.length - 1;\n const isFirstStep = currentStep === 0;\n\n const canProceed = currentStepConfig?.canProceed\n ? currentStepConfig.canProceed(data)\n : true;\n\n const handleNext = useCallback(async () => {\n if (currentStepConfig?.beforeNext) {\n const canContinue = await currentStepConfig.beforeNext(data);\n if (!canContinue) return;\n }\n if (isLastStep) {\n onSubmit();\n } else {\n setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));\n }\n }, [currentStep, currentStepConfig, data, isLastStep, onSubmit, steps.length]);\n\n const handlePrevious = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const stepFields = currentStepConfig?.fields\n ? fields.filter((f) => currentStepConfig.fields!.includes(f.name))\n : [];\n\n return (\n <div className=\"space-y-6\">\n {/* Step indicators */}\n <nav aria-label=\"Progress\">\n <ol className=\"flex items-center\">\n {steps.map((step, index) => (\n <li\n key={step.id}\n className={cn(\n \"flex items-center\",\n index < steps.length - 1 && \"flex-1\",\n )}\n >\n <div className=\"flex items-center gap-2\">\n <div\n className={cn(\n \"flex h-8 w-8 items-center justify-center rounded-full border-2 text-sm font-medium\",\n index < currentStep &&\n \"border-primary bg-primary text-primary-foreground\",\n index === currentStep &&\n \"border-primary text-primary\",\n index > currentStep &&\n \"border-muted-foreground/25 text-muted-foreground\",\n )}\n >\n {index < currentStep ? (\n <Check className=\"h-4 w-4\" />\n ) : (\n index + 1\n )}\n </div>\n <div className=\"hidden sm:block\">\n <p\n className={cn(\n \"text-sm font-medium\",\n index <= currentStep\n ? \"text-foreground\"\n : \"text-muted-foreground\",\n )}\n >\n {step.label}\n </p>\n {step.description && (\n <p className=\"text-xs text-muted-foreground\">\n {step.description}\n </p>\n )}\n </div>\n </div>\n {index < steps.length - 1 && (\n <div\n className={cn(\n \"mx-4 hidden h-0.5 flex-1 sm:block\",\n index < currentStep ? \"bg-primary\" : \"bg-muted\",\n )}\n />\n )}\n </li>\n ))}\n </ol>\n </nav>\n\n {/* Step content */}\n <div>\n {currentStepConfig?.sections ? (\n <div className=\"space-y-4\">\n {currentStepConfig.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {stepFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n )}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button\n type={isLastStep ? \"submit\" : \"button\"}\n onClick={handleNext}\n disabled={!canProceed || (isLastStep && processing)}\n >\n {isLastStep\n ? processing\n ? \"Processing...\"\n : \"Submit\"\n : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useMemo, useCallback } from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { FormBuildResult, BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\nimport { FormActions } from \"./form-actions\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { TabRenderer } from \"./tab-renderer\";\nimport { WizardRenderer } from \"./wizard-renderer\";\n\nexport interface FormRendererProps<TData extends Record<string, any>> {\n schema: FormBuildResult<TData>;\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onSubmit: () => void;\n processing?: boolean;\n className?: string;\n disabled?: boolean;\n onBlur?: (field: string) => void;\n}\n\nexport function FormRenderer<TData extends Record<string, any>>({\n schema,\n data,\n errors,\n onChange,\n onSubmit,\n processing = false,\n className,\n disabled = false,\n onBlur,\n}: FormRendererProps<TData>): ReactNode {\n const { fields, config } = schema;\n\n const resolvedTitle = useMemo(() => {\n if (typeof config.title === \"function\") return config.title(data);\n return config.title;\n }, [config.title, data]);\n\n const resolvedDescription = useMemo(() => {\n if (typeof config.description === \"function\")\n return config.description(data);\n return config.description;\n }, [config.description, data]);\n\n const isFieldVisible = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (typeof field.config.hidden === \"function\")\n return !field.config.hidden(data);\n if (typeof field.config.hidden === \"boolean\")\n return !field.config.hidden;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"show\" && !dep.condition(depValue, data))\n return false;\n if (dep.effect === \"hide\" && dep.condition(depValue, data))\n return false;\n }\n return true;\n },\n [data],\n );\n\n const isFieldDisabled = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (disabled) return true;\n if (typeof config.disabled === \"function\" && config.disabled(data))\n return true;\n if (typeof config.disabled === \"boolean\" && config.disabled) return true;\n if (typeof field.config.disabled === \"function\")\n return field.config.disabled(data);\n if (typeof field.config.disabled === \"boolean\")\n return field.config.disabled;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"disable\" && dep.condition(depValue, data))\n return true;\n if (\n dep.effect === \"enable\" &&\n !dep.condition(depValue, data)\n )\n return true;\n }\n return false;\n },\n [disabled, config.disabled, data],\n );\n\n const renderFieldsFlat = () => (\n <GridLayout columns={config.columns}>\n {fields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n );\n\n const renderContent = () => {\n // Wizard mode\n if (config.wizardSteps?.length) {\n return (\n <WizardRenderer\n steps={config.wizardSteps}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n onSubmit={onSubmit}\n processing={processing}\n />\n );\n }\n\n // Tabs mode\n if (config.tabs?.length) {\n return (\n <TabRenderer\n tabs={config.tabs}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n />\n );\n }\n\n // Sections mode\n if (config.sections?.length) {\n return (\n <div className=\"space-y-4\">\n {config.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n );\n }\n\n // Flat mode (default)\n return renderFieldsFlat();\n };\n\n const spacingClass = {\n compact: \"space-y-3\",\n normal: \"space-y-6\",\n relaxed: \"space-y-8\",\n }[config.spacing || \"normal\"];\n\n // Wizard handles its own submit button\n const showActions =\n config.actions?.length && !config.wizardSteps?.length;\n\n const formBody = (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n className={cn(spacingClass, className)}\n >\n {(resolvedTitle || resolvedDescription) && (\n <div className=\"space-y-1\">\n {resolvedTitle && (\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n {resolvedTitle}\n </h2>\n )}\n {resolvedDescription && (\n <p className=\"text-sm text-muted-foreground\">\n {resolvedDescription}\n </p>\n )}\n </div>\n )}\n\n {renderContent()}\n\n {showActions && (\n <FormActions\n actions={config.actions!}\n position={config.actionsPosition}\n data={data}\n processing={processing}\n />\n )}\n </form>\n );\n\n if (config.bordered) {\n return (\n <Card>\n <CardContent className=\"pt-6\">{formBody}</CardContent>\n </Card>\n );\n }\n\n return formBody;\n}\n"],"names":["_jsx","_jsxs","ShadcnTextarea","ShadcnSelect","ShadcnCheckbox","ShadcnRadioGroup"],"mappings":"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"}
1
+ {"version":3,"file":"index.esm.js","sources":["../../src/forms/builders/actions-builder.ts","../../src/forms/builders/form-schema.ts","../../src/forms/builders/section-builder.ts","../../src/forms/builders/tab-builder.ts","../../src/forms/builders/wizard-builder.ts","../../src/forms/fields/base-field.ts","../../src/forms/fields/text-input.tsx","../../src/forms/fields/textarea.tsx","../../src/forms/fields/select.tsx","../../src/forms/fields/checkbox.tsx","../../src/forms/fields/toggle.tsx","../../src/forms/fields/radio-group.tsx","../../src/forms/fields/date-picker.tsx","../../src/forms/fields/hidden.tsx","../../src/forms/fields/file-upload.tsx","../../src/forms/fields/checkbox-group.tsx","../../src/forms/fields/repeater.tsx","../../src/forms/components/field-renderer.tsx","../../src/forms/components/grid-layout.tsx","../../src/forms/components/form-actions.tsx","../../src/forms/components/section-renderer.tsx","../../src/forms/components/tab-renderer.tsx","../../src/forms/components/wizard-renderer.tsx","../../src/forms/components/form-renderer.tsx"],"sourcesContent":["import { FormActionConfig } from \"../types/actions\";\n\nexport class ActionsBuilder<TData extends Record<string, any>> {\n private actionsList: FormActionConfig<TData>[] = [];\n\n submit(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"submit\",\n label: opts.label || \"Submit\",\n variant: opts.variant || \"default\",\n ...opts,\n });\n return this;\n }\n\n cancel(\n opts: Partial<Omit<FormActionConfig<TData>, \"type\">> & {\n label?: string;\n } = {},\n ): this {\n this.actionsList.push({\n type: \"cancel\",\n label: opts.label || \"Cancel\",\n variant: opts.variant || \"outline\",\n ...opts,\n });\n return this;\n }\n\n custom(opts: Omit<FormActionConfig<TData>, \"type\"> & { label: string }): this {\n this.actionsList.push({ ...opts, type: \"custom\" });\n return this;\n }\n\n build(): FormActionConfig<TData>[] {\n return [...this.actionsList];\n }\n}\n","import { FormSchemaConfig, FormBuildResult, BuiltField } from \"../types/form\";\nimport { SectionConfig, TabConfig, WizardStepConfig } from \"../types/layout\";\nimport { FormActionConfig } from \"../types/actions\";\nimport { ActionsBuilder } from \"./actions-builder\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\n/**\n * Form Schema Builder\n * Fluent API for building complete form configurations\n */\nexport class FormSchema<TData extends Record<string, any>> {\n private fieldBuilders: FieldBuilder<TData>[] = [];\n private schemaConfig: Partial<FormSchemaConfig<TData>> = {};\n\n static make<TData extends Record<string, any>>(): FormSchema<TData> {\n return new FormSchema();\n }\n\n // --- Configuration ---\n\n title(title: string | ((data: TData) => string)): this {\n this.schemaConfig.title = title;\n return this;\n }\n\n description(description: string | ((data: TData) => string)): this {\n this.schemaConfig.description = description;\n return this;\n }\n\n columns(columns: number): this {\n this.schemaConfig.columns = columns;\n return this;\n }\n\n bordered(bordered = true): this {\n this.schemaConfig.bordered = bordered;\n return this;\n }\n\n spacing(spacing: \"compact\" | \"normal\" | \"relaxed\"): this {\n this.schemaConfig.spacing = spacing;\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean)): this {\n this.schemaConfig.disabled = disabled;\n return this;\n }\n\n // --- Fields ---\n\n fields(...builders: FieldBuilder<TData>[]): this {\n this.fieldBuilders.push(...builders);\n return this;\n }\n\n // --- Layout ---\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.schemaConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n tabs(...tabs: { build(): TabConfig<TData> }[]): this {\n this.schemaConfig.tabs = tabs.map((t) => t.build());\n return this;\n }\n\n wizard(\n ...steps: { build(): WizardStepConfig<TData> }[]\n ): this {\n this.schemaConfig.wizardSteps = steps.map((s) => s.build());\n return this;\n }\n\n // --- Actions ---\n\n actions(\n fn: (builder: ActionsBuilder<TData>) => ActionsBuilder<TData>,\n ): this {\n const builder = new ActionsBuilder<TData>();\n this.schemaConfig.actions = fn(builder).build();\n return this;\n }\n\n actionsPosition(position: \"start\" | \"end\" | \"between\" | \"center\"): this {\n this.schemaConfig.actionsPosition = position;\n return this;\n }\n\n // --- Build ---\n\n build(): FormBuildResult<TData> {\n const fields = this.fieldBuilders.map((b) => b.build());\n return {\n fields,\n config: {\n ...(this.schemaConfig as FormSchemaConfig<TData>),\n fields,\n },\n };\n }\n}\n","import { ReactNode } from \"react\";\nimport { SectionConfig } from \"../types/layout\";\n\nexport class SectionBuilder<TData extends Record<string, any>> {\n private sectionConfig: SectionConfig<TData>;\n\n constructor(title: string) {\n this.sectionConfig = {\n id: title.toLowerCase().replace(/\\s+/g, \"-\"),\n title,\n fields: [],\n columns: 1,\n collapsible: false,\n collapsed: false,\n };\n }\n\n static make<TData extends Record<string, any>>(\n title: string,\n ): SectionBuilder<TData> {\n return new SectionBuilder(title);\n }\n\n id(id: string): this {\n this.sectionConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.sectionConfig.description = description;\n return this;\n }\n\n fields(fields: string[]): this {\n this.sectionConfig.fields = fields;\n return this;\n }\n\n columns(columns: number): this {\n this.sectionConfig.columns = columns;\n return this;\n }\n\n collapsible(collapsible = true): this {\n this.sectionConfig.collapsible = collapsible;\n return this;\n }\n\n collapsed(collapsed = true): this {\n this.sectionConfig.collapsed = collapsed;\n this.sectionConfig.collapsible = true;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.sectionConfig.icon = icon;\n return this;\n }\n\n hidden(fn: (data: TData) => boolean): this {\n this.sectionConfig.hidden = fn;\n return this;\n }\n\n build(): SectionConfig<TData> {\n return { ...this.sectionConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { TabConfig, SectionConfig } from \"../types/layout\";\n\nexport class TabBuilder<TData extends Record<string, any>> {\n private tabConfig: TabConfig<TData>;\n\n constructor(label: string) {\n this.tabConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): TabBuilder<TData> {\n return new TabBuilder(label);\n }\n\n id(id: string): this {\n this.tabConfig.id = id;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.tabConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.tabConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.tabConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n badge(\n badge: string | number | ((data: TData) => string | number),\n ): this {\n this.tabConfig.badge = badge;\n return this;\n }\n\n disabled(fn: (data: TData) => boolean): this {\n this.tabConfig.disabled = fn;\n return this;\n }\n\n build(): TabConfig<TData> {\n return { ...this.tabConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport { WizardStepConfig, SectionConfig } from \"../types/layout\";\n\nexport class WizardStep<TData extends Record<string, any>> {\n private stepConfig: WizardStepConfig<TData>;\n\n constructor(label: string) {\n this.stepConfig = {\n id: label.toLowerCase().replace(/\\s+/g, \"-\"),\n label,\n };\n }\n\n static make<TData extends Record<string, any>>(\n label: string,\n ): WizardStep<TData> {\n return new WizardStep(label);\n }\n\n id(id: string): this {\n this.stepConfig.id = id;\n return this;\n }\n\n description(description: string): this {\n this.stepConfig.description = description;\n return this;\n }\n\n icon(icon: ReactNode): this {\n this.stepConfig.icon = icon;\n return this;\n }\n\n fields(fields: string[]): this {\n this.stepConfig.fields = fields;\n return this;\n }\n\n sections(\n ...sections: { build(): SectionConfig<TData> }[]\n ): this {\n this.stepConfig.sections = sections.map((s) => s.build());\n return this;\n }\n\n canProceed(fn: (data: TData) => boolean): this {\n this.stepConfig.canProceed = fn;\n return this;\n }\n\n beforeNext(fn: (data: TData) => Promise<boolean> | boolean): this {\n this.stepConfig.beforeNext = fn;\n return this;\n }\n\n build(): WizardStepConfig<TData> {\n return { ...this.stepConfig };\n }\n}\n","import { ReactNode } from \"react\";\nimport {\n BaseFieldConfig,\n ValidationRule,\n DependencyConfig,\n} from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\nexport abstract class BaseField<\n TData extends Record<string, any>,\n TConfig extends BaseFieldConfig<TData>,\n> {\n protected config: TConfig;\n\n constructor(name: string) {\n this.config = {\n name,\n required: false,\n disabled: false,\n readOnly: false,\n hidden: false,\n columnSpan: 1,\n rules: [],\n dependsOn: [],\n } as unknown as TConfig;\n }\n\n // --- Fluent API ---\n\n label(label: string): this {\n this.config.label = label;\n return this;\n }\n\n placeholder(placeholder: string): this {\n this.config.placeholder = placeholder;\n return this;\n }\n\n helperText(text: string): this {\n this.config.helperText = text;\n return this;\n }\n\n required(required = true): this {\n this.config.required = required;\n if (\n required &&\n !this.config.rules?.some((r: ValidationRule) => r.type === \"required\")\n ) {\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"required\",\n message: `${this.config.label || this.config.name} is required`,\n },\n ];\n }\n return this;\n }\n\n disabled(disabled: boolean | ((data: TData) => boolean) = true): this {\n this.config.disabled = disabled;\n return this;\n }\n\n readOnly(readOnly = true): this {\n this.config.readOnly = readOnly;\n return this;\n }\n\n hidden(hidden: boolean | ((data: TData) => boolean) = true): this {\n this.config.hidden = hidden;\n return this;\n }\n\n default(value: any): this {\n this.config.defaultValue = value;\n return this;\n }\n\n columnSpan(span: number): this {\n this.config.columnSpan = span;\n return this;\n }\n\n className(className: string): this {\n this.config.className = className;\n return this;\n }\n\n rules(rules: ValidationRule[]): this {\n this.config.rules = [...(this.config.rules || []), ...rules];\n return this;\n }\n\n zodSchema(schema: any): this {\n this.config.zodSchema = schema;\n return this;\n }\n\n dependsOn<K extends string & keyof TData>(\n field: K,\n condition: (value: TData[K], data: TData) => boolean,\n effect: \"show\" | \"hide\" | \"enable\" | \"disable\" | \"setValue\" = \"show\",\n effectValue?: any,\n ): this {\n this.config.dependsOn = [\n ...(this.config.dependsOn || []),\n { field, condition, effect, effectValue } as DependencyConfig<TData>,\n ];\n return this;\n }\n\n reactive(reactive = true): this {\n this.config.reactive = reactive;\n return this;\n }\n\n // --- Abstract ---\n\n abstract readonly fieldType: FieldType;\n\n abstract renderField(props: FieldRenderProps<TData>): ReactNode;\n\n // --- Build ---\n\n build(): BuiltField<TData> {\n return {\n name: this.config.name,\n type: this.fieldType,\n config: { ...this.config },\n render: (props: FieldRenderProps<TData>) => this.renderField(props),\n };\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Input } from \"@/components/ui/input\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextInputConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class TextInput<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextInputConfig<TData>> {\n readonly fieldType: FieldType = \"text\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): TextInput<TData> {\n return new TextInput(name);\n }\n\n type(type: \"text\" | \"email\" | \"password\" | \"number\" | \"url\" | \"tel\"): this {\n this.config.type = type;\n return this;\n }\n\n email(): this {\n return this.type(\"email\");\n }\n\n password(): this {\n return this.type(\"password\");\n }\n\n number(): this {\n return this.type(\"number\");\n }\n\n url(): this {\n return this.type(\"url\");\n }\n\n tel(): this {\n return this.type(\"tel\");\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n prefix(prefix: string | ReactNode): this {\n this.config.prefix = prefix;\n return this;\n }\n\n suffix(suffix: string | ReactNode): this {\n this.config.suffix = suffix;\n return this;\n }\n\n autocomplete(value: string): this {\n this.config.autocomplete = value;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const {\n type,\n placeholder,\n maxLength,\n readOnly,\n autocomplete,\n className,\n prefix,\n suffix,\n } = this.config;\n\n const input = (\n <Input\n type={type || \"text\"}\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) =>\n onChange(\n type === \"number\" ? Number(e.target.value) : e.target.value,\n )\n }\n onBlur={onBlur}\n placeholder={placeholder}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n autoComplete={autocomplete}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n\n if (prefix || suffix) {\n return (\n <div className=\"flex items-center gap-2\">\n {prefix && (\n <span className=\"text-sm text-muted-foreground\">{prefix}</span>\n )}\n {input}\n {suffix && (\n <span className=\"text-sm text-muted-foreground\">{suffix}</span>\n )}\n </div>\n );\n }\n\n return input;\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Textarea as ShadcnTextarea } from \"@/components/ui/textarea\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { TextareaConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Textarea<\n TData extends Record<string, any>,\n> extends BaseField<TData, TextareaConfig<TData>> {\n readonly fieldType: FieldType = \"textarea\";\n\n constructor(name: string) {\n super(name);\n this.config.rows = 3;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Textarea<TData> {\n return new Textarea(name);\n }\n\n rows(rows: number): this {\n this.config.rows = rows;\n return this;\n }\n\n minLength(min: number): this {\n this.config.minLength = min;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"min\",\n value: min,\n message: `${this.config.label || this.config.name} must be at least ${min} characters`,\n },\n ];\n return this;\n }\n\n maxLength(max: number): this {\n this.config.maxLength = max;\n this.config.rules = [\n ...(this.config.rules || []),\n {\n type: \"max\",\n value: max,\n message: `${this.config.label || this.config.name} must be at most ${max} characters`,\n },\n ];\n return this;\n }\n\n autoResize(autoResize = true): this {\n this.config.autoResize = autoResize;\n return this;\n }\n\n renderField({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, rows, maxLength, readOnly, className } = this.config;\n\n return (\n <ShadcnTextarea\n value={value ?? \"\"}\n onChange={(e: React.ChangeEvent<HTMLTextAreaElement>) =>\n onChange(e.target.value)\n }\n onBlur={onBlur}\n placeholder={placeholder}\n rows={rows}\n maxLength={maxLength}\n disabled={disabled}\n readOnly={readOnly}\n className={cn(error && \"border-destructive\", className)}\n />\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n Select as ShadcnSelect,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n} from \"@/components/ui/select\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { SelectConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Select<\n TData extends Record<string, any>,\n> extends BaseField<TData, SelectConfig<TData>> {\n readonly fieldType: FieldType = \"select\";\n\n constructor(name: string) {\n super(name);\n (this.config as SelectConfig<TData>).options = [];\n (this.config as SelectConfig<TData>).multiple = false;\n (this.config as SelectConfig<TData>).searchable = false;\n (this.config as SelectConfig<TData>).clearable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Select<TData> {\n return new Select(name);\n }\n\n options(\n options: SelectOption[] | ((data: TData) => SelectOption[]),\n ): this {\n (this.config as SelectConfig<TData>).options = options;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as SelectConfig<TData>).multiple = multiple;\n return this;\n }\n\n searchable(searchable = true): this {\n (this.config as SelectConfig<TData>).searchable = searchable;\n return this;\n }\n\n clearable(clearable = true): this {\n (this.config as SelectConfig<TData>).clearable = clearable;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as SelectConfig<TData>).maxItems = max;\n return this;\n }\n\n loadOptions(fn: (query: string) => Promise<SelectOption[]>): this {\n (this.config as SelectConfig<TData>).loadOptions = fn;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as SelectConfig<TData>;\n const resolvedOptions =\n typeof cfg.options === \"function\" ? cfg.options(data) : cfg.options;\n\n return (\n <ShadcnSelect\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n >\n <SelectTrigger\n className={cn(error && \"border-destructive\", cfg.className)}\n >\n <SelectValue placeholder={cfg.placeholder || \"Select...\"} />\n </SelectTrigger>\n <SelectContent>\n {resolvedOptions.map((opt) => (\n <SelectItem\n key={opt.value}\n value={opt.value}\n disabled={opt.disabled}\n >\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </ShadcnSelect>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Checkbox<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Checkbox<TData> {\n return new Checkbox(name);\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { className } = this.config;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <ShadcnCheckbox\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(!!checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {this.config.label && (\n <label\n htmlFor={this.config.name}\n className={cn(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n error && \"text-destructive\",\n )}\n >\n {this.config.label}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Switch } from \"@/components/ui/switch\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { ToggleConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Toggle<\n TData extends Record<string, any>,\n> extends BaseField<TData, ToggleConfig<TData>> {\n readonly fieldType: FieldType = \"toggle\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Toggle<TData> {\n return new Toggle(name);\n }\n\n onLabel(label: string): this {\n this.config.onLabel = label;\n return this;\n }\n\n offLabel(label: string): this {\n this.config.offLabel = label;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const { onLabel, offLabel, className } = this.config;\n const displayLabel = value ? onLabel : offLabel;\n\n return (\n <div className={cn(\"flex items-center space-x-2\", className)}>\n <Switch\n id={this.config.name}\n checked={!!value}\n onCheckedChange={(checked) => onChange(checked)}\n disabled={disabled}\n className={cn(error && \"border-destructive\")}\n />\n {displayLabel && (\n <label\n htmlFor={this.config.name}\n className=\"text-sm text-muted-foreground\"\n >\n {displayLabel}\n </label>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport {\n RadioGroup as ShadcnRadioGroup,\n RadioGroupItem,\n} from \"@/components/ui/radio-group\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { RadioGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class RadioGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, RadioGroupConfig<TData>> {\n readonly fieldType: FieldType = \"radio-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as RadioGroupConfig<TData>).options = [];\n (this.config as RadioGroupConfig<TData>).orientation = \"vertical\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): RadioGroup<TData> {\n return new RadioGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as RadioGroupConfig<TData>).options = options;\n return this;\n }\n\n orientation(orientation: \"horizontal\" | \"vertical\"): this {\n (this.config as RadioGroupConfig<TData>).orientation = orientation;\n return this;\n }\n\n horizontal(): this {\n return this.orientation(\"horizontal\");\n }\n\n vertical(): this {\n return this.orientation(\"vertical\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RadioGroupConfig<TData>;\n const isHorizontal = cfg.orientation === \"horizontal\";\n\n return (\n <ShadcnRadioGroup\n value={value ?? \"\"}\n onValueChange={onChange}\n disabled={disabled}\n className={cn(\n isHorizontal ? \"flex flex-row gap-4\" : \"flex flex-col gap-2\",\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <RadioGroupItem\n value={opt.value}\n id={`${cfg.name}-${opt.value}`}\n disabled={opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </ShadcnRadioGroup>\n );\n }\n}\n","import React, { ReactNode, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Calendar } from \"@/components/ui/calendar\";\nimport {\n Popover,\n PopoverContent,\n PopoverTrigger,\n} from \"@/components/ui/popover\";\nimport { cn } from \"@/lib/utils\";\nimport { CalendarIcon } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { DatePickerConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class DatePicker<\n TData extends Record<string, any>,\n> extends BaseField<TData, DatePickerConfig<TData>> {\n readonly fieldType: FieldType = \"date-picker\";\n\n constructor(name: string) {\n super(name);\n this.config.format = \"PPP\";\n this.config.includeTime = false;\n this.config.locale = \"en-US\";\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): DatePicker<TData> {\n return new DatePicker(name);\n }\n\n minDate(date: Date | ((data: TData) => Date)): this {\n this.config.minDate = date;\n return this;\n }\n\n maxDate(date: Date | ((data: TData) => Date)): this {\n this.config.maxDate = date;\n return this;\n }\n\n format(format: string): this {\n this.config.format = format;\n return this;\n }\n\n includeTime(includeTime = true): this {\n this.config.includeTime = includeTime;\n if (includeTime) {\n (this as any).fieldType = \"date-time-picker\";\n }\n return this;\n }\n\n locale(locale: string): this {\n this.config.locale = locale;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const { placeholder, className, locale } = this.config;\n\n const resolvedMinDate =\n typeof this.config.minDate === \"function\"\n ? this.config.minDate(data)\n : this.config.minDate;\n const resolvedMaxDate =\n typeof this.config.maxDate === \"function\"\n ? this.config.maxDate(data)\n : this.config.maxDate;\n\n const dateValue = value ? new Date(value) : undefined;\n\n const formatDate = (date: Date): string => {\n return date.toLocaleDateString(locale || \"en-US\", {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n };\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <Button\n variant=\"outline\"\n disabled={disabled}\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !dateValue && \"text-muted-foreground\",\n error && \"border-destructive\",\n className,\n )}\n >\n <CalendarIcon className=\"mr-2 h-4 w-4\" />\n {dateValue ? formatDate(dateValue) : placeholder || \"Pick a date\"}\n </Button>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <Calendar\n mode=\"single\"\n selected={dateValue}\n onSelect={(date) =>\n onChange(date ? date.toISOString().split(\"T\")[0] : \"\")\n }\n disabled={(date) => {\n if (resolvedMinDate && date < resolvedMinDate) return true;\n if (resolvedMaxDate && date > resolvedMaxDate) return true;\n return false;\n }}\n initialFocus\n />\n </PopoverContent>\n </Popover>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { BaseField } from \"./base-field\";\nimport { HiddenConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class Hidden<\n TData extends Record<string, any>,\n> extends BaseField<TData, HiddenConfig<TData>> {\n readonly fieldType: FieldType = \"hidden\";\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Hidden<TData> {\n return new Hidden(name);\n }\n\n renderField({ value }: FieldRenderProps<TData>): ReactNode {\n return <input type=\"hidden\" name={this.config.name} value={value ?? \"\"} />;\n }\n}\n","\"use client\";\nimport React, { ReactNode, useRef, useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { Upload, X, File } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { FileUploadConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class FileUpload<\n TData extends Record<string, any>,\n> extends BaseField<TData, FileUploadConfig<TData>> {\n readonly fieldType: FieldType = \"file-upload\";\n\n constructor(name: string) {\n super(name);\n (this.config as FileUploadConfig<TData>).multiple = false;\n (this.config as FileUploadConfig<TData>).preview = true;\n (this.config as FileUploadConfig<TData>).maxFiles = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): FileUpload<TData> {\n return new FileUpload(name);\n }\n\n accept(accept: string): this {\n (this.config as FileUploadConfig<TData>).accept = accept;\n return this;\n }\n\n maxSize(bytes: number): this {\n (this.config as FileUploadConfig<TData>).maxSize = bytes;\n return this;\n }\n\n multiple(multiple = true): this {\n (this.config as FileUploadConfig<TData>).multiple = multiple;\n return this;\n }\n\n maxFiles(max: number): this {\n (this.config as FileUploadConfig<TData>).maxFiles = max;\n return this;\n }\n\n preview(preview = true): this {\n (this.config as FileUploadConfig<TData>).preview = preview;\n return this;\n }\n\n image(): this {\n return this.accept(\"image/*\");\n }\n\n pdf(): this {\n return this.accept(\"application/pdf\");\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as FileUploadConfig<TData>;\n const inputRef = useRef<HTMLInputElement>(null);\n const [dragOver, setDragOver] = useState(false);\n\n const files: File[] = Array.isArray(value) ? value : value ? [value] : [];\n\n const handleFiles = (fileList: FileList | null) => {\n if (!fileList) return;\n const newFiles = Array.from(fileList);\n\n if (cfg.maxSize) {\n const oversized = newFiles.find((f) => f.size > cfg.maxSize!);\n if (oversized) return;\n }\n\n if (cfg.multiple) {\n const combined = [...files, ...newFiles].slice(0, cfg.maxFiles);\n onChange(combined);\n } else {\n onChange(newFiles[0] || null);\n }\n };\n\n const removeFile = (index: number) => {\n if (cfg.multiple) {\n const updated = files.filter((_, i) => i !== index);\n onChange(updated.length ? updated : null);\n } else {\n onChange(null);\n }\n };\n\n return (\n <div className={cn(\"space-y-2\", cfg.className)}>\n <div\n className={cn(\n \"flex flex-col items-center justify-center rounded-lg border-2 border-dashed p-6 transition-colors\",\n dragOver\n ? \"border-primary bg-primary/5\"\n : \"border-muted-foreground/25\",\n error && \"border-destructive\",\n disabled && \"cursor-not-allowed opacity-50\",\n )}\n onDragOver={(e) => {\n e.preventDefault();\n if (!disabled) setDragOver(true);\n }}\n onDragLeave={() => setDragOver(false)}\n onDrop={(e) => {\n e.preventDefault();\n setDragOver(false);\n if (!disabled) handleFiles(e.dataTransfer.files);\n }}\n >\n <Upload className=\"mb-2 h-8 w-8 text-muted-foreground\" />\n <p className=\"text-sm text-muted-foreground\">\n Drag & drop or{\" \"}\n <button\n type=\"button\"\n className=\"text-primary underline\"\n onClick={() => inputRef.current?.click()}\n disabled={disabled}\n >\n browse\n </button>\n </p>\n {cfg.accept && (\n <p className=\"mt-1 text-xs text-muted-foreground\">\n Accepted: {cfg.accept}\n </p>\n )}\n <input\n ref={inputRef}\n type=\"file\"\n accept={cfg.accept}\n multiple={cfg.multiple}\n onChange={(e) => handleFiles(e.target.files)}\n className=\"hidden\"\n disabled={disabled}\n />\n </div>\n\n {files.length > 0 && (\n <ul className=\"space-y-1\">\n {files.map((file, index) => (\n <li\n key={index}\n className=\"flex items-center justify-between rounded-md border px-3 py-2 text-sm\"\n >\n <span className=\"flex items-center gap-2 truncate\">\n <File className=\"h-4 w-4 text-muted-foreground\" />\n {file.name}\n </span>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"h-6 w-6 p-0\"\n onClick={() => removeFile(index)}\n disabled={disabled}\n >\n <X className=\"h-3 w-3\" />\n </Button>\n </li>\n ))}\n </ul>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Checkbox as ShadcnCheckbox } from \"@/components/ui/checkbox\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BaseField } from \"./base-field\";\nimport { CheckboxGroupConfig, SelectOption } from \"../types/field\";\nimport { FieldType, FieldRenderProps } from \"../types/form\";\n\nexport class CheckboxGroup<\n TData extends Record<string, any>,\n> extends BaseField<TData, CheckboxGroupConfig<TData>> {\n readonly fieldType: FieldType = \"checkbox-group\";\n\n constructor(name: string) {\n super(name);\n (this.config as CheckboxGroupConfig<TData>).options = [];\n (this.config as CheckboxGroupConfig<TData>).columns = 1;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): CheckboxGroup<TData> {\n return new CheckboxGroup(name);\n }\n\n options(options: SelectOption[]): this {\n (this.config as CheckboxGroupConfig<TData>).options = options;\n return this;\n }\n\n columns(columns: number): this {\n (this.config as CheckboxGroupConfig<TData>).columns = columns;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as CheckboxGroupConfig<TData>;\n const selectedValues: string[] = Array.isArray(value) ? value : [];\n\n const gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-2\",\n 3: \"grid-cols-3\",\n 4: \"grid-cols-4\",\n };\n\n const handleToggle = (optionValue: string, checked: boolean) => {\n if (checked) {\n onChange([...selectedValues, optionValue]);\n } else {\n onChange(selectedValues.filter((v) => v !== optionValue));\n }\n };\n\n return (\n <div\n className={cn(\n \"grid gap-2\",\n gridColsClass[cfg.columns || 1] || gridColsClass[1],\n cfg.className,\n )}\n >\n {cfg.options.map((opt) => (\n <div key={opt.value} className=\"flex items-center space-x-2\">\n <ShadcnCheckbox\n id={`${cfg.name}-${opt.value}`}\n checked={selectedValues.includes(opt.value)}\n onCheckedChange={(checked) =>\n handleToggle(opt.value, !!checked)\n }\n disabled={disabled || opt.disabled}\n className={cn(error && \"border-destructive\")}\n />\n <Label\n htmlFor={`${cfg.name}-${opt.value}`}\n className=\"text-sm font-normal\"\n >\n {opt.label}\n </Label>\n </div>\n ))}\n </div>\n );\n }\n}\n","\"use client\";\nimport React, { ReactNode, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { Plus, Trash2, GripVertical } from \"lucide-react\";\nimport { BaseField } from \"./base-field\";\nimport { RepeaterConfig } from \"../types/field\";\nimport { FieldType, FieldRenderProps, BuiltField } from \"../types/form\";\n\ntype FieldBuilder<TData extends Record<string, any>> = {\n build(): BuiltField<TData>;\n};\n\nexport class Repeater<\n TData extends Record<string, any>,\n> extends BaseField<TData, RepeaterConfig<TData>> {\n readonly fieldType: FieldType = \"repeater\";\n private fieldBuilders: FieldBuilder<any>[] = [];\n\n constructor(name: string) {\n super(name);\n (this.config as RepeaterConfig<TData>).minItems = 0;\n (this.config as RepeaterConfig<TData>).maxItems = Infinity;\n (this.config as RepeaterConfig<TData>).addLabel = \"Add item\";\n (this.config as RepeaterConfig<TData>).collapsible = false;\n (this.config as RepeaterConfig<TData>).orderable = false;\n }\n\n static make<TData extends Record<string, any>>(\n name: string & keyof TData | string,\n ): Repeater<TData> {\n return new Repeater(name);\n }\n\n fields(...builders: FieldBuilder<any>[]): this {\n this.fieldBuilders = builders;\n (this.config as RepeaterConfig<TData>).fields = builders.map((b) =>\n b.build(),\n );\n return this;\n }\n\n minItems(min: number): this {\n (this.config as RepeaterConfig<TData>).minItems = min;\n return this;\n }\n\n maxItems(max: number): this {\n (this.config as RepeaterConfig<TData>).maxItems = max;\n return this;\n }\n\n addLabel(label: string): this {\n (this.config as RepeaterConfig<TData>).addLabel = label;\n return this;\n }\n\n collapsible(collapsible = true): this {\n (this.config as RepeaterConfig<TData>).collapsible = collapsible;\n return this;\n }\n\n orderable(orderable = true): this {\n (this.config as RepeaterConfig<TData>).orderable = orderable;\n return this;\n }\n\n renderField({\n value,\n onChange,\n error,\n disabled,\n data,\n }: FieldRenderProps<TData>): ReactNode {\n const cfg = this.config as RepeaterConfig<TData>;\n const items: Record<string, any>[] = Array.isArray(value) ? value : [];\n const builtFields = cfg.fields as BuiltField<any>[];\n\n const addItem = () => {\n if (items.length >= (cfg.maxItems || Infinity)) return;\n const defaults: Record<string, any> = {};\n builtFields.forEach((f) => {\n defaults[f.name] = f.config.defaultValue ?? \"\";\n });\n onChange([...items, defaults]);\n };\n\n const removeItem = (index: number) => {\n if (items.length <= (cfg.minItems || 0)) return;\n onChange(items.filter((_, i) => i !== index));\n };\n\n const updateItem = (\n index: number,\n fieldName: string,\n fieldValue: any,\n ) => {\n const updated = items.map((item, i) =>\n i === index ? { ...item, [fieldName]: fieldValue } : item,\n );\n onChange(updated);\n };\n\n const canAdd = items.length < (cfg.maxItems || Infinity);\n const canRemove = items.length > (cfg.minItems || 0);\n\n return (\n <div className={cn(\"space-y-3\", cfg.className)}>\n {items.map((item, index) => (\n <Card key={index}>\n <CardContent className=\"flex items-start gap-3 pt-4\">\n {cfg.orderable && (\n <GripVertical className=\"mt-2 h-5 w-5 cursor-grab text-muted-foreground\" />\n )}\n <div className=\"grid flex-1 gap-3\">\n {builtFields.map((field) => (\n <div key={field.name} className=\"space-y-1\">\n {field.config.label && (\n <label className=\"text-sm font-medium\">\n {field.config.label}\n </label>\n )}\n {field.render({\n value: item[field.name],\n onChange: (v) => updateItem(index, field.name, v),\n disabled,\n data,\n })}\n </div>\n ))}\n </div>\n {canRemove && (\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n className=\"mt-1 h-8 w-8 p-0 text-destructive\"\n onClick={() => removeItem(index)}\n disabled={disabled}\n >\n <Trash2 className=\"h-4 w-4\" />\n </Button>\n )}\n </CardContent>\n </Card>\n ))}\n\n {canAdd && (\n <Button\n type=\"button\"\n variant=\"outline\"\n size=\"sm\"\n onClick={addItem}\n disabled={disabled}\n className=\"w-full\"\n >\n <Plus className=\"mr-2 h-4 w-4\" />\n {cfg.addLabel}\n </Button>\n )}\n </div>\n );\n }\n}\n","import React, { ReactNode } from \"react\";\nimport { Label } from \"@/components/ui/label\";\nimport { cn } from \"@/lib/utils\";\nimport { BuiltField, FieldRenderProps } from \"../types/form\";\n\nexport interface FieldRendererProps<TData extends Record<string, any>> {\n field: BuiltField<TData>;\n value: any;\n error?: string;\n disabled?: boolean;\n data: TData;\n onChange: (value: any) => void;\n onBlur?: () => void;\n}\n\nexport function FieldRenderer<TData extends Record<string, any>>({\n field,\n value,\n error,\n disabled,\n data,\n onChange,\n onBlur,\n}: FieldRendererProps<TData>): ReactNode {\n // Hidden fields render without wrapper\n if (field.type === \"hidden\") {\n return field.render({ value, onChange, onBlur, error, disabled, data });\n }\n\n // Checkbox and Toggle handle their own labels inline\n const skipLabel = field.type === \"checkbox\" || field.type === \"toggle\";\n\n return (\n <div\n className={cn(\n \"space-y-2\",\n field.config.columnSpan && field.config.columnSpan > 1\n ? `col-span-${field.config.columnSpan}`\n : undefined,\n field.config.className,\n )}\n >\n {field.config.label && !skipLabel && (\n <Label\n htmlFor={field.name}\n className={cn(error && \"text-destructive\")}\n >\n {field.config.label}\n {field.config.required && (\n <span className=\"text-destructive ml-1\">*</span>\n )}\n </Label>\n )}\n {field.render({\n value,\n onChange,\n onBlur,\n error,\n disabled,\n data,\n })}\n {error && <p className=\"text-sm text-destructive\">{error}</p>}\n {!error && field.config.helperText && (\n <p className=\"text-sm text-muted-foreground\">\n {field.config.helperText}\n </p>\n )}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { cn } from \"@/lib/utils\";\n\nexport interface GridLayoutProps {\n columns?: number;\n children: ReactNode;\n className?: string;\n}\n\nconst gridColsClass: Record<number, string> = {\n 1: \"grid-cols-1\",\n 2: \"grid-cols-1 sm:grid-cols-2\",\n 3: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-3\",\n 4: \"grid-cols-1 sm:grid-cols-2 lg:grid-cols-4\",\n};\n\nexport function GridLayout({\n columns = 1,\n children,\n className,\n}: GridLayoutProps): ReactNode {\n return (\n <div\n className={cn(\n \"grid gap-4\",\n gridColsClass[columns] || gridColsClass[1],\n className,\n )}\n >\n {children}\n </div>\n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { FormActionConfig } from \"../types/actions\";\n\nexport interface FormActionsProps<TData extends Record<string, any>> {\n actions: FormActionConfig<TData>[];\n position?: \"start\" | \"end\" | \"between\" | \"center\";\n data: TData;\n processing?: boolean;\n}\n\nconst positionClass: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n between: \"justify-between\",\n end: \"justify-end\",\n};\n\nexport function FormActions<TData extends Record<string, any>>({\n actions,\n position = \"end\",\n data,\n processing = false,\n}: FormActionsProps<TData>): ReactNode {\n if (!actions.length) return null;\n\n return (\n <div className={cn(\"flex gap-2\", positionClass[position])}>\n {actions.map((action, i) => {\n const isDisabled =\n typeof action.disabled === \"function\"\n ? action.disabled(data, processing)\n : action.disabled;\n\n if (action.type === \"submit\") {\n return (\n <Button\n key={i}\n type=\"submit\"\n variant={action.variant || \"default\"}\n disabled={isDisabled || processing}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {processing ? \"Processing...\" : action.label}\n </Button>\n );\n }\n\n if (action.type === \"cancel\" && action.href) {\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n disabled={processing}\n asChild\n >\n <a href={action.href}>\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </a>\n </Button>\n );\n }\n\n return (\n <Button\n key={i}\n type=\"button\"\n variant={action.variant || \"outline\"}\n onClick={action.onClick}\n disabled={isDisabled || (action.type === \"cancel\" && processing)}\n >\n {action.icon && <span className=\"mr-2\">{action.icon}</span>}\n {action.label}\n </Button>\n );\n })}\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState } from \"react\";\nimport {\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from \"@/components/ui/card\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\nimport { ChevronDown } from \"lucide-react\";\nimport { SectionConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface SectionRendererProps<TData extends Record<string, any>> {\n section: SectionConfig<TData>;\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n}\n\nexport function SectionRenderer<TData extends Record<string, any>>({\n section,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n}: SectionRendererProps<TData>): ReactNode {\n const [isCollapsed, setIsCollapsed] = useState(section.collapsed ?? false);\n\n if (section.hidden && section.hidden(data)) return null;\n\n const sectionFields = fields.filter((f) =>\n section.fields.includes(f.name),\n );\n\n return (\n <Card>\n <CardHeader\n className={cn(\n section.collapsible && \"cursor-pointer select-none\",\n )}\n onClick={\n section.collapsible ? () => setIsCollapsed(!isCollapsed) : undefined\n }\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n {section.icon}\n <CardTitle className=\"text-lg\">{section.title}</CardTitle>\n </div>\n {section.collapsible && (\n <Button variant=\"ghost\" size=\"sm\" className=\"h-8 w-8 p-0\">\n <ChevronDown\n className={cn(\n \"h-4 w-4 transition-transform\",\n isCollapsed && \"-rotate-90\",\n )}\n />\n </Button>\n )}\n </div>\n {section.description && (\n <CardDescription>{section.description}</CardDescription>\n )}\n </CardHeader>\n {!isCollapsed && (\n <CardContent>\n <GridLayout columns={section.columns}>\n {sectionFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n </CardContent>\n )}\n </Card>\n );\n}\n","\"use client\";\nimport React, { ReactNode } from \"react\";\nimport {\n Tabs,\n TabsContent,\n TabsList,\n TabsTrigger,\n} from \"@/components/ui/tabs\";\nimport { cn } from \"@/lib/utils\";\nimport { TabConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface TabRendererProps<TData extends Record<string, any>> {\n tabs: TabConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n}\n\nexport function TabRenderer<TData extends Record<string, any>>({\n tabs,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n}: TabRendererProps<TData>): ReactNode {\n const firstTab = tabs[0]?.id;\n\n return (\n <Tabs defaultValue={firstTab}>\n <TabsList>\n {tabs.map((tab) => {\n const isDisabled = tab.disabled ? tab.disabled(data) : false;\n const badge =\n typeof tab.badge === \"function\" ? tab.badge(data) : tab.badge;\n\n return (\n <TabsTrigger\n key={tab.id}\n value={tab.id}\n disabled={isDisabled}\n >\n <span className=\"flex items-center gap-2\">\n {tab.icon}\n {tab.label}\n {badge !== undefined && badge !== null && (\n <span className=\"ml-1 rounded-full bg-muted px-2 py-0.5 text-xs\">\n {badge}\n </span>\n )}\n </span>\n </TabsTrigger>\n );\n })}\n </TabsList>\n {tabs.map((tab) => {\n const tabFields = tab.fields\n ? fields.filter((f) => tab.fields!.includes(f.name))\n : [];\n\n return (\n <TabsContent key={tab.id} value={tab.id} className=\"mt-4\">\n {tab.sections ? (\n <div className=\"space-y-4\">\n {tab.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {tabFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) =>\n onChange(field.name as keyof TData, v)\n }\n onBlur={\n onBlur ? () => onBlur(field.name) : undefined\n }\n />\n );\n })}\n </GridLayout>\n )}\n </TabsContent>\n );\n })}\n </Tabs>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useState, useCallback } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { WizardStepConfig } from \"../types/layout\";\nimport { BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { GridLayout } from \"./grid-layout\";\n\nexport interface WizardRendererProps<TData extends Record<string, any>> {\n steps: WizardStepConfig<TData>[];\n fields: BuiltField<TData>[];\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onBlur?: (field: string) => void;\n isFieldVisible: (field: BuiltField<TData>) => boolean;\n isFieldDisabled: (field: BuiltField<TData>) => boolean;\n columns?: number;\n onSubmit: () => void;\n processing?: boolean;\n}\n\nexport function WizardRenderer<TData extends Record<string, any>>({\n steps,\n fields,\n data,\n errors,\n onChange,\n onBlur,\n isFieldVisible,\n isFieldDisabled,\n columns,\n onSubmit,\n processing = false,\n}: WizardRendererProps<TData>): ReactNode {\n const [currentStep, setCurrentStep] = useState(0);\n\n const currentStepConfig = steps[currentStep];\n const isLastStep = currentStep === steps.length - 1;\n const isFirstStep = currentStep === 0;\n const progressPercent = Math.round(((currentStep + 1) / steps.length) * 100);\n\n const canProceed = currentStepConfig?.canProceed\n ? currentStepConfig.canProceed(data)\n : true;\n\n const handleNext = useCallback(async () => {\n if (currentStepConfig?.beforeNext) {\n const canContinue = await currentStepConfig.beforeNext(data);\n if (!canContinue) return;\n }\n if (isLastStep) {\n onSubmit();\n } else {\n setCurrentStep((prev) => Math.min(prev + 1, steps.length - 1));\n }\n }, [currentStep, currentStepConfig, data, isLastStep, onSubmit, steps.length]);\n\n const handlePrevious = useCallback(() => {\n setCurrentStep((prev) => Math.max(prev - 1, 0));\n }, []);\n\n const stepFields = currentStepConfig?.fields\n ? fields.filter((f) => currentStepConfig.fields!.includes(f.name))\n : [];\n\n return (\n <div className=\"space-y-6\">\n {/* Progress header */}\n <div className=\"rounded-lg bg-muted/50 p-6\">\n <p className=\"text-sm font-semibold uppercase tracking-wide text-muted-foreground\">\n Step: {currentStep + 1} of {steps.length}\n </p>\n <div className=\"mt-1 flex items-center justify-between gap-4\">\n <div>\n <h3 className=\"text-xl font-bold text-foreground\">\n {currentStepConfig?.label}\n </h3>\n {currentStepConfig?.description && (\n <p className=\"mt-0.5 text-sm text-muted-foreground\">\n {currentStepConfig.description}\n </p>\n )}\n </div>\n <div className=\"flex items-center gap-3\">\n <div className=\"h-3 w-40 overflow-hidden rounded-full bg-muted\">\n <div\n className=\"h-full rounded-full bg-primary transition-all duration-300 ease-in-out\"\n style={{ width: `${progressPercent}%` }}\n />\n </div>\n <span className=\"text-sm font-medium text-muted-foreground\">\n {progressPercent}%\n </span>\n </div>\n </div>\n </div>\n\n {/* Step content */}\n <div>\n {currentStepConfig?.sections ? (\n <div className=\"space-y-4\">\n {currentStepConfig.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n ) : (\n <GridLayout columns={columns}>\n {stepFields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n )}\n </div>\n\n {/* Navigation buttons */}\n <div className=\"flex justify-between\">\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={handlePrevious}\n disabled={isFirstStep}\n >\n Previous\n </Button>\n <Button\n type={isLastStep ? \"submit\" : \"button\"}\n onClick={handleNext}\n disabled={!canProceed || (isLastStep && processing)}\n >\n {isLastStep\n ? processing\n ? \"Processing...\"\n : \"Submit\"\n : \"Next\"}\n </Button>\n </div>\n </div>\n );\n}\n","\"use client\";\nimport React, { ReactNode, useMemo, useCallback } from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { cn } from \"@/lib/utils\";\nimport { FormBuildResult, BuiltField } from \"../types/form\";\nimport { FieldRenderer } from \"./field-renderer\";\nimport { GridLayout } from \"./grid-layout\";\nimport { FormActions } from \"./form-actions\";\nimport { SectionRenderer } from \"./section-renderer\";\nimport { TabRenderer } from \"./tab-renderer\";\nimport { WizardRenderer } from \"./wizard-renderer\";\n\nexport interface FormRendererProps<TData extends Record<string, any>> {\n schema: FormBuildResult<TData>;\n data: TData;\n errors: Partial<Record<keyof TData, string>>;\n onChange: (field: keyof TData, value: any) => void;\n onSubmit: () => void;\n processing?: boolean;\n className?: string;\n disabled?: boolean;\n onBlur?: (field: string) => void;\n}\n\nexport function FormRenderer<TData extends Record<string, any>>({\n schema,\n data,\n errors,\n onChange,\n onSubmit,\n processing = false,\n className,\n disabled = false,\n onBlur,\n}: FormRendererProps<TData>): ReactNode {\n const { fields, config } = schema;\n\n const resolvedTitle = useMemo(() => {\n if (typeof config.title === \"function\") return config.title(data);\n return config.title;\n }, [config.title, data]);\n\n const resolvedDescription = useMemo(() => {\n if (typeof config.description === \"function\")\n return config.description(data);\n return config.description;\n }, [config.description, data]);\n\n const isFieldVisible = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (typeof field.config.hidden === \"function\")\n return !field.config.hidden(data);\n if (typeof field.config.hidden === \"boolean\")\n return !field.config.hidden;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"show\" && !dep.condition(depValue, data))\n return false;\n if (dep.effect === \"hide\" && dep.condition(depValue, data))\n return false;\n }\n return true;\n },\n [data],\n );\n\n const isFieldDisabled = useCallback(\n (field: BuiltField<TData>): boolean => {\n if (disabled) return true;\n if (typeof config.disabled === \"function\" && config.disabled(data))\n return true;\n if (typeof config.disabled === \"boolean\" && config.disabled) return true;\n if (typeof field.config.disabled === \"function\")\n return field.config.disabled(data);\n if (typeof field.config.disabled === \"boolean\")\n return field.config.disabled;\n\n for (const dep of field.config.dependsOn || []) {\n const depValue = data[dep.field as keyof TData];\n if (dep.effect === \"disable\" && dep.condition(depValue, data))\n return true;\n if (\n dep.effect === \"enable\" &&\n !dep.condition(depValue, data)\n )\n return true;\n }\n return false;\n },\n [disabled, config.disabled, data],\n );\n\n const renderFieldsFlat = () => (\n <GridLayout columns={config.columns}>\n {fields.map((field) => {\n if (!isFieldVisible(field)) return null;\n return (\n <FieldRenderer\n key={field.name}\n field={field}\n value={data[field.name as keyof TData]}\n error={errors[field.name as keyof TData]}\n disabled={isFieldDisabled(field)}\n data={data}\n onChange={(v) => onChange(field.name as keyof TData, v)}\n onBlur={onBlur ? () => onBlur(field.name) : undefined}\n />\n );\n })}\n </GridLayout>\n );\n\n const renderContent = () => {\n // Wizard mode\n if (config.wizardSteps?.length) {\n return (\n <WizardRenderer\n steps={config.wizardSteps}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n onSubmit={onSubmit}\n processing={processing}\n />\n );\n }\n\n // Tabs mode\n if (config.tabs?.length) {\n return (\n <TabRenderer\n tabs={config.tabs}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n columns={config.columns}\n />\n );\n }\n\n // Sections mode\n if (config.sections?.length) {\n return (\n <div className=\"space-y-4\">\n {config.sections.map((section) => (\n <SectionRenderer\n key={section.id}\n section={section}\n fields={fields}\n data={data}\n errors={errors}\n onChange={onChange}\n onBlur={onBlur}\n isFieldVisible={isFieldVisible}\n isFieldDisabled={isFieldDisabled}\n />\n ))}\n </div>\n );\n }\n\n // Flat mode (default)\n return renderFieldsFlat();\n };\n\n const spacingClass = {\n compact: \"space-y-3\",\n normal: \"space-y-6\",\n relaxed: \"space-y-8\",\n }[config.spacing || \"normal\"];\n\n // Wizard handles its own submit button\n const showActions =\n config.actions?.length && !config.wizardSteps?.length;\n\n const formBody = (\n <form\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n className={cn(spacingClass, className)}\n >\n {(resolvedTitle || resolvedDescription) && (\n <div className=\"space-y-1\">\n {resolvedTitle && (\n <h2 className=\"text-2xl font-semibold tracking-tight\">\n {resolvedTitle}\n </h2>\n )}\n {resolvedDescription && (\n <p className=\"text-sm text-muted-foreground\">\n {resolvedDescription}\n </p>\n )}\n </div>\n )}\n\n {renderContent()}\n\n {showActions && (\n <FormActions\n actions={config.actions!}\n position={config.actionsPosition}\n data={data}\n processing={processing}\n />\n )}\n </form>\n );\n\n if (config.bordered) {\n return (\n <Card>\n <CardContent className=\"pt-6\">{formBody}</CardContent>\n </Card>\n );\n }\n\n return formBody;\n}\n"],"names":["_jsx","_jsxs","ShadcnTextarea","ShadcnSelect","ShadcnCheckbox","ShadcnRadioGroup"],"mappings":";;;;;;;;;;;;;;;;;MAEa,cAAc,CAAA;IACjB,WAAW,GAA8B,EAAE,CAAC;IAEpD,MAAM,CACJ,OAEI,EAAE,EAAA;AAEN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ;AAC7B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;AAClC,YAAA,GAAG,IAAI;AACR,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CACJ,OAEI,EAAE,EAAA;AAEN,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;AACpB,YAAA,IAAI,EAAE,QAAQ;AACd,YAAA,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,QAAQ;AAC7B,YAAA,OAAO,EAAE,IAAI,CAAC,OAAO,IAAI,SAAS;AAClC,YAAA,GAAG,IAAI;AACR,SAAA,CAAC,CAAC;AACH,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,IAA+D,EAAA;AACpE,QAAA,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;AACnD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;KAC9B;AACF;;AChCD;;;AAGG;MACU,UAAU,CAAA;IACb,aAAa,GAA0B,EAAE,CAAC;IAC1C,YAAY,GAAqC,EAAE,CAAC;AAE5D,IAAA,OAAO,IAAI,GAAA;QACT,OAAO,IAAI,UAAU,EAAE,CAAC;KACzB;;AAID,IAAA,KAAK,CAAC,KAAyC,EAAA;AAC7C,QAAA,IAAI,CAAC,YAAY,CAAC,KAAK,GAAG,KAAK,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,WAA+C,EAAA;AACzD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,WAAW,CAAC;AAC5C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,OAAe,EAAA;AACrB,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,OAAyC,EAAA;AAC/C,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,OAAO,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,QAA8C,EAAA;AACrD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACb;;IAID,MAAM,CAAC,GAAG,QAA+B,EAAA;QACvC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACb;;IAID,QAAQ,CACN,GAAG,QAA6C,EAAA;AAEhD,QAAA,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,OAAO,IAAI,CAAC;KACb;IAED,IAAI,CAAC,GAAG,IAAqC,EAAA;AAC3C,QAAA,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CACJ,GAAG,KAA6C,EAAA;AAEhD,QAAA,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC5D,QAAA,OAAO,IAAI,CAAC;KACb;;AAID,IAAA,OAAO,CACL,EAA6D,EAAA;AAE7D,QAAA,MAAM,OAAO,GAAG,IAAI,cAAc,EAAS,CAAC;AAC5C,QAAA,IAAI,CAAC,YAAY,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;AAChD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,eAAe,CAAC,QAAgD,EAAA;AAC9D,QAAA,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,QAAQ,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACb;;IAID,KAAK,GAAA;AACH,QAAA,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACxD,OAAO;YACL,MAAM;AACN,YAAA,MAAM,EAAE;gBACN,GAAI,IAAI,CAAC,YAAwC;gBACjD,MAAM;AACP,aAAA;SACF,CAAC;KACH;AACF;;MCzGY,cAAc,CAAA;AACjB,IAAA,aAAa,CAAuB;AAE5C,IAAA,WAAA,CAAY,KAAa,EAAA;QACvB,IAAI,CAAC,aAAa,GAAG;YACnB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC5C,KAAK;AACL,YAAA,MAAM,EAAE,EAAE;AACV,YAAA,OAAO,EAAE,CAAC;AACV,YAAA,WAAW,EAAE,KAAK;AAClB,YAAA,SAAS,EAAE,KAAK;SACjB,CAAC;KACH;IAED,OAAO,IAAI,CACT,KAAa,EAAA;AAEb,QAAA,OAAO,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;KAClC;AAED,IAAA,EAAE,CAAC,EAAU,EAAA;AACX,QAAA,IAAI,CAAC,aAAa,CAAC,EAAE,GAAG,EAAE,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,WAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,MAAM,CAAC;AACnC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,OAAe,EAAA;AACrB,QAAA,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,OAAO,CAAC;AACrC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,WAAW,GAAG,IAAI,EAAA;AAC5B,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,WAAW,CAAC;AAC7C,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,CAAC,SAAS,GAAG,IAAI,EAAA;AACxB,QAAA,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,SAAS,CAAC;AACzC,QAAA,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,CAAC,IAAe,EAAA;AAClB,QAAA,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,EAA4B,EAAA;AACjC,QAAA,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,EAAE,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;KAClC;AACF;;MChEY,UAAU,CAAA;AACb,IAAA,SAAS,CAAmB;AAEpC,IAAA,WAAA,CAAY,KAAa,EAAA;QACvB,IAAI,CAAC,SAAS,GAAG;YACf,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC5C,KAAK;SACN,CAAC;KACH;IAED,OAAO,IAAI,CACT,KAAa,EAAA;AAEb,QAAA,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,EAAE,CAAC,EAAU,EAAA;AACX,QAAA,IAAI,CAAC,SAAS,CAAC,EAAE,GAAG,EAAE,CAAC;AACvB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,CAAC,IAAe,EAAA;AAClB,QAAA,IAAI,CAAC,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CACN,GAAG,QAA6C,EAAA;AAEhD,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,KAAK,CACH,KAA2D,EAAA;AAE3D,QAAA,IAAI,CAAC,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,EAA4B,EAAA;AACnC,QAAA,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,EAAE,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC;KAC9B;AACF;;MCrDY,UAAU,CAAA;AACb,IAAA,UAAU,CAA0B;AAE5C,IAAA,WAAA,CAAY,KAAa,EAAA;QACvB,IAAI,CAAC,UAAU,GAAG;YAChB,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;YAC5C,KAAK;SACN,CAAC;KACH;IAED,OAAO,IAAI,CACT,KAAa,EAAA;AAEb,QAAA,OAAO,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;KAC9B;AAED,IAAA,EAAE,CAAC,EAAU,EAAA;AACX,QAAA,IAAI,CAAC,UAAU,CAAC,EAAE,GAAG,EAAE,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,WAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,UAAU,CAAC,WAAW,GAAG,WAAW,CAAC;AAC1C,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,IAAI,CAAC,IAAe,EAAA;AAClB,QAAA,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAAgB,EAAA;AACrB,QAAA,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,MAAM,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CACN,GAAG,QAA6C,EAAA;AAEhD,QAAA,IAAI,CAAC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;AAC1D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,UAAU,CAAC,EAA4B,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,UAAU,CAAC,EAA+C,EAAA;AACxD,QAAA,IAAI,CAAC,UAAU,CAAC,UAAU,GAAG,EAAE,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;KAC/B;AACF;;MCnDqB,SAAS,CAAA;AAInB,IAAA,MAAM,CAAU;AAE1B,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,IAAI,CAAC,MAAM,GAAG;YACZ,IAAI;AACJ,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,QAAQ,EAAE,KAAK;AACf,YAAA,MAAM,EAAE,KAAK;AACb,YAAA,UAAU,EAAE,CAAC;AACb,YAAA,KAAK,EAAE,EAAE;AACT,YAAA,SAAS,EAAE,EAAE;SACQ,CAAC;KACzB;;AAID,IAAA,KAAK,CAAC,KAAa,EAAA;AACjB,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;AAC1B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,WAAmB,EAAA;AAC7B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,IACE,QAAQ;YACR,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAiB,KAAK,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,EACtE;AACA,YAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;gBAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,gBAAA;AACE,oBAAA,IAAI,EAAE,UAAU;AAChB,oBAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAc,YAAA,CAAA;AAChE,iBAAA;aACF,CAAC;SACH;AACD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,WAAiD,IAAI,EAAA;AAC5D,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,MAAM,CAAC,SAA+C,IAAI,EAAA;AACxD,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,KAAU,EAAA;AAChB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,UAAU,CAAC,IAAY,EAAA;AACrB,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;AAC9B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,SAAiB,EAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,KAAK,CAAC,KAAuB,EAAA;QAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,MAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC;AAC/B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,CACP,KAAQ,EACR,SAAoD,EACpD,MAA8D,GAAA,MAAM,EACpE,WAAiB,EAAA;AAEjB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG;YACtB,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;AAChC,YAAA,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAA6B;SACrE,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACtB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAChC,QAAA,OAAO,IAAI,CAAC;KACb;;IAUD,KAAK,GAAA;QACH,OAAO;AACL,YAAA,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,SAAS;AACpB,YAAA,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC,MAAM,EAAE;YAC1B,MAAM,EAAE,CAAC,KAA8B,KAAK,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACpE,CAAC;KACH;AACF;;AChIK,MAAO,SAEX,SAAQ,SAAwC,CAAA;IACvC,SAAS,GAAc,MAAM,CAAC;IAEvC,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;KAC5B;AAED,IAAA,IAAI,CAAC,IAA8D,EAAA;AACjE,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;KAC3B;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;KAC9B;IAED,MAAM,GAAA;AACJ,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;KAC5B;IAED,GAAG,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;IAED,GAAG,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;KACzB;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,kBAAA,EAAqB,GAAG,CAAa,WAAA,CAAA;AACvF,aAAA;SACF,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAa,WAAA,CAAA;AACtF,aAAA;SACF,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAA0B,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAA0B,EAAA;AAC/B,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,YAAY,CAAC,KAAa,EAAA;AACxB,QAAA,IAAI,CAAC,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC;AACjC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,GACgB,EAAA;QACxB,MAAM,EACJ,IAAI,EACJ,WAAW,EACX,SAAS,EACT,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,MAAM,EACN,MAAM,GACP,GAAG,IAAI,CAAC,MAAM,CAAC;AAEhB,QAAA,MAAM,KAAK,IACTA,IAAC,KAAK,EAAA,EACJ,IAAI,EAAE,IAAI,IAAI,MAAM,EACpB,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,CAAC,CAAsC,KAC/C,QAAQ,CACN,IAAI,KAAK,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAC5D,EAEH,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,EAAE,SAAS,CAAC,EAAA,CACvD,CACH,CAAC;AAEF,QAAA,IAAI,MAAM,IAAI,MAAM,EAAE;AACpB,YAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EACrC,QAAA,EAAA,CAAA,MAAM,KACLD,GAAM,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,+BAA+B,YAAE,MAAM,EAAA,CAAQ,CAChE,EACA,KAAK,EACL,MAAM,KACLA,GAAM,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,+BAA+B,YAAE,MAAM,EAAA,CAAQ,CAChE,CAAA,EAAA,CACG,EACN;SACH;AAED,QAAA,OAAO,KAAK,CAAC;KACd;AACF;;AClIK,MAAO,QAEX,SAAQ,SAAuC,CAAA;IACtC,SAAS,GAAc,UAAU,CAAC;AAE3C,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC;KACtB;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC3B;AAED,IAAA,IAAI,CAAC,IAAY,EAAA;AACf,QAAA,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;AACxB,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,kBAAA,EAAqB,GAAG,CAAa,WAAA,CAAA;AACvF,aAAA;SACF,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,SAAS,CAAC,GAAW,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG;YAClB,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC;AAC5B,YAAA;AACE,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,KAAK,EAAE,GAAG;AACV,gBAAA,OAAO,EAAE,CAAA,EAAG,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAA,iBAAA,EAAoB,GAAG,CAAa,WAAA,CAAA;AACtF,aAAA;SACF,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;IAED,UAAU,CAAC,UAAU,GAAG,IAAI,EAAA;AAC1B,QAAA,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,MAAM,EACN,KAAK,EACL,QAAQ,GACgB,EAAA;AACxB,QAAA,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;AAE1E,QAAA,QACEA,GAAA,CAACE,UAAc,EAAA,EACb,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,QAAQ,EAAE,CAAC,CAAyC,KAClD,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAE1B,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,EAAE,SAAS,CAAC,EAAA,CACvD,EACF;KACH;AACF;;ACvEK,MAAO,MAEX,SAAQ,SAAqC,CAAA;IACpC,SAAS,GAAc,QAAQ,CAAC;AAEzC,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACX,QAAA,IAAI,CAAC,MAA8B,CAAC,OAAO,GAAG,EAAE,CAAC;AACjD,QAAA,IAAI,CAAC,MAA8B,CAAC,QAAQ,GAAG,KAAK,CAAC;AACrD,QAAA,IAAI,CAAC,MAA8B,CAAC,UAAU,GAAG,KAAK,CAAC;AACvD,QAAA,IAAI,CAAC,MAA8B,CAAC,SAAS,GAAG,KAAK,CAAC;KACxD;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,OAAO,CACL,OAA2D,EAAA;AAE1D,QAAA,IAAI,CAAC,MAA8B,CAAC,OAAO,GAAG,OAAO,CAAC;AACvD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACrB,QAAA,IAAI,CAAC,MAA8B,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,UAAU,CAAC,UAAU,GAAG,IAAI,EAAA;AACzB,QAAA,IAAI,CAAC,MAA8B,CAAC,UAAU,GAAG,UAAU,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,CAAC,SAAS,GAAG,IAAI,EAAA;AACvB,QAAA,IAAI,CAAC,MAA8B,CAAC,SAAS,GAAG,SAAS,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAA8B,CAAC,QAAQ,GAAG,GAAG,CAAC;AACpD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,EAA8C,EAAA;AACvD,QAAA,IAAI,CAAC,MAA8B,CAAC,WAAW,GAAG,EAAE,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,GACoB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAA6B,CAAC;QAC/C,MAAM,eAAe,GACnB,OAAO,GAAG,CAAC,OAAO,KAAK,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,OAAO,CAAC;AAEtE,QAAA,QACED,IAAC,CAAAE,QAAY,IACX,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,aAAa,EAAE,QAAQ,EACvB,QAAQ,EAAE,QAAQ,EAAA,QAAA,EAAA,CAElBH,IAAC,aAAa,EAAA,EACZ,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,EAAE,GAAG,CAAC,SAAS,CAAC,EAE3D,QAAA,EAAAA,GAAA,CAAC,WAAW,EAAC,EAAA,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,WAAW,EAAI,CAAA,EAAA,CAC9C,EAChBA,GAAC,CAAA,aAAa,cACX,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,MACvBA,GAAA,CAAC,UAAU,EAET,EAAA,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAA,QAAA,EAErB,GAAG,CAAC,KAAK,IAJL,GAAG,CAAC,KAAK,CAKH,CACd,CAAC,EACY,CAAA,CAAA,EAAA,CACH,EACf;KACH;AACF;;AC7FK,MAAO,QAEX,SAAQ,SAAuC,CAAA;IACtC,SAAS,GAAc,UAAU,CAAC;IAE3C,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GACgB,EAAA;AACxB,QAAA,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAElC,QACEC,cAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,aAC1DD,GAAC,CAAAI,UAAc,IACb,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB,OAAO,EAAE,CAAC,CAAC,KAAK,EAChB,eAAe,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,EACjD,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAAA,CAC5C,EACD,IAAI,CAAC,MAAM,CAAC,KAAK,KAChBJ,GAAA,CAAA,OAAA,EAAA,EACE,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACzB,SAAS,EAAE,EAAE,CACX,4FAA4F,EAC5F,KAAK,IAAI,kBAAkB,CAC5B,YAEA,IAAI,CAAC,MAAM,CAAC,KAAK,GACZ,CACT,CAAA,EAAA,CACG,EACN;KACH;AACF;;AC1CK,MAAO,MAEX,SAAQ,SAAqC,CAAA;IACpC,SAAS,GAAc,QAAQ,CAAC;IAEzC,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;KACzB;AAED,IAAA,OAAO,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACpB,QAAA,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC;AAC7B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GACgB,EAAA;QACxB,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QACrD,MAAM,YAAY,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhD,QAAA,QACEC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,6BAA6B,EAAE,SAAS,CAAC,EAC1D,QAAA,EAAA,CAAAD,GAAA,CAAC,MAAM,EAAA,EACL,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACpB,OAAO,EAAE,CAAC,CAAC,KAAK,EAChB,eAAe,EAAE,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,EAC/C,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAC5C,CAAA,EACD,YAAY,KACXA,GACE,CAAA,OAAA,EAAA,EAAA,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EACzB,SAAS,EAAC,+BAA+B,YAExC,YAAY,EAAA,CACP,CACT,CAAA,EAAA,CACG,EACN;KACH;AACF;;AC9CK,MAAO,UAEX,SAAQ,SAAyC,CAAA;IACxC,SAAS,GAAc,aAAa,CAAC;AAE9C,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACX,QAAA,IAAI,CAAC,MAAkC,CAAC,OAAO,GAAG,EAAE,CAAC;AACrD,QAAA,IAAI,CAAC,MAAkC,CAAC,WAAW,GAAG,UAAU,CAAC;KACnE;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,OAAO,CAAC,OAAuB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAkC,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,WAAW,CAAC,WAAsC,EAAA;AAC/C,QAAA,IAAI,CAAC,MAAkC,CAAC,WAAW,GAAG,WAAW,CAAC;AACnE,QAAA,OAAO,IAAI,CAAC;KACb;IAED,UAAU,GAAA;AACR,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;KACvC;IAED,QAAQ,GAAA;AACN,QAAA,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;KACrC;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GACgB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiC,CAAC;AACnD,QAAA,MAAM,YAAY,GAAG,GAAG,CAAC,WAAW,KAAK,YAAY,CAAC;QAEtD,QACEA,GAAC,CAAAK,YAAgB,EACf,EAAA,KAAK,EAAE,KAAK,IAAI,EAAE,EAClB,aAAa,EAAE,QAAQ,EACvB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,YAAY,GAAG,qBAAqB,GAAG,qBAAqB,EAC5D,GAAG,CAAC,SAAS,CACd,EAAA,QAAA,EAEA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MACnBJ,IAAqB,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,6BAA6B,EAC1D,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,EACb,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,EAAE,EAAE,CAAG,EAAA,GAAG,CAAC,IAAI,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,CAAE,CAAA,EAC9B,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAC5C,CAAA,EACFA,GAAC,CAAA,KAAK,EACJ,EAAA,OAAO,EAAE,CAAA,EAAG,GAAG,CAAC,IAAI,CAAA,CAAA,EAAI,GAAG,CAAC,KAAK,CAAA,CAAE,EACnC,SAAS,EAAC,qBAAqB,EAE9B,QAAA,EAAA,GAAG,CAAC,KAAK,EACJ,CAAA,CAAA,EAAA,EAZA,GAAG,CAAC,KAAK,CAab,CACP,CAAC,EACe,CAAA,EACnB;KACH;AACF;;ACtEK,MAAO,UAEX,SAAQ,SAAyC,CAAA;IACxC,SAAS,GAAc,aAAa,CAAC;AAE9C,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACZ,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC;AAC3B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,KAAK,CAAC;AAChC,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,OAAO,CAAC;KAC9B;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,OAAO,CAAC,IAAoC,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,IAAoC,EAAA;AAC1C,QAAA,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,WAAW,GAAG,IAAI,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC;QACtC,IAAI,WAAW,EAAE;AACd,YAAA,IAAY,CAAC,SAAS,GAAG,kBAAkB,CAAC;SAC9C;AACD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AACnB,QAAA,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,GACoB,EAAA;QACxB,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;QAEvD,MAAM,eAAe,GACnB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU;cACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,cAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;QAC1B,MAAM,eAAe,GACnB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,UAAU;cACrC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;AAC3B,cAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;AAE1B,QAAA,MAAM,SAAS,GAAG,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;AAEtD,QAAA,MAAM,UAAU,GAAG,CAAC,IAAU,KAAY;AACxC,YAAA,OAAO,IAAI,CAAC,kBAAkB,CAAC,MAAM,IAAI,OAAO,EAAE;AAChD,gBAAA,IAAI,EAAE,SAAS;AACf,gBAAA,KAAK,EAAE,MAAM;AACb,gBAAA,GAAG,EAAE,SAAS;AACf,aAAA,CAAC,CAAC;AACL,SAAC,CAAC;QAEF,QACEC,IAAC,CAAA,OAAO,EACN,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAC,cAAc,EAAA,EAAC,OAAO,EAAA,IAAA,EAAA,QAAA,EACrBC,IAAC,CAAA,MAAM,EACL,EAAA,OAAO,EAAC,SAAS,EACjB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAE,EAAE,CACX,4CAA4C,EAC5C,CAAC,SAAS,IAAI,uBAAuB,EACrC,KAAK,IAAI,oBAAoB,EAC7B,SAAS,CACV,EAAA,QAAA,EAAA,CAEDD,GAAC,CAAA,YAAY,EAAC,EAAA,SAAS,EAAC,cAAc,EAAG,CAAA,EACxC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,WAAW,IAAI,aAAa,IAC1D,EACM,CAAA,EACjBA,GAAC,CAAA,cAAc,EAAC,EAAA,SAAS,EAAC,YAAY,EAAC,KAAK,EAAC,OAAO,EAClD,QAAA,EAAAA,GAAA,CAAC,QAAQ,EAAA,EACP,IAAI,EAAC,QAAQ,EACb,QAAQ,EAAE,SAAS,EACnB,QAAQ,EAAE,CAAC,IAAI,KACb,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,EAExD,QAAQ,EAAE,CAAC,IAAI,KAAI;AACjB,4BAAA,IAAI,eAAe,IAAI,IAAI,GAAG,eAAe;AAAE,gCAAA,OAAO,IAAI,CAAC;AAC3D,4BAAA,IAAI,eAAe,IAAI,IAAI,GAAG,eAAe;AAAE,gCAAA,OAAO,IAAI,CAAC;AAC3D,4BAAA,OAAO,KAAK,CAAC;AACf,yBAAC,EACD,YAAY,EAAA,IAAA,EAAA,CACZ,EACa,CAAA,CAAA,EAAA,CACT,EACV;KACH;AACF;;ACtHK,MAAO,MAEX,SAAQ,SAAqC,CAAA;IACpC,SAAS,GAAc,QAAQ,CAAC;IAEzC,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;KACzB;IAED,WAAW,CAAC,EAAE,KAAK,EAA2B,EAAA;AAC5C,QAAA,OAAOA,eAAO,IAAI,EAAC,QAAQ,EAAC,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,IAAI,EAAE,GAAI,CAAC;KAC5E;AACF;;ACVK,MAAO,UAEX,SAAQ,SAAyC,CAAA;IACxC,SAAS,GAAc,aAAa,CAAC;AAE9C,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACX,QAAA,IAAI,CAAC,MAAkC,CAAC,QAAQ,GAAG,KAAK,CAAC;AACzD,QAAA,IAAI,CAAC,MAAkC,CAAC,OAAO,GAAG,IAAI,CAAC;AACvD,QAAA,IAAI,CAAC,MAAkC,CAAC,QAAQ,GAAG,CAAC,CAAC;KACvD;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC;KAC7B;AAED,IAAA,MAAM,CAAC,MAAc,EAAA;AAClB,QAAA,IAAI,CAAC,MAAkC,CAAC,MAAM,GAAG,MAAM,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,KAAa,EAAA;AAClB,QAAA,IAAI,CAAC,MAAkC,CAAC,OAAO,GAAG,KAAK,CAAC;AACzD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,EAAA;AACrB,QAAA,IAAI,CAAC,MAAkC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAAkC,CAAC,QAAQ,GAAG,GAAG,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,OAAO,CAAC,OAAO,GAAG,IAAI,EAAA;AACnB,QAAA,IAAI,CAAC,MAAkC,CAAC,OAAO,GAAG,OAAO,CAAC;AAC3D,QAAA,OAAO,IAAI,CAAC;KACb;IAED,KAAK,GAAA;AACH,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;KAC/B;IAED,GAAG,GAAA;AACD,QAAA,OAAO,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;KACvC;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GACgB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAiC,CAAC;AACnD,QAAA,MAAM,QAAQ,GAAG,MAAM,CAAmB,IAAI,CAAC,CAAC;QAChD,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEhD,MAAM,KAAK,GAAW,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC;AAE1E,QAAA,MAAM,WAAW,GAAG,CAAC,QAAyB,KAAI;AAChD,YAAA,IAAI,CAAC,QAAQ;gBAAE,OAAO;YACtB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAEtC,YAAA,IAAI,GAAG,CAAC,OAAO,EAAE;AACf,gBAAA,MAAM,SAAS,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,GAAG,CAAC,OAAQ,CAAC,CAAC;AAC9D,gBAAA,IAAI,SAAS;oBAAE,OAAO;aACvB;AAED,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AAChB,gBAAA,MAAM,QAAQ,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAChE,QAAQ,CAAC,QAAQ,CAAC,CAAC;aACpB;iBAAM;gBACL,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;aAC/B;AACH,SAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,CAAC,KAAa,KAAI;AACnC,YAAA,IAAI,GAAG,CAAC,QAAQ,EAAE;AAChB,gBAAA,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC;AACpD,gBAAA,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;aAC3C;iBAAM;gBACL,QAAQ,CAAC,IAAI,CAAC,CAAC;aAChB;AACH,SAAC,CAAC;QAEF,QACEC,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,CAC5CA,cACE,SAAS,EAAE,EAAE,CACX,mGAAmG,EACnG,QAAQ;AACN,0BAAE,6BAA6B;AAC/B,0BAAE,4BAA4B,EAChC,KAAK,IAAI,oBAAoB,EAC7B,QAAQ,IAAI,+BAA+B,CAC5C,EACD,UAAU,EAAE,CAAC,CAAC,KAAI;wBAChB,CAAC,CAAC,cAAc,EAAE,CAAC;AACnB,wBAAA,IAAI,CAAC,QAAQ;4BAAE,WAAW,CAAC,IAAI,CAAC,CAAC;AACnC,qBAAC,EACD,WAAW,EAAE,MAAM,WAAW,CAAC,KAAK,CAAC,EACrC,MAAM,EAAE,CAAC,CAAC,KAAI;wBACZ,CAAC,CAAC,cAAc,EAAE,CAAC;wBACnB,WAAW,CAAC,KAAK,CAAC,CAAC;AACnB,wBAAA,IAAI,CAAC,QAAQ;AAAE,4BAAA,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;qBAClD,EAAA,QAAA,EAAA,CAEDD,IAAC,MAAM,EAAA,EAAC,SAAS,EAAC,oCAAoC,GAAG,EACzDC,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,+BAA+B,+BAC3B,GAAG,EAClBD,gBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,wBAAwB,EAClC,OAAO,EAAE,MAAM,QAAQ,CAAC,OAAO,EAAE,KAAK,EAAE,EACxC,QAAQ,EAAE,QAAQ,EAGX,QAAA,EAAA,QAAA,EAAA,CAAA,CAAA,EAAA,CACP,EACH,GAAG,CAAC,MAAM,KACTC,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,oCAAoC,2BACpC,GAAG,CAAC,MAAM,CACnB,EAAA,CAAA,CACL,EACDD,GAAA,CAAA,OAAA,EAAA,EACE,GAAG,EAAE,QAAQ,EACb,IAAI,EAAC,MAAM,EACX,MAAM,EAAE,GAAG,CAAC,MAAM,EAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,EACtB,QAAQ,EAAE,CAAC,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5C,SAAS,EAAC,QAAQ,EAClB,QAAQ,EAAE,QAAQ,EAAA,CAClB,IACE,EAEL,KAAK,CAAC,MAAM,GAAG,CAAC,KACfA,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,WAAW,YACtB,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MACrBC,aAEE,SAAS,EAAC,uEAAuE,EAEjF,QAAA,EAAA,CAAAA,IAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,kCAAkC,EAAA,QAAA,EAAA,CAChDD,IAAC,IAAI,EAAA,EAAC,SAAS,EAAC,+BAA+B,GAAG,EACjD,IAAI,CAAC,IAAI,CACL,EAAA,CAAA,EACPA,IAAC,MAAM,EAAA,EACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,aAAa,EACvB,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,EAChC,QAAQ,EAAE,QAAQ,YAElBA,GAAC,CAAA,CAAC,EAAC,EAAA,SAAS,EAAC,SAAS,GAAG,EAClB,CAAA,CAAA,EAAA,EAhBJ,KAAK,CAiBP,CACN,CAAC,EACC,CAAA,CACN,CACG,EAAA,CAAA,EACN;KACH;AACF;;ACxKK,MAAO,aAEX,SAAQ,SAA4C,CAAA;IAC3C,SAAS,GAAc,gBAAgB,CAAC;AAEjD,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACX,QAAA,IAAI,CAAC,MAAqC,CAAC,OAAO,GAAG,EAAE,CAAC;AACxD,QAAA,IAAI,CAAC,MAAqC,CAAC,OAAO,GAAG,CAAC,CAAC;KACzD;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,CAAC;KAChC;AAED,IAAA,OAAO,CAAC,OAAuB,EAAA;AAC5B,QAAA,IAAI,CAAC,MAAqC,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,OAAO,CAAC,OAAe,EAAA;AACpB,QAAA,IAAI,CAAC,MAAqC,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9D,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,GACgB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAAoC,CAAC;AACtD,QAAA,MAAM,cAAc,GAAa,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AAEnE,QAAA,MAAM,aAAa,GAA2B;AAC5C,YAAA,CAAC,EAAE,aAAa;AAChB,YAAA,CAAC,EAAE,aAAa;AAChB,YAAA,CAAC,EAAE,aAAa;AAChB,YAAA,CAAC,EAAE,aAAa;SACjB,CAAC;AAEF,QAAA,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAE,OAAgB,KAAI;YAC7D,IAAI,OAAO,EAAE;gBACX,QAAQ,CAAC,CAAC,GAAG,cAAc,EAAE,WAAW,CAAC,CAAC,CAAC;aAC5C;iBAAM;AACL,gBAAA,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,WAAW,CAAC,CAAC,CAAC;aAC3D;AACH,SAAC,CAAC;AAEF,QAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EACE,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,aAAa,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EACnD,GAAG,CAAC,SAAS,CACd,EAEA,QAAA,EAAA,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,MACnBC,cAAqB,SAAS,EAAC,6BAA6B,EAAA,QAAA,EAAA,CAC1DD,GAAC,CAAAI,UAAc,EACb,EAAA,EAAE,EAAE,CAAG,EAAA,GAAG,CAAC,IAAI,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,EAAE,EAC9B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAC3C,eAAe,EAAE,CAAC,OAAO,KACvB,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,EAEpC,QAAQ,EAAE,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAClC,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,oBAAoB,CAAC,EAC5C,CAAA,EACFJ,GAAC,CAAA,KAAK,EACJ,EAAA,OAAO,EAAE,CAAG,EAAA,GAAG,CAAC,IAAI,CAAI,CAAA,EAAA,GAAG,CAAC,KAAK,EAAE,EACnC,SAAS,EAAC,qBAAqB,EAE9B,QAAA,EAAA,GAAG,CAAC,KAAK,GACJ,CAfA,EAAA,EAAA,GAAG,CAAC,KAAK,CAgBb,CACP,CAAC,EAAA,CACE,EACN;KACH;AACF;;AC3EK,MAAO,QAEX,SAAQ,SAAuC,CAAA;IACtC,SAAS,GAAc,UAAU,CAAC;IACnC,aAAa,GAAwB,EAAE,CAAC;AAEhD,IAAA,WAAA,CAAY,IAAY,EAAA;QACtB,KAAK,CAAC,IAAI,CAAC,CAAC;AACX,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,CAAC,CAAC;AACnD,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,QAAQ,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,UAAU,CAAC;AAC5D,QAAA,IAAI,CAAC,MAAgC,CAAC,WAAW,GAAG,KAAK,CAAC;AAC1D,QAAA,IAAI,CAAC,MAAgC,CAAC,SAAS,GAAG,KAAK,CAAC;KAC1D;IAED,OAAO,IAAI,CACT,IAAmC,EAAA;AAEnC,QAAA,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;KAC3B;IAED,MAAM,CAAC,GAAG,QAA6B,EAAA;AACrC,QAAA,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;AAC7B,QAAA,IAAI,CAAC,MAAgC,CAAC,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,KAC7D,CAAC,CAAC,KAAK,EAAE,CACV,CAAC;AACF,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,GAAG,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,GAAW,EAAA;AACjB,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,GAAG,CAAC;AACtD,QAAA,OAAO,IAAI,CAAC;KACb;AAED,IAAA,QAAQ,CAAC,KAAa,EAAA;AACnB,QAAA,IAAI,CAAC,MAAgC,CAAC,QAAQ,GAAG,KAAK,CAAC;AACxD,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,WAAW,GAAG,IAAI,EAAA;AAC3B,QAAA,IAAI,CAAC,MAAgC,CAAC,WAAW,GAAG,WAAW,CAAC;AACjE,QAAA,OAAO,IAAI,CAAC;KACb;IAED,SAAS,CAAC,SAAS,GAAG,IAAI,EAAA;AACvB,QAAA,IAAI,CAAC,MAAgC,CAAC,SAAS,GAAG,SAAS,CAAC;AAC7D,QAAA,OAAO,IAAI,CAAC;KACb;IAED,WAAW,CAAC,EACV,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,IAAI,GACoB,EAAA;AACxB,QAAA,MAAM,GAAG,GAAG,IAAI,CAAC,MAA+B,CAAC;AACjD,QAAA,MAAM,KAAK,GAA0B,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE,CAAC;AACvE,QAAA,MAAM,WAAW,GAAG,GAAG,CAAC,MAA2B,CAAC;QAEpD,MAAM,OAAO,GAAG,MAAK;YACnB,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC;gBAAE,OAAO;YACvD,MAAM,QAAQ,GAAwB,EAAE,CAAC;AACzC,YAAA,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAI;AACxB,gBAAA,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE,CAAC;AACjD,aAAC,CAAC,CAAC;YACH,QAAQ,CAAC,CAAC,GAAG,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;AACjC,SAAC,CAAC;AAEF,QAAA,MAAM,UAAU,GAAG,CAAC,KAAa,KAAI;YACnC,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC;gBAAE,OAAO;AAChD,YAAA,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;AAChD,SAAC,CAAC;QAEF,MAAM,UAAU,GAAG,CACjB,KAAa,EACb,SAAiB,EACjB,UAAe,KACb;AACF,YAAA,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,KAChC,CAAC,KAAK,KAAK,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,SAAS,GAAG,UAAU,EAAE,GAAG,IAAI,CAC1D,CAAC;YACF,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpB,SAAC,CAAC;AAEF,QAAA,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACzD,QAAA,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;QAErD,QACEC,cAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,GAAG,CAAC,SAAS,CAAC,EAAA,QAAA,EAAA,CAC3C,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,MACrBD,IAAC,IAAI,EAAA,EAAA,QAAA,EACHC,KAAC,WAAW,EAAA,EAAC,SAAS,EAAC,6BAA6B,aACjD,GAAG,CAAC,SAAS,KACZD,IAAC,YAAY,EAAA,EAAC,SAAS,EAAC,gDAAgD,GAAG,CAC5E,EACDA,aAAK,SAAS,EAAC,mBAAmB,EAC/B,QAAA,EAAA,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,MACrBC,cAAsB,SAAS,EAAC,WAAW,EACxC,QAAA,EAAA,CAAA,KAAK,CAAC,MAAM,CAAC,KAAK,KACjBD,eAAO,SAAS,EAAC,qBAAqB,EACnC,QAAA,EAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EACb,CAAA,CACT,EACA,KAAK,CAAC,MAAM,CAAC;AACZ,4CAAA,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;AACvB,4CAAA,QAAQ,EAAE,CAAC,CAAC,KAAK,UAAU,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;4CACjD,QAAQ;4CACR,IAAI;yCACL,CAAC,CAAA,EAAA,EAXM,KAAK,CAAC,IAAI,CAYd,CACP,CAAC,EACE,CAAA,EACL,SAAS,KACRA,GAAC,CAAA,MAAM,EACL,EAAA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,OAAO,EACf,IAAI,EAAC,IAAI,EACT,SAAS,EAAC,mCAAmC,EAC7C,OAAO,EAAE,MAAM,UAAU,CAAC,KAAK,CAAC,EAChC,QAAQ,EAAE,QAAQ,EAElB,QAAA,EAAAA,GAAA,CAAC,MAAM,EAAC,EAAA,SAAS,EAAC,SAAS,EAAG,CAAA,EAAA,CACvB,CACV,CACW,EAAA,CAAA,EAAA,EAlCL,KAAK,CAmCT,CACR,CAAC,EAED,MAAM,KACLC,IAAC,CAAA,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,SAAS,EAAC,QAAQ,EAElB,QAAA,EAAA,CAAAD,GAAA,CAAC,IAAI,EAAA,EAAC,SAAS,EAAC,cAAc,EAAG,CAAA,EAChC,GAAG,CAAC,QAAQ,CACN,EAAA,CAAA,CACV,CACG,EAAA,CAAA,EACN;KACH;AACF;;SCrJe,aAAa,CAAoC,EAC/D,KAAK,EACL,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,QAAQ,EACR,MAAM,GACoB,EAAA;;AAE1B,IAAA,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE;AAC3B,QAAA,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;KACzE;;AAGD,IAAA,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC;IAEvE,QACEC,cACE,SAAS,EAAE,EAAE,CACX,WAAW,EACX,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,GAAG,CAAC;AACpD,cAAE,CAAY,SAAA,EAAA,KAAK,CAAC,MAAM,CAAC,UAAU,CAAE,CAAA;AACvC,cAAE,SAAS,EACb,KAAK,CAAC,MAAM,CAAC,SAAS,CACvB,EAAA,QAAA,EAAA,CAEA,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC,SAAS,KAC/BA,IAAC,CAAA,KAAK,EACJ,EAAA,OAAO,EAAE,KAAK,CAAC,IAAI,EACnB,SAAS,EAAE,EAAE,CAAC,KAAK,IAAI,kBAAkB,CAAC,EAEzC,QAAA,EAAA,CAAA,KAAK,CAAC,MAAM,CAAC,KAAK,EAClB,KAAK,CAAC,MAAM,CAAC,QAAQ,KACpBD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,uBAAuB,EAAA,QAAA,EAAA,GAAA,EAAA,CAAS,CACjD,CAAA,EAAA,CACK,CACT,EACA,KAAK,CAAC,MAAM,CAAC;gBACZ,KAAK;gBACL,QAAQ;gBACR,MAAM;gBACN,KAAK;gBACL,QAAQ;gBACR,IAAI;AACL,aAAA,CAAC,EACD,KAAK,IAAIA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,0BAA0B,EAAE,QAAA,EAAA,KAAK,GAAK,EAC5D,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,UAAU,KAChCA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,+BAA+B,EACzC,QAAA,EAAA,KAAK,CAAC,MAAM,CAAC,UAAU,EAAA,CACtB,CACL,CAAA,EAAA,CACG,EACN;AACJ;;AC5DA,MAAM,aAAa,GAA2B;AAC5C,IAAA,CAAC,EAAE,aAAa;AAChB,IAAA,CAAC,EAAE,4BAA4B;AAC/B,IAAA,CAAC,EAAE,2CAA2C;AAC9C,IAAA,CAAC,EAAE,2CAA2C;CAC/C,CAAC;AAEI,SAAU,UAAU,CAAC,EACzB,OAAO,GAAG,CAAC,EACX,QAAQ,EACR,SAAS,GACO,EAAA;IAChB,QACEA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,EAAE,CACX,YAAY,EACZ,aAAa,CAAC,OAAO,CAAC,IAAI,aAAa,CAAC,CAAC,CAAC,EAC1C,SAAS,CACV,EAEA,QAAA,EAAA,QAAQ,EACL,CAAA,EACN;AACJ;;ACpBA,MAAM,aAAa,GAA2B;AAC5C,IAAA,KAAK,EAAE,eAAe;AACtB,IAAA,MAAM,EAAE,gBAAgB;AACxB,IAAA,OAAO,EAAE,iBAAiB;AAC1B,IAAA,GAAG,EAAE,aAAa;CACnB,CAAC;AAEc,SAAA,WAAW,CAAoC,EAC7D,OAAO,EACP,QAAQ,GAAG,KAAK,EAChB,IAAI,EACJ,UAAU,GAAG,KAAK,GACM,EAAA;IACxB,IAAI,CAAC,OAAO,CAAC,MAAM;AAAE,QAAA,OAAO,IAAI,CAAC;IAEjC,QACEA,aAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAA,QAAA,EACtD,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,KAAI;AACzB,YAAA,MAAM,UAAU,GACd,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU;kBACjC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;AACnC,kBAAE,MAAM,CAAC,QAAQ,CAAC;AAEtB,YAAA,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,EAAE;gBAC5B,QACEC,KAAC,MAAM,EAAA,EAEL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS,EACpC,QAAQ,EAAE,UAAU,IAAI,UAAU,EAEjC,QAAA,EAAA,CAAA,MAAM,CAAC,IAAI,IAAID,GAAM,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAAE,QAAA,EAAA,MAAM,CAAC,IAAI,EAAA,CAAQ,EAC1D,UAAU,GAAG,eAAe,GAAG,MAAM,CAAC,KAAK,CANvC,EAAA,EAAA,CAAC,CAOC,EACT;aACH;YAED,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,EAAE;gBAC3C,QACEA,IAAC,MAAM,EAAA,EAEL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS,EACpC,QAAQ,EAAE,UAAU,EACpB,OAAO,EAEP,IAAA,EAAA,QAAA,EAAAC,IAAA,CAAA,GAAA,EAAA,EAAG,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,QAAA,EAAA,CAAA,MAAM,CAAC,IAAI,IAAID,GAAM,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,MAAM,EAAE,QAAA,EAAA,MAAM,CAAC,IAAI,EAAA,CAAQ,EAC1D,MAAM,CAAC,KAAK,IACX,EATC,EAAA,CAAC,CAUC,EACT;aACH;YAED,QACEC,IAAC,CAAA,MAAM,EAEL,EAAA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,MAAM,CAAC,OAAO,IAAI,SAAS,EACpC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,QAAQ,EAAE,UAAU,KAAK,MAAM,CAAC,IAAI,KAAK,QAAQ,IAAI,UAAU,CAAC,EAE/D,QAAA,EAAA,CAAA,MAAM,CAAC,IAAI,IAAID,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,MAAM,EAAA,QAAA,EAAE,MAAM,CAAC,IAAI,EAAA,CAAQ,EAC1D,MAAM,CAAC,KAAK,CAPR,EAAA,EAAA,CAAC,CAQC,EACT;SACH,CAAC,EACE,CAAA,EACN;AACJ;;SCrDgB,eAAe,CAAoC,EACjE,OAAO,EACP,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,cAAc,EACd,eAAe,GACa,EAAA;AAC5B,IAAA,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC;IAE3E,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;AAAE,QAAA,OAAO,IAAI,CAAC;IAExD,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KACpC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAChC,CAAC;AAEF,IAAA,QACEC,IAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EAAA,CACHA,KAAC,UAAU,EAAA,EACT,SAAS,EAAE,EAAE,CACX,OAAO,CAAC,WAAW,IAAI,4BAA4B,CACpD,EACD,OAAO,EACL,OAAO,CAAC,WAAW,GAAG,MAAM,cAAc,CAAC,CAAC,WAAW,CAAC,GAAG,SAAS,EAGtE,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,mCAAmC,EAChD,QAAA,EAAA,CAAAA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,yBAAyB,EAAA,QAAA,EAAA,CACrC,OAAO,CAAC,IAAI,EACbD,GAAA,CAAC,SAAS,EAAA,EAAC,SAAS,EAAC,SAAS,EAAE,QAAA,EAAA,OAAO,CAAC,KAAK,GAAa,CACtD,EAAA,CAAA,EACL,OAAO,CAAC,WAAW,KAClBA,GAAC,CAAA,MAAM,EAAC,EAAA,OAAO,EAAC,OAAO,EAAC,IAAI,EAAC,IAAI,EAAC,SAAS,EAAC,aAAa,EAAA,QAAA,EACvDA,IAAC,WAAW,EAAA,EACV,SAAS,EAAE,EAAE,CACX,8BAA8B,EAC9B,WAAW,IAAI,YAAY,CAC5B,EAAA,CACD,EACK,CAAA,CACV,CACG,EAAA,CAAA,EACL,OAAO,CAAC,WAAW,KAClBA,GAAC,CAAA,eAAe,EAAE,EAAA,QAAA,EAAA,OAAO,CAAC,WAAW,EAAA,CAAmB,CACzD,CAAA,EAAA,CACU,EACZ,CAAC,WAAW,KACXA,GAAC,CAAA,WAAW,EACV,EAAA,QAAA,EAAAA,GAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAE,OAAO,CAAC,OAAO,EACjC,QAAA,EAAA,aAAa,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AAC3B,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,IAAI,CAAC;AACxC,wBAAA,QACEA,GAAC,CAAA,aAAa,EAEZ,EAAA,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAmB,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAmB,CAAC,EACxC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAmB,EAAE,CAAC,CAAC,EACvD,MAAM,EAAE,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,EAPhD,EAAA,KAAK,CAAC,IAAI,CAQf,EACF;AACJ,qBAAC,CAAC,EACS,CAAA,EAAA,CACD,CACf,CAAA,EAAA,CACI,EACP;AACJ;;ACxEM,SAAU,WAAW,CAAoC,EAC7D,IAAI,EACJ,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,cAAc,EACd,eAAe,EACf,OAAO,GACiB,EAAA;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;AAE7B,IAAA,QACEC,IAAC,CAAA,IAAI,IAAC,YAAY,EAAE,QAAQ,EAC1B,QAAA,EAAA,CAAAD,GAAA,CAAC,QAAQ,EAAA,EAAA,QAAA,EACN,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,oBAAA,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;oBAC7D,MAAM,KAAK,GACT,OAAO,GAAG,CAAC,KAAK,KAAK,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC;oBAEhE,QACEA,IAAC,WAAW,EAAA,EAEV,KAAK,EAAE,GAAG,CAAC,EAAE,EACb,QAAQ,EAAE,UAAU,EAAA,QAAA,EAEpBC,IAAM,CAAA,MAAA,EAAA,EAAA,SAAS,EAAC,yBAAyB,aACtC,GAAG,CAAC,IAAI,EACR,GAAG,CAAC,KAAK,EACT,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI,KACpCD,GAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAC,gDAAgD,EAC7D,QAAA,EAAA,KAAK,EACD,CAAA,CACR,CACI,EAAA,CAAA,EAAA,EAZF,GAAG,CAAC,EAAE,CAaC,EACd;iBACH,CAAC,EACO,CAAA,EACV,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAI;AAChB,gBAAA,MAAM,SAAS,GAAG,GAAG,CAAC,MAAM;sBACxB,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;sBAClD,EAAE,CAAC;gBAEP,QACEA,IAAC,WAAW,EAAA,EAAc,KAAK,EAAE,GAAG,CAAC,EAAE,EAAE,SAAS,EAAC,MAAM,YACtD,GAAG,CAAC,QAAQ,IACXA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA,QAAA,EACvB,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MACxBA,GAAA,CAAC,eAAe,EAEd,EAAA,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAAA,EAR3B,OAAO,CAAC,EAAE,CASf,CACH,CAAC,EACE,CAAA,KAENA,GAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAE,OAAO,YACzB,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACvB,4BAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,gCAAA,OAAO,IAAI,CAAC;AACxC,4BAAA,QACEA,GAAC,CAAA,aAAa,EAEZ,EAAA,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAmB,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAmB,CAAC,EACxC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,CAAC,KACV,QAAQ,CAAC,KAAK,CAAC,IAAmB,EAAE,CAAC,CAAC,EAExC,MAAM,EACJ,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,EAV1C,EAAA,KAAK,CAAC,IAAI,CAYf,EACF;yBACH,CAAC,GACS,CACd,EAAA,EAvCe,GAAG,CAAC,EAAE,CAwCV,EACd;aACH,CAAC,CACG,EAAA,CAAA,EACP;AACJ;;AC/FM,SAAU,cAAc,CAAoC,EAChE,KAAK,EACL,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,MAAM,EACN,cAAc,EACd,eAAe,EACf,OAAO,EACP,QAAQ,EACR,UAAU,GAAG,KAAK,GACS,EAAA;IAC3B,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;AAElD,IAAA,MAAM,iBAAiB,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,UAAU,GAAG,WAAW,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;AACpD,IAAA,MAAM,WAAW,GAAG,WAAW,KAAK,CAAC,CAAC;IACtC,MAAM,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;AAE7E,IAAA,MAAM,UAAU,GAAG,iBAAiB,EAAE,UAAU;AAC9C,UAAE,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC;UAClC,IAAI,CAAC;AAET,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,YAAW;AACxC,QAAA,IAAI,iBAAiB,EAAE,UAAU,EAAE;YACjC,MAAM,WAAW,GAAG,MAAM,iBAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC7D,YAAA,IAAI,CAAC,WAAW;gBAAE,OAAO;SAC1B;QACD,IAAI,UAAU,EAAE;AACd,YAAA,QAAQ,EAAE,CAAC;SACZ;aAAM;YACL,cAAc,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;SAChE;AACH,KAAC,EAAE,CAAC,WAAW,EAAE,iBAAiB,EAAE,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;AAE/E,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,MAAK;AACtC,QAAA,cAAc,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KACjD,EAAE,EAAE,CAAC,CAAC;AAEP,IAAA,MAAM,UAAU,GAAG,iBAAiB,EAAE,MAAM;UACxC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,iBAAiB,CAAC,MAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;UAChE,EAAE,CAAC;AAEP,IAAA,QACEC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,EAAA,QAAA,EAAA,CAExBA,cAAK,SAAS,EAAC,4BAA4B,EACzC,QAAA,EAAA,CAAAA,IAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,qEAAqE,uBACzE,WAAW,GAAG,CAAC,EAAM,MAAA,EAAA,KAAK,CAAC,MAAM,IACtC,EACJA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,8CAA8C,aAC3DA,IACE,CAAA,KAAA,EAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,mCAAmC,YAC9C,iBAAiB,EAAE,KAAK,EACtB,CAAA,EACJ,iBAAiB,EAAE,WAAW,KAC7BA,WAAG,SAAS,EAAC,sCAAsC,EAChD,QAAA,EAAA,iBAAiB,CAAC,WAAW,EAAA,CAC5B,CACL,CACG,EAAA,CAAA,EACNC,cAAK,SAAS,EAAC,yBAAyB,EACtC,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,gDAAgD,YAC7DA,GACE,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,wEAAwE,EAClF,KAAK,EAAE,EAAE,KAAK,EAAE,CAAA,EAAG,eAAe,CAAG,CAAA,CAAA,EAAE,GACvC,EACE,CAAA,EACNC,eAAM,SAAS,EAAC,2CAA2C,EACxD,QAAA,EAAA,CAAA,eAAe,EACX,GAAA,CAAA,EAAA,CAAA,CAAA,EAAA,CACH,IACF,CACF,EAAA,CAAA,EAGND,uBACG,iBAAiB,EAAE,QAAQ,IAC1BA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,YACvB,iBAAiB,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MACtCA,GAAA,CAAC,eAAe,EAEd,EAAA,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAR3B,EAAA,OAAO,CAAC,EAAE,CASf,CACH,CAAC,EAAA,CACE,KAENA,GAAA,CAAC,UAAU,EAAC,EAAA,OAAO,EAAE,OAAO,EAAA,QAAA,EACzB,UAAU,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACxB,wBAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,4BAAA,OAAO,IAAI,CAAC;AACxC,wBAAA,QACEA,GAAC,CAAA,aAAa,EAEZ,EAAA,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAmB,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAmB,CAAC,EACxC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAmB,EAAE,CAAC,CAAC,EACvD,MAAM,EAAE,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,EAPhD,EAAA,KAAK,CAAC,IAAI,CAQf,EACF;AACJ,qBAAC,CAAC,EAAA,CACS,CACd,EAAA,CACG,EAGNC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,sBAAsB,EAAA,QAAA,EAAA,CACnCD,GAAC,CAAA,MAAM,EACL,EAAA,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,WAAW,EAGd,QAAA,EAAA,UAAA,EAAA,CAAA,EACTA,GAAC,CAAA,MAAM,EACL,EAAA,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,QAAQ,EACtC,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,UAAU,KAAK,UAAU,IAAI,UAAU,CAAC,EAAA,QAAA,EAElD,UAAU;AACT,8BAAE,UAAU;AACV,kCAAE,eAAe;AACjB,kCAAE,QAAQ;AACZ,8BAAE,MAAM,EAAA,CACH,CACL,EAAA,CAAA,CAAA,EAAA,CACF,EACN;AACJ;;AC1IM,SAAU,YAAY,CAAoC,EAC9D,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,QAAQ,EACR,UAAU,GAAG,KAAK,EAClB,SAAS,EACT,QAAQ,GAAG,KAAK,EAChB,MAAM,GACmB,EAAA;AACzB,IAAA,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;AAElC,IAAA,MAAM,aAAa,GAAG,OAAO,CAAC,MAAK;AACjC,QAAA,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,UAAU;AAAE,YAAA,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAClE,OAAO,MAAM,CAAC,KAAK,CAAC;KACrB,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAK;AACvC,QAAA,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,UAAU;AAC1C,YAAA,OAAO,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,WAAW,CAAC;KAC3B,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;AAE/B,IAAA,MAAM,cAAc,GAAG,WAAW,CAChC,CAAC,KAAwB,KAAa;AACpC,QAAA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,UAAU;YAC3C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,QAAA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS;AAC1C,YAAA,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QAE9B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAC;AAChD,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACzD,gBAAA,OAAO,KAAK,CAAC;AACf,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AACxD,gBAAA,OAAO,KAAK,CAAC;SAChB;AACD,QAAA,OAAO,IAAI,CAAC;AACd,KAAC,EACD,CAAC,IAAI,CAAC,CACP,CAAC;AAEF,IAAA,MAAM,eAAe,GAAG,WAAW,CACjC,CAAC,KAAwB,KAAa;AACpC,QAAA,IAAI,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;AAC1B,QAAA,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;AAChE,YAAA,OAAO,IAAI,CAAC;QACd,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,SAAS,IAAI,MAAM,CAAC,QAAQ;AAAE,YAAA,OAAO,IAAI,CAAC;AACzE,QAAA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,UAAU;YAC7C,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACrC,QAAA,IAAI,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS;AAC5C,YAAA,OAAO,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC;QAE/B,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,KAAoB,CAAC,CAAC;AAChD,YAAA,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,IAAI,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AAC3D,gBAAA,OAAO,IAAI,CAAC;AACd,YAAA,IACE,GAAG,CAAC,MAAM,KAAK,QAAQ;AACvB,gBAAA,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;AAE9B,gBAAA,OAAO,IAAI,CAAC;SACf;AACD,QAAA,OAAO,KAAK,CAAC;KACd,EACD,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,CAClC,CAAC;IAEF,MAAM,gBAAgB,GAAG,OACvBA,GAAA,CAAC,UAAU,EAAA,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,YAChC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,KAAI;AACpB,YAAA,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;AAAE,gBAAA,OAAO,IAAI,CAAC;AACxC,YAAA,QACEA,GAAC,CAAA,aAAa,EAEZ,EAAA,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,IAAmB,CAAC,EACtC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,IAAmB,CAAC,EACxC,QAAQ,EAAE,eAAe,CAAC,KAAK,CAAC,EAChC,IAAI,EAAE,IAAI,EACV,QAAQ,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC,KAAK,CAAC,IAAmB,EAAE,CAAC,CAAC,EACvD,MAAM,EAAE,MAAM,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,EAPhD,EAAA,KAAK,CAAC,IAAI,CAQf,EACF;SACH,CAAC,EACS,CAAA,CACd,CAAC;IAEF,MAAM,aAAa,GAAG,MAAK;;AAEzB,QAAA,IAAI,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE;YAC9B,QACEA,GAAC,CAAA,cAAc,EACb,EAAA,KAAK,EAAE,MAAM,CAAC,WAAW,EACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,CAAA,EACF;SACH;;AAGD,QAAA,IAAI,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE;YACvB,QACEA,IAAC,WAAW,EAAA,EACV,IAAI,EAAE,MAAM,CAAC,IAAI,EACjB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAChC,OAAO,EAAE,MAAM,CAAC,OAAO,EACvB,CAAA,EACF;SACH;;AAGD,QAAA,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE;AAC3B,YAAA,QACEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAC,WAAW,EAAA,QAAA,EACvB,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,MAC3BA,GAAC,CAAA,eAAe,EAEd,EAAA,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,cAAc,EAC9B,eAAe,EAAE,eAAe,EAR3B,EAAA,OAAO,CAAC,EAAE,CASf,CACH,CAAC,EAAA,CACE,EACN;SACH;;QAGD,OAAO,gBAAgB,EAAE,CAAC;AAC5B,KAAC,CAAC;AAEF,IAAA,MAAM,YAAY,GAAG;AACnB,QAAA,OAAO,EAAE,WAAW;AACpB,QAAA,MAAM,EAAE,WAAW;AACnB,QAAA,OAAO,EAAE,WAAW;AACrB,KAAA,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC,CAAC;;AAG9B,IAAA,MAAM,WAAW,GACf,MAAM,CAAC,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC;IAExD,MAAM,QAAQ,IACZC,IAAA,CAAA,MAAA,EAAA,EACE,QAAQ,EAAE,CAAC,CAAC,KAAI;YACd,CAAC,CAAC,cAAc,EAAE,CAAC;AACnB,YAAA,QAAQ,EAAE,CAAC;AACb,SAAC,EACD,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,SAAS,CAAC,EAAA,QAAA,EAAA,CAErC,CAAC,aAAa,IAAI,mBAAmB,MACpCA,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAC,WAAW,aACvB,aAAa,KACZD,GAAA,CAAA,IAAA,EAAA,EAAI,SAAS,EAAC,uCAAuC,EAClD,QAAA,EAAA,aAAa,GACX,CACN,EACA,mBAAmB,KAClBA,WAAG,SAAS,EAAC,+BAA+B,EAAA,QAAA,EACzC,mBAAmB,EAClB,CAAA,CACL,CACG,EAAA,CAAA,CACP,EAEA,aAAa,EAAE,EAEf,WAAW,KACVA,GAAA,CAAC,WAAW,EACV,EAAA,OAAO,EAAE,MAAM,CAAC,OAAQ,EACxB,QAAQ,EAAE,MAAM,CAAC,eAAe,EAChC,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,UAAU,GACtB,CACH,CAAA,EAAA,CACI,CACR,CAAC;AAEF,IAAA,IAAI,MAAM,CAAC,QAAQ,EAAE;AACnB,QAAA,QACEA,GAAA,CAAC,IAAI,EAAA,EAAA,QAAA,EACHA,IAAC,WAAW,EAAA,EAAC,SAAS,EAAC,MAAM,EAAE,QAAA,EAAA,QAAQ,EAAe,CAAA,EAAA,CACjD,EACP;KACH;AAED,IAAA,OAAO,QAAQ,CAAC;AAClB;;;;"}