@vritti/quantum-ui 0.3.12 → 0.3.13

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 (477) hide show
  1. package/dist/Alert.js +1 -1
  2. package/dist/Alert.js.map +1 -1
  3. package/dist/Avatar.js +1 -1
  4. package/dist/Avatar.js.map +1 -1
  5. package/dist/Badge2.js +2 -2
  6. package/dist/BillingCycleSelector.js +37 -0
  7. package/dist/BillingCycleSelector.js.map +1 -0
  8. package/dist/Breadcrumb.js +1 -1
  9. package/dist/Breadcrumb.js.map +1 -1
  10. package/dist/Button.js +1 -1
  11. package/dist/Button.js.map +1 -1
  12. package/dist/Button2.js +2 -2
  13. package/dist/CardSkeleton.js.map +1 -1
  14. package/dist/CategoryFilter.js +6 -4
  15. package/dist/CategoryFilter.js.map +1 -1
  16. package/dist/Checkbox.js.map +1 -1
  17. package/dist/Checkbox2.js +4 -4
  18. package/dist/CheckboxGroup.js.map +1 -1
  19. package/dist/Collapsible.js.map +1 -1
  20. package/dist/Combination.js +1129 -0
  21. package/dist/Combination.js.map +1 -0
  22. package/dist/CompanySelector.js +20 -0
  23. package/dist/CompanySelector.js.map +1 -0
  24. package/dist/ConfirmHost.js.map +1 -1
  25. package/dist/CountrySelector.js +37 -0
  26. package/dist/CountrySelector.js.map +1 -0
  27. package/dist/CurrencyField.js +1 -0
  28. package/dist/CurrencyField.js.map +1 -1
  29. package/dist/CustomerSelector.js +2 -2
  30. package/dist/CustomerSelector.js.map +1 -1
  31. package/dist/DangerZoneSkeleton.js +21 -3
  32. package/dist/DangerZoneSkeleton.js.map +1 -1
  33. package/dist/DatePicker.js +3 -3
  34. package/dist/DatePicker.js.map +1 -1
  35. package/dist/DateTimePicker.js +2 -2
  36. package/dist/DetailSectionSkeleton.js.map +1 -1
  37. package/dist/Dialog.js.map +1 -1
  38. package/dist/DropdownMenu.js.map +1 -1
  39. package/dist/FeaturePermissionSelector.js +37 -0
  40. package/dist/FeaturePermissionSelector.js.map +1 -0
  41. package/dist/Form.js.map +1 -1
  42. package/dist/FormSection.js +4 -4
  43. package/dist/FormSection.js.map +1 -1
  44. package/dist/HierarchyGraph.js +5 -10621
  45. package/dist/HierarchyGraph.js.map +1 -1
  46. package/dist/ISOCountrySelect.js +283 -0
  47. package/dist/ISOCountrySelect.js.map +1 -0
  48. package/dist/IconSelect.js +1 -1
  49. package/dist/IconSelect.js.map +1 -1
  50. package/dist/InventoryItemSelector.js +2 -2
  51. package/dist/InventoryItemSelector.js.map +1 -1
  52. package/dist/Kbd.js +1 -1
  53. package/dist/Kbd.js.map +1 -1
  54. package/dist/Label.js +1 -1
  55. package/dist/LayoutModeContext.js.map +1 -1
  56. package/dist/LegalEntitySelector.js +37 -0
  57. package/dist/LegalEntitySelector.js.map +1 -0
  58. package/dist/LocationSelector.js +2 -2
  59. package/dist/LocationSelector.js.map +1 -1
  60. package/dist/LotSelector.js +2 -2
  61. package/dist/LotSelector.js.map +1 -1
  62. package/dist/OTPField.js.map +1 -1
  63. package/dist/PageContent.js.map +1 -1
  64. package/dist/PageHeaderSkeleton.js +21 -10
  65. package/dist/PageHeaderSkeleton.js.map +1 -1
  66. package/dist/PasswordField.js.map +1 -1
  67. package/dist/PermissionGate.js +49 -5
  68. package/dist/PermissionGate.js.map +1 -1
  69. package/dist/PersonSelector.js +20 -0
  70. package/dist/PersonSelector.js.map +1 -0
  71. package/dist/PhoneField.js.map +1 -1
  72. package/dist/PurchaseOrderSelector.js +2 -2
  73. package/dist/PurchaseOrderSelector.js.map +1 -1
  74. package/dist/QuantSelector.js +2 -2
  75. package/dist/QuantSelector.js.map +1 -1
  76. package/dist/RadioGroup.js +6 -6
  77. package/dist/RadioGroup.js.map +1 -1
  78. package/dist/RoleSelector.js +20 -0
  79. package/dist/RoleSelector.js.map +1 -0
  80. package/dist/Select.js +4 -1
  81. package/dist/Select.js.map +1 -1
  82. package/dist/SelectFilter.js.map +1 -1
  83. package/dist/Separator.js.map +1 -1
  84. package/dist/SerialSelector.js +2 -2
  85. package/dist/SerialSelector.js.map +1 -1
  86. package/dist/Sidebar.js +2 -2
  87. package/dist/Sidebar.js.map +1 -1
  88. package/dist/SingleSelect.js +2 -2
  89. package/dist/SingleSelect.js.map +1 -1
  90. package/dist/SiteGroupSelector.js +37 -0
  91. package/dist/SiteGroupSelector.js.map +1 -0
  92. package/dist/SiteSelector.js +37 -0
  93. package/dist/SiteSelector.js.map +1 -0
  94. package/dist/Sonner.js +1 -1
  95. package/dist/Sonner.js.map +1 -1
  96. package/dist/Sortable.js +4 -4417
  97. package/dist/Sortable.js.map +1 -1
  98. package/dist/StepProgressIndicator.js.map +1 -1
  99. package/dist/SupplierItemSelector.js +2 -2
  100. package/dist/SupplierItemSelector.js.map +1 -1
  101. package/dist/SupplierSelector.js +2 -2
  102. package/dist/SupplierSelector.js.map +1 -1
  103. package/dist/Switch.js +3 -3
  104. package/dist/Switch.js.map +1 -1
  105. package/dist/TabsSkeleton.js +101 -49
  106. package/dist/TabsSkeleton.js.map +1 -1
  107. package/dist/TaxClassSelector.js +20 -0
  108. package/dist/TaxClassSelector.js.map +1 -0
  109. package/dist/TextField.js.map +1 -1
  110. package/dist/ThemeContext.js.map +1 -1
  111. package/dist/ThemeToggle.js.map +1 -1
  112. package/dist/Toggle.js +1 -1
  113. package/dist/Toggle.js.map +1 -1
  114. package/dist/Tooltip.js.map +1 -1
  115. package/dist/Typography.js.map +1 -1
  116. package/dist/UomSelector.js +2 -2
  117. package/dist/UomSelector.js.map +1 -1
  118. package/dist/UploadFile.js.map +1 -1
  119. package/dist/assets/quantum-ui.css +25 -13
  120. package/dist/calendar2.js +1 -1
  121. package/dist/collapsible2.js +1 -1
  122. package/dist/components/CompanySelector.js +2 -0
  123. package/dist/components/CompanySelector.js.map +1 -0
  124. package/dist/components/FormattedDate.js +2 -2
  125. package/dist/components/HierarchyGraph.js +2 -1
  126. package/dist/components/HierarchyGraph.js.map +1 -1
  127. package/dist/components/PermissionGate.js +1 -1
  128. package/dist/components/PersonSelector.js +2 -0
  129. package/dist/components/PersonSelector.js.map +1 -0
  130. package/dist/components/ScanBarcodeButton.js.map +1 -1
  131. package/dist/components/TreeView.js +7 -7
  132. package/dist/components/TreeView.js.map +1 -1
  133. package/dist/core.esm.js +4025 -0
  134. package/dist/core.esm.js.map +1 -0
  135. package/dist/dropdown-menu.js +10 -10
  136. package/dist/field.js +1 -1
  137. package/dist/image-component.js.map +1 -1
  138. package/dist/index.js +15 -3
  139. package/dist/index.js.map +1 -1
  140. package/dist/index10.js +102 -1499
  141. package/dist/index10.js.map +1 -1
  142. package/dist/index11.js +1499 -37
  143. package/dist/index11.js.map +1 -1
  144. package/dist/index12.js +29 -477
  145. package/dist/index12.js.map +1 -1
  146. package/dist/index13.js +427 -231
  147. package/dist/index13.js.map +1 -1
  148. package/dist/index14.js +215 -1074
  149. package/dist/index14.js.map +1 -1
  150. package/dist/index15.js +1140 -14
  151. package/dist/index15.js.map +1 -1
  152. package/dist/index16.js +13 -19
  153. package/dist/index16.js.map +1 -1
  154. package/dist/index17.js +24 -172
  155. package/dist/index17.js.map +1 -1
  156. package/dist/index18.js +168 -175
  157. package/dist/index18.js.map +1 -1
  158. package/dist/index19.js +173 -201
  159. package/dist/index19.js.map +1 -1
  160. package/dist/index20.js +203 -69
  161. package/dist/index20.js.map +1 -1
  162. package/dist/index21.js +70 -211
  163. package/dist/index21.js.map +1 -1
  164. package/dist/index22.js +207 -117
  165. package/dist/index22.js.map +1 -1
  166. package/dist/index23.js +123 -71
  167. package/dist/index23.js.map +1 -1
  168. package/dist/index24.js +74 -11
  169. package/dist/index24.js.map +1 -1
  170. package/dist/index25.js +13 -1134
  171. package/dist/index25.js.map +1 -1
  172. package/dist/index26.js +1120 -219
  173. package/dist/index26.js.map +1 -1
  174. package/dist/index27.js +202 -2506
  175. package/dist/index27.js.map +1 -1
  176. package/dist/index28.js +2527 -23
  177. package/dist/index28.js.map +1 -1
  178. package/dist/index29.js +32 -4
  179. package/dist/index29.js.map +1 -1
  180. package/dist/index3.js +11543 -267
  181. package/dist/index3.js.map +1 -1
  182. package/dist/index30.js +3 -1124
  183. package/dist/index30.js.map +1 -1
  184. package/dist/index31.js +1 -1
  185. package/dist/index32.js +7 -7
  186. package/dist/index34.js +1 -1
  187. package/dist/index37.js +1 -1
  188. package/dist/index38.js +21 -42
  189. package/dist/index38.js.map +1 -1
  190. package/dist/index4.js +272 -132
  191. package/dist/index4.js.map +1 -1
  192. package/dist/index5.js +138 -388
  193. package/dist/index5.js.map +1 -1
  194. package/dist/index6.js +386 -7
  195. package/dist/index6.js.map +1 -1
  196. package/dist/index7.js +13 -92
  197. package/dist/index7.js.map +1 -1
  198. package/dist/index8.js +92 -43
  199. package/dist/index8.js.map +1 -1
  200. package/dist/index9.js +42 -102
  201. package/dist/index9.js.map +1 -1
  202. package/dist/lib/components/Alert/Alert.d.ts.map +1 -1
  203. package/dist/lib/components/Avatar/Avatar.d.ts.map +1 -1
  204. package/dist/lib/components/Breadcrumb/Breadcrumb.d.ts.map +1 -1
  205. package/dist/lib/components/Button/Button.d.ts.map +1 -1
  206. package/dist/lib/components/Card/CardSkeleton.d.ts.map +1 -1
  207. package/dist/lib/components/Checkbox/Checkbox.d.ts.map +1 -1
  208. package/dist/lib/components/CheckboxGroup/CheckboxGroup.d.ts.map +1 -1
  209. package/dist/lib/components/Collapsible/Collapsible.d.ts.map +1 -1
  210. package/dist/lib/components/CompanySelector/CompanySelector.d.ts +4 -0
  211. package/dist/lib/components/CompanySelector/CompanySelector.d.ts.map +1 -0
  212. package/dist/lib/components/CompanySelector/index.d.ts +2 -0
  213. package/dist/lib/components/CompanySelector/index.d.ts.map +1 -0
  214. package/dist/lib/components/ConfirmHost/ConfirmHost.d.ts.map +1 -1
  215. package/dist/lib/components/CurrencyField/CurrencyField.d.ts.map +1 -1
  216. package/dist/lib/components/DangerZone/DangerZone.d.ts +3 -1
  217. package/dist/lib/components/DangerZone/DangerZone.d.ts.map +1 -1
  218. package/dist/lib/components/DataTable/CompactTableSkeleton.d.ts.map +1 -1
  219. package/dist/lib/components/DataTable/DataTable.d.ts.map +1 -1
  220. package/dist/lib/components/DataTable/cells/cells.d.ts.map +1 -1
  221. package/dist/lib/components/DataTable/components/DataTableSelectionBar.d.ts.map +1 -1
  222. package/dist/lib/components/DataTable/components/RowActions.d.ts.map +1 -1
  223. package/dist/lib/components/DataTable/hooks/useDataTable.d.ts.map +1 -1
  224. package/dist/lib/components/DataTable/store/store.d.ts.map +1 -1
  225. package/dist/lib/components/DataTable/types.d.ts.map +1 -1
  226. package/dist/lib/components/DatePicker/DatePicker.d.ts +2 -2
  227. package/dist/lib/components/DatePicker/DatePicker.d.ts.map +1 -1
  228. package/dist/lib/components/DetailField/DetailField.d.ts.map +1 -1
  229. package/dist/lib/components/DetailField/DetailHeader.d.ts.map +1 -1
  230. package/dist/lib/components/DetailField/DetailSectionSkeleton.d.ts.map +1 -1
  231. package/dist/lib/components/Dialog/Dialog.d.ts.map +1 -1
  232. package/dist/lib/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  233. package/dist/lib/components/DropdownMenu/types.d.ts.map +1 -1
  234. package/dist/lib/components/Editor/editor-ui/color-picker.d.ts.map +1 -1
  235. package/dist/lib/components/Editor/editor-ui/image-component.d.ts.map +1 -1
  236. package/dist/lib/components/Editor/nodes/autocomplete-node.d.ts.map +1 -1
  237. package/dist/lib/components/Editor/plugins/actions/max-length-plugin.d.ts.map +1 -1
  238. package/dist/lib/components/Editor/plugins/embeds/auto-embed-plugin.d.ts.map +1 -1
  239. package/dist/lib/components/Editor/plugins/embeds/youtube-plugin.d.ts.map +1 -1
  240. package/dist/lib/components/Editor/plugins/emojis-plugin.d.ts.map +1 -1
  241. package/dist/lib/components/Editor/plugins/floating-link-editor-plugin.d.ts.map +1 -1
  242. package/dist/lib/components/Editor/plugins/floating-text-format-plugin.d.ts.map +1 -1
  243. package/dist/lib/components/Editor/plugins/images-plugin.d.ts.map +1 -1
  244. package/dist/lib/components/Editor/plugins/keywords-plugin.d.ts.map +1 -1
  245. package/dist/lib/components/Editor/plugins/layout-plugin.d.ts.map +1 -1
  246. package/dist/lib/components/Editor/plugins/list-max-indent-level-plugin.d.ts.map +1 -1
  247. package/dist/lib/components/Editor/plugins/mentions-plugin.d.ts.map +1 -1
  248. package/dist/lib/components/Editor/plugins/picker/component-picker-option.d.ts.map +1 -1
  249. package/dist/lib/components/Editor/plugins/tab-focus-plugin.d.ts.map +1 -1
  250. package/dist/lib/components/Editor/plugins/table-plugin.d.ts.map +1 -1
  251. package/dist/lib/components/Editor/plugins/toolbar/clear-formatting-toolbar-plugin.d.ts.map +1 -1
  252. package/dist/lib/components/Editor/plugins/typing-pref-plugin.d.ts.map +1 -1
  253. package/dist/lib/components/Editor/shared/invariant.d.ts.map +1 -1
  254. package/dist/lib/components/Editor/shared/react-patches.d.ts.map +1 -1
  255. package/dist/lib/components/Editor/shared/react-test-utils.d.ts.map +1 -1
  256. package/dist/lib/components/Editor/shared/simple-diff-with-cursor.d.ts.map +1 -1
  257. package/dist/lib/components/Editor/shared/use-layout-effect.d.ts.map +1 -1
  258. package/dist/lib/components/Editor/transformers/markdown-table-transformer.d.ts.map +1 -1
  259. package/dist/lib/components/Editor/utils/collapsible.d.ts.map +1 -1
  260. package/dist/lib/components/Editor/utils/doc-serialization.d.ts.map +1 -1
  261. package/dist/lib/components/Editor/utils/emoji-list.d.ts.map +1 -1
  262. package/dist/lib/components/Editor/utils/get-dom-range-rect.d.ts.map +1 -1
  263. package/dist/lib/components/Editor/utils/get-selected-node.d.ts.map +1 -1
  264. package/dist/lib/components/Editor/utils/guard.d.ts.map +1 -1
  265. package/dist/lib/components/Editor/utils/set-floating-elem-position-for-link-editor.d.ts.map +1 -1
  266. package/dist/lib/components/Editor/utils/set-floating-elem-position.d.ts.map +1 -1
  267. package/dist/lib/components/Editor/utils/swipe.d.ts.map +1 -1
  268. package/dist/lib/components/Editor/utils/url.d.ts.map +1 -1
  269. package/dist/lib/components/Form/Form.d.ts.map +1 -1
  270. package/dist/lib/components/OTPField/OTPField.d.ts.map +1 -1
  271. package/dist/lib/components/PageContent/PageContent.d.ts.map +1 -1
  272. package/dist/lib/components/PageHeader/PageHeader.d.ts.map +1 -1
  273. package/dist/lib/components/PasswordField/PasswordField.d.ts.map +1 -1
  274. package/dist/lib/components/PermissionGate/PermissionGate.d.ts +15 -4
  275. package/dist/lib/components/PermissionGate/PermissionGate.d.ts.map +1 -1
  276. package/dist/lib/components/PermissionGate/index.d.ts +1 -1
  277. package/dist/lib/components/PermissionGate/index.d.ts.map +1 -1
  278. package/dist/lib/components/PersonSelector/PersonSelector.d.ts +4 -0
  279. package/dist/lib/components/PersonSelector/PersonSelector.d.ts.map +1 -0
  280. package/dist/lib/components/PersonSelector/index.d.ts +2 -0
  281. package/dist/lib/components/PersonSelector/index.d.ts.map +1 -0
  282. package/dist/lib/components/PhoneField/PhoneField.d.ts.map +1 -1
  283. package/dist/lib/components/RadioGroup/RadioGroup.d.ts.map +1 -1
  284. package/dist/lib/components/ScanBarcodeButton/ScanBarcodeButton.d.ts.map +1 -1
  285. package/dist/lib/components/Select/SelectFilter.d.ts.map +1 -1
  286. package/dist/lib/components/Select/components/MultiSelect/MultiSelect.d.ts.map +1 -1
  287. package/dist/lib/components/Select/components/MultiSelect/MultiSelectFilter.d.ts.map +1 -1
  288. package/dist/lib/components/Select/components/SingleSelect/SingleSelect.d.ts.map +1 -1
  289. package/dist/lib/components/Select/components/SingleSelect/SingleSelectFilter.d.ts.map +1 -1
  290. package/dist/lib/components/Select/hooks/useSelect.d.ts.map +1 -1
  291. package/dist/lib/components/Select/hooks/useSingleSelect.d.ts.map +1 -1
  292. package/dist/lib/components/Select/types.d.ts +1 -1
  293. package/dist/lib/components/Select/types.d.ts.map +1 -1
  294. package/dist/lib/components/Separator/Separator.d.ts.map +1 -1
  295. package/dist/lib/components/Sidebar/Sidebar.d.ts.map +1 -1
  296. package/dist/lib/components/Sonner/Sonner.d.ts.map +1 -1
  297. package/dist/lib/components/Sonner/toast.d.ts.map +1 -1
  298. package/dist/lib/components/StepProgressIndicator/StepProgressIndicator.d.ts.map +1 -1
  299. package/dist/lib/components/Switch/Switch.d.ts.map +1 -1
  300. package/dist/lib/components/Tabs/Tabs.d.ts +2 -0
  301. package/dist/lib/components/Tabs/Tabs.d.ts.map +1 -1
  302. package/dist/lib/components/Tabs/TabsSkeleton.d.ts.map +1 -1
  303. package/dist/lib/components/TextField/TextField.d.ts.map +1 -1
  304. package/dist/lib/components/ThemeToggle/ThemeToggle.d.ts.map +1 -1
  305. package/dist/lib/components/Toggle/Toggle.d.ts.map +1 -1
  306. package/dist/lib/components/Tooltip/Tooltip.d.ts.map +1 -1
  307. package/dist/lib/components/TreeView/TreeView.d.ts.map +1 -1
  308. package/dist/lib/components/Typography/Typography.d.ts.map +1 -1
  309. package/dist/lib/components/UploadFile/UploadFile.d.ts.map +1 -1
  310. package/dist/lib/components/index.d.ts +2 -0
  311. package/dist/lib/components/index.d.ts.map +1 -1
  312. package/dist/lib/config/index.d.ts.map +1 -1
  313. package/dist/lib/context/LayoutModeContext.d.ts.map +1 -1
  314. package/dist/lib/context/ThemeContext.d.ts.map +1 -1
  315. package/dist/lib/hooks/useBUCurrency.d.ts.map +1 -1
  316. package/dist/lib/hooks/useBUTimezone.d.ts.map +1 -1
  317. package/dist/lib/hooks/useBarcodeScanner.d.ts.map +1 -1
  318. package/dist/lib/hooks/useFormatters.d.ts.map +1 -1
  319. package/dist/lib/hooks/useSSE.d.ts.map +1 -1
  320. package/dist/lib/hooks/useTheme.d.ts.map +1 -1
  321. package/dist/lib/index.d.ts.map +1 -1
  322. package/dist/lib/selects/billing-cycle/BillingCycleFilter.d.ts +12 -0
  323. package/dist/lib/selects/billing-cycle/BillingCycleFilter.d.ts.map +1 -0
  324. package/dist/lib/selects/billing-cycle/BillingCycleSelector.d.ts +4 -0
  325. package/dist/lib/selects/billing-cycle/BillingCycleSelector.d.ts.map +1 -0
  326. package/dist/lib/selects/billing-cycle/index.d.ts +3 -0
  327. package/dist/lib/selects/billing-cycle/index.d.ts.map +1 -0
  328. package/dist/lib/selects/category/CategoryFilter.d.ts.map +1 -1
  329. package/dist/lib/selects/category/CategorySelector.d.ts.map +1 -1
  330. package/dist/lib/selects/cost-category/CostCategorySelector.d.ts.map +1 -1
  331. package/dist/lib/selects/country/CountryFilter.d.ts +12 -0
  332. package/dist/lib/selects/country/CountryFilter.d.ts.map +1 -0
  333. package/dist/lib/selects/country/CountrySelector.d.ts +4 -0
  334. package/dist/lib/selects/country/CountrySelector.d.ts.map +1 -0
  335. package/dist/lib/selects/country/index.d.ts +3 -0
  336. package/dist/lib/selects/country/index.d.ts.map +1 -0
  337. package/dist/lib/selects/feature-permission/FeaturePermissionFilter.d.ts +12 -0
  338. package/dist/lib/selects/feature-permission/FeaturePermissionFilter.d.ts.map +1 -0
  339. package/dist/lib/selects/feature-permission/FeaturePermissionSelector.d.ts +4 -0
  340. package/dist/lib/selects/feature-permission/FeaturePermissionSelector.d.ts.map +1 -0
  341. package/dist/lib/selects/feature-permission/index.d.ts +3 -0
  342. package/dist/lib/selects/feature-permission/index.d.ts.map +1 -0
  343. package/dist/lib/selects/icon/IconSelect.d.ts.map +1 -1
  344. package/dist/lib/selects/index.d.ts +9 -0
  345. package/dist/lib/selects/index.d.ts.map +1 -1
  346. package/dist/lib/selects/inventory-item/InventoryItemSelector.d.ts +2 -2
  347. package/dist/lib/selects/inventory-item/InventoryItemSelector.d.ts.map +1 -1
  348. package/dist/lib/selects/iso-country/ISOCountrySelect.d.ts +15 -0
  349. package/dist/lib/selects/iso-country/ISOCountrySelect.d.ts.map +1 -0
  350. package/dist/lib/selects/iso-country/index.d.ts +3 -0
  351. package/dist/lib/selects/iso-country/index.d.ts.map +1 -0
  352. package/dist/lib/selects/iso-country/iso-countries.d.ts +7 -0
  353. package/dist/lib/selects/iso-country/iso-countries.d.ts.map +1 -0
  354. package/dist/lib/selects/legal-entity/LegalEntityFilter.d.ts +12 -0
  355. package/dist/lib/selects/legal-entity/LegalEntityFilter.d.ts.map +1 -0
  356. package/dist/lib/selects/legal-entity/LegalEntitySelector.d.ts +4 -0
  357. package/dist/lib/selects/legal-entity/LegalEntitySelector.d.ts.map +1 -0
  358. package/dist/lib/selects/legal-entity/index.d.ts +3 -0
  359. package/dist/lib/selects/legal-entity/index.d.ts.map +1 -0
  360. package/dist/lib/selects/location/LocationSelector.d.ts.map +1 -1
  361. package/dist/lib/selects/purchase-order/PurchaseOrderSelector.d.ts.map +1 -1
  362. package/dist/lib/selects/purchase-order-item/PurchaseOrderItemSelector.d.ts.map +1 -1
  363. package/dist/lib/selects/role/RoleSelector.d.ts +4 -0
  364. package/dist/lib/selects/role/RoleSelector.d.ts.map +1 -0
  365. package/dist/lib/selects/role/index.d.ts +2 -0
  366. package/dist/lib/selects/role/index.d.ts.map +1 -0
  367. package/dist/lib/selects/serial/SerialSelector.d.ts.map +1 -1
  368. package/dist/lib/selects/site/SiteFilter.d.ts +12 -0
  369. package/dist/lib/selects/site/SiteFilter.d.ts.map +1 -0
  370. package/dist/lib/selects/site/SiteSelector.d.ts +4 -0
  371. package/dist/lib/selects/site/SiteSelector.d.ts.map +1 -0
  372. package/dist/lib/selects/site/index.d.ts +3 -0
  373. package/dist/lib/selects/site/index.d.ts.map +1 -0
  374. package/dist/lib/selects/site-group/SiteGroupFilter.d.ts +12 -0
  375. package/dist/lib/selects/site-group/SiteGroupFilter.d.ts.map +1 -0
  376. package/dist/lib/selects/site-group/SiteGroupSelector.d.ts +4 -0
  377. package/dist/lib/selects/site-group/SiteGroupSelector.d.ts.map +1 -0
  378. package/dist/lib/selects/site-group/index.d.ts +3 -0
  379. package/dist/lib/selects/site-group/index.d.ts.map +1 -0
  380. package/dist/lib/selects/supplier/SupplierSelector.d.ts.map +1 -1
  381. package/dist/lib/selects/supplier-item/SupplierItemFilter.d.ts.map +1 -1
  382. package/dist/lib/selects/supplier-item/SupplierItemSelector.d.ts.map +1 -1
  383. package/dist/lib/selects/tax-class/TaxClassSelector.d.ts +4 -0
  384. package/dist/lib/selects/tax-class/TaxClassSelector.d.ts.map +1 -0
  385. package/dist/lib/selects/tax-class/index.d.ts +2 -0
  386. package/dist/lib/selects/tax-class/index.d.ts.map +1 -0
  387. package/dist/lib/theme/index.d.ts.map +1 -1
  388. package/dist/lib/types/catalog-resolver.d.ts +50 -17
  389. package/dist/lib/types/catalog-resolver.d.ts.map +1 -1
  390. package/dist/lib/utils/axios.d.ts.map +1 -1
  391. package/dist/lib/utils/cn.d.ts +3 -0
  392. package/dist/lib/utils/cn.d.ts.map +1 -0
  393. package/dist/lib/utils/dagre.d.ts +2 -0
  394. package/dist/lib/utils/dagre.d.ts.map +1 -0
  395. package/dist/lib/utils/dnd-kit/core.d.ts +2 -0
  396. package/dist/lib/utils/dnd-kit/core.d.ts.map +1 -0
  397. package/dist/lib/utils/dnd-kit/sortable.d.ts +2 -0
  398. package/dist/lib/utils/dnd-kit/sortable.d.ts.map +1 -0
  399. package/dist/lib/utils/dnd-kit/utilities.d.ts +2 -0
  400. package/dist/lib/utils/dnd-kit/utilities.d.ts.map +1 -0
  401. package/dist/lib/utils/formHelpers.d.ts.map +1 -1
  402. package/dist/lib/utils/format.d.ts.map +1 -1
  403. package/dist/lib/utils/permission-deps.d.ts +9 -0
  404. package/dist/lib/utils/permission-deps.d.ts.map +1 -0
  405. package/dist/lib/utils/react-flow.d.ts +2 -0
  406. package/dist/lib/utils/react-flow.d.ts.map +1 -0
  407. package/dist/lib/utils/zod.d.ts +9 -0
  408. package/dist/lib/utils/zod.d.ts.map +1 -1
  409. package/dist/popover.js +1 -1
  410. package/dist/select2.js +1 -1
  411. package/dist/selects/billing-cycle.js +2 -0
  412. package/dist/selects/billing-cycle.js.map +1 -0
  413. package/dist/selects/cost-category.js +2 -2
  414. package/dist/selects/cost-category.js.map +1 -1
  415. package/dist/selects/country.js +2 -0
  416. package/dist/selects/country.js.map +1 -0
  417. package/dist/selects/feature-permission.js +2 -0
  418. package/dist/selects/feature-permission.js.map +1 -0
  419. package/dist/selects/iso-country.js +2 -0
  420. package/dist/selects/iso-country.js.map +1 -0
  421. package/dist/selects/legal-entity.js +2 -0
  422. package/dist/selects/legal-entity.js.map +1 -0
  423. package/dist/selects/purchase-order-item.js +1 -1
  424. package/dist/selects/purchase-order-item.js.map +1 -1
  425. package/dist/selects/role.js +2 -0
  426. package/dist/selects/role.js.map +1 -0
  427. package/dist/selects/site-group.js +2 -0
  428. package/dist/selects/site-group.js.map +1 -0
  429. package/dist/selects/site.js +2 -0
  430. package/dist/selects/site.js.map +1 -0
  431. package/dist/selects/tax-class.js +2 -0
  432. package/dist/selects/tax-class.js.map +1 -0
  433. package/dist/selects/tax-group.js +2 -2
  434. package/dist/selects/tax-group.js.map +1 -1
  435. package/dist/separator2.js +1 -1
  436. package/dist/sortable.esm.js +780 -0
  437. package/dist/sortable.esm.js.map +1 -0
  438. package/dist/theme/index.js.map +1 -1
  439. package/dist/toast.js +2 -26
  440. package/dist/toast.js.map +1 -1
  441. package/dist/tooltip2.js +1 -1
  442. package/dist/types/catalog-resolver.js +5 -2
  443. package/dist/types/catalog-resolver.js.map +1 -1
  444. package/dist/useBUTimezone.js.map +1 -1
  445. package/dist/useDataTable.js +58 -60
  446. package/dist/useDataTable.js.map +1 -1
  447. package/dist/useFormatters.js.map +1 -1
  448. package/dist/useTheme.js.map +1 -1
  449. package/dist/useTimer.js +2 -2
  450. package/dist/useTimer.js.map +1 -1
  451. package/dist/utilities.esm.js +333 -0
  452. package/dist/utilities.esm.js.map +1 -0
  453. package/dist/utils/axios.js +1 -1
  454. package/dist/utils/axios.js.map +1 -1
  455. package/dist/utils/cn.js +6 -0
  456. package/dist/utils/cn.js.map +1 -0
  457. package/dist/utils/currency.js +2 -2
  458. package/dist/utils/dagre.js +4 -0
  459. package/dist/utils/dagre.js.map +1 -0
  460. package/dist/utils/dnd-kit/core.js +2 -0
  461. package/dist/utils/dnd-kit/core.js.map +1 -0
  462. package/dist/utils/dnd-kit/sortable.js +2 -0
  463. package/dist/utils/dnd-kit/sortable.js.map +1 -0
  464. package/dist/utils/dnd-kit/utilities.js +2 -0
  465. package/dist/utils/dnd-kit/utilities.js.map +1 -0
  466. package/dist/utils/format.js +2 -2
  467. package/dist/utils/format.js.map +1 -1
  468. package/dist/utils/hotkeys.js +1 -1
  469. package/dist/utils/money.js +1 -1
  470. package/dist/utils/permission-deps.js +64 -0
  471. package/dist/utils/permission-deps.js.map +1 -0
  472. package/dist/utils/react-flow.js +2 -0
  473. package/dist/utils/react-flow.js.map +1 -0
  474. package/dist/utils/timezone.js +1 -1
  475. package/dist/utils/zod.js +11 -1
  476. package/dist/utils/zod.js.map +1 -1
  477. package/package.json +73 -1
@@ -1,10 +1,17 @@
1
- import { jsx } from 'react/jsx-runtime';
1
+ import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
2
2
  import { useContext, createContext } from 'react';
3
3
  import { c as cn } from './utils.js';
4
4
  import { L as LockKeyhole } from './lock-keyhole.js';
5
5
  import { L as Lock } from './lock.js';
6
6
 
7
- const ALLOW = Object.freeze({ granted: true, locked: false, reason: null, unlockPlans: [] });
7
+ const ALLOW = Object.freeze({
8
+ granted: true,
9
+ locked: false,
10
+ reason: null,
11
+ unlockPlans: [],
12
+ available: true,
13
+ featureName: null
14
+ });
8
15
  const ALLOW_GATE = () => ALLOW;
9
16
  const GATE_CONTEXT_KEY = /* @__PURE__ */ Symbol.for("@vritti/quantum-ui/PermissionGate");
10
17
  const registry = globalThis;
@@ -21,11 +28,48 @@ function usePermission(code) {
21
28
  const PermissionLockIcon = ({
22
29
  reason,
23
30
  className
24
- }) => reason === "BU" ? /* @__PURE__ */ jsx(LockKeyhole, { className: cn("text-destructive", className) }) : /* @__PURE__ */ jsx(Lock, { className: cn("text-warning", className) });
31
+ }) => reason === "SITE" ? /* @__PURE__ */ jsx(LockKeyhole, { className: cn("text-destructive", className) }) : /* @__PURE__ */ jsx(Lock, { className: cn("text-warning", className) });
25
32
  function lockedTip({ reason, unlockPlans }) {
26
- if (reason === "BU") return "Not enabled for this business unit";
33
+ if (reason === "SITE") return "Not enabled for this site";
27
34
  return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(", ")}` : "Not included in your plan";
28
35
  }
36
+ function lockMessages(result) {
37
+ const name = result.featureName;
38
+ if (!result.granted) {
39
+ return {
40
+ title: name ? `${name} is restricted` : "No access",
41
+ tip: name ? `You don't have permission to view ${name}.` : "You don't have permission to access this."
42
+ };
43
+ }
44
+ if (result.reason === "SITE") {
45
+ return {
46
+ title: name ? `${name} not enabled here` : "Not available here",
47
+ tip: name ? `${name} isn't enabled for this site.` : "Not enabled for this site."
48
+ };
49
+ }
50
+ if (result.unlockPlans.length > 0) {
51
+ const plans = result.unlockPlans.join(", ");
52
+ return {
53
+ title: name ? `Unlock ${name}` : "Upgrade required",
54
+ tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`
55
+ };
56
+ }
57
+ return {
58
+ title: name ? `Unlock ${name}` : "Upgrade required",
59
+ tip: name ? `${name} isn't included in your plan.` : "Not included in your plan."
60
+ };
61
+ }
62
+ const DefaultLockFallback = ({ result }) => /* @__PURE__ */ jsxs("div", { className: "flex flex-1 flex-col items-center justify-center gap-2 text-center", children: [
63
+ /* @__PURE__ */ jsx(PermissionLockIcon, { reason: result.reason, className: "size-10" }),
64
+ /* @__PURE__ */ jsx("p", { className: "max-w-sm text-sm text-muted-foreground", children: lockMessages(result).tip })
65
+ ] });
66
+ const PermissionGate = ({ permission, children, fallback }) => {
67
+ const result = usePermission(permission);
68
+ if (result.available) return /* @__PURE__ */ jsx(Fragment, { children });
69
+ if (fallback !== void 0)
70
+ return /* @__PURE__ */ jsx(Fragment, { children: typeof fallback === "function" ? fallback({ ...result, ...lockMessages(result) }) : fallback });
71
+ return /* @__PURE__ */ jsx(DefaultLockFallback, { result });
72
+ };
29
73
 
30
- export { PermissionGateProvider as P, PermissionLockIcon as a, usePermissionGate as b, lockedTip as l, usePermission as u };
74
+ export { PermissionGate as P, PermissionGateProvider as a, PermissionLockIcon as b, usePermissionGate as c, lockedTip as l, usePermission as u };
31
75
  //# sourceMappingURL=PermissionGate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PermissionGate.js","sources":["../lib/components/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import { Lock, LockKeyhole } from 'lucide-react';\nimport type React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../../shadcn/utils';\n\n// Why a granted permission is locked: the org's plan doesn't unlock it, or this business unit restricts it\nexport type PermissionLockReason = 'PLAN' | 'BU';\n\n// Result of gating one permission code (\"feature.permission\", e.g. \"uom.dim.add\")\nexport interface PermissionGateResult {\n // The user's role grants it — gated controls render nothing when false\n granted: boolean;\n // Granted but plan/BU-locked — gated controls render disabled with an upsell when true\n locked: boolean;\n // Why it's locked — drives the lock symbol (PLAN = warning lock, BU = red keyhole lock)\n reason: PermissionLockReason | null;\n // Plan names that would unlock it — the upsell tooltip text (PLAN locks only)\n unlockPlans: string[];\n}\n\n// The contract an app installs: a pure, synchronous resolver over already-loaded permission state\nexport type PermissionGate = (code: string) => PermissionGateResult;\n\n// Everything-allowed result — the no-op behavior when no permission system is installed\nconst ALLOW: PermissionGateResult = Object.freeze({ granted: true, locked: false, reason: null, unlockPlans: [] });\n\nconst ALLOW_GATE: PermissionGate = () => ALLOW;\n\n// null = no permission system installed → `permission` props on components are inert.\n// The context is registered on globalThis so every bundled copy of this module (module-federation host +\n// remotes each inline their own chunk) resolves to the SAME context instance — otherwise a remote's gated\n// components would never see the provider the host mounts.\nconst GATE_CONTEXT_KEY = Symbol.for('@vritti/quantum-ui/PermissionGate');\ntype GateRegistry = { [GATE_CONTEXT_KEY]?: React.Context<PermissionGate | null> };\nconst registry = globalThis as GateRegistry;\nregistry[GATE_CONTEXT_KEY] ??= createContext<PermissionGate | null>(null);\nconst PermissionGateContext = registry[GATE_CONTEXT_KEY];\n\n// Mount once near the app root with the app's gate implementation (e.g. over the SSE permission payload)\nexport const PermissionGateProvider = PermissionGateContext.Provider;\n\n// The raw gate for mapping over collections; ALLOW-everything when no provider is mounted\nexport function usePermissionGate(): PermissionGate {\n return useContext(PermissionGateContext) ?? ALLOW_GATE;\n}\n\n// Total: no provider / no code resolves to ALLOW, so callers never branch on null\nexport function usePermission(code?: string): PermissionGateResult {\n const gate = useContext(PermissionGateContext);\n return code && gate ? gate(code) : ALLOW;\n}\n\n// The lock symbol for a locked control — plan locks show a warning lock, BU locks a red keyhole lock\nexport const PermissionLockIcon: React.FC<{ reason: PermissionLockReason | null; className?: string }> = ({\n reason,\n className,\n}) =>\n reason === 'BU' ? (\n <LockKeyhole className={cn('text-destructive', className)} />\n ) : (\n <Lock className={cn('text-warning', className)} />\n );\n\n// Shared tooltip copy for locked controls — upsell for plan locks, restriction notice for BU locks\nexport function lockedTip({ reason, unlockPlans }: Pick<PermissionGateResult, 'reason' | 'unlockPlans'>): string {\n if (reason === 'BU') return 'Not enabled for this business unit';\n return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(', ')}` : 'Not included in your plan';\n}\n"],"names":[],"mappings":";;;;;;AAwBA,MAAM,KAAA,GAA8B,MAAA,CAAO,MAAA,CAAO,EAAE,OAAA,EAAS,IAAA,EAAM,MAAA,EAAQ,KAAA,EAAO,MAAA,EAAQ,IAAA,EAAM,WAAA,EAAa,IAAI,CAAA;AAEjH,MAAM,aAA6B,MAAM,KAAA;AAMzC,MAAM,gBAAA,mBAAmB,MAAA,CAAO,GAAA,CAAI,mCAAmC,CAAA;AAEvE,MAAM,QAAA,GAAW,UAAA;AACjB,QAAA,CAAS,gBAAgB,CAAA,KAAM,aAAA,CAAqC,IAAI,CAAA;AACxE,MAAM,qBAAA,GAAwB,SAAS,gBAAgB,CAAA;AAGhD,MAAM,yBAAyB,qBAAA,CAAsB;AAGrD,SAAS,iBAAA,GAAoC;AAClD,EAAA,OAAO,UAAA,CAAW,qBAAqB,CAAA,IAAK,UAAA;AAC9C;AAGO,SAAS,cAAc,IAAA,EAAqC;AACjE,EAAA,MAAM,IAAA,GAAO,WAAW,qBAAqB,CAAA;AAC7C,EAAA,OAAO,IAAA,IAAQ,IAAA,GAAO,IAAA,CAAK,IAAI,CAAA,GAAI,KAAA;AACrC;AAGO,MAAM,qBAA4F,CAAC;AAAA,EACxG,MAAA;AAAA,EACA;AACF,CAAA,KACE,WAAW,IAAA,mBACT,GAAA,CAAC,WAAA,EAAA,EAAY,SAAA,EAAW,GAAG,kBAAA,EAAoB,SAAS,CAAA,EAAG,CAAA,uBAE1D,IAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,cAAA,EAAgB,SAAS,CAAA,EAAG;AAI7C,SAAS,SAAA,CAAU,EAAE,MAAA,EAAQ,WAAA,EAAY,EAAiE;AAC/G,EAAA,IAAI,MAAA,KAAW,MAAM,OAAO,oCAAA;AAC5B,EAAA,OAAO,WAAA,CAAY,SAAS,CAAA,GAAI,CAAA,aAAA,EAAgB,YAAY,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA,GAAK,2BAAA;AAC7E;;;;"}
1
+ {"version":3,"file":"PermissionGate.js","sources":["../lib/components/PermissionGate/PermissionGate.tsx"],"sourcesContent":["import { Lock, LockKeyhole } from 'lucide-react';\nimport type React from 'react';\nimport { createContext, useContext } from 'react';\nimport { cn } from '../../../shadcn/utils';\n\nexport type PermissionLockReason = 'PLAN' | 'SITE';\n\nexport interface PermissionGateResult {\n granted: boolean;\n locked: boolean;\n reason: PermissionLockReason | null;\n unlockPlans: string[];\n available: boolean;\n featureName: string | null;\n}\n\nexport type PermissionGateFn = (code: string) => PermissionGateResult;\n\nconst ALLOW: PermissionGateResult = Object.freeze({\n granted: true,\n locked: false,\n reason: null,\n unlockPlans: [],\n available: true,\n featureName: null,\n});\n\nconst ALLOW_GATE: PermissionGateFn = () => ALLOW;\n\nconst GATE_CONTEXT_KEY = Symbol.for('@vritti/quantum-ui/PermissionGate');\ntype GateRegistry = { [GATE_CONTEXT_KEY]?: React.Context<PermissionGateFn | null> };\nconst registry = globalThis as GateRegistry;\nregistry[GATE_CONTEXT_KEY] ??= createContext<PermissionGateFn | null>(null);\nconst PermissionGateContext = registry[GATE_CONTEXT_KEY];\n\nexport const PermissionGateProvider = PermissionGateContext.Provider;\n\n// The raw gate for mapping over collections; ALLOW-everything when no provider is mounted\nexport function usePermissionGate(): PermissionGateFn {\n return useContext(PermissionGateContext) ?? ALLOW_GATE;\n}\n\n// Total: no provider / no code resolves to ALLOW, so callers never branch on null\nexport function usePermission(code?: string): PermissionGateResult {\n const gate = useContext(PermissionGateContext);\n return code && gate ? gate(code) : ALLOW;\n}\n\n// The lock symbol for a locked control — plan locks show a warning lock, BU locks a red keyhole lock\nexport const PermissionLockIcon: React.FC<{ reason: PermissionLockReason | null; className?: string }> = ({\n reason,\n className,\n}) =>\n reason === 'SITE' ? (\n <LockKeyhole className={cn('text-destructive', className)} />\n ) : (\n <Lock className={cn('text-warning', className)} />\n );\n\n// Shared tooltip copy for locked controls — upsell for plan locks, restriction notice for BU locks\nexport function lockedTip({ reason, unlockPlans }: Pick<PermissionGateResult, 'reason' | 'unlockPlans'>): string {\n if (reason === 'SITE') return 'Not enabled for this site';\n return unlockPlans.length > 0 ? `Available in ${unlockPlans.join(', ')}` : 'Not included in your plan';\n}\n\n// Resolves a blocked control's heading + description, keyed off the resolved feature name when known\nfunction lockMessages(result: Pick<PermissionGateResult, 'granted' | 'reason' | 'unlockPlans' | 'featureName'>): {\n title: string;\n tip: string;\n} {\n const name = result.featureName;\n if (!result.granted) {\n return {\n title: name ? `${name} is restricted` : 'No access',\n tip: name ? `You don't have permission to view ${name}.` : \"You don't have permission to access this.\",\n };\n }\n if (result.reason === 'SITE') {\n return {\n title: name ? `${name} not enabled here` : 'Not available here',\n tip: name ? `${name} isn't enabled for this site.` : 'Not enabled for this site.',\n };\n }\n if (result.unlockPlans.length > 0) {\n const plans = result.unlockPlans.join(', ');\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} is available on ${plans}.` : `Available in ${plans}.`,\n };\n }\n return {\n title: name ? `Unlock ${name}` : 'Upgrade required',\n tip: name ? `${name} isn't included in your plan.` : 'Not included in your plan.',\n };\n}\n\nexport interface PermissionGateProps {\n permission?: string;\n children: React.ReactNode;\n fallback?: React.ReactNode | ((result: PermissionGateResult & { title: string; tip: string }) => React.ReactNode);\n}\n\n// Default fallback — a centered lock panel with the feature-specific restriction message\nconst DefaultLockFallback: React.FC<{ result: PermissionGateResult }> = ({ result }) => (\n <div className=\"flex flex-1 flex-col items-center justify-center gap-2 text-center\">\n <PermissionLockIcon reason={result.reason} className=\"size-10\" />\n <p className=\"max-w-sm text-sm text-muted-foreground\">{lockMessages(result).tip}</p>\n </div>\n);\n\n// Gates a subtree by permission code: children mount only when granted AND unlocked, else renders `fallback`\nexport const PermissionGate: React.FC<PermissionGateProps> = ({ permission, children, fallback }) => {\n const result = usePermission(permission);\n if (result.available) return <>{children}</>;\n if (fallback !== undefined)\n return <>{typeof fallback === 'function' ? fallback({ ...result, ...lockMessages(result) }) : fallback}</>;\n return <DefaultLockFallback result={result} />;\n};\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { S as Select } from './Select.js';
4
+
5
+ const PersonSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
6
+ Select,
7
+ {
8
+ ref,
9
+ label: "Person",
10
+ placeholder: "Search people by name",
11
+ searchable: true,
12
+ optionsEndpoint: "commerce-api/select-api/people",
13
+ fieldKeys: { valueKey: "id", labelKey: "displayName" },
14
+ ...props
15
+ }
16
+ ));
17
+ PersonSelector.displayName = "PersonSelector";
18
+
19
+ export { PersonSelector as P };
20
+ //# sourceMappingURL=PersonSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PersonSelector.js","sources":["../lib/components/PersonSelector/PersonSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../Select/Select';\n\nexport type PersonSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for person selection with async search\nexport const PersonSelector = forwardRef<HTMLButtonElement, PersonSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Person\"\n placeholder=\"Search people by name\"\n searchable\n optionsEndpoint=\"commerce-api/select-api/people\"\n fieldKeys={{ valueKey: 'id', labelKey: 'displayName' }}\n {...props}\n />\n));\nPersonSelector.displayName = 'PersonSelector';\n"],"names":[],"mappings":";;;;AAMO,MAAM,cAAA,GAAiB,UAAA,CAAmD,CAAC,KAAA,EAAO,GAAA,qBACvF,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,QAAA;AAAA,IACN,WAAA,EAAY,uBAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,gCAAA;AAAA,IAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,aAAA,EAAc;AAAA,IACpD,GAAG;AAAA;AACN,CACD;AACD,cAAA,CAAe,WAAA,GAAc,gBAAA;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"PhoneField.js","sources":["../lib/components/PhoneField/PhoneField.tsx"],"sourcesContent":["import React from 'react';\nimport PhoneInputBase, { type Country, type Value } from 'react-phone-number-input';\nimport 'react-phone-number-input/style.css';\nimport { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface PhoneFieldProps {\n /**\n * Field name for react-hook-form integration (used by Form component)\n */\n name?: string;\n\n /**\n * Phone number value in E.164 format (e.g., +14155552671)\n */\n value?: Value;\n\n /**\n * Callback when phone number changes\n */\n onChange?: (value: Value | undefined) => void;\n\n /**\n * Callback when country changes\n */\n onCountryChange?: (country: Country | undefined) => void;\n\n /**\n * Default country code (e.g., 'US', 'IN', 'GB')\n */\n defaultCountry?: Country;\n\n /**\n * Label for the field\n */\n label?: string;\n\n /**\n * Helper text or description to display below the field\n */\n description?: React.ReactNode;\n\n /**\n * Error message to display below the field\n */\n error?: string;\n\n /**\n * Whether the field is disabled\n */\n disabled?: boolean;\n\n /**\n * CSS class name for styling\n */\n className?: string;\n\n /**\n * Placeholder text for the input\n */\n placeholder?: string;\n}\n\n// PhoneField component - specialized input for international phone numbers with Field system\nexport const PhoneField = React.forwardRef<HTMLInputElement, PhoneFieldProps>(\n (\n {\n name: _name,\n value,\n onChange = () => {},\n onCountryChange,\n defaultCountry = 'IN',\n label,\n description,\n error,\n disabled,\n className,\n placeholder,\n },\n _ref,\n ) => {\n const fieldId = React.useId();\n const hasError = !!error;\n const phoneInputStyle = {\n '--PhoneInputCountryFlag-backgroundColor--loading': 'transparent',\n '--PhoneInputCountryFlag-borderColor': 'transparent',\n '--PhoneInputCountryFlag-borderWidth': 0,\n } as React.CSSProperties;\n\n return (\n <Field data-disabled={disabled}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <FieldContent>\n <PhoneInputBase\n international\n defaultCountry={defaultCountry}\n value={value}\n onChange={onChange}\n onCountryChange={onCountryChange}\n disabled={disabled}\n placeholder={placeholder}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n style={phoneInputStyle}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent dark:bg-input/30 px-3 py-1 text-sm shadow-xs transition-[color,box-shadow]',\n 'placeholder:text-muted-foreground',\n 'focus-within:outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[1px]',\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n hasError && 'border-destructive focus-within:ring-destructive/20 dark:focus-within:ring-destructive/40',\n className,\n )}\n numberInputProps={{\n className: cn('flex-1 bg-transparent outline-none', 'placeholder:text-muted-foreground'),\n }}\n countrySelectProps={{\n className: cn('mr-2 bg-transparent border-none outline-none', 'focus:ring-0'),\n }}\n />\n\n {description && <FieldDescription id={`${fieldId}-description`}>{description}</FieldDescription>}\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </FieldContent>\n </Field>\n );\n },\n);\n\nPhoneField.displayName = 'PhoneField';\n"],"names":["React"],"mappings":";;;;;;AAgEO,MAAM,aAAaA,cAAA,CAAM,UAAA;AAAA,EAC9B,CACE;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,KAAA;AAAA,IACA,WAAW,MAAM;AAAA,IAAC,CAAA;AAAA,IAClB,eAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,IAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAUA,eAAM,KAAA,EAAM;AAC5B,IAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA;AACnB,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,kDAAA,EAAoD,aAAA;AAAA,MACpD,qCAAA,EAAuC,aAAA;AAAA,MACvC,qCAAA,EAAuC;AAAA,KACzC;AAEA,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,eAAA,EAAe,QAAA,EACnB,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAS,GAAA,CAAC,cAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,2BAE5B,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,IAAA;AAAA,YACb,cAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,eAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA;AAAA,YACA,oBAAkB,WAAA,IAAe,KAAA,GAAQ,GAAG,OAAO,CAAA,aAAA,EAAgB,OAAO,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,YACrF,cAAA,EAAc,QAAA;AAAA,YACd,KAAA,EAAO,eAAA;AAAA,YACP,SAAA,EAAW,EAAA;AAAA,cACT,0IAAA;AAAA,cACA,mCAAA;AAAA,cACA,sGAAA;AAAA,cACA,QAAA,IAAY,mDAAA;AAAA,cACZ,QAAA,IAAY,2FAAA;AAAA,cACZ;AAAA,aACF;AAAA,YACA,gBAAA,EAAkB;AAAA,cAChB,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,mCAAmC;AAAA,aACzF;AAAA,YACA,kBAAA,EAAoB;AAAA,cAClB,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,cAAc;AAAA;AAC9E;AAAA,SACF;AAAA,QAEC,+BAAe,GAAA,CAAC,gBAAA,EAAA,EAAiB,IAAI,CAAA,EAAG,OAAO,gBAAiB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,QAE5E,yBAAS,GAAA,CAAC,UAAA,EAAA,EAAW,IAAI,CAAA,EAAG,OAAO,UAAW,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
1
+ {"version":3,"file":"PhoneField.js","sources":["../lib/components/PhoneField/PhoneField.tsx"],"sourcesContent":["import React from 'react';\nimport PhoneInputBase, { type Country, type Value } from 'react-phone-number-input';\nimport 'react-phone-number-input/style.css';\nimport { Field, FieldContent, FieldDescription, FieldError, FieldLabel } from '../../../shadcn/shadcnField';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface PhoneFieldProps {\n name?: string;\n\n value?: Value;\n\n onChange?: (value: Value | undefined) => void;\n\n onCountryChange?: (country: Country | undefined) => void;\n\n defaultCountry?: Country;\n\n label?: string;\n\n description?: React.ReactNode;\n\n error?: string;\n\n disabled?: boolean;\n\n className?: string;\n\n placeholder?: string;\n}\n\n// PhoneField component - specialized input for international phone numbers with Field system\nexport const PhoneField = React.forwardRef<HTMLInputElement, PhoneFieldProps>(\n (\n {\n name: _name,\n value,\n onChange = () => {},\n onCountryChange,\n defaultCountry = 'IN',\n label,\n description,\n error,\n disabled,\n className,\n placeholder,\n },\n _ref,\n ) => {\n const fieldId = React.useId();\n const hasError = !!error;\n const phoneInputStyle = {\n '--PhoneInputCountryFlag-backgroundColor--loading': 'transparent',\n '--PhoneInputCountryFlag-borderColor': 'transparent',\n '--PhoneInputCountryFlag-borderWidth': 0,\n } as React.CSSProperties;\n\n return (\n <Field data-disabled={disabled}>\n {label && <FieldLabel>{label}</FieldLabel>}\n\n <FieldContent>\n <PhoneInputBase\n international\n defaultCountry={defaultCountry}\n value={value}\n onChange={onChange}\n onCountryChange={onCountryChange}\n disabled={disabled}\n placeholder={placeholder}\n aria-describedby={description || error ? `${fieldId}-description ${fieldId}-error` : undefined}\n aria-invalid={hasError}\n style={phoneInputStyle}\n className={cn(\n 'flex h-9 w-full rounded-md border border-input bg-transparent dark:bg-input/30 px-3 py-1 text-sm shadow-xs transition-[color,box-shadow]',\n 'placeholder:text-muted-foreground',\n 'focus-within:outline-none focus-within:border-ring focus-within:ring-ring/50 focus-within:ring-[1px]',\n disabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n hasError && 'border-destructive focus-within:ring-destructive/20 dark:focus-within:ring-destructive/40',\n className,\n )}\n numberInputProps={{\n className: cn('flex-1 bg-transparent outline-none', 'placeholder:text-muted-foreground'),\n }}\n countrySelectProps={{\n className: cn('mr-2 bg-transparent border-none outline-none', 'focus:ring-0'),\n }}\n />\n\n {description && <FieldDescription id={`${fieldId}-description`}>{description}</FieldDescription>}\n\n {error && <FieldError id={`${fieldId}-error`}>{error}</FieldError>}\n </FieldContent>\n </Field>\n );\n },\n);\n\nPhoneField.displayName = 'PhoneField';\n"],"names":["React"],"mappings":";;;;;;AA+BO,MAAM,aAAaA,cAAA,CAAM,UAAA;AAAA,EAC9B,CACE;AAAA,IACE,IAAA,EAAM,KAAA;AAAA,IACN,KAAA;AAAA,IACA,WAAW,MAAM;AAAA,IAAC,CAAA;AAAA,IAClB,eAAA;AAAA,IACA,cAAA,GAAiB,IAAA;AAAA,IACjB,KAAA;AAAA,IACA,WAAA;AAAA,IACA,KAAA;AAAA,IACA,QAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,KAEF,IAAA,KACG;AACH,IAAA,MAAM,OAAA,GAAUA,eAAM,KAAA,EAAM;AAC5B,IAAA,MAAM,QAAA,GAAW,CAAC,CAAC,KAAA;AACnB,IAAA,MAAM,eAAA,GAAkB;AAAA,MACtB,kDAAA,EAAoD,aAAA;AAAA,MACpD,qCAAA,EAAuC,aAAA;AAAA,MACvC,qCAAA,EAAuC;AAAA,KACzC;AAEA,IAAA,uBACE,IAAA,CAAC,KAAA,EAAA,EAAM,eAAA,EAAe,QAAA,EACnB,QAAA,EAAA;AAAA,MAAA,KAAA,oBAAS,GAAA,CAAC,cAAY,QAAA,EAAA,KAAA,EAAM,CAAA;AAAA,2BAE5B,YAAA,EAAA,EACC,QAAA,EAAA;AAAA,wBAAA,GAAA;AAAA,UAAC,cAAA;AAAA,UAAA;AAAA,YACC,aAAA,EAAa,IAAA;AAAA,YACb,cAAA;AAAA,YACA,KAAA;AAAA,YACA,QAAA;AAAA,YACA,eAAA;AAAA,YACA,QAAA;AAAA,YACA,WAAA;AAAA,YACA,oBAAkB,WAAA,IAAe,KAAA,GAAQ,GAAG,OAAO,CAAA,aAAA,EAAgB,OAAO,CAAA,MAAA,CAAA,GAAW,MAAA;AAAA,YACrF,cAAA,EAAc,QAAA;AAAA,YACd,KAAA,EAAO,eAAA;AAAA,YACP,SAAA,EAAW,EAAA;AAAA,cACT,0IAAA;AAAA,cACA,mCAAA;AAAA,cACA,sGAAA;AAAA,cACA,QAAA,IAAY,mDAAA;AAAA,cACZ,QAAA,IAAY,2FAAA;AAAA,cACZ;AAAA,aACF;AAAA,YACA,gBAAA,EAAkB;AAAA,cAChB,SAAA,EAAW,EAAA,CAAG,oCAAA,EAAsC,mCAAmC;AAAA,aACzF;AAAA,YACA,kBAAA,EAAoB;AAAA,cAClB,SAAA,EAAW,EAAA,CAAG,8CAAA,EAAgD,cAAc;AAAA;AAC9E;AAAA,SACF;AAAA,QAEC,+BAAe,GAAA,CAAC,gBAAA,EAAA,EAAiB,IAAI,CAAA,EAAG,OAAO,gBAAiB,QAAA,EAAA,WAAA,EAAY,CAAA;AAAA,QAE5E,yBAAS,GAAA,CAAC,UAAA,EAAA,EAAW,IAAI,CAAA,EAAG,OAAO,UAAW,QAAA,EAAA,KAAA,EAAM;AAAA,OAAA,EACvD;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ;AACF;AAEA,UAAA,CAAW,WAAA,GAAc,YAAA;;;;"}
@@ -10,7 +10,7 @@ const PurchaseOrderFilter = Object.assign(
10
10
  ref,
11
11
  name: "purchaseOrderId",
12
12
  label: "Purchase Order",
13
- optionsEndpoint: "commerce-api/purchase-orders/select",
13
+ optionsEndpoint: "commerce-api/select-api/purchase-orders",
14
14
  fieldKeys: { valueKey: "id", labelKey: "poNumber" },
15
15
  ...props
16
16
  }
@@ -32,7 +32,7 @@ const PurchaseOrderSelector = forwardRef(
32
32
  placeholder: "Select purchase order",
33
33
  searchable: true,
34
34
  clearable: true,
35
- optionsEndpoint: "commerce-api/purchase-orders/select",
35
+ optionsEndpoint: "commerce-api/select-api/purchase-orders",
36
36
  ...props,
37
37
  fieldKeys: { ...DEFAULT_FIELD_KEYS, ...fieldKeys }
38
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PurchaseOrderSelector.js","sources":["../lib/selects/purchase-order/PurchaseOrderFilter.tsx","../lib/selects/purchase-order/PurchaseOrderSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type PurchaseOrderFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for purchase order filtering with async search\nexport const PurchaseOrderFilter = Object.assign(\n forwardRef<HTMLButtonElement, PurchaseOrderFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"purchaseOrderId\"\n label=\"Purchase Order\"\n optionsEndpoint=\"commerce-api/purchase-orders/select\"\n fieldKeys={{ valueKey: 'id', labelKey: 'poNumber' }}\n {...props}\n />\n )),\n { displayName: 'PurchaseOrderFilter', defaultLabel: 'Purchase Order', defaultName: 'purchaseOrderId' },\n);\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type PurchaseOrderSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for purchase order selection with async search. Default `additionalKeys`\n// expose the PO's currency + locked-rate fields so consumers (e.g. GR creation dialog) can decide\n// whether to ask the user for an exchange rate at GR creation time.\nconst DEFAULT_FIELD_KEYS = {\n valueKey: 'id',\n labelKey: 'poNumber',\n additionalKeys: 'currencyCode,exchangeRate,exchangeRateType',\n} as const;\n\nexport const PurchaseOrderSelector = forwardRef<HTMLButtonElement, PurchaseOrderSelectorProps>(\n ({ fieldKeys, ...props }, ref) => (\n <Select\n ref={ref}\n label=\"Purchase Order\"\n placeholder=\"Select purchase order\"\n searchable\n clearable\n optionsEndpoint=\"commerce-api/purchase-orders/select\"\n {...props}\n fieldKeys={{ ...DEFAULT_FIELD_KEYS, ...fieldKeys }}\n />\n ),\n);\nPurchaseOrderSelector.displayName = 'PurchaseOrderSelector';\n"],"names":[],"mappings":";;;;;AAMO,MAAM,sBAAsB,MAAA,CAAO,MAAA;AAAA,EACxC,UAAA,CAAwD,CAAC,KAAA,EAAO,GAAA,qBAC9D,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,iBAAA;AAAA,MACL,KAAA,EAAM,gBAAA;AAAA,MACN,eAAA,EAAgB,qCAAA;AAAA,MAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,UAAA,EAAW;AAAA,MACjD,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,qBAAA,EAAuB,YAAA,EAAc,gBAAA,EAAkB,aAAa,iBAAA;AACrF;;ACVA,MAAM,kBAAA,GAAqB;AAAA,EACzB,QAAA,EAAU,IAAA;AAAA,EACV,QAAA,EAAU,UAAA;AAAA,EACV,cAAA,EAAgB;AAClB,CAAA;AAEO,MAAM,qBAAA,GAAwB,UAAA;AAAA,EACnC,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAS,IAAA;AAAA,MACT,eAAA,EAAgB,qCAAA;AAAA,MACf,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW,EAAE,GAAG,kBAAA,EAAoB,GAAG,SAAA;AAAU;AAAA;AAGvD;AACA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;;;;"}
1
+ {"version":3,"file":"PurchaseOrderSelector.js","sources":["../lib/selects/purchase-order/PurchaseOrderFilter.tsx","../lib/selects/purchase-order/PurchaseOrderSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type PurchaseOrderFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for purchase order filtering with async search\nexport const PurchaseOrderFilter = Object.assign(\n forwardRef<HTMLButtonElement, PurchaseOrderFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"purchaseOrderId\"\n label=\"Purchase Order\"\n optionsEndpoint=\"commerce-api/select-api/purchase-orders\"\n fieldKeys={{ valueKey: 'id', labelKey: 'poNumber' }}\n {...props}\n />\n )),\n { displayName: 'PurchaseOrderFilter', defaultLabel: 'Purchase Order', defaultName: 'purchaseOrderId' },\n);\n","import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type PurchaseOrderSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\nconst DEFAULT_FIELD_KEYS = {\n valueKey: 'id',\n labelKey: 'poNumber',\n additionalKeys: 'currencyCode,exchangeRate,exchangeRateType',\n} as const;\n\nexport const PurchaseOrderSelector = forwardRef<HTMLButtonElement, PurchaseOrderSelectorProps>(\n ({ fieldKeys, ...props }, ref) => (\n <Select\n ref={ref}\n label=\"Purchase Order\"\n placeholder=\"Select purchase order\"\n searchable\n clearable\n optionsEndpoint=\"commerce-api/select-api/purchase-orders\"\n {...props}\n fieldKeys={{ ...DEFAULT_FIELD_KEYS, ...fieldKeys }}\n />\n ),\n);\nPurchaseOrderSelector.displayName = 'PurchaseOrderSelector';\n"],"names":[],"mappings":";;;;;AAMO,MAAM,sBAAsB,MAAA,CAAO,MAAA;AAAA,EACxC,UAAA,CAAwD,CAAC,KAAA,EAAO,GAAA,qBAC9D,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,iBAAA;AAAA,MACL,KAAA,EAAM,gBAAA;AAAA,MACN,eAAA,EAAgB,yCAAA;AAAA,MAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,UAAA,EAAW;AAAA,MACjD,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,qBAAA,EAAuB,YAAA,EAAc,gBAAA,EAAkB,aAAa,iBAAA;AACrF;;ACbA,MAAM,kBAAA,GAAqB;AAAA,EACzB,QAAA,EAAU,IAAA;AAAA,EACV,QAAA,EAAU,UAAA;AAAA,EACV,cAAA,EAAgB;AAClB,CAAA;AAEO,MAAM,qBAAA,GAAwB,UAAA;AAAA,EACnC,CAAC,EAAE,SAAA,EAAW,GAAG,KAAA,IAAS,GAAA,qBACxB,GAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,KAAA,EAAM,gBAAA;AAAA,MACN,WAAA,EAAY,uBAAA;AAAA,MACZ,UAAA,EAAU,IAAA;AAAA,MACV,SAAA,EAAS,IAAA;AAAA,MACT,eAAA,EAAgB,yCAAA;AAAA,MACf,GAAG,KAAA;AAAA,MACJ,SAAA,EAAW,EAAE,GAAG,kBAAA,EAAoB,GAAG,SAAA;AAAU;AAAA;AAGvD;AACA,qBAAA,CAAsB,WAAA,GAAc,uBAAA;;;;"}
@@ -13,7 +13,7 @@ const QuantFilter = Object.assign(
13
13
  name: "quantId",
14
14
  label: "Quant",
15
15
  placeholder: "Select quant",
16
- optionsEndpoint: "commerce-api/inventory-item-quants/select",
16
+ optionsEndpoint: "commerce-api/select-api/inventory-item-quants",
17
17
  ...props
18
18
  }
19
19
  )),
@@ -62,7 +62,7 @@ const QuantSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
62
62
  label: "Quant",
63
63
  placeholder: "Select quant",
64
64
  searchable: true,
65
- optionsEndpoint: "commerce-api/inventory-item-quants/select",
65
+ optionsEndpoint: "commerce-api/select-api/inventory-item-quants",
66
66
  renderOption: (p) => /* @__PURE__ */ jsx(QuantOptionRow, { ...p }),
67
67
  ...props
68
68
  }
@@ -1 +1 @@
1
- {"version":3,"file":"QuantSelector.js","sources":["../lib/selects/quant/QuantFilter.tsx","../lib/selects/quant/QuantSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type QuantFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for quant filtering; pass params={{ inventoryItemId }} to scope to a specific item\nexport const QuantFilter = Object.assign(\n forwardRef<HTMLButtonElement, QuantFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"quantId\"\n label=\"Quant\"\n placeholder=\"Select quant\"\n optionsEndpoint=\"commerce-api/inventory-item-quants/select\"\n {...props}\n />\n )),\n { displayName: 'QuantFilter', defaultLabel: 'Quant', defaultName: 'quantId' },\n);\n","import { Check } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport type { SingleSelectOptionRenderProps } from '../../components/Select/components/SingleSelect/SingleSelect';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type QuantSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Custom option row: label=lotNumber (or inventoryItemName), description=locationPath (or lotNumber), qty+symbol on the right\nfunction QuantOptionRow({ option, selected, onSelect }: SingleSelectOptionRenderProps) {\n const qty = option.additionals?.quantity;\n const symbol = option.additionals?.symbol as string | null | undefined;\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect();\n }\n }\n\n return (\n <div\n role=\"option\"\n aria-selected={selected}\n tabIndex={0}\n className={cn(\n 'relative flex w-full cursor-default items-center gap-2 rounded-md px-2 py-1.5 min-h-11 text-sm outline-hidden select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n )}\n onClick={onSelect}\n onKeyDown={handleKeyDown}\n >\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{option.label || '—'}</span>\n {option.description && (\n <span className=\"mt-0.5 block truncate text-xs text-muted-foreground\">{option.description}</span>\n )}\n </span>\n {qty != null && (\n <span className=\"shrink-0 pr-5 text-xs tabular-nums text-muted-foreground\">\n {String(qty)}\n {symbol ? ` ${symbol}` : ''}\n </span>\n )}\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n {selected && <Check className=\"size-4\" />}\n </span>\n </div>\n );\n}\n\n// Pre-configured Select for quant selection; pass params={{ inventoryItemId }} to scope to a specific item\nexport const QuantSelector = forwardRef<HTMLButtonElement, QuantSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Quant\"\n placeholder=\"Select quant\"\n searchable\n optionsEndpoint=\"commerce-api/inventory-item-quants/select\"\n renderOption={(p) => <QuantOptionRow {...p} />}\n {...props}\n />\n));\n\nQuantSelector.displayName = 'QuantSelector';\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,cAAc,MAAA,CAAO,MAAA;AAAA,EAChC,UAAA,CAAgD,CAAC,KAAA,EAAO,GAAA,qBACtD,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAM,OAAA;AAAA,MACN,WAAA,EAAY,cAAA;AAAA,MACZ,eAAA,EAAgB,2CAAA;AAAA,MACf,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,aAAA,EAAe,YAAA,EAAc,OAAA,EAAS,aAAa,SAAA;AACpE;;ACRA,SAAS,cAAA,CAAe,EAAE,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAkC;AACrF,EAAA,MAAM,GAAA,GAAM,OAAO,WAAA,EAAa,QAAA;AAChC,EAAA,MAAM,MAAA,GAAS,OAAO,WAAA,EAAa,MAAA;AAEnC,EAAA,SAAS,cAAc,CAAA,EAAwB;AAC7C,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,EAAS;AAAA,IACX;AAAA,EACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,eAAA,EAAe,QAAA;AAAA,MACf,QAAA,EAAU,CAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,MAAA,CAAO,SAAS,GAAA,EAAI,CAAA;AAAA,UACrD,OAAO,WAAA,oBACN,GAAA,CAAC,UAAK,SAAA,EAAU,qDAAA,EAAuD,iBAAO,WAAA,EAAY;AAAA,SAAA,EAE9F,CAAA;AAAA,QACC,GAAA,IAAO,IAAA,oBACN,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,0DAAA,EACb,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,GAAG,CAAA;AAAA,UACV,MAAA,GAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK;AAAA,SAAA,EAC3B,CAAA;AAAA,wBAEF,GAAA,CAAC,UAAK,SAAA,EAAU,4DAAA,EACb,sCAAY,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA,EACzC;AAAA;AAAA;AAAA,GACF;AAEJ;AAGO,MAAM,aAAA,GAAgB,UAAA,CAAkD,CAAC,KAAA,EAAO,GAAA,qBACrF,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAY,cAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,2CAAA;AAAA,IAChB,cAAc,CAAC,CAAA,qBAAM,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,CAAA,EAAG,CAAA;AAAA,IAC3C,GAAG;AAAA;AACN,CACD;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
1
+ {"version":3,"file":"QuantSelector.js","sources":["../lib/selects/quant/QuantFilter.tsx","../lib/selects/quant/QuantSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { SelectFilter, type SelectFilterProps } from '../../components/Select/SelectFilter';\n\nexport type QuantFilterProps = Omit<SelectFilterProps, 'optionsEndpoint' | 'name'> & { name?: string };\n\n// Pre-configured SelectFilter for quant filtering; pass params={{ inventoryItemId }} to scope to a specific item\nexport const QuantFilter = Object.assign(\n forwardRef<HTMLButtonElement, QuantFilterProps>((props, ref) => (\n <SelectFilter\n ref={ref}\n name=\"quantId\"\n label=\"Quant\"\n placeholder=\"Select quant\"\n optionsEndpoint=\"commerce-api/select-api/inventory-item-quants\"\n {...props}\n />\n )),\n { displayName: 'QuantFilter', defaultLabel: 'Quant', defaultName: 'quantId' },\n);\n","import { Check } from 'lucide-react';\nimport type React from 'react';\nimport { forwardRef } from 'react';\nimport { cn } from '../../../shadcn/utils';\nimport type { SingleSelectOptionRenderProps } from '../../components/Select/components/SingleSelect/SingleSelect';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type QuantSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Custom option row: label=lotNumber (or inventoryItemName), description=locationPath (or lotNumber), qty+symbol on the right\nfunction QuantOptionRow({ option, selected, onSelect }: SingleSelectOptionRenderProps) {\n const qty = option.additionals?.quantity;\n const symbol = option.additionals?.symbol as string | null | undefined;\n\n function handleKeyDown(e: React.KeyboardEvent) {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n onSelect();\n }\n }\n\n return (\n <div\n role=\"option\"\n aria-selected={selected}\n tabIndex={0}\n className={cn(\n 'relative flex w-full cursor-default items-center gap-2 rounded-md px-2 py-1.5 min-h-11 text-sm outline-hidden select-none',\n 'hover:bg-accent hover:text-accent-foreground',\n )}\n onClick={onSelect}\n onKeyDown={handleKeyDown}\n >\n <span className=\"min-w-0 flex-1\">\n <span className=\"block truncate\">{option.label || '—'}</span>\n {option.description && (\n <span className=\"mt-0.5 block truncate text-xs text-muted-foreground\">{option.description}</span>\n )}\n </span>\n {qty != null && (\n <span className=\"shrink-0 pr-5 text-xs tabular-nums text-muted-foreground\">\n {String(qty)}\n {symbol ? ` ${symbol}` : ''}\n </span>\n )}\n <span className=\"absolute right-2 flex size-3.5 items-center justify-center\">\n {selected && <Check className=\"size-4\" />}\n </span>\n </div>\n );\n}\n\n// Pre-configured Select for quant selection; pass params={{ inventoryItemId }} to scope to a specific item\nexport const QuantSelector = forwardRef<HTMLButtonElement, QuantSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Quant\"\n placeholder=\"Select quant\"\n searchable\n optionsEndpoint=\"commerce-api/select-api/inventory-item-quants\"\n renderOption={(p) => <QuantOptionRow {...p} />}\n {...props}\n />\n));\n\nQuantSelector.displayName = 'QuantSelector';\n"],"names":[],"mappings":";;;;;;;AAMO,MAAM,cAAc,MAAA,CAAO,MAAA;AAAA,EAChC,UAAA,CAAgD,CAAC,KAAA,EAAO,GAAA,qBACtD,GAAA;AAAA,IAAC,YAAA;AAAA,IAAA;AAAA,MACC,GAAA;AAAA,MACA,IAAA,EAAK,SAAA;AAAA,MACL,KAAA,EAAM,OAAA;AAAA,MACN,WAAA,EAAY,cAAA;AAAA,MACZ,eAAA,EAAgB,+CAAA;AAAA,MACf,GAAG;AAAA;AAAA,GAEP,CAAA;AAAA,EACD,EAAE,WAAA,EAAa,aAAA,EAAe,YAAA,EAAc,OAAA,EAAS,aAAa,SAAA;AACpE;;ACRA,SAAS,cAAA,CAAe,EAAE,MAAA,EAAQ,QAAA,EAAU,UAAS,EAAkC;AACrF,EAAA,MAAM,GAAA,GAAM,OAAO,WAAA,EAAa,QAAA;AAChC,EAAA,MAAM,MAAA,GAAS,OAAO,WAAA,EAAa,MAAA;AAEnC,EAAA,SAAS,cAAc,CAAA,EAAwB;AAC7C,IAAA,IAAI,CAAA,CAAE,GAAA,KAAQ,OAAA,IAAW,CAAA,CAAE,QAAQ,GAAA,EAAK;AACtC,MAAA,CAAA,CAAE,cAAA,EAAe;AACjB,MAAA,QAAA,EAAS;AAAA,IACX;AAAA,EACF;AAEA,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,eAAA,EAAe,QAAA;AAAA,MACf,QAAA,EAAU,CAAA;AAAA,MACV,SAAA,EAAW,EAAA;AAAA,QACT,2HAAA;AAAA,QACA;AAAA,OACF;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MACT,SAAA,EAAW,aAAA;AAAA,MAEX,QAAA,EAAA;AAAA,wBAAA,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,gBAAA,EACd,QAAA,EAAA;AAAA,0BAAA,GAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,MAAA,CAAO,SAAS,GAAA,EAAI,CAAA;AAAA,UACrD,OAAO,WAAA,oBACN,GAAA,CAAC,UAAK,SAAA,EAAU,qDAAA,EAAuD,iBAAO,WAAA,EAAY;AAAA,SAAA,EAE9F,CAAA;AAAA,QACC,GAAA,IAAO,IAAA,oBACN,IAAA,CAAC,MAAA,EAAA,EAAK,WAAU,0DAAA,EACb,QAAA,EAAA;AAAA,UAAA,MAAA,CAAO,GAAG,CAAA;AAAA,UACV,MAAA,GAAS,CAAA,CAAA,EAAI,MAAM,CAAA,CAAA,GAAK;AAAA,SAAA,EAC3B,CAAA;AAAA,wBAEF,GAAA,CAAC,UAAK,SAAA,EAAU,4DAAA,EACb,sCAAY,GAAA,CAAC,KAAA,EAAA,EAAM,SAAA,EAAU,QAAA,EAAS,CAAA,EACzC;AAAA;AAAA;AAAA,GACF;AAEJ;AAGO,MAAM,aAAA,GAAgB,UAAA,CAAkD,CAAC,KAAA,EAAO,GAAA,qBACrF,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,OAAA;AAAA,IACN,WAAA,EAAY,cAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,+CAAA;AAAA,IAChB,cAAc,CAAC,CAAA,qBAAM,GAAA,CAAC,cAAA,EAAA,EAAgB,GAAG,CAAA,EAAG,CAAA;AAAA,IAC3C,GAAG;AAAA;AACN,CACD;AAED,aAAA,CAAc,WAAA,GAAc,eAAA;;;;"}
@@ -3,14 +3,14 @@ import * as React from 'react';
3
3
  import React__default from 'react';
4
4
  import { h as FieldSet, f as FieldLegend, b as FieldDescription, c as FieldError, e as FieldLabel, F as Field, a as FieldContent } from './field.js';
5
5
  import { c as cn } from './utils.js';
6
- import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index19.js';
7
- import { u as useComposedRefs } from './index11.js';
8
- import { c as createContextScope } from './index20.js';
9
- import { R as Root, c as createRovingFocusGroupScope, I as Item } from './index21.js';
10
- import { u as useDirection } from './index23.js';
6
+ import { u as useControllableState, P as Primitive, c as composeEventHandlers } from './index20.js';
7
+ import { u as useComposedRefs } from './index12.js';
8
+ import { c as createContextScope } from './index21.js';
9
+ import { R as Root, c as createRovingFocusGroupScope, I as Item } from './index22.js';
10
+ import { u as useDirection } from './index24.js';
11
11
  import { u as useSize } from './index37.js';
12
12
  import { u as usePrevious } from './index36.js';
13
- import { P as Presence } from './index22.js';
13
+ import { P as Presence } from './index23.js';
14
14
 
15
15
  var RADIO_NAME = "Radio";
16
16
  var [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);
@@ -1 +1 @@
1
- {"version":3,"file":"RadioGroup.js","sources":["../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_3694a89ac1e1986bc2583e58a261f48c/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../shadcn/shadcnRadioGroup/RadioGroup.tsx","../lib/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\n// Base RadioGroup root wrapper\nfunction ShadcnRadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root data-slot=\"radio-group\" className={cn('flex flex-col gap-3', className)} {...props} />\n );\n}\n\n// Individual radio item with indicator dot\nfunction ShadcnRadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'aspect-square size-4 shrink-0 rounded-full border-2 border-input shadow-xs outline-none cursor-pointer transition-colors',\n 'focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:border-ring',\n 'data-[state=checked]:border-primary',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className=\"size-2 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { ShadcnRadioGroup, ShadcnRadioGroupItem };\n","import React from 'react';\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from '../../../shadcn/shadcnField';\nimport { ShadcnRadioGroup, ShadcnRadioGroupItem } from '../../../shadcn/shadcnRadioGroup';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface RadioOption {\n value: string;\n label: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n defaultValue?: string;\n label?: React.ReactNode;\n description?: React.ReactNode;\n error?: string;\n orientation?: 'vertical' | 'horizontal';\n variant?: 'classic' | 'card';\n disabled?: boolean;\n className?: string;\n name?: string;\n}\n\n// RadioGroup component with classic and card variants\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n options,\n value,\n onValueChange,\n defaultValue,\n label,\n description,\n error,\n orientation = 'vertical',\n variant = 'classic',\n disabled,\n className,\n name: _name,\n ...props\n },\n ref,\n ) => {\n const groupId = React.useId();\n const hasError = !!error;\n\n // Render a classic radio item with label and optional description\n const renderClassicItem = (option: RadioOption) => {\n const itemId = `${groupId}-${option.value}`;\n const isItemDisabled = disabled || option.disabled;\n\n return (\n <Field\n key={option.value}\n orientation=\"horizontal\"\n // Field defaults to `w-full`; override when the outer group is horizontal\n // so each option hugs its content instead of spanning the full row.\n className={orientation === 'horizontal' ? 'w-auto' : undefined}\n data-disabled={isItemDisabled || undefined}\n >\n <ShadcnRadioGroupItem value={option.value} id={itemId} disabled={isItemDisabled} />\n <FieldContent>\n <FieldLabel htmlFor={itemId} className=\"font-normal cursor-pointer\">\n {option.label}\n </FieldLabel>\n {option.description && <FieldDescription>{option.description}</FieldDescription>}\n </FieldContent>\n </Field>\n );\n };\n\n // Render a card-style radio item with bordered container\n const renderCardItem = (option: RadioOption) => {\n const itemId = `${groupId}-${option.value}`;\n const isItemDisabled = disabled || option.disabled;\n\n return (\n <label\n key={option.value}\n htmlFor={itemId}\n className={cn(\n 'relative flex cursor-pointer rounded-lg border border-border p-4 transition-colors',\n 'hover:bg-muted/50',\n 'has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-primary/5 has-[[data-state=checked]]:ring-1 has-[[data-state=checked]]:ring-primary',\n isItemDisabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n )}\n >\n <div className=\"flex items-start gap-3\">\n <ShadcnRadioGroupItem value={option.value} id={itemId} disabled={isItemDisabled} className=\"mt-0.5\" />\n <div>\n <FieldLabel htmlFor={itemId} className=\"cursor-pointer font-medium\">\n {option.label}\n </FieldLabel>\n {option.description && <FieldDescription>{option.description}</FieldDescription>}\n </div>\n </div>\n </label>\n );\n };\n\n const renderItem = variant === 'card' ? renderCardItem : renderClassicItem;\n\n const groupClassName = cn(\n variant === 'card'\n ? orientation === 'horizontal'\n ? 'grid grid-cols-2 gap-3'\n : 'flex flex-col gap-3'\n : orientation === 'horizontal'\n ? 'flex flex-row flex-wrap gap-4'\n : 'flex flex-col gap-3',\n );\n\n return (\n <FieldSet data-invalid={hasError || undefined} className={className}>\n {label && <FieldLegend variant=\"label\">{label}</FieldLegend>}\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n <ShadcnRadioGroup\n ref={ref}\n value={value}\n onValueChange={onValueChange}\n defaultValue={defaultValue}\n disabled={disabled}\n orientation={orientation}\n className={groupClassName}\n {...props}\n >\n {options.map(renderItem)}\n </ShadcnRadioGroup>\n {error && <FieldError>{error}</FieldError>}\n </FieldSet>\n );\n },\n);\n\nRadioGroup.displayName = 'RadioGroup';\n"],"names":["createContextScope2","RadioGroup","React2","jsx2","RovingFocusGroup.Root","Primitive2","useComposedRefs2","RovingFocusGroup.Item","composeEventHandlers2","RadioGroupPrimitive.Root","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","React"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"RadioGroup.js","sources":["../node_modules/.pnpm/@radix-ui+react-radio-group@1.3.8_@types+react-dom@19.2.3_@types+react@19.2.14__@types+_3694a89ac1e1986bc2583e58a261f48c/node_modules/@radix-ui/react-radio-group/dist/index.mjs","../shadcn/shadcnRadioGroup/RadioGroup.tsx","../lib/components/RadioGroup/RadioGroup.tsx"],"sourcesContent":["\"use client\";\n\n// src/radio-group.tsx\nimport * as React2 from \"react\";\nimport { composeEventHandlers as composeEventHandlers2 } from \"@radix-ui/primitive\";\nimport { useComposedRefs as useComposedRefs2 } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope as createContextScope2 } from \"@radix-ui/react-context\";\nimport { Primitive as Primitive2 } from \"@radix-ui/react-primitive\";\nimport * as RovingFocusGroup from \"@radix-ui/react-roving-focus\";\nimport { createRovingFocusGroupScope } from \"@radix-ui/react-roving-focus\";\nimport { useControllableState } from \"@radix-ui/react-use-controllable-state\";\nimport { useDirection } from \"@radix-ui/react-direction\";\n\n// src/radio.tsx\nimport * as React from \"react\";\nimport { composeEventHandlers } from \"@radix-ui/primitive\";\nimport { useComposedRefs } from \"@radix-ui/react-compose-refs\";\nimport { createContextScope } from \"@radix-ui/react-context\";\nimport { useSize } from \"@radix-ui/react-use-size\";\nimport { usePrevious } from \"@radix-ui/react-use-previous\";\nimport { Presence } from \"@radix-ui/react-presence\";\nimport { Primitive } from \"@radix-ui/react-primitive\";\nimport { jsx, jsxs } from \"react/jsx-runtime\";\nvar RADIO_NAME = \"Radio\";\nvar [createRadioContext, createRadioScope] = createContextScope(RADIO_NAME);\nvar [RadioProvider, useRadioContext] = createRadioContext(RADIO_NAME);\nvar Radio = React.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadio,\n name,\n checked = false,\n required,\n disabled,\n value = \"on\",\n onCheck,\n form,\n ...radioProps\n } = props;\n const [button, setButton] = React.useState(null);\n const composedRefs = useComposedRefs(forwardedRef, (node) => setButton(node));\n const hasConsumerStoppedPropagationRef = React.useRef(false);\n const isFormControl = button ? form || !!button.closest(\"form\") : true;\n return /* @__PURE__ */ jsxs(RadioProvider, { scope: __scopeRadio, checked, disabled, children: [\n /* @__PURE__ */ jsx(\n Primitive.button,\n {\n type: \"button\",\n role: \"radio\",\n \"aria-checked\": checked,\n \"data-state\": getState(checked),\n \"data-disabled\": disabled ? \"\" : void 0,\n disabled,\n value,\n ...radioProps,\n ref: composedRefs,\n onClick: composeEventHandlers(props.onClick, (event) => {\n if (!checked) onCheck?.();\n if (isFormControl) {\n hasConsumerStoppedPropagationRef.current = event.isPropagationStopped();\n if (!hasConsumerStoppedPropagationRef.current) event.stopPropagation();\n }\n })\n }\n ),\n isFormControl && /* @__PURE__ */ jsx(\n RadioBubbleInput,\n {\n control: button,\n bubbles: !hasConsumerStoppedPropagationRef.current,\n name,\n value,\n checked,\n required,\n disabled,\n form,\n style: { transform: \"translateX(-100%)\" }\n }\n )\n ] });\n }\n);\nRadio.displayName = RADIO_NAME;\nvar INDICATOR_NAME = \"RadioIndicator\";\nvar RadioIndicator = React.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadio, forceMount, ...indicatorProps } = props;\n const context = useRadioContext(INDICATOR_NAME, __scopeRadio);\n return /* @__PURE__ */ jsx(Presence, { present: forceMount || context.checked, children: /* @__PURE__ */ jsx(\n Primitive.span,\n {\n \"data-state\": getState(context.checked),\n \"data-disabled\": context.disabled ? \"\" : void 0,\n ...indicatorProps,\n ref: forwardedRef\n }\n ) });\n }\n);\nRadioIndicator.displayName = INDICATOR_NAME;\nvar BUBBLE_INPUT_NAME = \"RadioBubbleInput\";\nvar RadioBubbleInput = React.forwardRef(\n ({\n __scopeRadio,\n control,\n checked,\n bubbles = true,\n ...props\n }, forwardedRef) => {\n const ref = React.useRef(null);\n const composedRefs = useComposedRefs(ref, forwardedRef);\n const prevChecked = usePrevious(checked);\n const controlSize = useSize(control);\n React.useEffect(() => {\n const input = ref.current;\n if (!input) return;\n const inputProto = window.HTMLInputElement.prototype;\n const descriptor = Object.getOwnPropertyDescriptor(\n inputProto,\n \"checked\"\n );\n const setChecked = descriptor.set;\n if (prevChecked !== checked && setChecked) {\n const event = new Event(\"click\", { bubbles });\n setChecked.call(input, checked);\n input.dispatchEvent(event);\n }\n }, [prevChecked, checked, bubbles]);\n return /* @__PURE__ */ jsx(\n Primitive.input,\n {\n type: \"radio\",\n \"aria-hidden\": true,\n defaultChecked: checked,\n ...props,\n tabIndex: -1,\n ref: composedRefs,\n style: {\n ...props.style,\n ...controlSize,\n position: \"absolute\",\n pointerEvents: \"none\",\n opacity: 0,\n margin: 0\n }\n }\n );\n }\n);\nRadioBubbleInput.displayName = BUBBLE_INPUT_NAME;\nfunction getState(checked) {\n return checked ? \"checked\" : \"unchecked\";\n}\n\n// src/radio-group.tsx\nimport { jsx as jsx2 } from \"react/jsx-runtime\";\nvar ARROW_KEYS = [\"ArrowUp\", \"ArrowDown\", \"ArrowLeft\", \"ArrowRight\"];\nvar RADIO_GROUP_NAME = \"RadioGroup\";\nvar [createRadioGroupContext, createRadioGroupScope] = createContextScope2(RADIO_GROUP_NAME, [\n createRovingFocusGroupScope,\n createRadioScope\n]);\nvar useRovingFocusGroupScope = createRovingFocusGroupScope();\nvar useRadioScope = createRadioScope();\nvar [RadioGroupProvider, useRadioGroupContext] = createRadioGroupContext(RADIO_GROUP_NAME);\nvar RadioGroup = React2.forwardRef(\n (props, forwardedRef) => {\n const {\n __scopeRadioGroup,\n name,\n defaultValue,\n value: valueProp,\n required = false,\n disabled = false,\n orientation,\n dir,\n loop = true,\n onValueChange,\n ...groupProps\n } = props;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const direction = useDirection(dir);\n const [value, setValue] = useControllableState({\n prop: valueProp,\n defaultProp: defaultValue ?? null,\n onChange: onValueChange,\n caller: RADIO_GROUP_NAME\n });\n return /* @__PURE__ */ jsx2(\n RadioGroupProvider,\n {\n scope: __scopeRadioGroup,\n name,\n required,\n disabled,\n value,\n onValueChange: setValue,\n children: /* @__PURE__ */ jsx2(\n RovingFocusGroup.Root,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n orientation,\n dir: direction,\n loop,\n children: /* @__PURE__ */ jsx2(\n Primitive2.div,\n {\n role: \"radiogroup\",\n \"aria-required\": required,\n \"aria-orientation\": orientation,\n \"data-disabled\": disabled ? \"\" : void 0,\n dir: direction,\n ...groupProps,\n ref: forwardedRef\n }\n )\n }\n )\n }\n );\n }\n);\nRadioGroup.displayName = RADIO_GROUP_NAME;\nvar ITEM_NAME = \"RadioGroupItem\";\nvar RadioGroupItem = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, disabled, ...itemProps } = props;\n const context = useRadioGroupContext(ITEM_NAME, __scopeRadioGroup);\n const isDisabled = context.disabled || disabled;\n const rovingFocusGroupScope = useRovingFocusGroupScope(__scopeRadioGroup);\n const radioScope = useRadioScope(__scopeRadioGroup);\n const ref = React2.useRef(null);\n const composedRefs = useComposedRefs2(forwardedRef, ref);\n const checked = context.value === itemProps.value;\n const isArrowKeyPressedRef = React2.useRef(false);\n React2.useEffect(() => {\n const handleKeyDown = (event) => {\n if (ARROW_KEYS.includes(event.key)) {\n isArrowKeyPressedRef.current = true;\n }\n };\n const handleKeyUp = () => isArrowKeyPressedRef.current = false;\n document.addEventListener(\"keydown\", handleKeyDown);\n document.addEventListener(\"keyup\", handleKeyUp);\n return () => {\n document.removeEventListener(\"keydown\", handleKeyDown);\n document.removeEventListener(\"keyup\", handleKeyUp);\n };\n }, []);\n return /* @__PURE__ */ jsx2(\n RovingFocusGroup.Item,\n {\n asChild: true,\n ...rovingFocusGroupScope,\n focusable: !isDisabled,\n active: checked,\n children: /* @__PURE__ */ jsx2(\n Radio,\n {\n disabled: isDisabled,\n required: context.required,\n checked,\n ...radioScope,\n ...itemProps,\n name: context.name,\n ref: composedRefs,\n onCheck: () => context.onValueChange(itemProps.value),\n onKeyDown: composeEventHandlers2((event) => {\n if (event.key === \"Enter\") event.preventDefault();\n }),\n onFocus: composeEventHandlers2(itemProps.onFocus, () => {\n if (isArrowKeyPressedRef.current) ref.current?.click();\n })\n }\n )\n }\n );\n }\n);\nRadioGroupItem.displayName = ITEM_NAME;\nvar INDICATOR_NAME2 = \"RadioGroupIndicator\";\nvar RadioGroupIndicator = React2.forwardRef(\n (props, forwardedRef) => {\n const { __scopeRadioGroup, ...indicatorProps } = props;\n const radioScope = useRadioScope(__scopeRadioGroup);\n return /* @__PURE__ */ jsx2(RadioIndicator, { ...radioScope, ...indicatorProps, ref: forwardedRef });\n }\n);\nRadioGroupIndicator.displayName = INDICATOR_NAME2;\nvar Root2 = RadioGroup;\nvar Item2 = RadioGroupItem;\nvar Indicator = RadioGroupIndicator;\nexport {\n Indicator,\n Item2 as Item,\n RadioGroup,\n RadioGroupIndicator,\n RadioGroupItem,\n Root2 as Root,\n createRadioGroupScope\n};\n//# sourceMappingURL=index.mjs.map\n","import * as RadioGroupPrimitive from '@radix-ui/react-radio-group';\nimport type * as React from 'react';\n\nimport { cn } from '../utils';\n\n// Base RadioGroup root wrapper\nfunction ShadcnRadioGroup({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Root>) {\n return (\n <RadioGroupPrimitive.Root data-slot=\"radio-group\" className={cn('flex flex-col gap-3', className)} {...props} />\n );\n}\n\n// Individual radio item with indicator dot\nfunction ShadcnRadioGroupItem({ className, ...props }: React.ComponentProps<typeof RadioGroupPrimitive.Item>) {\n return (\n <RadioGroupPrimitive.Item\n data-slot=\"radio-group-item\"\n className={cn(\n 'aspect-square size-4 shrink-0 rounded-full border-2 border-input shadow-xs outline-none cursor-pointer transition-colors',\n 'focus-visible:ring-2 focus-visible:ring-ring/50 focus-visible:border-ring',\n 'data-[state=checked]:border-primary',\n 'disabled:cursor-not-allowed disabled:opacity-50',\n className,\n )}\n {...props}\n >\n <RadioGroupPrimitive.Indicator className=\"flex items-center justify-center\">\n <span className=\"size-2 rounded-full bg-primary\" />\n </RadioGroupPrimitive.Indicator>\n </RadioGroupPrimitive.Item>\n );\n}\n\nexport { ShadcnRadioGroup, ShadcnRadioGroupItem };\n","import React from 'react';\nimport {\n Field,\n FieldContent,\n FieldDescription,\n FieldError,\n FieldLabel,\n FieldLegend,\n FieldSet,\n} from '../../../shadcn/shadcnField';\nimport { ShadcnRadioGroup, ShadcnRadioGroupItem } from '../../../shadcn/shadcnRadioGroup';\nimport { cn } from '../../../shadcn/utils';\n\nexport interface RadioOption {\n value: string;\n label: React.ReactNode;\n description?: React.ReactNode;\n disabled?: boolean;\n}\n\nexport interface RadioGroupProps {\n options: RadioOption[];\n value?: string;\n onValueChange?: (value: string) => void;\n defaultValue?: string;\n label?: React.ReactNode;\n description?: React.ReactNode;\n error?: string;\n orientation?: 'vertical' | 'horizontal';\n variant?: 'classic' | 'card';\n disabled?: boolean;\n className?: string;\n name?: string;\n}\n\n// RadioGroup component with classic and card variants\nexport const RadioGroup = React.forwardRef<HTMLDivElement, RadioGroupProps>(\n (\n {\n options,\n value,\n onValueChange,\n defaultValue,\n label,\n description,\n error,\n orientation = 'vertical',\n variant = 'classic',\n disabled,\n className,\n name: _name,\n ...props\n },\n ref,\n ) => {\n const groupId = React.useId();\n const hasError = !!error;\n\n // Render a classic radio item with label and optional description\n const renderClassicItem = (option: RadioOption) => {\n const itemId = `${groupId}-${option.value}`;\n const isItemDisabled = disabled || option.disabled;\n\n return (\n <Field\n key={option.value}\n orientation=\"horizontal\"\n // Field defaults to `w-full`; override to `w-auto` when horizontal so each option hugs its content\n className={orientation === 'horizontal' ? 'w-auto' : undefined}\n data-disabled={isItemDisabled || undefined}\n >\n <ShadcnRadioGroupItem value={option.value} id={itemId} disabled={isItemDisabled} />\n <FieldContent>\n <FieldLabel htmlFor={itemId} className=\"font-normal cursor-pointer\">\n {option.label}\n </FieldLabel>\n {option.description && <FieldDescription>{option.description}</FieldDescription>}\n </FieldContent>\n </Field>\n );\n };\n\n // Render a card-style radio item with bordered container\n const renderCardItem = (option: RadioOption) => {\n const itemId = `${groupId}-${option.value}`;\n const isItemDisabled = disabled || option.disabled;\n\n return (\n <label\n key={option.value}\n htmlFor={itemId}\n className={cn(\n 'relative flex cursor-pointer rounded-lg border border-border p-4 transition-colors',\n 'hover:bg-muted/50',\n 'has-[[data-state=checked]]:border-primary has-[[data-state=checked]]:bg-primary/5 has-[[data-state=checked]]:ring-1 has-[[data-state=checked]]:ring-primary',\n isItemDisabled && 'opacity-50 cursor-not-allowed pointer-events-none',\n )}\n >\n <div className=\"flex items-start gap-3\">\n <ShadcnRadioGroupItem value={option.value} id={itemId} disabled={isItemDisabled} className=\"mt-0.5\" />\n <div>\n <FieldLabel htmlFor={itemId} className=\"cursor-pointer font-medium\">\n {option.label}\n </FieldLabel>\n {option.description && <FieldDescription>{option.description}</FieldDescription>}\n </div>\n </div>\n </label>\n );\n };\n\n const renderItem = variant === 'card' ? renderCardItem : renderClassicItem;\n\n const groupClassName = cn(\n variant === 'card'\n ? orientation === 'horizontal'\n ? 'grid grid-cols-2 gap-3'\n : 'flex flex-col gap-3'\n : orientation === 'horizontal'\n ? 'flex flex-row flex-wrap gap-4'\n : 'flex flex-col gap-3',\n );\n\n return (\n <FieldSet data-invalid={hasError || undefined} className={className}>\n {label && <FieldLegend variant=\"label\">{label}</FieldLegend>}\n {description && !error && <FieldDescription>{description}</FieldDescription>}\n <ShadcnRadioGroup\n ref={ref}\n value={value}\n onValueChange={onValueChange}\n defaultValue={defaultValue}\n disabled={disabled}\n orientation={orientation}\n className={groupClassName}\n {...props}\n >\n {options.map(renderItem)}\n </ShadcnRadioGroup>\n {error && <FieldError>{error}</FieldError>}\n </FieldSet>\n );\n },\n);\n\nRadioGroup.displayName = 'RadioGroup';\n"],"names":["createContextScope2","RadioGroup","React2","jsx2","RovingFocusGroup.Root","Primitive2","useComposedRefs2","RovingFocusGroup.Item","composeEventHandlers2","RadioGroupPrimitive.Root","RadioGroupPrimitive.Item","RadioGroupPrimitive.Indicator","React"],"mappings":"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","x_google_ignoreList":[0]}
@@ -0,0 +1,20 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { forwardRef } from 'react';
3
+ import { S as Select } from './Select.js';
4
+
5
+ const RoleSelector = forwardRef((props, ref) => /* @__PURE__ */ jsx(
6
+ Select,
7
+ {
8
+ ref,
9
+ label: "Role",
10
+ placeholder: "Select role",
11
+ searchable: true,
12
+ optionsEndpoint: "select-api/roles",
13
+ fieldKeys: { valueKey: "id", labelKey: "name" },
14
+ ...props
15
+ }
16
+ ));
17
+ RoleSelector.displayName = "RoleSelector";
18
+
19
+ export { RoleSelector as R };
20
+ //# sourceMappingURL=RoleSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RoleSelector.js","sources":["../lib/selects/role/RoleSelector.tsx"],"sourcesContent":["import { forwardRef } from 'react';\nimport { Select, type SelectProps } from '../../components/Select/Select';\n\nexport type RoleSelectorProps = Omit<SelectProps, 'optionsEndpoint'>;\n\n// Pre-configured Select for role selection with async search (supports single and multi-select)\nexport const RoleSelector = forwardRef<HTMLButtonElement, RoleSelectorProps>((props, ref) => (\n <Select\n ref={ref}\n label=\"Role\"\n placeholder=\"Select role\"\n searchable\n optionsEndpoint=\"select-api/roles\"\n fieldKeys={{ valueKey: 'id', labelKey: 'name' }}\n {...props}\n />\n));\nRoleSelector.displayName = 'RoleSelector';\n"],"names":[],"mappings":";;;;AAMO,MAAM,YAAA,GAAe,UAAA,CAAiD,CAAC,KAAA,EAAO,GAAA,qBACnF,GAAA;AAAA,EAAC,MAAA;AAAA,EAAA;AAAA,IACC,GAAA;AAAA,IACA,KAAA,EAAM,MAAA;AAAA,IACN,WAAA,EAAY,aAAA;AAAA,IACZ,UAAA,EAAU,IAAA;AAAA,IACV,eAAA,EAAgB,kBAAA;AAAA,IAChB,SAAA,EAAW,EAAE,QAAA,EAAU,IAAA,EAAM,UAAU,MAAA,EAAO;AAAA,IAC7C,GAAG;AAAA;AACN,CACD;AACD,YAAA,CAAa,WAAA,GAAc,cAAA;;;;"}
package/dist/Select.js CHANGED
@@ -11,7 +11,7 @@ import { B as Badge } from './Badge2.js';
11
11
  import { X } from './x.js';
12
12
  import { j as SingleSelect } from './SingleSelect.js';
13
13
  import { useQuery, keepPreviousData, useInfiniteQuery } from '@tanstack/react-query';
14
- import { u as useInView } from './index17.js';
14
+ import { u as useInView } from './index18.js';
15
15
  import { axios } from './utils/axios.js';
16
16
 
17
17
  function MultiSelectRoot({ open, onOpenChange, disabled, children }) {
@@ -534,6 +534,9 @@ function useSelect({
534
534
  useEffect(() => {
535
535
  if (open) setResolveValues(selectedValuesRef.current);
536
536
  }, [open]);
537
+ useEffect(() => {
538
+ if (!open) setResolveValues(selectedValuesRef.current);
539
+ }, [serializedValues, open]);
537
540
  const serializedResolveValues = useMemo(
538
541
  () => resolveValues && resolveValues.length > 0 ? resolveValues.filter((v) => typeof v !== "boolean").join(",") : void 0,
539
542
  [resolveValues]