@opennsw/jsonforms-renderers 0.2.1 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md ADDED
@@ -0,0 +1,73 @@
1
+ # `@opennsw/jsonforms-renderers`
2
+
3
+ Custom [JSON Schema Form (JSON Forms)](https://jsonforms.io/) renderers for React, styled with [Radix UI Themes](https://www.radix-ui.com/themes).
4
+
5
+ This package provides a collection of JSON Forms controls and layout renderers tailored to match the visual styling, theme, and UX of the OpenNSW portal applications.
6
+
7
+ ## Features
8
+
9
+ - **Radix UI Integration**: All components are constructed using `@radix-ui/themes` and layout elements (`Box`, `Flex`, `Text`, etc.).
10
+ - **Native Date & Time Inputs**: Relies completely on native browser-supported picker interfaces (no heavy external date picker libraries like `react-day-picker` or Popover wrappers), ensuring a fast, lightweight, and responsive experience on desktop and mobile.
11
+ - **Custom File Uploader Control**: A rich, interactive file picker component (`FileControl`) supporting upload progression and state.
12
+ - **Pre-configured Tester Rankings**: Simplifies registration by bundling ready-to-use ranks and testers.
13
+
14
+ ## Available Renderers
15
+
16
+ ### Controls
17
+
18
+ - **[DateControl](src/renderers/DateControl.tsx)**: Formats `date`, `time`, and `date-time` inputs. Combines native inputs that split space equally in `date-time` combination mode and expand to `100%` container width otherwise.
19
+ - **[TextControl](src/renderers/TextControl.tsx)**: Handles standard string schemas with optional placeholders.
20
+ - **[NumberControl](src/renderers/NumberControl.tsx)**: Handles numeric and integer inputs.
21
+ - **[BooleanControl](src/renderers/BooleanControl.tsx)**: Toggle switch control for boolean values.
22
+ - **[RadioControl](src/renderers/RadioControl.tsx)**: Option picker rendered as radio group buttons.
23
+ - **[SelectControl](src/renderers/SelectControl.tsx)**: Select drop-down control for `enum` or `oneOf` schemas.
24
+ - **[FileControl](src/renderers/FileControl.tsx)**: File picker control supporting custom attachments.
25
+
26
+ ### Layouts
27
+
28
+ - **Vertical & Horizontal Layouts**: Renders standard JSON Forms layouts (`VerticalLayout`, `HorizontalLayout`).
29
+ - **Group Layout**: Standard boxed grouping for forms sections.
30
+ - **Categorization Layout**: Renders category schemas using tabbed views powered by Radix `Tabs.Root`.
31
+
32
+ ---
33
+
34
+ ## Installation & Setup
35
+
36
+ To use the custom renderers, register them inside the `<JsonForms>` provider in your React application:
37
+
38
+ ```tsx
39
+ import { JsonForms } from '@jsonforms/react'
40
+ import {
41
+ materialCells, // fallback cells
42
+ } from '@jsonforms/material-renderers' // or other fallbacks
43
+ import openNswRenderers from '@opennsw/jsonforms-renderers'
44
+
45
+ function App() {
46
+ const [data, setData] = useState({})
47
+
48
+ return (
49
+ <JsonForms
50
+ schema={schema}
51
+ uischema={uischema}
52
+ data={data}
53
+ renderers={openNswRenderers}
54
+ onChange={({ data }) => setData(data)}
55
+ />
56
+ )
57
+ }
58
+ ```
59
+
60
+ ## Development
61
+
62
+ All standard commands should be executed from the portals monorepo root workspace using `pnpm`:
63
+
64
+ ```bash
65
+ # Build the renderers package
66
+ pnpm --filter @opennsw/jsonforms-renderers build
67
+
68
+ # Run TypeScript type check
69
+ pnpm --filter @opennsw/jsonforms-renderers type-check
70
+
71
+ # Lint files
72
+ pnpm --filter @opennsw/jsonforms-renderers lint
73
+ ```
package/dist/index.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare const ArrayControl: ComponentType<OwnPropsOfControl>;
14
14
 
15
15
  export declare const ArrayControlTester: (uischema: UISchemaElement, schema: JsonSchema, context: TesterContext) => number;
16
16
 
17
- export declare const BooleanControl: ({ data, handleChange, path, label, required, errors, schema, enabled, }: ControlProps) => JSX.Element;
17
+ export declare const BooleanControl: ({ data, handleChange, path, label, required, errors, schema, enabled, visible, }: ControlProps) => JSX.Element | null;
18
18
 
19
19
  export declare const BooleanControlTester: RankedTester;
20
20
 
@@ -22,11 +22,11 @@ export declare interface CategorizationLayoutProps extends LayoutProps {
22
22
  data: any;
23
23
  }
24
24
 
25
- export declare const CategorizationLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled, }: CategorizationLayoutProps) => JSX.Element | null;
25
+ export declare const CategorizationLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled, visible, }: CategorizationLayoutProps) => JSX.Element | null;
26
26
 
27
27
  export declare const CategorizationLayoutTester: RankedTester;
28
28
 
29
- export declare const DateControl: ({ data, handleChange, path, label, required, errors, schema, enabled }: ControlProps) => JSX.Element;
29
+ export declare const DateControl: ({ data, handleChange, path, label, required, errors, schema, enabled, visible, }: ControlProps) => JSX.Element | null;
30
30
 
31
31
  export declare const DateControlTester: RankedTester;
32
32
 
@@ -41,11 +41,13 @@ export declare const FileControlTester: (uischema: UISchemaElement, schema: Json
41
41
 
42
42
  export declare type GetDownloadUrl = (key: string) => Promise<DownloadUrlResult>;
43
43
 
44
- export declare const GroupLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled }: LayoutProps) => JSX.Element;
44
+ export declare const getErrorMessage: (errors: string, label?: string) => string;
45
+
46
+ export declare const GroupLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled, visible, }: LayoutProps) => JSX.Element | null;
45
47
 
46
48
  export declare const GroupLayoutTester: RankedTester;
47
49
 
48
- export declare const HorizontalLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled }: LayoutProps) => JSX.Element;
50
+ export declare const HorizontalLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled, visible, }: LayoutProps) => JSX.Element | null;
49
51
 
50
52
  export declare const HorizontalLayoutTester: RankedTester;
51
53
 
@@ -53,11 +55,11 @@ export declare const LabelRenderer: ({ uischema, visible }: any) => JSX.Element
53
55
 
54
56
  export declare const LabelTester: RankedTester;
55
57
 
56
- export declare const NumberControl: ({ data, handleChange, path, label, required, errors, uischema, schema, enabled, }: ControlProps) => JSX.Element;
58
+ export declare const NumberControl: ({ data, handleChange, path, label, required, errors, uischema, schema, enabled, visible, }: ControlProps) => JSX.Element | null;
57
59
 
58
60
  export declare const NumberControlTester: RankedTester;
59
61
 
60
- export declare const RadioControl: ({ data, handleChange, path, label, required, errors, schema, enabled }: ControlProps) => JSX.Element;
62
+ export declare const RadioControl: ({ data, handleChange, path, label, required, errors, schema, enabled, visible, }: ControlProps) => JSX.Element | null;
61
63
 
62
64
  export declare const RadioControlTester: RankedTester;
63
65
 
@@ -66,14 +68,14 @@ export declare const radixRenderers: ({
66
68
  renderer: ComponentType<OwnPropsOfControl>;
67
69
  } | {
68
70
  tester: RankedTester;
69
- renderer: ({ uischema, schema, path, renderers, cells, enabled, }: CategorizationLayoutProps) => JSX.Element | null;
71
+ renderer: ({ uischema, schema, path, renderers, cells, enabled, visible, }: CategorizationLayoutProps) => JSX.Element | null;
70
72
  })[];
71
73
 
72
- export declare const SelectControl: ({ data, handleChange, path, label, required, errors, schema, uischema, enabled, }: ControlProps) => JSX.Element;
74
+ export declare const SelectControl: ({ data, handleChange, path, label, required, errors, schema, uischema, enabled, visible, }: ControlProps) => JSX.Element | null;
73
75
 
74
76
  export declare const SelectControlTester: RankedTester;
75
77
 
76
- export declare const TextControl: ({ data, handleChange, path, label, required, errors, uischema, schema, enabled, }: ControlProps) => JSX.Element;
78
+ export declare const TextControl: ({ data, handleChange, path, label, required, errors, uischema, schema, enabled, visible, }: ControlProps) => JSX.Element | null;
77
79
 
78
80
  export declare const TextControlTester: RankedTester;
79
81
 
@@ -101,7 +103,7 @@ export declare interface UploadResponse {
101
103
 
102
104
  export declare function useUpload(): UploadContextValue | null;
103
105
 
104
- export declare const VerticalLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled }: LayoutProps) => JSX.Element;
106
+ export declare const VerticalLayoutRenderer: ({ uischema, schema, path, renderers, cells, enabled, visible, }: LayoutProps) => JSX.Element | null;
105
107
 
106
108
  export declare const VerticalLayoutTester: RankedTester;
107
109
 
@@ -1 +1 @@
1
- /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-blue-50:oklch(97% .014 254.604);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--spacing:.25rem;--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.mt-1{margin-top:calc(var(--spacing)*1)}.block{display:block}.flex{display:flex}.hidden{display:none}.rounded-lg{border-radius:var(--radius-lg)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-300{border-color:var(--color-red-300)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-red-50{background-color:var(--color-red-50)}.p-6{padding:calc(var(--spacing)*6)}.text-center{text-align:center}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-gray-500{color:var(--color-gray-500)}.uppercase{text-transform:uppercase}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
1
+ /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-duration:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-300:oklch(80.8% .114 19.571);--color-blue-50:oklch(97% .014 254.604);--color-blue-400:oklch(70.7% .165 254.624);--color-blue-500:oklch(62.3% .214 259.815);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-500:oklch(55.1% .027 264.364);--spacing:.25rem;--font-weight-semibold:600;--tracking-wide:.025em;--radius-lg:.5rem;--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sticky{position:sticky}.container{width:100%}@media(min-width:40rem){.container{max-width:40rem}}@media(min-width:48rem){.container{max-width:48rem}}@media(min-width:64rem){.container{max-width:64rem}}@media(min-width:80rem){.container{max-width:80rem}}@media(min-width:96rem){.container{max-width:96rem}}.mt-1{margin-top:calc(var(--spacing)*1)}.block{display:block}.flex{display:flex}.hidden{display:none}.resize{resize:both}.rounded-lg{border-radius:var(--radius-lg)}.border-2{border-style:var(--tw-border-style);border-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-blue-500{border-color:var(--color-blue-500)}.border-gray-300{border-color:var(--color-gray-300)}.border-red-300{border-color:var(--color-red-300)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-red-50{background-color:var(--color-red-50)}.p-6{padding:calc(var(--spacing)*6)}.text-center{text-align:center}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.text-gray-500{color:var(--color-gray-500)}.uppercase{text-transform:uppercase}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}@media(hover:hover){.hover\:border-blue-400:hover{border-color:var(--color-blue-400)}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}}}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
@@ -1 +1,3 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),v=require("react"),c=require("@jsonforms/core"),f=require("@jsonforms/react"),r=require("@radix-ui/themes"),L=require("@radix-ui/react-icons"),G=v.createContext(null);function Fe({children:o,onUpload:n,getDownloadUrl:t}){const m={onUpload:n,getDownloadUrl:t};return e.jsx(G.Provider,{value:m,children:o})}function H(){return v.useContext(G)}const M=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,uischema:i,schema:p,enabled:a})=>{var b;const h=s.length===0;return e.jsx(r.Box,{mb:"4",children:e.jsxs(r.Flex,{direction:"column",gap:"1",children:[e.jsxs(r.Text,{as:"label",size:"2",weight:"bold",htmlFor:t,children:[m," ",g&&e.jsx(r.Text,{color:"red",children:"*"})]}),e.jsx(r.TextField.Root,{value:o||"",onChange:d=>n(t,d.target.value),disabled:!a,placeholder:(b=i.options)==null?void 0:b.placeholder,color:h?void 0:"red",id:t}),!h&&s!=="is a required property"&&e.jsx(r.Text,{color:"red",size:"1",children:s}),p.description&&e.jsx(r.Text,{size:"1",color:"gray",children:p.description})]})})},K=c.rankWith(1,c.isStringControl),we=f.withJsonFormsControlProps(M),_=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,uischema:i,schema:p,enabled:a})=>{var d;const h=s.length===0,b=u=>{if(u===""){n(t,void 0);return}const x=Number(u);isNaN(x)||n(t,x)};return e.jsx(r.Box,{mb:"4",children:e.jsxs(r.Flex,{direction:"column",gap:"1",children:[e.jsxs(r.Text,{as:"label",size:"2",weight:"bold",htmlFor:t,children:[m," ",g&&e.jsx(r.Text,{color:"red",children:"*"})]}),e.jsx(r.TextField.Root,{type:"number",value:o??"",onChange:u=>b(u.target.value),disabled:!a,placeholder:(d=i.options)==null?void 0:d.placeholder,color:h?void 0:"red",id:t}),!h&&s!=="is a required property"&&e.jsx(r.Text,{color:"red",size:"1",children:s}),p.description&&e.jsx(r.Text,{size:"1",color:"gray",children:p.description})]})})},Z=c.rankWith(2,c.or(c.isNumberControl,c.isIntegerControl)),ze=f.withJsonFormsControlProps(_),Q=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,schema:i,enabled:p})=>{const a=s.length===0;return e.jsxs(r.Box,{mb:"4",children:[e.jsxs(r.Flex,{gap:"2",align:"center",children:[e.jsx(r.Checkbox,{checked:!!o,onCheckedChange:h=>n(t,h===!0),disabled:!p,id:t}),e.jsxs(r.Text,{as:"label",size:"2",htmlFor:t,children:[m," ",g&&"*"]})]}),!a&&e.jsx(r.Text,{color:"red",size:"1",className:"block mt-1",children:s}),i.description&&e.jsx(r.Text,{size:"1",color:"gray",className:"block mt-1",children:i.description})]})},X=c.rankWith(2,c.isBooleanControl),ke=f.withJsonFormsControlProps(Q),Y=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,schema:i,enabled:p})=>{const a=s.length===0;let h=[];i.enum?h=i.enum.map(d=>({value:d,label:String(d)})):i.oneOf&&(h=i.oneOf.map(d=>({value:d.const,label:d.title||String(d.const)})));const b=o;return e.jsx(r.Box,{mb:"4",children:e.jsxs(r.Flex,{direction:"column",gap:"1",children:[e.jsxs(r.Text,{as:"div",size:"2",weight:"bold",children:[m," ",g&&e.jsx(r.Text,{color:"red",children:"*"})]}),e.jsx(r.RadioGroup.Root,{value:b!==void 0?String(b):"",onValueChange:d=>{const u=h.find(x=>String(x.value)===d);u&&n(t,u.value)},disabled:!p,children:e.jsx(r.Flex,{direction:"row",style:{flexWrap:"wrap",columnGap:"clamp(14px, 3vw, 36px)",rowGap:"clamp(8px, 1.6vw, 14px)"},children:h.map(d=>e.jsxs(r.Flex,{align:"center",gap:"2",style:{minWidth:"max-content"},children:[e.jsx(r.RadioGroup.Item,{value:String(d.value)}),e.jsx(r.Text,{size:"2",color:p?void 0:"gray",children:d.label})]},String(d.value)))})}),!a&&s!=="is a required property"&&e.jsx(r.Text,{color:"red",size:"1",children:s}),i.description&&e.jsx(r.Text,{size:"1",color:"gray",children:i.description})]})})},ee=(o,n,t)=>{var g;return c.or(c.isEnumControl,c.isOneOfControl)(o,n,t)&&((g=o==null?void 0:o.options)==null?void 0:g.format)==="radio"?3:-1},Re=f.withJsonFormsControlProps(Y),re=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,schema:i,uischema:p,enabled:a})=>{var u;const h=s.length===0;let b=[];i.enum?b=i.enum.map(x=>({value:String(x),label:String(x)})):i.oneOf&&(b=i.oneOf.map(x=>({value:String(x.const),label:x.title||String(x.const)})));const d=o!==void 0?String(o):"";return e.jsx(r.Box,{mb:"4",children:e.jsxs(r.Flex,{direction:"column",gap:"1",children:[e.jsxs(r.Text,{as:"label",size:"2",weight:"bold",htmlFor:t,children:[m," ",g&&e.jsx(r.Text,{color:"red",children:"*"})]}),e.jsxs(r.Select.Root,{value:d,onValueChange:x=>n(t,x),disabled:!a,children:[e.jsx(r.Select.Trigger,{placeholder:((u=p.options)==null?void 0:u.placeholder)||"Select an option",color:h?void 0:"red",id:t}),e.jsx(r.Select.Content,{children:b.map(x=>e.jsx(r.Select.Item,{value:x.value,children:x.label},x.value))})]}),!h&&s!=="is a required property"&&e.jsx(r.Text,{color:"red",size:"1",children:s}),i.description&&e.jsx(r.Text,{size:"1",color:"gray",children:i.description})]})})},te=c.rankWith(2,c.or(c.isEnumControl,c.isOneOfControl)),Se=f.withJsonFormsControlProps(re),oe=({data:o,handleChange:n,path:t,label:m,required:g,errors:s,schema:i,enabled:p})=>{const a=s.length===0;return e.jsx(r.Box,{mb:"4",children:e.jsxs(r.Flex,{direction:"column",gap:"1",children:[e.jsxs(r.Text,{as:"label",size:"2",weight:"bold",htmlFor:t,children:[m," ",g&&e.jsx(r.Text,{color:"red",children:"*"})]}),e.jsx(r.TextField.Root,{type:"date",value:o||"",onChange:h=>n(t,h.target.value),disabled:!p,color:a?void 0:"red",id:t}),!a&&s!=="is a required property"&&e.jsx(r.Text,{color:"red",size:"1",children:s}),i.description&&e.jsx(r.Text,{size:"1",color:"gray",children:i.description})]})})},ne=c.rankWith(2,c.isDateControl),$e=f.withJsonFormsControlProps(oe),le=({uischema:o,schema:n,path:t,renderers:m,cells:g,enabled:s})=>{const p=o.elements;return e.jsx(r.Flex,{direction:"column",gap:"4",children:p.map((a,h)=>e.jsx(f.JsonFormsDispatch,{uischema:a,schema:n,path:t,renderers:m,cells:g,enabled:s},`${t}-${h}`))})},ie=c.rankWith(1,c.uiTypeIs("VerticalLayout")),se=({uischema:o,schema:n,path:t,renderers:m,cells:g,enabled:s})=>{const p=o.elements;return e.jsx(r.Flex,{direction:"row",gap:"4",children:p.map((a,h)=>e.jsx(r.Box,{style:{flex:1},children:e.jsx(f.JsonFormsDispatch,{uischema:a,schema:n,path:t,renderers:m,cells:g,enabled:s})},`${t}-${h}`))})},ce=c.rankWith(1,c.uiTypeIs("HorizontalLayout")),ae=({uischema:o,schema:n,path:t,renderers:m,cells:g,enabled:s})=>{const i=o,p=i.elements;return e.jsxs(r.Box,{mb:"6",children:[i.label&&e.jsx(r.Heading,{size:"3",mb:"3",className:"text-gray-500 uppercase tracking-wide font-semibold",children:i.label}),e.jsx(r.Flex,{direction:"column",gap:"4",children:p.map((a,h)=>e.jsx(f.JsonFormsDispatch,{uischema:a,schema:n,path:t,renderers:m,cells:g,enabled:s},`${t}-${h}`))})]})},de=c.rankWith(1,c.uiTypeIs("Group")),ue=({uischema:o,schema:n,path:t,renderers:m,cells:g,enabled:s})=>{var d;const p=o.elements.filter(u=>u.type==="Category"),[a,h]=v.useState(((d=p[0])==null?void 0:d.label)||"");if(!p.length)return null;const b=p.find(u=>u.label===a)?a:p[0].label;return e.jsxs(r.Tabs.Root,{value:b,onValueChange:h,children:[e.jsx(r.Tabs.List,{children:p.map((u,x)=>e.jsx(r.Tabs.Trigger,{value:u.label,children:u.label},`${t}-${x}`))}),e.jsx(r.Box,{pt:"3",children:p.map((u,x)=>e.jsx(r.Tabs.Content,{value:u.label,children:e.jsx(r.Flex,{direction:"column",gap:"4",children:u.elements.map((F,C)=>e.jsx(f.JsonFormsDispatch,{uischema:F,schema:n,path:t,renderers:m,cells:g,enabled:s},`${t}-${x}-${C}`))})},`${t}-${x}`))})]})},xe=c.rankWith(1,c.uiTypeIs("Categorization"));function Le(o){return o?Array.isArray(o)?o:[o]:[]}function P(o){return o>=1024*1024?`${(o/(1024*1024)).toFixed(0)} MB`:o>=1024?`${(o/1024).toFixed(0)} KB`:`${o} B`}function V(o){return o.split(",").map(n=>{if(n=n.trim(),n.endsWith("/*"))return n.split("/")[0].toUpperCase()+"S";if(n.startsWith("."))return n.slice(1).toUpperCase();const t=n.split("/")[1];return t?t.toUpperCase():n}).join(", ")}const Be=({data:o,handleChange:n,path:t,label:m,required:g,uischema:s,schema:i,enabled:p})=>{const a=H(),h=(i==null?void 0:i["x-file"])??{},b=(s==null?void 0:s.options)??{},d=h.maxFiles??b.maxFiles??1,u=h.maxSize??b.maxSize??5*1024*1024,x=h.accept??b.accept??"image/*,application/pdf",F=d>1,C=p!==!1,[N,S]=v.useState(!1),[T,w]=v.useState(null),[D,I]=v.useState({}),W=v.useRef(new Set),U=v.useRef(null),z=Le(o),O=z.length>=d;v.useEffect(()=>()=>{W.current.forEach(l=>URL.revokeObjectURL(l)),W.current.clear()},[]);const q=v.useCallback(async l=>{if(w(null),z.length>=d){w(`Maximum ${d} file${d>1?"s":""} allowed.`);return}if(l.size>u){w(`File exceeds the ${P(u)} limit.`);return}if(!x.split(",").map(j=>j.trim()).some(j=>j==="*"||j==="*/*"?!0:j.endsWith("/*")?l.type.startsWith(j.slice(0,-1)):j.startsWith(".")?l.name.toLowerCase().endsWith(j.toLowerCase()):l.type===j)){w(`Invalid type. Accepted: ${V(x)}`);return}if(!(a!=null&&a.onUpload)){w("Upload service not configured.");return}try{const j=await a.onUpload(l),R=URL.createObjectURL(l);W.current.add(R);const $={key:j.key,name:j.name??l.name,blobUrl:R};I(B=>({...B,[j.key]:$}));const A=[...z,j.key];n(t,F?A:A[0])}catch{w("Upload failed. Please try again."),U.current&&(U.current.value="")}},[z,d,u,x,a,t,n,F]),E=l=>{l.preventDefault(),l.stopPropagation(),!(!C||O)&&S(l.type==="dragenter"||l.type==="dragover")},be=l=>{var y;l.preventDefault(),l.stopPropagation(),S(!1),!(!C||O)&&(y=l.dataTransfer.files)!=null&&y[0]&&q(l.dataTransfer.files[0])},ye=l=>{var y;(y=l.target.files)!=null&&y[0]&&(q(l.target.files[0]),l.target.value="")},fe=l=>{if(!C)return;I(k=>{var $;const j={...k},R=($=j[l])==null?void 0:$.blobUrl;return R&&(URL.revokeObjectURL(R),W.current.delete(R)),delete j[l],j});const y=z.filter(k=>k!==l);n(t,F?y.length>0?y:null:y[0]??null)},Ce=async(l,y)=>{var R,$,A;l.preventDefault();const k=(R=D[y])==null?void 0:R.blobUrl;if(k){($=window.open(k,"_blank","noopener,noreferrer"))==null||$.focus();return}const j=window.open("","_blank");if(j)try{const B=await((A=a==null?void 0:a.getDownloadUrl)==null?void 0:A.call(a,y));B!=null&&B.url?j.location.href=B.url:j.close()}catch{j.close()}};if(!C&&z.length===0)return null;const Te=d-z.length,ve=C&&!O;return e.jsxs(r.Box,{mb:"4",children:[e.jsxs(r.Flex,{align:"center",justify:"between",mb:"2",children:[e.jsxs(r.Text,{as:"label",size:"2",weight:"bold",children:[m,g&&e.jsx(r.Text,{color:"red",children:" *"})]}),e.jsx(r.Text,{size:"1",color:"gray",children:F?`Up to ${d} files · ${P(u)} each · ${V(x)}`:`${P(u)} · ${V(x)}`})]}),z.map(l=>{var y;return e.jsx(r.Card,{size:"2",variant:"surface",mb:"2",children:e.jsxs(r.Flex,{align:"center",gap:"3",children:[e.jsx(r.Box,{style:{background:"var(--blue-3)",padding:8,borderRadius:6,color:"var(--blue-9)",flexShrink:0},children:e.jsx(L.FileTextIcon,{width:"20",height:"20"})}),e.jsx(r.Box,{style:{flex:1,overflow:"hidden"},children:e.jsx(r.Text,{size:"2",weight:"bold",style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:((y=D[l])==null?void 0:y.name)??"Uploaded File"})}),e.jsxs(r.Flex,{align:"center",gap:"2",style:{flexShrink:0},children:[e.jsx(r.Button,{variant:"soft",color:"blue",size:"1",onClick:k=>Ce(k,l),children:"View"}),e.jsx(L.CheckCircledIcon,{style:{color:"var(--green-9)",width:18,height:18}}),C&&e.jsx(r.IconButton,{variant:"ghost",color:"gray",onClick:()=>fe(l),children:e.jsx(L.Cross2Icon,{})})]})]})},l)}),ve&&e.jsxs("div",{role:"button",tabIndex:0,onClick:()=>{var l;return(l=U.current)==null?void 0:l.click()},onKeyDown:l=>{var y;(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),(y=U.current)==null||y.click())},onDragEnter:E,onDragLeave:E,onDragOver:E,onDrop:be,style:{cursor:"pointer"},className:["border-2 border-dashed rounded-lg p-6 text-center","transition-all duration-200 ease-in-out",N?"border-blue-500 bg-blue-50":T?"border-red-300 bg-red-50":"border-gray-300 hover:border-blue-400 hover:bg-gray-50"].join(" "),children:[e.jsx("input",{ref:U,type:"file",style:{display:"none"},accept:x,onChange:ye}),e.jsx(r.Flex,{direction:"column",align:"center",gap:"2",children:T?e.jsxs(e.Fragment,{children:[e.jsx(L.ExclamationTriangleIcon,{style:{width:32,height:32,color:"var(--red-9)"}}),e.jsx(r.Text,{size:"2",color:"red",weight:"medium",children:T}),e.jsx(r.Text,{size:"1",color:"gray",children:"Click to try again"})]}):e.jsxs(e.Fragment,{children:[e.jsx(L.UploadIcon,{style:{width:32,height:32,color:"var(--gray-8)"}}),e.jsx(r.Text,{size:"2",weight:"medium",children:z.length>0?`Add another file (${Te} remaining)`:"Click to upload or drag and drop"}),e.jsxs(r.Text,{size:"1",color:"gray",children:[P(u)," max · ",V(x)]})]})})]}),C&&O&&F&&e.jsxs(r.Text,{size:"1",color:"gray",mt:"1",style:{display:"block",textAlign:"center"},children:["Maximum ",d," files uploaded. Remove one to replace it."]})]})},pe=f.withJsonFormsControlProps(Be),he=c.rankWith(10,c.and(c.schemaMatches(o=>{if(o.type==="string"&&o.format==="file")return!0;if(o.type==="array"){const n=o.items;return(n==null?void 0:n.type)==="string"&&(n==null?void 0:n.format)==="file"}return!1}))),De=({data:o,path:n,schema:t,uischema:m,enabled:g,visible:s,addItem:i,removeItems:p,rootSchema:a,arraySchema:h})=>{const b=h?t:t.items,d=h||t;if(s===!1||!b||typeof b!="object"||Array.isArray(b))return null;const u=b,x=Array.isArray(o)?o:[],F=d.title||"Array Items",C=()=>{const S=c.createDefaultValue(u,a);i&&i(n,S)()},N=S=>{if(p){const T=p(n,[S]);T&&T()}};return e.jsx(r.Box,{mb:"6",children:e.jsxs(r.Flex,{direction:"column",gap:"4",children:[e.jsx(r.Text,{as:"div",size:"4",weight:"bold",children:F}),x.length===0&&e.jsx(r.Box,{py:"4",px:"4",style:{backgroundColor:"var(--gray-3)",borderRadius:"var(--radius-3)"},children:e.jsx(r.Text,{size:"2",color:"gray",children:"No items have been added yet."})}),x.map((S,T)=>{var D;const w=`${n}.${T}`;return e.jsx(r.Card,{size:"3",variant:"surface",children:e.jsxs(r.Flex,{direction:"column",gap:"4",children:[e.jsxs(r.Flex,{justify:"between",align:"center",children:[e.jsxs(r.Text,{size:"3",weight:"bold",children:["Item ",T+1]}),g&&e.jsxs(r.Button,{type:"button",color:"red",variant:"soft",onClick:()=>N(T),title:"Remove item",children:[e.jsx(L.TrashIcon,{}),"Remove"]})]}),e.jsx(r.Box,{children:e.jsx(f.JsonFormsDispatch,{schema:u,uischema:((D=m.options)==null?void 0:D.detail)||(u.type==="object"||u.properties?{type:"VerticalLayout",elements:Object.keys(u.properties||{}).map(I=>({type:"Control",scope:`#/properties/${I}`}))}:{type:"Control",scope:"#"}),path:w,enabled:g,renderers:void 0,cells:void 0})})]})},w)}),g&&e.jsx(r.Box,{mt:"2",children:e.jsxs(r.Button,{type:"button",variant:"surface",onClick:C,children:[e.jsx(L.PlusIcon,{}),"Add Item"]})})]})})},J=f.withJsonFormsArrayControlProps(De),ge=c.rankWith(3,c.isObjectArrayControl),me=({uischema:o,visible:n})=>{const t=o;return n===!1?null:e.jsx(r.Box,{mb:"4",children:e.jsx(r.Heading,{size:"4",children:t.text})})},je=c.rankWith(1,c.uiTypeIs("Label")),Ue=c.rankWith(3,c.isPrimitiveArrayControl),Ae=[{tester:K,renderer:we},{tester:Z,renderer:ze},{tester:X,renderer:ke},{tester:ee,renderer:Re},{tester:te,renderer:Se},{tester:ne,renderer:$e},{tester:ie,renderer:le},{tester:ce,renderer:se},{tester:de,renderer:ae},{tester:xe,renderer:ue},{tester:he,renderer:pe},{tester:ge,renderer:J},{tester:Ue,renderer:J},{tester:je,renderer:me}];exports.ArrayControl=J;exports.ArrayControlTester=ge;exports.BooleanControl=Q;exports.BooleanControlTester=X;exports.CategorizationLayoutRenderer=ue;exports.CategorizationLayoutTester=xe;exports.DateControl=oe;exports.DateControlTester=ne;exports.FileControl=pe;exports.FileControlTester=he;exports.GroupLayoutRenderer=ae;exports.GroupLayoutTester=de;exports.HorizontalLayoutRenderer=se;exports.HorizontalLayoutTester=ce;exports.LabelRenderer=me;exports.LabelTester=je;exports.NumberControl=_;exports.NumberControlTester=Z;exports.RadioControl=Y;exports.RadioControlTester=ee;exports.SelectControl=re;exports.SelectControlTester=te;exports.TextControl=M;exports.TextControlTester=K;exports.UploadProvider=Fe;exports.VerticalLayoutRenderer=le;exports.VerticalLayoutTester=ie;exports.radixRenderers=Ae;exports.useUpload=H;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("react/jsx-runtime"),R=require("react"),C=require("@jsonforms/core"),E=require("@jsonforms/react"),t=require("@radix-ui/themes"),Z=require("@radix-ui/react-icons"),ae=R.createContext(null);function Ae({children:s,onUpload:n,getDownloadUrl:r}){const y={onUpload:n,getDownloadUrl:r};return e.jsx(ae.Provider,{value:y,children:s})}function ce(){return R.useContext(ae)}const q=(s,n)=>s?s.split(`
2
+ `).map(r=>r.trim()==="is a required property"?`${n||"This field"} is required`:r).join(`
3
+ `):"",ue=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,uischema:u,schema:S,enabled:h,visible:x=!0})=>{var D;if(R.useEffect(()=>{x===!1&&n(r,void 0)},[x,r,n]),x===!1)return null;const f=w.length===0;return e.jsx(t.Box,{mb:"4",children:e.jsxs(t.Flex,{direction:"column",gap:"1",children:[e.jsxs(t.Text,{as:"label",size:"2",weight:"bold",htmlFor:r,children:[y," ",F&&e.jsx(t.Text,{color:"red",children:"*"})]}),e.jsx(t.TextField.Root,{value:s||"",onChange:b=>n(r,b.target.value),disabled:!h,placeholder:(D=u.options)==null?void 0:D.placeholder,color:f?void 0:"red",id:r}),!f&&e.jsx(t.Text,{color:"red",size:"1",children:q(w,y)}),S.description&&e.jsx(t.Text,{size:"1",color:"gray",children:S.description})]})})},de=C.rankWith(1,C.isStringControl),Be=E.withJsonFormsControlProps(ue),fe=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,uischema:u,schema:S,enabled:h,visible:x=!0})=>{var b;if(R.useEffect(()=>{x===!1&&n(r,void 0)},[x,r,n]),x===!1)return null;const f=w.length===0,D=v=>{if(v===""){n(r,void 0);return}const m=Number(v);isNaN(m)||n(r,m)};return e.jsx(t.Box,{mb:"4",children:e.jsxs(t.Flex,{direction:"column",gap:"1",children:[e.jsxs(t.Text,{as:"label",size:"2",weight:"bold",htmlFor:r,children:[y," ",F&&e.jsx(t.Text,{color:"red",children:"*"})]}),e.jsx(t.TextField.Root,{type:"number",value:s??"",onChange:v=>D(v.target.value),disabled:!h,placeholder:(b=u.options)==null?void 0:b.placeholder,color:f?void 0:"red",id:r}),!f&&e.jsx(t.Text,{color:"red",size:"1",children:q(w,y)}),S.description&&e.jsx(t.Text,{size:"1",color:"gray",children:S.description})]})})},xe=C.rankWith(2,C.or(C.isNumberControl,C.isIntegerControl)),Ie=E.withJsonFormsControlProps(fe),he=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,schema:u,enabled:S,visible:h=!0})=>{if(R.useEffect(()=>{h===!1&&n(r,void 0)},[h,r,n]),h===!1)return null;const x=w.length===0;return e.jsxs(t.Box,{mb:"4",children:[e.jsxs(t.Flex,{gap:"2",align:"center",children:[e.jsx(t.Checkbox,{checked:!!s,onCheckedChange:f=>n(r,f===!0),disabled:!S,id:r}),e.jsxs(t.Text,{as:"label",size:"2",htmlFor:r,children:[y," ",F&&"*"]})]}),!x&&e.jsx(t.Text,{color:"red",size:"1",className:"block mt-1",children:q(w,y)}),u.description&&e.jsx(t.Text,{size:"1",color:"gray",className:"block mt-1",children:u.description})]})},me=C.rankWith(2,C.isBooleanControl),Ue=E.withJsonFormsControlProps(he),pe=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,schema:u,enabled:S,visible:h=!0})=>{if(R.useEffect(()=>{h===!1&&n(r,void 0)},[h,r,n]),h===!1)return null;const x=w.length===0;let f=[];u.enum?f=u.enum.map(b=>({value:b,label:String(b)})):u.oneOf&&(f=u.oneOf.map(b=>({value:b.const,label:b.title||String(b.const)})));const D=s;return e.jsx(t.Box,{mb:"4",children:e.jsxs(t.Flex,{direction:"column",gap:"1",children:[e.jsxs(t.Text,{as:"div",size:"2",weight:"bold",children:[y," ",F&&e.jsx(t.Text,{color:"red",children:"*"})]}),e.jsx(t.RadioGroup.Root,{value:D!==void 0?String(D):"",onValueChange:b=>{const v=f.find(m=>String(m.value)===b);v&&n(r,v.value)},disabled:!S,children:e.jsx(t.Flex,{direction:"row",style:{flexWrap:"wrap",columnGap:"clamp(14px, 3vw, 36px)",rowGap:"clamp(8px, 1.6vw, 14px)"},children:f.map(b=>e.jsxs(t.Flex,{align:"center",gap:"2",style:{minWidth:"max-content"},children:[e.jsx(t.RadioGroup.Item,{value:String(b.value)}),e.jsx(t.Text,{size:"2",color:S?void 0:"gray",children:b.label})]},String(b.value)))})}),!x&&e.jsx(t.Text,{color:"red",size:"1",children:q(w,y)}),u.description&&e.jsx(t.Text,{size:"1",color:"gray",children:u.description})]})})},ge=(s,n,r)=>{var F;return C.or(C.isEnumControl,C.isOneOfControl)(s,n,r)&&((F=s==null?void 0:s.options)==null?void 0:F.format)==="radio"?3:-1},We=E.withJsonFormsControlProps(pe),ye=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,schema:u,uischema:S,enabled:h,visible:x=!0})=>{var v;if(R.useEffect(()=>{x===!1&&n(r,void 0)},[x,r,n]),x===!1)return null;const f=w.length===0;let D=[];u.enum?D=u.enum.map(m=>({value:String(m),label:String(m)})):u.oneOf&&(D=u.oneOf.map(m=>({value:String(m.const),label:m.title||String(m.const)})));const b=s!==void 0?String(s):"";return e.jsx(t.Box,{mb:"4",children:e.jsxs(t.Flex,{direction:"column",gap:"1",children:[e.jsxs(t.Text,{as:"label",size:"2",weight:"bold",htmlFor:r,children:[y," ",F&&e.jsx(t.Text,{color:"red",children:"*"})]}),e.jsxs(t.Select.Root,{value:b,onValueChange:m=>n(r,m),disabled:!h,children:[e.jsx(t.Select.Trigger,{placeholder:((v=S.options)==null?void 0:v.placeholder)||"Select an option",color:f?void 0:"red",id:r}),e.jsx(t.Select.Content,{children:D.map(m=>e.jsx(t.Select.Item,{value:m.value,children:m.label},m.value))})]}),!f&&e.jsx(t.Text,{color:"red",size:"1",children:q(w,y)}),u.description&&e.jsx(t.Text,{size:"1",color:"gray",children:u.description})]})})},je=C.rankWith(2,C.or(C.isEnumControl,C.isOneOfControl)),_e=E.withJsonFormsControlProps(ye);function Ee(s){return s&&s.__esModule&&Object.prototype.hasOwnProperty.call(s,"default")?s.default:s}var se={exports:{}},Ve=se.exports,le;function Pe(){return le||(le=1,(function(s,n){(function(r,y){s.exports=y()})(Ve,(function(){var r=1e3,y=6e4,F=36e5,w="millisecond",u="second",S="minute",h="hour",x="day",f="week",D="month",b="quarter",v="year",m="date",A="Invalid Date",B=/^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/,M=/\[([^\]]+)]|YYYY|YY|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,O={name:"en",weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),ordinal:function(d){var a=["th","st","nd","rd"],o=d%100;return"["+d+(a[(o-20)%10]||a[o]||a[0])+"]"}},Y=function(d,a,o){var c=String(d);return!c||c.length>=a?d:""+Array(a+1-c.length).join(o)+d},G={s:Y,z:function(d){var a=-d.utcOffset(),o=Math.abs(a),c=Math.floor(o/60),i=o%60;return(a<=0?"+":"-")+Y(c,2,"0")+":"+Y(i,2,"0")},m:function d(a,o){if(a.date()<o.date())return-d(o,a);var c=12*(o.year()-a.year())+(o.month()-a.month()),i=a.clone().add(c,D),p=o-i<0,g=a.clone().add(c+(p?-1:1),D);return+(-(c+(o-i)/(p?i-g:g-i))||0)},a:function(d){return d<0?Math.ceil(d)||0:Math.floor(d)},p:function(d){return{M:D,y:v,w:f,d:x,D:m,h,m:S,s:u,ms:w,Q:b}[d]||String(d||"").toLowerCase().replace(/s$/,"")},u:function(d){return d===void 0}},P="en",I={};I[P]=O;var X="$isDayjsObject",Q=function(d){return d instanceof H||!(!d||!d[X])},N=function d(a,o,c){var i;if(!a)return P;if(typeof a=="string"){var p=a.toLowerCase();I[p]&&(i=p),o&&(I[p]=o,i=p);var g=a.split("-");if(!i&&g.length>1)return d(g[0])}else{var l=a.name;I[l]=a,i=l}return!c&&i&&(P=i),i||!c&&P},z=function(d,a){if(Q(d))return d.clone();var o=typeof a=="object"?a:{};return o.date=d,o.args=arguments,new H(o)},T=G;T.l=N,T.i=Q,T.w=function(d,a){return z(d,{locale:a.$L,utc:a.$u,x:a.$x,$offset:a.$offset})};var H=(function(){function d(o){this.$L=N(o.locale,null,!0),this.parse(o),this.$x=this.$x||o.x||{},this[X]=!0}var a=d.prototype;return a.parse=function(o){this.$d=(function(c){var i=c.date,p=c.utc;if(i===null)return new Date(NaN);if(T.u(i))return new Date;if(i instanceof Date)return new Date(i);if(typeof i=="string"&&!/Z$/i.test(i)){var g=i.match(B);if(g){var l=g[2]-1||0,j=(g[7]||"0").substring(0,3);return p?new Date(Date.UTC(g[1],l,g[3]||1,g[4]||0,g[5]||0,g[6]||0,j)):new Date(g[1],l,g[3]||1,g[4]||0,g[5]||0,g[6]||0,j)}}return new Date(i)})(o),this.init()},a.init=function(){var o=this.$d;this.$y=o.getFullYear(),this.$M=o.getMonth(),this.$D=o.getDate(),this.$W=o.getDay(),this.$H=o.getHours(),this.$m=o.getMinutes(),this.$s=o.getSeconds(),this.$ms=o.getMilliseconds()},a.$utils=function(){return T},a.isValid=function(){return this.$d.toString()!==A},a.isSame=function(o,c){var i=z(o);return this.startOf(c)<=i&&i<=this.endOf(c)},a.isAfter=function(o,c){return z(o)<this.startOf(c)},a.isBefore=function(o,c){return this.endOf(c)<z(o)},a.$g=function(o,c,i){return T.u(o)?this[c]:this.set(i,o)},a.unix=function(){return Math.floor(this.valueOf()/1e3)},a.valueOf=function(){return this.$d.getTime()},a.startOf=function(o,c){var i=this,p=!!T.u(c)||c,g=T.p(o),l=function(K,W){var J=T.w(i.$u?Date.UTC(i.$y,W,K):new Date(i.$y,W,K),i);return p?J:J.endOf(x)},j=function(K,W){return T.w(i.toDate()[K].apply(i.toDate("s"),(p?[0,0,0,0]:[23,59,59,999]).slice(W)),i)},k=this.$W,$=this.$M,L=this.$D,U="set"+(this.$u?"UTC":"");switch(g){case v:return p?l(1,0):l(31,11);case D:return p?l(1,$):l(0,$+1);case f:var _=this.$locale().weekStart||0,V=(k<_?k+7:k)-_;return l(p?L-V:L+(6-V),$);case x:case m:return j(U+"Hours",0);case h:return j(U+"Minutes",1);case S:return j(U+"Seconds",2);case u:return j(U+"Milliseconds",3);default:return this.clone()}},a.endOf=function(o){return this.startOf(o,!1)},a.$set=function(o,c){var i,p=T.p(o),g="set"+(this.$u?"UTC":""),l=(i={},i[x]=g+"Date",i[m]=g+"Date",i[D]=g+"Month",i[v]=g+"FullYear",i[h]=g+"Hours",i[S]=g+"Minutes",i[u]=g+"Seconds",i[w]=g+"Milliseconds",i)[p],j=p===x?this.$D+(c-this.$W):c;if(p===D||p===v){var k=this.clone().set(m,1);k.$d[l](j),k.init(),this.$d=k.set(m,Math.min(this.$D,k.daysInMonth())).$d}else l&&this.$d[l](j);return this.init(),this},a.set=function(o,c){return this.clone().$set(o,c)},a.get=function(o){return this[T.p(o)]()},a.add=function(o,c){var i,p=this;o=Number(o);var g=T.p(c),l=function($){var L=z(p);return T.w(L.date(L.date()+Math.round($*o)),p)};if(g===D)return this.set(D,this.$M+o);if(g===v)return this.set(v,this.$y+o);if(g===x)return l(1);if(g===f)return l(7);var j=(i={},i[S]=y,i[h]=F,i[u]=r,i)[g]||1,k=this.$d.getTime()+o*j;return T.w(k,this)},a.subtract=function(o,c){return this.add(-1*o,c)},a.format=function(o){var c=this,i=this.$locale();if(!this.isValid())return i.invalidDate||A;var p=o||"YYYY-MM-DDTHH:mm:ssZ",g=T.z(this),l=this.$H,j=this.$m,k=this.$M,$=i.weekdays,L=i.months,U=i.meridiem,_=function(W,J,te,re){return W&&(W[J]||W(c,p))||te[J].slice(0,re)},V=function(W){return T.s(l%12||12,W,"0")},K=U||function(W,J,te){var re=W<12?"AM":"PM";return te?re.toLowerCase():re};return p.replace(M,(function(W,J){return J||(function(te){switch(te){case"YY":return String(c.$y).slice(-2);case"YYYY":return T.s(c.$y,4,"0");case"M":return k+1;case"MM":return T.s(k+1,2,"0");case"MMM":return _(i.monthsShort,k,L,3);case"MMMM":return _(L,k);case"D":return c.$D;case"DD":return T.s(c.$D,2,"0");case"d":return String(c.$W);case"dd":return _(i.weekdaysMin,c.$W,$,2);case"ddd":return _(i.weekdaysShort,c.$W,$,3);case"dddd":return $[c.$W];case"H":return String(l);case"HH":return T.s(l,2,"0");case"h":return V(1);case"hh":return V(2);case"a":return K(l,j,!0);case"A":return K(l,j,!1);case"m":return String(j);case"mm":return T.s(j,2,"0");case"s":return String(c.$s);case"ss":return T.s(c.$s,2,"0");case"SSS":return T.s(c.$ms,3,"0");case"Z":return g}return null})(W)||g.replace(":","")}))},a.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},a.diff=function(o,c,i){var p,g=this,l=T.p(c),j=z(o),k=(j.utcOffset()-this.utcOffset())*y,$=this-j,L=function(){return T.m(g,j)};switch(l){case v:p=L()/12;break;case D:p=L();break;case b:p=L()/3;break;case f:p=($-k)/6048e5;break;case x:p=($-k)/864e5;break;case h:p=$/F;break;case S:p=$/y;break;case u:p=$/r;break;default:p=$}return i?p:T.a(p)},a.daysInMonth=function(){return this.endOf(D).$D},a.$locale=function(){return I[this.$L]},a.locale=function(o,c){if(!o)return this.$L;var i=this.clone(),p=N(o,c,!0);return p&&(i.$L=p),i},a.clone=function(){return T.w(this.$d,this)},a.toDate=function(){return new Date(this.valueOf())},a.toJSON=function(){return this.isValid()?this.toISOString():null},a.toISOString=function(){return this.$d.toISOString()},a.toString=function(){return this.$d.toUTCString()},d})(),ee=H.prototype;return z.prototype=ee,[["$ms",w],["$s",u],["$m",S],["$H",h],["$W",x],["$M",D],["$y",v],["$D",m]].forEach((function(d){ee[d[1]]=function(a){return this.$g(a,d[0],d[1])}})),z.extend=function(d,a){return d.$i||(d(a,H,z),d.$i=!0),z},z.locale=N,z.isDayjs=Q,z.unix=function(d){return z(1e3*d)},z.en=I[P],z.Ls=I,z.p={},z}))})(se)),se.exports}var Ne=Pe();const He=Ee(Ne),Ye=(s,n)=>He(`${s}T${n}`).format(),Je=({path:s,label:n,required:r,errors:y,description:F,children:w})=>{const u=y.length===0;return e.jsx(t.Box,{mb:"4",children:e.jsxs(t.Flex,{direction:"column",gap:"1",children:[e.jsxs(t.Text,{as:"label",size:"2",weight:"bold",htmlFor:s,children:[n," ",r&&e.jsx(t.Text,{color:"red",children:"*"})]}),w,!u&&e.jsx(t.Text,{color:"red",size:"1",children:q(y,n)}),F&&e.jsx(t.Text,{size:"1",color:"gray",children:F})]})})},ve=({data:s,handleChange:n,path:r,label:y,required:F,errors:w,schema:u,enabled:S,visible:h=!0})=>{if(R.useEffect(()=>{h===!1&&n(r,void 0)},[h,r,n]),h===!1)return null;const x=w.length===0,f=typeof s=="string"?s:"",D=M=>e.jsx(Je,{path:r,label:y,required:F,errors:w,description:u.description,children:M});if(u.format==="time")return D(e.jsx(t.TextField.Root,{type:"time",value:f,onChange:M=>n(r,M.target.value),disabled:!S,color:x?void 0:"red",id:r}));const b=u.format==="date-time",[v="",m=""]=f.split("T"),A=m.slice(0,5),B=(M,O)=>{if(!M){n(r,void 0);return}n(r,b?Ye(M,O||"00:00"):M)};return D(e.jsxs(t.Flex,{gap:"2",align:"center",children:[e.jsx(t.TextField.Root,{type:"date",value:v,disabled:!S,color:x?void 0:"red",onChange:M=>B(M.target.value,A),id:r,style:{flex:1}}),b&&e.jsx(t.TextField.Root,{type:"time",value:A,disabled:!S||!v,color:x?void 0:"red",onChange:M=>B(v,M.target.value),style:{flex:1}})]}))},$e=C.rankWith(2,C.or(C.isDateControl,C.isDateTimeControl,C.isTimeControl)),qe=E.withJsonFormsControlProps(ve),be=({uischema:s,schema:n,path:r,renderers:y,cells:F,enabled:w,visible:u=!0})=>{const h=s.elements;return u===!1?null:e.jsx(t.Flex,{direction:"column",gap:"4",children:h.map((x,f)=>e.jsx(E.JsonFormsDispatch,{uischema:x,schema:n,path:r,renderers:y,cells:F,enabled:w},`${r}-${f}`))})},Te=C.rankWith(1,C.uiTypeIs("VerticalLayout")),Ce=({uischema:s,schema:n,path:r,renderers:y,cells:F,enabled:w,visible:u=!0})=>{const h=s.elements;return u===!1?null:e.jsx(t.Flex,{direction:"row",gap:"4",children:h.map((x,f)=>e.jsx(t.Box,{style:{flex:1},children:e.jsx(E.JsonFormsDispatch,{uischema:x,schema:n,path:r,renderers:y,cells:F,enabled:w})},`${r}-${f}`))})},we=C.rankWith(1,C.uiTypeIs("HorizontalLayout")),Se=({uischema:s,schema:n,path:r,renderers:y,cells:F,enabled:w,visible:u=!0})=>{const S=s,h=S.elements;return u===!1?null:e.jsxs(t.Box,{mb:"6",children:[S.label&&e.jsx(t.Heading,{size:"3",mb:"3",className:"text-gray-500 uppercase tracking-wide font-semibold",children:S.label}),e.jsx(t.Flex,{direction:"column",gap:"4",children:h.map((x,f)=>e.jsx(E.JsonFormsDispatch,{uischema:x,schema:n,path:r,renderers:y,cells:F,enabled:w},`${r}-${f}`))})]})},Fe=C.rankWith(1,C.uiTypeIs("Group")),De=({uischema:s,schema:n,path:r,renderers:y,cells:F,enabled:w,visible:u=!0})=>{var b;const h=s.elements.filter(v=>v.type==="Category"),[x,f]=R.useState(((b=h[0])==null?void 0:b.label)||"");if(u===!1||!h.length)return null;const D=h.find(v=>v.label===x)?x:h[0].label;return e.jsxs(t.Tabs.Root,{value:D,onValueChange:f,children:[e.jsx(t.Tabs.List,{children:h.map((v,m)=>e.jsx(t.Tabs.Trigger,{value:v.label,children:v.label},`${r}-${m}`))}),e.jsx(t.Box,{pt:"3",children:h.map((v,m)=>e.jsx(t.Tabs.Content,{value:v.label,children:e.jsx(t.Flex,{direction:"column",gap:"4",children:v.elements.map((A,B)=>e.jsx(E.JsonFormsDispatch,{uischema:A,schema:n,path:r,renderers:y,cells:F,enabled:w},`${r}-${m}-${B}`))})},`${r}-${m}`))})]})},ke=C.rankWith(1,C.uiTypeIs("Categorization"));function Ge(s){return s?Array.isArray(s)?s:[s]:[]}function ne(s){return s>=1024*1024?`${(s/(1024*1024)).toFixed(0)} MB`:s>=1024?`${(s/1024).toFixed(0)} KB`:`${s} B`}function oe(s){return s.split(",").map(n=>{if(n=n.trim(),n.endsWith("/*"))return n.split("/")[0].toUpperCase()+"S";if(n.startsWith("."))return n.slice(1).toUpperCase();const r=n.split("/")[1];return r?r.toUpperCase():n}).join(", ")}const Ke=({data:s,handleChange:n,path:r,label:y,required:F,uischema:w,schema:u,enabled:S,errors:h,visible:x=!0})=>{const f=ce();if(R.useEffect(()=>{x===!1&&n(r,null)},[x,r,n]),x===!1)return null;const D=!h||h.length===0,b=(u==null?void 0:u["x-file"])??{},v=(w==null?void 0:w.options)??{},m=b.maxFiles??v.maxFiles??1,A=b.maxSize??v.maxSize??5*1024*1024,B=b.accept??v.accept??"image/*,application/pdf",M=m>1,O=S!==!1,[Y,G]=R.useState(!1),[P,I]=R.useState(null),[X,Q]=R.useState({}),N=R.useRef(new Set),z=R.useRef(null),T=Ge(s),H=T.length>=m;R.useEffect(()=>()=>{N.current.forEach(l=>URL.revokeObjectURL(l)),N.current.clear()},[]);const ee=R.useCallback(async l=>{if(I(null),T.length>=m){I(`Maximum ${m} file${m>1?"s":""} allowed.`);return}if(l.size>A){I(`File exceeds the ${ne(A)} limit.`);return}if(!B.split(",").map($=>$.trim()).some($=>$==="*"||$==="*/*"?!0:$.endsWith("/*")?l.type.startsWith($.slice(0,-1)):$.startsWith(".")?l.name.toLowerCase().endsWith($.toLowerCase()):l.type===$)){I(`Invalid type. Accepted: ${oe(B)}`);return}if(!(f!=null&&f.onUpload)){I("Upload service not configured.");return}try{const $=await f.onUpload(l),L=URL.createObjectURL(l);N.current.add(L);const U={key:$.key,name:$.name??l.name,blobUrl:L};Q(V=>({...V,[$.key]:U}));const _=[...T,$.key];n(r,M?_:_[0])}catch{I("Upload failed. Please try again."),z.current&&(z.current.value="")}},[T,m,A,B,f,r,n,M]),d=l=>{l.preventDefault(),l.stopPropagation(),!(!O||H)&&G(l.type==="dragenter"||l.type==="dragover")},a=l=>{var j;l.preventDefault(),l.stopPropagation(),G(!1),!(!O||H)&&(j=l.dataTransfer.files)!=null&&j[0]&&ee(l.dataTransfer.files[0])},o=l=>{var j;(j=l.target.files)!=null&&j[0]&&(ee(l.target.files[0]),l.target.value="")},c=l=>{if(!O)return;Q(k=>{var U;const $={...k},L=(U=$[l])==null?void 0:U.blobUrl;return L&&(URL.revokeObjectURL(L),N.current.delete(L)),delete $[l],$});const j=T.filter(k=>k!==l);n(r,M?j.length>0?j:null:j[0]??null)},i=async(l,j)=>{var L,U,_;l.preventDefault();const k=(L=X[j])==null?void 0:L.blobUrl;if(k){(U=window.open(k,"_blank","noopener,noreferrer"))==null||U.focus();return}const $=window.open("","_blank");if($)try{const V=await((_=f==null?void 0:f.getDownloadUrl)==null?void 0:_.call(f,j));V!=null&&V.url?$.location.href=V.url:$.close()}catch{$.close()}};if(!O&&T.length===0)return null;const p=m-T.length,g=O&&!H;return e.jsxs(t.Box,{mb:"4",children:[e.jsxs(t.Flex,{align:"center",justify:"between",mb:"2",children:[e.jsxs(t.Text,{as:"label",size:"2",weight:"bold",children:[y,F&&e.jsx(t.Text,{color:"red",children:" *"})]}),e.jsx(t.Text,{size:"1",color:"gray",children:M?`Up to ${m} files · ${ne(A)} each · ${oe(B)}`:`${ne(A)} · ${oe(B)}`})]}),T.map(l=>{var j;return e.jsx(t.Card,{size:"2",variant:"surface",mb:"2",children:e.jsxs(t.Flex,{align:"center",gap:"3",children:[e.jsx(t.Box,{style:{background:"var(--blue-3)",padding:8,borderRadius:6,color:"var(--blue-9)",flexShrink:0},children:e.jsx(Z.FileTextIcon,{width:"20",height:"20"})}),e.jsx(t.Box,{style:{flex:1,overflow:"hidden"},children:e.jsx(t.Text,{size:"2",weight:"bold",style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},children:((j=X[l])==null?void 0:j.name)??"Uploaded File"})}),e.jsxs(t.Flex,{align:"center",gap:"2",style:{flexShrink:0},children:[e.jsx(t.Button,{variant:"soft",color:"blue",size:"1",onClick:k=>i(k,l),children:"View"}),e.jsx(Z.CheckCircledIcon,{style:{color:"var(--green-9)",width:18,height:18}}),O&&e.jsx(t.IconButton,{variant:"ghost",color:"gray",onClick:()=>c(l),children:e.jsx(Z.Cross2Icon,{})})]})]})},l)}),g&&e.jsxs("div",{role:"button",tabIndex:0,onClick:()=>{var l;return(l=z.current)==null?void 0:l.click()},onKeyDown:l=>{var j;(l.key==="Enter"||l.key===" ")&&(l.preventDefault(),(j=z.current)==null||j.click())},onDragEnter:d,onDragLeave:d,onDragOver:d,onDrop:a,style:{cursor:"pointer"},className:["border-2 border-dashed rounded-lg p-6 text-center","transition-all duration-200 ease-in-out",Y?"border-blue-500 bg-blue-50":P?"border-red-300 bg-red-50":"border-gray-300 hover:border-blue-400 hover:bg-gray-50"].join(" "),children:[e.jsx("input",{ref:z,type:"file",style:{display:"none"},accept:B,onChange:o}),e.jsx(t.Flex,{direction:"column",align:"center",gap:"2",children:P?e.jsxs(e.Fragment,{children:[e.jsx(Z.ExclamationTriangleIcon,{style:{width:32,height:32,color:"var(--red-9)"}}),e.jsx(t.Text,{size:"2",color:"red",weight:"medium",children:P}),e.jsx(t.Text,{size:"1",color:"gray",children:"Click to try again"})]}):e.jsxs(e.Fragment,{children:[e.jsx(Z.UploadIcon,{style:{width:32,height:32,color:"var(--gray-8)"}}),e.jsx(t.Text,{size:"2",weight:"medium",children:T.length>0?`Add another file (${p} remaining)`:"Click to upload or drag and drop"}),e.jsxs(t.Text,{size:"1",color:"gray",children:[ne(A)," max · ",oe(B)]})]})})]}),O&&H&&M&&e.jsxs(t.Text,{size:"1",color:"gray",mt:"1",style:{display:"block",textAlign:"center"},children:["Maximum ",m," files uploaded. Remove one to replace it."]}),!D&&e.jsx(t.Text,{color:"red",size:"1",mt:"2",style:{display:"block"},children:q(h,y)})]})},Me=E.withJsonFormsControlProps(Ke),ze=C.rankWith(10,C.and(C.schemaMatches(s=>{if(s.type==="string"&&s.format==="file")return!0;if(s.type==="array"){const n=s.items;return(n==null?void 0:n.type)==="string"&&(n==null?void 0:n.format)==="file"}return!1}))),Ze=({data:s,path:n,schema:r,uischema:y,enabled:F,visible:w,addItem:u,removeItems:S,rootSchema:h,arraySchema:x})=>{const f=x?r:r.items,D=x||r;if(w===!1||!f||typeof f!="object"||Array.isArray(f))return null;const b=f,v=Array.isArray(s)?s:[],m=D.title||"Array Items",A=()=>{const M=C.createDefaultValue(b,h);u&&u(n,M)()},B=M=>{if(S){const O=S(n,[M]);O&&O()}};return e.jsx(t.Box,{mb:"6",children:e.jsxs(t.Flex,{direction:"column",gap:"4",children:[e.jsx(t.Text,{as:"div",size:"4",weight:"bold",children:m}),v.length===0&&e.jsx(t.Box,{py:"4",px:"4",style:{backgroundColor:"var(--gray-3)",borderRadius:"var(--radius-3)"},children:e.jsx(t.Text,{size:"2",color:"gray",children:"No items have been added yet."})}),v.map((M,O)=>{var G;const Y=`${n}.${O}`;return e.jsx(t.Card,{size:"3",variant:"surface",children:e.jsxs(t.Flex,{direction:"column",gap:"4",children:[e.jsxs(t.Flex,{justify:"between",align:"center",children:[e.jsxs(t.Text,{size:"3",weight:"bold",children:["Item ",O+1]}),F&&e.jsxs(t.Button,{type:"button",color:"red",variant:"soft",onClick:()=>B(O),title:"Remove item",children:[e.jsx(Z.TrashIcon,{}),"Remove"]})]}),e.jsx(t.Box,{children:e.jsx(E.JsonFormsDispatch,{schema:b,uischema:((G=y.options)==null?void 0:G.detail)||(b.type==="object"||b.properties?{type:"VerticalLayout",elements:Object.keys(b.properties||{}).map(P=>({type:"Control",scope:`#/properties/${P}`}))}:{type:"Control",scope:"#"}),path:Y,enabled:F,renderers:void 0,cells:void 0})})]})},Y)}),F&&e.jsx(t.Box,{mt:"2",children:e.jsxs(t.Button,{type:"button",variant:"surface",onClick:A,children:[e.jsx(Z.PlusIcon,{}),"Add Item"]})})]})})},ie=E.withJsonFormsArrayControlProps(Ze),Le=C.rankWith(3,C.isObjectArrayControl),Oe=({uischema:s,visible:n})=>{const r=s;return n===!1?null:e.jsx(t.Box,{mb:"4",children:e.jsx(t.Heading,{size:"4",children:r.text})})},Re=C.rankWith(1,C.uiTypeIs("Label")),Qe=C.rankWith(3,C.isPrimitiveArrayControl),Xe=[{tester:de,renderer:Be},{tester:xe,renderer:Ie},{tester:me,renderer:Ue},{tester:ge,renderer:We},{tester:je,renderer:_e},{tester:$e,renderer:qe},{tester:Te,renderer:be},{tester:we,renderer:Ce},{tester:Fe,renderer:Se},{tester:ke,renderer:De},{tester:ze,renderer:Me},{tester:Le,renderer:ie},{tester:Qe,renderer:ie},{tester:Re,renderer:Oe}];exports.ArrayControl=ie;exports.ArrayControlTester=Le;exports.BooleanControl=he;exports.BooleanControlTester=me;exports.CategorizationLayoutRenderer=De;exports.CategorizationLayoutTester=ke;exports.DateControl=ve;exports.DateControlTester=$e;exports.FileControl=Me;exports.FileControlTester=ze;exports.GroupLayoutRenderer=Se;exports.GroupLayoutTester=Fe;exports.HorizontalLayoutRenderer=Ce;exports.HorizontalLayoutTester=we;exports.LabelRenderer=Oe;exports.LabelTester=Re;exports.NumberControl=fe;exports.NumberControlTester=xe;exports.RadioControl=pe;exports.RadioControlTester=ge;exports.SelectControl=ye;exports.SelectControlTester=je;exports.TextControl=ue;exports.TextControlTester=de;exports.UploadProvider=Ae;exports.VerticalLayoutRenderer=be;exports.VerticalLayoutTester=Te;exports.getErrorMessage=q;exports.radixRenderers=Xe;exports.useUpload=ce;