@endora-commerce/mod-organizations 0.100.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 (288) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +62 -0
  3. package/dist/admin/components/OrganizationSalesRepsTab.d.ts +27 -0
  4. package/dist/admin/components/OrganizationSalesRepsTab.d.ts.map +1 -0
  5. package/dist/admin/components/OrganizationSalesRepsTab.js +170 -0
  6. package/dist/admin/components/OrganizationSalesRepsTab.js.map +1 -0
  7. package/dist/admin/index.d.ts +30 -0
  8. package/dist/admin/index.d.ts.map +1 -0
  9. package/dist/admin/index.js +59 -0
  10. package/dist/admin/index.js.map +1 -0
  11. package/dist/admin/pages/OrganizationDetail.d.ts +9 -0
  12. package/dist/admin/pages/OrganizationDetail.d.ts.map +1 -0
  13. package/dist/admin/pages/OrganizationDetail.js +247 -0
  14. package/dist/admin/pages/OrganizationDetail.js.map +1 -0
  15. package/dist/admin/pages/OrganizationsList.d.ts +9 -0
  16. package/dist/admin/pages/OrganizationsList.d.ts.map +1 -0
  17. package/dist/admin/pages/OrganizationsList.js +73 -0
  18. package/dist/admin/pages/OrganizationsList.js.map +1 -0
  19. package/dist/admin/panels/ApplicablePriceListsPanel.d.ts +12 -0
  20. package/dist/admin/panels/ApplicablePriceListsPanel.d.ts.map +1 -0
  21. package/dist/admin/panels/ApplicablePriceListsPanel.js +49 -0
  22. package/dist/admin/panels/ApplicablePriceListsPanel.js.map +1 -0
  23. package/dist/admin/panels/FulfilmentStrategyPanel.d.ts +16 -0
  24. package/dist/admin/panels/FulfilmentStrategyPanel.d.ts.map +1 -0
  25. package/dist/admin/panels/FulfilmentStrategyPanel.js +29 -0
  26. package/dist/admin/panels/FulfilmentStrategyPanel.js.map +1 -0
  27. package/dist/admin/panels/HierarchyPanel.d.ts +15 -0
  28. package/dist/admin/panels/HierarchyPanel.d.ts.map +1 -0
  29. package/dist/admin/panels/HierarchyPanel.js +65 -0
  30. package/dist/admin/panels/HierarchyPanel.js.map +1 -0
  31. package/dist/admin/panels/ModerationActionsPanel.d.ts +28 -0
  32. package/dist/admin/panels/ModerationActionsPanel.d.ts.map +1 -0
  33. package/dist/admin/panels/ModerationActionsPanel.js +111 -0
  34. package/dist/admin/panels/ModerationActionsPanel.js.map +1 -0
  35. package/dist/admin/panels/RestrictionsPanel.d.ts +24 -0
  36. package/dist/admin/panels/RestrictionsPanel.d.ts.map +1 -0
  37. package/dist/admin/panels/RestrictionsPanel.js +121 -0
  38. package/dist/admin/panels/RestrictionsPanel.js.map +1 -0
  39. package/dist/admin/panels/VatValidationPanel.d.ts +28 -0
  40. package/dist/admin/panels/VatValidationPanel.d.ts.map +1 -0
  41. package/dist/admin/panels/VatValidationPanel.js +79 -0
  42. package/dist/admin/panels/VatValidationPanel.js.map +1 -0
  43. package/dist/backend/commands/move.command.d.ts +11 -0
  44. package/dist/backend/commands/move.command.d.ts.map +1 -0
  45. package/dist/backend/commands/move.command.js +11 -0
  46. package/dist/backend/commands/move.command.js.map +1 -0
  47. package/dist/backend/commands/set-cart-approval-policy.command.d.ts +31 -0
  48. package/dist/backend/commands/set-cart-approval-policy.command.d.ts.map +1 -0
  49. package/dist/backend/commands/set-cart-approval-policy.command.js +56 -0
  50. package/dist/backend/commands/set-cart-approval-policy.command.js.map +1 -0
  51. package/dist/backend/commands/set-credit-mode.command.d.ts +16 -0
  52. package/dist/backend/commands/set-credit-mode.command.d.ts.map +1 -0
  53. package/dist/backend/commands/set-credit-mode.command.js +25 -0
  54. package/dist/backend/commands/set-credit-mode.command.js.map +1 -0
  55. package/dist/backend/commands/set-parent.command.d.ts +26 -0
  56. package/dist/backend/commands/set-parent.command.d.ts.map +1 -0
  57. package/dist/backend/commands/set-parent.command.js +51 -0
  58. package/dist/backend/commands/set-parent.command.js.map +1 -0
  59. package/dist/backend/demo/reset.d.ts +20 -0
  60. package/dist/backend/demo/reset.d.ts.map +1 -0
  61. package/dist/backend/demo/reset.js +11 -0
  62. package/dist/backend/demo/reset.js.map +1 -0
  63. package/dist/backend/demo/rows.d.ts +44 -0
  64. package/dist/backend/demo/rows.d.ts.map +1 -0
  65. package/dist/backend/demo/rows.js +44 -0
  66. package/dist/backend/demo/rows.js.map +1 -0
  67. package/dist/backend/demo/seed.d.ts +20 -0
  68. package/dist/backend/demo/seed.d.ts.map +1 -0
  69. package/dist/backend/demo/seed.js +28 -0
  70. package/dist/backend/demo/seed.js.map +1 -0
  71. package/dist/backend/email-templates/invitation.d.ts +23 -0
  72. package/dist/backend/email-templates/invitation.d.ts.map +1 -0
  73. package/dist/backend/email-templates/invitation.js +35 -0
  74. package/dist/backend/email-templates/invitation.js.map +1 -0
  75. package/dist/backend/email-templates/transactional-defaults.d.ts +54 -0
  76. package/dist/backend/email-templates/transactional-defaults.d.ts.map +1 -0
  77. package/dist/backend/email-templates/transactional-defaults.js +242 -0
  78. package/dist/backend/email-templates/transactional-defaults.js.map +1 -0
  79. package/dist/backend/email-templates/verification.d.ts +14 -0
  80. package/dist/backend/email-templates/verification.d.ts.map +1 -0
  81. package/dist/backend/email-templates/verification.js +34 -0
  82. package/dist/backend/email-templates/verification.js.map +1 -0
  83. package/dist/backend/entities/email-verification-token.entity.d.ts +17 -0
  84. package/dist/backend/entities/email-verification-token.entity.d.ts.map +1 -0
  85. package/dist/backend/entities/email-verification-token.entity.js +60 -0
  86. package/dist/backend/entities/email-verification-token.entity.js.map +1 -0
  87. package/dist/backend/entities/organization-delivery-method-link.entity.d.ts +14 -0
  88. package/dist/backend/entities/organization-delivery-method-link.entity.d.ts.map +1 -0
  89. package/dist/backend/entities/organization-delivery-method-link.entity.js +41 -0
  90. package/dist/backend/entities/organization-delivery-method-link.entity.js.map +1 -0
  91. package/dist/backend/entities/organization-invitation.entity.d.ts +21 -0
  92. package/dist/backend/entities/organization-invitation.entity.d.ts.map +1 -0
  93. package/dist/backend/entities/organization-invitation.entity.js +85 -0
  94. package/dist/backend/entities/organization-invitation.entity.js.map +1 -0
  95. package/dist/backend/entities/organization-payment-method-link.entity.d.ts +14 -0
  96. package/dist/backend/entities/organization-payment-method-link.entity.d.ts.map +1 -0
  97. package/dist/backend/entities/organization-payment-method-link.entity.js +41 -0
  98. package/dist/backend/entities/organization-payment-method-link.entity.js.map +1 -0
  99. package/dist/backend/entities/organization-sales-rep-assignment.entity.d.ts +17 -0
  100. package/dist/backend/entities/organization-sales-rep-assignment.entity.d.ts.map +1 -0
  101. package/dist/backend/entities/organization-sales-rep-assignment.entity.js +56 -0
  102. package/dist/backend/entities/organization-sales-rep-assignment.entity.js.map +1 -0
  103. package/dist/backend/entities/organization-tax-id-validation.entity.d.ts +29 -0
  104. package/dist/backend/entities/organization-tax-id-validation.entity.d.ts.map +1 -0
  105. package/dist/backend/entities/organization-tax-id-validation.entity.js +78 -0
  106. package/dist/backend/entities/organization-tax-id-validation.entity.js.map +1 -0
  107. package/dist/backend/entities/organization-warehouse-link.entity.d.ts +15 -0
  108. package/dist/backend/entities/organization-warehouse-link.entity.d.ts.map +1 -0
  109. package/dist/backend/entities/organization-warehouse-link.entity.js +42 -0
  110. package/dist/backend/entities/organization-warehouse-link.entity.js.map +1 -0
  111. package/dist/backend/entities/organization.entity.d.ts +125 -0
  112. package/dist/backend/entities/organization.entity.d.ts.map +1 -0
  113. package/dist/backend/entities/organization.entity.js +282 -0
  114. package/dist/backend/entities/organization.entity.js.map +1 -0
  115. package/dist/backend/index.d.ts +250 -0
  116. package/dist/backend/index.d.ts.map +1 -0
  117. package/dist/backend/index.js +506 -0
  118. package/dist/backend/index.js.map +1 -0
  119. package/dist/backend/integrations/ministerstwo-finansow-client.d.ts +22 -0
  120. package/dist/backend/integrations/ministerstwo-finansow-client.d.ts.map +1 -0
  121. package/dist/backend/integrations/ministerstwo-finansow-client.js +172 -0
  122. package/dist/backend/integrations/ministerstwo-finansow-client.js.map +1 -0
  123. package/dist/backend/integrations/vies-client.d.ts +18 -0
  124. package/dist/backend/integrations/vies-client.d.ts.map +1 -0
  125. package/dist/backend/integrations/vies-client.js +133 -0
  126. package/dist/backend/integrations/vies-client.js.map +1 -0
  127. package/dist/backend/plugin.d.ts +126 -0
  128. package/dist/backend/plugin.d.ts.map +1 -0
  129. package/dist/backend/plugin.js +139 -0
  130. package/dist/backend/plugin.js.map +1 -0
  131. package/dist/backend/routes.admin.d.ts +66 -0
  132. package/dist/backend/routes.admin.d.ts.map +1 -0
  133. package/dist/backend/routes.admin.js +711 -0
  134. package/dist/backend/routes.admin.js.map +1 -0
  135. package/dist/backend/routes.customer.d.ts +33 -0
  136. package/dist/backend/routes.customer.d.ts.map +1 -0
  137. package/dist/backend/routes.customer.js +139 -0
  138. package/dist/backend/routes.customer.js.map +1 -0
  139. package/dist/backend/routes.members.d.ts +31 -0
  140. package/dist/backend/routes.members.d.ts.map +1 -0
  141. package/dist/backend/routes.members.js +109 -0
  142. package/dist/backend/routes.members.js.map +1 -0
  143. package/dist/backend/routes.public.d.ts +49 -0
  144. package/dist/backend/routes.public.d.ts.map +1 -0
  145. package/dist/backend/routes.public.js +220 -0
  146. package/dist/backend/routes.public.js.map +1 -0
  147. package/dist/backend/routes.sales-reps.d.ts +46 -0
  148. package/dist/backend/routes.sales-reps.d.ts.map +1 -0
  149. package/dist/backend/routes.sales-reps.js +114 -0
  150. package/dist/backend/routes.sales-reps.js.map +1 -0
  151. package/dist/backend/routes.storefront.d.ts +25 -0
  152. package/dist/backend/routes.storefront.d.ts.map +1 -0
  153. package/dist/backend/routes.storefront.js +65 -0
  154. package/dist/backend/routes.storefront.js.map +1 -0
  155. package/dist/backend/schemas/organization.d.ts +59 -0
  156. package/dist/backend/schemas/organization.d.ts.map +1 -0
  157. package/dist/backend/schemas/organization.js +55 -0
  158. package/dist/backend/schemas/organization.js.map +1 -0
  159. package/dist/backend/schemas/settings.d.ts +30 -0
  160. package/dist/backend/schemas/settings.d.ts.map +1 -0
  161. package/dist/backend/schemas/settings.js +35 -0
  162. package/dist/backend/schemas/settings.js.map +1 -0
  163. package/dist/backend/services/email-verification-service.d.ts +45 -0
  164. package/dist/backend/services/email-verification-service.d.ts.map +1 -0
  165. package/dist/backend/services/email-verification-service.js +95 -0
  166. package/dist/backend/services/email-verification-service.js.map +1 -0
  167. package/dist/backend/services/invitation-service.d.ts +85 -0
  168. package/dist/backend/services/invitation-service.d.ts.map +1 -0
  169. package/dist/backend/services/invitation-service.js +266 -0
  170. package/dist/backend/services/invitation-service.js.map +1 -0
  171. package/dist/backend/services/normalize-name.d.ts +14 -0
  172. package/dist/backend/services/normalize-name.d.ts.map +1 -0
  173. package/dist/backend/services/normalize-name.js +14 -0
  174. package/dist/backend/services/normalize-name.js.map +1 -0
  175. package/dist/backend/services/org-registration-notifier.d.ts +36 -0
  176. package/dist/backend/services/org-registration-notifier.d.ts.map +1 -0
  177. package/dist/backend/services/org-registration-notifier.js +109 -0
  178. package/dist/backend/services/org-registration-notifier.js.map +1 -0
  179. package/dist/backend/services/org-template-email.d.ts +18 -0
  180. package/dist/backend/services/org-template-email.d.ts.map +1 -0
  181. package/dist/backend/services/org-template-email.js +16 -0
  182. package/dist/backend/services/org-template-email.js.map +1 -0
  183. package/dist/backend/services/organization-context-service.d.ts +52 -0
  184. package/dist/backend/services/organization-context-service.d.ts.map +1 -0
  185. package/dist/backend/services/organization-context-service.js +70 -0
  186. package/dist/backend/services/organization-context-service.js.map +1 -0
  187. package/dist/backend/services/organization-country-reference.d.ts +11 -0
  188. package/dist/backend/services/organization-country-reference.d.ts.map +1 -0
  189. package/dist/backend/services/organization-country-reference.js +24 -0
  190. package/dist/backend/services/organization-country-reference.js.map +1 -0
  191. package/dist/backend/services/organization-details-port.d.ts +33 -0
  192. package/dist/backend/services/organization-details-port.d.ts.map +1 -0
  193. package/dist/backend/services/organization-details-port.js +95 -0
  194. package/dist/backend/services/organization-details-port.js.map +1 -0
  195. package/dist/backend/services/organization-effective-pricelists-service.d.ts +50 -0
  196. package/dist/backend/services/organization-effective-pricelists-service.d.ts.map +1 -0
  197. package/dist/backend/services/organization-effective-pricelists-service.js +68 -0
  198. package/dist/backend/services/organization-effective-pricelists-service.js.map +1 -0
  199. package/dist/backend/services/organization-inheritance-service.d.ts +73 -0
  200. package/dist/backend/services/organization-inheritance-service.d.ts.map +1 -0
  201. package/dist/backend/services/organization-inheritance-service.js +63 -0
  202. package/dist/backend/services/organization-inheritance-service.js.map +1 -0
  203. package/dist/backend/services/organization-moderation-service.d.ts +124 -0
  204. package/dist/backend/services/organization-moderation-service.d.ts.map +1 -0
  205. package/dist/backend/services/organization-moderation-service.js +337 -0
  206. package/dist/backend/services/organization-moderation-service.js.map +1 -0
  207. package/dist/backend/services/organization-restriction-service.d.ts +70 -0
  208. package/dist/backend/services/organization-restriction-service.d.ts.map +1 -0
  209. package/dist/backend/services/organization-restriction-service.js +210 -0
  210. package/dist/backend/services/organization-restriction-service.js.map +1 -0
  211. package/dist/backend/services/organization-tax-id-validation-service.d.ts +59 -0
  212. package/dist/backend/services/organization-tax-id-validation-service.d.ts.map +1 -0
  213. package/dist/backend/services/organization-tax-id-validation-service.js +115 -0
  214. package/dist/backend/services/organization-tax-id-validation-service.js.map +1 -0
  215. package/dist/backend/services/organization-tree-service.d.ts +102 -0
  216. package/dist/backend/services/organization-tree-service.d.ts.map +1 -0
  217. package/dist/backend/services/organization-tree-service.js +184 -0
  218. package/dist/backend/services/organization-tree-service.js.map +1 -0
  219. package/dist/backend/services/personal-organization-service.d.ts +130 -0
  220. package/dist/backend/services/personal-organization-service.d.ts.map +1 -0
  221. package/dist/backend/services/personal-organization-service.js +207 -0
  222. package/dist/backend/services/personal-organization-service.js.map +1 -0
  223. package/dist/backend/services/registration-service.d.ts +80 -0
  224. package/dist/backend/services/registration-service.d.ts.map +1 -0
  225. package/dist/backend/services/registration-service.js +126 -0
  226. package/dist/backend/services/registration-service.js.map +1 -0
  227. package/dist/backend/services/sales-rep-assignment-service.d.ts +89 -0
  228. package/dist/backend/services/sales-rep-assignment-service.d.ts.map +1 -0
  229. package/dist/backend/services/sales-rep-assignment-service.js +176 -0
  230. package/dist/backend/services/sales-rep-assignment-service.js.map +1 -0
  231. package/dist/backend/services/vat-validator-port.d.ts +20 -0
  232. package/dist/backend/services/vat-validator-port.d.ts.map +1 -0
  233. package/dist/backend/services/vat-validator-port.js +2 -0
  234. package/dist/backend/services/vat-validator-port.js.map +1 -0
  235. package/dist/manifest.d.ts +176 -0
  236. package/dist/manifest.d.ts.map +1 -0
  237. package/dist/manifest.js +503 -0
  238. package/dist/manifest.js.map +1 -0
  239. package/dist/migrations/20260424T205317_organizations_init.d.ts +13 -0
  240. package/dist/migrations/20260424T205317_organizations_init.d.ts.map +1 -0
  241. package/dist/migrations/20260424T205317_organizations_init.js +100 -0
  242. package/dist/migrations/20260424T205317_organizations_init.js.map +1 -0
  243. package/dist/migrations/20260425T051700_organizations_invitations_init.d.ts +13 -0
  244. package/dist/migrations/20260425T051700_organizations_invitations_init.d.ts.map +1 -0
  245. package/dist/migrations/20260425T051700_organizations_invitations_init.js +39 -0
  246. package/dist/migrations/20260425T051700_organizations_invitations_init.js.map +1 -0
  247. package/dist/migrations/20260611T140349_organizations_consolidation.d.ts +35 -0
  248. package/dist/migrations/20260611T140349_organizations_consolidation.d.ts.map +1 -0
  249. package/dist/migrations/20260611T140349_organizations_consolidation.js +180 -0
  250. package/dist/migrations/20260611T140349_organizations_consolidation.js.map +1 -0
  251. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.d.ts +10 -0
  252. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.d.ts.map +1 -0
  253. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.js +14 -0
  254. package/dist/migrations/20260611T140358_organizations_org_order_confirmation_emails.js.map +1 -0
  255. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.d.ts +14 -0
  256. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.d.ts.map +1 -0
  257. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.js +20 -0
  258. package/dist/migrations/20260611T140402_organizations_org_fulfilment_strategy.js.map +1 -0
  259. package/dist/migrations/20260717T151403_organizations_personal_organizations.d.ts +24 -0
  260. package/dist/migrations/20260717T151403_organizations_personal_organizations.d.ts.map +1 -0
  261. package/dist/migrations/20260717T151403_organizations_personal_organizations.js +63 -0
  262. package/dist/migrations/20260717T151403_organizations_personal_organizations.js.map +1 -0
  263. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.d.ts +12 -0
  264. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.d.ts.map +1 -0
  265. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.js +16 -0
  266. package/dist/migrations/20260718T200340_organizations_organization_custom_field_values.js.map +1 -0
  267. package/dist/migrations/20260720T044254_organizations_org_hierarchy.d.ts +23 -0
  268. package/dist/migrations/20260720T044254_organizations_org_hierarchy.d.ts.map +1 -0
  269. package/dist/migrations/20260720T044254_organizations_org_hierarchy.js +37 -0
  270. package/dist/migrations/20260720T044254_organizations_org_hierarchy.js.map +1 -0
  271. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.d.ts +27 -0
  272. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.d.ts.map +1 -0
  273. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.js +44 -0
  274. package/dist/migrations/20260912T094646_organizations_sales_channel_organizations.js.map +1 -0
  275. package/dist/migrations/index.d.ts +35 -0
  276. package/dist/migrations/index.d.ts.map +1 -0
  277. package/dist/migrations/index.js +45 -0
  278. package/dist/migrations/index.js.map +1 -0
  279. package/dist/ports/index.d.ts +53 -0
  280. package/dist/ports/index.d.ts.map +1 -0
  281. package/dist/ports/index.js +2 -0
  282. package/dist/ports/index.js.map +1 -0
  283. package/docs/organization-hierarchy.md +117 -0
  284. package/docs/organizations.md +312 -0
  285. package/i18n/en.json +17 -0
  286. package/i18n/pl.json +17 -0
  287. package/package.json +107 -0
  288. package/tailwind.css +14 -0
@@ -0,0 +1,247 @@
1
+ import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Link, useParams } from 'react-router-dom';
4
+ import { ArrowLeft } from 'lucide-react';
5
+ import { ApiError, apiClient, useUnsavedChangesPrompt, formatDateTime } from '@endora-commerce/admin-kit/lib';
6
+ import { FulfilmentStrategyPanel } from '../panels/FulfilmentStrategyPanel.js';
7
+ import { OrganizationSalesRepsTab } from '../components/OrganizationSalesRepsTab.js';
8
+ import { ModerationActionsPanel } from '../panels/ModerationActionsPanel.js';
9
+ import { ApplicablePriceListsPanel } from '../panels/ApplicablePriceListsPanel.js';
10
+ import { HierarchyPanel } from '../panels/HierarchyPanel.js';
11
+ import { VatValidationPanel } from '../panels/VatValidationPanel.js';
12
+ import { RestrictionsPanel } from '../panels/RestrictionsPanel.js';
13
+ import { CustomFieldValuesPanel } from '@endora-commerce/admin-kit/components';
14
+ import { AdminZone } from '@endora-commerce/admin-kit/zones';
15
+ import { Alert, AlertDescription, Button, Card, CardContent, CardHeader, CardTitle, Input, Label, PageHeader, Select, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
16
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
17
+ const STATUSES = ['pending_verification', 'active', 'blocked', 'rejected'];
18
+ const VAT_STATUSES = ['vat_payer', 'vat_exempt', 'reverse_charge'];
19
+ const ROLES = ['organization_admin', 'regular_user'];
20
+ export function OrganizationDetail() {
21
+ const t = useTranslation('core');
22
+ const { id = '' } = useParams();
23
+ const [org, setOrg] = useState(null);
24
+ const [warehouses, setWarehouses] = useState([]);
25
+ const [loading, setLoading] = useState(true);
26
+ const [error, setError] = useState(null);
27
+ const [info, setInfo] = useState(null);
28
+ const [inviteEmail, setInviteEmail] = useState('');
29
+ const [inviteRole, setInviteRole] = useState('regular_user');
30
+ const [directEmail, setDirectEmail] = useState('');
31
+ const [directFirst, setDirectFirst] = useState('');
32
+ const [directLast, setDirectLast] = useState('');
33
+ const [directPassword, setDirectPassword] = useState('');
34
+ const [directRole, setDirectRole] = useState('regular_user');
35
+ const [editMember, setEditMember] = useState(null);
36
+ const [editFirst, setEditFirst] = useState('');
37
+ const [editLast, setEditLast] = useState('');
38
+ const [editEmail, setEditEmail] = useState('');
39
+ const refresh = useCallback(async () => {
40
+ setLoading(true);
41
+ setError(null);
42
+ try {
43
+ const res = await apiClient.get(`/api/v1/admin/organizations/${id}`);
44
+ setOrg(res.data);
45
+ }
46
+ catch (err) {
47
+ if (err instanceof ApiError && err.envelope.error.code === 'NOT_FOUND') {
48
+ setOrg(null);
49
+ }
50
+ else {
51
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.load'));
52
+ }
53
+ }
54
+ finally {
55
+ setLoading(false);
56
+ }
57
+ }, [id, t]);
58
+ useEffect(() => {
59
+ void refresh();
60
+ }, [refresh]);
61
+ // Active warehouses feed the org-level fulfilment-strategy picker's
62
+ // defined-order list. Best-effort; failure leaves the list empty.
63
+ useEffect(() => {
64
+ apiClient
65
+ .get('/api/v1/admin/warehouses?activeOnly=true&pageSize=200')
66
+ .then((res) => setWarehouses(res.items))
67
+ .catch(() => setWarehouses([]));
68
+ }, []);
69
+ useEffect(() => {
70
+ if (editMember) {
71
+ setEditFirst(editMember.firstName);
72
+ setEditLast(editMember.lastName);
73
+ setEditEmail(editMember.email);
74
+ }
75
+ }, [editMember]);
76
+ // The member-edit overlay is the only deferred-save form on this page (the
77
+ // rest of the org fields persist immediately on change). Warn before leaving
78
+ // if it holds edits that haven't been saved yet.
79
+ const memberEditDirty = editMember !== null &&
80
+ (editFirst !== editMember.firstName ||
81
+ editLast !== editMember.lastName ||
82
+ editEmail !== editMember.email);
83
+ // The invite and direct-add forms also hold unsaved data-entry.
84
+ const inviteDirty = inviteEmail !== '';
85
+ const directAddDirty = directEmail !== '' || directFirst !== '' || directLast !== '' || directPassword !== '';
86
+ useUnsavedChangesPrompt(memberEditDirty || inviteDirty || directAddDirty);
87
+ const handlePatch = useCallback(async (patch) => {
88
+ if (!org?.updatedAt)
89
+ return;
90
+ try {
91
+ await apiClient.patch(`/api/v1/admin/organizations/${id}`, {
92
+ ...patch,
93
+ expectedUpdatedAt: patch.expectedUpdatedAt ?? org.updatedAt,
94
+ });
95
+ setInfo(t('organizations.detail.info.saved'));
96
+ await refresh();
97
+ }
98
+ catch (err) {
99
+ if (err instanceof ApiError && err.envelope.error.code === 'VERSION_CONFLICT') {
100
+ setError(t('organizations.detail.error.versionConflictOrg'));
101
+ await refresh();
102
+ setError(null);
103
+ }
104
+ else {
105
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.save'));
106
+ }
107
+ }
108
+ }, [id, org, refresh, t]);
109
+ const inviteMember = useCallback(async () => {
110
+ if (!inviteEmail.trim())
111
+ return;
112
+ setError(null);
113
+ try {
114
+ await apiClient.post(`/api/v1/admin/organizations/${id}/members/invite`, {
115
+ email: inviteEmail.trim(),
116
+ role: inviteRole,
117
+ });
118
+ setInfo(t('organizations.detail.info.invited'));
119
+ setInviteEmail('');
120
+ await refresh();
121
+ }
122
+ catch (err) {
123
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.invite'));
124
+ }
125
+ }, [id, inviteEmail, inviteRole, refresh, t]);
126
+ const directAdd = useCallback(async () => {
127
+ setError(null);
128
+ try {
129
+ await apiClient.post(`/api/v1/admin/organizations/${id}/members`, {
130
+ email: directEmail.trim(),
131
+ firstName: directFirst.trim(),
132
+ lastName: directLast.trim(),
133
+ password: directPassword,
134
+ role: directRole,
135
+ });
136
+ setInfo(t('organizations.detail.info.memberCreated'));
137
+ setDirectEmail('');
138
+ setDirectFirst('');
139
+ setDirectLast('');
140
+ setDirectPassword('');
141
+ await refresh();
142
+ }
143
+ catch (err) {
144
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.create'));
145
+ }
146
+ }, [id, directEmail, directFirst, directLast, directPassword, directRole, refresh, t]);
147
+ const changeMemberRole = useCallback(async (memberId, role, expectedUpdatedAt) => {
148
+ setError(null);
149
+ try {
150
+ await apiClient.patch(`/api/v1/admin/organizations/${id}/members/${memberId}/role`, {
151
+ role,
152
+ ...(expectedUpdatedAt ? { expectedUpdatedAt } : {}),
153
+ });
154
+ setInfo(t('organizations.detail.info.memberUpdated'));
155
+ await refresh();
156
+ }
157
+ catch (err) {
158
+ if (err instanceof ApiError && err.envelope.error.code === 'VERSION_CONFLICT') {
159
+ setError(t('organizations.detail.error.versionConflictMember'));
160
+ await refresh();
161
+ setError(null);
162
+ }
163
+ else {
164
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.roleUpdate'));
165
+ }
166
+ }
167
+ }, [id, refresh, t]);
168
+ const saveMemberProfile = useCallback(async () => {
169
+ if (!editMember?.updatedAt)
170
+ return;
171
+ setError(null);
172
+ try {
173
+ await apiClient.patch(`/api/v1/admin/organizations/${id}/members/${editMember.id}`, {
174
+ firstName: editFirst.trim(),
175
+ lastName: editLast.trim(),
176
+ email: editEmail.trim(),
177
+ expectedUpdatedAt: editMember.updatedAt,
178
+ });
179
+ setInfo(t('organizations.detail.info.profileSaved'));
180
+ setEditMember(null);
181
+ await refresh();
182
+ }
183
+ catch (err) {
184
+ if (err instanceof ApiError && err.envelope.error.code === 'VERSION_CONFLICT') {
185
+ setError(t('organizations.detail.error.versionConflictMember'));
186
+ await refresh();
187
+ setError(null);
188
+ }
189
+ else {
190
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.save'));
191
+ }
192
+ }
193
+ }, [editMember, editFirst, editLast, editEmail, id, refresh, t]);
194
+ const removeMember = useCallback(async (memberId) => {
195
+ setError(null);
196
+ try {
197
+ await apiClient.delete(`/api/v1/admin/organizations/${id}/members/${memberId}`);
198
+ setInfo(t('organizations.detail.info.memberRemoved'));
199
+ await refresh();
200
+ }
201
+ catch (err) {
202
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.detail.error.remove'));
203
+ }
204
+ }, [id, refresh, t]);
205
+ if (loading)
206
+ return _jsx("p", { className: "text-sm text-muted-foreground", children: t('organizations.loading') });
207
+ if (!org)
208
+ return (_jsx(Alert, { variant: "warning", children: _jsx(AlertDescription, { children: t('organizations.detail.notFound') }) }));
209
+ const adminCount = org.members.filter((m) => m.role === 'organization_admin').length;
210
+ return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: org.name, description: _jsxs("span", { children: [t('organizations.detail.taxIdLabel'), " ", _jsx("code", { className: "font-mono text-xs", children: org.taxId }), org.updatedAt ? (_jsxs(_Fragment, { children: [' ', "\u00B7 ", t('organizations.detail.updatedLabel'), ' ', _jsx("time", { dateTime: org.updatedAt, children: formatDateTime(org.updatedAt) })] })) : null] }), actions: _jsx(Button, { asChild: true, variant: "outline", children: _jsxs(Link, { to: "/organizations", children: [_jsx(ArrowLeft, {}), t('organizations.detail.back')] }) }) }), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, info ? (_jsx(Alert, { variant: "success", className: "mb-4", children: _jsx(AlertDescription, { children: info }) })) : null, _jsx("div", { className: "mb-4", children: _jsx(ModerationActionsPanel, { organizationId: org.id, status: org.status, version: org.version ?? 0, blockedReason: org.blockedReason ?? null, rejectedReason: org.rejectedReason ?? null, approvedAt: org.approvedAt ?? null, onChanged: refresh }) }), _jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.detail.statusCard') }) }), _jsxs(CardContent, { className: "grid gap-4 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "ostatus", children: t('organizations.detail.accountStatus') }), _jsx(Select, { id: "ostatus", value: org.status, onChange: (e) => void handlePatch({
211
+ status: e.target.value,
212
+ ...(org.updatedAt !== undefined ? { expectedUpdatedAt: org.updatedAt } : {}),
213
+ }), children: STATUSES.map((s) => (_jsx("option", { value: s, children: s }, s))) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "vstatus", children: t('organizations.detail.vatStatus') }), _jsx(Select, { id: "vstatus", value: org.vatStatus, onChange: (e) => void handlePatch({
214
+ vatStatus: e.target.value,
215
+ ...(org.updatedAt !== undefined ? { expectedUpdatedAt: org.updatedAt } : {}),
216
+ }), children: VAT_STATUSES.map((v) => (_jsx("option", { value: v, children: v }, v))) })] }), _jsxs("div", { className: "space-y-2 md:col-span-2", children: [_jsx(Label, { htmlFor: "orderConfEmails", children: t('organizations.detail.orderConfirmationEmails') }), _jsx("textarea", { id: "orderConfEmails", "aria-label": "order-confirmation-emails", className: "min-h-20 w-full rounded-md border p-2 text-sm", defaultValue: (org.orderConfirmationEmails ?? []).join('\n'), placeholder: 'ops@example.com\nsales@example.com', onBlur: (e) => {
217
+ const emails = e.target.value
218
+ .split(/[\n,]/)
219
+ .map((s) => s.trim())
220
+ .filter(Boolean);
221
+ const current = org.orderConfirmationEmails ?? [];
222
+ if (emails.join('|') !== current.join('|')) {
223
+ void handlePatch({
224
+ orderConfirmationEmails: emails,
225
+ ...(org.updatedAt !== undefined ? { expectedUpdatedAt: org.updatedAt } : {}),
226
+ });
227
+ }
228
+ } }), _jsx("p", { className: "text-xs text-muted-foreground", children: t('organizations.detail.orderConfirmationEmailsHint') })] })] })] }), _jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.detail.registeredAddress') }) }), _jsx(CardContent, { children: _jsxs("p", { className: "text-sm", children: [org.registeredAddress.street, _jsx("br", {}), org.registeredAddress.postalCode, " ", org.registeredAddress.city, _jsx("br", {}), org.registeredAddress.country] }) })] }), _jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.detail.inviteCard') }) }), _jsxs(CardContent, { className: "flex flex-wrap items-end gap-3", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "invite-email", children: t('organizations.detail.email') }), _jsx(Input, { id: "invite-email", type: "email", value: inviteEmail, onChange: (e) => setInviteEmail(e.target.value), placeholder: t('organizations.detail.emailPlaceholder'), className: "w-64" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "invite-role", children: t('organizations.detail.role') }), _jsx(Select, { id: "invite-role", value: inviteRole, onChange: (e) => setInviteRole(e.target.value), children: ROLES.map((r) => (_jsx("option", { value: r, children: r }, r))) })] }), _jsx(Button, { type: "button", onClick: () => void inviteMember(), children: t('organizations.detail.sendInvite') })] })] }), _jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.detail.directAddCard') }) }), _jsxs(CardContent, { className: "grid gap-3 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "d-email", children: t('organizations.detail.email') }), _jsx(Input, { id: "d-email", type: "email", value: directEmail, onChange: (e) => setDirectEmail(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "d-pw", children: t('organizations.detail.tempPassword') }), _jsx(Input, { id: "d-pw", type: "password", value: directPassword, onChange: (e) => setDirectPassword(e.target.value), autoComplete: "new-password" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "d-fn", children: t('organizations.detail.firstName') }), _jsx(Input, { id: "d-fn", value: directFirst, onChange: (e) => setDirectFirst(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "d-ln", children: t('organizations.detail.lastName') }), _jsx(Input, { id: "d-ln", value: directLast, onChange: (e) => setDirectLast(e.target.value) })] }), _jsxs("div", { className: "space-y-2 md:col-span-2", children: [_jsx(Label, { htmlFor: "d-role", children: t('organizations.detail.role') }), _jsx(Select, { id: "d-role", value: directRole, onChange: (e) => setDirectRole(e.target.value), children: ROLES.map((r) => (_jsx("option", { value: r, children: r }, r))) })] }), _jsx("div", { className: "md:col-span-2", children: _jsx(Button, { type: "button", onClick: () => void directAdd(), children: t('organizations.detail.createMember') }) })] })] }), _jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.detail.membersCard') }) }), _jsxs(CardContent, { children: [editMember ? (_jsxs("div", { className: "mb-6 rounded-lg border border-border p-4", children: [_jsx("h3", { className: "mb-3 text-sm font-medium", children: t('organizations.detail.editMember') }), _jsxs("div", { className: "grid gap-3 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "edit-email", children: t('organizations.detail.email') }), _jsx(Input, { id: "edit-email", type: "email", value: editEmail, onChange: (e) => setEditEmail(e.target.value), autoComplete: "off" })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "edit-fn", children: t('organizations.detail.firstName') }), _jsx(Input, { id: "edit-fn", value: editFirst, onChange: (e) => setEditFirst(e.target.value) })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "edit-ln", children: t('organizations.detail.lastName') }), _jsx(Input, { id: "edit-ln", value: editLast, onChange: (e) => setEditLast(e.target.value) })] })] }), _jsxs("div", { className: "mt-4 flex flex-wrap gap-2", children: [_jsx(Button, { type: "button", onClick: () => void saveMemberProfile(), children: t('organizations.detail.save') }), _jsx(Button, { type: "button", variant: "outline", onClick: () => setEditMember(null), children: t('organizations.detail.cancel') })] }), _jsx("p", { className: "mt-2 text-xs text-muted-foreground", children: t('organizations.detail.changeEmailHint') })] })) : null, _jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t('organizations.detail.email') }), _jsx(TableHead, { children: t('organizations.detail.nameCol') }), _jsx(TableHead, { children: t('organizations.detail.role') }), _jsx(TableHead, { children: t('organizations.detail.verified') }), _jsx(TableHead, { children: t('organizations.detail.lastLogin') }), _jsx(TableHead, { children: t('organizations.detail.twoFactor') }), _jsx(TableHead, { className: "text-right", children: t('organizations.detail.actions') })] }) }), _jsx(TableBody, { children: org.members.map((m) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-medium", children: m.email }), _jsxs(TableCell, { children: [m.firstName, " ", m.lastName] }), _jsx(TableCell, { children: _jsx(Select, { "aria-label": t('organizations.detail.roleForLabel', { email: m.email }), value: m.role, onChange: (e) => void changeMemberRole(m.id, e.target.value, m.updatedAt ?? undefined), className: "max-w-[14rem]", children: ROLES.map((r) => (_jsx("option", { value: r, children: r }, r))) }) }), _jsx(TableCell, { children: m.emailVerifiedAt ? formatDateTime(m.emailVerifiedAt) : '—' }), _jsx(TableCell, { children: m.lastLoginAt ? formatDateTime(m.lastLoginAt) : '—' }), _jsx(TableCell, { children: m.twoFactorEnabled ? t('organizations.detail.twoFactorOn') : '—' }), _jsxs(TableCell, { className: "text-right space-x-2", children: [_jsx(Button, { type: "button", variant: "secondary", size: "sm", onClick: () => setEditMember(m), children: t('organizations.detail.edit') }), _jsx(Button, { type: "button", variant: "outline", size: "sm", disabled: m.role === 'organization_admin' && adminCount <= 1, onClick: () => void removeMember(m.id), children: t('organizations.detail.remove') })] })] }, m.id))) })] })] })] }), _jsx(AdminZone, { name: "organization.detail.after", props: { organizationId: org.id } }), _jsx(HierarchyPanel, { organizationId: org.id, parentId: org.parentId ?? null, onChanged: refresh }), _jsx("div", { className: "mt-4", children: _jsx(RestrictionsPanel, { organizationId: org.id, version: org.version ?? 0, onChanged: refresh }) }), _jsx("div", { className: "mt-4", children: _jsx(VatValidationPanel, { organizationId: org.id, summary: {
229
+ outcome: org.vatValidation?.outcome ?? null,
230
+ provider: org.vatValidation?.provider ?? null,
231
+ validatedAt: org.vatValidation?.validatedAt ?? null,
232
+ }, onChanged: refresh }) }), _jsx("div", { className: "mt-4", children: _jsx(FulfilmentStrategyPanel, { initial: {
233
+ strategy: org.fulfilmentStrategy ?? null,
234
+ warehouseOrder: org.fulfilmentStrategyWarehouseOrder ?? [],
235
+ }, warehouses: warehouses.map((w) => ({ id: w.id, code: w.code, name: w.name })), onSave: (value) => handlePatch({
236
+ fulfilmentStrategy: value.strategy,
237
+ fulfilmentStrategyWarehouseOrder: value.strategy === 'defined_order' ? value.warehouseOrder : null,
238
+ ...(org.updatedAt !== undefined ? { expectedUpdatedAt: org.updatedAt } : {}),
239
+ }) }, org.updatedAt ?? org.id) }), _jsx("div", { className: "mt-4", children: _jsx(ApplicablePriceListsPanel, { organizationId: org.id }) }), _jsx("div", { className: "mt-4", children: _jsx(CustomFieldValuesPanel, { entityType: "organization", values: org.customFieldValues ?? {}, save: (values) => handlePatch({ customFieldValues: values }) }) }), id ? _jsx(OrganizationSalesRepsTab, { organizationId: id }) : null] }));
240
+ }
241
+ /**
242
+ * The registry loads a route component through a dynamic-import factory and
243
+ * reads its default export (feature 091, FR-013). The named export stays: it is
244
+ * the spelling this module's own code and its tests use.
245
+ */
246
+ export default OrganizationDetail;
247
+ //# sourceMappingURL=OrganizationDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationDetail.js","sourceRoot":"","sources":["../../../src/admin/pages/OrganizationDetail.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import { type ReactNode } from 'react';
2
+ export declare function OrganizationsList(): ReactNode;
3
+ /**
4
+ * The registry loads a route component through a dynamic-import factory and
5
+ * reads its default export (feature 091, FR-013). The named export stays: it is
6
+ * the spelling this module's own code and its tests use.
7
+ */
8
+ export default OrganizationsList;
9
+ //# sourceMappingURL=OrganizationsList.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationsList.d.ts","sourceRoot":"","sources":["../../../src/admin/pages/OrganizationsList.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBzE,wBAAgB,iBAAiB,IAAI,SAAS,CAuH7C;AAED;;;;GAIG;AACH,eAAe,iBAAiB,CAAC"}
@@ -0,0 +1,73 @@
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { Link } from 'react-router-dom';
4
+ import { ArrowRight } from 'lucide-react';
5
+ import { ApiError, apiClient, formatDateTime } from '@endora-commerce/admin-kit/lib';
6
+ import { Alert, AlertDescription, Button, Card, CardContent, Input, Label, PageHeader, Select } from '@endora-commerce/admin-kit/ui';
7
+ import { OrganizationStatusBadge, ResponsiveTable } from '@endora-commerce/admin-kit/components';
8
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
9
+ const STATUSES = ['pending_verification', 'active', 'blocked', 'rejected'];
10
+ export function OrganizationsList() {
11
+ const t = useTranslation('core');
12
+ const [rows, setRows] = useState([]);
13
+ const [loading, setLoading] = useState(true);
14
+ const [error, setError] = useState(null);
15
+ const [status, setStatus] = useState('');
16
+ const [q, setQ] = useState('');
17
+ const refresh = useCallback(async () => {
18
+ setLoading(true);
19
+ setError(null);
20
+ try {
21
+ const params = new URLSearchParams();
22
+ if (status)
23
+ params.set('filter[status]', status);
24
+ if (q)
25
+ params.set('q', q);
26
+ const path = '/api/v1/admin/organizations' + (params.toString() ? `?${params.toString()}` : '');
27
+ const res = await apiClient.get(path);
28
+ setRows(res.data);
29
+ }
30
+ catch (err) {
31
+ setError(err instanceof ApiError ? err.envelope.error.message : t('organizations.error.load'));
32
+ }
33
+ finally {
34
+ setLoading(false);
35
+ }
36
+ }, [status, q, t]);
37
+ useEffect(() => {
38
+ void refresh();
39
+ }, [refresh]);
40
+ return (_jsxs(_Fragment, { children: [_jsx(PageHeader, { title: t('organizations.page.title'), description: t('organizations.page.description') }), error ? (_jsx(Alert, { variant: "destructive", className: "mb-4", children: _jsx(AlertDescription, { children: error }) })) : null, _jsx(Card, { className: "mb-4", children: _jsxs(CardContent, { className: "grid gap-4 pt-6 md:grid-cols-2", children: [_jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "ostatus", children: t('organizations.field.status') }), _jsxs(Select, { id: "ostatus", value: status, onChange: (e) => setStatus(e.target.value), children: [_jsx("option", { value: "", children: t('organizations.filter.all') }), STATUSES.map((s) => (_jsx("option", { value: s, children: s }, s)))] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx(Label, { htmlFor: "oq", children: t('organizations.field.search') }), _jsx(Input, { id: "oq", value: q, onChange: (e) => setQ(e.target.value) })] })] }) }), _jsx(Card, { children: _jsx(CardContent, { className: "pt-6", children: loading ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('organizations.loading') })) : rows.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('organizations.empty') })) : (_jsx(ResponsiveTable, { data: rows, keyExtractor: (o) => o.id, columns: [
41
+ {
42
+ id: 'name',
43
+ header: t('organizations.column.name'),
44
+ primary: true,
45
+ render: (o) => _jsx("span", { className: "font-medium", children: o.name }),
46
+ meta: (o) => (_jsx("span", { className: "font-mono text-xs text-muted-foreground", children: o.taxId })),
47
+ },
48
+ {
49
+ id: 'status',
50
+ header: t('organizations.column.status'),
51
+ render: (o) => _jsx(OrganizationStatusBadge, { status: o.status }),
52
+ },
53
+ {
54
+ id: 'vat',
55
+ header: t('organizations.column.vat'),
56
+ hideOnMobile: true,
57
+ render: (o) => o.vatStatus,
58
+ },
59
+ {
60
+ id: 'registered',
61
+ header: t('organizations.column.registered'),
62
+ hideOnMobile: true,
63
+ render: (o) => formatDateTime(o.createdAt),
64
+ },
65
+ ], renderActions: (o) => (_jsx(Button, { asChild: true, variant: "outline", size: "sm", className: "min-h-11", children: _jsxs(Link, { to: `/organizations/${o.id}`, children: [t('organizations.action.open'), _jsx(ArrowRight, {})] }) })) })) }) })] }));
66
+ }
67
+ /**
68
+ * The registry loads a route component through a dynamic-import factory and
69
+ * reads its default export (feature 091, FR-013). The named export stays: it is
70
+ * the spelling this module's own code and its tests use.
71
+ */
72
+ export default OrganizationsList;
73
+ //# sourceMappingURL=OrganizationsList.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationsList.js","sourceRoot":"","sources":["../../../src/admin/pages/OrganizationsList.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface ApplicablePriceListsPanelProps {
3
+ organizationId: string;
4
+ }
5
+ /**
6
+ * Read-only panel on the OrganizationDetail page listing every Price
7
+ * List that currently applies to the Organization, each tagged with the
8
+ * reasons it applies (direct match / customer-group / channel inheritance
9
+ * / segment-rule). Surface for feature 026 US5 FR-017.
10
+ */
11
+ export declare function ApplicablePriceListsPanel(props: ApplicablePriceListsPanelProps): ReactNode;
12
+ //# sourceMappingURL=ApplicablePriceListsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicablePriceListsPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/panels/ApplicablePriceListsPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAkBzE,MAAM,WAAW,8BAA8B;IAC7C,cAAc,EAAE,MAAM,CAAC;CACxB;AAED;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,8BAA8B,GAAG,SAAS,CA8E1F"}
@@ -0,0 +1,49 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useEffect, useState } from 'react';
3
+ import { ApiError, apiClient } from '@endora-commerce/admin-kit/lib';
4
+ import { Alert, AlertDescription, Card, CardContent, CardHeader, CardTitle, Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from '@endora-commerce/admin-kit/ui';
5
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
6
+ /**
7
+ * Read-only panel on the OrganizationDetail page listing every Price
8
+ * List that currently applies to the Organization, each tagged with the
9
+ * reasons it applies (direct match / customer-group / channel inheritance
10
+ * / segment-rule). Surface for feature 026 US5 FR-017.
11
+ */
12
+ export function ApplicablePriceListsPanel(props) {
13
+ const t = useTranslation('core');
14
+ const [items, setItems] = useState([]);
15
+ const [loading, setLoading] = useState(true);
16
+ const [error, setError] = useState(null);
17
+ const refresh = useCallback(async () => {
18
+ setLoading(true);
19
+ setError(null);
20
+ try {
21
+ const res = await apiClient.get(`/api/v1/admin/organizations/${props.organizationId}/applicable-price-lists`);
22
+ setItems(res.items);
23
+ }
24
+ catch (err) {
25
+ setError(err instanceof ApiError
26
+ ? err.envelope.error.message
27
+ : t('organizations.applicablePriceLists.error.load'));
28
+ setItems([]);
29
+ }
30
+ finally {
31
+ setLoading(false);
32
+ }
33
+ }, [props.organizationId, t]);
34
+ useEffect(() => {
35
+ void refresh();
36
+ }, [refresh]);
37
+ return (_jsxs(Card, { children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('organizations.applicablePriceLists.title') }) }), _jsxs(CardContent, { children: [error ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })) : null, loading && !error ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('common.state.loading') })) : null, !loading && !error && items.length === 0 ? (_jsx("p", { className: "text-sm text-muted-foreground", children: t('organizations.applicablePriceLists.empty') })) : null, !loading && !error && items.length > 0 ? (_jsxs(Table, { children: [_jsx(TableHeader, { children: _jsxs(TableRow, { children: [_jsx(TableHead, { children: t('organizations.applicablePriceLists.column.name') }), _jsx(TableHead, { children: t('organizations.applicablePriceLists.column.priority') }), _jsx(TableHead, { children: t('organizations.applicablePriceLists.column.reasons') })] }) }), _jsx(TableBody, { children: items.map((it) => (_jsxs(TableRow, { children: [_jsx(TableCell, { className: "font-medium", children: it.name }), _jsx(TableCell, { children: it.priority }), _jsx(TableCell, { children: _jsx("div", { className: "flex flex-wrap gap-1", children: it.reasons.map((r) => (_jsx(ReasonChip, { reason: r }, r))) }) })] }, it.priceListId))) })] })) : null] })] }));
38
+ }
39
+ function ReasonChip({ reason }) {
40
+ const t = useTranslation('core');
41
+ const palette = {
42
+ direct_organization_match: 'bg-emerald-100 text-emerald-900 border-emerald-300',
43
+ customer_group_match: 'bg-sky-100 text-sky-900 border-sky-300',
44
+ sales_channel_inheritance: 'bg-violet-100 text-violet-900 border-violet-300',
45
+ segment_rule_match: 'bg-slate-100 text-slate-900 border-slate-300',
46
+ };
47
+ return (_jsx("span", { className: `inline-flex items-center rounded-full border px-2 py-0.5 text-xs font-medium ${palette[reason]}`, children: t(`organizations.applicablePriceLists.reason.${reason}`) }));
48
+ }
49
+ //# sourceMappingURL=ApplicablePriceListsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApplicablePriceListsPanel.js","sourceRoot":"","sources":["../../../src/admin/panels/ApplicablePriceListsPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AACzE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACjL,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AAmBjE;;;;;GAKG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAqC;IAC7E,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmB,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,IAAmB,EAAE;QACpD,UAAU,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,GAAG,CAC7B,+BAA+B,KAAK,CAAC,cAAc,yBAAyB,CAC7E,CAAC;YACF,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,QAAQ,CACN,GAAG,YAAY,QAAQ;gBACrB,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO;gBAC5B,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CACvD,CAAC;YACF,QAAQ,CAAC,EAAE,CAAC,CAAC;QACf,CAAC;gBAAS,CAAC;YACT,UAAU,CAAC,KAAK,CAAC,CAAC;QACpB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC;IAE9B,SAAS,CAAC,GAAS,EAAE;QACnB,KAAK,OAAO,EAAE,CAAC;IACjB,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;IAEd,OAAO,CACL,MAAC,IAAI,eACH,KAAC,UAAU,cACT,KAAC,SAAS,cAAE,CAAC,CAAC,0CAA0C,CAAC,GAAa,GAC3D,EACb,MAAC,WAAW,eACT,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,KAAK,IAAC,OAAO,EAAC,aAAa,YAC1B,KAAC,gBAAgB,cAAE,KAAK,GAAoB,GACtC,CACT,CAAC,CAAC,CAAC,IAAI,EACP,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACnB,YAAG,SAAS,EAAC,+BAA+B,YAAE,CAAC,CAAC,sBAAsB,CAAC,GAAK,CAC7E,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAC1C,YAAG,SAAS,EAAC,+BAA+B,YACzC,CAAC,CAAC,0CAA0C,CAAC,GAC5C,CACL,CAAC,CAAC,CAAC,IAAI,EACP,CAAC,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACxC,MAAC,KAAK,eACJ,KAAC,WAAW,cACV,MAAC,QAAQ,eACP,KAAC,SAAS,cAAE,CAAC,CAAC,gDAAgD,CAAC,GAAa,EAC5E,KAAC,SAAS,cAAE,CAAC,CAAC,oDAAoD,CAAC,GAAa,EAChF,KAAC,SAAS,cAAE,CAAC,CAAC,mDAAmD,CAAC,GAAa,IACtE,GACC,EACd,KAAC,SAAS,cACP,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CACjB,MAAC,QAAQ,eACP,KAAC,SAAS,IAAC,SAAS,EAAC,aAAa,YAAE,EAAE,CAAC,IAAI,GAAa,EACxD,KAAC,SAAS,cAAE,EAAE,CAAC,QAAQ,GAAa,EACpC,KAAC,SAAS,cACR,cAAK,SAAS,EAAC,sBAAsB,YAClC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,KAAC,UAAU,IAAS,MAAM,EAAE,CAAC,IAAZ,CAAC,CAAe,CAClC,CAAC,GACE,GACI,KATC,EAAE,CAAC,WAAW,CAUlB,CACZ,CAAC,GACQ,IACN,CACT,CAAC,CAAC,CAAC,IAAI,IACI,IACT,CACR,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,MAAM,EAAsB;IAChD,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,OAAO,GAA2B;QACtC,yBAAyB,EAAE,oDAAoD;QAC/E,oBAAoB,EAAE,wCAAwC;QAC9D,yBAAyB,EAAE,iDAAiD;QAC5E,kBAAkB,EAAE,8CAA8C;KACnE,CAAC;IACF,OAAO,CACL,eACE,SAAS,EAAE,gFAAgF,OAAO,CAAC,MAAM,CAAC,EAAE,YAE3G,CAAC,CAAC,6CAA6C,MAAM,EAAE,CAAC,GACpD,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type ReactNode } from 'react';
2
+ import { type FulfilmentStrategyValue, type FulfilmentWarehouseOption } from '@endora-commerce/admin-kit/components';
3
+ /**
4
+ * Organization-level fulfilment-strategy override (precedence: Product →
5
+ * Organization → Sales Channel → platform default). Self-contained draft +
6
+ * Save; persistence is delegated to `onSave` so the parent owns the PATCH and
7
+ * its optimistic-lock token. Remount (via `key`) to reset the draft after a
8
+ * successful refresh.
9
+ */
10
+ export interface FulfilmentStrategyPanelProps {
11
+ initial: FulfilmentStrategyValue;
12
+ warehouses: FulfilmentWarehouseOption[];
13
+ onSave: (value: FulfilmentStrategyValue) => Promise<void>;
14
+ }
15
+ export declare function FulfilmentStrategyPanel({ initial, warehouses, onSave, }: FulfilmentStrategyPanelProps): ReactNode;
16
+ //# sourceMappingURL=FulfilmentStrategyPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FulfilmentStrategyPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/panels/FulfilmentStrategyPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAG9D,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC/B,MAAM,uCAAuC,CAAC;AAE/C;;;;;;GAMG;AACH,MAAM,WAAW,4BAA4B;IAC3C,OAAO,EAAE,uBAAuB,CAAC;IACjC,UAAU,EAAE,yBAAyB,EAAE,CAAC;IACxC,MAAM,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3D;AAED,wBAAgB,uBAAuB,CAAC,EACtC,OAAO,EACP,UAAU,EACV,MAAM,GACP,EAAE,4BAA4B,GAAG,SAAS,CA8C1C"}
@@ -0,0 +1,29 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useCallback, useState } from 'react';
3
+ import { Alert, AlertDescription, Button, Card, CardContent, CardHeader, CardTitle } from '@endora-commerce/admin-kit/ui';
4
+ import { useTranslation } from '@endora-commerce/admin-kit/i18n';
5
+ import { FulfilmentStrategyPicker, } from '@endora-commerce/admin-kit/components';
6
+ export function FulfilmentStrategyPanel({ initial, warehouses, onSave, }) {
7
+ const t = useTranslation('core');
8
+ const [value, setValue] = useState(initial);
9
+ const [busy, setBusy] = useState(false);
10
+ const [error, setError] = useState(null);
11
+ const handleSave = useCallback(async () => {
12
+ setBusy(true);
13
+ setError(null);
14
+ try {
15
+ await onSave({
16
+ strategy: value.strategy,
17
+ warehouseOrder: value.strategy === 'defined_order' ? value.warehouseOrder : [],
18
+ });
19
+ }
20
+ catch {
21
+ setError(t('fulfilment.saveError'));
22
+ }
23
+ finally {
24
+ setBusy(false);
25
+ }
26
+ }, [onSave, value, t]);
27
+ return (_jsxs(Card, { className: "mb-4", children: [_jsx(CardHeader, { children: _jsx(CardTitle, { children: t('fulfilment.orgTitle') }) }), _jsxs(CardContent, { className: "space-y-3", children: [_jsx(FulfilmentStrategyPicker, { value: value, onChange: setValue, warehouses: warehouses, allowInherit: true, disabled: busy, idPrefix: "org-fulfilment" }), error ? (_jsx(Alert, { variant: "destructive", children: _jsx(AlertDescription, { children: error }) })) : null, _jsx(Button, { size: "sm", disabled: busy, onClick: () => void handleSave(), children: busy ? t('fulfilment.saving') : t('fulfilment.save') })] })] }));
28
+ }
29
+ //# sourceMappingURL=FulfilmentStrategyPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FulfilmentStrategyPanel.js","sourceRoot":"","sources":["../../../src/admin/panels/FulfilmentStrategyPanel.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAkB,MAAM,OAAO,CAAC;AAC9D,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC1H,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EACL,wBAAwB,GAGzB,MAAM,uCAAuC,CAAC;AAe/C,MAAM,UAAU,uBAAuB,CAAC,EACtC,OAAO,EACP,UAAU,EACV,MAAM,GACuB;IAC7B,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAA0B,OAAO,CAAC,CAAC;IACrE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,IAAmB,EAAE;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,IAAI,CAAC;YACH,MAAM,MAAM,CAAC;gBACX,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,cAAc,EAAE,KAAK,CAAC,QAAQ,KAAK,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE;aAC/E,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,QAAQ,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;QACtC,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,KAAK,CAAC,CAAC;QACjB,CAAC;IACH,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IAEvB,OAAO,CACL,MAAC,IAAI,IAAC,SAAS,EAAC,MAAM,aACpB,KAAC,UAAU,cACT,KAAC,SAAS,cAAE,CAAC,CAAC,qBAAqB,CAAC,GAAa,GACtC,EACb,MAAC,WAAW,IAAC,SAAS,EAAC,WAAW,aAChC,KAAC,wBAAwB,IACvB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,UAAU,EAAE,UAAU,EACtB,YAAY,QACZ,QAAQ,EAAE,IAAI,EACd,QAAQ,EAAC,gBAAgB,GACzB,EACD,KAAK,CAAC,CAAC,CAAC,CACP,KAAC,KAAK,IAAC,OAAO,EAAC,aAAa,YAC1B,KAAC,gBAAgB,cAAE,KAAK,GAAoB,GACtC,CACT,CAAC,CAAC,CAAC,IAAI,EACR,KAAC,MAAM,IAAC,IAAI,EAAC,IAAI,EAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,GAAS,EAAE,CAAC,KAAK,UAAU,EAAE,YACrE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAC9C,IACG,IACT,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { type ReactNode } from 'react';
2
+ export interface HierarchyPanelProps {
3
+ organizationId: string;
4
+ /** Current parent id (null ⇒ root). */
5
+ parentId: string | null;
6
+ onChanged: () => void | Promise<void>;
7
+ }
8
+ /**
9
+ * Feature 056 US1 — organization hierarchy editor. Reuses the shared
10
+ * OrganizationPicker to assign / move / detach the parent (through the
11
+ * Command-Bus-backed `POST /:id/parent` endpoint), and renders the ancestor
12
+ * chain + the pre-order subtree.
13
+ */
14
+ export declare function HierarchyPanel(props: HierarchyPanelProps): ReactNode;
15
+ //# sourceMappingURL=HierarchyPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HierarchyPanel.d.ts","sourceRoot":"","sources":["../../../src/admin/panels/HierarchyPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAczE,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,mBAAmB,GAAG,SAAS,CAqIpE"}