@endora-commerce/admin-kit 0.0.0-stage → 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 (449) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +212 -2
  3. package/dist/components/FileDropzone.d.ts +13 -0
  4. package/dist/components/FileDropzone.d.ts.map +1 -0
  5. package/dist/components/FileDropzone.js +39 -0
  6. package/dist/components/FileDropzone.js.map +1 -0
  7. package/dist/components/PaginationFooter.d.ts +25 -0
  8. package/dist/components/PaginationFooter.d.ts.map +1 -0
  9. package/dist/components/PaginationFooter.js +33 -0
  10. package/dist/components/PaginationFooter.js.map +1 -0
  11. package/dist/components/ResponsiveTable.d.ts +26 -0
  12. package/dist/components/ResponsiveTable.d.ts.map +1 -0
  13. package/dist/components/ResponsiveTable.js +34 -0
  14. package/dist/components/ResponsiveTable.js.map +1 -0
  15. package/dist/components/RowActionMenu.d.ts +40 -0
  16. package/dist/components/RowActionMenu.d.ts.map +1 -0
  17. package/dist/components/RowActionMenu.js +15 -0
  18. package/dist/components/RowActionMenu.js.map +1 -0
  19. package/dist/components/StickyFormActions.d.ts +10 -0
  20. package/dist/components/StickyFormActions.d.ts.map +1 -0
  21. package/dist/components/StickyFormActions.js +10 -0
  22. package/dist/components/StickyFormActions.js.map +1 -0
  23. package/dist/components/TouchReorderButtons.d.ts +13 -0
  24. package/dist/components/TouchReorderButtons.d.ts.map +1 -0
  25. package/dist/components/TouchReorderButtons.js +12 -0
  26. package/dist/components/TouchReorderButtons.js.map +1 -0
  27. package/dist/components/admin-user-picker/AdminUserPicker.d.ts +14 -0
  28. package/dist/components/admin-user-picker/AdminUserPicker.d.ts.map +1 -0
  29. package/dist/components/admin-user-picker/AdminUserPicker.js +68 -0
  30. package/dist/components/admin-user-picker/AdminUserPicker.js.map +1 -0
  31. package/dist/components/asset-picker/AssetFieldPicker.d.ts +32 -0
  32. package/dist/components/asset-picker/AssetFieldPicker.d.ts.map +1 -0
  33. package/dist/components/asset-picker/AssetFieldPicker.js +42 -0
  34. package/dist/components/asset-picker/AssetFieldPicker.js.map +1 -0
  35. package/dist/components/asset-picker/AssetPicker.d.ts +31 -0
  36. package/dist/components/asset-picker/AssetPicker.d.ts.map +1 -0
  37. package/dist/components/asset-picker/AssetPicker.js +68 -0
  38. package/dist/components/asset-picker/AssetPicker.js.map +1 -0
  39. package/dist/components/asset-picker/AssetUploader.d.ts +15 -0
  40. package/dist/components/asset-picker/AssetUploader.d.ts.map +1 -0
  41. package/dist/components/asset-picker/AssetUploader.js +61 -0
  42. package/dist/components/asset-picker/AssetUploader.js.map +1 -0
  43. package/dist/components/asset-picker/assets-api.d.ts +49 -0
  44. package/dist/components/asset-picker/assets-api.d.ts.map +1 -0
  45. package/dist/components/asset-picker/assets-api.js +67 -0
  46. package/dist/components/asset-picker/assets-api.js.map +1 -0
  47. package/dist/components/category-picker/CategorySelect.d.ts +14 -0
  48. package/dist/components/category-picker/CategorySelect.d.ts.map +1 -0
  49. package/dist/components/category-picker/CategorySelect.js +41 -0
  50. package/dist/components/category-picker/CategorySelect.js.map +1 -0
  51. package/dist/components/category-tree-picker/CategoryTreeNodeRow.d.ts +18 -0
  52. package/dist/components/category-tree-picker/CategoryTreeNodeRow.d.ts.map +1 -0
  53. package/dist/components/category-tree-picker/CategoryTreeNodeRow.js +19 -0
  54. package/dist/components/category-tree-picker/CategoryTreeNodeRow.js.map +1 -0
  55. package/dist/components/category-tree-picker/CategoryTreePicker.d.ts +23 -0
  56. package/dist/components/category-tree-picker/CategoryTreePicker.d.ts.map +1 -0
  57. package/dist/components/category-tree-picker/CategoryTreePicker.js +82 -0
  58. package/dist/components/category-tree-picker/CategoryTreePicker.js.map +1 -0
  59. package/dist/components/category-tree-picker/category-tree-utils.d.ts +35 -0
  60. package/dist/components/category-tree-picker/category-tree-utils.d.ts.map +1 -0
  61. package/dist/components/category-tree-picker/category-tree-utils.js +140 -0
  62. package/dist/components/category-tree-picker/category-tree-utils.js.map +1 -0
  63. package/dist/components/category-tree-picker/index.d.ts +4 -0
  64. package/dist/components/category-tree-picker/index.d.ts.map +1 -0
  65. package/dist/components/category-tree-picker/index.js +2 -0
  66. package/dist/components/category-tree-picker/index.js.map +1 -0
  67. package/dist/components/charts/echart.d.ts +17 -0
  68. package/dist/components/charts/echart.d.ts.map +1 -0
  69. package/dist/components/charts/echart.js +61 -0
  70. package/dist/components/charts/echart.js.map +1 -0
  71. package/dist/components/cms-picker/CmsBlockPicker.d.ts +14 -0
  72. package/dist/components/cms-picker/CmsBlockPicker.d.ts.map +1 -0
  73. package/dist/components/cms-picker/CmsBlockPicker.js +40 -0
  74. package/dist/components/cms-picker/CmsBlockPicker.js.map +1 -0
  75. package/dist/components/cms-picker/CmsPagePicker.d.ts +15 -0
  76. package/dist/components/cms-picker/CmsPagePicker.d.ts.map +1 -0
  77. package/dist/components/cms-picker/CmsPagePicker.js +80 -0
  78. package/dist/components/cms-picker/CmsPagePicker.js.map +1 -0
  79. package/dist/components/content-language-tabs/ContentLanguageTabs.d.ts +30 -0
  80. package/dist/components/content-language-tabs/ContentLanguageTabs.d.ts.map +1 -0
  81. package/dist/components/content-language-tabs/ContentLanguageTabs.js +14 -0
  82. package/dist/components/content-language-tabs/ContentLanguageTabs.js.map +1 -0
  83. package/dist/components/country-select/CountrySelect.d.ts +29 -0
  84. package/dist/components/country-select/CountrySelect.d.ts.map +1 -0
  85. package/dist/components/country-select/CountrySelect.js +40 -0
  86. package/dist/components/country-select/CountrySelect.js.map +1 -0
  87. package/dist/components/country-select/index.d.ts +3 -0
  88. package/dist/components/country-select/index.d.ts.map +1 -0
  89. package/dist/components/country-select/index.js +3 -0
  90. package/dist/components/country-select/index.js.map +1 -0
  91. package/dist/components/country-select/useCountriesQuery.d.ts +12 -0
  92. package/dist/components/country-select/useCountriesQuery.d.ts.map +1 -0
  93. package/dist/components/country-select/useCountriesQuery.js +69 -0
  94. package/dist/components/country-select/useCountriesQuery.js.map +1 -0
  95. package/dist/components/custom-field-values/CustomFieldValuesPanel.d.ts +48 -0
  96. package/dist/components/custom-field-values/CustomFieldValuesPanel.d.ts.map +1 -0
  97. package/dist/components/custom-field-values/CustomFieldValuesPanel.js +122 -0
  98. package/dist/components/custom-field-values/CustomFieldValuesPanel.js.map +1 -0
  99. package/dist/components/customer-group-picker/CustomerGroupPicker.d.ts +14 -0
  100. package/dist/components/customer-group-picker/CustomerGroupPicker.d.ts.map +1 -0
  101. package/dist/components/customer-group-picker/CustomerGroupPicker.js +36 -0
  102. package/dist/components/customer-group-picker/CustomerGroupPicker.js.map +1 -0
  103. package/dist/components/customer-picker/CustomerPicker.d.ts +18 -0
  104. package/dist/components/customer-picker/CustomerPicker.d.ts.map +1 -0
  105. package/dist/components/customer-picker/CustomerPicker.js +85 -0
  106. package/dist/components/customer-picker/CustomerPicker.js.map +1 -0
  107. package/dist/components/dictionary-picker/CountryPicker.d.ts +26 -0
  108. package/dist/components/dictionary-picker/CountryPicker.d.ts.map +1 -0
  109. package/dist/components/dictionary-picker/CountryPicker.js +29 -0
  110. package/dist/components/dictionary-picker/CountryPicker.js.map +1 -0
  111. package/dist/components/dictionary-picker/CurrencyPicker.d.ts +17 -0
  112. package/dist/components/dictionary-picker/CurrencyPicker.d.ts.map +1 -0
  113. package/dist/components/dictionary-picker/CurrencyPicker.js +29 -0
  114. package/dist/components/dictionary-picker/CurrencyPicker.js.map +1 -0
  115. package/dist/components/dictionary-picker/dictionary-api.d.ts +21 -0
  116. package/dist/components/dictionary-picker/dictionary-api.d.ts.map +1 -0
  117. package/dist/components/dictionary-picker/dictionary-api.js +26 -0
  118. package/dist/components/dictionary-picker/dictionary-api.js.map +1 -0
  119. package/dist/components/dictionary-picker/index.d.ts +4 -0
  120. package/dist/components/dictionary-picker/index.d.ts.map +1 -0
  121. package/dist/components/dictionary-picker/index.js +4 -0
  122. package/dist/components/dictionary-picker/index.js.map +1 -0
  123. package/dist/components/fulfilment-strategy-picker/FulfilmentStrategyPicker.d.ts +49 -0
  124. package/dist/components/fulfilment-strategy-picker/FulfilmentStrategyPicker.d.ts.map +1 -0
  125. package/dist/components/fulfilment-strategy-picker/FulfilmentStrategyPicker.js +43 -0
  126. package/dist/components/fulfilment-strategy-picker/FulfilmentStrategyPicker.js.map +1 -0
  127. package/dist/components/hooks/useFocusTrap.d.ts +6 -0
  128. package/dist/components/hooks/useFocusTrap.d.ts.map +1 -0
  129. package/dist/components/hooks/useFocusTrap.js +41 -0
  130. package/dist/components/hooks/useFocusTrap.js.map +1 -0
  131. package/dist/components/hooks/useViewportTier.d.ts +7 -0
  132. package/dist/components/hooks/useViewportTier.d.ts.map +1 -0
  133. package/dist/components/hooks/useViewportTier.js +23 -0
  134. package/dist/components/hooks/useViewportTier.js.map +1 -0
  135. package/dist/components/index.d.ts +101 -0
  136. package/dist/components/index.d.ts.map +1 -0
  137. package/dist/components/index.js +63 -0
  138. package/dist/components/index.js.map +1 -0
  139. package/dist/components/organization-picker/OrganizationPicker.d.ts +28 -0
  140. package/dist/components/organization-picker/OrganizationPicker.d.ts.map +1 -0
  141. package/dist/components/organization-picker/OrganizationPicker.js +35 -0
  142. package/dist/components/organization-picker/OrganizationPicker.js.map +1 -0
  143. package/dist/components/organization-picker/OrganizationPickerMulti.d.ts +32 -0
  144. package/dist/components/organization-picker/OrganizationPickerMulti.d.ts.map +1 -0
  145. package/dist/components/organization-picker/OrganizationPickerMulti.js +55 -0
  146. package/dist/components/organization-picker/OrganizationPickerMulti.js.map +1 -0
  147. package/dist/components/organization-picker/OrganizationStatusBadge.d.ts +7 -0
  148. package/dist/components/organization-picker/OrganizationStatusBadge.d.ts.map +1 -0
  149. package/dist/components/organization-picker/OrganizationStatusBadge.js +33 -0
  150. package/dist/components/organization-picker/OrganizationStatusBadge.js.map +1 -0
  151. package/dist/components/organization-picker/useOrganizationsQuery.d.ts +33 -0
  152. package/dist/components/organization-picker/useOrganizationsQuery.d.ts.map +1 -0
  153. package/dist/components/organization-picker/useOrganizationsQuery.js +92 -0
  154. package/dist/components/organization-picker/useOrganizationsQuery.js.map +1 -0
  155. package/dist/components/payment-method-availability/MethodAvailabilityCell.d.ts +38 -0
  156. package/dist/components/payment-method-availability/MethodAvailabilityCell.d.ts.map +1 -0
  157. package/dist/components/payment-method-availability/MethodAvailabilityCell.js +50 -0
  158. package/dist/components/payment-method-availability/MethodAvailabilityCell.js.map +1 -0
  159. package/dist/components/product-picker/ProductPicker.d.ts +22 -0
  160. package/dist/components/product-picker/ProductPicker.d.ts.map +1 -0
  161. package/dist/components/product-picker/ProductPicker.js +143 -0
  162. package/dist/components/product-picker/ProductPicker.js.map +1 -0
  163. package/dist/components/reorder/ReorderAnnouncer.d.ts +29 -0
  164. package/dist/components/reorder/ReorderAnnouncer.d.ts.map +1 -0
  165. package/dist/components/reorder/ReorderAnnouncer.js +6 -0
  166. package/dist/components/reorder/ReorderAnnouncer.js.map +1 -0
  167. package/dist/components/reorder/useReorderList.d.ts +121 -0
  168. package/dist/components/reorder/useReorderList.d.ts.map +1 -0
  169. package/dist/components/reorder/useReorderList.js +241 -0
  170. package/dist/components/reorder/useReorderList.js.map +1 -0
  171. package/dist/components/rule-builder/RuleBuilder.d.ts +105 -0
  172. package/dist/components/rule-builder/RuleBuilder.d.ts.map +1 -0
  173. package/dist/components/rule-builder/RuleBuilder.js +138 -0
  174. package/dist/components/rule-builder/RuleBuilder.js.map +1 -0
  175. package/dist/components/sales-channel-picker/SalesChannelPicker.d.ts +15 -0
  176. package/dist/components/sales-channel-picker/SalesChannelPicker.d.ts.map +1 -0
  177. package/dist/components/sales-channel-picker/SalesChannelPicker.js +79 -0
  178. package/dist/components/sales-channel-picker/SalesChannelPicker.js.map +1 -0
  179. package/dist/components/scope-notice/ScopeNotice.d.ts +33 -0
  180. package/dist/components/scope-notice/ScopeNotice.d.ts.map +1 -0
  181. package/dist/components/scope-notice/ScopeNotice.js +11 -0
  182. package/dist/components/scope-notice/ScopeNotice.js.map +1 -0
  183. package/dist/components/scope-picker/ScopePicker.d.ts +28 -0
  184. package/dist/components/scope-picker/ScopePicker.d.ts.map +1 -0
  185. package/dist/components/scope-picker/ScopePicker.js +114 -0
  186. package/dist/components/scope-picker/ScopePicker.js.map +1 -0
  187. package/dist/components/scope-picker/sales-channels-api.d.ts +19 -0
  188. package/dist/components/scope-picker/sales-channels-api.d.ts.map +1 -0
  189. package/dist/components/scope-picker/sales-channels-api.js +30 -0
  190. package/dist/components/scope-picker/sales-channels-api.js.map +1 -0
  191. package/dist/components/status-transition-graph/StatusTransitionGraph.d.ts +26 -0
  192. package/dist/components/status-transition-graph/StatusTransitionGraph.d.ts.map +1 -0
  193. package/dist/components/status-transition-graph/StatusTransitionGraph.js +241 -0
  194. package/dist/components/status-transition-graph/StatusTransitionGraph.js.map +1 -0
  195. package/dist/components/status-transition-graph/index.d.ts +3 -0
  196. package/dist/components/status-transition-graph/index.d.ts.map +1 -0
  197. package/dist/components/status-transition-graph/index.js +2 -0
  198. package/dist/components/status-transition-graph/index.js.map +1 -0
  199. package/dist/contributions/index.d.ts +44 -0
  200. package/dist/contributions/index.d.ts.map +1 -0
  201. package/dist/contributions/index.js +42 -0
  202. package/dist/contributions/index.js.map +1 -0
  203. package/dist/contributions/zone-component.d.ts +70 -0
  204. package/dist/contributions/zone-component.d.ts.map +1 -0
  205. package/dist/contributions/zone-component.js +26 -0
  206. package/dist/contributions/zone-component.js.map +1 -0
  207. package/dist/field-protection/FieldProtectionPricePanel.d.ts +26 -0
  208. package/dist/field-protection/FieldProtectionPricePanel.d.ts.map +1 -0
  209. package/dist/field-protection/FieldProtectionPricePanel.js +14 -0
  210. package/dist/field-protection/FieldProtectionPricePanel.js.map +1 -0
  211. package/dist/field-protection/FieldProtectionSummary.d.ts +18 -0
  212. package/dist/field-protection/FieldProtectionSummary.d.ts.map +1 -0
  213. package/dist/field-protection/FieldProtectionSummary.js +18 -0
  214. package/dist/field-protection/FieldProtectionSummary.js.map +1 -0
  215. package/dist/field-protection/FieldProtectionToggle.d.ts +36 -0
  216. package/dist/field-protection/FieldProtectionToggle.d.ts.map +1 -0
  217. package/dist/field-protection/FieldProtectionToggle.js +30 -0
  218. package/dist/field-protection/FieldProtectionToggle.js.map +1 -0
  219. package/dist/field-protection/describe-path.d.ts +27 -0
  220. package/dist/field-protection/describe-path.d.ts.map +1 -0
  221. package/dist/field-protection/describe-path.js +28 -0
  222. package/dist/field-protection/describe-path.js.map +1 -0
  223. package/dist/field-protection/index.d.ts +46 -0
  224. package/dist/field-protection/index.d.ts.map +1 -0
  225. package/dist/field-protection/index.js +41 -0
  226. package/dist/field-protection/index.js.map +1 -0
  227. package/dist/field-protection/types.d.ts +93 -0
  228. package/dist/field-protection/types.d.ts.map +1 -0
  229. package/dist/field-protection/types.js +2 -0
  230. package/dist/field-protection/types.js.map +1 -0
  231. package/dist/field-protection/use-field-protection.d.ts +27 -0
  232. package/dist/field-protection/use-field-protection.d.ts.map +1 -0
  233. package/dist/field-protection/use-field-protection.js +149 -0
  234. package/dist/field-protection/use-field-protection.js.map +1 -0
  235. package/dist/i18n/TranslationProvider.d.ts +27 -0
  236. package/dist/i18n/TranslationProvider.d.ts.map +1 -0
  237. package/dist/i18n/TranslationProvider.js +130 -0
  238. package/dist/i18n/TranslationProvider.js.map +1 -0
  239. package/dist/i18n/app-language-context.d.ts +8 -0
  240. package/dist/i18n/app-language-context.d.ts.map +1 -0
  241. package/dist/i18n/app-language-context.js +13 -0
  242. package/dist/i18n/app-language-context.js.map +1 -0
  243. package/dist/i18n/index.d.ts +29 -0
  244. package/dist/i18n/index.d.ts.map +1 -0
  245. package/dist/i18n/index.js +25 -0
  246. package/dist/i18n/index.js.map +1 -0
  247. package/dist/i18n/interpolate.d.ts +2 -0
  248. package/dist/i18n/interpolate.d.ts.map +1 -0
  249. package/dist/i18n/interpolate.js +10 -0
  250. package/dist/i18n/interpolate.js.map +1 -0
  251. package/dist/i18n/language-storage.d.ts +16 -0
  252. package/dist/i18n/language-storage.d.ts.map +1 -0
  253. package/dist/i18n/language-storage.js +26 -0
  254. package/dist/i18n/language-storage.js.map +1 -0
  255. package/dist/i18n/resolver.d.ts +19 -0
  256. package/dist/i18n/resolver.d.ts.map +1 -0
  257. package/dist/i18n/resolver.js +23 -0
  258. package/dist/i18n/resolver.js.map +1 -0
  259. package/dist/i18n/types.d.ts +12 -0
  260. package/dist/i18n/types.d.ts.map +1 -0
  261. package/dist/i18n/types.js +7 -0
  262. package/dist/i18n/types.js.map +1 -0
  263. package/dist/i18n/useTranslation.d.ts +2 -0
  264. package/dist/i18n/useTranslation.d.ts.map +1 -0
  265. package/dist/i18n/useTranslation.js +16 -0
  266. package/dist/i18n/useTranslation.js.map +1 -0
  267. package/dist/lib/admin-actions/icon-map.d.ts +3 -0
  268. package/dist/lib/admin-actions/icon-map.d.ts.map +1 -0
  269. package/dist/lib/admin-actions/icon-map.js +115 -0
  270. package/dist/lib/admin-actions/icon-map.js.map +1 -0
  271. package/dist/lib/api-client.d.ts +55 -0
  272. package/dist/lib/api-client.d.ts.map +1 -0
  273. package/dist/lib/api-client.js +89 -0
  274. package/dist/lib/api-client.js.map +1 -0
  275. package/dist/lib/asset-url.d.ts +32 -0
  276. package/dist/lib/asset-url.d.ts.map +1 -0
  277. package/dist/lib/asset-url.js +42 -0
  278. package/dist/lib/asset-url.js.map +1 -0
  279. package/dist/lib/auth.d.ts +92 -0
  280. package/dist/lib/auth.d.ts.map +1 -0
  281. package/dist/lib/auth.js +133 -0
  282. package/dist/lib/auth.js.map +1 -0
  283. package/dist/lib/format.d.ts +2 -0
  284. package/dist/lib/format.d.ts.map +1 -0
  285. package/dist/lib/format.js +9 -0
  286. package/dist/lib/format.js.map +1 -0
  287. package/dist/lib/index.d.ts +46 -0
  288. package/dist/lib/index.d.ts.map +1 -0
  289. package/dist/lib/index.js +41 -0
  290. package/dist/lib/index.js.map +1 -0
  291. package/dist/lib/invoice-email-outcome.d.ts +53 -0
  292. package/dist/lib/invoice-email-outcome.d.ts.map +1 -0
  293. package/dist/lib/invoice-email-outcome.js +43 -0
  294. package/dist/lib/invoice-email-outcome.js.map +1 -0
  295. package/dist/lib/module-presence/ModulePresenceProvider.d.ts +49 -0
  296. package/dist/lib/module-presence/ModulePresenceProvider.d.ts.map +1 -0
  297. package/dist/lib/module-presence/ModulePresenceProvider.js +73 -0
  298. package/dist/lib/module-presence/ModulePresenceProvider.js.map +1 -0
  299. package/dist/lib/module-presence/api.d.ts +15 -0
  300. package/dist/lib/module-presence/api.d.ts.map +1 -0
  301. package/dist/lib/module-presence/api.js +25 -0
  302. package/dist/lib/module-presence/api.js.map +1 -0
  303. package/dist/lib/module-presence/index.d.ts +3 -0
  304. package/dist/lib/module-presence/index.d.ts.map +1 -0
  305. package/dist/lib/module-presence/index.js +3 -0
  306. package/dist/lib/module-presence/index.js.map +1 -0
  307. package/dist/lib/money.d.ts +22 -0
  308. package/dist/lib/money.d.ts.map +1 -0
  309. package/dist/lib/money.js +51 -0
  310. package/dist/lib/money.js.map +1 -0
  311. package/dist/lib/page-size-options.d.ts +15 -0
  312. package/dist/lib/page-size-options.d.ts.map +1 -0
  313. package/dist/lib/page-size-options.js +14 -0
  314. package/dist/lib/page-size-options.js.map +1 -0
  315. package/dist/lib/status-color.d.ts +32 -0
  316. package/dist/lib/status-color.d.ts.map +1 -0
  317. package/dist/lib/status-color.js +24 -0
  318. package/dist/lib/status-color.js.map +1 -0
  319. package/dist/lib/surface-visibility.d.ts +70 -0
  320. package/dist/lib/surface-visibility.d.ts.map +1 -0
  321. package/dist/lib/surface-visibility.js +37 -0
  322. package/dist/lib/surface-visibility.js.map +1 -0
  323. package/dist/lib/text-normalization.d.ts +56 -0
  324. package/dist/lib/text-normalization.d.ts.map +1 -0
  325. package/dist/lib/text-normalization.js +59 -0
  326. package/dist/lib/text-normalization.js.map +1 -0
  327. package/dist/lib/use-page-size-preference.d.ts +29 -0
  328. package/dist/lib/use-page-size-preference.d.ts.map +1 -0
  329. package/dist/lib/use-page-size-preference.js +61 -0
  330. package/dist/lib/use-page-size-preference.js.map +1 -0
  331. package/dist/lib/use-unsaved-changes-prompt.d.ts +23 -0
  332. package/dist/lib/use-unsaved-changes-prompt.d.ts.map +1 -0
  333. package/dist/lib/use-unsaved-changes-prompt.js +75 -0
  334. package/dist/lib/use-unsaved-changes-prompt.js.map +1 -0
  335. package/dist/lib/utils.d.ts +9 -0
  336. package/dist/lib/utils.d.ts.map +1 -0
  337. package/dist/lib/utils.js +12 -0
  338. package/dist/lib/utils.js.map +1 -0
  339. package/dist/lib/uuid.d.ts +8 -0
  340. package/dist/lib/uuid.d.ts.map +1 -0
  341. package/dist/lib/uuid.js +18 -0
  342. package/dist/lib/uuid.js.map +1 -0
  343. package/dist/ui/alert.d.ts +12 -0
  344. package/dist/ui/alert.d.ts.map +1 -0
  345. package/dist/ui/alert.js +22 -0
  346. package/dist/ui/alert.js.map +1 -0
  347. package/dist/ui/badge.d.ts +10 -0
  348. package/dist/ui/badge.d.ts.map +1 -0
  349. package/dist/ui/badge.js +21 -0
  350. package/dist/ui/badge.js.map +1 -0
  351. package/dist/ui/button.d.ts +12 -0
  352. package/dist/ui/button.d.ts.map +1 -0
  353. package/dist/ui/button.js +31 -0
  354. package/dist/ui/button.js.map +1 -0
  355. package/dist/ui/card.d.ts +8 -0
  356. package/dist/ui/card.d.ts.map +1 -0
  357. package/dist/ui/card.js +16 -0
  358. package/dist/ui/card.js.map +1 -0
  359. package/dist/ui/checkbox.d.ts +8 -0
  360. package/dist/ui/checkbox.d.ts.map +1 -0
  361. package/dist/ui/checkbox.js +11 -0
  362. package/dist/ui/checkbox.js.map +1 -0
  363. package/dist/ui/color-picker.d.ts +23 -0
  364. package/dist/ui/color-picker.d.ts.map +1 -0
  365. package/dist/ui/color-picker.js +76 -0
  366. package/dist/ui/color-picker.js.map +1 -0
  367. package/dist/ui/combobox.d.ts +68 -0
  368. package/dist/ui/combobox.d.ts.map +1 -0
  369. package/dist/ui/combobox.js +182 -0
  370. package/dist/ui/combobox.js.map +1 -0
  371. package/dist/ui/dropdown-menu.d.ts +26 -0
  372. package/dist/ui/dropdown-menu.d.ts.map +1 -0
  373. package/dist/ui/dropdown-menu.js +38 -0
  374. package/dist/ui/dropdown-menu.js.map +1 -0
  375. package/dist/ui/index.d.ts +47 -0
  376. package/dist/ui/index.d.ts.map +1 -0
  377. package/dist/ui/index.js +38 -0
  378. package/dist/ui/index.js.map +1 -0
  379. package/dist/ui/input.d.ts +3 -0
  380. package/dist/ui/input.d.ts.map +1 -0
  381. package/dist/ui/input.js +8 -0
  382. package/dist/ui/input.js.map +1 -0
  383. package/dist/ui/label.d.ts +4 -0
  384. package/dist/ui/label.d.ts.map +1 -0
  385. package/dist/ui/label.js +9 -0
  386. package/dist/ui/label.js.map +1 -0
  387. package/dist/ui/multi-select.d.ts +32 -0
  388. package/dist/ui/multi-select.d.ts.map +1 -0
  389. package/dist/ui/multi-select.js +63 -0
  390. package/dist/ui/multi-select.js.map +1 -0
  391. package/dist/ui/page-header.d.ts +21 -0
  392. package/dist/ui/page-header.d.ts.map +1 -0
  393. package/dist/ui/page-header.js +9 -0
  394. package/dist/ui/page-header.js.map +1 -0
  395. package/dist/ui/route-tabs.d.ts +58 -0
  396. package/dist/ui/route-tabs.d.ts.map +1 -0
  397. package/dist/ui/route-tabs.js +34 -0
  398. package/dist/ui/route-tabs.js.map +1 -0
  399. package/dist/ui/save-button-group.d.ts +27 -0
  400. package/dist/ui/save-button-group.d.ts.map +1 -0
  401. package/dist/ui/save-button-group.js +44 -0
  402. package/dist/ui/save-button-group.js.map +1 -0
  403. package/dist/ui/section.d.ts +20 -0
  404. package/dist/ui/section.d.ts.map +1 -0
  405. package/dist/ui/section.js +7 -0
  406. package/dist/ui/section.js.map +1 -0
  407. package/dist/ui/select.d.ts +10 -0
  408. package/dist/ui/select.d.ts.map +1 -0
  409. package/dist/ui/select.js +15 -0
  410. package/dist/ui/select.js.map +1 -0
  411. package/dist/ui/separator.d.ts +3 -0
  412. package/dist/ui/separator.d.ts.map +1 -0
  413. package/dist/ui/separator.js +7 -0
  414. package/dist/ui/separator.js.map +1 -0
  415. package/dist/ui/table.d.ts +10 -0
  416. package/dist/ui/table.d.ts.map +1 -0
  417. package/dist/ui/table.js +20 -0
  418. package/dist/ui/table.js.map +1 -0
  419. package/dist/ui/textarea.d.ts +3 -0
  420. package/dist/ui/textarea.d.ts.map +1 -0
  421. package/dist/ui/textarea.js +8 -0
  422. package/dist/ui/textarea.js.map +1 -0
  423. package/dist/zones/AdminContributionsProvider.d.ts +72 -0
  424. package/dist/zones/AdminContributionsProvider.d.ts.map +1 -0
  425. package/dist/zones/AdminContributionsProvider.js +63 -0
  426. package/dist/zones/AdminContributionsProvider.js.map +1 -0
  427. package/dist/zones/AdminZone.d.ts +30 -0
  428. package/dist/zones/AdminZone.d.ts.map +1 -0
  429. package/dist/zones/AdminZone.js +59 -0
  430. package/dist/zones/AdminZone.js.map +1 -0
  431. package/dist/zones/RouteTabsZone.d.ts +62 -0
  432. package/dist/zones/RouteTabsZone.d.ts.map +1 -0
  433. package/dist/zones/RouteTabsZone.js +25 -0
  434. package/dist/zones/RouteTabsZone.js.map +1 -0
  435. package/dist/zones/ZoneErrorBoundary.d.ts +36 -0
  436. package/dist/zones/ZoneErrorBoundary.d.ts.map +1 -0
  437. package/dist/zones/ZoneErrorBoundary.js +44 -0
  438. package/dist/zones/ZoneErrorBoundary.js.map +1 -0
  439. package/dist/zones/index.d.ts +31 -0
  440. package/dist/zones/index.d.ts.map +1 -0
  441. package/dist/zones/index.js +27 -0
  442. package/dist/zones/index.js.map +1 -0
  443. package/dist/zones/use-admin-zone.d.ts +32 -0
  444. package/dist/zones/use-admin-zone.d.ts.map +1 -0
  445. package/dist/zones/use-admin-zone.js +96 -0
  446. package/dist/zones/use-admin-zone.js.map +1 -0
  447. package/package.json +94 -3
  448. package/tailwind.css +14 -0
  449. package/theme.css +2056 -0
@@ -0,0 +1,28 @@
1
+ import type { OrganizationStatus } from '@endora-commerce/contracts';
2
+ export interface OrganizationPickerProps {
3
+ value: string | null;
4
+ onChange: (organizationId: string | null) => void;
5
+ /** When provided, the initially-selected item's name is shown in the input even before the first fetch lands. */
6
+ selectedLabel?: string;
7
+ statusFilter?: OrganizationStatus[];
8
+ salesRepAdminUserId?: string;
9
+ placeholder?: string;
10
+ emptyMessage?: string;
11
+ clearable?: boolean;
12
+ disabled?: boolean;
13
+ ariaLabel?: string;
14
+ id?: string;
15
+ className?: string;
16
+ }
17
+ /**
18
+ * Single-select Organization picker — Combobox wrapper with server-side
19
+ * paged search, diacritic-insensitive matching, and a status pill on each
20
+ * result.
21
+ *
22
+ * Used wherever the admin app needs to pick one Organization
23
+ * (Sales Rep assignment, single-org filters, etc.). For multi-select
24
+ * audiences (price-list audience, promotion targets) use
25
+ * `<OrganizationPickerMulti>`.
26
+ */
27
+ export declare function OrganizationPicker(props: OrganizationPickerProps): React.ReactElement;
28
+ //# sourceMappingURL=OrganizationPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationPicker.d.ts","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationPicker.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAQrE,MAAM,WAAW,uBAAuB;IACtC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAClD,iHAAiH;IACjH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,uBAAuB,GAAG,KAAK,CAAC,YAAY,CA6DrF"}
@@ -0,0 +1,35 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import { Combobox } from '../../ui/combobox.js';
4
+ import { useOrganizationsQuery, } from './useOrganizationsQuery.js';
5
+ import { OrganizationStatusBadge } from './OrganizationStatusBadge.js';
6
+ /**
7
+ * Single-select Organization picker — Combobox wrapper with server-side
8
+ * paged search, diacritic-insensitive matching, and a status pill on each
9
+ * result.
10
+ *
11
+ * Used wherever the admin app needs to pick one Organization
12
+ * (Sales Rep assignment, single-org filters, etc.). For multi-select
13
+ * audiences (price-list audience, promotion targets) use
14
+ * `<OrganizationPickerMulti>`.
15
+ */
16
+ export function OrganizationPicker(props) {
17
+ const [query, setQuery] = useState('');
18
+ const queryOptions = useMemo(() => ({
19
+ query,
20
+ ...(props.statusFilter ? { statusFilter: props.statusFilter } : {}),
21
+ ...(props.salesRepAdminUserId ? { salesRepAdminUserId: props.salesRepAdminUserId } : {}),
22
+ }), [query, props.statusFilter, props.salesRepAdminUserId]);
23
+ const { items, loading } = useOrganizationsQuery(queryOptions);
24
+ const options = useMemo(() => items.map((it) => ({
25
+ value: it.id,
26
+ label: it.name,
27
+ description: it.legalName ?? undefined,
28
+ })), [items]);
29
+ const renderOption = (option, _state) => {
30
+ const item = items.find((it) => it.id === option.value);
31
+ return (_jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [_jsxs("div", { className: "flex flex-col min-w-0", children: [_jsx("span", { className: "truncate", children: option.label }), option.description ? (_jsx("span", { className: "text-xs text-muted-foreground truncate", children: option.description })) : null] }), item ? _jsx(OrganizationStatusBadge, { status: item.status, compact: true }) : null] }));
32
+ };
33
+ return (_jsx(Combobox, { options: options, value: props.value, onChange: props.onChange, onSearchChange: setQuery, manualFilter: true, loading: loading, clearable: props.clearable ?? true, disabled: props.disabled ?? false, placeholder: props.placeholder ?? 'Search organizations…', emptyMessage: props.emptyMessage ?? 'No organizations found', ariaLabel: props.ariaLabel ?? 'Select organization', id: props.id ?? '', className: props.className ?? '', selectedLabel: props.selectedLabel ?? '', renderOption: renderOption }));
34
+ }
35
+ //# sourceMappingURL=OrganizationPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationPicker.js","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationPicker.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { OrganizationStatus } from '@endora-commerce/contracts';
2
+ export interface OrganizationPickerMultiProps {
3
+ /** Currently selected organization IDs. */
4
+ value: string[];
5
+ onChange: (organizationIds: string[]) => void;
6
+ /**
7
+ * Labels keyed by id for organizations that may not appear in the
8
+ * current page of search results. Lets the chip render correctly even
9
+ * after the dropdown has scrolled past the original selection.
10
+ */
11
+ selectedLabels?: Record<string, {
12
+ name: string;
13
+ status: OrganizationStatus;
14
+ }>;
15
+ statusFilter?: OrganizationStatus[];
16
+ placeholder?: string;
17
+ emptyMessage?: string;
18
+ disabled?: boolean;
19
+ ariaLabel?: string;
20
+ id?: string;
21
+ className?: string;
22
+ /** Max chips allowed before further additions are refused. Defaults to 200. */
23
+ maxSelection?: number;
24
+ }
25
+ /**
26
+ * Multi-select OrganizationPicker. Wraps the single-select Combobox and
27
+ * renders chips for already-picked items below the input. Selecting a new
28
+ * option appends it; clicking the × on a chip removes it. The same
29
+ * server-side search hook powers both variants.
30
+ */
31
+ export declare function OrganizationPickerMulti(props: OrganizationPickerMultiProps): React.ReactElement;
32
+ //# sourceMappingURL=OrganizationPickerMulti.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationPickerMulti.d.ts","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationPickerMulti.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AASrE,MAAM,WAAW,4BAA4B;IAC3C,2CAA2C;IAC3C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,eAAe,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,kBAAkB,CAAA;KAAE,CAAC,CAAC;IAC9E,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+EAA+E;IAC/E,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,KAAK,CAAC,YAAY,CAwGpB"}
@@ -0,0 +1,55 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useMemo, useState } from 'react';
3
+ import { X } from 'lucide-react';
4
+ import { Combobox } from '../../ui/combobox.js';
5
+ import { useOrganizationsQuery, } from './useOrganizationsQuery.js';
6
+ import { OrganizationStatusBadge } from './OrganizationStatusBadge.js';
7
+ import { cn } from '../../lib/utils.js';
8
+ /**
9
+ * Multi-select OrganizationPicker. Wraps the single-select Combobox and
10
+ * renders chips for already-picked items below the input. Selecting a new
11
+ * option appends it; clicking the × on a chip removes it. The same
12
+ * server-side search hook powers both variants.
13
+ */
14
+ export function OrganizationPickerMulti(props) {
15
+ const [query, setQuery] = useState('');
16
+ const queryOptions = useMemo(() => ({
17
+ query,
18
+ ...(props.statusFilter ? { statusFilter: props.statusFilter } : {}),
19
+ }), [query, props.statusFilter]);
20
+ const { items, loading } = useOrganizationsQuery(queryOptions);
21
+ const selectedSet = useMemo(() => new Set(props.value), [props.value]);
22
+ const maxSelection = props.maxSelection ?? 200;
23
+ const options = useMemo(() => items.map((it) => ({
24
+ value: it.id,
25
+ label: it.name,
26
+ description: it.legalName ?? undefined,
27
+ disabled: selectedSet.has(it.id),
28
+ })), [items, selectedSet]);
29
+ const handleSelect = (id) => {
30
+ if (!id)
31
+ return;
32
+ if (selectedSet.has(id))
33
+ return;
34
+ if (props.value.length >= maxSelection)
35
+ return;
36
+ props.onChange([...props.value, id]);
37
+ setQuery('');
38
+ };
39
+ const handleRemove = (id) => {
40
+ props.onChange(props.value.filter((v) => v !== id));
41
+ };
42
+ const chipFor = (id) => {
43
+ const fromCurrent = items.find((it) => it.id === id);
44
+ const fromHint = props.selectedLabels?.[id];
45
+ const label = fromCurrent?.name ?? fromHint?.name ?? id;
46
+ const status = fromCurrent?.status ?? fromHint?.status ?? null;
47
+ return (_jsxs("span", { className: "inline-flex items-center gap-2 rounded-full border bg-slate-50 px-2 py-1 text-xs", children: [_jsx("span", { className: "truncate max-w-[12rem]", children: label }), status ? _jsx(OrganizationStatusBadge, { status: status, compact: true }) : null, _jsx("button", { type: "button", className: "text-slate-500 hover:text-slate-900", "aria-label": `Remove ${label}`, onClick: () => handleRemove(id), disabled: props.disabled ?? false, children: _jsx(X, { className: "h-3 w-3" }) })] }, id));
48
+ };
49
+ const renderOption = (option, _state) => {
50
+ const item = items.find((it) => it.id === option.value);
51
+ return (_jsxs("div", { className: "flex w-full items-center justify-between gap-3", children: [_jsxs("div", { className: "flex flex-col min-w-0", children: [_jsx("span", { className: "truncate", children: option.label }), option.description ? (_jsx("span", { className: "text-xs text-muted-foreground truncate", children: option.description })) : null] }), item ? _jsx(OrganizationStatusBadge, { status: item.status, compact: true }) : null] }));
52
+ };
53
+ return (_jsxs("div", { className: cn('flex flex-col gap-2', props.className), children: [_jsx(Combobox, { options: options, value: null, onChange: handleSelect, onSearchChange: setQuery, manualFilter: true, loading: loading, clearable: false, disabled: props.disabled ?? false, placeholder: props.placeholder ?? 'Add organization…', emptyMessage: props.emptyMessage ?? 'No organizations found', ariaLabel: props.ariaLabel ?? 'Add organizations', id: props.id ?? '', renderOption: renderOption }), props.value.length > 0 ? (_jsx("div", { className: "flex flex-wrap gap-2", children: props.value.map((id) => chipFor(id)) })) : null] }));
54
+ }
55
+ //# sourceMappingURL=OrganizationPickerMulti.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationPickerMulti.js","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationPickerMulti.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,cAAc,CAAC;AAEjC,OAAO,EAAE,QAAQ,EAAuB,MAAM,sBAAsB,CAAC;AACrE,OAAO,EACL,qBAAqB,GAEtB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAuBxC;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;IAEvC,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CAAC,CAAC;QACL,KAAK;QACL,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACpE,CAAC,EACF,CAAC,KAAK,EAAE,KAAK,CAAC,YAAY,CAAC,CAC5B,CAAC;IAEF,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,qBAAqB,CAAC,YAAY,CAAC,CAAC;IAE/D,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IACvE,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC;IAE/C,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CACH,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;QACjB,KAAK,EAAE,EAAE,CAAC,EAAE;QACZ,KAAK,EAAE,EAAE,CAAC,IAAI;QACd,WAAW,EAAE,EAAE,CAAC,SAAS,IAAI,SAAS;QACtC,QAAQ,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;KACjC,CAAC,CAAC,EACL,CAAC,KAAK,EAAE,WAAW,CAAC,CACrB,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,EAAiB,EAAQ,EAAE;QAC/C,IAAI,CAAC,EAAE;YAAE,OAAO;QAChB,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,OAAO;QAChC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,YAAY;YAAE,OAAO;QAC/C,KAAK,CAAC,QAAQ,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,CAAC,CAAC;IACf,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CAAC,EAAU,EAAQ,EAAE;QACxC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC,CAAC;IAEF,MAAM,OAAO,GAAG,CAAC,EAAU,EAAsB,EAAE;QACjD,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,cAAc,EAAE,CAAC,EAAE,CAAC,CAAC;QAC5C,MAAM,KAAK,GAAG,WAAW,EAAE,IAAI,IAAI,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC;QACxD,MAAM,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,QAAQ,EAAE,MAAM,IAAI,IAAI,CAAC;QAC/D,OAAO,CACL,gBAEE,SAAS,EAAC,kFAAkF,aAE5F,eAAM,SAAS,EAAC,wBAAwB,YAAE,KAAK,GAAQ,EACtD,MAAM,CAAC,CAAC,CAAC,KAAC,uBAAuB,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,SAAG,CAAC,CAAC,CAAC,IAAI,EACpE,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,qCAAqC,gBACnC,UAAU,KAAK,EAAE,EAC7B,OAAO,EAAE,GAAS,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,EACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,YAEjC,KAAC,CAAC,IAAC,SAAS,EAAC,SAAS,GAAG,GAClB,KAbJ,EAAE,CAcF,CACR,CAAC;IACJ,CAAC,CAAC;IAEF,MAAM,YAAY,GAAG,CACnB,MAA8B,EAC9B,MAA8C,EAC7B,EAAE;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;QACxD,OAAO,CACL,eAAK,SAAS,EAAC,gDAAgD,aAC7D,eAAK,SAAS,EAAC,uBAAuB,aACpC,eAAM,SAAS,EAAC,UAAU,YAAE,MAAM,CAAC,KAAK,GAAQ,EAC/C,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CACpB,eAAM,SAAS,EAAC,wCAAwC,YAAE,MAAM,CAAC,WAAW,GAAQ,CACrF,CAAC,CAAC,CAAC,IAAI,IACJ,EACL,IAAI,CAAC,CAAC,CAAC,KAAC,uBAAuB,IAAC,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,OAAO,SAAG,CAAC,CAAC,CAAC,IAAI,IACnE,CACP,CAAC;IACJ,CAAC,CAAC;IAEF,OAAO,CACL,eAAK,SAAS,EAAE,EAAE,CAAC,qBAAqB,EAAE,KAAK,CAAC,SAAS,CAAC,aACxD,KAAC,QAAQ,IACP,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,IAAI,EACX,QAAQ,EAAE,YAAY,EACtB,cAAc,EAAE,QAAQ,EACxB,YAAY,QACZ,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,KAAK,EAChB,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,KAAK,EACjC,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,mBAAmB,EACrD,YAAY,EAAE,KAAK,CAAC,YAAY,IAAI,wBAAwB,EAC5D,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,mBAAmB,EACjD,EAAE,EAAE,KAAK,CAAC,EAAE,IAAI,EAAE,EAClB,YAAY,EAAE,YAAY,GAC1B,EACD,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACxB,cAAK,SAAS,EAAC,sBAAsB,YAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,GAAO,CACnF,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import type { OrganizationStatus } from '@endora-commerce/contracts';
2
+ export interface OrganizationStatusBadgeProps {
3
+ status: OrganizationStatus;
4
+ compact?: boolean;
5
+ }
6
+ export declare function OrganizationStatusBadge(props: OrganizationStatusBadgeProps): React.ReactElement;
7
+ //# sourceMappingURL=OrganizationStatusBadge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationStatusBadge.d.ts","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationStatusBadge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGrE,MAAM,WAAW,4BAA4B;IAC3C,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA6BD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,4BAA4B,GAClC,KAAK,CAAC,YAAY,CAapB"}
@@ -0,0 +1,33 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { cn } from '../../lib/utils.js';
3
+ /**
4
+ * Status pill used by the OrganizationPicker (compact variant) and by the
5
+ * Organizations list view (full variant).
6
+ *
7
+ * Labels are PL/EN i18n strings landed by feature 021 — for the
8
+ * foundational layer we ship English defaults and let the admin i18n
9
+ * bundle (US1 T050) populate translations.
10
+ */
11
+ const STYLES = {
12
+ pending_verification: {
13
+ label: 'Pending',
14
+ cls: 'bg-amber-100 text-amber-900 border-amber-300',
15
+ },
16
+ active: {
17
+ label: 'Active',
18
+ cls: 'bg-emerald-100 text-emerald-900 border-emerald-300',
19
+ },
20
+ blocked: {
21
+ label: 'Blocked',
22
+ cls: 'bg-rose-100 text-rose-900 border-rose-300',
23
+ },
24
+ rejected: {
25
+ label: 'Rejected',
26
+ cls: 'bg-slate-200 text-slate-700 border-slate-300',
27
+ },
28
+ };
29
+ export function OrganizationStatusBadge(props) {
30
+ const style = STYLES[props.status];
31
+ return (_jsx("span", { className: cn('inline-flex items-center rounded-full border font-medium', props.compact ? 'px-1.5 py-0 text-[10px]' : 'px-2 py-0.5 text-xs', style.cls), children: style.label }));
32
+ }
33
+ //# sourceMappingURL=OrganizationStatusBadge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OrganizationStatusBadge.js","sourceRoot":"","sources":["../../../src/components/organization-picker/OrganizationStatusBadge.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,EAAE,EAAE,MAAM,oBAAoB,CAAC;AAOxC;;;;;;;GAOG;AACH,MAAM,MAAM,GAA+D;IACzE,oBAAoB,EAAE;QACpB,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,8CAA8C;KACpD;IACD,MAAM,EAAE;QACN,KAAK,EAAE,QAAQ;QACf,GAAG,EAAE,oDAAoD;KAC1D;IACD,OAAO,EAAE;QACP,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,2CAA2C;KACjD;IACD,QAAQ,EAAE;QACR,KAAK,EAAE,UAAU;QACjB,GAAG,EAAE,8CAA8C;KACpD;CACF,CAAC;AAEF,MAAM,UAAU,uBAAuB,CACrC,KAAmC;IAEnC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACnC,OAAO,CACL,eACE,SAAS,EAAE,EAAE,CACX,0DAA0D,EAC1D,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,qBAAqB,EACjE,KAAK,CAAC,GAAG,CACV,YAEA,KAAK,CAAC,KAAK,GACP,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,33 @@
1
+ import type { OrganizationPickerListItem, OrganizationStatus } from '@endora-commerce/contracts';
2
+ export interface UseOrganizationsQueryOptions {
3
+ query: string;
4
+ statusFilter?: OrganizationStatus[];
5
+ /**
6
+ * Accepted and **never sent**. `organizations`' picker client declared it on
7
+ * its options type and serialized `q`, `filter[status]` and `limit` only, so
8
+ * the value has reached no server since the option existed. The behaviour is
9
+ * preserved verbatim here rather than repaired, because a publication merge
10
+ * request must not quietly change what a picker returns; it is reported to
11
+ * the defect register instead.
12
+ */
13
+ salesRepAdminUserId?: string;
14
+ /** Defaults to 25. Capped at 100 server-side. */
15
+ limit?: number;
16
+ /** Debounce delay in ms. Defaults to 200. */
17
+ debounceMs?: number;
18
+ }
19
+ export interface UseOrganizationsQueryResult {
20
+ items: OrganizationPickerListItem[];
21
+ loading: boolean;
22
+ error: string | null;
23
+ }
24
+ /**
25
+ * Hook backing `<OrganizationPicker>` and `<OrganizationPickerMulti>`.
26
+ *
27
+ * Owns the debounce + abort-on-restart logic so the picker remains snappy
28
+ * (≤ 200 ms p95 typeahead, per SC-008) even as the user types quickly.
29
+ * The server is the source of truth for filtering — the Combobox primitive
30
+ * runs in `manualFilter` mode for these pickers.
31
+ */
32
+ export declare function useOrganizationsQuery(options: UseOrganizationsQueryOptions): UseOrganizationsQueryResult;
33
+ //# sourceMappingURL=useOrganizationsQuery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOrganizationsQuery.d.ts","sourceRoot":"","sources":["../../../src/components/organization-picker/useOrganizationsQuery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAE1B,kBAAkB,EACnB,MAAM,4BAA4B,CAAC;AAsEpC,MAAM,WAAW,4BAA4B;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,kBAAkB,EAAE,CAAC;IACpC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,iDAAiD;IACjD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6CAA6C;IAC7C,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,EAAE,0BAA0B,EAAE,CAAC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,4BAA4B,GACpC,2BAA2B,CAyD7B"}
@@ -0,0 +1,92 @@
1
+ import { useEffect, useMemo, useRef, useState } from 'react';
2
+ // `apiClient` comes through the kit's published `lib` **barrel** rather than
3
+ // through `../../lib/api-client.js` — see the note in
4
+ // `../sales-channel-picker/SalesChannelPicker.tsx`: the barrel is the only
5
+ // spelling `vi.mock` can name from outside the package.
6
+ import { apiClient } from '../../lib/index.js';
7
+ async function listOrganizationsForPicker(options) {
8
+ const qs = new URLSearchParams();
9
+ if (options.q !== undefined && options.q.length > 0)
10
+ qs.set('q', options.q);
11
+ if (options.status && options.status.length > 0) {
12
+ qs.set('filter[status]', options.status[0]);
13
+ }
14
+ if (options.limit !== undefined)
15
+ qs.set('limit', String(options.limit));
16
+ const tail = qs.toString();
17
+ const res = await apiClient.get(`/api/v1/admin/organizations${tail ? `?${tail}` : ''}`, options.signal ? { signal: options.signal } : undefined);
18
+ return {
19
+ items: res.data.map((o) => ({
20
+ id: o.id,
21
+ name: o.name,
22
+ legalName: o.legalName ?? null,
23
+ status: o.status,
24
+ countryCode: o.registeredAddress?.country ?? null,
25
+ version: o.version ?? 0,
26
+ })),
27
+ nextCursor: res.pagination.cursor ?? null,
28
+ };
29
+ }
30
+ /**
31
+ * Hook backing `<OrganizationPicker>` and `<OrganizationPickerMulti>`.
32
+ *
33
+ * Owns the debounce + abort-on-restart logic so the picker remains snappy
34
+ * (≤ 200 ms p95 typeahead, per SC-008) even as the user types quickly.
35
+ * The server is the source of truth for filtering — the Combobox primitive
36
+ * runs in `manualFilter` mode for these pickers.
37
+ */
38
+ export function useOrganizationsQuery(options) {
39
+ const { query, statusFilter, salesRepAdminUserId, limit = 25, debounceMs = 200 } = options;
40
+ const [items, setItems] = useState([]);
41
+ const [loading, setLoading] = useState(false);
42
+ const [error, setError] = useState(null);
43
+ const debounceRef = useRef(null);
44
+ const abortRef = useRef(null);
45
+ // Stable string key so `useEffect` doesn't refire on every parent render.
46
+ const statusKey = useMemo(() => (statusFilter && statusFilter.length > 0 ? [...statusFilter].sort().join(',') : ''), [statusFilter]);
47
+ useEffect(() => {
48
+ if (debounceRef.current)
49
+ clearTimeout(debounceRef.current);
50
+ debounceRef.current = setTimeout(() => {
51
+ if (abortRef.current)
52
+ abortRef.current.abort();
53
+ const controller = new AbortController();
54
+ abortRef.current = controller;
55
+ setLoading(true);
56
+ setError(null);
57
+ const listOptions = {
58
+ q: query.trim(),
59
+ limit,
60
+ signal: controller.signal,
61
+ };
62
+ if (statusKey) {
63
+ listOptions.status = statusKey.split(',');
64
+ }
65
+ listOrganizationsForPicker(listOptions)
66
+ .then((page) => {
67
+ if (controller.signal.aborted)
68
+ return;
69
+ setItems(page.items);
70
+ })
71
+ .catch((err) => {
72
+ if (controller.signal.aborted)
73
+ return;
74
+ setError(err instanceof Error ? err.message : 'Failed to load organizations.');
75
+ setItems([]);
76
+ })
77
+ .finally(() => {
78
+ if (controller.signal.aborted)
79
+ return;
80
+ setLoading(false);
81
+ });
82
+ }, debounceMs);
83
+ return () => {
84
+ if (debounceRef.current)
85
+ clearTimeout(debounceRef.current);
86
+ if (abortRef.current)
87
+ abortRef.current.abort();
88
+ };
89
+ }, [query, statusKey, salesRepAdminUserId, limit, debounceMs]);
90
+ return { items, loading, error };
91
+ }
92
+ //# sourceMappingURL=useOrganizationsQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useOrganizationsQuery.js","sourceRoot":"","sources":["../../../src/components/organization-picker/useOrganizationsQuery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import type { ReactNode } from 'react';
2
+ /**
3
+ * A payment method's availability, as a **state** with a way to change it —
4
+ * feature 076, D-83.
5
+ *
6
+ * All four gateway screens used to carry an editable `<select>` here, and all
7
+ * four wrote `PaymentMethod.status` through their own endpoint. Availability is
8
+ * `payment_methods`' operation now, so the chip renders the state and the link
9
+ * goes to the one screen that sets it, landing on this method's row.
10
+ *
11
+ * The column is **kept** rather than removed: without it, "is this method live?"
12
+ * would be unanswerable on the screen where the operator is configuring it,
13
+ * which is a worse regression than one extra click.
14
+ *
15
+ * No fallback for an absent `payment_methods` is written, and that is measured
16
+ * rather than assumed: all four gateways declare it as a **binding** dependency,
17
+ * so the activation graph refuses to switch it off while a gateway is on. The
18
+ * link is live wherever this component renders, and a branch for the other case
19
+ * would be code no operator can reach.
20
+ */
21
+ export declare function MethodAvailabilityCell({ code, status, }: {
22
+ code: string;
23
+ status: 'active' | 'inactive';
24
+ }): ReactNode;
25
+ /**
26
+ * The one sentence that turns "the toggle vanished" into "the toggle moved, and
27
+ * here is why" (D-83 item 3). Rendered under every gateway's methods table.
28
+ */
29
+ export declare function MethodAvailabilityCaption(): ReactNode;
30
+ /**
31
+ * A non-blocking notice on a method that is configured but not offered (D-83
32
+ * item 4). Configuring a method ahead of switching it on is a real workflow, so
33
+ * nothing on the row is disabled — the operator is told, not stopped.
34
+ */
35
+ export declare function MethodNotOfferedNotice({ codes }: {
36
+ codes: readonly string[];
37
+ }): ReactNode;
38
+ //# sourceMappingURL=MethodAvailabilityCell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodAvailabilityCell.d.ts","sourceRoot":"","sources":["../../../src/components/payment-method-availability/MethodAvailabilityCell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EACJ,MAAM,GACP,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAC;CAC/B,GAAG,SAAS,CAkBZ;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,SAAS,CAOrD;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,EAAE,KAAK,EAAE,EAAE;IAAE,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,GAAG,SAAS,CAQzF"}
@@ -0,0 +1,50 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Link } from 'react-router-dom';
3
+ import { ExternalLink } from 'lucide-react';
4
+ import { Badge } from '../../ui/badge.js';
5
+ import { useTranslation } from '../../i18n/useTranslation.js';
6
+ /**
7
+ * A payment method's availability, as a **state** with a way to change it —
8
+ * feature 076, D-83.
9
+ *
10
+ * All four gateway screens used to carry an editable `<select>` here, and all
11
+ * four wrote `PaymentMethod.status` through their own endpoint. Availability is
12
+ * `payment_methods`' operation now, so the chip renders the state and the link
13
+ * goes to the one screen that sets it, landing on this method's row.
14
+ *
15
+ * The column is **kept** rather than removed: without it, "is this method live?"
16
+ * would be unanswerable on the screen where the operator is configuring it,
17
+ * which is a worse regression than one extra click.
18
+ *
19
+ * No fallback for an absent `payment_methods` is written, and that is measured
20
+ * rather than assumed: all four gateways declare it as a **binding** dependency,
21
+ * so the activation graph refuses to switch it off while a gateway is on. The
22
+ * link is live wherever this component renders, and a branch for the other case
23
+ * would be code no operator can reach.
24
+ */
25
+ export function MethodAvailabilityCell({ code, status, }) {
26
+ const t = useTranslation('core');
27
+ return (_jsxs("div", { className: "flex flex-col items-start gap-1", children: [_jsx(Badge, { variant: status === 'active' ? 'success' : 'secondary', children: status === 'active'
28
+ ? t('paymentMethodAvailability.state.active')
29
+ : t('paymentMethodAvailability.state.inactive') }), _jsxs(Link, { to: `/payment-methods?highlight=${encodeURIComponent(code)}`, className: "inline-flex items-center gap-1 text-xs underline underline-offset-2 hover:no-underline focus-visible:outline-2 focus-visible:outline-offset-2", children: [t('paymentMethodAvailability.manage'), _jsx(ExternalLink, { className: "size-3", "aria-hidden": "true" })] })] }));
30
+ }
31
+ /**
32
+ * The one sentence that turns "the toggle vanished" into "the toggle moved, and
33
+ * here is why" (D-83 item 3). Rendered under every gateway's methods table.
34
+ */
35
+ export function MethodAvailabilityCaption() {
36
+ const t = useTranslation('core');
37
+ return (_jsx("p", { className: "mt-3 text-sm text-muted-foreground", children: t('paymentMethodAvailability.caption') }));
38
+ }
39
+ /**
40
+ * A non-blocking notice on a method that is configured but not offered (D-83
41
+ * item 4). Configuring a method ahead of switching it on is a real workflow, so
42
+ * nothing on the row is disabled — the operator is told, not stopped.
43
+ */
44
+ export function MethodNotOfferedNotice({ codes }) {
45
+ const t = useTranslation('core');
46
+ if (codes.length === 0)
47
+ return null;
48
+ return (_jsx("p", { className: "mt-2 text-sm text-muted-foreground", role: "status", children: t('paymentMethodAvailability.notOffered', { codes: codes.join(', ') }) }));
49
+ }
50
+ //# sourceMappingURL=MethodAvailabilityCell.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MethodAvailabilityCell.js","sourceRoot":"","sources":["../../../src/components/payment-method-availability/MethodAvailabilityCell.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAE9D;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,sBAAsB,CAAC,EACrC,IAAI,EACJ,MAAM,GAIP;IACC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,CACL,eAAK,SAAS,EAAC,iCAAiC,aAC9C,KAAC,KAAK,IAAC,OAAO,EAAE,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,YAC1D,MAAM,KAAK,QAAQ;oBAClB,CAAC,CAAC,CAAC,CAAC,wCAAwC,CAAC;oBAC7C,CAAC,CAAC,CAAC,CAAC,0CAA0C,CAAC,GAC3C,EACR,MAAC,IAAI,IACH,EAAE,EAAE,8BAA8B,kBAAkB,CAAC,IAAI,CAAC,EAAE,EAC5D,SAAS,EAAC,+IAA+I,aAExJ,CAAC,CAAC,kCAAkC,CAAC,EACtC,KAAC,YAAY,IAAC,SAAS,EAAC,QAAQ,iBAAa,MAAM,GAAG,IACjD,IACH,CACP,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB;IACvC,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,OAAO,CACL,YAAG,SAAS,EAAC,oCAAoC,YAC9C,CAAC,CAAC,mCAAmC,CAAC,GACrC,CACL,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,sBAAsB,CAAC,EAAE,KAAK,EAAgC;IAC5E,MAAM,CAAC,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,CACL,YAAG,SAAS,EAAC,oCAAoC,EAAC,IAAI,EAAC,QAAQ,YAC5D,CAAC,CAAC,sCAAsC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GACrE,CACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { type ReactNode } from 'react';
2
+ interface CommonProductPickerProps {
3
+ excludeIds?: string[] | undefined;
4
+ includeArchived?: boolean | undefined;
5
+ placeholder?: string | undefined;
6
+ disabled?: boolean | undefined;
7
+ id?: string | undefined;
8
+ ariaLabel?: string | undefined;
9
+ pageSize?: number | undefined;
10
+ }
11
+ export type ProductPickerProps = (CommonProductPickerProps & {
12
+ mode: 'select';
13
+ value: string | null;
14
+ onChange: (next: string | null) => void;
15
+ }) | (CommonProductPickerProps & {
16
+ mode: 'multiselect';
17
+ value: string[];
18
+ onChange: (next: string[]) => void;
19
+ });
20
+ export declare function ProductPicker(props: ProductPickerProps): ReactNode;
21
+ export {};
22
+ //# sourceMappingURL=ProductPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProductPicker.d.ts","sourceRoot":"","sources":["../../../src/components/product-picker/ProductPicker.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AA+Df,UAAU,wBAAwB;IAChC,UAAU,CAAC,EAAE,MAAM,EAAE,GAAG,SAAS,CAAC;IAClC,eAAe,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC/B,EAAE,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAC1B,CAAC,wBAAwB,GAAG;IAC1B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;CACzC,CAAC,GACF,CAAC,wBAAwB,GAAG;IAC1B,IAAI,EAAE,aAAa,CAAC;IACpB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;CACpC,CAAC,CAAC;AAMP,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,SAAS,CA0MlE"}