@mercurjs/vendor 2.1.2 → 2.2.0-canary.1

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 (230) hide show
  1. package/dist/{[id]-PDGHF5J2.js → [id]-2DQX3YWJ.js} +35 -31
  2. package/dist/{[id]-TO6KT3ZE.js → [id]-4OBGG7OH.js} +23 -21
  3. package/dist/{[id]-X4DDKOMQ.js → [id]-4PKMKNJH.js} +26 -22
  4. package/dist/[id]-4STHLE4N.js +1442 -0
  5. package/dist/{[id]-4VCL3MMM.js → [id]-5UFO4RKF.js} +26 -22
  6. package/dist/{[id]-H3C3ZSC6.js → [id]-6MXCVV5J.js} +25 -21
  7. package/dist/{[id]-6PXEWRG7.js → [id]-7BAKUHUO.js} +13 -13
  8. package/dist/{[id]-7RUAH3TI.js → [id]-K2CT7BXQ.js} +4 -4
  9. package/dist/{[id]-3G5G7ZFV.js → [id]-KJIQTFGE.js} +22 -20
  10. package/dist/{[id]-INOFZHL7.js → [id]-LTNOHLGE.js} +16 -16
  11. package/dist/{[id]-B3LHVQM5.js → [id]-PGIT5WJC.js} +25 -21
  12. package/dist/{[id]-T2ROPEGY.js → [id]-Y2ISCLUD.js} +7 -7
  13. package/dist/{[id]-Y7GAMNC5.js → [id]-ZCMSBEVM.js} +4 -4
  14. package/dist/{[id]-UTKO3VG4.js → [id]-ZWWMJAKI.js} +9 -9
  15. package/dist/{[location_id]-D55RQOXT.js → [location_id]-NUBXDDJC.js} +9 -9
  16. package/dist/{[province_id]-OFH2ZOFQ.js → [province_id]-H2QAPKVH.js} +20 -18
  17. package/dist/{add-C6OX5C54.js → add-GZJ7OMV3.js} +34 -30
  18. package/dist/add-KQAABWCR.js +392 -0
  19. package/dist/{add-customer-groups-PJRJUWS2.js → add-customer-groups-RAHCP67U.js} +16 -14
  20. package/dist/{add-products-INOLNPO6.js → add-products-TSVQHC67.js} +23 -19
  21. package/dist/{add-promotions-AHDOP52Q.js → add-promotions-CSCAJZHV.js} +7 -7
  22. package/dist/{add-to-campaign-HL6NGRR4.js → add-to-campaign-DLP7PSQB.js} +4 -4
  23. package/dist/{address-KRENKSLP.js → address-7F5SN7PV.js} +17 -15
  24. package/dist/{adjust-inventory-H4EUP7J3.js → adjust-inventory-SZF4W7LR.js} +2 -2
  25. package/dist/{allocate-items-SUCUZU4D.js → allocate-items-SDFS5GYN.js} +6 -6
  26. package/dist/{areas-UUMZDXLX.js → areas-7Y6BVS5A.js} +8 -8
  27. package/dist/{attributes-CALEHJJG.js → attributes-MBZ76HVZ.js} +3 -3
  28. package/dist/{breadcrumb-BS7Y5OKF.js → breadcrumb-65SAGUUL.js} +2 -2
  29. package/dist/{breadcrumb-6W2VP3OZ.js → breadcrumb-7PURSRTT.js} +13 -11
  30. package/dist/{breadcrumb-M5Z5WA6I.js → breadcrumb-EDPMEN2P.js} +2 -2
  31. package/dist/breadcrumb-FLDHJRVY.js +26 -0
  32. package/dist/{breadcrumb-VNNZ3TTW.js → breadcrumb-HND5FFWC.js} +2 -2
  33. package/dist/{breadcrumb-OIGGCB3L.js → breadcrumb-QV2IAX7N.js} +8 -2
  34. package/dist/{breadcrumb-KQSFIXQ4.js → breadcrumb-VWELWDB2.js} +1 -1
  35. package/dist/{breadcrumb-IG7VZGW2.js → breadcrumb-WRG4SITG.js} +13 -11
  36. package/dist/{breadcrumb-TW5JEOYS.js → breadcrumb-ZCG2RHIU.js} +12 -10
  37. package/dist/{campaigns-HS6MIO7X.js → campaigns-L6ULR6KR.js} +5 -5
  38. package/dist/{categories-PKWR3FM3.js → categories-FUZQKBXV.js} +6 -6
  39. package/dist/{chunk-PDQSPKG5.js → chunk-2DXNJURE.js} +1 -1
  40. package/dist/{chunk-ZZO3INVE.js → chunk-2MDGYHWN.js} +128 -25
  41. package/dist/{chunk-5UD4P6YL.js → chunk-2USXZSTK.js} +4 -4
  42. package/dist/{chunk-6SBMVLJ2.js → chunk-36L54SQQ.js} +1 -1
  43. package/dist/chunk-37G4Y5I7.js +101 -0
  44. package/dist/{chunk-5M3SL4UZ.js → chunk-3CVJA5UE.js} +9 -104
  45. package/dist/chunk-432S4FGR.js +0 -0
  46. package/dist/{chunk-KQGVSLUI.js → chunk-44RQ5PTN.js} +1803 -914
  47. package/dist/{chunk-Y2QI7KWS.js → chunk-4LVP635F.js} +408 -664
  48. package/dist/{chunk-UL4O5M4S.js → chunk-4S6XGIC6.js} +1 -18
  49. package/dist/chunk-5ZVWOCAC.js +426 -0
  50. package/dist/{chunk-WITQNQXN.js → chunk-6BS2AVGJ.js} +3 -3
  51. package/dist/{chunk-ZYOXKUKZ.js → chunk-7LBY5JLV.js} +1 -1
  52. package/dist/chunk-7SLWXX6L.js +811 -0
  53. package/dist/{chunk-LQYMBSRQ.js → chunk-AIZM66CG.js} +1 -1
  54. package/dist/{chunk-IZ5RG5XI.js → chunk-AJLGY3LQ.js} +1 -21
  55. package/dist/{chunk-WFE6CT6M.js → chunk-AVOIZO63.js} +21 -77
  56. package/dist/chunk-C2FG3SX2.js +68 -0
  57. package/dist/chunk-CFRWIQIZ.js +43 -0
  58. package/dist/{chunk-WNVEMFIK.js → chunk-CNMY5HVP.js} +2 -2
  59. package/dist/{chunk-BLVJAKBA.js → chunk-DDH7ULIQ.js} +1 -1
  60. package/dist/chunk-DIW4GRTI.js +503 -0
  61. package/dist/{chunk-JQP7MOFH.js → chunk-DVEKYLPV.js} +1 -1
  62. package/dist/{chunk-QX45GVAL.js → chunk-EIUYXS7E.js} +8 -8
  63. package/dist/{chunk-N7OVXN72.js → chunk-EROX26D4.js} +1 -1
  64. package/dist/{chunk-2RHAI7WK.js → chunk-EZ3JOAUS.js} +1 -1
  65. package/dist/{chunk-HFRHHT36.js → chunk-FDR22JMM.js} +63 -8
  66. package/dist/{chunk-PEKANQ3T.js → chunk-FJUUGFXL.js} +2 -2
  67. package/dist/{chunk-3CK6OINO.js → chunk-GDWBOQI5.js} +3 -5
  68. package/dist/{chunk-47SXTGLN.js → chunk-GXIAIITP.js} +63 -200
  69. package/dist/{chunk-4MFMCZEJ.js → chunk-H6LZ77GX.js} +2 -2
  70. package/dist/chunk-IWLDKGYQ.js +95 -0
  71. package/dist/chunk-K4X324QP.js +18 -0
  72. package/dist/{chunk-VQ5EKDA3.js → chunk-KD7RYE6R.js} +1 -1
  73. package/dist/chunk-LEWA4BPH.js +18 -0
  74. package/dist/{chunk-7Q5SDEK7.js → chunk-LNM2D2I4.js} +4 -4
  75. package/dist/{chunk-LPOAVK6Y.js → chunk-LQD232FW.js} +47 -12
  76. package/dist/{chunk-OXXL4WQU.js → chunk-M7KSRYRI.js} +5 -5
  77. package/dist/chunk-MBFHMJHN.js +2063 -0
  78. package/dist/{chunk-I2IKYOZX.js → chunk-N4MVIBFM.js} +19 -19
  79. package/dist/{chunk-PCMNEUMV.js → chunk-NHFEY3EI.js} +1 -1
  80. package/dist/{chunk-RTAWYMQP.js → chunk-NJMNYS7G.js} +1 -1
  81. package/dist/{chunk-HGQTL7NX.js → chunk-NSZQERLE.js} +2 -2
  82. package/dist/{chunk-RL7SFZOF.js → chunk-NXNJQZCP.js} +1 -1
  83. package/dist/{chunk-CNLP35S7.js → chunk-OD3U3TX4.js} +16 -31
  84. package/dist/{chunk-D2MA5TAP.js → chunk-PBD36EZJ.js} +2 -2
  85. package/dist/{chunk-4ZGFODSC.js → chunk-PZ44R4AS.js} +1 -1
  86. package/dist/{chunk-ZEVYT6IX.js → chunk-QNNJN4H6.js} +116 -286
  87. package/dist/{chunk-WBI7FEGI.js → chunk-QS6RWIBL.js} +1 -1
  88. package/dist/chunk-QT7YFHCA.js +198 -0
  89. package/dist/{chunk-GYV6SKY7.js → chunk-QXLRABYH.js} +4 -6
  90. package/dist/chunk-RXZFEFNV.js +73 -0
  91. package/dist/{chunk-RUE5BPC2.js → chunk-RZLN2Q6G.js} +1 -1
  92. package/dist/{chunk-NYDJTWRL.js → chunk-SGR4DMCW.js} +4 -4
  93. package/dist/chunk-T6LHVNWO.js +27 -0
  94. package/dist/{chunk-DKQ4XMSN.js → chunk-TNVYTMBL.js} +6 -6
  95. package/dist/{chunk-32RYSB2V.js → chunk-TODJFRLH.js} +2 -2
  96. package/dist/{chunk-P3ZTO6T2.js → chunk-UAF2S447.js} +1 -1
  97. package/dist/{chunk-J6BRLL3F.js → chunk-UCQKXXLD.js} +2 -2
  98. package/dist/chunk-UORPTGV2.js +114 -0
  99. package/dist/{chunk-CYTNBXWF.js → chunk-UX7J5NZG.js} +9 -9
  100. package/dist/{chunk-X4FLOQ45.js → chunk-WBHFU3MG.js} +2 -2
  101. package/dist/chunk-WLT7K7K7.js +63 -0
  102. package/dist/{chunk-4URLUCTD.js → chunk-WUPJADSO.js} +2 -2
  103. package/dist/{chunk-ITI54CII.js → chunk-X4INVIWL.js} +5 -5
  104. package/dist/{chunk-PTW7JNAP.js → chunk-XFQJU6FA.js} +4 -4
  105. package/dist/{collections-DJZI2RM2.js → collections-3OPR3DSD.js} +22 -19
  106. package/dist/{configuration-RHPIO2QT.js → configuration-C4IGBNXH.js} +1 -1
  107. package/dist/{configuration-GN3TO77H.js → configuration-UOSNP45I.js} +3 -3
  108. package/dist/{create-3EK5CNNX.js → create-2MQFQHTE.js} +33 -29
  109. package/dist/{create-YO55Z3YD.js → create-2PCLG7TV.js} +32 -38
  110. package/dist/{create-G4T2PAJH.js → create-35MYQPVM.js} +23 -21
  111. package/dist/{create-HKJVSFB7.js → create-BJ4OO6LS.js} +23 -21
  112. package/dist/create-DDPIXCXT.js +210 -0
  113. package/dist/{create-7S7CZWEN.js → create-GB3ZA4LH.js} +4 -4
  114. package/dist/create-JDGM5KXE.js +193 -0
  115. package/dist/{create-IDVCZHIX.js → create-ORXYT74H.js} +14 -12
  116. package/dist/{create-GHM7OTCR.js → create-R7K3ECN6.js} +1 -1
  117. package/dist/{create-D6EW3EWC.js → create-SFU3W3ZH.js} +1 -1
  118. package/dist/{create-3ZVXEPX5.js → create-SQ3FYMGI.js} +25 -21
  119. package/dist/{create-33TRLASX.js → create-UPYB65PD.js} +1 -1
  120. package/dist/{create-OCFPLNNY.js → create-UQNYMVBM.js} +6 -6
  121. package/dist/{create-OGLPDVOI.js → create-XAD5NMSJ.js} +37 -35
  122. package/dist/{create-KGYL7FBM.js → create-XVHOCZHJ.js} +1 -1
  123. package/dist/{create-4AE3VTWN.js → create-YBF4YGWG.js} +2 -2
  124. package/dist/{customers-6ZLE65UX.js → customers-ETXVNM3G.js} +5 -5
  125. package/dist/{edit-QBISX7D3.js → edit-2Q7TRUTL.js} +14 -12
  126. package/dist/{edit-B5B3XKDM.js → edit-522DG3BY.js} +1 -1
  127. package/dist/{edit-ATXE6CM5.js → edit-C4OCKQVU.js} +1 -1
  128. package/dist/{edit-IR6V2IDN.js → edit-FKXIQ6ZI.js} +19 -17
  129. package/dist/{edit-4HZHLYI3.js → edit-GQNIINRR.js} +1 -1
  130. package/dist/{edit-LRRJTHV2.js → edit-KAKVPHZZ.js} +1 -1
  131. package/dist/{edit-ZSOI56BQ.js → edit-L5ZZLMAY.js} +22 -22
  132. package/dist/{edit-FNDDSSMT.js → edit-NYD45J2Q.js} +37 -8
  133. package/dist/{edit-GIJXLMC3.js → edit-O4JLGKQR.js} +2 -2
  134. package/dist/{edit-5CJZRHAA.js → edit-ORXS3A2Y.js} +1 -1
  135. package/dist/{edit-FC64DWB2.js → edit-Q3UQIOLS.js} +1 -1
  136. package/dist/{edit-7HTH2UJF.js → edit-REDDBLTA.js} +3 -3
  137. package/dist/{edit-2KRJIPRK.js → edit-SGUY2CCK.js} +19 -17
  138. package/dist/{edit-B75KK5ZX.js → edit-SWRWWFW6.js} +35 -31
  139. package/dist/{edit-7GVP6SRA.js → edit-ZAHCMF5U.js} +1 -1
  140. package/dist/{edit-RNT555GP.js → edit-ZCXUG42Q.js} +13 -11
  141. package/dist/{edit-MYSWY6W4.js → edit-ZMERG3L7.js} +1 -1
  142. package/dist/{edit-budget-J27CSEZH.js → edit-budget-L3CCEWNF.js} +1 -1
  143. package/dist/{edit-inventory-item-US77M2FF.js → edit-inventory-item-6B7ITDGD.js} +2 -2
  144. package/dist/{edit-inventory-item-attributes-UGAE2NAZ.js → edit-inventory-item-attributes-Y7MQZLXI.js} +3 -3
  145. package/dist/{fulfillment-DCS67LTK.js → fulfillment-75Z4H23W.js} +16 -14
  146. package/dist/{fulfillment-providers-GM5PO6N3.js → fulfillment-providers-KCQWL62T.js} +20 -17
  147. package/dist/index.css +27 -62
  148. package/dist/index.d.ts +3 -10
  149. package/dist/index.js +522 -458
  150. package/dist/{inventory-OPZ2FSEE.js → inventory-KAUVPMPZ.js} +6 -6
  151. package/dist/{invite-764K3TJS.js → invite-6CPYVHDX.js} +24 -21
  152. package/dist/{invite-KEJLNXEZ.js → invite-CI2P4GF6.js} +15 -12
  153. package/dist/loader-FBB5OQRT.js +31 -0
  154. package/dist/{locations-ZVPTQCQY.js → locations-INS6FTMJ.js} +4 -4
  155. package/dist/{login-OUHRNNXA.js → login-KY342RMK.js} +12 -10
  156. package/dist/{manage-locations-YUKEFCBJ.js → manage-locations-WNHEBS3A.js} +2 -2
  157. package/dist/{media-4KYFHB5V.js → media-KOYAOXG6.js} +41 -9
  158. package/dist/{metadata-NYYL26MQ.js → metadata-2CMH4I6U.js} +16 -14
  159. package/dist/{metadata-AWUKZ25V.js → metadata-5BPOBBU2.js} +3 -3
  160. package/dist/{metadata-OCE6A3JE.js → metadata-GWI6R4ES.js} +15 -13
  161. package/dist/{metadata-G7KZXVNE.js → metadata-NUXUC2JA.js} +15 -13
  162. package/dist/{metadata-XP3ZYW2M.js → metadata-TLDUF5KV.js} +17 -15
  163. package/dist/{metadata-PYY4IB7K.js → metadata-WR4RFXO5.js} +16 -14
  164. package/dist/offer-create-page-YKMHHTU5.js +743 -0
  165. package/dist/offer-detail-page-6MAHNNIO.js +488 -0
  166. package/dist/offer-edit-page-DYQFU6JU.js +151 -0
  167. package/dist/offer-inventory-batch-page-WKCWNDNK.js +290 -0
  168. package/dist/offer-pricing-edit-page-4TYGGSOE.js +195 -0
  169. package/dist/offers-UGQJNGTD.js +32 -0
  170. package/dist/{onboarding-WXZHW62K.js → onboarding-43LQQQGQ.js} +22 -20
  171. package/dist/{orders-LWJ472VM.js → orders-R2LOJ6N5.js} +24 -21
  172. package/dist/organization-XGFU4YDG.js +375 -0
  173. package/dist/{organize-RFOMQCBG.js → organize-HNJUHEEG.js} +4 -4
  174. package/dist/{organize-OVKJ3HZO.js → organize-K6QMAMEN.js} +4 -4
  175. package/dist/pages/index.d.ts +415 -758
  176. package/dist/pages/index.js +81 -77
  177. package/dist/{payment-details-UVXYCTUK.js → payment-details-64US5XWD.js} +17 -15
  178. package/dist/{payouts-TR7K5I37.js → payouts-UXJDTXDL.js} +6 -6
  179. package/dist/{price-lists-S2WNELFZ.js → price-lists-KBPUVSZI.js} +8 -8
  180. package/dist/{pricing-UF27DAXA.js → pricing-DF6C5XK4.js} +35 -32
  181. package/dist/{product-tags-2CKH2M6D.js → product-tags-CL7HSEDI.js} +32 -28
  182. package/dist/{product-types-FX43JEO2.js → product-types-UUHBV4IZ.js} +5 -5
  183. package/dist/product-variant-detail-RVWEYVPC.js +220 -0
  184. package/dist/{product-variant-edit-P3DSIFE3.js → product-variant-edit-MNCS7ZYW.js} +126 -66
  185. package/dist/{products-H5EMRJYS.js → products-4KV5Y2JY.js} +23 -19
  186. package/dist/{products-2LHGS7X3.js → products-SXYTQFJ3.js} +40 -43
  187. package/dist/{professional-details-HYKTH44B.js → professional-details-5T2VS6MM.js} +16 -14
  188. package/dist/{profile-PB27WIRW.js → profile-6XGHAT7H.js} +20 -18
  189. package/dist/{promotions-5EYPGHJP.js → promotions-O7U4BTK6.js} +8 -8
  190. package/dist/{register-4O4F6YZK.js → register-GDKN3SKM.js} +16 -14
  191. package/dist/{reset-password-GTWLBOFK.js → reset-password-EICPAY2N.js} +1 -1
  192. package/dist/{return-reasons-LOKYRGMI.js → return-reasons-M6IR77XW.js} +16 -14
  193. package/dist/{sales-channels-7R2IY3KG.js → sales-channels-B6FULRWI.js} +8 -7
  194. package/dist/{sales-channels-Y4LRP7JC.js → sales-channels-JW3QUYR7.js} +8 -7
  195. package/dist/{settings-2XDLFYMS.js → settings-SAAHTUZZ.js} +39 -35
  196. package/dist/{shipment-4GW2JFWB.js → shipment-Q33QBMXX.js} +13 -11
  197. package/dist/{shipping-profile-R3NABPQF.js → shipping-profile-Y4SNEPZX.js} +2 -2
  198. package/dist/{shipping-profiles-QVKNFLCW.js → shipping-profiles-2NWKCEJK.js} +18 -16
  199. package/dist/{stock-5RXNUPUT.js → stock-7CSVEJJU.js} +19 -17
  200. package/dist/{store-DE2RGX7T.js → store-GHFWU7EV.js} +28 -25
  201. package/dist/{store-closure-DNMCHUXD.js → store-closure-P5PD2RSV.js} +16 -14
  202. package/dist/{store-select-GZEJHRZ7.js → store-select-KDT6USQA.js} +17 -15
  203. package/dist/{tax-regions-UD6P5FVC.js → tax-regions-YXZW7UVX.js} +5 -5
  204. package/dist/{team-JXKAVRPU.js → team-EDJ62747.js} +25 -23
  205. package/dist/types-CtCEtTE6.d.ts +16 -0
  206. package/package.json +3 -3
  207. package/dist/[id]-BYP37PU4.js +0 -1314
  208. package/dist/add-KRAGFFBJ.js +0 -158
  209. package/dist/bulk-edit-3SMBLIOA.js +0 -244
  210. package/dist/chunk-4KX6CBJ4.js +0 -178
  211. package/dist/chunk-DLNNTQRY.js +0 -217
  212. package/dist/chunk-FX4V5JCF.js +0 -37
  213. package/dist/chunk-GC33DBKG.js +0 -143
  214. package/dist/chunk-NK4NR6MN.js +0 -173
  215. package/dist/chunk-PFU6FSXY.js +0 -430
  216. package/dist/chunk-QJEOPT2P.js +0 -330
  217. package/dist/chunk-QSGR43JM.js +0 -30
  218. package/dist/chunk-STR3NGWE.js +0 -3736
  219. package/dist/create-3DOO3RNH.js +0 -716
  220. package/dist/create-I7HV3RM6.js +0 -150
  221. package/dist/edit-K2AD335I.js +0 -237
  222. package/dist/edit-VO5XLIEL.js +0 -362
  223. package/dist/edit-stocks-and-prices-MHHQFWFA.js +0 -408
  224. package/dist/organization-LPYQRTQC.js +0 -303
  225. package/dist/prices-3OXV5RGY.js +0 -270
  226. package/dist/product-variant-detail-WV4KXVXR.js +0 -590
  227. package/dist/stock-GPC3BCL6.js +0 -500
  228. package/dist/{chunk-SDSEW72R.js → chunk-E2HQPY32.js} +3 -3
  229. package/dist/{chunk-6WY5X4PE.js → chunk-L7QKFC5N.js} +7 -7
  230. /package/dist/{chunk-CAS74NLJ.js → chunk-YV6MK4PZ.js} +0 -0
@@ -1,430 +0,0 @@
1
- import {
2
- useDebouncedSearch
3
- } from "./chunk-OVPAOBZB.js";
4
- import {
5
- useProductCategories
6
- } from "./chunk-RUE5BPC2.js";
7
- import {
8
- TextSkeleton
9
- } from "./chunk-INNFZYX2.js";
10
-
11
- // src/pages/products/common/components/category-combobox/category-combobox.tsx
12
- import {
13
- ArrowUturnLeft,
14
- EllipseMiniSolid,
15
- TriangleRightMini,
16
- TrianglesMini,
17
- XMarkMini
18
- } from "@medusajs/icons";
19
- import { Divider, Text, clx } from "@medusajs/ui";
20
- import { Popover as RadixPopover } from "radix-ui";
21
- import {
22
- Fragment,
23
- forwardRef,
24
- useCallback,
25
- useEffect,
26
- useImperativeHandle,
27
- useMemo,
28
- useRef,
29
- useState
30
- } from "react";
31
- import { Trans, useTranslation } from "react-i18next";
32
- import { jsx, jsxs } from "react/jsx-runtime";
33
- var TABLUAR_NUM_WIDTH = 8;
34
- var TAG_BASE_WIDTH = 28;
35
- var CategoryCombobox = forwardRef(({ value, onChange, className, isSingleSelect: _isSingleSelect, allowClear: _allowClear, ...props }, ref) => {
36
- const innerRef = useRef(null);
37
- useImperativeHandle(
38
- ref,
39
- () => innerRef.current,
40
- []
41
- );
42
- const [open, setOpen] = useState(false);
43
- const { i18n, t } = useTranslation();
44
- const [level, setLevel] = useState([]);
45
- const { searchValue, onSearchValueChange, query } = useDebouncedSearch();
46
- const { product_categories, isPending, isError, error } = useProductCategories(
47
- {
48
- q: query,
49
- parent_category_id: !searchValue ? getParentId(level) : void 0,
50
- include_descendants_tree: !searchValue
51
- },
52
- {
53
- enabled: open
54
- }
55
- );
56
- const [showLoading, setShowLoading] = useState(false);
57
- useEffect(() => {
58
- let timeoutId;
59
- if (isPending) {
60
- setShowLoading(true);
61
- } else {
62
- timeoutId = setTimeout(() => {
63
- setShowLoading(false);
64
- }, 150);
65
- }
66
- return () => {
67
- clearTimeout(timeoutId);
68
- };
69
- }, [isPending]);
70
- useEffect(() => {
71
- if (searchValue) {
72
- setLevel([]);
73
- }
74
- }, [searchValue]);
75
- function handleLevelUp(e) {
76
- e.preventDefault();
77
- e.stopPropagation();
78
- setLevel(level.slice(0, level.length - 1));
79
- innerRef.current?.focus();
80
- }
81
- function handleLevelDown(option) {
82
- return (e) => {
83
- e.preventDefault();
84
- e.stopPropagation();
85
- setLevel([...level, { id: option.value, label: option.label }]);
86
- innerRef.current?.focus();
87
- };
88
- }
89
- const handleSelect = useCallback(
90
- (option) => {
91
- return (e) => {
92
- e.preventDefault();
93
- e.stopPropagation();
94
- if (isSelected(value, option.value)) {
95
- onChange(value.filter((v) => v !== option.value));
96
- } else {
97
- onChange([...value, option.value]);
98
- }
99
- innerRef.current?.focus();
100
- };
101
- },
102
- [value, onChange]
103
- );
104
- function handleOpenChange(open2) {
105
- if (!open2) {
106
- onSearchValueChange("");
107
- setLevel([]);
108
- }
109
- if (open2) {
110
- requestAnimationFrame(() => {
111
- innerRef.current?.focus();
112
- });
113
- }
114
- setOpen(open2);
115
- }
116
- const options = getOptions(product_categories || []);
117
- const showTag = value.length > 0;
118
- const showSelected = !open && value.length > 0;
119
- const tagWidth = useMemo(() => {
120
- const count = value.length;
121
- const digits = count.toString().length;
122
- return TAG_BASE_WIDTH + digits * TABLUAR_NUM_WIDTH;
123
- }, [value]);
124
- const showLevelUp = !searchValue && level.length > 0;
125
- const [focusedIndex, setFocusedIndex] = useState(-1);
126
- const handleKeyDown = useCallback(
127
- (e) => {
128
- if (!open) {
129
- return;
130
- }
131
- const optionsLength = showLevelUp ? options.length + 1 : options.length;
132
- if (e.key === "ArrowDown") {
133
- e.preventDefault();
134
- setFocusedIndex((prev) => {
135
- const nextIndex = prev < optionsLength - 1 ? prev + 1 : prev;
136
- return nextIndex;
137
- });
138
- } else if (e.key === "ArrowUp") {
139
- e.preventDefault();
140
- setFocusedIndex((prev) => {
141
- return prev > 0 ? prev - 1 : prev;
142
- });
143
- } else if (e.key === "ArrowRight") {
144
- const index = showLevelUp ? focusedIndex - 1 : focusedIndex;
145
- const hasChildren = options[index]?.has_children;
146
- if (!hasChildren || !!searchValue) {
147
- return;
148
- }
149
- e.preventDefault();
150
- setLevel([
151
- ...level,
152
- {
153
- id: options[index].value,
154
- label: options[index].label
155
- }
156
- ]);
157
- setFocusedIndex(0);
158
- } else if (e.key === "Enter" && focusedIndex !== -1) {
159
- e.preventDefault();
160
- if (showLevelUp && focusedIndex === 0) {
161
- setLevel(level.slice(0, level.length - 1));
162
- setFocusedIndex(0);
163
- return;
164
- }
165
- const index = showLevelUp ? focusedIndex - 1 : focusedIndex;
166
- handleSelect(options[index])(e);
167
- }
168
- },
169
- [
170
- open,
171
- focusedIndex,
172
- options,
173
- level,
174
- handleSelect,
175
- searchValue,
176
- showLevelUp
177
- ]
178
- );
179
- useEffect(() => {
180
- window.addEventListener("keydown", handleKeyDown);
181
- return () => {
182
- window.removeEventListener("keydown", handleKeyDown);
183
- };
184
- }, [handleKeyDown]);
185
- if (isError) {
186
- throw error;
187
- }
188
- return /* @__PURE__ */ jsxs(RadixPopover.Root, { open, onOpenChange: handleOpenChange, children: [
189
- /* @__PURE__ */ jsx(
190
- RadixPopover.Anchor,
191
- {
192
- asChild: true,
193
- onClick: () => {
194
- if (!open) {
195
- handleOpenChange(true);
196
- }
197
- },
198
- children: /* @__PURE__ */ jsxs(
199
- "div",
200
- {
201
- "data-anchor": true,
202
- className: clx(
203
- "relative flex cursor-pointer items-center gap-x-2 overflow-hidden",
204
- "h-8 w-full rounded-md",
205
- "bg-ui-bg-field transition-fg shadow-borders-base",
206
- "has-[input:focus]:shadow-borders-interactive-with-active",
207
- "has-[:invalid]:shadow-borders-error has-[[aria-invalid=true]]:shadow-borders-error",
208
- "has-[:disabled]:bg-ui-bg-disabled has-[:disabled]:text-ui-fg-disabled has-[:disabled]:cursor-not-allowed",
209
- {
210
- // Fake the focus state as long as the popover is open,
211
- // this prevents the styling from flickering when navigating
212
- // between levels.
213
- "shadow-borders-interactive-with-active": open
214
- },
215
- className
216
- ),
217
- style: {
218
- "--tag-width": `${tagWidth}px`
219
- },
220
- children: [
221
- showTag && /* @__PURE__ */ jsxs(
222
- "button",
223
- {
224
- type: "button",
225
- onClick: (e) => {
226
- e.preventDefault();
227
- onChange([]);
228
- },
229
- className: "bg-ui-bg-base hover:bg-ui-bg-base-hover txt-compact-small-plus text-ui-fg-subtle focus-within:border-ui-fg-interactive transition-fg absolute start-0.5 top-0.5 flex h-[28px] items-center rounded-[4px] border py-[3px] ps-1.5 pe-1 outline-none",
230
- children: [
231
- /* @__PURE__ */ jsx("span", { className: "tabular-nums", children: value.length }),
232
- /* @__PURE__ */ jsx(XMarkMini, { className: "text-ui-fg-muted" })
233
- ]
234
- }
235
- ),
236
- showSelected && /* @__PURE__ */ jsx("div", { className: "pointer-events-none absolute inset-y-0 start-[calc(var(--tag-width)+8px)] flex size-full items-center", children: /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: t("general.selected") }) }),
237
- /* @__PURE__ */ jsx(
238
- "input",
239
- {
240
- ref: innerRef,
241
- value: searchValue,
242
- onChange: (e) => {
243
- onSearchValueChange(e.target.value);
244
- },
245
- className: clx(
246
- "txt-compact-small size-full cursor-pointer appearance-none bg-transparent pe-8 outline-none",
247
- "hover:bg-ui-bg-field-hover",
248
- "focus:cursor-text",
249
- "placeholder:text-ui-fg-muted",
250
- {
251
- "ps-2": !showTag,
252
- "ps-[calc(var(--tag-width)+8px)]": showTag
253
- }
254
- ),
255
- ...props
256
- }
257
- ),
258
- /* @__PURE__ */ jsx(
259
- "button",
260
- {
261
- type: "button",
262
- onClick: () => handleOpenChange(true),
263
- className: "text-ui-fg-muted transition-fg hover:bg-ui-bg-field-hover absolute end-0 flex size-8 items-center justify-center rounded-r outline-none",
264
- children: /* @__PURE__ */ jsx(TrianglesMini, { className: "text-ui-fg-muted" })
265
- }
266
- )
267
- ]
268
- }
269
- )
270
- }
271
- ),
272
- /* @__PURE__ */ jsxs(
273
- RadixPopover.Content,
274
- {
275
- sideOffset: 4,
276
- role: "listbox",
277
- className: clx(
278
- "shadow-elevation-flyout bg-ui-bg-base -start-2 z-50 w-[var(--radix-popper-anchor-width)] rounded-[8px]",
279
- "max-h-[200px] overflow-y-auto",
280
- "data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95",
281
- "data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95",
282
- "data-[side=bottom]:slide-in-from-top-2 data-[side=start]:slide-in-from-end-2 data-[side=end]:slide-in-from-start-2 data-[side=top]:slide-in-from-bottom-2"
283
- ),
284
- onInteractOutside: (e) => {
285
- e.preventDefault();
286
- const target = e.target;
287
- if (target.closest("[data-anchor]")) {
288
- return;
289
- }
290
- handleOpenChange(false);
291
- },
292
- children: [
293
- showLevelUp && /* @__PURE__ */ jsxs(Fragment, { children: [
294
- /* @__PURE__ */ jsx("div", { className: "p-1", children: /* @__PURE__ */ jsxs(
295
- "button",
296
- {
297
- "data-active": focusedIndex === 0,
298
- className: clx(
299
- "transition-fg grid w-full appearance-none grid-cols-[20px_1fr] items-center justify-center gap-2 rounded-md px-2 py-1.5 text-start outline-none",
300
- "data-[active=true]:bg-ui-bg-field-hover"
301
- ),
302
- type: "button",
303
- onClick: handleLevelUp,
304
- onMouseEnter: () => setFocusedIndex(0),
305
- onMouseLeave: () => setFocusedIndex(-1),
306
- tabIndex: -1,
307
- children: [
308
- /* @__PURE__ */ jsx(ArrowUturnLeft, { className: "text-ui-fg-muted" }),
309
- /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: getParentLabel(level) })
310
- ]
311
- }
312
- ) }),
313
- /* @__PURE__ */ jsx(Divider, {})
314
- ] }),
315
- /* @__PURE__ */ jsxs("div", { className: "p-1", children: [
316
- options.length > 0 && !showLoading && options.map((option, index) => /* @__PURE__ */ jsxs(
317
- "div",
318
- {
319
- className: clx(
320
- "transition-fg bg-ui-bg-base grid cursor-pointer grid-cols-1 items-center gap-2 overflow-hidden",
321
- {
322
- "grid-cols-[1fr_32px]": option.has_children && !searchValue
323
- }
324
- ),
325
- children: [
326
- /* @__PURE__ */ jsxs(
327
- "button",
328
- {
329
- "data-active": showLevelUp ? focusedIndex === index + 1 : focusedIndex === index,
330
- type: "button",
331
- role: "option",
332
- "aria-selected": false,
333
- className: clx(
334
- "grid h-full w-full appearance-none grid-cols-[20px_1fr] items-center gap-2 overflow-hidden rounded-md px-2 py-1.5 text-start outline-none",
335
- "data-[active=true]:bg-ui-bg-field-hover"
336
- ),
337
- onClick: handleSelect(option),
338
- onMouseEnter: () => setFocusedIndex(showLevelUp ? index + 1 : index),
339
- onMouseLeave: () => setFocusedIndex(-1),
340
- tabIndex: -1,
341
- children: [
342
- /* @__PURE__ */ jsx("div", { className: "flex size-5 items-center justify-center", children: isSelected(value, option.value) && /* @__PURE__ */ jsx(EllipseMiniSolid, {}) }),
343
- /* @__PURE__ */ jsx(
344
- Text,
345
- {
346
- as: "span",
347
- size: "small",
348
- leading: "compact",
349
- className: "w-full truncate",
350
- children: option.label
351
- }
352
- )
353
- ]
354
- }
355
- ),
356
- option.has_children && !searchValue && /* @__PURE__ */ jsx(
357
- "button",
358
- {
359
- className: clx(
360
- "text-ui-fg-muted flex size-8 appearance-none items-center justify-center rounded-md outline-none",
361
- "hover:bg-ui-bg-base-hover active:bg-ui-bg-base-pressed"
362
- ),
363
- type: "button",
364
- onClick: handleLevelDown(option),
365
- tabIndex: -1,
366
- children: /* @__PURE__ */ jsx(TriangleRightMini, { className: "rtl:rotate-180" })
367
- }
368
- )
369
- ]
370
- },
371
- option.value
372
- )),
373
- showLoading && Array.from({ length: 5 }).map((_, index) => /* @__PURE__ */ jsxs(
374
- "div",
375
- {
376
- className: "grid grid-cols-[20px_1fr_20px] gap-2 px-2 py-1.5",
377
- children: [
378
- /* @__PURE__ */ jsx("div", {}),
379
- /* @__PURE__ */ jsx(TextSkeleton, { size: "small", leading: "compact" }),
380
- /* @__PURE__ */ jsx("div", {})
381
- ]
382
- },
383
- index
384
- )),
385
- options.length === 0 && !showLoading && /* @__PURE__ */ jsx("div", { className: "px-2 py-1.5", children: /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", children: query ? /* @__PURE__ */ jsx(
386
- Trans,
387
- {
388
- i18n,
389
- i18nKey: "general.noResultsTitle",
390
- tOptions: {
391
- query
392
- },
393
- components: [/* @__PURE__ */ jsx("span", { className: "font-medium" }, "query")]
394
- }
395
- ) : t("general.noResultsTitle") }) })
396
- ] })
397
- ]
398
- }
399
- )
400
- ] });
401
- });
402
- CategoryCombobox.displayName = "CategoryCombobox";
403
- function getParentId(level) {
404
- if (!level.length) {
405
- return "null";
406
- }
407
- return level[level.length - 1].id;
408
- }
409
- function getParentLabel(level) {
410
- if (!level.length) {
411
- return null;
412
- }
413
- return level[level.length - 1].label;
414
- }
415
- function getOptions(categories) {
416
- return categories.map((cat) => {
417
- return {
418
- value: cat.id,
419
- label: cat.name,
420
- has_children: cat.category_children?.length > 0
421
- };
422
- });
423
- }
424
- function isSelected(values, value) {
425
- return values.includes(value);
426
- }
427
-
428
- export {
429
- CategoryCombobox
430
- };