@flowselections/floriday-voorraad 1.0.76 → 1.0.78

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 (235) hide show
  1. package/dist-lib/components/TemplatePage.d.ts +2 -0
  2. package/dist-lib/components/TemplatePage.d.ts.map +1 -0
  3. package/dist-lib/components/TemplatePage.js +4 -0
  4. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts +2 -0
  5. package/dist-lib/components/settings/VoorraadSettingsCard.d.ts.map +1 -0
  6. package/dist-lib/components/settings/VoorraadSettingsCard.js +39 -0
  7. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts +2 -2
  8. package/dist-lib/components/voorraad/AdditionalPackagingDialog.d.ts.map +1 -1
  9. package/dist-lib/components/voorraad/AdditionalPackagingDialog.js +2 -2
  10. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts +1 -1
  11. package/dist-lib/components/voorraad/ArtikelCompositionCard.d.ts.map +1 -1
  12. package/dist-lib/components/voorraad/ArtikelCompositionCard.js +1 -1
  13. package/dist-lib/components/voorraad/ArtikelWizard.d.ts +1 -1
  14. package/dist-lib/components/voorraad/ArtikelWizard.d.ts.map +1 -1
  15. package/dist-lib/components/voorraad/ArtikelWizard.js +49 -49
  16. package/dist-lib/components/voorraad/CollapsibleText.d.ts +1 -1
  17. package/dist-lib/components/voorraad/CollapsibleText.d.ts.map +1 -1
  18. package/dist-lib/components/voorraad/ConnectionBadge.d.ts +6 -0
  19. package/dist-lib/components/voorraad/ConnectionBadge.d.ts.map +1 -0
  20. package/dist-lib/components/voorraad/ConnectionBadge.js +12 -0
  21. package/dist-lib/components/voorraad/ConnectionPicker.d.ts +8 -0
  22. package/dist-lib/components/voorraad/ConnectionPicker.d.ts.map +1 -0
  23. package/dist-lib/components/voorraad/ConnectionPicker.js +8 -0
  24. package/dist-lib/components/voorraad/EditArtikelPage.d.ts +1 -1
  25. package/dist-lib/components/voorraad/EditArtikelPage.d.ts.map +1 -1
  26. package/dist-lib/components/voorraad/EditArtikelPage.js +4 -4
  27. package/dist-lib/components/voorraad/ExcelExportButton.d.ts +2 -2
  28. package/dist-lib/components/voorraad/ExcelExportButton.d.ts.map +1 -1
  29. package/dist-lib/components/voorraad/ExcelExportButton.js +1 -1
  30. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts +1 -1
  31. package/dist-lib/components/voorraad/FloridayInfoCard.d.ts.map +1 -1
  32. package/dist-lib/components/voorraad/FloridayInfoCard.js +3 -3
  33. package/dist-lib/components/voorraad/FloridaySentCard.d.ts +1 -1
  34. package/dist-lib/components/voorraad/FloridaySentCard.d.ts.map +1 -1
  35. package/dist-lib/components/voorraad/FloridaySentCard.js +4 -4
  36. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts +4 -0
  37. package/dist-lib/components/voorraad/FloridayStatusBadge.d.ts.map +1 -0
  38. package/dist-lib/components/voorraad/FloridayStatusBadge.js +8 -0
  39. package/dist-lib/components/voorraad/FustenPage.d.ts +1 -1
  40. package/dist-lib/components/voorraad/FustenPage.d.ts.map +1 -1
  41. package/dist-lib/components/voorraad/FustenPage.js +4 -4
  42. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts +2 -2
  43. package/dist-lib/components/voorraad/InventorySettingsDrawer.d.ts.map +1 -1
  44. package/dist-lib/components/voorraad/InventorySettingsDrawer.js +3 -3
  45. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts +3 -3
  46. package/dist-lib/components/voorraad/InventoryStatusBadge.d.ts.map +1 -1
  47. package/dist-lib/components/voorraad/InventoryStatusBadge.js +2 -2
  48. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts +2 -0
  49. package/dist-lib/components/voorraad/ModuleHealthCard.d.ts.map +1 -0
  50. package/dist-lib/components/voorraad/ModuleHealthCard.js +40 -0
  51. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts +1 -1
  52. package/dist-lib/components/voorraad/NieuwArtikelPage.d.ts.map +1 -1
  53. package/dist-lib/components/voorraad/NieuwArtikelPage.js +3 -3
  54. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts +1 -1
  55. package/dist-lib/components/voorraad/OrderHistoryCard.d.ts.map +1 -1
  56. package/dist-lib/components/voorraad/OrderHistoryCard.js +1 -1
  57. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts +1 -1
  58. package/dist-lib/components/voorraad/PriceStatusBadge.d.ts.map +1 -1
  59. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts +1 -1
  60. package/dist-lib/components/voorraad/ProductCustomFieldsCard.d.ts.map +1 -1
  61. package/dist-lib/components/voorraad/ProductCustomFieldsCard.js +2 -2
  62. package/dist-lib/components/voorraad/ProductLinkCard.d.ts +1 -1
  63. package/dist-lib/components/voorraad/ProductLinkCard.d.ts.map +1 -1
  64. package/dist-lib/components/voorraad/ProductLinkCard.js +6 -6
  65. package/dist-lib/components/voorraad/ProductSalePriceField.d.ts +2 -2
  66. package/dist-lib/components/voorraad/ProductSalePriceField.d.ts.map +1 -1
  67. package/dist-lib/components/voorraad/ProductSalePriceField.js +2 -2
  68. package/dist-lib/components/voorraad/ProductStructureCard.d.ts +2 -2
  69. package/dist-lib/components/voorraad/ProductStructureCard.d.ts.map +1 -1
  70. package/dist-lib/components/voorraad/ProductStructureCard.js +3 -3
  71. package/dist-lib/components/voorraad/PublicatiesPage.d.ts +1 -1
  72. package/dist-lib/components/voorraad/PublicatiesPage.d.ts.map +1 -1
  73. package/dist-lib/components/voorraad/PublicatiesPage.js +2 -2
  74. package/dist-lib/components/voorraad/PublishProgressCard.d.ts +2 -2
  75. package/dist-lib/components/voorraad/PublishProgressCard.d.ts.map +1 -1
  76. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts +2 -2
  77. package/dist-lib/components/voorraad/PublishReadinessCard.d.ts.map +1 -1
  78. package/dist-lib/components/voorraad/StepSamenstelling.d.ts +2 -2
  79. package/dist-lib/components/voorraad/StepSamenstelling.d.ts.map +1 -1
  80. package/dist-lib/components/voorraad/StepSamenstelling.js +98 -1
  81. package/dist-lib/components/voorraad/StockBulkButtons.d.ts +2 -2
  82. package/dist-lib/components/voorraad/StockBulkButtons.d.ts.map +1 -1
  83. package/dist-lib/components/voorraad/StockBulkButtons.js +6 -6
  84. package/dist-lib/components/voorraad/StockHistoryChart.d.ts +1 -1
  85. package/dist-lib/components/voorraad/StockHistoryChart.d.ts.map +1 -1
  86. package/dist-lib/components/voorraad/StockHistoryChart.js +1 -1
  87. package/dist-lib/components/voorraad/StockIntegrityAlert.d.ts +1 -1
  88. package/dist-lib/components/voorraad/StockIntegrityAlert.d.ts.map +1 -1
  89. package/dist-lib/components/voorraad/StockIntegrityAlert.js +1 -1
  90. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts +1 -1
  91. package/dist-lib/components/voorraad/StockMutationHistoryCard.d.ts.map +1 -1
  92. package/dist-lib/components/voorraad/StockMutationHistoryCard.js +2 -2
  93. package/dist-lib/components/voorraad/StockPushMonitor.d.ts +1 -1
  94. package/dist-lib/components/voorraad/StockPushMonitor.d.ts.map +1 -1
  95. package/dist-lib/components/voorraad/StockPushMonitor.js +8 -8
  96. package/dist-lib/components/voorraad/StockSyncStatus.d.ts +1 -1
  97. package/dist-lib/components/voorraad/StockSyncStatus.d.ts.map +1 -1
  98. package/dist-lib/components/voorraad/StockSyncStatus.js +2 -2
  99. package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts +1 -1
  100. package/dist-lib/components/voorraad/SupplyReadScopeAlert.d.ts.map +1 -1
  101. package/dist-lib/components/voorraad/SupplyReadScopeAlert.js +1 -1
  102. package/dist-lib/components/voorraad/TrayStickerCard.d.ts +1 -1
  103. package/dist-lib/components/voorraad/TrayStickerCard.d.ts.map +1 -1
  104. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts +2 -2
  105. package/dist-lib/components/voorraad/ValidationOverviewTable.d.ts.map +1 -1
  106. package/dist-lib/components/voorraad/ValidationOverviewTable.js +5 -5
  107. package/dist-lib/components/voorraad/ValidationPage.d.ts +1 -1
  108. package/dist-lib/components/voorraad/ValidationPage.d.ts.map +1 -1
  109. package/dist-lib/components/voorraad/ValidationPage.js +3 -3
  110. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts +10 -0
  111. package/dist-lib/components/voorraad/VoorraadDashboard.d.ts.map +1 -0
  112. package/dist-lib/components/voorraad/VoorraadDashboard.js +53 -0
  113. package/dist-lib/components/voorraad/VoorraadPage.d.ts +1 -1
  114. package/dist-lib/components/voorraad/VoorraadPage.d.ts.map +1 -1
  115. package/dist-lib/components/voorraad/VoorraadPage.js +35 -16
  116. package/dist-lib/components/voorraad/VoorraadPagination.d.ts +1 -1
  117. package/dist-lib/components/voorraad/VoorraadPagination.d.ts.map +1 -1
  118. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts +1 -1
  119. package/dist-lib/components/voorraad/VoorraadStockCard.d.ts.map +1 -1
  120. package/dist-lib/components/voorraad/VoorraadStockCard.js +3 -3
  121. package/dist-lib/components/voorraad/VoorraadTable.d.ts +3 -3
  122. package/dist-lib/components/voorraad/VoorraadTable.d.ts.map +1 -1
  123. package/dist-lib/components/voorraad/VoorraadTable.js +122 -39
  124. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts +1 -1
  125. package/dist-lib/components/voorraad/VoorraadVeldenCard.d.ts.map +1 -1
  126. package/dist-lib/components/voorraad/VoorraadVeldenCard.js +2 -2
  127. package/dist-lib/hooks/useFloriday.d.ts +1 -1
  128. package/dist-lib/hooks/useFloriday.js +4 -4
  129. package/dist-lib/hooks/useFloridayConnection.d.ts +1 -1
  130. package/dist-lib/hooks/useFloridayConnection.js +1 -1
  131. package/dist-lib/hooks/useFloridayContinuousStock.js +1 -1
  132. package/dist-lib/hooks/useFloridayPriceGroups.js +1 -1
  133. package/dist-lib/hooks/useFloridayVbnRequired.js +1 -1
  134. package/dist-lib/hooks/useFlorydayCustomers.js +1 -1
  135. package/dist-lib/hooks/useFusten.d.ts +1 -1
  136. package/dist-lib/hooks/useFusten.js +2 -2
  137. package/dist-lib/hooks/useInventorySettings.d.ts +1 -1
  138. package/dist-lib/hooks/useInventorySettings.js +1 -1
  139. package/dist-lib/hooks/useLocalTradeItems.d.ts +2 -2
  140. package/dist-lib/hooks/useLocalTradeItems.js +3 -3
  141. package/dist-lib/hooks/usePublishJob.d.ts +1 -1
  142. package/dist-lib/hooks/usePublishJob.js +2 -2
  143. package/dist-lib/hooks/useStockPushJobs.js +1 -1
  144. package/dist-lib/hooks/useStockSyncHealth.js +1 -1
  145. package/dist-lib/hooks/useTradeItemSpec.d.ts +2 -2
  146. package/dist-lib/hooks/useTradeItemStock.js +3 -3
  147. package/dist-lib/hooks/useVbnRegulatoryFeatures.d.ts +1 -1
  148. package/dist-lib/hooks/useVbnRegulatoryFeatures.js +1 -1
  149. package/dist-lib/hooks/useVoorraadCustomFields.d.ts +1 -1
  150. package/dist-lib/hooks/useVoorraadCustomFields.js +1 -1
  151. package/dist-lib/hooks/useVoorraadData.d.ts +1 -1
  152. package/dist-lib/hooks/useVoorraadData.js +6 -6
  153. package/dist-lib/hooks-entry.d.ts +5 -5
  154. package/dist-lib/hooks-entry.js +5 -5
  155. package/dist-lib/index.d.ts +11 -11
  156. package/dist-lib/index.js +12 -12
  157. package/dist-lib/integrations/supabase/auth-attacher.js +1 -1
  158. package/dist-lib/integrations/supabase/auth-middleware.d.ts +1 -1
  159. package/dist-lib/integrations/supabase/client.d.ts +1 -1
  160. package/dist-lib/integrations/supabase/client.js +1 -1
  161. package/dist-lib/integrations/supabase/client.server.d.ts +1 -1
  162. package/dist-lib/integrations/supabase/client.server.js +1 -1
  163. package/dist-lib/integrations/supabase/types.d.ts +450 -0
  164. package/dist-lib/integrations/supabase/types.d.ts.map +1 -1
  165. package/dist-lib/lib/__tests__/floricode-required-features.test.js +1 -1
  166. package/dist-lib/lib/__tests__/floriday-base-supply.test.js +1 -1
  167. package/dist-lib/lib/base-supply-reader.server.js +2 -2
  168. package/dist-lib/lib/ensure-article-codes.d.ts +1 -1
  169. package/dist-lib/lib/ensure-article-codes.js +1 -1
  170. package/dist-lib/lib/floricode-client.js +1 -1
  171. package/dist-lib/lib/floriday-2026v1.server.js +2 -2
  172. package/dist-lib/lib/floriday-client.d.ts +2 -2
  173. package/dist-lib/lib/floriday-client.js +2 -2
  174. package/dist-lib/lib/floriday-customer-offer.functions.d.ts +1 -1
  175. package/dist-lib/lib/floriday-customer-offer.functions.js +4 -4
  176. package/dist-lib/lib/floriday-env.functions.d.ts +4 -4
  177. package/dist-lib/lib/floriday-env.functions.js +4 -4
  178. package/dist-lib/lib/floriday-env.server.d.ts +2 -2
  179. package/dist-lib/lib/floriday-env.server.js +2 -2
  180. package/dist-lib/lib/floriday-field-sources.d.ts +18 -0
  181. package/dist-lib/lib/floriday-field-sources.d.ts.map +1 -0
  182. package/dist-lib/lib/floriday-field-sources.js +45 -0
  183. package/dist-lib/lib/floriday-gateway.functions.d.ts +10 -10
  184. package/dist-lib/lib/floriday-gateway.functions.js +14 -14
  185. package/dist-lib/lib/floriday-gateway.server.d.ts +1 -1
  186. package/dist-lib/lib/floriday-gateway.server.js +9 -9
  187. package/dist-lib/lib/floriday-import-validator.d.ts +1 -1
  188. package/dist-lib/lib/floriday-readiness.server.d.ts +1 -1
  189. package/dist-lib/lib/floriday-readiness.server.js +2 -2
  190. package/dist-lib/lib/floriday-relink.js +1 -1
  191. package/dist-lib/lib/floriday-schema-to-zod.d.ts +9 -0
  192. package/dist-lib/lib/floriday-schema-to-zod.d.ts.map +1 -0
  193. package/dist-lib/lib/floriday-schema-to-zod.js +53 -0
  194. package/dist-lib/lib/floriday-stock-supply.server.d.ts +1 -1
  195. package/dist-lib/lib/floriday-stock-supply.server.js +2 -2
  196. package/dist-lib/lib/floriday-supply-line.js +2 -2
  197. package/dist-lib/lib/floriday-vbn-required.functions.d.ts +2 -2
  198. package/dist-lib/lib/floriday-vbn-required.functions.js +2 -2
  199. package/dist-lib/lib/floriday-warehouse.functions.d.ts +6 -6
  200. package/dist-lib/lib/floriday-warehouse.functions.js +7 -7
  201. package/dist-lib/lib/floriday-write-gate.server.js +1 -1
  202. package/dist-lib/lib/floriday-writes.functions.d.ts +2 -2
  203. package/dist-lib/lib/floriday-writes.functions.js +6 -6
  204. package/dist-lib/lib/fusten.d.ts +1 -1
  205. package/dist-lib/lib/fusten.js +2 -2
  206. package/dist-lib/lib/inventory-settings.functions.js +1 -1
  207. package/dist-lib/lib/logistics-buffer-events.server.js +2 -2
  208. package/dist-lib/lib/logistics-events.js +2 -2
  209. package/dist-lib/lib/logistics-tasks.server.js +5 -5
  210. package/dist-lib/lib/merge-products.d.ts +8 -0
  211. package/dist-lib/lib/merge-products.d.ts.map +1 -0
  212. package/dist-lib/lib/merge-products.js +17 -0
  213. package/dist-lib/lib/module-health.functions.d.ts +53497 -0
  214. package/dist-lib/lib/module-health.functions.d.ts.map +1 -0
  215. package/dist-lib/lib/module-health.functions.js +261 -0
  216. package/dist-lib/lib/module-runtime-config.functions.d.ts +1 -1
  217. package/dist-lib/lib/module-runtime-config.functions.js +2 -2
  218. package/dist-lib/lib/module-runtime.server.js +1 -1
  219. package/dist-lib/lib/product-packing.js +1 -1
  220. package/dist-lib/lib/product-types.js +1 -1
  221. package/dist-lib/lib/publish-pipeline.d.ts +1 -1
  222. package/dist-lib/lib/publish-pipeline.js +2 -2
  223. package/dist-lib/lib/publish-readiness.d.ts +2 -2
  224. package/dist-lib/lib/trade-item-prices.d.ts +1 -1
  225. package/dist-lib/lib/trade-item-prices.js +2 -2
  226. package/dist-lib/lib/validationSchemas.d.ts +15 -0
  227. package/dist-lib/lib/validationSchemas.d.ts.map +1 -0
  228. package/dist-lib/lib/validationSchemas.js +25 -0
  229. package/dist-lib/lib/voorraad-custom-fields.js +1 -1
  230. package/dist-lib/server-hooks/floriday-base-supply.js +1 -1
  231. package/dist-lib/server-hooks/floriday-continuous-stock-pull.js +1 -1
  232. package/dist-lib/server-hooks/floriday-continuous-stock.js +1 -1
  233. package/dist-lib/server-hooks/floriday-stock-reconcile.js +1 -1
  234. package/dist-lib/server-hooks/logistics-tasks-run.js +1 -1
  235. package/package.json +2 -2
@@ -0,0 +1,2 @@
1
+ export declare function TemplatePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=TemplatePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TemplatePage.d.ts","sourceRoot":"","sources":["../../src/components/TemplatePage.tsx"],"names":[],"mappings":"AAAA,wBAAgB,YAAY,4CAS3B"}
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function TemplatePage() {
3
+ return (_jsxs("div", { className: "p-6", children: [_jsx("h1", { className: "text-2xl font-semibold", children: "Module pagina" }), _jsx("p", { className: "text-muted-foreground mt-2", children: "Vervang dit component met de pagina's van jouw module." })] }));
4
+ }
@@ -0,0 +1,2 @@
1
+ export declare function VoorraadSettingsCard(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=VoorraadSettingsCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VoorraadSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/components/settings/VoorraadSettingsCard.tsx"],"names":[],"mappings":"AAeA,wBAAgB,oBAAoB,4CA8DnC"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useEffect, useState } from "react";
3
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle, Button, Input, Label, supabase, toast, } from "@flowselections/core";
4
+ import { Package } from "lucide-react";
5
+ export function VoorraadSettingsCard() {
6
+ const [lowStockThreshold, setLowStockThreshold] = useState("");
7
+ const [loading, setLoading] = useState(true);
8
+ const [saving, setSaving] = useState(false);
9
+ useEffect(() => {
10
+ (async () => {
11
+ try {
12
+ const { data } = await supabase
13
+ .from("inventory_settings")
14
+ .select("*")
15
+ .limit(1)
16
+ .maybeSingle();
17
+ if (data && "low_stock_threshold" in data) {
18
+ setLowStockThreshold(String(data.low_stock_threshold ?? ""));
19
+ }
20
+ }
21
+ finally {
22
+ setLoading(false);
23
+ }
24
+ })();
25
+ }, []);
26
+ const handleSave = async () => {
27
+ setSaving(true);
28
+ try {
29
+ toast.success("Instellingen opgeslagen");
30
+ }
31
+ catch {
32
+ toast.error("Fout bij het opslaan");
33
+ }
34
+ finally {
35
+ setSaving(false);
36
+ }
37
+ };
38
+ return (_jsxs(Card, { children: [_jsxs(CardHeader, { children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Package, { className: "h-5 w-5 text-primary" }), _jsx(CardTitle, { children: "Voorraad Instellingen" })] }), _jsx(CardDescription, { children: "Beheer drempelwaarden en standaarden voor de voorraad module" })] }), _jsxs(CardContent, { className: "space-y-4", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "threshold", children: "Lage-voorraad drempel" }), _jsx(Input, { id: "threshold", type: "number", value: lowStockThreshold, onChange: (e) => setLowStockThreshold(e.target.value), placeholder: "bv. 10", disabled: loading })] }), _jsx(Button, { onClick: handleSave, disabled: saving || loading, children: saving ? "Opslaan..." : "Opslaan" })] })] }));
39
+ }
@@ -1,9 +1,9 @@
1
- import { type AdditionalPackagingInput } from "../../lib/floriday-payload";
1
+ import { type AdditionalPackagingInput } from "../../lib/floriday-payload.js";
2
2
  interface Props {
3
3
  open: boolean;
4
4
  onOpenChange: (open: boolean) => void;
5
5
  onSave: (item: AdditionalPackagingInput) => void;
6
6
  }
7
- export declare function AdditionalPackagingDialog({ open, onOpenChange, onSave }: Props): import("react").JSX.Element;
7
+ export declare function AdditionalPackagingDialog({ open, onOpenChange, onSave }: Props): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=AdditionalPackagingDialog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AdditionalPackagingDialog.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/AdditionalPackagingDialog.tsx"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAMpC,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,+BA2I9E"}
1
+ {"version":3,"file":"AdditionalPackagingDialog.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/AdditionalPackagingDialog.tsx"],"names":[],"mappings":"AAeA,OAAO,EAEL,KAAK,wBAAwB,EAC9B,MAAM,4BAA4B,CAAC;AAMpC,UAAU,KAAK;IACb,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,CAAC,IAAI,EAAE,wBAAwB,KAAK,IAAI,CAAC;CAClD;AAED,wBAAgB,yBAAyB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,KAAK,2CA2I9E"}
@@ -1,8 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { useMemo, useState, useEffect } from "react";
3
3
  import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Button, Label, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
4
- import { PACKAGING_SUPPLIERS, } from "../../lib/floriday-payload";
5
- import { getMaterialTypesForSupplier, getMaterialsForSupplier, } from "../../lib/vrs-catalog";
4
+ import { PACKAGING_SUPPLIERS, } from "../../lib/floriday-payload.js";
5
+ import { getMaterialTypesForSupplier, getMaterialsForSupplier, } from "../../lib/vrs-catalog.js";
6
6
  export function AdditionalPackagingDialog({ open, onOpenChange, onSave }) {
7
7
  const [supplierId, setSupplierId] = useState("");
8
8
  const [typeCode, setTypeCode] = useState("");
@@ -2,6 +2,6 @@ interface Props {
2
2
  productId: string | null;
3
3
  floridayId: string | null;
4
4
  }
5
- export declare function ArtikelCompositionCard({ productId, floridayId }: Props): import("react").JSX.Element | null;
5
+ export declare function ArtikelCompositionCard({ productId, floridayId }: Props): import("react/jsx-runtime").JSX.Element | null;
6
6
  export {};
7
7
  //# sourceMappingURL=ArtikelCompositionCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArtikelCompositionCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ArtikelCompositionCard.tsx"],"names":[],"mappings":"AAMA,UAAU,KAAK;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAkHD,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,sCA6RtE"}
1
+ {"version":3,"file":"ArtikelCompositionCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ArtikelCompositionCard.tsx"],"names":[],"mappings":"AAMA,UAAU,KAAK;IACb,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAkHD,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,KAAK,kDA6RtE"}
@@ -3,7 +3,7 @@ import { useCallback, useEffect, useState } from "react";
3
3
  import { toast } from "sonner";
4
4
  import { Card, CardContent, CardDescription, CardHeader, CardTitle, Badge } from "@flowselections/core";
5
5
  import { ArrowDown, ArrowUp, Loader2, Package } from "lucide-react";
6
- import { supabase } from "../../integrations/supabase/client";
6
+ import { supabase } from "../../integrations/supabase/client.js";
7
7
  async function loadStock(productIds, floridayIds) {
8
8
  const out = new Map();
9
9
  const idToProduct = new Map();
@@ -3,5 +3,5 @@ export declare function ArtikelWizard({ draftId: initialDraftId, tradeItemId, pr
3
3
  tradeItemId?: string;
4
4
  productId?: string;
5
5
  resumeJobId?: string;
6
- }): import("react").JSX.Element;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
7
  //# sourceMappingURL=ArtikelWizard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ArtikelWizard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ArtikelWizard.tsx"],"names":[],"mappings":"AA6MA,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EAAE,cAAc,EACvB,WAAW,EACX,SAAS,EACT,WAAW,GACZ,GAAE;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,+BAusEL"}
1
+ {"version":3,"file":"ArtikelWizard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ArtikelWizard.tsx"],"names":[],"mappings":"AA6MA,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EAAE,cAAc,EACvB,WAAW,EACX,SAAS,EACT,WAAW,GACZ,GAAE;IACD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACjB,2CAusEL"}
@@ -3,44 +3,44 @@ import { useCallback, useEffect, useMemo, useRef, useState } from "react";
3
3
  import { Link, useNavigate } from "@tanstack/react-router";
4
4
  import { AlertDialog, AlertDialogAction, AlertDialogCancel, AlertDialogContent, AlertDialogDescription, AlertDialogFooter, AlertDialogHeader, AlertDialogTitle, AlertDialogTrigger, Button, Card, CardContent, Checkbox, Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, Input, Label, Popover, PopoverContent, PopoverTrigger, Select, SelectContent, SelectItem, SelectTrigger, SelectValue, Switch, toast, } from "@flowselections/core";
5
5
  import { ArrowLeft, ArrowRight, Check, ChevronDown, ClipboardList, Info, Loader2, Plus, Search, Trash2, Upload, UploadCloud, Users, X, Star, } from "lucide-react";
6
- import { useFloridayConnection } from "../../hooks/useFloridayConnection";
7
- import { useFlorydayCustomers } from "../../hooks/useFlorydayCustomers";
8
- import { floriday } from "../../lib/floriday-client";
9
- import { listFloricode, listFloricodeByField } from "../../lib/floricode-client";
10
- import { supabase } from "../../integrations/supabase/client";
11
- import { buildAddTradeItemPayload, buildUpdateTradeItemPayload, buildPrimaryPackingBase, emptyWizardData, floridayCacheToWizardData, isValidGtin13, normalizeFloridayProductGroup, PACKAGING_SUPPLIERS, validateStep, } from "../../lib/floriday-payload";
12
- import { AdditionalPackagingDialog } from "./AdditionalPackagingDialog";
13
- import { publishCustomerOfferFn } from "../../lib/floriday-customer-offer.functions";
14
- import { upsertSupplyLineForTradeItem } from "../../lib/floriday-supply-line";
15
- import { deleteLocalTradeItem, getLocalTradeItem, markLocalSyncStatus, readLocalSyncStatus, upsertLocalTradeItem, } from "../../hooks/useLocalTradeItems";
16
- import { useTradeItemSpec } from "../../hooks/useTradeItemSpec";
17
- import { useVbnRegulatoryFeatures } from "../../hooks/useVbnRegulatoryFeatures";
18
- import { useFloridayVbnRequired } from "../../hooks/useFloridayVbnRequired";
19
- import { saveFloridayVbnRequired } from "../../lib/floriday-vbn-required.functions";
6
+ import { useFloridayConnection } from "../../hooks/useFloridayConnection.js";
7
+ import { useFlorydayCustomers } from "../../hooks/useFlorydayCustomers.js";
8
+ import { floriday } from "../../lib/floriday-client.js";
9
+ import { listFloricode, listFloricodeByField } from "../../lib/floricode-client.js";
10
+ import { supabase } from "../../integrations/supabase/client.js";
11
+ import { buildAddTradeItemPayload, buildUpdateTradeItemPayload, buildPrimaryPackingBase, emptyWizardData, floridayCacheToWizardData, isValidGtin13, normalizeFloridayProductGroup, PACKAGING_SUPPLIERS, validateStep, } from "../../lib/floriday-payload.js";
12
+ import { AdditionalPackagingDialog } from "./AdditionalPackagingDialog.js";
13
+ import { publishCustomerOfferFn } from "../../lib/floriday-customer-offer.functions.js";
14
+ import { upsertSupplyLineForTradeItem } from "../../lib/floriday-supply-line.js";
15
+ import { deleteLocalTradeItem, getLocalTradeItem, markLocalSyncStatus, readLocalSyncStatus, upsertLocalTradeItem, } from "../../hooks/useLocalTradeItems.js";
16
+ import { useTradeItemSpec } from "../../hooks/useTradeItemSpec.js";
17
+ import { useVbnRegulatoryFeatures } from "../../hooks/useVbnRegulatoryFeatures.js";
18
+ import { useFloridayVbnRequired } from "../../hooks/useFloridayVbnRequired.js";
19
+ import { saveFloridayVbnRequired } from "../../lib/floriday-vbn-required.functions.js";
20
20
  import { useQuery, useQueryClient } from "@tanstack/react-query";
21
- import { useCodeList, useTradeItemFormSchema } from "../../hooks/useFloriday";
22
- import { useFloridayPriceGroups } from "../../hooks/useFloridayPriceGroups";
23
- import { readTradeItemPrices, syncTradeItemPrices } from "../../lib/trade-item-prices";
24
- import { createPublishJob, finishPublishJob, markStepSkipped, rememberPublishRejection, runPublishStep, } from "../../lib/publish-pipeline";
25
- import { translatePublishError, } from "../../lib/publish-errors";
26
- import { buildReadinessReport } from "../../lib/publish-readiness";
27
- import { usePublishJob } from "../../hooks/usePublishJob";
28
- import { PublishReadinessCard } from "./PublishReadinessCard";
29
- import { PublishProgressCard } from "./PublishProgressCard";
30
- import { gatewayReadFn } from "../../lib/floriday-gateway.functions";
31
- import { pickPrimaryPacking, readPackingStatus, writeConfirmedPacking, } from "../../lib/product-packing";
32
- import { getFloridayReadinessFn } from "../../lib/floriday-env.functions";
21
+ import { useCodeList, useTradeItemFormSchema } from "../../hooks/useFloriday.js";
22
+ import { useFloridayPriceGroups } from "../../hooks/useFloridayPriceGroups.js";
23
+ import { readTradeItemPrices, syncTradeItemPrices } from "../../lib/trade-item-prices.js";
24
+ import { createPublishJob, finishPublishJob, markStepSkipped, rememberPublishRejection, runPublishStep, } from "../../lib/publish-pipeline.js";
25
+ import { translatePublishError, } from "../../lib/publish-errors.js";
26
+ import { buildReadinessReport } from "../../lib/publish-readiness.js";
27
+ import { usePublishJob } from "../../hooks/usePublishJob.js";
28
+ import { PublishReadinessCard } from "./PublishReadinessCard.js";
29
+ import { PublishProgressCard } from "./PublishProgressCard.js";
30
+ import { gatewayReadFn } from "../../lib/floriday-gateway.functions.js";
31
+ import { pickPrimaryPacking, readPackingStatus, writeConfirmedPacking, } from "../../lib/product-packing.js";
32
+ import { getFloridayReadinessFn } from "../../lib/floriday-env.functions.js";
33
33
  const floridayLogo = "/flowselections-assets/Voorraad/floriday-logo.png";
34
- import { VoorraadStockCard } from "../../components/voorraad/VoorraadStockCard";
35
- import { ProductLinkCard } from "../../components/voorraad/ProductLinkCard";
36
- import { PriceStatusBadge } from "../../components/voorraad/PriceStatusBadge";
37
- import { OrderHistoryCard } from "../../components/voorraad/OrderHistoryCard";
38
- import { StockMutationHistoryCard } from "../../components/voorraad/StockMutationHistoryCard";
39
- import { ArtikelCompositionCard } from "../../components/voorraad/ArtikelCompositionCard";
40
- import { ProductStructureCard, FloridayStockReasonLine } from "../../components/voorraad/ProductStructureCard";
41
- import { StepSamenstelling } from "../../components/voorraad/StepSamenstelling";
42
- import { FloridayInfoCard } from "../../components/voorraad/FloridayInfoCard";
43
- import { stockKeyFor } from "../../hooks/useTradeItemStock";
34
+ import { VoorraadStockCard } from "../../components/voorraad/VoorraadStockCard.js";
35
+ import { ProductLinkCard } from "../../components/voorraad/ProductLinkCard.js";
36
+ import { PriceStatusBadge } from "../../components/voorraad/PriceStatusBadge.js";
37
+ import { OrderHistoryCard } from "../../components/voorraad/OrderHistoryCard.js";
38
+ import { StockMutationHistoryCard } from "../../components/voorraad/StockMutationHistoryCard.js";
39
+ import { ArtikelCompositionCard } from "../../components/voorraad/ArtikelCompositionCard.js";
40
+ import { ProductStructureCard, FloridayStockReasonLine } from "../../components/voorraad/ProductStructureCard.js";
41
+ import { StepSamenstelling } from "../../components/voorraad/StepSamenstelling.js";
42
+ import { FloridayInfoCard } from "../../components/voorraad/FloridayInfoCard.js";
43
+ import { stockKeyFor } from "../../hooks/useTradeItemStock.js";
44
44
  const empty = emptyWizardData;
45
45
  const LOAD_CARRIER_LABELS = {
46
46
  AUCTION_TROLLEY: "Stapelwagen",
@@ -1517,7 +1517,7 @@ export function ArtikelWizard({ draftId: initialDraftId, tradeItemId, productId,
1517
1517
  const vbnValid = validateStepLocal("vbn", data).ok;
1518
1518
  const saveDraft = async () => {
1519
1519
  if (!activeId) {
1520
- toast.error("Geen actieve Floriday-connectie geselecteerd");
1520
+ toast.error("Geen actieve Floriday-koppeling. Kijk bij Instellingen › Floriday.");
1521
1521
  return;
1522
1522
  }
1523
1523
  // Voor een nieuw concept blijft een VBN-code de minimale poort. Voor
@@ -1715,10 +1715,10 @@ export function ArtikelWizard({ draftId: initialDraftId, tradeItemId, productId,
1715
1715
  ? "Lokaal artikel laden..."
1716
1716
  : productLoading
1717
1717
  ? "Product laden..."
1718
- : "Floriday-connectie laden..."] }) }));
1718
+ : "Floriday-koppeling laden..."] }) }));
1719
1719
  }
1720
1720
  if (!activeConnection) {
1721
- return (_jsx("main", { className: "p-6", children: _jsx(Card, { className: "p-6", children: "Geen actieve Floriday-connectie gevonden. Voeg er eerst een toe in Instellingen." }) }));
1721
+ return (_jsx("main", { className: "p-6", children: _jsx(Card, { className: "p-6", children: "Geen actieve Floriday-koppeling gevonden. Voeg er eerst een toe in Instellingen \u203A Floriday." }) }));
1722
1722
  }
1723
1723
  return (_jsxs("main", { className: "p-6 space-y-6", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx(Button, { variant: "ghost", size: "sm", asChild: true, children: _jsxs(Link, { to: "/voorraad", children: [_jsx(ArrowLeft, { className: "mr-2 h-4 w-4" }), "Terug naar voorraad"] }) }), !isEditingPublished && (_jsxs(Button, { variant: "outline", size: "sm", className: "ml-auto", onClick: saveDraft, disabled: submitting || (!draftId && !vbnValid), children: [submitting ? (_jsx(Loader2, { className: "mr-2 h-4 w-4 animate-spin" })) : (_jsx(ClipboardList, { className: "mr-2 h-4 w-4" })), "Product opslaan"] })), (isEditingDraft || isEditingProduct) && (_jsxs(AlertDialog, { open: deleteOpen, onOpenChange: (o) => {
1724
1724
  setDeleteOpen(o);
@@ -2086,8 +2086,8 @@ function StepArtikel({ data, update, collectionsList, setCollectionsList, articl
2086
2086
  : "border-border hover:border-primary/50"}`, children: [_jsx("div", { className: "flex w-full items-start", children: _jsx("span", { className: `flex h-4 w-4 items-center justify-center rounded-full border ${active ? "border-primary-foreground" : "border-muted-foreground/50"}`, children: active && (_jsx("span", { className: "h-2 w-2 rounded-full bg-primary-foreground" })) }) }), _jsx(Icon, { className: "h-6 w-6" }), _jsx("div", { className: "font-medium", children: t.label }), _jsx("div", { className: `text-xs ${active ? "text-primary-foreground/80" : "text-muted-foreground"}`, children: t.description })] }, t.value));
2087
2087
  }) })] }), _jsxs("div", { className: "space-y-1", children: [_jsxs("label", { className: "flex items-start gap-2 text-sm", children: [_jsx(Checkbox, { checked: data.visibleInExplorer, onCheckedChange: (v) => update("visibleInExplorer", v === true), className: "mt-0.5" }), _jsx("span", { children: "Artikel weergeven bij ontdekken in de Explorer voor kopers" })] }), _jsx("p", { className: "pl-6 text-xs text-muted-foreground", children: "Artikel is altijd zichtbaar via de customer API" })] }), parentProductId && (_jsx(ProductSalePriceField, { productId: parentProductId, onSaved: (p) => update("salePricePerPiece", p) }))] }));
2088
2088
  }
2089
- import { COUNTRIES } from "../../lib/countries";
2090
- import { ProductSalePriceField } from "./ProductSalePriceField";
2089
+ import { COUNTRIES } from "../../lib/countries.js";
2090
+ import { ProductSalePriceField } from "./ProductSalePriceField.js";
2091
2091
  function StepPaspoort({ data, update }) {
2092
2092
  const [countryOpen, setCountryOpen] = useState(false);
2093
2093
  const [countryQuery, setCountryQuery] = useState("");
@@ -2152,10 +2152,10 @@ function StepEigenschappen({ data, update, spec, schemaQuery, regulatoryQuery })
2152
2152
  return (_jsx("p", { className: "text-sm text-muted-foreground", children: "Selecteer eerst een VBN-code bij stap 1 om de bijbehorende eigenschappen te laden." }));
2153
2153
  }
2154
2154
  if (schemaQuery.isLoading) {
2155
- return (_jsxs("p", { className: "text-sm text-muted-foreground flex items-center gap-2", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Schema wordt geladen\u2026"] }));
2155
+ return (_jsxs("p", { className: "text-sm text-muted-foreground flex items-center gap-2", children: [_jsx(Loader2, { className: "h-4 w-4 animate-spin" }), "Kenmerken uit Floriday laden\u2026"] }));
2156
2156
  }
2157
2157
  if (schemaQuery.isError || !schemaQuery.data) {
2158
- return (_jsxs("p", { className: "text-sm text-destructive", children: ["Kon het Floriday trade-item schema niet volledig ophalen: ", schemaQuery.error instanceof Error ? schemaQuery.error.message : "onbekende fout"] }));
2158
+ return (_jsxs("p", { className: "text-sm text-destructive", children: ["De kenmerken uit Floriday konden niet worden geladen. Probeer het later opnieuw.", " ", _jsxs("details", { className: "text-xs opacity-80", children: [_jsx("summary", { className: "cursor-pointer", children: "Details voor beheer" }), schemaQuery.error instanceof Error ? schemaQuery.error.message : "onbekende fout"] })] }));
2159
2159
  }
2160
2160
  const hasRegulatoryLookup = /^\d{5,6}$/.test(String(data.vbnCode ?? "").trim());
2161
2161
  if (hasRegulatoryLookup && regulatoryQuery.isLoading) {
@@ -2280,7 +2280,7 @@ function StepKlanten({ data, update, floridayCustomers }) {
2280
2280
  });
2281
2281
  }, [floridayCustomers, search, onlySelected, selectedSet]);
2282
2282
  if (floridayCustomers.length === 0) {
2283
- return (_jsx("p", { className: "text-sm text-muted-foreground", children: "Geen klantorganisaties geladen vanuit Floriday. Controleer de connectie of probeer later opnieuw." }));
2283
+ return (_jsx("p", { className: "text-sm text-muted-foreground", children: "Geen klantorganisaties geladen vanuit Floriday. Controleer de Floriday-koppeling (Instellingen \u203A Floriday) of probeer later opnieuw." }));
2284
2284
  }
2285
2285
  const toggle = (id) => {
2286
2286
  if (selectedSet.has(id)) {
@@ -2326,7 +2326,7 @@ function StepFotos({ data, update, activeId }) {
2326
2326
  if (!files || files.length === 0)
2327
2327
  return;
2328
2328
  if (!activeId) {
2329
- toast.error("Geen actieve Floriday-connectie – kan foto's niet uploaden");
2329
+ toast.error("Geen actieve Floriday-koppeling – foto's kunnen niet worden geüpload");
2330
2330
  return;
2331
2331
  }
2332
2332
  const fileArr = Array.from(files);
@@ -2337,7 +2337,7 @@ function StepFotos({ data, update, activeId }) {
2337
2337
  toast.error("Je bent niet ingelogd – kan geen foto's uploaden");
2338
2338
  return;
2339
2339
  }
2340
- const { prepareFloridayImage, UnsupportedImageTypeError, ImageTooLargeError, ImageDecodeError, } = await import("../../lib/image-resize");
2340
+ const { prepareFloridayImage, UnsupportedImageTypeError, ImageTooLargeError, ImageDecodeError, } = await import("../../lib/image-resize.js");
2341
2341
  const additions = [];
2342
2342
  // Beperkte concurrency (2) voorkomt dat een drop van 10 bestanden de
2343
2343
  // gateway overspoelt en tegelijk in throttling loopt.
@@ -2621,7 +2621,7 @@ function PackingConfigDialog({ open, onOpenChange, initial, isFirst, packagingTy
2621
2621
  return;
2622
2622
  setUploadingPhoto(true);
2623
2623
  try {
2624
- const { prepareFloridayImage } = await import("../../lib/image-resize");
2624
+ const { prepareFloridayImage } = await import("../../lib/image-resize.js");
2625
2625
  const prepared = await prepareFloridayImage(file);
2626
2626
  const res = await floriday.uploadImage(activeId, prepared, prepared.type || "image/jpeg", prepared.name);
2627
2627
  if (!res.url)
@@ -2661,7 +2661,7 @@ function PackingConfigDialog({ open, onOpenChange, initial, isFirst, packagingTy
2661
2661
  packagingSupplierId: v,
2662
2662
  packagingSupplierName: sup?.name,
2663
2663
  }));
2664
- }, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Kies leverancier..." }) }), _jsx(SelectContent, { children: PACKAGING_SUPPLIERS.map((s) => (_jsx(SelectItem, { value: s.id, children: s.name }, s.id))) })] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Floricode VRS-materiaal UUID (optioneel)" }), _jsx(Input, { value: draft.packagingMaterialId ?? "", onChange: (e) => patch("packagingMaterialId", e.target.value.trim()), placeholder: "00000000-0000-0000-0000-000000000000", className: materialInvalid ? "border-destructive" : "" }), materialInvalid ? (_jsx("p", { className: "text-xs text-destructive", children: "Ongeldig UUID-formaat. Laat leeg of plak een echte VRS-materiaal UUID uit Floricode." })) : (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Wanneer ingevuld gaat het als ", _jsx("code", { children: "customPackageId" }), "naar Floriday en vervangt het de VBN-fust."] }))] })] }), hasCustomPkg && (_jsx("div", { className: "rounded-md border border-primary/30 bg-primary/5 px-3 py-2 text-xs", children: "Custom package actief \u2014 VBN-fust hieronder wordt genegeerd in de Floriday-payload." }))] })), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: hasCustomPkg
2664
+ }, children: [_jsx(SelectTrigger, { children: _jsx(SelectValue, { placeholder: "Kies leverancier..." }) }), _jsx(SelectContent, { children: PACKAGING_SUPPLIERS.map((s) => (_jsx(SelectItem, { value: s.id, children: s.name }, s.id))) })] }))] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Floricode VRS-materiaal UUID (optioneel)" }), _jsx(Input, { value: draft.packagingMaterialId ?? "", onChange: (e) => patch("packagingMaterialId", e.target.value.trim()), placeholder: "00000000-0000-0000-0000-000000000000", className: materialInvalid ? "border-destructive" : "" }), materialInvalid ? (_jsx("p", { className: "text-xs text-destructive", children: "Deze code klopt niet. Laat het veld leeg of kopieer de materiaalcode uit Floricode." })) : (_jsxs("p", { className: "text-xs text-muted-foreground", children: ["Wanneer ingevuld gaat het als ", _jsx("code", { children: "customPackageId" }), "naar Floriday en vervangt het de VBN-fust."] }))] })] }), hasCustomPkg && (_jsx("div", { className: "rounded-md border border-primary/30 bg-primary/5 px-3 py-2 text-xs", children: "Eigen verpakking gekozen; het VBN-fust hieronder wordt niet naar Floriday gestuurd." }))] })), _jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: hasCustomPkg
2665
2665
  ? "VBN-fust (genegeerd — custom package actief)"
2666
2666
  : draft.source === "SUPPLIER"
2667
2667
  ? "Fallback VBN-fust"
@@ -2839,7 +2839,7 @@ function StepAanbieden({ data, update, priceGroups, parentProductId }) {
2839
2839
  ? "Aanbod wordt aangemaakt direct na publiceren."
2840
2840
  : "Alleen artikel publiceren, geen aanbod aanmaken." })] }), _jsx(Switch, { checked: data.offerForSale, onCheckedChange: (v) => update("offerForSale", Boolean(v)) })] }), data.offerForSale && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Voorraad (stuks)" }), _jsx(Input, { type: "number", inputMode: "numeric", min: 0, step: 1, value: stockStr, onChange: (e) => update("saleStockPieces", Math.max(0, Math.floor(Number(e.target.value) || 0))) }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Wordt als fysieke voorraad geboekt en via continuous-stock naar Floriday gepusht." })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Basisprijs per stuk (EUR, excl. btw)" }), _jsx(Input, { type: "number", inputMode: "decimal", min: 0, step: "0.01", value: priceStr, onChange: (e) => update("salePricePerPiece", Number(e.target.value) || 0) }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Wordt gepusht als ", _jsx("code", { children: "weekly-base-supply" }), " \u2014 de standaard catalogusprijs voor klanten zonder eigen prijsgroep."] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Aanbod geldig vanaf" }), _jsx(Input, { type: "date", value: data.offerStartDate, onChange: (e) => update("offerStartDate", e.target.value) }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Aanbod loopt automatisch tot 1 jaar na deze datum." })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { children: "Zichtbaar voor" }), _jsx("div", { className: "rounded-md border bg-muted/20 px-3 py-2 text-sm", children: data.customerOrganizationIds.length
2841
2841
  ? `${data.customerOrganizationIds.length} geselecteerde klant(en)`
2842
- : "Alle gekoppelde Floriday-klanten" }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Klantselectie beheer je in de stap ", _jsx("em", { children: "Klanten" }), "."] })] })] }), _jsxs("div", { className: "space-y-2 rounded-md border p-4", children: [_jsxs("div", { className: "flex items-baseline justify-between", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium", children: "Prijzen per Floriday-prijsgroep" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Laat leeg om voor die groep g\u00E9\u00E9n afwijkende prijs te publiceren. Basisprijs blijft dan gelden." })] }), _jsxs("div", { className: "text-xs text-muted-foreground", children: [priceGroups.length, " groep", priceGroups.length === 1 ? "" : "en"] })] }), priceGroups.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground py-4", children: "Geen actieve prijsgroepen gevonden voor deze Floriday-connectie." })) : (_jsx("div", { className: "grid gap-3 sm:grid-cols-2 pt-2", children: priceGroups.map((g) => {
2842
+ : "Alle gekoppelde Floriday-klanten" }), _jsxs("p", { className: "text-xs text-muted-foreground", children: ["Klantselectie beheer je in de stap ", _jsx("em", { children: "Klanten" }), "."] })] })] }), _jsxs("div", { className: "space-y-2 rounded-md border p-4", children: [_jsxs("div", { className: "flex items-baseline justify-between", children: [_jsxs("div", { children: [_jsx("div", { className: "text-sm font-medium", children: "Prijzen per Floriday-prijsgroep" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Laat leeg om voor die groep g\u00E9\u00E9n afwijkende prijs te publiceren. Basisprijs blijft dan gelden." })] }), _jsxs("div", { className: "text-xs text-muted-foreground", children: [priceGroups.length, " groep", priceGroups.length === 1 ? "" : "en"] })] }), priceGroups.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground py-4", children: "Geen actieve prijsgroepen gevonden voor deze Floriday-koppeling." })) : (_jsx("div", { className: "grid gap-3 sm:grid-cols-2 pt-2", children: priceGroups.map((g) => {
2843
2843
  const val = data.priceGroupPrices?.[g.id];
2844
2844
  return (_jsxs("div", { className: "space-y-1", children: [_jsxs(Label, { className: "text-sm", children: [g.name, _jsxs("span", { className: "ml-2 text-xs font-normal text-muted-foreground", children: [g.customerOrganizationIds.length, " klant", g.customerOrganizationIds.length === 1 ? "" : "en"] })] }), _jsx(Input, { type: "number", inputMode: "decimal", min: 0, step: "0.01", placeholder: "\u20AC", value: val ? String(val) : "", onChange: (e) => setGroupPrice(g.id, e.target.value) })] }, g.id));
2845
2845
  }) }))] })] })), parentProductId && (_jsx(ProductSalePriceField, { productId: parentProductId, onSaved: (p) => update("salePricePerPiece", p) })), _jsx(VatSection, { data: data, update: update })] }));
@@ -4,6 +4,6 @@ interface Props {
4
4
  lines?: number;
5
5
  className?: string;
6
6
  }
7
- export declare function CollapsibleText({ text, lines, className }: Props): import("react").JSX.Element;
7
+ export declare function CollapsibleText({ text, lines, className }: Props): import("react/jsx-runtime").JSX.Element;
8
8
  export {};
9
9
  //# sourceMappingURL=CollapsibleText.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"CollapsibleText.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/CollapsibleText.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,KAAS,EAAE,SAAS,EAAE,EAAE,KAAK,+BA8DpE"}
1
+ {"version":3,"file":"CollapsibleText.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/CollapsibleText.tsx"],"names":[],"mappings":"AAOA,UAAU,KAAK;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAChC,gEAAgE;IAChE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,eAAe,CAAC,EAAE,IAAI,EAAE,KAAS,EAAE,SAAS,EAAE,EAAE,KAAK,2CA8DpE"}
@@ -0,0 +1,6 @@
1
+ import type { FloridayActiveConnection } from "../../lib/floriday-client.js";
2
+ export declare function ConnectionBadge({ connection, loading, }: {
3
+ connection: FloridayActiveConnection | null;
4
+ loading?: boolean;
5
+ }): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=ConnectionBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionBadge.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAE1E,wBAAgB,eAAe,CAAC,EAC9B,UAAU,EACV,OAAO,GACR,EAAE;IACD,UAAU,EAAE,wBAAwB,GAAG,IAAI,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,2CAqBA"}
@@ -0,0 +1,12 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Badge } from "@flowselections/core";
3
+ export function ConnectionBadge({ connection, loading, }) {
4
+ if (loading) {
5
+ return _jsx(Badge, { variant: "secondary", children: "Floriday laden..." });
6
+ }
7
+ if (!connection) {
8
+ return (_jsx(Badge, { variant: "destructive", children: "Geen actieve Floriday-connectie" }));
9
+ }
10
+ const env = connection.active_environment || connection.environment;
11
+ return (_jsxs(Badge, { variant: "secondary", className: "gap-1.5", children: [_jsx("span", { className: "font-medium", children: "Floriday" }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { className: "uppercase tracking-wide text-[10px]", children: env }), _jsx("span", { className: "opacity-60", children: "\u00B7" }), _jsx("span", { children: connection.organization_name || connection.label })] }));
12
+ }
@@ -0,0 +1,8 @@
1
+ import type { FloridayConnection } from "../../lib/floriday-client.js";
2
+ export declare function ConnectionPicker({ connections, activeId, onChange, disabled, }: {
3
+ connections: FloridayConnection[];
4
+ activeId: string | null;
5
+ onChange: (id: string) => void;
6
+ disabled?: boolean;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=ConnectionPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectionPicker.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ConnectionPicker.tsx"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,wBAAgB,gBAAgB,CAAC,EAC/B,WAAW,EACX,QAAQ,EACR,QAAQ,EACR,QAAQ,GACT,EAAE;IACD,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,2CAsBA"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@flowselections/core";
3
+ export function ConnectionPicker({ connections, activeId, onChange, disabled, }) {
4
+ if (connections.length === 0) {
5
+ return (_jsx("div", { className: "text-sm text-muted-foreground", children: "Geen actieve Floriday-connecties" }));
6
+ }
7
+ return (_jsxs(Select, { value: activeId ?? undefined, onValueChange: onChange, disabled: disabled, children: [_jsx(SelectTrigger, { className: "w-[260px]", children: _jsx(SelectValue, { placeholder: "Kies Floriday-connectie" }) }), _jsx(SelectContent, { children: connections.map((c) => (_jsx(SelectItem, { value: c.id, children: c.organization_name || c.label }, c.id))) })] }));
8
+ }
@@ -1,5 +1,5 @@
1
1
  export declare function EditArtikelPage({ id, resumeJobId, }: {
2
2
  id: string;
3
3
  resumeJobId?: string;
4
- }): import("react").JSX.Element;
4
+ }): import("react/jsx-runtime").JSX.Element;
5
5
  //# sourceMappingURL=EditArtikelPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EditArtikelPage.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/EditArtikelPage.tsx"],"names":[],"mappings":"AAaA,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,WAAW,GACZ,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,+BAoFA"}
1
+ {"version":3,"file":"EditArtikelPage.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/EditArtikelPage.tsx"],"names":[],"mappings":"AAaA,wBAAgB,eAAe,CAAC,EAC9B,EAAE,EACF,WAAW,GACZ,EAAE;IACD,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,2CAoFA"}
@@ -2,10 +2,10 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useState } from "react";
3
3
  import { Card } from "@flowselections/core";
4
4
  import { Loader2 } from "lucide-react";
5
- import { ArtikelWizard } from "./ArtikelWizard";
6
- import { ProductCustomFieldsCard } from "./ProductCustomFieldsCard";
7
- import { TrayStickerCard } from "./TrayStickerCard";
8
- import { supabase } from "../../integrations/supabase/client";
5
+ import { ArtikelWizard } from "./ArtikelWizard.js";
6
+ import { ProductCustomFieldsCard } from "./ProductCustomFieldsCard.js";
7
+ import { TrayStickerCard } from "./TrayStickerCard.js";
8
+ import { supabase } from "../../integrations/supabase/client.js";
9
9
  export function EditArtikelPage({ id, resumeJobId, }) {
10
10
  const [resolved, setResolved] = useState(null);
11
11
  useEffect(() => {
@@ -1,7 +1,7 @@
1
- import type { TradeItem } from "../../lib/floriday-client";
1
+ import type { TradeItem } from "../../lib/floriday-client.js";
2
2
  export declare function ExcelExportButton({ items, filename, onExported, }: {
3
3
  items: TradeItem[];
4
4
  filename?: string;
5
5
  onExported?: () => void | Promise<void>;
6
- }): import("react").JSX.Element;
6
+ }): import("react/jsx-runtime").JSX.Element;
7
7
  //# sourceMappingURL=ExcelExportButton.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ExcelExportButton.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ExcelExportButton.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAqB,EACrB,UAAU,GACX,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,+BAgDA"}
1
+ {"version":3,"file":"ExcelExportButton.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/ExcelExportButton.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAC;AAG3D,wBAAgB,iBAAiB,CAAC,EAChC,KAAK,EACL,QAAqB,EACrB,UAAU,GACX,EAAE;IACD,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACzC,2CAgDA"}
@@ -2,7 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import * as XLSX from "xlsx";
3
3
  import { Button, toast } from "@flowselections/core";
4
4
  import { Download } from "lucide-react";
5
- import { ensureArticleCodes } from "../../lib/ensure-article-codes";
5
+ import { ensureArticleCodes } from "../../lib/ensure-article-codes.js";
6
6
  export function ExcelExportButton({ items, filename = "voorraad", onExported, }) {
7
7
  const handle = async () => {
8
8
  let exportItems;
@@ -7,6 +7,6 @@ interface Props {
7
7
  gtin?: string | null;
8
8
  };
9
9
  }
10
- export declare function FloridayInfoCard({ floridayTradeItemId, local }: Props): import("react").JSX.Element | null;
10
+ export declare function FloridayInfoCard({ floridayTradeItemId, local }: Props): import("react/jsx-runtime").JSX.Element | null;
11
11
  export {};
12
12
  //# sourceMappingURL=FloridayInfoCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloridayInfoCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridayInfoCard.tsx"],"names":[],"mappings":"AAYA,UAAU,KAAK;IACb,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,8EAA8E;IAC9E,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AA6DD,wBAAgB,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,KAAK,sCAqRrE"}
1
+ {"version":3,"file":"FloridayInfoCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridayInfoCard.tsx"],"names":[],"mappings":"AAYA,UAAU,KAAK;IACb,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,8EAA8E;IAC9E,KAAK,CAAC,EAAE;QACN,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACtB,CAAC;CACH;AA6DD,wBAAgB,gBAAgB,CAAC,EAAE,mBAAmB,EAAE,KAAK,EAAE,EAAE,KAAK,kDAmRrE"}
@@ -2,8 +2,8 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { useEffect, useState } from "react";
3
3
  import { Card, CardContent, Badge } from "@flowselections/core";
4
4
  import { AlertTriangle, ChevronDown, ChevronRight, ExternalLink } from "lucide-react";
5
- import { supabase } from "../../integrations/supabase/client";
6
- import { floridayInfoFromCache, LOAD_CARRIER_LABELS, } from "../../lib/floriday-info";
5
+ import { supabase } from "../../integrations/supabase/client.js";
6
+ import { floridayInfoFromCache, LOAD_CARRIER_LABELS, } from "../../lib/floriday-info.js";
7
7
  const floridayLogo = "/flowselections-assets/Voorraad/floriday-logo.png";
8
8
  function formatDate(iso) {
9
9
  if (!iso)
@@ -75,7 +75,7 @@ export function FloridayInfoCard({ floridayTradeItemId, local }) {
75
75
  }, [floridayTradeItemId]);
76
76
  if (!floridayTradeItemId)
77
77
  return null;
78
- return (_jsx(Card, { className: "overflow-hidden", children: _jsxs(CardContent, { className: "p-4 space-y-4", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("img", { src: floridayLogo, alt: "Floriday", className: "h-6 w-6 shrink-0" }), _jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Floriday-informatie" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Rechtstreeks uit Floriday geladen \u2014 controle-informatie, wordt niet lokaal overschreven." })] }), info?.tradeItemVersion != null && (_jsxs(Badge, { variant: "secondary", className: "text-xs", children: ["v", info.tradeItemVersion] }))] }), loading && (_jsx("div", { className: "text-sm text-muted-foreground", children: "Floriday-info laden\u2026" })), !loading && notFound && (_jsxs("div", { className: "rounded-md border border-amber-300 bg-amber-50 p-3 text-sm text-amber-900", children: ["Geen Floriday-record gevonden voor id", " ", _jsx("code", { className: "font-mono", children: floridayTradeItemId }), ". Wacht op de volgende sync of controleer de connectie."] })), info && (_jsxs(_Fragment, { children: [info.photos.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "rounded-md border overflow-hidden bg-muted/30", children: _jsx("img", { src: info.photos[activePhoto]?.url ?? info.photos[0].url, alt: info.name, className: "w-full max-h-80 object-contain" }) }), info.photos.length > 1 && (_jsx("div", { className: "flex gap-2 flex-wrap", children: info.photos.map((p, i) => (_jsx("button", { type: "button", onClick: () => setActivePhoto(i), className: `h-14 w-14 rounded border overflow-hidden ${i === activePhoto
78
+ return (_jsx(Card, { className: "overflow-hidden", children: _jsxs(CardContent, { className: "p-4 space-y-4", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("img", { src: floridayLogo, alt: "Floriday", className: "h-6 w-6 shrink-0" }), _jsxs("div", { className: "flex-1", children: [_jsx("div", { className: "font-semibold", children: "Floriday-informatie" }), _jsx("div", { className: "text-xs text-muted-foreground", children: "Rechtstreeks uit Floriday geladen \u2014 controle-informatie, wordt niet lokaal overschreven." })] }), info?.tradeItemVersion != null && (_jsxs(Badge, { variant: "secondary", className: "text-xs", children: ["v", info.tradeItemVersion] }))] }), loading && (_jsx("div", { className: "text-sm text-muted-foreground", children: "Floriday-info laden\u2026" })), !loading && notFound && (_jsx("div", { className: "rounded-md border border-amber-300 bg-amber-50 p-3 text-sm text-amber-900", children: "Dit artikel is nog niet opgehaald uit Floriday. Klik op \u2018Bijwerken\u2019 en probeer opnieuw." })), info && (_jsxs(_Fragment, { children: [info.photos.length > 0 && (_jsxs("div", { className: "space-y-2", children: [_jsx("div", { className: "rounded-md border overflow-hidden bg-muted/30", children: _jsx("img", { src: info.photos[activePhoto]?.url ?? info.photos[0].url, alt: info.name, className: "w-full max-h-80 object-contain" }) }), info.photos.length > 1 && (_jsx("div", { className: "flex gap-2 flex-wrap", children: info.photos.map((p, i) => (_jsx("button", { type: "button", onClick: () => setActivePhoto(i), className: `h-14 w-14 rounded border overflow-hidden ${i === activePhoto
79
79
  ? "ring-2 ring-primary"
80
80
  : "opacity-70 hover:opacity-100"}`, "aria-label": `Foto ${i + 1}`, children: _jsx("img", { src: p.url, alt: "", className: "h-full w-full object-cover" }) }, p.url))) }))] })), _jsxs("div", { className: "grid gap-x-8 gap-y-1 md:grid-cols-2", children: [_jsxs("div", { children: [_jsx(DiffField, { label: "Naam", floridayValue: info.name, localValue: local?.name ?? null }), _jsx(DiffField, { label: "Artikelnr", floridayValue: info.supplierArticleCode, localValue: local?.articleNumber ?? null }), _jsx(DiffField, { label: "GTIN", floridayValue: info.articleGtin, localValue: local?.gtin ?? null }), _jsx(Field, { label: "VBN-code", value: info.vbnProductCode }), _jsx(Field, { label: "Referentie", value: info.supplierReference })] }), _jsxs("div", { children: [_jsx(Field, { label: "Botanische naam", value: info.botanicalNames.join(", ") || null }), _jsx(Field, { label: "Land van herkomst", value: info.countryOfOrigin.join(", ") || null }), _jsx(Field, { label: "Seizoensperiode", value: info.seasonalPeriods.length > 0
81
81
  ? info.seasonalPeriods
@@ -19,6 +19,6 @@ export declare function FloridaySentCard({ connectionId, productId, tradeItemId,
19
19
  productId?: string | null;
20
20
  tradeItemId?: string | null;
21
21
  productType?: string | null;
22
- }): import("react").JSX.Element;
22
+ }): import("react/jsx-runtime").JSX.Element;
23
23
  export {};
24
24
  //# sourceMappingURL=FloridaySentCard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FloridaySentCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridaySentCard.tsx"],"names":[],"mappings":"AAWA,KAAK,GAAG,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAUF,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC,GAAG,MAAM,CA0BxI;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,+BA2JA"}
1
+ {"version":3,"file":"FloridaySentCard.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridaySentCard.tsx"],"names":[],"mappings":"AAWA,KAAK,GAAG,GAAG;IACT,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAUF,wBAAgB,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,QAAQ,GAAG,cAAc,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,aAAa,CAAC,GAAG,MAAM,CA0BxI;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,SAAS,EACT,WAAW,EACX,WAAW,GACZ,EAAE;IACD,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7B,2CA2JA"}
@@ -7,8 +7,8 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
7
7
  import { useEffect, useState } from "react";
8
8
  import { Card, CardContent } from "@flowselections/core";
9
9
  import { Send } from "lucide-react";
10
- import { supabase } from "../../integrations/supabase/client";
11
- import { priceProblem } from "../../lib/floriday-base-supply";
10
+ import { supabase } from "../../integrations/supabase/client.js";
11
+ import { priceProblem } from "../../lib/floriday-base-supply.js";
12
12
  const MODE_LABEL = {
13
13
  FOLLOW_ERP: "Volgt ERP",
14
14
  MAXIMUM: "Maximum",
@@ -35,12 +35,12 @@ export function resultText(r) {
35
35
  return `Week ${r.target_week ?? "?"} is gesloten in Floriday`;
36
36
  case "pending":
37
37
  case "processing":
38
- return r.last_error ? `Wacht op Floriday (laatste fout: ${r.last_error.slice(0, 80)})` : "Wacht op Floriday";
38
+ return "Wacht op Floriday";
39
39
  case "superseded":
40
40
  return "Vervangen door een nieuwere stand";
41
41
  case "dead_letter":
42
42
  case "failed":
43
- return r.last_error ? `Mislukt: ${r.last_error.slice(0, 120)}` : "Mislukt";
43
+ return "Niet aangekomen in Floriday. Klik op ‘Opnieuw proberen’.";
44
44
  default:
45
45
  return r.status;
46
46
  }
@@ -0,0 +1,4 @@
1
+ export declare function FloridayStatusBadge({ active }: {
2
+ active: boolean | undefined;
3
+ }): import("react/jsx-runtime").JSX.Element;
4
+ //# sourceMappingURL=FloridayStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloridayStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FloridayStatusBadge.tsx"],"names":[],"mappings":"AAEA,wBAAgB,mBAAmB,CAAC,EAAE,MAAM,EAAE,EAAE;IAAE,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;CAAE,2CAa9E"}
@@ -0,0 +1,8 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Badge } from "@flowselections/core";
3
+ export function FloridayStatusBadge({ active }) {
4
+ if (active) {
5
+ return (_jsx(Badge, { className: "bg-emerald-500/15 text-emerald-700 border-emerald-500/30", children: "Actief op Floriday" }));
6
+ }
7
+ return (_jsx(Badge, { className: "bg-slate-500/15 text-slate-700 border-slate-500/30", children: "Niet actief op Floriday" }));
8
+ }
@@ -1,2 +1,2 @@
1
- export declare function FustenPage(): import("react").JSX.Element;
1
+ export declare function FustenPage(): import("react/jsx-runtime").JSX.Element;
2
2
  //# sourceMappingURL=FustenPage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FustenPage.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FustenPage.tsx"],"names":[],"mappings":"AAkKA,wBAAgB,UAAU,gCAgPzB"}
1
+ {"version":3,"file":"FustenPage.d.ts","sourceRoot":"","sources":["../../../src/components/voorraad/FustenPage.tsx"],"names":[],"mappings":"AAkKA,wBAAgB,UAAU,4CAgPzB"}