@stapel/forms-react 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (203) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/MODULE.md +172 -0
  3. package/README.md +207 -0
  4. package/dist/api/export.d.ts +66 -0
  5. package/dist/api/export.d.ts.map +1 -0
  6. package/dist/api/export.js +138 -0
  7. package/dist/api/export.js.map +1 -0
  8. package/dist/api/extensions.d.ts +8 -0
  9. package/dist/api/extensions.d.ts.map +1 -0
  10. package/dist/api/extensions.js +8 -0
  11. package/dist/api/extensions.js.map +1 -0
  12. package/dist/api/formsApi.d.ts +113 -0
  13. package/dist/api/formsApi.d.ts.map +1 -0
  14. package/dist/api/formsApi.js +81 -0
  15. package/dist/api/formsApi.js.map +1 -0
  16. package/dist/api/generated/schema.d.ts +987 -0
  17. package/dist/api/generated/schema.d.ts.map +1 -0
  18. package/dist/api/generated/schema.js +2 -0
  19. package/dist/api/generated/schema.js.map +1 -0
  20. package/dist/api/types.d.ts +222 -0
  21. package/dist/api/types.d.ts.map +1 -0
  22. package/dist/api/types.js +14 -0
  23. package/dist/api/types.js.map +1 -0
  24. package/dist/default/ConfigField.d.ts +32 -0
  25. package/dist/default/ConfigField.d.ts.map +1 -0
  26. package/dist/default/ConfigField.js +101 -0
  27. package/dist/default/ConfigField.js.map +1 -0
  28. package/dist/default/ErrorAlert.d.ts +9 -0
  29. package/dist/default/ErrorAlert.d.ts.map +1 -0
  30. package/dist/default/ErrorAlert.js +27 -0
  31. package/dist/default/ErrorAlert.js.map +1 -0
  32. package/dist/default/FormBuilderPane.d.ts +36 -0
  33. package/dist/default/FormBuilderPane.d.ts.map +1 -0
  34. package/dist/default/FormBuilderPane.js +70 -0
  35. package/dist/default/FormBuilderPane.js.map +1 -0
  36. package/dist/default/FormsListPane.d.ts +18 -0
  37. package/dist/default/FormsListPane.d.ts.map +1 -0
  38. package/dist/default/FormsListPane.js +28 -0
  39. package/dist/default/FormsListPane.js.map +1 -0
  40. package/dist/default/ResponsesPane.d.ts +21 -0
  41. package/dist/default/ResponsesPane.d.ts.map +1 -0
  42. package/dist/default/ResponsesPane.js +118 -0
  43. package/dist/default/ResponsesPane.js.map +1 -0
  44. package/dist/default/StapelForm.d.ts +76 -0
  45. package/dist/default/StapelForm.d.ts.map +1 -0
  46. package/dist/default/StapelForm.js +118 -0
  47. package/dist/default/StapelForm.js.map +1 -0
  48. package/dist/default/fields.d.ts +11 -0
  49. package/dist/default/fields.d.ts.map +1 -0
  50. package/dist/default/fields.js +273 -0
  51. package/dist/default/fields.js.map +1 -0
  52. package/dist/default/index.d.ts +42 -0
  53. package/dist/default/index.d.ts.map +1 -0
  54. package/dist/default/index.js +37 -0
  55. package/dist/default/index.js.map +1 -0
  56. package/dist/default/slots.d.ts +59 -0
  57. package/dist/default/slots.d.ts.map +1 -0
  58. package/dist/default/slots.js +25 -0
  59. package/dist/default/slots.js.map +1 -0
  60. package/dist/default/theme.d.ts +23 -0
  61. package/dist/default/theme.d.ts.map +1 -0
  62. package/dist/default/theme.js +38 -0
  63. package/dist/default/theme.js.map +1 -0
  64. package/dist/default/types.d.ts +12 -0
  65. package/dist/default/types.d.ts.map +1 -0
  66. package/dist/default/types.js +2 -0
  67. package/dist/default/types.js.map +1 -0
  68. package/dist/flows/errors.d.ts +12 -0
  69. package/dist/flows/errors.d.ts.map +1 -0
  70. package/dist/flows/errors.js +13 -0
  71. package/dist/flows/errors.js.map +1 -0
  72. package/dist/flows/registry.d.ts +22 -0
  73. package/dist/flows/registry.d.ts.map +1 -0
  74. package/dist/flows/registry.js +20 -0
  75. package/dist/flows/registry.js.map +1 -0
  76. package/dist/headless/FormBuilder.d.ts +100 -0
  77. package/dist/headless/FormBuilder.d.ts.map +1 -0
  78. package/dist/headless/FormBuilder.js +278 -0
  79. package/dist/headless/FormBuilder.js.map +1 -0
  80. package/dist/headless/FormFill.d.ts +88 -0
  81. package/dist/headless/FormFill.d.ts.map +1 -0
  82. package/dist/headless/FormFill.js +279 -0
  83. package/dist/headless/FormFill.js.map +1 -0
  84. package/dist/headless/FormList.d.ts +34 -0
  85. package/dist/headless/FormList.d.ts.map +1 -0
  86. package/dist/headless/FormList.js +37 -0
  87. package/dist/headless/FormList.js.map +1 -0
  88. package/dist/headless/FormsProvider.d.ts +19 -0
  89. package/dist/headless/FormsProvider.d.ts.map +1 -0
  90. package/dist/headless/FormsProvider.js +15 -0
  91. package/dist/headless/FormsProvider.js.map +1 -0
  92. package/dist/headless/ResponsesTable.d.ts +82 -0
  93. package/dist/headless/ResponsesTable.d.ts.map +1 -0
  94. package/dist/headless/ResponsesTable.js +195 -0
  95. package/dist/headless/ResponsesTable.js.map +1 -0
  96. package/dist/i18n/errorsMap.d.ts +10 -0
  97. package/dist/i18n/errorsMap.d.ts.map +1 -0
  98. package/dist/i18n/errorsMap.js +20 -0
  99. package/dist/i18n/errorsMap.js.map +1 -0
  100. package/dist/i18n/es.d.ts +7 -0
  101. package/dist/i18n/es.d.ts.map +1 -0
  102. package/dist/i18n/es.js +118 -0
  103. package/dist/i18n/es.js.map +1 -0
  104. package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
  105. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
  106. package/dist/i18n/generated/errors.es.gen.js +79 -0
  107. package/dist/i18n/generated/errors.es.gen.js.map +1 -0
  108. package/dist/i18n/generated/errors.gen.d.ts +485 -0
  109. package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
  110. package/dist/i18n/generated/errors.gen.js +246 -0
  111. package/dist/i18n/generated/errors.gen.js.map +1 -0
  112. package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
  113. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
  114. package/dist/i18n/generated/errors.ru.gen.js +79 -0
  115. package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
  116. package/dist/i18n/keys.d.ts +141 -0
  117. package/dist/i18n/keys.d.ts.map +1 -0
  118. package/dist/i18n/keys.js +233 -0
  119. package/dist/i18n/keys.js.map +1 -0
  120. package/dist/i18n/ru.d.ts +7 -0
  121. package/dist/i18n/ru.d.ts.map +1 -0
  122. package/dist/i18n/ru.js +127 -0
  123. package/dist/i18n/ru.js.map +1 -0
  124. package/dist/index.d.ts +61 -0
  125. package/dist/index.d.ts.map +1 -0
  126. package/dist/index.js +55 -0
  127. package/dist/index.js.map +1 -0
  128. package/dist/model/context.d.ts +11 -0
  129. package/dist/model/context.d.ts.map +1 -0
  130. package/dist/model/context.js +16 -0
  131. package/dist/model/context.js.map +1 -0
  132. package/dist/model/mutations.d.ts +135 -0
  133. package/dist/model/mutations.d.ts.map +1 -0
  134. package/dist/model/mutations.js +223 -0
  135. package/dist/model/mutations.js.map +1 -0
  136. package/dist/model/queries.d.ts +59 -0
  137. package/dist/model/queries.d.ts.map +1 -0
  138. package/dist/model/queries.js +117 -0
  139. package/dist/model/queries.js.map +1 -0
  140. package/dist/model/queryKeys.d.ts +28 -0
  141. package/dist/model/queryKeys.d.ts.map +1 -0
  142. package/dist/model/queryKeys.js +23 -0
  143. package/dist/model/queryKeys.js.map +1 -0
  144. package/dist/model/runtime.d.ts +28 -0
  145. package/dist/model/runtime.d.ts.map +1 -0
  146. package/dist/model/runtime.js +14 -0
  147. package/dist/model/runtime.js.map +1 -0
  148. package/dist/widgets/configForms.d.ts +112 -0
  149. package/dist/widgets/configForms.d.ts.map +1 -0
  150. package/dist/widgets/configForms.js +211 -0
  151. package/dist/widgets/configForms.js.map +1 -0
  152. package/dist/widgets/registry.d.ts +83 -0
  153. package/dist/widgets/registry.d.ts.map +1 -0
  154. package/dist/widgets/registry.js +27 -0
  155. package/dist/widgets/registry.js.map +1 -0
  156. package/dist/widgets/validate.d.ts +57 -0
  157. package/dist/widgets/validate.d.ts.map +1 -0
  158. package/dist/widgets/validate.js +173 -0
  159. package/dist/widgets/validate.js.map +1 -0
  160. package/llms.txt +124 -0
  161. package/manifest.json +1038 -0
  162. package/package.json +108 -0
  163. package/src/analytics/generated/events.json +7 -0
  164. package/src/api/export.ts +195 -0
  165. package/src/api/extensions.ts +7 -0
  166. package/src/api/formsApi.ts +329 -0
  167. package/src/api/generated/schema.ts +989 -0
  168. package/src/api/types.ts +276 -0
  169. package/src/default/ConfigField.tsx +227 -0
  170. package/src/default/ErrorAlert.tsx +46 -0
  171. package/src/default/FormBuilderPane.tsx +414 -0
  172. package/src/default/FormsListPane.tsx +144 -0
  173. package/src/default/ResponsesPane.tsx +332 -0
  174. package/src/default/StapelForm.tsx +377 -0
  175. package/src/default/fields.tsx +454 -0
  176. package/src/default/index.ts +71 -0
  177. package/src/default/slots.ts +78 -0
  178. package/src/default/theme.tsx +65 -0
  179. package/src/default/types.ts +12 -0
  180. package/src/flows/errors.ts +16 -0
  181. package/src/flows/registry.ts +32 -0
  182. package/src/headless/FormBuilder.tsx +453 -0
  183. package/src/headless/FormFill.tsx +396 -0
  184. package/src/headless/FormList.tsx +74 -0
  185. package/src/headless/FormsProvider.tsx +20 -0
  186. package/src/headless/ResponsesTable.tsx +341 -0
  187. package/src/i18n/errorsMap.ts +31 -0
  188. package/src/i18n/es.ts +140 -0
  189. package/src/i18n/generated/errors.es.gen.ts +85 -0
  190. package/src/i18n/generated/errors.gen.ts +277 -0
  191. package/src/i18n/generated/errors.json +583 -0
  192. package/src/i18n/generated/errors.ru.gen.ts +85 -0
  193. package/src/i18n/keys.ts +264 -0
  194. package/src/i18n/ru.ts +150 -0
  195. package/src/index.ts +184 -0
  196. package/src/model/context.tsx +28 -0
  197. package/src/model/mutations.ts +387 -0
  198. package/src/model/queries.ts +154 -0
  199. package/src/model/queryKeys.ts +61 -0
  200. package/src/model/runtime.ts +48 -0
  201. package/src/widgets/registry.ts +101 -0
  202. package/src/widgets/validate.ts +224 -0
  203. package/tsconfig.json +26 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../src/api/generated/schema.ts"],"names":[],"mappings":""}
@@ -0,0 +1,222 @@
1
+ /**
2
+ * Wire types for the stapel-forms HTTP contract — **derived from the generated
3
+ * OpenAPI surface** (frontend-standard §2/§3), never hand-maintained. The
4
+ * single source of truth is `components["schemas"]` from this pair's own
5
+ * package-LOCAL generated schema (`./generated/schema.js`, produced by
6
+ * `pnpm gen:api` from stapel-forms's OWN `docs/schema.json` — the §17-native
7
+ * per-module contract). Alias the schemas this pair uses under local names
8
+ * here; do NOT write parallel response bodies. Where drf-spectacular +
9
+ * openapi-typescript under-describe the runtime, apply a small documented
10
+ * correction — each one below states WHAT the generator lost and WHY the
11
+ * correction is safe.
12
+ */
13
+ import type { components } from "./generated/schema.js";
14
+ /** The generated schema table — the one source of truth for wire shapes. */
15
+ export type Schemas = components["schemas"];
16
+ /**
17
+ * The ten attribute kinds a stapel-forms schema may use
18
+ * (`STAPEL_FORMS["FIELD_KINDS"]`, `conf.py::DEFAULT_FIELD_KINDS`). A host that
19
+ * registers an extra `stapel_attributes` type server-side can put a kind here
20
+ * that this union does not name — which is exactly why {@link FormFieldDef}
21
+ * types `kind` as a plain `string` and the widget registry answers "unsupported
22
+ * field" instead of crashing. This union is the CLOSED set the pair ships
23
+ * builtin widgets for, not a claim about what the server may send.
24
+ */
25
+ export type BuiltinFieldKind = "string" | "int" | "float" | "bool" | "select" | "date" | "header" | "hex_color" | "hierarchical_select" | "convertible_unit";
26
+ /** Every {@link BuiltinFieldKind}, in the order the builder offers them. */
27
+ export declare const BUILTIN_FIELD_KINDS: readonly BuiltinFieldKind[];
28
+ /**
29
+ * One field of a form schema — a `stapel_attributes` `FeatureDef` dict.
30
+ *
31
+ * GENERATOR CORRECTION. `PublicFormDTO.fields` is declared
32
+ * `{[key: string]: unknown}[]`: the backend serializes whatever
33
+ * `coerce_feature_defs` accepts and drf-spectacular cannot see inside it. The
34
+ * shape IS pinned by `stapel_attributes.FeatureDef` (slug/config/name/mandatory
35
+ * /show_at_title/show_as_badge/translate) and by `stapel_forms.schema`'s
36
+ * validator, so naming the fields here is a correction, not an invention. The
37
+ * `& Record<string, unknown>` tail keeps an EXTRA_TYPES field's own keys
38
+ * reachable without a cast.
39
+ *
40
+ * `config` keys are **camelCase** (`maxLength`, not `max_length`) — backend
41
+ * delta note 1: the type dataclasses drop unknown keys silently, so a
42
+ * snake_case typo is a constraint that does not exist. `publish` refuses those
43
+ * with `error.400.forms_invalid_schema` carrying `params.key`.
44
+ */
45
+ export type FormFieldDef = {
46
+ /** Answer key. Unique per schema (`error.400.forms_duplicate_slug`). */
47
+ readonly slug: string;
48
+ /** The attribute type. A kind outside {@link BuiltinFieldKind} is legal
49
+ * server-side and renders through the unsupported-field notice. */
50
+ readonly kind: string;
51
+ /** Admin-authored label. NOT an i18n key — see the i18n note in README. */
52
+ readonly name?: string;
53
+ /** Kind-specific configuration, camelCase keys. */
54
+ readonly config?: Readonly<Record<string, unknown>>;
55
+ /** Required — the client mirrors it, the server decides it. */
56
+ readonly mandatory?: boolean;
57
+ readonly show_at_title?: boolean;
58
+ readonly show_as_badge?: boolean;
59
+ readonly translate?: boolean;
60
+ } & Record<string, unknown>;
61
+ /**
62
+ * A form schema's non-field metadata (`stapel_forms.schema.META_KEYS`). Every
63
+ * key is optional and admin-authored; `logic` is deliberately absent (v1 has no
64
+ * conditional branching, and reserving the key keeps adding it additive).
65
+ */
66
+ export interface FormSchemaMeta {
67
+ readonly title?: string;
68
+ readonly description?: string;
69
+ readonly confirmation_text?: string;
70
+ readonly submit_label?: string;
71
+ }
72
+ /** The stored/authored schema envelope: `{fields, meta}`. */
73
+ export interface FormSchema {
74
+ readonly fields: readonly FormFieldDef[];
75
+ readonly meta?: FormSchemaMeta;
76
+ }
77
+ /**
78
+ * `GET /public/<public_id>/` 200 — what an anonymous respondent may know.
79
+ *
80
+ * GENERATOR CORRECTION, twice over: `fields` is narrowed to
81
+ * {@link FormFieldDef}[] (see above) and made REQUIRED. drf-spectacular marks
82
+ * only `public_id`/`version`/`version_id` required because the presenter's
83
+ * dataclass gives `fields`/`meta` defaults — but the view never omits them, and
84
+ * a renderer that must branch on `fields === undefined` would be branching on a
85
+ * case the server cannot produce.
86
+ */
87
+ export type PublicForm = Omit<Schemas["PublicFormDTO"], "fields" | "meta"> & {
88
+ readonly fields: readonly FormFieldDef[];
89
+ readonly meta: FormSchemaMeta;
90
+ };
91
+ /** `POST /public/<public_id>/submissions/` body. `answers` are BARE SCALARS
92
+ * keyed by slug — a `select` answer may be a single value and the server
93
+ * normalizes it to a list. `version_id` is echoed back from the rendered
94
+ * schema; omitting it forfeits the clean 409 and risks mis-validation. */
95
+ export interface SubmitRequest {
96
+ readonly answers: Readonly<Record<string, unknown>>;
97
+ readonly version_id?: string | null;
98
+ /** The captcha seam (spec §12 risk 3): the netintel tier decides whether a
99
+ * token is required at all, so it stays optional and the captcha layer
100
+ * refuses on its own terms. */
101
+ readonly captcha_token?: string;
102
+ }
103
+ /** `POST .../submissions/` 201 — deliberately NOT the submission id (there is
104
+ * no public read of submissions). */
105
+ export type SubmitResult = Schemas["SubmitResultDTO"];
106
+ /** `open | closed | draft`. */
107
+ export type FormState = Schemas["StateEnum"];
108
+ /**
109
+ * A `Form` row as its workspace's admins see it.
110
+ *
111
+ * GENERATOR CORRECTION: `draft_schema` is narrowed from `{[k: string]: unknown}`
112
+ * to {@link FormSchema} — the builder reads `.fields` off it, and the backend
113
+ * stores exactly the normalized envelope. `settings` keeps its open shape (a
114
+ * host may add keys) but names the destinations the pair drives.
115
+ */
116
+ export type FormRow = Omit<Schemas["FormPresenterDTO"], "draft_schema" | "settings"> & {
117
+ readonly draft_schema: FormSchema | null;
118
+ readonly settings: FormSettings;
119
+ };
120
+ /**
121
+ * `Form.settings` — an open bag whose notification keys the pair drives.
122
+ * Backend delta note 4: the spec's `notify_channels` was NOT built. Channels
123
+ * are a property of the routing entry; what a form needs is DESTINATIONS, so
124
+ * these keys name destinations and map to `request_notification` keywords
125
+ * through `notifications.TARGET_KINDS`.
126
+ */
127
+ export type FormSettings = {
128
+ readonly notify_emails?: readonly string[];
129
+ readonly notify_telegram_chat_ids?: readonly string[];
130
+ } & Record<string, unknown>;
131
+ /** `POST /forms` body. */
132
+ export interface FormCreateRequest {
133
+ readonly workspace_id: string;
134
+ readonly title: string;
135
+ readonly settings?: FormSettings;
136
+ readonly draft_schema?: FormSchema;
137
+ }
138
+ /** `PATCH /forms/<id>` body — title and settings only; the schema moves
139
+ * through `draft` + `publish`, never through a partial update. */
140
+ export interface FormPatchRequest {
141
+ readonly title?: string;
142
+ readonly settings?: FormSettings;
143
+ }
144
+ /** `POST /forms/<id>/publish` 200 — the new immutable version. */
145
+ export type PublishResult = Schemas["PublishResultDTO"];
146
+ /** One published, immutable schema version. */
147
+ export type FormVersion = Omit<Schemas["FormVersionPresenterDTO"], "schema"> & {
148
+ readonly schema: FormSchema;
149
+ };
150
+ /** One response, as a reviewer sees it. `answers` is `{slug: value}` (the raw
151
+ * DAO's display metadata is dropped — the reviewer has it from the version). */
152
+ export type Submission = Schemas["SubmissionPresenterDTO"];
153
+ /** `POST /submissions/<id>/resend` body. Backend delta note 7: given either
154
+ * list, the form's configured targets are REPLACED, not supplemented — "send
155
+ * this one to legal" must not also re-send it to everyone who already has it. */
156
+ export interface ResendRequest {
157
+ readonly recipients?: readonly string[];
158
+ readonly telegram_chat_ids?: readonly string[];
159
+ }
160
+ /** `POST /submissions/<id>/resend` 200. */
161
+ export type ResendResult = Schemas["ResendResultDTO"];
162
+ /** Query for the keyset-paginated submission list. */
163
+ export interface SubmissionListParams {
164
+ readonly workspaceId: string;
165
+ readonly formId: string;
166
+ /** Keyset cursor — the previous page's last `submitted_at`. */
167
+ readonly before?: string;
168
+ readonly limit?: number;
169
+ /** Restrict to answers of one schema version. */
170
+ readonly version?: number;
171
+ }
172
+ /**
173
+ * One declared config-form field, passed through from stapel-attributes'
174
+ * `config_form.FormField.to_dict()` VERBATIM by the backend — so a kind gains
175
+ * config fields upstream with no release on either side of the wire.
176
+ *
177
+ * GENERATOR CORRECTION: `FieldKindDTO.fields` is declared
178
+ * `{[key: string]: unknown}[]` because drf-spectacular cannot see inside a
179
+ * pass-through. The shape is pinned by `FormField.to_dict()`, so naming it here
180
+ * is a correction rather than an invention; the `& Record<string, unknown>`
181
+ * tail keeps a host widget's own params reachable without a cast.
182
+ */
183
+ export type ConfigFieldSpec = {
184
+ /** The config key this field edits. Order within a kind is significant. */
185
+ readonly name: string;
186
+ /** A key of {@link FieldKindCatalogue.configWidgets} — the WIDGET
187
+ * vocabulary, not the feature-type vocabulary. */
188
+ readonly kind: string;
189
+ /** Upstream i18n key, `admin.attributes.form.<type>.<field>`. */
190
+ readonly label_key: string;
191
+ /** Cosmetic `*` marker only — real validation is server-side. */
192
+ readonly required?: boolean;
193
+ /** Applied when the config key is absent. */
194
+ readonly default?: unknown;
195
+ /** Widget-specific params (`step`, `itemType`, inline `options`,
196
+ * `placeholder`, …). Only keys the widget understands are meaningful. */
197
+ readonly params?: Readonly<Record<string, unknown>>;
198
+ } & Record<string, unknown>;
199
+ /** One field kind the builder may offer. */
200
+ export type FieldKind = Omit<Schemas["FieldKindDTO"], "fields"> & {
201
+ /**
202
+ * The kind's config-form declaration. **Empty means the kind declares no
203
+ * config form** (upstream `BUILTIN_FORMS` simply has no entry — this is how
204
+ * `convertible_unit` arrives), which is one of the two builder-less signals.
205
+ */
206
+ readonly fields: readonly ConfigFieldSpec[];
207
+ };
208
+ /**
209
+ * `GET /field-kinds` 200 — the whole catalogue behind the builder.
210
+ *
211
+ * `config_widgets` is upstream's `config_form.FIELD_KINDS`: the widget
212
+ * vocabulary a declaration's `kind` draws from, mapped to the params each
213
+ * widget understands. Named apart from `kinds` on purpose — forms' own
214
+ * `FIELD_KINDS` setting is the feature-TYPE allowlist, and two different things
215
+ * under one name is how a builder ends up drawing a `number` where a `string`
216
+ * belongs.
217
+ */
218
+ export interface FieldKindCatalogue {
219
+ readonly kinds: readonly FieldKind[];
220
+ readonly configWidgets: Readonly<Record<string, readonly string[]>>;
221
+ }
222
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /** Every {@link BuiltinFieldKind}, in the order the builder offers them. */
2
+ export const BUILTIN_FIELD_KINDS = [
3
+ "string",
4
+ "int",
5
+ "float",
6
+ "bool",
7
+ "select",
8
+ "date",
9
+ "header",
10
+ "hex_color",
11
+ "hierarchical_select",
12
+ "convertible_unit",
13
+ ];
14
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAwCA,4EAA4E;AAC5E,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC9D,QAAQ;IACR,KAAK;IACL,OAAO;IACP,MAAM;IACN,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,WAAW;IACX,qBAAqB;IACrB,kBAAkB;CACnB,CAAC"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * One row of a field's config form, chosen by the CONFIG-WIDGET KIND — the
3
+ * mechanism that makes `<FormBuilderPane>` data-driven rather than a
4
+ * hand-written form per attribute type.
5
+ *
6
+ * `stapel_attributes.config_form` declares each feature type's admin form as
7
+ * a list of `FormField(name, kind, …)` where `kind` comes from a fixed
8
+ * 13-entry vocabulary (`FIELD_KINDS`), and stapel-forms 0.2.0 serves those
9
+ * declarations at `GET /field-kinds`. This file implements the WIDGET
10
+ * vocabulary once, so a feature type registered by a host gets a working
11
+ * config form with no new UI — and, now that the declarations are fetched
12
+ * rather than mirrored, with no client release either.
13
+ *
14
+ * Two of upstream's 13 widgets are not implemented here — `hierarchical_options`
15
+ * (a tree editor) and `timestamp_array`. Their rows render with an explanation
16
+ * rather than vanishing: a config form that hides an option looks complete when
17
+ * it is not. The `default:` arm catches those two AND anything a future
18
+ * attributes release adds, so a new widget degrades loudly instead of writing a
19
+ * wrong shape into a published schema.
20
+ */
21
+ import type { ReactElement } from "react";
22
+ import type { ConfigFieldSpec } from "../api/types.js";
23
+ export interface ConfigFieldProps {
24
+ readonly spec: ConfigFieldSpec;
25
+ readonly value: unknown;
26
+ readonly disabled: boolean;
27
+ /** `undefined` REMOVES the key — an absent config key means "the engine's
28
+ * own default", which is not the same as a stored `null`. */
29
+ onChange(value: unknown): void;
30
+ }
31
+ export declare function ConfigField(props: ConfigFieldProps): ReactElement;
32
+ //# sourceMappingURL=ConfigField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigField.d.ts","sourceRoot":"","sources":["../../src/default/ConfigField.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAG1C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA8EvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B;iEAC6D;IAC7D,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAChC;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,YAAY,CAoHjE"}
@@ -0,0 +1,101 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Input, InputNumber, Select, Switch, Typography } from "antd";
3
+ import { useT } from "@stapel/core";
4
+ import { FORMS_I18N_KEYS } from "../i18n/keys.js";
5
+ function str(value) {
6
+ return typeof value === "string" ? value : value == null ? "" : String(value);
7
+ }
8
+ function numberish(value) {
9
+ if (typeof value === "number" && Number.isFinite(value))
10
+ return value;
11
+ return undefined;
12
+ }
13
+ /**
14
+ * Widget params live under `spec.params`, not flattened onto the spec — that
15
+ * is `FormField.to_dict()`'s real shape, which the pair only saw once the
16
+ * declarations came off the wire instead of a hand-written mirror.
17
+ */
18
+ function param(spec, key) {
19
+ return (spec.params ?? {})[key];
20
+ }
21
+ function paramNumber(spec, key) {
22
+ const raw = param(spec, key);
23
+ return typeof raw === "number" && Number.isFinite(raw) ? raw : undefined;
24
+ }
25
+ function paramString(spec, key) {
26
+ const raw = param(spec, key);
27
+ return typeof raw === "string" && raw.length > 0 ? raw : undefined;
28
+ }
29
+ /** Inline `{value, label}` choices for a `select` config widget. */
30
+ function paramOptions(spec) {
31
+ const raw = param(spec, "options");
32
+ if (!Array.isArray(raw))
33
+ return [];
34
+ return raw.flatMap((option) => {
35
+ if (option === null || typeof option !== "object")
36
+ return [];
37
+ const entry = option;
38
+ const value = str(entry.value);
39
+ return [{ value, label: entry.label == null ? value : str(entry.label) }];
40
+ });
41
+ }
42
+ /** A tag-style list editor for the `*_options` kinds. `number_options`
43
+ * coerces back to numbers so a numeric option list does not silently become
44
+ * a list of strings the engine will refuse. */
45
+ function OptionsList(props) {
46
+ const current = Array.isArray(props.value) ? props.value.map(str) : [];
47
+ return (_jsx(Select, { mode: "tags", style: { width: "100%" }, value: current, disabled: props.disabled, open: false, suffixIcon: null, onChange: (next) => {
48
+ if (next.length === 0) {
49
+ props.onChange(undefined);
50
+ return;
51
+ }
52
+ props.onChange(props.numeric
53
+ ? next.map(Number).filter((n) => Number.isFinite(n))
54
+ : next);
55
+ } }));
56
+ }
57
+ export function ConfigField(props) {
58
+ const t = useT();
59
+ const { spec, value, disabled } = props;
60
+ switch (spec.kind) {
61
+ case "number":
62
+ return (_jsx(InputNumber, { style: { width: "100%" }, value: numberish(value) ?? null, disabled: disabled, ...(paramNumber(spec, "step") !== undefined
63
+ ? { step: paramNumber(spec, "step") }
64
+ : {}), onChange: (next) => props.onChange(next ?? undefined) }));
65
+ case "max_selected_dropdown":
66
+ // Absent = unlimited, which is `SelectConfig.maxSelected = None`. The
67
+ // placeholder says so, and clearing the number restores it.
68
+ return (_jsx(InputNumber, { style: { width: "100%" }, value: numberish(value) ?? null, disabled: disabled, min: 1, step: 1, placeholder: t(FORMS_I18N_KEYS.fillUnlimited), onChange: (next) => props.onChange(next ?? undefined) }));
69
+ case "text":
70
+ case "translatable_text":
71
+ // v1 edits the base string only. A per-locale editor is the same v2
72
+ // fork as translated form CONTENT (spec §10) — offering one language
73
+ // box per locale here would imply a translation pipeline that does not
74
+ // exist yet.
75
+ return (_jsx(Input, { value: str(value), disabled: disabled, ...(paramString(spec, "placeholder") !== undefined
76
+ ? { placeholder: paramString(spec, "placeholder") }
77
+ : {}), onChange: (event) => props.onChange(event.target.value || undefined) }));
78
+ case "checkbox":
79
+ return (_jsx(Switch, { checked: value === true, disabled: disabled, onChange: (checked) => props.onChange(checked) }));
80
+ case "select":
81
+ return (_jsx(Select, { style: { width: "100%" }, value: str(value) || null, disabled: disabled, options: [...paramOptions(spec)], onChange: (next) => props.onChange(next) }));
82
+ case "number_options":
83
+ return (_jsx(OptionsList, { value: value, numeric: true, disabled: disabled, onChange: props.onChange }));
84
+ // `select_options_with_default` shares this editor: the per-option
85
+ // "default" marker is not editable in v1; the option LIST — the part a
86
+ // form actually needs — is.
87
+ case "string_options":
88
+ case "color_options":
89
+ case "select_options_with_default":
90
+ return (_jsx(OptionsList, { value: value, numeric: false, disabled: disabled, onChange: props.onChange }));
91
+ case "timestamp":
92
+ return (_jsx(Input, { type: "date", value: str(value), disabled: disabled, onChange: (event) => props.onChange(event.target.value || undefined) }));
93
+ default:
94
+ // `hierarchical_options` (a tree editor) and `timestamp_array` — the two
95
+ // of upstream's 13 config widgets this skin does not implement — plus any
96
+ // widget a future attributes release adds. Say so rather than render a
97
+ // control that would write a wrong shape into a published schema.
98
+ return (_jsx(Typography.Text, { type: "secondary", children: t(FORMS_I18N_KEYS.builderUnsupportedConfig, { keys: spec.name }) }));
99
+ }
100
+ }
101
+ //# sourceMappingURL=ConfigField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigField.js","sourceRoot":"","sources":["../../src/default/ConfigField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { CSSProperties, ReactElement, ReactNode } from "react";
2
+ import type { FlowErrorDisplay } from "@stapel/core";
3
+ export declare function ErrorAlert(props: {
4
+ error: FlowErrorDisplay | undefined;
5
+ style?: CSSProperties | undefined;
6
+ testId?: string | undefined;
7
+ action?: ReactNode;
8
+ }): ReactElement | null;
9
+ //# sourceMappingURL=ErrorAlert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.d.ts","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAErD,wBAAgB,UAAU,CAAC,KAAK,EAAE;IAChC,KAAK,EAAE,gBAAgB,GAAG,SAAS,CAAC;IACpC,KAAK,CAAC,EAAE,aAAa,GAAG,SAAS,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB,GAAG,YAAY,GAAG,IAAI,CAsBtB"}
@@ -0,0 +1,27 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * The one error surface this pair's default skin renders, so the split copy
4
+ * core produces reaches a screen the same way everywhere (mirrors the
5
+ * docs/notifications/workspaces etalon).
6
+ *
7
+ * Core's `describeFlowError` splits a failure into the sentence a person
8
+ * reads and the technical detail a support agent quotes (owner report
9
+ * 2026-08-09: the status used to be spliced into the sentence, ending in a
10
+ * bare `" (500)"`). The split only helps if a skin renders both halves at
11
+ * their own weights: `message` at normal weight, `detail` muted and small.
12
+ *
13
+ * `undefined` in — including a `detail` core left `undefined` because there
14
+ * was nothing worth quoting — renders nothing rather than an empty line.
15
+ */
16
+ import { Alert, Typography } from "antd";
17
+ export function ErrorAlert(props) {
18
+ const { error } = props;
19
+ if (!error)
20
+ return null;
21
+ return (_jsx(Alert, { type: "error", showIcon: true, ...(props.style ? { style: props.style } : {}), ...(props.testId ? { "data-testid": props.testId } : {}), ...(props.action ? { action: props.action } : {}), message: error.message, ...(error.detail
22
+ ? {
23
+ description: (_jsx(Typography.Text, { type: "secondary", style: { fontSize: 12 }, children: error.detail })),
24
+ }
25
+ : {}) }));
26
+ }
27
+ //# sourceMappingURL=ErrorAlert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.js","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIzC,MAAM,UAAU,UAAU,CAAC,KAK1B;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,CAAC;IACxB,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,OAAO,CACL,KAAC,KAAK,IACJ,IAAI,EAAC,OAAO,EACZ,QAAQ,WACJ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAC3C,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KACrD,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAClD,OAAO,EAAE,KAAK,CAAC,OAAO,KAClB,CAAC,KAAK,CAAC,MAAM;YACf,CAAC,CAAC;gBACE,WAAW,EAAE,CACX,KAAC,UAAU,CAAC,IAAI,IAAC,IAAI,EAAC,WAAW,EAAC,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,YACtD,KAAK,CAAC,MAAM,GACG,CACnB;aACF;YACH,CAAC,CAAC,EAAE,CAAC,GACP,CACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * `<FormBuilderPane>` — the workspace admin's authoring surface.
3
+ *
4
+ * The §8 verdict in one component: form authoring is a REACT surface over
5
+ * capability-gated REST, because in this fleet "admin" means a workspace
6
+ * role and only REST reaches a workspace role — Django admin is a staff-only
7
+ * peephole that the actual form authors cannot open.
8
+ *
9
+ * The §8 scope discipline is visible in the code: there is no per-kind form
10
+ * anywhere here. A field's options come from `widgets/configForms.ts` and are
11
+ * drawn by `<ConfigField>`, chosen by config-widget kind. "Rich per-kind
12
+ * config editors and drag-reorder polish are explicitly allowed to be ugly in
13
+ * v1" — so reordering is two buttons, not a drag surface.
14
+ */
15
+ import type { ReactElement } from "react";
16
+ import type { FormRow } from "../api/types.js";
17
+ import type { BuilderField, FormBuilderBag } from "../headless/FormBuilder.js";
18
+ import type { ThemeModeProp } from "./types.js";
19
+ /** Props of the `"builder.toolbar"` slot. */
20
+ export interface BuilderToolbarSlotProps {
21
+ readonly bag: FormBuilderBag;
22
+ readonly row: FormRow;
23
+ }
24
+ /** Props of the `"builder.fieldRow"` slot. */
25
+ export interface BuilderFieldRowSlotProps {
26
+ readonly entry: BuilderField;
27
+ readonly index: number;
28
+ readonly total: number;
29
+ readonly bag: FormBuilderBag;
30
+ }
31
+ export interface FormBuilderPaneProps extends ThemeModeProp {
32
+ readonly workspaceId: string;
33
+ readonly formId: string;
34
+ }
35
+ export declare function FormBuilderPane(props: FormBuilderPaneProps): ReactElement;
36
+ //# sourceMappingURL=FormBuilderPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormBuilderPane.d.ts","sourceRoot":"","sources":["../../src/default/FormBuilderPane.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAyB1C,OAAO,KAAK,EAAmB,OAAO,EAAa,MAAM,iBAAiB,CAAC;AAE3E,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAK/E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,6CAA6C;AAC7C,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;IAC7B,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;CACvB;AAED,8CAA8C;AAC9C,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,GAAG,EAAE,cAAc,CAAC;CAC9B;AA6MD,MAAM,WAAW,oBAAqB,SAAQ,aAAa;IACzD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,YAAY,CA8IzE"}
@@ -0,0 +1,70 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Alert, Button, Card, Collapse, Empty, Flex, Form, Input, Select, Space, Spin, Switch, Tag, Typography, } from "antd";
3
+ import { matchList, matchLoad, toFlowError, useActionGate, useDescribeFlowError, useT, } from "@stapel/core";
4
+ import { FormBuilder } from "../headless/FormBuilder.js";
5
+ import { ConfigField } from "./ConfigField.js";
6
+ import { FormsSkinTheme } from "./theme.js";
7
+ import { ErrorAlert } from "./ErrorAlert.js";
8
+ import { resolveFormsSkinComponent } from "./slots.js";
9
+ import { FORMS_I18N_KEYS } from "../i18n/keys.js";
10
+ function FieldEditor(props) {
11
+ const t = useT();
12
+ const Slot = resolveFormsSkinComponent("builder.fieldRow");
13
+ if (Slot)
14
+ return _jsx(Slot, { ...props });
15
+ const { entry, index, total, bag } = props;
16
+ const { field } = entry;
17
+ const config = field.config ?? {};
18
+ return (_jsx(Card, { size: "small", "data-testid": `forms-builder-field-${field.slug}`, title: _jsxs(Flex, { align: "center", gap: 8, children: [_jsx(Tag, { children: field.kind }), _jsx(Typography.Text, { strong: true, children: field.name || field.slug })] }), extra: _jsxs(Space, { children: [_jsx(Button, { size: "small", disabled: index === 0, "data-analytics": "none", "data-analytics-reason": "local draft reorder; the save mutation is the tracked step", onClick: () => bag.moveField(field.slug, index - 1), children: t(FORMS_I18N_KEYS.builderMoveUp) }), _jsx(Button, { size: "small", disabled: index === total - 1, "data-analytics": "none", "data-analytics-reason": "local draft reorder; the save mutation is the tracked step", onClick: () => bag.moveField(field.slug, index + 1), children: t(FORMS_I18N_KEYS.builderMoveDown) }), _jsx(Button, { size: "small", danger: true, "data-analytics": "none", "data-analytics-reason": "local draft edit; the save mutation is the tracked step", onClick: () => bag.removeField(field.slug), children: t(FORMS_I18N_KEYS.builderRemoveField) })] }), children: _jsxs(Form, { layout: "vertical", size: "small", children: [_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldSlug), children: _jsx(Input, { value: field.slug, onChange: (event) => bag.updateField(field.slug, { slug: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldLabel), children: _jsx(Input, { value: field.name ?? "", onChange: (event) => bag.updateField(field.slug, { name: event.target.value }) }) }), field.kind !== "header" && (_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderFieldRequired), children: _jsx(Switch, { checked: field.mandatory === true, onChange: (checked) => bag.updateField(field.slug, { mandatory: checked }) }) })), entry.builderLess ? (_jsx(Alert, { type: "info", showIcon: true, "data-testid": "forms-builder-less",
19
+ // Two different facts, worded differently: the registry does not
20
+ // carry this kind at all, versus it carries it and it simply has
21
+ // no options. Collapsing them would tell an admin their schema is
22
+ // fine when the deployment cannot render the field.
23
+ message: t(entry.kindInfo === undefined || entry.kindInfo.registered === false
24
+ ? FORMS_I18N_KEYS.builderKindUnregistered
25
+ : FORMS_I18N_KEYS.builderBuilderLess) })) : (_jsx(Collapse, { size: "small", ghost: true, items: [
26
+ {
27
+ key: "config",
28
+ label: t(FORMS_I18N_KEYS.builderFieldKind),
29
+ children: (_jsx(_Fragment, { children: entry.configFields.map((spec) => (_jsx(Form.Item, { label: spec.name, children: _jsx(ConfigField, { spec: spec, value: config[spec.name], disabled: false, onChange: (next) => bag.setFieldConfig(field.slug, spec.name, next) }) }, spec.name))) })),
30
+ },
31
+ ] }))] }) }));
32
+ }
33
+ function Toolbar(props) {
34
+ const t = useT();
35
+ const saveGate = useActionGate(props.bag.save);
36
+ const publishGate = useActionGate(props.bag.publish);
37
+ const Slot = resolveFormsSkinComponent("builder.toolbar");
38
+ if (Slot)
39
+ return _jsx(Slot, { ...props });
40
+ const { bag, row } = props;
41
+ const stateLabel = {
42
+ draft: t(FORMS_I18N_KEYS.builderStateDraft),
43
+ open: t(FORMS_I18N_KEYS.builderStateOpen),
44
+ closed: t(FORMS_I18N_KEYS.builderStateClosed),
45
+ };
46
+ return (_jsxs(Flex, { vertical: true, gap: 8, children: [_jsxs(Flex, { gap: 8, wrap: true, align: "center", children: [_jsx(Button, { type: "default", loading: bag.isSaving, disabled: saveGate.disabled, "data-analytics": "flow", "data-testid": "forms-builder-save", onClick: bag.doSave, children: t(FORMS_I18N_KEYS.builderSave) }), _jsx(Button, { type: "primary", loading: bag.isPublishing, disabled: publishGate.disabled, "data-analytics": "flow", "data-testid": "forms-builder-publish", onClick: bag.doPublish, children: t(FORMS_I18N_KEYS.builderPublish) }), _jsx(Select, { style: { width: 140 }, value: row.state, onChange: (next) => bag.setState(next), options: ["draft", "open", "closed"].map((s) => ({
47
+ value: s,
48
+ label: stateLabel[s],
49
+ })) }), _jsx(Button, { "data-analytics": "flow", "data-testid": "forms-builder-rotate", onClick: bag.rotateLink, children: t(FORMS_I18N_KEYS.builderRotateLink) })] }), saveGate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", children: saveGate.reason })), publishGate.reason !== undefined && (_jsx(Typography.Text, { type: "secondary", "data-testid": "forms-publish-blocked", children: publishGate.reason })), _jsxs(Typography.Text, { type: "secondary", copyable: { text: row.public_id }, children: [t(FORMS_I18N_KEYS.builderPublicLink), ": ", row.public_id] })] }));
50
+ }
51
+ export function FormBuilderPane(props) {
52
+ const t = useT();
53
+ const describe = useDescribeFlowError();
54
+ return (_jsx(FormsSkinTheme, { ...(props.mode !== undefined ? { mode: props.mode } : {}), children: _jsx(FormBuilder, { workspaceId: props.workspaceId, formId: props.formId, children: (bag) => matchLoad(bag.state, {
55
+ loading: () => (_jsx(Flex, { justify: "center", style: { padding: 24 }, children: _jsx(Spin, { "data-testid": "forms-builder-loading" }) })),
56
+ // Never "this form does not exist" — a failed read is a failed
57
+ // read, and it offers a retry.
58
+ failed: (error) => (_jsx(ErrorAlert, { testId: "forms-builder-failed", error: describe(toFlowError(error)), action: _jsx(Button, { size: "small", onClick: bag.refetch, "data-analytics": "none", "data-analytics-reason": "retry of a failed read; no flow to step", children: t(FORMS_I18N_KEYS.fillRetry) }) })),
59
+ ready: (row) => (_jsxs(Flex, { vertical: true, gap: 16, children: [_jsx(Typography.Title, { level: 4, children: t(FORMS_I18N_KEYS.builderTitle) }), _jsx(Toolbar, { bag: bag, row: row }), bag.error !== null && (_jsx(ErrorAlert, { testId: "forms-builder-error", error: describe(toFlowError(bag.error)) })), _jsxs(Form, { layout: "vertical", children: [_jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaTitle), children: _jsx(Input, { value: bag.meta.title ?? "", onChange: (event) => bag.setMeta({ title: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaDescription), children: _jsx(Input.TextArea, { autoSize: { minRows: 2, maxRows: 5 }, value: bag.meta.description ?? "", onChange: (event) => bag.setMeta({ description: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaSubmitLabel), children: _jsx(Input, { value: bag.meta.submit_label ?? "", onChange: (event) => bag.setMeta({ submit_label: event.target.value }) }) }), _jsx(Form.Item, { label: t(FORMS_I18N_KEYS.builderMetaConfirmation), children: _jsx(Input, { value: bag.meta.confirmation_text ?? "", onChange: (event) => bag.setMeta({ confirmation_text: event.target.value }) }) })] }), bag.fields.length === 0 ? (_jsx(Empty, { description: t(FORMS_I18N_KEYS.builderEmpty) })) : (_jsx(Flex, { vertical: true, gap: 12, children: bag.fields.map((entry, index) => (_jsx(FieldEditor, { entry: entry, index: index, total: bag.fields.length, bag: bag }, entry.field.slug))) })), matchList(bag.availableKinds, {
60
+ loading: () => _jsx(Spin, { size: "small", "data-testid": "forms-kinds-loading" }),
61
+ failed: (error) => (_jsx(ErrorAlert, { testId: "forms-kinds-failed", error: {
62
+ ...describe(toFlowError(error)),
63
+ message: t(FORMS_I18N_KEYS.builderKindsFailed),
64
+ } })),
65
+ empty: () => (_jsx(Typography.Text, { type: "secondary", "data-testid": "forms-kinds-empty", children: t(FORMS_I18N_KEYS.builderNoKinds) })),
66
+ ready: (kinds) => (_jsx(Flex, { gap: 8, wrap: true, children: kinds.map((kind) => (_jsxs(Button, { size: "small", "data-analytics": "none", "data-analytics-reason": "local draft edit; the save mutation is the tracked step", "data-testid": `forms-builder-add-${kind.kind}`, onClick: () => bag.addField(kind.kind), children: [t(FORMS_I18N_KEYS.builderAddField), ": ", kind.kind] }, kind.kind))) })),
67
+ })] })),
68
+ }) }) }));
69
+ }
70
+ //# sourceMappingURL=FormBuilderPane.js.map