@stapel/cdn-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 (164) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/MODULE.md +124 -0
  3. package/README.md +103 -0
  4. package/dist/api/cdnApi.d.ts +122 -0
  5. package/dist/api/cdnApi.d.ts.map +1 -0
  6. package/dist/api/cdnApi.js +27 -0
  7. package/dist/api/cdnApi.js.map +1 -0
  8. package/dist/api/generated/schema.d.ts +1050 -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 +76 -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/default/ErrorAlert.d.ts +8 -0
  17. package/dist/default/ErrorAlert.d.ts.map +1 -0
  18. package/dist/default/ErrorAlert.js +26 -0
  19. package/dist/default/ErrorAlert.js.map +1 -0
  20. package/dist/default/ImageUploadField.d.ts +12 -0
  21. package/dist/default/ImageUploadField.d.ts.map +1 -0
  22. package/dist/default/ImageUploadField.js +48 -0
  23. package/dist/default/ImageUploadField.js.map +1 -0
  24. package/dist/default/MediaGalleryField.d.ts +14 -0
  25. package/dist/default/MediaGalleryField.d.ts.map +1 -0
  26. package/dist/default/MediaGalleryField.js +65 -0
  27. package/dist/default/MediaGalleryField.js.map +1 -0
  28. package/dist/default/index.d.ts +15 -0
  29. package/dist/default/index.d.ts.map +1 -0
  30. package/dist/default/index.js +13 -0
  31. package/dist/default/index.js.map +1 -0
  32. package/dist/default/phase.d.ts +17 -0
  33. package/dist/default/phase.d.ts.map +1 -0
  34. package/dist/default/phase.js +25 -0
  35. package/dist/default/phase.js.map +1 -0
  36. package/dist/flows/registry.d.ts +28 -0
  37. package/dist/flows/registry.d.ts.map +1 -0
  38. package/dist/flows/registry.js +26 -0
  39. package/dist/flows/registry.js.map +1 -0
  40. package/dist/headless/CdnProvider.d.ts +18 -0
  41. package/dist/headless/CdnProvider.d.ts.map +1 -0
  42. package/dist/headless/CdnProvider.js +14 -0
  43. package/dist/headless/CdnProvider.js.map +1 -0
  44. package/dist/headless/ImageUpload.d.ts +18 -0
  45. package/dist/headless/ImageUpload.d.ts.map +1 -0
  46. package/dist/headless/ImageUpload.js +16 -0
  47. package/dist/headless/ImageUpload.js.map +1 -0
  48. package/dist/headless/MediaUploader.d.ts +31 -0
  49. package/dist/headless/MediaUploader.d.ts.map +1 -0
  50. package/dist/headless/MediaUploader.js +30 -0
  51. package/dist/headless/MediaUploader.js.map +1 -0
  52. package/dist/headless/useUploadImage.d.ts +33 -0
  53. package/dist/headless/useUploadImage.d.ts.map +1 -0
  54. package/dist/headless/useUploadImage.js +118 -0
  55. package/dist/headless/useUploadImage.js.map +1 -0
  56. package/dist/headless/useUploadPreview.d.ts +22 -0
  57. package/dist/headless/useUploadPreview.d.ts.map +1 -0
  58. package/dist/headless/useUploadPreview.js +37 -0
  59. package/dist/headless/useUploadPreview.js.map +1 -0
  60. package/dist/headless/useUploadQueue.d.ts +83 -0
  61. package/dist/headless/useUploadQueue.d.ts.map +1 -0
  62. package/dist/headless/useUploadQueue.js +0 -0
  63. package/dist/headless/useUploadQueue.js.map +1 -0
  64. package/dist/i18n/errorsMap.d.ts +12 -0
  65. package/dist/i18n/errorsMap.d.ts.map +1 -0
  66. package/dist/i18n/errorsMap.js +22 -0
  67. package/dist/i18n/errorsMap.js.map +1 -0
  68. package/dist/i18n/es.d.ts +17 -0
  69. package/dist/i18n/es.d.ts.map +1 -0
  70. package/dist/i18n/es.js +65 -0
  71. package/dist/i18n/es.js.map +1 -0
  72. package/dist/i18n/generated/errors.es.gen.d.ts +16 -0
  73. package/dist/i18n/generated/errors.es.gen.d.ts.map +1 -0
  74. package/dist/i18n/generated/errors.es.gen.js +58 -0
  75. package/dist/i18n/generated/errors.es.gen.js.map +1 -0
  76. package/dist/i18n/generated/errors.gen.d.ts +353 -0
  77. package/dist/i18n/generated/errors.gen.d.ts.map +1 -0
  78. package/dist/i18n/generated/errors.gen.js +180 -0
  79. package/dist/i18n/generated/errors.gen.js.map +1 -0
  80. package/dist/i18n/generated/errors.ru.gen.d.ts +16 -0
  81. package/dist/i18n/generated/errors.ru.gen.d.ts.map +1 -0
  82. package/dist/i18n/generated/errors.ru.gen.js +58 -0
  83. package/dist/i18n/generated/errors.ru.gen.js.map +1 -0
  84. package/dist/i18n/keys.d.ts +61 -0
  85. package/dist/i18n/keys.d.ts.map +1 -0
  86. package/dist/i18n/keys.js +110 -0
  87. package/dist/i18n/keys.js.map +1 -0
  88. package/dist/i18n/ru.d.ts +21 -0
  89. package/dist/i18n/ru.d.ts.map +1 -0
  90. package/dist/i18n/ru.js +70 -0
  91. package/dist/i18n/ru.js.map +1 -0
  92. package/dist/index.d.ts +89 -0
  93. package/dist/index.d.ts.map +1 -0
  94. package/dist/index.js +83 -0
  95. package/dist/index.js.map +1 -0
  96. package/dist/model/context.d.ts +11 -0
  97. package/dist/model/context.d.ts.map +1 -0
  98. package/dist/model/context.js +15 -0
  99. package/dist/model/context.js.map +1 -0
  100. package/dist/model/hash.d.ts +36 -0
  101. package/dist/model/hash.d.ts.map +1 -0
  102. package/dist/model/hash.js +59 -0
  103. package/dist/model/hash.js.map +1 -0
  104. package/dist/model/limits.d.ts +86 -0
  105. package/dist/model/limits.d.ts.map +1 -0
  106. package/dist/model/limits.js +163 -0
  107. package/dist/model/limits.js.map +1 -0
  108. package/dist/model/queries.d.ts +29 -0
  109. package/dist/model/queries.d.ts.map +1 -0
  110. package/dist/model/queries.js +32 -0
  111. package/dist/model/queries.js.map +1 -0
  112. package/dist/model/queryKeys.d.ts +18 -0
  113. package/dist/model/queryKeys.d.ts.map +1 -0
  114. package/dist/model/queryKeys.js +18 -0
  115. package/dist/model/queryKeys.js.map +1 -0
  116. package/dist/model/refs.d.ts +54 -0
  117. package/dist/model/refs.d.ts.map +1 -0
  118. package/dist/model/refs.js +82 -0
  119. package/dist/model/refs.js.map +1 -0
  120. package/dist/model/runtime.d.ts +40 -0
  121. package/dist/model/runtime.d.ts.map +1 -0
  122. package/dist/model/runtime.js +23 -0
  123. package/dist/model/runtime.js.map +1 -0
  124. package/dist/model/upload.d.ts +88 -0
  125. package/dist/model/upload.d.ts.map +1 -0
  126. package/dist/model/upload.js +254 -0
  127. package/dist/model/upload.js.map +1 -0
  128. package/llms.txt +83 -0
  129. package/manifest.json +601 -0
  130. package/package.json +120 -0
  131. package/src/analytics/generated/events.json +7 -0
  132. package/src/api/cdnApi.ts +187 -0
  133. package/src/api/generated/schema.ts +1052 -0
  134. package/src/api/types.ts +86 -0
  135. package/src/default/ErrorAlert.tsx +43 -0
  136. package/src/default/ImageUploadField.tsx +131 -0
  137. package/src/default/MediaGalleryField.tsx +233 -0
  138. package/src/default/index.ts +14 -0
  139. package/src/default/phase.ts +34 -0
  140. package/src/flows/registry.ts +38 -0
  141. package/src/headless/CdnProvider.tsx +19 -0
  142. package/src/headless/ImageUpload.tsx +24 -0
  143. package/src/headless/MediaUploader.tsx +43 -0
  144. package/src/headless/useUploadImage.ts +155 -0
  145. package/src/headless/useUploadPreview.ts +48 -0
  146. package/src/headless/useUploadQueue.ts +411 -0
  147. package/src/i18n/errorsMap.ts +33 -0
  148. package/src/i18n/es.ts +81 -0
  149. package/src/i18n/generated/errors.es.gen.ts +64 -0
  150. package/src/i18n/generated/errors.gen.ts +211 -0
  151. package/src/i18n/generated/errors.json +403 -0
  152. package/src/i18n/generated/errors.ru.gen.ts +64 -0
  153. package/src/i18n/keys.ts +131 -0
  154. package/src/i18n/ru.ts +85 -0
  155. package/src/index.ts +154 -0
  156. package/src/model/context.tsx +25 -0
  157. package/src/model/hash.ts +67 -0
  158. package/src/model/limits.ts +207 -0
  159. package/src/model/queries.ts +64 -0
  160. package/src/model/queryKeys.ts +23 -0
  161. package/src/model/refs.ts +95 -0
  162. package/src/model/runtime.ts +52 -0
  163. package/src/model/upload.ts +365 -0
  164. 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,76 @@
1
+ /**
2
+ * The pair's public wire types — projected from the GENERATED schema
3
+ * (`api/generated/schema.ts`, emitted by `pnpm gen:api` from stapel-cdn's own
4
+ * `docs/schema.json`), never re-typed by hand.
5
+ *
6
+ * Two projections are widened on purpose, and both are recorded here rather
7
+ * than fixed silently, because the widening is what keeps a real deployment's
8
+ * answers assignable:
9
+ *
10
+ * 1. `Image.type` is generated as the enum `"avatar"`, because the schema's
11
+ * `TypeEnum` is built from `STAPEL_CDN["ASSET_TYPES"]` whose LIBRARY default
12
+ * is `("avatar",)`. The general image endpoint does not read that setting at
13
+ * all: `POST /upload/image/` writes `type="product"` unconditionally
14
+ * (`stapel_cdn/views.py`, `ImageUploadView.post`), so the value that comes
15
+ * back on the storefront's own upload path is not in the generated union.
16
+ * A host that adds `product`/`chat`/`review` to `ASSET_TYPES` widens it
17
+ * further. So the asset type is a deployment-configured STRING here, and a
18
+ * reference built from it is opaque — see {@link CdnRef}.
19
+ * 2. `FileExistsResponse.type` is `string | null` on the wire; the three values
20
+ * the view can actually produce are `"image" | "video" | "file"`
21
+ * (`FileExistsView._exists_response`). {@link CdnFileKind} names them
22
+ * WITHOUT narrowing the parsed value: a fourth kind added upstream must not
23
+ * become a runtime cast that lies.
24
+ */
25
+ import type { components } from "./generated/schema.js";
26
+ /** Every component schema stapel-cdn declares. */
27
+ export type Schemas = components["schemas"];
28
+ /**
29
+ * One generated variant of an image, with its geometry.
30
+ *
31
+ * NOTE the tier is a NUMBER here. `@stapel/image`'s `VariantMeta.tier` is a
32
+ * decimal STRING (`"720"`) plus the `"original"` sentinel, because that
33
+ * component consumes `stapel_core.media.dto`'s render metadata, which
34
+ * stringifies the ladder. stapel-cdn's own serializer emits an int. The two
35
+ * contracts are not the same shape and neither is wrong — {@link toStapelImage}
36
+ * in `model/refs.ts` is the one place that converts, so no screen has to know.
37
+ */
38
+ export type CdnVariantMeta = Schemas["Image"]["variants_meta"][number];
39
+ /**
40
+ * An uploaded image row, with the whole variant ladder and its geometry.
41
+ * `type` is widened to `string` — see this module's header.
42
+ */
43
+ export type CdnImage = Omit<Schemas["Image"], "type"> & {
44
+ readonly type: string;
45
+ };
46
+ export type CdnVideo = Schemas["Video"];
47
+ export type CdnFileModel = Schemas["FileModel"];
48
+ export type CdnImageUploadResponse = Omit<Schemas["ImageUploadResponse"], "image"> & {
49
+ readonly image: CdnImage;
50
+ };
51
+ export type CdnVideoUploadResponse = Schemas["VideoUploadResponse"];
52
+ export type CdnFileUploadResponse = Schemas["FileUploadResponse"];
53
+ /** What `file/exists/` answers with when it found something. */
54
+ export type CdnFileKind = "image" | "video" | "file";
55
+ /** The `file/exists/` answer, with `file` narrowed alongside `type`. */
56
+ export type CdnFileExistsResponse = Omit<Schemas["FileExistsResponse"], "file"> & {
57
+ readonly file: CdnImage | CdnVideo | CdnFileModel | null;
58
+ };
59
+ /**
60
+ * The opaque `<type>/<hash>` string a consuming module stores — `Profile.avatar`,
61
+ * `Listing.images_draft` ("Opaque list of CDN image references",
62
+ * `stapel_listings/models.py`). It is the value this pair hands OUT; it is not
63
+ * a URL and must not be parsed into one by a caller.
64
+ *
65
+ * Content-addressed, so a new upload always yields a new reference and no
66
+ * cache-busting query parameter is ever needed.
67
+ */
68
+ export type CdnRef = string;
69
+ /** A reference split into its two halves (`model/refs.ts`). */
70
+ export interface ParsedCdnRef {
71
+ /** The asset type — `avatar`, `product`, or whatever the host configured. */
72
+ readonly assetType: string;
73
+ /** The SHA-256 of the ORIGINAL bytes, 64 lowercase hex characters. */
74
+ readonly fileHash: string;
75
+ }
76
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAExD,kDAAkD;AAClD,MAAM,MAAM,OAAO,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;AAE5C;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE;;;GAGG;AACH,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG;IACtD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AACxC,MAAM,MAAM,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;AAEhD,MAAM,MAAM,sBAAsB,GAAG,IAAI,CACvC,OAAO,CAAC,qBAAqB,CAAC,EAC9B,OAAO,CACR,GAAG;IAAE,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAA;CAAE,CAAC;AACjC,MAAM,MAAM,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;AAElE,gEAAgE;AAChE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAC;AAErD,wEAAwE;AACxE,MAAM,MAAM,qBAAqB,GAAG,IAAI,CACtC,OAAO,CAAC,oBAAoB,CAAC,EAC7B,MAAM,CACP,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,IAAI,CAAA;CAAE,CAAC;AAEjE;;;;;;;;GAQG;AACH,MAAM,MAAM,MAAM,GAAG,MAAM,CAAC;AAE5B,+DAA+D;AAC/D,MAAM,WAAW,YAAY;IAC3B,6EAA6E;IAC7E,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,sEAAsE;IACtE,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/api/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { CSSProperties, ReactElement } 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
+ }): ReactElement | null;
8
+ //# sourceMappingURL=ErrorAlert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.d.ts","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACzD,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;CAC7B,GAAG,YAAY,GAAG,IAAI,CAqBtB"}
@@ -0,0 +1,26 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ /**
3
+ * The one error surface this pair's default skins render, so the split copy
4
+ * core produces reaches a screen the same way everywhere.
5
+ *
6
+ * Core's `describeFlowError` splits a failure into the sentence a person reads
7
+ * and the technical detail a support agent quotes. The split is only worth
8
+ * anything if a skin renders both halves at their own weights: `message` at
9
+ * normal weight, `detail` muted and small, where an eye skips it and a support
10
+ * agent finds it.
11
+ *
12
+ * `undefined` in — including a `detail` core left `undefined` because there
13
+ * was nothing worth quoting — renders nothing rather than an empty muted line.
14
+ */
15
+ import { Alert, Typography } from "antd";
16
+ export function ErrorAlert(props) {
17
+ const { error } = props;
18
+ if (!error)
19
+ return null;
20
+ return (_jsx(Alert, { type: "error", showIcon: true, ...(props.style ? { style: props.style } : {}), ...(props.testId ? { "data-testid": props.testId } : {}), message: error.message, ...(error.detail
21
+ ? {
22
+ description: (_jsx(Typography.Text, { type: "secondary", style: { fontSize: 12 }, children: error.detail })),
23
+ }
24
+ : {}) }));
25
+ }
26
+ //# sourceMappingURL=ErrorAlert.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ErrorAlert.js","sourceRoot":"","sources":["../../src/default/ErrorAlert.tsx"],"names":[],"mappings":";AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAIzC,MAAM,UAAU,UAAU,CAAC,KAI1B;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,EACzD,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,12 @@
1
+ import type { ReactElement } from "react";
2
+ import type { CdnUploadTarget } from "../model/upload.js";
3
+ export interface ImageUploadFieldProps {
4
+ /** Where the bytes go. Default: the general image intake. */
5
+ target?: CdnUploadTarget;
6
+ /** Called with `<type>/<hash>` once the CDN holds the bytes. */
7
+ onUploaded?: (ref: string) => void;
8
+ /** A reference already stored, rendered until a new pick replaces it. */
9
+ currentUrl?: string | null;
10
+ }
11
+ export declare function ImageUploadField(props: ImageUploadFieldProps): ReactElement;
12
+ //# sourceMappingURL=ImageUploadField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadField.d.ts","sourceRoot":"","sources":["../../src/default/ImageUploadField.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAQvD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D,MAAM,WAAW,qBAAqB;IACpC,6DAA6D;IAC7D,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,gEAAgE;IAChE,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,yEAAyE;IACzE,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B;AAwFD,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,qBAAqB,GAAG,YAAY,CAY3E"}
@@ -0,0 +1,48 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * `<ImageUploadField/>` — one image slot, skinned. The avatar/cover control.
4
+ *
5
+ * The picker is a plain `<input type="file">` behind a button rather than
6
+ * antd's `<Upload>`: `Upload` owns the request, and the request is the whole
7
+ * point of this pair (hash, pre-check, dedup short-circuit, cancel, variant
8
+ * wait). Handing it to a widget would mean either re-implementing the flow
9
+ * inside `customRequest` or losing it.
10
+ */
11
+ import { useId, useRef } from "react";
12
+ import { Button, Space, Typography } from "antd";
13
+ import { useErrorDisplay, useT } from "@stapel/core";
14
+ import { ImageUpload } from "../headless/ImageUpload.js";
15
+ import { smallestVariantUrl } from "../headless/useUploadPreview.js";
16
+ import { useCdnRuntime } from "../model/context.js";
17
+ import { acceptAttribute } from "../model/limits.js";
18
+ import { CDN_I18N_KEYS } from "../i18n/keys.js";
19
+ import { ErrorAlert } from "./ErrorAlert.js";
20
+ import { PHASE_KEYS, PREVIEW_BOX } from "./phase.js";
21
+ function ImageUploadFieldBody(props) {
22
+ const t = useT();
23
+ const runtime = useCdnRuntime();
24
+ const errorDisplay = useErrorDisplay(CDN_I18N_KEYS.unknownError);
25
+ const inputId = useId();
26
+ const input = useRef(null);
27
+ const { bag } = props;
28
+ const onPick = (event) => {
29
+ const file = event.target.files?.[0];
30
+ // Reset the input so picking the SAME file again still fires `change` —
31
+ // the classic reason a retry after a failure appears to do nothing.
32
+ event.target.value = "";
33
+ if (file === undefined)
34
+ return;
35
+ void bag.upload(file).then((ref) => {
36
+ if (ref !== null)
37
+ props.onUploaded?.(ref);
38
+ });
39
+ };
40
+ const shown = bag.previewUrl ?? smallestVariantUrl(bag.image) ?? props.currentUrl ?? null;
41
+ return (_jsxs(Space, { direction: "vertical", "data-testid": "cdn-image-field", children: [_jsx("input", { id: inputId, ref: input, type: "file", accept: acceptAttribute(runtime.limits.image), onChange: onPick, style: { display: "none" }, "data-testid": "cdn-image-input" }), shown === null ? null : (_jsx("img", { src: shown, alt: t(CDN_I18N_KEYS.itemAlt), style: PREVIEW_BOX, "data-testid": "cdn-image-preview" })), _jsxs(Space, { children: [_jsx(Button, { onClick: () => input.current?.click(), disabled: bag.isPending, "data-testid": "cdn-image-pick", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: shown === null
42
+ ? t(CDN_I18N_KEYS.pickImage)
43
+ : t(CDN_I18N_KEYS.pickReplace) }), bag.isPending ? (_jsx(Button, { onClick: bag.cancel, "data-testid": "cdn-image-cancel", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemCancel) })) : null] }), _jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-image-phase", children: t(PHASE_KEYS[bag.phase]) }), bag.deduped ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-image-deduped", children: t(CDN_I18N_KEYS.deduped) })) : null, bag.phase === "done" && !bag.variantsReady ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-image-variants-pending", children: t(CDN_I18N_KEYS.variantsPending) })) : null, _jsx(ErrorAlert, { error: errorDisplay(bag.error), testId: "cdn-image-error" })] }));
44
+ }
45
+ export function ImageUploadField(props) {
46
+ return (_jsx(ImageUpload, { ...(props.target !== undefined ? { target: props.target } : {}), children: (bag) => (_jsx(ImageUploadFieldBody, { bag: bag, onUploaded: props.onUploaded, currentUrl: props.currentUrl })) }));
47
+ }
48
+ //# sourceMappingURL=ImageUploadField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUploadField.js","sourceRoot":"","sources":["../../src/default/ImageUploadField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ReactElement } from "react";
2
+ import type { CdnRef } from "../api/types.js";
3
+ import type { CdnUploadTarget } from "../model/upload.js";
4
+ export interface MediaGalleryFieldProps {
5
+ /** How many photos this gallery holds. The storefront's composer: 10. */
6
+ max: number;
7
+ target?: CdnUploadTarget;
8
+ /** References the gallery starts with — a reopened draft. */
9
+ initialRefs?: readonly CdnRef[];
10
+ /** The list to store, in display order, on every change. */
11
+ onRefsChange?: (refs: readonly CdnRef[]) => void;
12
+ }
13
+ export declare function MediaGalleryField(props: MediaGalleryFieldProps): ReactElement;
14
+ //# sourceMappingURL=MediaGalleryField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaGalleryField.d.ts","sourceRoot":"","sources":["../../src/default/MediaGalleryField.tsx"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAe,YAAY,EAAE,MAAM,OAAO,CAAC;AAMvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAK1D,MAAM,WAAW,sBAAsB;IACrC,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,6DAA6D;IAC7D,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAChC,4DAA4D;IAC5D,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,KAAK,IAAI,CAAC;CAClD;AAwLD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,sBAAsB,GAAG,YAAY,CAa7E"}
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ /**
3
+ * `<MediaGalleryField/>` — the listing composer's photo grid, skinned.
4
+ *
5
+ * Ten tiles at most (the storefront's number, passed in — stapel-cdn has no
6
+ * opinion on it), each showing its own step, its own refusal and its own
7
+ * controls. Reordering is native HTML5 drag-and-drop plus a pair of move
8
+ * buttons, and the buttons are not a fallback nobody uses: drag-and-drop is
9
+ * unreachable by keyboard and unusable on a touch screen, which between them
10
+ * are most of the people listing something from a phone.
11
+ *
12
+ * The first tile is labelled as the cover, because the order IS the meaning:
13
+ * `Listing.images_draft` is stored in this order and the first reference is
14
+ * what a search result card shows.
15
+ */
16
+ import { useRef, useState } from "react";
17
+ import { Button, Space, Typography } from "antd";
18
+ import { useActionGate, useErrorDisplay, useT } from "@stapel/core";
19
+ import { MediaUploader } from "../headless/MediaUploader.js";
20
+ import { useUploadPreview } from "../headless/useUploadPreview.js";
21
+ import { CDN_I18N_KEYS } from "../i18n/keys.js";
22
+ import { ErrorAlert } from "./ErrorAlert.js";
23
+ import { PHASE_KEYS, PREVIEW_BOX } from "./phase.js";
24
+ function Tile(props) {
25
+ const t = useT();
26
+ const errorDisplay = useErrorDisplay(CDN_I18N_KEYS.unknownError);
27
+ const preview = useUploadPreview(props.item);
28
+ const { item, bag, index } = props;
29
+ const busy = item.phase === "hashing" ||
30
+ item.phase === "checking" ||
31
+ item.phase === "uploading" ||
32
+ item.phase === "processing";
33
+ return (_jsxs("div", { draggable: true, onDragStart: () => props.onDragStart(index), onDragOver: (event) => event.preventDefault(), onDrop: () => props.onDrop(index), "data-testid": "cdn-gallery-tile", "data-phase": item.phase, style: { width: PREVIEW_BOX.width }, children: [preview.url === null ? (_jsx("div", { style: { ...PREVIEW_BOX, border: "1px dashed" } })) : (_jsx("img", { src: preview.url, alt: t(CDN_I18N_KEYS.itemAlt), style: PREVIEW_BOX })), _jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-tile-phase", children: t(PHASE_KEYS[item.phase]) }), index === 0 ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-tile-cover", children: t(CDN_I18N_KEYS.itemCover) })) : null, item.deduped ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-tile-deduped", children: t(CDN_I18N_KEYS.deduped) })) : null, _jsx(ErrorAlert, { error: errorDisplay(item.error), testId: "cdn-tile-error" }), _jsxs(Space, { size: "small", wrap: true, children: [busy ? (_jsx(Button, { size: "small", onClick: () => bag.cancel(item.id), "data-testid": "cdn-tile-cancel", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemCancel) })) : null, item.phase === "failed" || item.phase === "canceled" ? (_jsx(Button, { size: "small", onClick: () => bag.retry(item.id), "data-testid": "cdn-tile-retry", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemRetry) })) : null, _jsx(Button, { size: "small", onClick: () => bag.remove(item.id), "data-testid": "cdn-tile-remove", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemRemove) }), _jsx(Button, { size: "small", disabled: index === 0, onClick: () => bag.reorder(index, index - 1), "data-testid": "cdn-tile-earlier", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemMoveEarlier) }), _jsx(Button, { size: "small", disabled: index === bag.items.length - 1, onClick: () => bag.reorder(index, index + 1), "data-testid": "cdn-tile-later", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.itemMoveLater) })] })] }));
34
+ }
35
+ function GalleryBody(props) {
36
+ const t = useT();
37
+ const { bag } = props;
38
+ const addGate = useActionGate(bag.canAdd);
39
+ const settledGate = useActionGate(bag.settled);
40
+ const input = useRef(null);
41
+ const [dragging, setDragging] = useState(null);
42
+ const onPick = (event) => {
43
+ const files = event.target.files;
44
+ event.target.value = "";
45
+ if (files === null || files.length === 0)
46
+ return;
47
+ bag.add(Array.from(files));
48
+ };
49
+ const onDrop = (index) => {
50
+ if (dragging === null)
51
+ return;
52
+ bag.reorder(dragging, index);
53
+ setDragging(null);
54
+ };
55
+ return (_jsxs(Space, { direction: "vertical", "data-testid": "cdn-gallery", children: [_jsx(Typography.Text, { "data-testid": "cdn-gallery-count", children: t(CDN_I18N_KEYS.galleryCount, {
56
+ used: bag.capacity.used,
57
+ max: bag.capacity.max,
58
+ }) }), _jsx(Space, { wrap: true, align: "start", children: bag.items.length === 0 ? (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-gallery-empty", children: t(CDN_I18N_KEYS.galleryEmpty) })) : (bag.items.map((item, index) => (_jsx(Tile, { item: item, index: index, bag: bag, onDragStart: setDragging, onDrop: onDrop }, item.id)))) }), _jsx("input", { ref: input, type: "file", multiple: true, accept: bag.accept.attribute, onChange: onPick, style: { display: "none" }, "data-testid": "cdn-gallery-input" }), _jsx(Button, { onClick: () => input.current?.click(), disabled: addGate.disabled, "data-testid": "cdn-gallery-add", "data-analytics": "none", "data-analytics-reason": "business action \u2014 host app wraps with its own tracked()", children: t(CDN_I18N_KEYS.pickImages) }), addGate.reason === undefined ? null : (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-gallery-add-blocked", children: addGate.reason })), settledGate.reason === undefined ? null : (_jsx(Typography.Text, { type: "secondary", "data-testid": "cdn-gallery-unsettled", children: settledGate.reason }))] }));
59
+ }
60
+ export function MediaGalleryField(props) {
61
+ return (_jsx(MediaUploader, { max: props.max, ...(props.target !== undefined ? { target: props.target } : {}), ...(props.initialRefs !== undefined ? { initialRefs: props.initialRefs } : {}), ...(props.onRefsChange !== undefined
62
+ ? { onRefsChange: props.onRefsChange }
63
+ : {}), children: (bag) => _jsx(GalleryBody, { bag: bag }) }));
64
+ }
65
+ //# sourceMappingURL=MediaGalleryField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MediaGalleryField.js","sourceRoot":"","sources":["../../src/default/MediaGalleryField.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * `@stapel/cdn-react/default` — the opt-in antd skin for this pair (mirrors
3
+ * auth-react's `/default` split, §54): a separate entry point so consumers who
4
+ * bring their own visuals never pull `antd` into their bundle; importing this
5
+ * subpath is the opt-in.
6
+ *
7
+ * ```tsx
8
+ * import { ImageUploadField, MediaGalleryField } from "@stapel/cdn-react/default";
9
+ * ```
10
+ */
11
+ export { ImageUploadField } from "./ImageUploadField.js";
12
+ export type { ImageUploadFieldProps } from "./ImageUploadField.js";
13
+ export { MediaGalleryField } from "./MediaGalleryField.js";
14
+ export type { MediaGalleryFieldProps } from "./MediaGalleryField.js";
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,YAAY,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,YAAY,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * `@stapel/cdn-react/default` — the opt-in antd skin for this pair (mirrors
3
+ * auth-react's `/default` split, §54): a separate entry point so consumers who
4
+ * bring their own visuals never pull `antd` into their bundle; importing this
5
+ * subpath is the opt-in.
6
+ *
7
+ * ```tsx
8
+ * import { ImageUploadField, MediaGalleryField } from "@stapel/cdn-react/default";
9
+ * ```
10
+ */
11
+ export { ImageUploadField } from "./ImageUploadField.js";
12
+ export { MediaGalleryField } from "./MediaGalleryField.js";
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/default/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * The phase → i18n key table, in one place so both skins say the same thing
3
+ * about the same step, and so a new phase cannot be added without a sentence
4
+ * (the record is exhaustive over `UploadPhase`; a missing arm does not
5
+ * compile).
6
+ */
7
+ import type { CSSProperties } from "react";
8
+ import type { UploadPhase } from "../model/upload.js";
9
+ export declare const PHASE_KEYS: Record<UploadPhase, string>;
10
+ /**
11
+ * The tile geometry, shared by both skins. Fixed box + `object-fit: cover`,
12
+ * because a grid whose rows resize as each thumbnail decodes is the layout
13
+ * shift `@stapel/image` exists to prevent — and here there is no aspect ratio
14
+ * to work from until the row comes back.
15
+ */
16
+ export declare const PREVIEW_BOX: CSSProperties;
17
+ //# sourceMappingURL=phase.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase.d.ts","sourceRoot":"","sources":["../../src/default/phase.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,CASlD,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,EAAE,aAMzB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { CDN_I18N_KEYS } from "../i18n/keys.js";
2
+ export const PHASE_KEYS = {
3
+ idle: CDN_I18N_KEYS.phaseQueued,
4
+ hashing: CDN_I18N_KEYS.phaseHashing,
5
+ checking: CDN_I18N_KEYS.phaseChecking,
6
+ uploading: CDN_I18N_KEYS.phaseUploading,
7
+ processing: CDN_I18N_KEYS.phaseProcessing,
8
+ done: CDN_I18N_KEYS.phaseDone,
9
+ canceled: CDN_I18N_KEYS.phaseCanceled,
10
+ failed: CDN_I18N_KEYS.phaseFailed,
11
+ };
12
+ /**
13
+ * The tile geometry, shared by both skins. Fixed box + `object-fit: cover`,
14
+ * because a grid whose rows resize as each thumbnail decodes is the layout
15
+ * shift `@stapel/image` exists to prevent — and here there is no aspect ratio
16
+ * to work from until the row comes back.
17
+ */
18
+ export const PREVIEW_BOX = {
19
+ width: 96,
20
+ height: 96,
21
+ objectFit: "cover",
22
+ borderRadius: 4,
23
+ display: "block",
24
+ };
25
+ //# sourceMappingURL=phase.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phase.js","sourceRoot":"","sources":["../../src/default/phase.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAEhD,MAAM,CAAC,MAAM,UAAU,GAAgC;IACrD,IAAI,EAAE,aAAa,CAAC,WAAW;IAC/B,OAAO,EAAE,aAAa,CAAC,YAAY;IACnC,QAAQ,EAAE,aAAa,CAAC,aAAa;IACrC,SAAS,EAAE,aAAa,CAAC,cAAc;IACvC,UAAU,EAAE,aAAa,CAAC,eAAe;IACzC,IAAI,EAAE,aAAa,CAAC,SAAS;IAC7B,QAAQ,EAAE,aAAa,CAAC,aAAa;IACrC,MAAM,EAAE,aAAa,CAAC,WAAW;CAClC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAkB;IACxC,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,EAAE;IACV,SAAS,EAAE,OAAO;IAClB,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,OAAO;CACjB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Zero-flow registry shim. stapel-cdn annotates no `@flow_step`: its
3
+ * `docs/flows.json` is an empty array, so `gen:flows` skips emission for this
4
+ * pair (no `flows/generated/`). This hand-written shim preserves the pair's
5
+ * public flow-registry surface at its zero-flow shape.
6
+ *
7
+ * That is not an oversight upstream, and it is worth saying once: an upload is
8
+ * multi-step on the CLIENT (hash → check → POST → wait for variants) but each
9
+ * of those steps is an independent endpoint call the server does not sequence.
10
+ * There is no server-declared funnel here, and inventing one would be a
11
+ * frontend fiction in a machine-readable artifact. `model/upload.ts` is where
12
+ * this pair's real state machine lives.
13
+ *
14
+ * When the backend annotates flows, `pnpm gen:flows` emits
15
+ * `./generated/flows.gen.ts` again — replace these exports with re-exports
16
+ * from it (the shapes match by construction) and delete this file.
17
+ */
18
+ export declare const CDN_FLOWS: {};
19
+ /** Canonical flow ids present in flows.json (none yet — see above). */
20
+ export type CdnFlowId = keyof typeof CDN_FLOWS;
21
+ export type CdnFlowSpec = (typeof CDN_FLOWS)[CdnFlowId];
22
+ export interface FlowEndpoint {
23
+ readonly method: string;
24
+ readonly path: string;
25
+ }
26
+ /** All HTTP endpoints a flow touches, in step order (for the contract test). */
27
+ export declare function flowEndpoints(id: CdnFlowId): readonly FlowEndpoint[];
28
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/flows/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,SAAS,IAAc,CAAC;AAErC,uEAAuE;AACvE,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,SAAS,CAAC;AAE/C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,SAAS,CAAC,CAAC,SAAS,CAAC,CAAC;AAExD,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;CACvB;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,EAAE,EAAE,SAAS,GAAG,SAAS,YAAY,EAAE,CAOpE"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Zero-flow registry shim. stapel-cdn annotates no `@flow_step`: its
3
+ * `docs/flows.json` is an empty array, so `gen:flows` skips emission for this
4
+ * pair (no `flows/generated/`). This hand-written shim preserves the pair's
5
+ * public flow-registry surface at its zero-flow shape.
6
+ *
7
+ * That is not an oversight upstream, and it is worth saying once: an upload is
8
+ * multi-step on the CLIENT (hash → check → POST → wait for variants) but each
9
+ * of those steps is an independent endpoint call the server does not sequence.
10
+ * There is no server-declared funnel here, and inventing one would be a
11
+ * frontend fiction in a machine-readable artifact. `model/upload.ts` is where
12
+ * this pair's real state machine lives.
13
+ *
14
+ * When the backend annotates flows, `pnpm gen:flows` emits
15
+ * `./generated/flows.gen.ts` again — replace these exports with re-exports
16
+ * from it (the shapes match by construction) and delete this file.
17
+ */
18
+ export const CDN_FLOWS = {};
19
+ /** All HTTP endpoints a flow touches, in step order (for the contract test). */
20
+ export function flowEndpoints(id) {
21
+ // Same widened body as the generated registry's — valid for the zero-flow
22
+ // shape AND correct once flows exist.
23
+ const spec = CDN_FLOWS[id];
24
+ return spec ? spec.steps.flatMap((s) => s.endpoints) : [];
25
+ }
26
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/flows/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,EAAW,CAAC;AAYrC,gFAAgF;AAChF,MAAM,UAAU,aAAa,CAAC,EAAa;IACzC,0EAA0E;IAC1E,sCAAsC;IACtC,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAEZ,CAAC;IACd,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AAC5D,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ReactElement, ReactNode } from "react";
2
+ import type { CdnRuntime } from "../model/runtime.js";
3
+ /**
4
+ * Provides the wired {@link CdnRuntime} to every CDN hook and headless
5
+ * component below it. Bring your own visual shell — this component renders
6
+ * nothing of its own.
7
+ *
8
+ * ```tsx
9
+ * const runtime = createCdnRuntime({ baseUrl: "/cdn/api/v1/" });
10
+ * // give runtime.client to core's <StapelConfigProvider config={{ clients: { cdn } }}>
11
+ * <CdnProvider runtime={runtime}>{app}</CdnProvider>
12
+ * ```
13
+ */
14
+ export declare const CdnProvider: (props: {
15
+ runtime: CdnRuntime;
16
+ children: ReactNode;
17
+ }) => ReactElement;
18
+ //# sourceMappingURL=CdnProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CdnProvider.d.ts","sourceRoot":"","sources":["../../src/headless/CdnProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAErD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,WAAW,EAAE,CAAC,KAAK,EAAE;IAChC,OAAO,EAAE,UAAU,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,KAAK,YAA6B,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ModuleProvider } from "../model/context.js";
2
+ /**
3
+ * Provides the wired {@link CdnRuntime} to every CDN hook and headless
4
+ * component below it. Bring your own visual shell — this component renders
5
+ * nothing of its own.
6
+ *
7
+ * ```tsx
8
+ * const runtime = createCdnRuntime({ baseUrl: "/cdn/api/v1/" });
9
+ * // give runtime.client to core's <StapelConfigProvider config={{ clients: { cdn } }}>
10
+ * <CdnProvider runtime={runtime}>{app}</CdnProvider>
11
+ * ```
12
+ */
13
+ export const CdnProvider = ModuleProvider;
14
+ //# sourceMappingURL=CdnProvider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CdnProvider.js","sourceRoot":"","sources":["../../src/headless/CdnProvider.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGrD;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,WAAW,GAGH,cAAc,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { ReactNode } from "react";
2
+ import type { CdnUploadTarget } from "../model/upload.js";
3
+ import type { UploadImageBag } from "./useUploadImage.js";
4
+ /**
5
+ * Headless single-image upload — the avatar/cover shape, where a new pick
6
+ * replaces the previous one.
7
+ *
8
+ * ```tsx
9
+ * <ImageUpload target={{ kind: "avatar" }}>
10
+ * {({ upload, previewUrl, phase, error }) => <YourPicker … />}
11
+ * </ImageUpload>
12
+ * ```
13
+ */
14
+ export declare function ImageUpload(props: {
15
+ target?: CdnUploadTarget;
16
+ children: (bag: UploadImageBag) => ReactNode;
17
+ }): ReactNode;
18
+ //# sourceMappingURL=ImageUpload.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ImageUpload.d.ts","sourceRoot":"","sources":["../../src/headless/ImageUpload.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE;IACjC,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,QAAQ,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,SAAS,CAAC;CAC9C,GAAG,SAAS,CAKZ"}
@@ -0,0 +1,16 @@
1
+ import { useUploadImage } from "./useUploadImage.js";
2
+ /**
3
+ * Headless single-image upload — the avatar/cover shape, where a new pick
4
+ * replaces the previous one.
5
+ *
6
+ * ```tsx
7
+ * <ImageUpload target={{ kind: "avatar" }}>
8
+ * {({ upload, previewUrl, phase, error }) => <YourPicker … />}
9
+ * </ImageUpload>
10
+ * ```
11
+ */
12
+ export function ImageUpload(props) {
13
+ const bag = useUploadImage(props.target !== undefined ? { target: props.target } : {});
14
+ return props.children(bag);
15
+ }
16
+ //# sourceMappingURL=ImageUpload.js.map