@stapel/categories-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 (205) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/MODULE.md +194 -0
  3. package/README.md +191 -0
  4. package/dist/api/categoriesApi.d.ts +121 -0
  5. package/dist/api/categoriesApi.d.ts.map +1 -0
  6. package/dist/api/categoriesApi.js +48 -0
  7. package/dist/api/categoriesApi.js.map +1 -0
  8. package/dist/api/generated/schema.d.ts +2321 -0
  9. package/dist/api/generated/schema.d.ts.map +1 -0
  10. package/dist/api/generated/schema.js +2 -0
  11. package/dist/api/generated/schema.js.map +1 -0
  12. package/dist/api/types.d.ts +92 -0
  13. package/dist/api/types.d.ts.map +1 -0
  14. package/dist/api/types.js +2 -0
  15. package/dist/api/types.js.map +1 -0
  16. package/dist/catalog/labels.d.ts +103 -0
  17. package/dist/catalog/labels.d.ts.map +1 -0
  18. package/dist/catalog/labels.js +56 -0
  19. package/dist/catalog/labels.js.map +1 -0
  20. package/dist/catalog/pks.d.ts +25 -0
  21. package/dist/catalog/pks.d.ts.map +1 -0
  22. package/dist/catalog/pks.js +38 -0
  23. package/dist/catalog/pks.js.map +1 -0
  24. package/dist/catalog/sync.d.ts +103 -0
  25. package/dist/catalog/sync.d.ts.map +1 -0
  26. package/dist/catalog/sync.js +114 -0
  27. package/dist/catalog/sync.js.map +1 -0
  28. package/dist/catalog/tree.d.ts +119 -0
  29. package/dist/catalog/tree.d.ts.map +1 -0
  30. package/dist/catalog/tree.js +166 -0
  31. package/dist/catalog/tree.js.map +1 -0
  32. package/dist/default/CatalogPage.d.ts +16 -0
  33. package/dist/default/CatalogPage.d.ts.map +1 -0
  34. package/dist/default/CatalogPage.js +13 -0
  35. package/dist/default/CatalogPage.js.map +1 -0
  36. package/dist/default/CategoryBreadcrumbsBar.d.ts +20 -0
  37. package/dist/default/CategoryBreadcrumbsBar.d.ts.map +1 -0
  38. package/dist/default/CategoryBreadcrumbsBar.js +35 -0
  39. package/dist/default/CategoryBreadcrumbsBar.js.map +1 -0
  40. package/dist/default/CategoryCarouselStrip.d.ts +22 -0
  41. package/dist/default/CategoryCarouselStrip.d.ts.map +1 -0
  42. package/dist/default/CategoryCarouselStrip.js +24 -0
  43. package/dist/default/CategoryCarouselStrip.js.map +1 -0
  44. package/dist/default/CategoryFeatureList.d.ts +23 -0
  45. package/dist/default/CategoryFeatureList.d.ts.map +1 -0
  46. package/dist/default/CategoryFeatureList.js +28 -0
  47. package/dist/default/CategoryFeatureList.js.map +1 -0
  48. package/dist/default/CategoryPage.d.ts +43 -0
  49. package/dist/default/CategoryPage.d.ts.map +1 -0
  50. package/dist/default/CategoryPage.js +21 -0
  51. package/dist/default/CategoryPage.js.map +1 -0
  52. package/dist/default/CategoryPickerField.d.ts +26 -0
  53. package/dist/default/CategoryPickerField.d.ts.map +1 -0
  54. package/dist/default/CategoryPickerField.js +40 -0
  55. package/dist/default/CategoryPickerField.js.map +1 -0
  56. package/dist/default/CategoryTreePane.d.ts +28 -0
  57. package/dist/default/CategoryTreePane.d.ts.map +1 -0
  58. package/dist/default/CategoryTreePane.js +25 -0
  59. package/dist/default/CategoryTreePane.js.map +1 -0
  60. package/dist/default/ErrorAlert.d.ts +9 -0
  61. package/dist/default/ErrorAlert.d.ts.map +1 -0
  62. package/dist/default/ErrorAlert.js +27 -0
  63. package/dist/default/ErrorAlert.js.map +1 -0
  64. package/dist/default/index.d.ts +37 -0
  65. package/dist/default/index.d.ts.map +1 -0
  66. package/dist/default/index.js +28 -0
  67. package/dist/default/index.js.map +1 -0
  68. package/dist/default/theme.d.ts +25 -0
  69. package/dist/default/theme.d.ts.map +1 -0
  70. package/dist/default/theme.js +40 -0
  71. package/dist/default/theme.js.map +1 -0
  72. package/dist/default/types.d.ts +12 -0
  73. package/dist/default/types.d.ts.map +1 -0
  74. package/dist/default/types.js +2 -0
  75. package/dist/default/types.js.map +1 -0
  76. package/dist/headless/CategoriesProvider.d.ts +19 -0
  77. package/dist/headless/CategoriesProvider.d.ts.map +1 -0
  78. package/dist/headless/CategoriesProvider.js +15 -0
  79. package/dist/headless/CategoriesProvider.js.map +1 -0
  80. package/dist/headless/CategoryBreadcrumbs.d.ts +40 -0
  81. package/dist/headless/CategoryBreadcrumbs.d.ts.map +1 -0
  82. package/dist/headless/CategoryBreadcrumbs.js +42 -0
  83. package/dist/headless/CategoryBreadcrumbs.js.map +1 -0
  84. package/dist/headless/CategoryCarousel.d.ts +48 -0
  85. package/dist/headless/CategoryCarousel.d.ts.map +1 -0
  86. package/dist/headless/CategoryCarousel.js +34 -0
  87. package/dist/headless/CategoryCarousel.js.map +1 -0
  88. package/dist/headless/CategoryFeatures.d.ts +67 -0
  89. package/dist/headless/CategoryFeatures.d.ts.map +1 -0
  90. package/dist/headless/CategoryFeatures.js +46 -0
  91. package/dist/headless/CategoryFeatures.js.map +1 -0
  92. package/dist/headless/CategoryPicker.d.ts +69 -0
  93. package/dist/headless/CategoryPicker.d.ts.map +1 -0
  94. package/dist/headless/CategoryPicker.js +86 -0
  95. package/dist/headless/CategoryPicker.js.map +1 -0
  96. package/dist/headless/CategoryTree.d.ts +55 -0
  97. package/dist/headless/CategoryTree.d.ts.map +1 -0
  98. package/dist/headless/CategoryTree.js +51 -0
  99. package/dist/headless/CategoryTree.js.map +1 -0
  100. package/dist/i18n/errorsMap.d.ts +22 -0
  101. package/dist/i18n/errorsMap.d.ts.map +1 -0
  102. package/dist/i18n/errorsMap.js +31 -0
  103. package/dist/i18n/errorsMap.js.map +1 -0
  104. package/dist/i18n/es.d.ts +25 -0
  105. package/dist/i18n/es.d.ts.map +1 -0
  106. package/dist/i18n/es.js +74 -0
  107. package/dist/i18n/es.js.map +1 -0
  108. package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
  109. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
  110. package/dist/i18n/generated/errors.es.gen.js +58 -0
  111. package/dist/i18n/generated/errors.es.gen.js.map +1 -0
  112. package/dist/i18n/generated/errors.gen.d.ts +407 -0
  113. package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
  114. package/dist/i18n/generated/errors.gen.js +207 -0
  115. package/dist/i18n/generated/errors.gen.js.map +1 -0
  116. package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
  117. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
  118. package/dist/i18n/generated/errors.ru.gen.js +58 -0
  119. package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
  120. package/dist/i18n/keys.d.ts +89 -0
  121. package/dist/i18n/keys.d.ts.map +1 -0
  122. package/dist/i18n/keys.js +134 -0
  123. package/dist/i18n/keys.js.map +1 -0
  124. package/dist/i18n/ru.d.ts +41 -0
  125. package/dist/i18n/ru.d.ts.map +1 -0
  126. package/dist/i18n/ru.js +90 -0
  127. package/dist/i18n/ru.js.map +1 -0
  128. package/dist/index.d.ts +88 -0
  129. package/dist/index.d.ts.map +1 -0
  130. package/dist/index.js +78 -0
  131. package/dist/index.js.map +1 -0
  132. package/dist/model/catalogStore.d.ts +23 -0
  133. package/dist/model/catalogStore.d.ts.map +1 -0
  134. package/dist/model/catalogStore.js +85 -0
  135. package/dist/model/catalogStore.js.map +1 -0
  136. package/dist/model/catalogSync.d.ts +49 -0
  137. package/dist/model/catalogSync.d.ts.map +1 -0
  138. package/dist/model/catalogSync.js +64 -0
  139. package/dist/model/catalogSync.js.map +1 -0
  140. package/dist/model/context.d.ts +11 -0
  141. package/dist/model/context.d.ts.map +1 -0
  142. package/dist/model/context.js +16 -0
  143. package/dist/model/context.js.map +1 -0
  144. package/dist/model/queries.d.ts +124 -0
  145. package/dist/model/queries.d.ts.map +1 -0
  146. package/dist/model/queries.js +147 -0
  147. package/dist/model/queries.js.map +1 -0
  148. package/dist/model/queryKeys.d.ts +30 -0
  149. package/dist/model/queryKeys.d.ts.map +1 -0
  150. package/dist/model/queryKeys.js +16 -0
  151. package/dist/model/queryKeys.js.map +1 -0
  152. package/dist/model/runtime.d.ts +31 -0
  153. package/dist/model/runtime.d.ts.map +1 -0
  154. package/dist/model/runtime.js +6 -0
  155. package/dist/model/runtime.js.map +1 -0
  156. package/dist/nav/manifest.d.ts +31 -0
  157. package/dist/nav/manifest.d.ts.map +1 -0
  158. package/dist/nav/manifest.js +37 -0
  159. package/dist/nav/manifest.js.map +1 -0
  160. package/llms.txt +125 -0
  161. package/manifest.json +918 -0
  162. package/nav-manifest.json +44 -0
  163. package/package.json +119 -0
  164. package/src/analytics/generated/events.json +7 -0
  165. package/src/api/categoriesApi.ts +179 -0
  166. package/src/api/generated/schema.ts +2323 -0
  167. package/src/api/types.ts +99 -0
  168. package/src/catalog/labels.ts +129 -0
  169. package/src/catalog/pks.ts +35 -0
  170. package/src/catalog/sync.ts +169 -0
  171. package/src/catalog/tree.ts +242 -0
  172. package/src/default/CatalogPage.tsx +40 -0
  173. package/src/default/CategoryBreadcrumbsBar.tsx +93 -0
  174. package/src/default/CategoryCarouselStrip.tsx +102 -0
  175. package/src/default/CategoryFeatureList.tsx +125 -0
  176. package/src/default/CategoryPage.tsx +114 -0
  177. package/src/default/CategoryPickerField.tsx +173 -0
  178. package/src/default/CategoryTreePane.tsx +134 -0
  179. package/src/default/ErrorAlert.tsx +46 -0
  180. package/src/default/index.ts +36 -0
  181. package/src/default/theme.tsx +67 -0
  182. package/src/default/types.ts +12 -0
  183. package/src/headless/CategoriesProvider.tsx +20 -0
  184. package/src/headless/CategoryBreadcrumbs.tsx +78 -0
  185. package/src/headless/CategoryCarousel.tsx +80 -0
  186. package/src/headless/CategoryFeatures.tsx +100 -0
  187. package/src/headless/CategoryPicker.tsx +173 -0
  188. package/src/headless/CategoryTree.tsx +115 -0
  189. package/src/i18n/errorsMap.ts +46 -0
  190. package/src/i18n/es.ts +92 -0
  191. package/src/i18n/generated/errors.es.gen.ts +64 -0
  192. package/src/i18n/generated/errors.gen.ts +238 -0
  193. package/src/i18n/generated/errors.json +495 -0
  194. package/src/i18n/generated/errors.ru.gen.ts +64 -0
  195. package/src/i18n/keys.ts +156 -0
  196. package/src/i18n/ru.ts +110 -0
  197. package/src/index.ts +191 -0
  198. package/src/model/catalogStore.ts +102 -0
  199. package/src/model/catalogSync.ts +115 -0
  200. package/src/model/context.tsx +28 -0
  201. package/src/model/queries.ts +226 -0
  202. package/src/model/queryKeys.ts +50 -0
  203. package/src/model/runtime.ts +39 -0
  204. package/src/nav/manifest.ts +66 -0
  205. package/tsconfig.json +26 -0
package/manifest.json ADDED
@@ -0,0 +1,918 @@
1
+ {
2
+ "$generated": "by scripts/gen-manifest.mjs — do not edit; drift-gated (pnpm gen:manifest:check)",
3
+ "package": "@stapel/categories-react",
4
+ "version": "0.1.0",
5
+ "backend": {
6
+ "module": "stapel-categories",
7
+ "contract": ">=0.6 <0.7"
8
+ },
9
+ "layers": [
10
+ "api",
11
+ "model",
12
+ "flows",
13
+ "headless",
14
+ "i18n"
15
+ ],
16
+ "flows": {},
17
+ "machines": [],
18
+ "operations": {
19
+ "categories_api_v1_categories_bulk_add_create": {
20
+ "method": "POST",
21
+ "path": "/categories/api/v1/categories/bulk_add/",
22
+ "tag": "Categories",
23
+ "request": null,
24
+ "response": "BulkUpdateResponse"
25
+ },
26
+ "categories_api_v1_categories_bulk_commands_create": {
27
+ "method": "POST",
28
+ "path": "/categories/api/v1/categories/bulk-commands/",
29
+ "tag": "Categories",
30
+ "request": "CategoryBulkCommand",
31
+ "response": null
32
+ },
33
+ "categories_api_v1_categories_carousel_list": {
34
+ "method": "GET",
35
+ "path": "/categories/api/v1/categories/carousel/",
36
+ "tag": "Categories",
37
+ "request": null,
38
+ "response": null
39
+ },
40
+ "categories_api_v1_categories_children_list": {
41
+ "method": "GET",
42
+ "path": "/categories/api/v1/categories/{id}/children/",
43
+ "tag": "Categories",
44
+ "request": null,
45
+ "response": null
46
+ },
47
+ "categories_api_v1_categories_create": {
48
+ "method": "POST",
49
+ "path": "/categories/api/v1/categories/",
50
+ "tag": "Categories",
51
+ "request": "Category",
52
+ "response": "Category"
53
+ },
54
+ "categories_api_v1_categories_data.json_retrieve": {
55
+ "method": "GET",
56
+ "path": "/categories/api/v1/categories/data.json/",
57
+ "tag": "Categories",
58
+ "request": null,
59
+ "response": "Category"
60
+ },
61
+ "categories_api_v1_categories_deleted_children_list": {
62
+ "method": "GET",
63
+ "path": "/categories/api/v1/categories/{id}/deleted-children/",
64
+ "tag": "Categories",
65
+ "request": null,
66
+ "response": null
67
+ },
68
+ "categories_api_v1_categories_destroy": {
69
+ "method": "DELETE",
70
+ "path": "/categories/api/v1/categories/{id}/",
71
+ "tag": "Categories",
72
+ "request": null,
73
+ "response": null
74
+ },
75
+ "categories_api_v1_categories_feature_editor_apply_create": {
76
+ "method": "POST",
77
+ "path": "/categories/api/v1/categories/{id}/feature-editor/apply/",
78
+ "tag": "Feature Editor",
79
+ "request": "FeatureEditorApply",
80
+ "response": "FeatureEditorState"
81
+ },
82
+ "categories_api_v1_categories_feature_editor_draft_create": {
83
+ "method": "POST",
84
+ "path": "/categories/api/v1/categories/{id}/feature-editor/draft/",
85
+ "tag": "Feature Editor",
86
+ "request": "FeatureEditorDraft",
87
+ "response": "FeatureEditorDraftResponse"
88
+ },
89
+ "categories_api_v1_categories_feature_editor_retrieve": {
90
+ "method": "GET",
91
+ "path": "/categories/api/v1/categories/{id}/feature-editor/",
92
+ "tag": "Feature Editor",
93
+ "request": null,
94
+ "response": "FeatureEditorState"
95
+ },
96
+ "categories_api_v1_categories_features_list": {
97
+ "method": "GET",
98
+ "path": "/categories/api/v1/categories/{id}/features/",
99
+ "tag": "Categories",
100
+ "request": null,
101
+ "response": null
102
+ },
103
+ "categories_api_v1_categories_list": {
104
+ "method": "GET",
105
+ "path": "/categories/api/v1/categories/",
106
+ "tag": "Categories",
107
+ "request": null,
108
+ "response": "PaginatedCategoryList"
109
+ },
110
+ "categories_api_v1_categories_partial_update": {
111
+ "method": "PATCH",
112
+ "path": "/categories/api/v1/categories/{id}/",
113
+ "tag": "Categories",
114
+ "request": "PatchedCategory",
115
+ "response": "Category"
116
+ },
117
+ "categories_api_v1_categories_retrieve": {
118
+ "method": "GET",
119
+ "path": "/categories/api/v1/categories/{id}/",
120
+ "tag": "Categories",
121
+ "request": null,
122
+ "response": "Category"
123
+ },
124
+ "categories_api_v1_categories_revision_retrieve": {
125
+ "method": "GET",
126
+ "path": "/categories/api/v1/categories/revision/",
127
+ "tag": "Categories",
128
+ "request": null,
129
+ "response": "MaxRevision"
130
+ },
131
+ "categories_api_v1_categories_undelete_create": {
132
+ "method": "POST",
133
+ "path": "/categories/api/v1/categories/{id}/undelete/",
134
+ "tag": "Categories",
135
+ "request": "Category",
136
+ "response": "UndeleteResponse"
137
+ },
138
+ "categories_api_v1_categories_update": {
139
+ "method": "PUT",
140
+ "path": "/categories/api/v1/categories/{id}/",
141
+ "tag": "Categories",
142
+ "request": "Category",
143
+ "response": "Category"
144
+ },
145
+ "categories_api_v1_categories_validate_configs_retrieve": {
146
+ "method": "GET",
147
+ "path": "/categories/api/v1/categories/{id}/validate-configs/",
148
+ "tag": "Categories",
149
+ "request": null,
150
+ "response": "ValidationBatchResult"
151
+ },
152
+ "categories_api_v1_categories_validate_dto_create": {
153
+ "method": "POST",
154
+ "path": "/categories/api/v1/categories/{id}/validate-dto/",
155
+ "tag": "Categories",
156
+ "request": "ValidateDtoRequest",
157
+ "response": "ValidationBatchResult"
158
+ },
159
+ "categories_api_v1_features_bulk_add_create": {
160
+ "method": "POST",
161
+ "path": "/categories/api/v1/features/bulk_add/",
162
+ "tag": "Features",
163
+ "request": null,
164
+ "response": "BulkUpdateResponse"
165
+ },
166
+ "categories_api_v1_features_convert_type_create": {
167
+ "method": "POST",
168
+ "path": "/categories/api/v1/features/{id}/convert-type/",
169
+ "tag": "Features",
170
+ "request": "FeatureConvertType",
171
+ "response": "Feature"
172
+ },
173
+ "categories_api_v1_features_create": {
174
+ "method": "POST",
175
+ "path": "/categories/api/v1/features/",
176
+ "tag": "Features",
177
+ "request": "FeatureCreateUpdate",
178
+ "response": "Feature"
179
+ },
180
+ "categories_api_v1_features_data.json_retrieve": {
181
+ "method": "GET",
182
+ "path": "/categories/api/v1/features/data.json/",
183
+ "tag": "Features",
184
+ "request": null,
185
+ "response": "Feature"
186
+ },
187
+ "categories_api_v1_features_destroy": {
188
+ "method": "DELETE",
189
+ "path": "/categories/api/v1/features/{id}/",
190
+ "tag": "Features",
191
+ "request": null,
192
+ "response": null
193
+ },
194
+ "categories_api_v1_features_list": {
195
+ "method": "GET",
196
+ "path": "/categories/api/v1/features/",
197
+ "tag": "Features",
198
+ "request": null,
199
+ "response": "PaginatedFeatureCompactList"
200
+ },
201
+ "categories_api_v1_features_partial_update": {
202
+ "method": "PATCH",
203
+ "path": "/categories/api/v1/features/{id}/",
204
+ "tag": "Features",
205
+ "request": "PatchedFeatureCreateUpdate",
206
+ "response": "Feature"
207
+ },
208
+ "categories_api_v1_features_retrieve": {
209
+ "method": "GET",
210
+ "path": "/categories/api/v1/features/{id}/",
211
+ "tag": "Features",
212
+ "request": null,
213
+ "response": "Feature"
214
+ },
215
+ "categories_api_v1_features_revision_retrieve": {
216
+ "method": "GET",
217
+ "path": "/categories/api/v1/features/revision/",
218
+ "tag": "Features",
219
+ "request": null,
220
+ "response": "MaxRevision"
221
+ },
222
+ "categories_api_v1_features_update": {
223
+ "method": "PUT",
224
+ "path": "/categories/api/v1/features/{id}/",
225
+ "tag": "Features",
226
+ "request": "FeatureCreateUpdate",
227
+ "response": "Feature"
228
+ },
229
+ "collect_translation_keys": {
230
+ "method": "GET",
231
+ "path": "/categories/api/v1/categories/translation-keys/",
232
+ "tag": "Categories",
233
+ "request": null,
234
+ "response": null
235
+ }
236
+ },
237
+ "hooks": {
238
+ "useCategoriesRevision": {
239
+ "kind": "query",
240
+ "operation": "revision",
241
+ "queryKey": [
242
+ "categories",
243
+ "revision"
244
+ ]
245
+ },
246
+ "useCategoryCarousel": {
247
+ "kind": "query",
248
+ "operation": "carousel",
249
+ "queryKey": [
250
+ "categories",
251
+ "carousel"
252
+ ]
253
+ },
254
+ "useCategoryCatalog": {
255
+ "kind": "query",
256
+ "queryKey": [
257
+ "categories",
258
+ "catalog",
259
+ "{options}"
260
+ ]
261
+ },
262
+ "useCategoryChildren": {
263
+ "kind": "query",
264
+ "operation": "children",
265
+ "queryKey": [
266
+ "categories",
267
+ "children",
268
+ "{id}"
269
+ ]
270
+ },
271
+ "useCategoryFeatures": {
272
+ "kind": "query",
273
+ "operation": "features",
274
+ "queryKey": [
275
+ "categories",
276
+ "features",
277
+ "{id}"
278
+ ]
279
+ }
280
+ },
281
+ "errors": {
282
+ "error.400.bad_request": {
283
+ "status": 400,
284
+ "params": [],
285
+ "remediation": "fix_input"
286
+ },
287
+ "error.400.captcha_invalid": {
288
+ "status": 400,
289
+ "params": [],
290
+ "remediation": "retry"
291
+ },
292
+ "error.400.captcha_required": {
293
+ "status": 400,
294
+ "params": [],
295
+ "remediation": "retry"
296
+ },
297
+ "error.400.categories_config_required": {
298
+ "status": 400,
299
+ "params": [],
300
+ "remediation": "fix_input"
301
+ },
302
+ "error.400.categories_database_error": {
303
+ "status": 400,
304
+ "params": [],
305
+ "remediation": "fix_input"
306
+ },
307
+ "error.400.categories_duplicate_slug": {
308
+ "status": 400,
309
+ "params": [
310
+ "slug"
311
+ ],
312
+ "remediation": "fix_input"
313
+ },
314
+ "error.400.categories_expected_list": {
315
+ "status": 400,
316
+ "params": [],
317
+ "remediation": "fix_input"
318
+ },
319
+ "error.400.categories_feature_editor_invalid": {
320
+ "status": 400,
321
+ "params": [
322
+ "reason"
323
+ ],
324
+ "remediation": "fix_input"
325
+ },
326
+ "error.400.categories_invalid_conversion": {
327
+ "status": 400,
328
+ "params": [],
329
+ "remediation": "fix_input"
330
+ },
331
+ "error.400.categories_not_deleted": {
332
+ "status": 400,
333
+ "params": [],
334
+ "remediation": "fix_input"
335
+ },
336
+ "error.400.description_too_long": {
337
+ "status": 400,
338
+ "params": [
339
+ "max_length"
340
+ ],
341
+ "remediation": "fix_input"
342
+ },
343
+ "error.400.description_too_short": {
344
+ "status": 400,
345
+ "params": [
346
+ "min_length"
347
+ ],
348
+ "remediation": "fix_input"
349
+ },
350
+ "error.400.expected_list": {
351
+ "status": 400,
352
+ "params": [],
353
+ "remediation": "fix_input"
354
+ },
355
+ "error.400.feature_above_maximum": {
356
+ "status": 400,
357
+ "params": [
358
+ "feature"
359
+ ],
360
+ "remediation": "fix_input"
361
+ },
362
+ "error.400.feature_below_minimum": {
363
+ "status": 400,
364
+ "params": [
365
+ "feature"
366
+ ],
367
+ "remediation": "fix_input"
368
+ },
369
+ "error.400.feature_invalid_config": {
370
+ "status": 400,
371
+ "params": [
372
+ "feature"
373
+ ],
374
+ "remediation": "fix_input"
375
+ },
376
+ "error.400.feature_invalid_format": {
377
+ "status": 400,
378
+ "params": [
379
+ "feature"
380
+ ],
381
+ "remediation": "fix_input"
382
+ },
383
+ "error.400.feature_invalid_type": {
384
+ "status": 400,
385
+ "params": [
386
+ "feature"
387
+ ],
388
+ "remediation": "fix_input"
389
+ },
390
+ "error.400.feature_mandatory_missing": {
391
+ "status": 400,
392
+ "params": [
393
+ "feature"
394
+ ],
395
+ "remediation": "fix_input"
396
+ },
397
+ "error.400.feature_not_allowed": {
398
+ "status": 400,
399
+ "params": [
400
+ "feature"
401
+ ],
402
+ "remediation": "fix_input"
403
+ },
404
+ "error.400.feature_not_in_options": {
405
+ "status": 400,
406
+ "params": [
407
+ "feature"
408
+ ],
409
+ "remediation": "fix_input"
410
+ },
411
+ "error.400.feature_unknown": {
412
+ "status": 400,
413
+ "params": [
414
+ "feature"
415
+ ],
416
+ "remediation": "fix_input"
417
+ },
418
+ "error.400.feature_unknown_type": {
419
+ "status": 400,
420
+ "params": [
421
+ "feature"
422
+ ],
423
+ "remediation": "fix_input"
424
+ },
425
+ "error.400.field.blank": {
426
+ "status": 400,
427
+ "params": [
428
+ "field"
429
+ ],
430
+ "remediation": "fix_input"
431
+ },
432
+ "error.400.field.does_not_exist": {
433
+ "status": 400,
434
+ "params": [
435
+ "field"
436
+ ],
437
+ "remediation": "fix_input"
438
+ },
439
+ "error.400.field.invalid": {
440
+ "status": 400,
441
+ "params": [
442
+ "field"
443
+ ],
444
+ "remediation": "fix_input"
445
+ },
446
+ "error.400.field.invalid_choice": {
447
+ "status": 400,
448
+ "params": [
449
+ "field"
450
+ ],
451
+ "remediation": "fix_input"
452
+ },
453
+ "error.400.field.max_length": {
454
+ "status": 400,
455
+ "params": [
456
+ "field",
457
+ "max_length"
458
+ ],
459
+ "remediation": "fix_input"
460
+ },
461
+ "error.400.field.max_value": {
462
+ "status": 400,
463
+ "params": [
464
+ "field",
465
+ "max_value"
466
+ ],
467
+ "remediation": "fix_input"
468
+ },
469
+ "error.400.field.min_length": {
470
+ "status": 400,
471
+ "params": [
472
+ "field",
473
+ "min_length"
474
+ ],
475
+ "remediation": "fix_input"
476
+ },
477
+ "error.400.field.min_value": {
478
+ "status": 400,
479
+ "params": [
480
+ "field",
481
+ "min_value"
482
+ ],
483
+ "remediation": "fix_input"
484
+ },
485
+ "error.400.field.null": {
486
+ "status": 400,
487
+ "params": [
488
+ "field"
489
+ ],
490
+ "remediation": "fix_input"
491
+ },
492
+ "error.400.field.required": {
493
+ "status": 400,
494
+ "params": [
495
+ "field"
496
+ ],
497
+ "remediation": "fix_input"
498
+ },
499
+ "error.400.field.unique": {
500
+ "status": 400,
501
+ "params": [
502
+ "field"
503
+ ],
504
+ "remediation": "fix_input"
505
+ },
506
+ "error.400.invalid_ad_id": {
507
+ "status": 400,
508
+ "params": [],
509
+ "remediation": "fix_input"
510
+ },
511
+ "error.400.validation_error": {
512
+ "status": 400,
513
+ "params": [],
514
+ "remediation": "fix_input"
515
+ },
516
+ "error.400.verification_failed": {
517
+ "status": 400,
518
+ "params": [],
519
+ "remediation": "verify"
520
+ },
521
+ "error.400.verification_invalid_factor": {
522
+ "status": 400,
523
+ "params": [],
524
+ "remediation": "verify"
525
+ },
526
+ "error.401.unauthorized": {
527
+ "status": 401,
528
+ "params": [],
529
+ "remediation": "reauthenticate"
530
+ },
531
+ "error.402.payment_required": {
532
+ "status": 402,
533
+ "params": [],
534
+ "remediation": "retry"
535
+ },
536
+ "error.403.forbidden": {
537
+ "status": 403,
538
+ "params": [],
539
+ "remediation": "retry"
540
+ },
541
+ "error.403.network_blocked": {
542
+ "status": 403,
543
+ "params": [],
544
+ "remediation": "contact_support"
545
+ },
546
+ "error.403.verification_enrollment_required": {
547
+ "status": 403,
548
+ "params": [],
549
+ "remediation": "verify"
550
+ },
551
+ "error.403.verification_required": {
552
+ "status": 403,
553
+ "params": [],
554
+ "remediation": "verify"
555
+ },
556
+ "error.404.ad_not_found": {
557
+ "status": 404,
558
+ "params": [],
559
+ "remediation": "retry"
560
+ },
561
+ "error.404.not_found": {
562
+ "status": 404,
563
+ "params": [],
564
+ "remediation": "retry"
565
+ },
566
+ "error.404.verification_challenge_not_found": {
567
+ "status": 404,
568
+ "params": [],
569
+ "remediation": "verify"
570
+ },
571
+ "error.405.method_not_allowed": {
572
+ "status": 405,
573
+ "params": [],
574
+ "remediation": "retry"
575
+ },
576
+ "error.406.not_acceptable": {
577
+ "status": 406,
578
+ "params": [],
579
+ "remediation": "retry"
580
+ },
581
+ "error.408.request_timeout": {
582
+ "status": 408,
583
+ "params": [],
584
+ "remediation": "retry"
585
+ },
586
+ "error.409.categories_feature_editor_conflict": {
587
+ "status": 409,
588
+ "params": [
589
+ "expected",
590
+ "actual"
591
+ ],
592
+ "remediation": "fix_input"
593
+ },
594
+ "error.409.conflict": {
595
+ "status": 409,
596
+ "params": [],
597
+ "remediation": "fix_input"
598
+ },
599
+ "error.410.gone": {
600
+ "status": 410,
601
+ "params": [],
602
+ "remediation": "retry"
603
+ },
604
+ "error.413.payload_too_large": {
605
+ "status": 413,
606
+ "params": [],
607
+ "remediation": "retry"
608
+ },
609
+ "error.415.unsupported_media_type": {
610
+ "status": 415,
611
+ "params": [],
612
+ "remediation": "retry"
613
+ },
614
+ "error.422.unprocessable_entity": {
615
+ "status": 422,
616
+ "params": [],
617
+ "remediation": "wait_and_retry"
618
+ },
619
+ "error.423.locked": {
620
+ "status": 423,
621
+ "params": [],
622
+ "remediation": "wait_and_retry"
623
+ },
624
+ "error.423.verification_locked": {
625
+ "status": 423,
626
+ "params": [],
627
+ "remediation": "wait_and_retry"
628
+ },
629
+ "error.429.rate_limit": {
630
+ "status": 429,
631
+ "params": [
632
+ "retry_after_minutes"
633
+ ],
634
+ "remediation": "wait_and_retry"
635
+ },
636
+ "error.429.too_many_requests": {
637
+ "status": 429,
638
+ "params": [],
639
+ "remediation": "wait_and_retry"
640
+ },
641
+ "error.500.internal": {
642
+ "status": 500,
643
+ "params": [],
644
+ "remediation": "contact_support"
645
+ },
646
+ "error.503.mandate_unavailable": {
647
+ "status": 503,
648
+ "params": [],
649
+ "remediation": "retry"
650
+ }
651
+ },
652
+ "events": {
653
+ "defined": [],
654
+ "flows": []
655
+ },
656
+ "demos": [
657
+ {
658
+ "id": "categories.carousel",
659
+ "title": "Carousel and breadcrumbs",
660
+ "description": "The carousel is the one endpoint that arrives ready to render — the server filters active + carousel_enabled and sends its own Cache-Control. Icon references stay opaque strings: the host resolves them, the library never guesses a CDN path. Each label reports whether it is a translation key or a literal.",
661
+ "component": "CategoryCarousel",
662
+ "covers": [
663
+ "CategoryBreadcrumbs"
664
+ ],
665
+ "tokens": [
666
+ "surface-raised"
667
+ ],
668
+ "variants": [
669
+ "default"
670
+ ],
671
+ "source": "demo/CategoryCarousel.demo.tsx"
672
+ },
673
+ {
674
+ "id": "categories.features",
675
+ "title": "Category feature schema",
676
+ "description": "GET /categories/{id}/features/ resolves inheritance and order server-side and sends config VERBATIM — no defaults filled in, so an absent key means the type's default and attributes-react owns those. Each row reports whether its name and its option labels are translation keys, and one fixture carries a type no builtin editor covers.",
677
+ "component": "CategoryFeatures",
678
+ "tokens": [
679
+ "surface-raised"
680
+ ],
681
+ "variants": [
682
+ "default"
683
+ ],
684
+ "source": "demo/CategoryFeatures.demo.tsx"
685
+ },
686
+ {
687
+ "id": "categories.picker",
688
+ "title": "Category picker",
689
+ "description": "Drill-down over the already-synced tree — no request per level, and none per keystroke when searching. leavesOnly is on by default and the refusal says why: a listing filed one level too high inherits the wrong feature set, so the form then asks the wrong questions.",
690
+ "component": "CategoryPicker",
691
+ "tokens": [
692
+ "surface-raised"
693
+ ],
694
+ "variants": [
695
+ "default"
696
+ ],
697
+ "source": "demo/CategoryPicker.demo.tsx"
698
+ },
699
+ {
700
+ "id": "categories.tree",
701
+ "title": "Category tree",
702
+ "description": "stapel-categories has no tree endpoint: the list returns flat rows ordered by revision, with ancestry as comma-joined pk strings. The client assembles the hierarchy, drops soft-deleted and inactive rows, and resolves /c/:slug against the result — the server has no slug lookup either.",
703
+ "component": "CategoryTree",
704
+ "covers": [
705
+ "CategoriesProvider"
706
+ ],
707
+ "tokens": [
708
+ "surface-raised"
709
+ ],
710
+ "variants": [
711
+ "roots",
712
+ "one category"
713
+ ],
714
+ "source": "demo/CategoryTree.demo.tsx"
715
+ }
716
+ ],
717
+ "i18nKeys": [
718
+ "categories.breadcrumbs.label",
719
+ "categories.breadcrumbs.root",
720
+ "categories.carousel.empty",
721
+ "categories.carousel.load_failed",
722
+ "categories.carousel.loading",
723
+ "categories.carousel.title",
724
+ "categories.catalog.as_of",
725
+ "categories.catalog.empty",
726
+ "categories.catalog.load_failed",
727
+ "categories.catalog.loading",
728
+ "categories.catalog.refreshing",
729
+ "categories.catalog.retry",
730
+ "categories.catalog.title",
731
+ "categories.catalog.truncated",
732
+ "categories.category.no_subcategories",
733
+ "categories.category.open",
734
+ "categories.category.subcategories",
735
+ "categories.category.title",
736
+ "categories.category.unknown_slug",
737
+ "categories.error.unknown",
738
+ "categories.features.empty",
739
+ "categories.features.load_failed",
740
+ "categories.features.loading",
741
+ "categories.features.mandatory",
742
+ "categories.features.title",
743
+ "categories.features.type",
744
+ "categories.features.untyped",
745
+ "categories.picker.blocked.not_a_leaf",
746
+ "categories.picker.blocked.nothing_selected",
747
+ "categories.picker.load_failed",
748
+ "categories.picker.loading",
749
+ "categories.picker.no_matches",
750
+ "categories.picker.search",
751
+ "categories.picker.selected",
752
+ "categories.picker.title",
753
+ "categories.picker.up",
754
+ "error.400.bad_request",
755
+ "error.400.captcha_invalid",
756
+ "error.400.captcha_required",
757
+ "error.400.categories_config_required",
758
+ "error.400.categories_database_error",
759
+ "error.400.categories_duplicate_slug",
760
+ "error.400.categories_expected_list",
761
+ "error.400.categories_feature_editor_invalid",
762
+ "error.400.categories_invalid_conversion",
763
+ "error.400.categories_not_deleted",
764
+ "error.400.description_too_long",
765
+ "error.400.description_too_short",
766
+ "error.400.expected_list",
767
+ "error.400.feature_above_maximum",
768
+ "error.400.feature_below_minimum",
769
+ "error.400.feature_invalid_config",
770
+ "error.400.feature_invalid_format",
771
+ "error.400.feature_invalid_type",
772
+ "error.400.feature_mandatory_missing",
773
+ "error.400.feature_not_allowed",
774
+ "error.400.feature_not_in_options",
775
+ "error.400.feature_unknown",
776
+ "error.400.feature_unknown_type",
777
+ "error.400.field.blank",
778
+ "error.400.field.does_not_exist",
779
+ "error.400.field.invalid",
780
+ "error.400.field.invalid_choice",
781
+ "error.400.field.max_length",
782
+ "error.400.field.max_value",
783
+ "error.400.field.min_length",
784
+ "error.400.field.min_value",
785
+ "error.400.field.null",
786
+ "error.400.field.required",
787
+ "error.400.field.unique",
788
+ "error.400.invalid_ad_id",
789
+ "error.400.validation_error",
790
+ "error.400.verification_failed",
791
+ "error.400.verification_invalid_factor",
792
+ "error.401.unauthorized",
793
+ "error.402.payment_required",
794
+ "error.403.forbidden",
795
+ "error.403.network_blocked",
796
+ "error.403.verification_enrollment_required",
797
+ "error.403.verification_required",
798
+ "error.404.ad_not_found",
799
+ "error.404.not_found",
800
+ "error.404.verification_challenge_not_found",
801
+ "error.405.method_not_allowed",
802
+ "error.406.not_acceptable",
803
+ "error.408.request_timeout",
804
+ "error.409.categories_feature_editor_conflict",
805
+ "error.409.conflict",
806
+ "error.410.gone",
807
+ "error.413.payload_too_large",
808
+ "error.415.unsupported_media_type",
809
+ "error.422.unprocessable_entity",
810
+ "error.423.locked",
811
+ "error.423.verification_locked",
812
+ "error.429.rate_limit",
813
+ "error.429.too_many_requests",
814
+ "error.500.internal",
815
+ "error.503.mandate_unavailable"
816
+ ],
817
+ "exports": {
818
+ "runtime": [
819
+ "CATALOG_KEY",
820
+ "CATALOG_NAMESPACE",
821
+ "CATEGORIES_ERRORS",
822
+ "CATEGORIES_ERROR_CODES",
823
+ "CATEGORIES_FEATURE_EDITOR_CONFLICT",
824
+ "CATEGORIES_I18N_KEYS",
825
+ "CategoriesProvider",
826
+ "CategoriesRuntimeContext",
827
+ "CategoryBreadcrumbs",
828
+ "CategoryCarousel",
829
+ "CategoryFeatures",
830
+ "CategoryPicker",
831
+ "CategoryTree",
832
+ "EMPTY_SNAPSHOT",
833
+ "MAX_SYNC_PAGES",
834
+ "applyCategoryPage",
835
+ "buildCategoryTree",
836
+ "catalogKeyOptions",
837
+ "categoriesErrorBundleEn",
838
+ "categoriesI18nBundleEn",
839
+ "categoriesQueryKeys",
840
+ "categoryAncestorIds",
841
+ "categoryBreadcrumbs",
842
+ "categoryChildIds",
843
+ "categoryLabel",
844
+ "categoryListParams",
845
+ "createCatalogStore",
846
+ "createCategoriesApi",
847
+ "createCategoriesRuntime",
848
+ "explainCategoriesError",
849
+ "featureLabel",
850
+ "featureOptionsAreKeys",
851
+ "firstPageRequest",
852
+ "flattenCategoryNodes",
853
+ "isEmptySnapshot",
854
+ "memoryCatalogStore",
855
+ "navEntries",
856
+ "nextPageRequest",
857
+ "parseSnapshot",
858
+ "parseTreenodePks",
859
+ "registerCategoriesI18n",
860
+ "renderCategoryLabel",
861
+ "resolveCategorySlug",
862
+ "syncCatalog",
863
+ "useCategoriesAnalytics",
864
+ "useCategoriesApi",
865
+ "useCategoriesRevision",
866
+ "useCategoriesRuntime",
867
+ "useCategoryCarousel",
868
+ "useCategoryCatalog",
869
+ "useCategoryChildren",
870
+ "useCategoryFeatures"
871
+ ],
872
+ "types": [
873
+ "BuildCategoryTreeOptions",
874
+ "CarouselEntry",
875
+ "CatalogKeyOptions",
876
+ "CatalogStore",
877
+ "CategoriesApi",
878
+ "CategoriesErrorCode",
879
+ "CategoriesErrorSpec",
880
+ "CategoriesI18nKey",
881
+ "CategoriesRuntime",
882
+ "Category",
883
+ "CategoryBreadcrumbsBag",
884
+ "CategoryBreadcrumbsProps",
885
+ "CategoryCarouselBag",
886
+ "CategoryCarouselProps",
887
+ "CategoryCatalog",
888
+ "CategoryCrumb",
889
+ "CategoryFeature",
890
+ "CategoryFeatureEntry",
891
+ "CategoryFeaturesBag",
892
+ "CategoryFeaturesProps",
893
+ "CategoryIndex",
894
+ "CategoryLabel",
895
+ "CategoryLabelKind",
896
+ "CategoryListPage",
897
+ "CategoryListParams",
898
+ "CategoryNode",
899
+ "CategoryOption",
900
+ "CategoryPickerBag",
901
+ "CategoryPickerBlockedReason",
902
+ "CategoryPickerProps",
903
+ "CategoryRevisions",
904
+ "CategorySnapshot",
905
+ "CategoryTreeBag",
906
+ "CategoryTreeProps",
907
+ "CreateCatalogStoreOptions",
908
+ "CreateCategoriesRuntimeOptions",
909
+ "FeatureConfig",
910
+ "MaxRevision",
911
+ "Remediation",
912
+ "Schemas",
913
+ "SyncCatalogOptions",
914
+ "SyncCatalogResult",
915
+ "UseCategoryCatalogOptions"
916
+ ]
917
+ }
918
+ }