@medusajs/dashboard 2.10.4-preview-20250923150206 → 2.10.4-preview-20250923180156
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.
- package/dist/{add-campaign-promotions-FE4BXGVN.mjs → add-campaign-promotions-BWIP24MA.mjs} +6 -5
- package/dist/{api-key-management-detail-SAVBCKX7.mjs → api-key-management-detail-WGWZQCFC.mjs} +6 -4
- package/dist/{api-key-management-list-5DI3L4DV.mjs → api-key-management-list-QAMBWB7T.mjs} +5 -4
- package/dist/{api-key-management-sales-channels-WL5L5XWM.mjs → api-key-management-sales-channels-H5TVIHTV.mjs} +3 -2
- package/dist/app.css +89 -31
- package/dist/app.js +4681 -3651
- package/dist/app.mjs +7 -5
- package/dist/{campaign-create-AVBNHFC2.mjs → campaign-create-GRKYQY5D.mjs} +3 -2
- package/dist/{campaign-detail-KTOLZNTA.mjs → campaign-detail-EJD7LQCW.mjs} +13 -11
- package/dist/{campaign-list-G4MD3RPU.mjs → campaign-list-IDPRC2MD.mjs} +6 -5
- package/dist/{categories-metadata-GXWJ3HOG.mjs → categories-metadata-JFNWZA5D.mjs} +4 -2
- package/dist/{category-create-FOVB5MJ4.mjs → category-create-DJHTY4QX.mjs} +36 -14
- package/dist/{category-detail-ENUI5EFL.mjs → category-detail-CL3XCV7E.mjs} +9 -7
- package/dist/{category-edit-O4ZSANE5.mjs → category-edit-JQQX7IZZ.mjs} +34 -14
- package/dist/{category-list-UI6W5KF5.mjs → category-list-FOCNQKPH.mjs} +5 -4
- package/dist/{category-products-ZG5QDWSW.mjs → category-products-UZEG63WY.mjs} +6 -4
- package/dist/{chunk-KMUDF36P.mjs → chunk-2252SSK6.mjs} +1 -1
- package/dist/{chunk-SMHXCFRS.mjs → chunk-4CGHNQP2.mjs} +28 -15
- package/dist/chunk-5U3FFMC7.mjs +84 -0
- package/dist/{chunk-JO6QASTJ.mjs → chunk-6RWF7BPW.mjs} +1 -1
- package/dist/{chunk-JHXKKOHO.mjs → chunk-7JJTWGHU.mjs} +49 -15
- package/dist/{chunk-5WKYR6PY.mjs → chunk-BM5ZIV5V.mjs} +1 -1
- package/dist/{chunk-OGHQ6VJI.mjs → chunk-BSBCIU6C.mjs} +0 -5
- package/dist/{chunk-IINWRJA6.mjs → chunk-CAZKNJTG.mjs} +316 -266
- package/dist/{chunk-2PMSBTXI.mjs → chunk-CD7VQIPA.mjs} +11 -11
- package/dist/{chunk-NRBOPOMS.mjs → chunk-CU5EFQSB.mjs} +1 -1
- package/dist/{chunk-J5E7MQSS.mjs → chunk-CY33DS7K.mjs} +6 -0
- package/dist/{chunk-7VJK6HNE.mjs → chunk-EYL2JACT.mjs} +4 -4
- package/dist/{chunk-R2NWOCML.mjs → chunk-FUQ27NT5.mjs} +7 -1
- package/dist/{chunk-74K7HGNI.mjs → chunk-FXG2Z3QT.mjs} +3 -2
- package/dist/{chunk-2RQLKDBF.mjs → chunk-GIZFNLKK.mjs} +103 -96
- package/dist/{chunk-AOFGTNG6.mjs → chunk-HQKGZADC.mjs} +6 -1
- package/dist/{chunk-LBIOZZPA.mjs → chunk-HWKLNKOY.mjs} +1 -1
- package/dist/{chunk-S2UEWRDA.mjs → chunk-IL5IMREK.mjs} +59 -49
- package/dist/{chunk-SCBXRJPV.mjs → chunk-IRO6DO7J.mjs} +1 -1
- package/dist/{chunk-T7G2CURS.mjs → chunk-IVZ6BMDB.mjs} +1 -0
- package/dist/{chunk-XGJ5DXXG.mjs → chunk-IYDBZI47.mjs} +11 -11
- package/dist/{chunk-OKMF4YI7.mjs → chunk-K3OMOMRB.mjs} +25 -0
- package/dist/{chunk-2LPGQWPV.mjs → chunk-KTL6E2WT.mjs} +1 -1
- package/dist/{chunk-YWNHMIEQ.mjs → chunk-LJDVFJK7.mjs} +1 -1
- package/dist/{chunk-Q5DI5VYN.mjs → chunk-MLNUGLGT.mjs} +1 -1
- package/dist/{chunk-UWJBDOQD.mjs → chunk-NKVMOKZA.mjs} +41 -29
- package/dist/{chunk-UNM3LPTG.mjs → chunk-OQPVQGSH.mjs} +1 -1
- package/dist/{chunk-3NJTXRIY.mjs → chunk-OZPB6JBL.mjs} +5 -1
- package/dist/{chunk-FPJBF7VS.mjs → chunk-P2O6XTD4.mjs} +1 -1
- package/dist/{chunk-EFA7S5L3.mjs → chunk-PGTXMCSV.mjs} +1 -1
- package/dist/{chunk-D7H6ZNK4.mjs → chunk-PRLQLEEQ.mjs} +2 -0
- package/dist/{chunk-6AGMMT5H.mjs → chunk-RFP4O5GO.mjs} +3 -3
- package/dist/chunk-S4DMV3ZT.mjs +35 -0
- package/dist/{chunk-5NQ3X2JI.mjs → chunk-SNDSWB6B.mjs} +1 -1
- package/dist/{chunk-O74UDEWT.mjs → chunk-TKZK3YPU.mjs} +1 -1
- package/dist/{chunk-EE7SOCEQ.mjs → chunk-TOS3CYMH.mjs} +3 -3
- package/dist/{chunk-CGK6IVLN.mjs → chunk-U2FXUMKA.mjs} +1 -1
- package/dist/{chunk-CK3VFTZM.mjs → chunk-UKX2FFFV.mjs} +2 -2
- package/dist/{chunk-7YZF3THS.mjs → chunk-V53HAFWH.mjs} +1 -1
- package/dist/{chunk-S45XMWVD.mjs → chunk-WP5CXGGO.mjs} +1 -1
- package/dist/{chunk-Y4YXZY7R.mjs → chunk-YPDTZXV6.mjs} +1 -1
- package/dist/{chunk-JELVERJM.mjs → chunk-YPSSUJUZ.mjs} +32 -0
- package/dist/{chunk-XKXNQ2KV.mjs → chunk-ZCARHA6C.mjs} +1 -1
- package/dist/{collection-add-products-2ISNNIHD.mjs → collection-add-products-QTFBLLND.mjs} +6 -4
- package/dist/{collection-detail-OSX6NHNQ.mjs → collection-detail-ZEAUSZBJ.mjs} +8 -6
- package/dist/{collection-list-MPIYSHQJ.mjs → collection-list-V27JHDAD.mjs} +9 -7
- package/dist/{collection-metadata-EOFYXEQI.mjs → collection-metadata-JAEMZMU6.mjs} +4 -2
- package/dist/{customer-create-address-TPSDYZBN.mjs → customer-create-address-JOYBIPPN.mjs} +1 -1
- package/dist/{customer-detail-FCNRRZSW.mjs → customer-detail-YBOM6KGC.mjs} +7 -5
- package/dist/{customer-group-add-customers-ULPWTALS.mjs → customer-group-add-customers-YF2T323Z.mjs} +3 -2
- package/dist/{customer-group-detail-QI3QLJJL.mjs → customer-group-detail-72VFORGF.mjs} +7 -5
- package/dist/{customer-group-list-GPIKR66X.mjs → customer-group-list-UTC5ZCJZ.mjs} +6 -4
- package/dist/{customer-group-metadata-UPAPULMF.mjs → customer-group-metadata-YQCOIVQG.mjs} +2 -1
- package/dist/{customer-list-SINCBCOZ.mjs → customer-list-5IWEXYSW.mjs} +5 -4
- package/dist/{customer-metadata-5NPUMPZ2.mjs → customer-metadata-JZEJBH4V.mjs} +2 -1
- package/dist/{customers-add-customer-group-5TFTVDB6.mjs → customers-add-customer-group-ZUCFXW2U.mjs} +5 -3
- package/dist/{edit-inventory-item-attributes-KT7BSPZ7.mjs → edit-inventory-item-attributes-BMPRVCPN.mjs} +1 -1
- package/dist/{edit-reservation-EKH4RIAX.mjs → edit-reservation-QQTYP22N.mjs} +5 -0
- package/dist/{edit-rules-63NG4QVR.mjs → edit-rules-RY7JMYLR.mjs} +5 -3
- package/dist/{inventory-create-RIVJFJJQ.mjs → inventory-create-F5PSTEN2.mjs} +10 -4
- package/dist/{inventory-detail-5433AAQ2.mjs → inventory-detail-BO5E7KXO.mjs} +10 -8
- package/dist/{inventory-list-YMYF7QVP.mjs → inventory-list-HUYCKI2I.mjs} +5 -4
- package/dist/{inventory-metadata-FH4CHJBA.mjs → inventory-metadata-QGPVSAUI.mjs} +4 -2
- package/dist/{inventory-stock-D6E4LQRK.mjs → inventory-stock-VQNXCIOA.mjs} +5 -3
- package/dist/{location-create-LUP363ZB.mjs → location-create-22H74MFP.mjs} +1 -1
- package/dist/{location-detail-Z6ZDX6RY.mjs → location-detail-M4CYDTSY.mjs} +5 -3
- package/dist/{location-edit-26K26G23.mjs → location-edit-RNGPJ26L.mjs} +1 -1
- package/dist/{location-fulfillment-providers-45VXZMZI.mjs → location-fulfillment-providers-XVEQZCUD.mjs} +6 -4
- package/dist/{location-list-BKK2PAKF.mjs → location-list-NKIOBHG4.mjs} +4 -3
- package/dist/{location-sales-channels-2BOIPBBG.mjs → location-sales-channels-NSXV65ZM.mjs} +3 -2
- package/dist/{location-service-zone-create-RPFLBVV4.mjs → location-service-zone-create-D5QSFS3M.mjs} +4 -3
- package/dist/{location-service-zone-manage-areas-VEUUGPKF.mjs → location-service-zone-manage-areas-HKCALG4Q.mjs} +4 -3
- package/dist/{location-service-zone-shipping-option-create-NO3665DC.mjs → location-service-zone-shipping-option-create-I3HAEEFA.mjs} +14 -5
- package/dist/{location-service-zone-shipping-option-edit-TMXNX4VX.mjs → location-service-zone-shipping-option-edit-JYM6GHTA.mjs} +40 -28
- package/dist/{location-service-zone-shipping-option-pricing-U2SDK5DE.mjs → location-service-zone-shipping-option-pricing-FLB63UKY.mjs} +3 -2
- package/dist/{login-DSPNELTI.mjs → login-QOENXTB7.mjs} +2 -1
- package/dist/{order-allocate-items-J3ZHGC22.mjs → order-allocate-items-NO5SVLS6.mjs} +23 -11
- package/dist/{order-create-claim-V63BWLB5.mjs → order-create-claim-MOBLO4YM.mjs} +9 -6
- package/dist/{order-create-edit-NPF4UZ4D.mjs → order-create-edit-C75GUZJE.mjs} +8 -5
- package/dist/{order-create-exchange-RHIPPSKU.mjs → order-create-exchange-RCUALEXO.mjs} +9 -6
- package/dist/{order-create-fulfillment-4SSUHQ75.mjs → order-create-fulfillment-EZTEZ4CF.mjs} +10 -2
- package/dist/{order-create-refund-QVQC5ZP5.mjs → order-create-refund-4FAIESAN.mjs} +7 -1
- package/dist/{order-create-return-GVA6M2RY.mjs → order-create-return-AV4BEJDN.mjs} +7 -5
- package/dist/{order-create-shipment-TJAARKWA.mjs → order-create-shipment-PTUJKVWK.mjs} +4 -1
- package/dist/{order-detail-2MIN6B2I.mjs → order-detail-6XQLJ5TU.mjs} +5 -3
- package/dist/{order-edit-billing-address-QP2I5F3E.mjs → order-edit-billing-address-46CFUZGL.mjs} +3 -2
- package/dist/{order-edit-email-7WT7XTHB.mjs → order-edit-email-FOK5GQW2.mjs} +2 -1
- package/dist/{order-edit-shipping-address-3QFMQP4I.mjs → order-edit-shipping-address-WFN2SVKM.mjs} +3 -2
- package/dist/{order-list-ZCMNSZYB.mjs → order-list-OTPVQKU6.mjs} +7 -6
- package/dist/{order-metadata-YJS26DHK.mjs → order-metadata-COJNFRPZ.mjs} +4 -2
- package/dist/{order-receive-return-PZMMMUB2.mjs → order-receive-return-P4OPVOPM.mjs} +4 -2
- package/dist/{order-request-transfer-QBIZD36E.mjs → order-request-transfer-HRPCEL5L.mjs} +3 -2
- package/dist/{price-list-configuration-435QDWB2.mjs → price-list-configuration-HF3DARKG.mjs} +4 -3
- package/dist/{price-list-create-RXDH5CXF.mjs → price-list-create-FJ2FM6GL.mjs} +30 -14
- package/dist/{price-list-detail-PKIKOJ4H.mjs → price-list-detail-VNZ3Q426.mjs} +8 -6
- package/dist/{price-list-edit-ZGBOZYSC.mjs → price-list-edit-COHKW6UK.mjs} +49 -29
- package/dist/{price-list-list-C6NEB2R4.mjs → price-list-list-55WD2WAY.mjs} +5 -4
- package/dist/{price-list-prices-add-2CDPUSYA.mjs → price-list-prices-add-FMZKGOHD.mjs} +19 -10
- package/dist/{price-list-prices-edit-ENB4GJZT.mjs → price-list-prices-edit-SUZNOKK2.mjs} +3 -2
- package/dist/{product-attributes-ZZPEBDCK.mjs → product-attributes-5PLACMXK.mjs} +9 -7
- package/dist/{product-create-FCDCIDCH.mjs → product-create-6FMLIS5X.mjs} +17 -11
- package/dist/{product-create-variant-KJKQ6ROY.mjs → product-create-variant-KGBSFIKQ.mjs} +22 -8
- package/dist/{product-detail-2ZUONC23.mjs → product-detail-2BJJMCCO.mjs} +11 -9
- package/dist/{product-edit-G3Z6FCN6.mjs → product-edit-N5P7RVNS.mjs} +31 -18
- package/dist/{product-export-XERWEI5H.mjs → product-export-XA5POQKT.mjs} +3 -2
- package/dist/{product-import-AGFJMSVK.mjs → product-import-DYTT4YDA.mjs} +5 -3
- package/dist/{product-list-WGX66SGI.mjs → product-list-EUQX3NBE.mjs} +10 -8
- package/dist/{product-media-APQKPFTT.mjs → product-media-XJGAON6B.mjs} +4 -4
- package/dist/{product-metadata-NZ3HKO67.mjs → product-metadata-44VYAXZD.mjs} +4 -2
- package/dist/{product-organization-BYT4TKMZ.mjs → product-organization-FB6BVKKL.mjs} +10 -8
- package/dist/{product-prices-PCBMYYGV.mjs → product-prices-4ZV5EXX5.mjs} +2 -1
- package/dist/{product-sales-channels-UGPAXFAV.mjs → product-sales-channels-QBQDLU7Z.mjs} +3 -2
- package/dist/{product-shipping-profile-YDN4X6S2.mjs → product-shipping-profile-UZQSV54B.mjs} +9 -7
- package/dist/{product-stock-SUVEQZML.mjs → product-stock-PX5NAHH6.mjs} +7 -4
- package/dist/{product-tag-create-T6HVAQKN.mjs → product-tag-create-R4YSSXD6.mjs} +2 -1
- package/dist/{product-tag-detail-HOWUZC3P.mjs → product-tag-detail-XJEGQD7U.mjs} +12 -10
- package/dist/{product-tag-edit-WWQDNDRC.mjs → product-tag-edit-7JXF42HY.mjs} +2 -1
- package/dist/{product-tag-list-FAKSLONF.mjs → product-tag-list-GTUMQQ6V.mjs} +12 -10
- package/dist/{product-tag-metadata-6B56VEZU.mjs → product-tag-metadata-5QV3HMXJ.mjs} +4 -2
- package/dist/{product-type-detail-KN64HYUV.mjs → product-type-detail-CN74BB3Y.mjs} +8 -6
- package/dist/{product-type-list-6ZIWPIUH.mjs → product-type-list-MJLAGQYC.mjs} +5 -4
- package/dist/{product-type-metadata-F3FTI6OG.mjs → product-type-metadata-JPFREADV.mjs} +4 -2
- package/dist/{product-variant-detail-OUHBUY4J.mjs → product-variant-detail-BSLEUW5J.mjs} +7 -5
- package/dist/{product-variant-edit-NBYHDUJ5.mjs → product-variant-edit-VOW5633S.mjs} +8 -3
- package/dist/{product-variant-manage-inventory-items-TM3VAHBJ.mjs → product-variant-manage-inventory-items-LGRRKHT2.mjs} +1 -1
- package/dist/{product-variant-metadata-XDVLJYGQ.mjs → product-variant-metadata-KDSV47PE.mjs} +4 -2
- package/dist/{profile-detail-ROG22HHL.mjs → profile-detail-XYAQ2G36.mjs} +3 -2
- package/dist/{profile-edit-HSUQIQQH.mjs → profile-edit-7WD4FTRH.mjs} +31 -19
- package/dist/{promotion-add-campaign-7R26KU2U.mjs → promotion-add-campaign-JXBRCUXL.mjs} +3 -2
- package/dist/{promotion-create-UUOG52D5.mjs → promotion-create-YPX2R3ZB.mjs} +20 -7
- package/dist/{promotion-detail-6ZD7Z6BF.mjs → promotion-detail-VB5GZDCC.mjs} +7 -5
- package/dist/{promotion-edit-details-HQLYX4X4.mjs → promotion-edit-details-I5DYHQUM.mjs} +9 -1
- package/dist/{promotion-list-GI64LDWI.mjs → promotion-list-NAUTWXNU.mjs} +8 -7
- package/dist/refund-reason-create-CYHPXX2O.mjs +158 -0
- package/dist/refund-reason-edit-E2HDAQZI.mjs +144 -0
- package/dist/refund-reason-list-VBHGRLJJ.mjs +241 -0
- package/dist/{region-add-countries-Y4YAHDUZ.mjs → region-add-countries-6GSF4CKJ.mjs} +3 -2
- package/dist/{region-create-5Y3GIQBV.mjs → region-create-4C42KVB4.mjs} +30 -14
- package/dist/{region-detail-CWRFM6P3.mjs → region-detail-PB7EUSTD.mjs} +5 -4
- package/dist/{region-edit-JWQWCLM3.mjs → region-edit-CLE5VVRP.mjs} +21 -5
- package/dist/{region-list-FQNI7F37.mjs → region-list-52LF5S4S.mjs} +5 -4
- package/dist/{region-metadata-IQVB4ERU.mjs → region-metadata-NXD563F4.mjs} +4 -2
- package/dist/{reservation-create-7RFXWDXB.mjs → reservation-create-CBWJLYHP.mjs} +1 -1
- package/dist/{reservation-detail-RTGHD35L.mjs → reservation-detail-64MMXK7D.mjs} +6 -4
- package/dist/{reservation-list-UOC7RNRZ.mjs → reservation-list-YNG7YKG2.mjs} +5 -4
- package/dist/{reservation-metadata-WKJXBRLQ.mjs → reservation-metadata-4GZCEGM7.mjs} +4 -2
- package/dist/{reset-password-SXA6YKTJ.mjs → reset-password-ZCKXQZNQ.mjs} +1 -1
- package/dist/{return-reason-list-MOP7YWMZ.mjs → return-reason-list-FW7OYUOW.mjs} +8 -7
- package/dist/{sales-channel-add-products-OKVZJ6FI.mjs → sales-channel-add-products-EAWW7ADY.mjs} +6 -4
- package/dist/{sales-channel-create-3MPOMVPD.mjs → sales-channel-create-VW2UPYSI.mjs} +2 -0
- package/dist/{sales-channel-detail-WESBK6Q7.mjs → sales-channel-detail-3F3HFTD2.mjs} +8 -6
- package/dist/{sales-channel-edit-LSLAM7A4.mjs → sales-channel-edit-OA6QPIHW.mjs} +2 -0
- package/dist/{sales-channel-list-ADIJMXNV.mjs → sales-channel-list-R4HT6A7P.mjs} +6 -4
- package/dist/{sales-channel-metadata-2OQAHYB4.mjs → sales-channel-metadata-LAHTTRLQ.mjs} +4 -2
- package/dist/{shipping-option-type-create-3CGPGDYJ.mjs → shipping-option-type-create-IPKK5MRS.mjs} +2 -1
- package/dist/{shipping-option-type-detail-S23H2OGW.mjs → shipping-option-type-detail-NEQ4RA5F.mjs} +6 -4
- package/dist/{shipping-option-type-edit-IHE7XM6M.mjs → shipping-option-type-edit-CC64TWSB.mjs} +2 -1
- package/dist/{shipping-option-type-list-47GRJ6EC.mjs → shipping-option-type-list-3GTGTBK7.mjs} +8 -6
- package/dist/{shipping-profile-detail-FDUPDSH4.mjs → shipping-profile-detail-FS46IJZP.mjs} +3 -2
- package/dist/{shipping-profile-metadata-OXWOXAAR.mjs → shipping-profile-metadata-EPVLPEEM.mjs} +4 -2
- package/dist/{shipping-profiles-list-ZHJEUIKJ.mjs → shipping-profiles-list-QFOG5IDH.mjs} +5 -4
- package/dist/{store-add-currencies-R26SVHT5.mjs → store-add-currencies-W4MWOALR.mjs} +5 -2
- package/dist/{store-detail-4K7TW2TP.mjs → store-detail-PUOKMK4K.mjs} +7 -5
- package/dist/{store-edit-EU55TNFU.mjs → store-edit-3DU5MC25.mjs} +24 -12
- package/dist/{store-metadata-JP2CI7EF.mjs → store-metadata-JYIVRRLW.mjs} +4 -2
- package/dist/{tax-region-create-W3K5IFD3.mjs → tax-region-create-2GDG36NQ.mjs} +5 -4
- package/dist/{tax-region-detail-V2F2DONN.mjs → tax-region-detail-MQKBEBOZ.mjs} +9 -7
- package/dist/{tax-region-edit-CJPMYTBF.mjs → tax-region-edit-2H5ACSFG.mjs} +3 -2
- package/dist/{tax-region-list-NMM3LBPN.mjs → tax-region-list-SQQE2GUU.mjs} +6 -5
- package/dist/{tax-region-province-create-GIIU2G7K.mjs → tax-region-province-create-SBRFGWN3.mjs} +2 -2
- package/dist/{tax-region-province-detail-4PUQ5ADW.mjs → tax-region-province-detail-HNK2ZJWL.mjs} +8 -6
- package/dist/{tax-region-tax-override-create-3SCIOK4P.mjs → tax-region-tax-override-create-XZJ3EIFJ.mjs} +15 -9
- package/dist/{tax-region-tax-override-edit-P3QJKET3.mjs → tax-region-tax-override-edit-QHQHFI2Y.mjs} +15 -9
- package/dist/{tax-region-tax-rate-create-Z43M3JTQ.mjs → tax-region-tax-rate-create-JIV5FXUD.mjs} +1 -1
- package/dist/{tax-region-tax-rate-edit-RBF5D2MK.mjs → tax-region-tax-rate-edit-WU2ZQLZQ.mjs} +1 -1
- package/dist/{user-detail-VIVFFLOW.mjs → user-detail-ZIWKV6QD.mjs} +3 -2
- package/dist/{user-invite-W26LOOW7.mjs → user-invite-KUH4AI2L.mjs} +4 -3
- package/dist/{user-list-3YFYZFSK.mjs → user-list-TPBPZ7KJ.mjs} +4 -3
- package/dist/{user-metadata-ZURLDLGC.mjs → user-metadata-F6KRFYDW.mjs} +4 -2
- package/dist/{workflow-execution-detail-4R6AFFHV.mjs → workflow-execution-detail-JRJZATNU.mjs} +8 -3
- package/dist/{workflow-execution-list-5J3DQQRD.mjs → workflow-execution-list-5WL4L464.mjs} +4 -3
- package/package.json +9 -9
- package/src/components/common/action-menu/action-menu.tsx +3 -1
- package/src/components/common/json-view-section/json-view-section.tsx +4 -1
- package/src/components/common/sidebar-link/sidebar-link.tsx +1 -1
- package/src/components/common/switch-box/switch-box.tsx +2 -0
- package/src/components/data-grid/components/data-grid-root.tsx +9 -3
- package/src/components/data-grid/components/data-grid-toggleable-number-cell.tsx +2 -1
- package/src/components/filtering/filter-group/filter-group.tsx +5 -1
- package/src/components/filtering/order-by/order-by.tsx +4 -1
- package/src/components/forms/address-form/address-form.tsx +7 -2
- package/src/components/forms/metadata-form/metadata-form.tsx +6 -3
- package/src/components/inputs/combobox/combobox.tsx +11 -11
- package/src/components/inputs/country-select/country-select.tsx +1 -1
- package/src/components/inputs/province-select/province-select.tsx +1 -1
- package/src/components/layout/main-layout/main-layout.tsx +7 -5
- package/src/components/layout/settings-layout/settings-layout.tsx +4 -0
- package/src/components/layout/shell/shell.tsx +6 -6
- package/src/components/layout/user-menu/user-menu.tsx +12 -10
- package/src/components/search/search.tsx +5 -3
- package/src/components/table/data-table/data-table-order-by/data-table-order-by.tsx +4 -1
- package/src/components/table/data-table/data-table-root/data-table-root.tsx +3 -3
- package/src/dashboard-app/forms/form-extension-zone/form-extension-zone.tsx +1 -1
- package/src/dashboard-app/routes/get-route.map.tsx +36 -0
- package/src/hooks/api/refund-reasons.tsx +105 -10
- package/src/hooks/table/columns/index.ts +1 -0
- package/src/hooks/table/columns/use-refund-reason-table-columns.tsx +32 -0
- package/src/hooks/table/query/index.ts +1 -0
- package/src/hooks/table/query/use-refund-reason-table-query.tsx +32 -0
- package/src/hooks/use-document-direction.tsx +54 -0
- package/src/i18n/translations/$schema.json +185 -65
- package/src/i18n/translations/en.json +32 -0
- package/src/providers/i18n-provider/i18n-provider.tsx +9 -4
- package/src/routes/campaigns/campaign-detail/components/campaign-budget/campaign-budget.tsx +3 -3
- package/src/routes/campaigns/common/components/create-campaign-form-fields/create-campaign-form-fields.tsx +4 -1
- package/src/routes/categories/category-create/components/create-category-form/create-category-details.tsx +12 -3
- package/src/routes/categories/category-create/components/create-category-form/create-category-form.tsx +4 -3
- package/src/routes/categories/category-detail/components/category-organize-section/category-organize-section.tsx +1 -1
- package/src/routes/categories/category-edit/components/edit-category-form/edit-category-form.tsx +12 -3
- package/src/routes/inventory/inventory-create/components/inventory-create-form/inventory-create-form.tsx +3 -1
- package/src/routes/inventory/inventory-detail/components/inventory-item-variants/variants-section.tsx +1 -1
- package/src/routes/locations/location-service-zone-shipping-option-create/components/create-shipping-options-form/create-shipping-option-details-form.tsx +4 -1
- package/src/routes/locations/location-service-zone-shipping-option-create/components/create-shipping-options-form/create-shipping-options-form.tsx +3 -1
- package/src/routes/locations/location-service-zone-shipping-option-edit/components/edit-region-form/edit-shipping-option-form.tsx +7 -2
- package/src/routes/orders/order-allocate-items/components/order-create-fulfillment-form/order-allocate-items-form.tsx +7 -2
- package/src/routes/orders/order-create-claim/components/claim-create-form/claim-create-form.tsx +2 -1
- package/src/routes/orders/order-create-edit/components/order-edit-create-form/order-edit-create-form.tsx +2 -1
- package/src/routes/orders/order-create-exchange/components/exchange-create-form/exchange-create-form.tsx +2 -1
- package/src/routes/orders/order-create-fulfillment/components/order-create-fulfillment-form/order-create-fulfillment-form.tsx +5 -1
- package/src/routes/orders/order-create-refund/components/create-refund-form/create-refund-form.tsx +3 -0
- package/src/routes/orders/order-create-return/components/return-create-form/return-create-form.tsx +2 -1
- package/src/routes/orders/order-create-shipment/components/order-create-shipment-form/order-create-shipment-form.tsx +2 -0
- package/src/routes/orders/order-receive-return/components/order-receive-return-form/order-receive-return-form.tsx +2 -1
- package/src/routes/price-lists/price-list-create/components/price-list-create-form/price-list-create-form.tsx +3 -1
- package/src/routes/price-lists/price-list-create/components/price-list-create-form/price-list-details-form.tsx +8 -2
- package/src/routes/price-lists/price-list-edit/components/price-list-edit-form/edit-price-list-form.tsx +12 -3
- package/src/routes/price-lists/price-list-prices-add/components/price-list-prices-add-form/price-list-prices-add-form.tsx +10 -5
- package/src/routes/product-variants/product-variant-edit/components/product-edit-variant-form/product-edit-variant-form.tsx +4 -0
- package/src/routes/products/common/components/category-combobox/category-combobox.tsx +11 -11
- package/src/routes/products/product-create/components/product-create-form/product-create-form.tsx +3 -1
- package/src/routes/products/product-create-variant/components/create-product-variant-form/create-product-variant-form.tsx +10 -5
- package/src/routes/products/product-create-variant/components/create-product-variant-form/details-tab.tsx +6 -1
- package/src/routes/products/product-edit/components/edit-product-form/edit-product-form.tsx +7 -2
- package/src/routes/products/product-media/components/product-media-gallery/product-media-gallery.tsx +2 -2
- package/src/routes/products/product-stock/hooks/use-product-stock-columns.tsx +2 -1
- package/src/routes/profile/profile-edit/components/edit-profile-form/edit-profile-form.tsx +9 -3
- package/src/routes/promotions/common/edit-rules/components/rules-form-field/rules-form-field.tsx +4 -0
- package/src/routes/promotions/promotion-add-campaign/components/add-campaign-promotion-form/add-campaign-promotion-form.tsx +8 -2
- package/src/routes/promotions/promotion-create/components/create-promotion-form/create-promotion-form.tsx +12 -3
- package/src/routes/promotions/promotion-edit-details/components/edit-promotion-form/edit-promotion-details-form.tsx +6 -1
- package/src/routes/refund-reasons/refund-reason-create/components/refund-reason-create-form/index.ts +1 -0
- package/src/routes/refund-reasons/refund-reason-create/components/refund-reason-create-form/refund-reason-create-form.tsx +131 -0
- package/src/routes/refund-reasons/refund-reason-create/index.ts +1 -0
- package/src/routes/refund-reasons/refund-reason-create/refund-reason-create.tsx +10 -0
- package/src/routes/refund-reasons/refund-reason-edit/components/refund-reason-edit-form/index.ts +1 -0
- package/src/routes/refund-reasons/refund-reason-edit/components/refund-reason-edit-form/refund-reason-edit-form.tsx +119 -0
- package/src/routes/refund-reasons/refund-reason-edit/index.ts +1 -0
- package/src/routes/refund-reasons/refund-reason-edit/refund-reason-edit.tsx +33 -0
- package/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/index.ts +1 -0
- package/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/refund-reason-list-table.tsx +130 -0
- package/src/routes/refund-reasons/refund-reason-list/index.ts +2 -0
- package/src/routes/refund-reasons/refund-reason-list/loader.ts +16 -0
- package/src/routes/refund-reasons/refund-reason-list/refund-reason-list.tsx +21 -0
- package/src/routes/regions/region-create/components/create-region-form/create-region-form.tsx +11 -2
- package/src/routes/regions/region-edit/components/edit-region-form/edit-region-form.tsx +11 -2
- package/src/routes/reservations/reservation-detail/components/edit-reservation/components/edit-reservation-form.tsx +3 -1
- package/src/routes/sales-channels/sales-channel-create/components/create-sales-channel-form/create-sales-channel-form.tsx +2 -0
- package/src/routes/sales-channels/sales-channel-edit/components/edit-sales-channel-form/edit-sales-channel-form.tsx +2 -0
- package/src/routes/store/store-add-currencies/components/add-currencies-form/add-currencies-form.tsx +2 -0
- package/src/routes/store/store-edit/components/edit-store-form/edit-store-form.tsx +7 -2
- package/src/routes/tax-regions/tax-region-tax-override-create/components/tax-region-override-create-form/tax-region-tax-override-create.tsx +3 -1
- package/src/routes/tax-regions/tax-region-tax-override-edit/components/tax-region-tax-override-edit-form/tax-region-tax-override-edit-form.tsx +3 -1
- package/src/routes/workflow-executions/workflow-execution-detail/components/workflow-execution-timeline-section/workflow-execution-timeline-section.tsx +3 -2
@@ -11,6 +11,7 @@ import { KeyboundForm } from "../../../../../components/utilities/keybound-form"
|
|
11
11
|
import { useUpdatePromotion } from "../../../../../hooks/api/promotions"
|
12
12
|
import { CreateCampaignFormFields } from "../../../../campaigns/common/components/create-campaign-form-fields"
|
13
13
|
import { CampaignDetails } from "./campaign-details"
|
14
|
+
import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
|
14
15
|
|
15
16
|
type EditPromotionFormProps = {
|
16
17
|
promotion: AdminPromotion
|
@@ -43,7 +44,7 @@ export const AddCampaignPromotionFields = ({
|
|
43
44
|
})
|
44
45
|
|
45
46
|
const selectedCampaign = campaigns.find((c) => c.id === watchCampaignId)
|
46
|
-
|
47
|
+
const direction = useDocumentDirection()
|
47
48
|
return (
|
48
49
|
<div className="flex flex-col gap-y-8">
|
49
50
|
<Form.Field
|
@@ -56,6 +57,7 @@ export const AddCampaignPromotionFields = ({
|
|
56
57
|
|
57
58
|
<Form.Control>
|
58
59
|
<RadioGroup
|
60
|
+
dir={direction}
|
59
61
|
className="grid grid-cols-1 gap-3"
|
60
62
|
{...field}
|
61
63
|
value={field.value}
|
@@ -105,7 +107,11 @@ export const AddCampaignPromotionFields = ({
|
|
105
107
|
</Form.Label>
|
106
108
|
|
107
109
|
<Form.Control>
|
108
|
-
<Select
|
110
|
+
<Select
|
111
|
+
dir={direction}
|
112
|
+
onValueChange={onChange}
|
113
|
+
{...field}
|
114
|
+
>
|
109
115
|
<Select.Trigger ref={ref}>
|
110
116
|
<Select.Value />
|
111
117
|
</Select.Trigger>
|
@@ -46,6 +46,7 @@ import { AddCampaignPromotionFields } from "../../../promotion-add-campaign/comp
|
|
46
46
|
import { Tab } from "./constants"
|
47
47
|
import { CreatePromotionSchema } from "./form-schema"
|
48
48
|
import { templates } from "./templates"
|
49
|
+
import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
|
49
50
|
|
50
51
|
const defaultValues = {
|
51
52
|
campaign_id: undefined,
|
@@ -80,7 +81,7 @@ export const CreatePromotionForm = () => {
|
|
80
81
|
|
81
82
|
const { t } = useTranslation()
|
82
83
|
const { handleSuccess } = useRouteModal()
|
83
|
-
|
84
|
+
const direction = useDocumentDirection()
|
84
85
|
const form = useForm<z.infer<typeof CreatePromotionSchema>>({
|
85
86
|
defaultValues,
|
86
87
|
resolver: zodResolver(CreatePromotionSchema),
|
@@ -364,6 +365,7 @@ export const CreatePromotionForm = () => {
|
|
364
365
|
<RouteFocusModal.Form form={form}>
|
365
366
|
<KeyboundForm className="flex h-full flex-col" onSubmit={handleSubmit}>
|
366
367
|
<ProgressTabs
|
368
|
+
dir={direction}
|
367
369
|
value={tab}
|
368
370
|
onValueChange={(tab) => handleTabChange(tab as Tab)}
|
369
371
|
className="flex h-full flex-col overflow-hidden"
|
@@ -417,6 +419,7 @@ export const CreatePromotionForm = () => {
|
|
417
419
|
|
418
420
|
<Form.Control>
|
419
421
|
<RadioGroup
|
422
|
+
dir={direction}
|
420
423
|
key={"template_id"}
|
421
424
|
className="flex-col gap-y-3"
|
422
425
|
{...field}
|
@@ -486,6 +489,7 @@ export const CreatePromotionForm = () => {
|
|
486
489
|
|
487
490
|
<Form.Control>
|
488
491
|
<RadioGroup
|
492
|
+
dir={direction}
|
489
493
|
className="flex gap-y-3"
|
490
494
|
{...field}
|
491
495
|
value={field.value}
|
@@ -530,6 +534,7 @@ export const CreatePromotionForm = () => {
|
|
530
534
|
|
531
535
|
<Form.Control>
|
532
536
|
<RadioGroup
|
537
|
+
dir={direction}
|
533
538
|
className="flex gap-y-3"
|
534
539
|
{...field}
|
535
540
|
value={field.value}
|
@@ -619,7 +624,8 @@ export const CreatePromotionForm = () => {
|
|
619
624
|
</div>
|
620
625
|
<Form.Control className="mr-2 self-center">
|
621
626
|
<Switch
|
622
|
-
|
627
|
+
dir="ltr"
|
628
|
+
className="mt-[2px] rtl:rotate-180"
|
623
629
|
checked={!!value}
|
624
630
|
onCheckedChange={onChange}
|
625
631
|
{...field}
|
@@ -647,6 +653,7 @@ export const CreatePromotionForm = () => {
|
|
647
653
|
</Form.Label>
|
648
654
|
<Form.Control>
|
649
655
|
<RadioGroup
|
656
|
+
dir={direction}
|
650
657
|
className="flex gap-y-3"
|
651
658
|
{...field}
|
652
659
|
onValueChange={field.onChange}
|
@@ -699,7 +706,8 @@ export const CreatePromotionForm = () => {
|
|
699
706
|
</Form.Label>
|
700
707
|
<Form.Control>
|
701
708
|
<RadioGroup
|
702
|
-
|
709
|
+
dir={direction}
|
710
|
+
className="flex gap-y-3"
|
703
711
|
{...field}
|
704
712
|
onValueChange={field.onChange}
|
705
713
|
>
|
@@ -889,6 +897,7 @@ export const CreatePromotionForm = () => {
|
|
889
897
|
|
890
898
|
<Form.Control>
|
891
899
|
<RadioGroup
|
900
|
+
dir={direction}
|
892
901
|
className="flex gap-y-3"
|
893
902
|
{...field}
|
894
903
|
onValueChange={field.onChange}
|
@@ -16,6 +16,7 @@ import {
|
|
16
16
|
getCurrencySymbol,
|
17
17
|
} from "../../../../../lib/data/currencies"
|
18
18
|
import { SwitchBox } from "../../../../../components/common/switch-box"
|
19
|
+
import { useDocumentDirection } from "../../../../../hooks/use-document-direction"
|
19
20
|
|
20
21
|
type EditPromotionFormProps = {
|
21
22
|
promotion: AdminPromotion
|
@@ -99,7 +100,7 @@ export const EditPromotionDetailsForm = ({
|
|
99
100
|
form.setValue("is_tax_inclusive", false)
|
100
101
|
}
|
101
102
|
}, [allocationWatchValue, form, promotion])
|
102
|
-
|
103
|
+
const direction = useDocumentDirection()
|
103
104
|
return (
|
104
105
|
<RouteDrawer.Form form={form}>
|
105
106
|
<KeyboundForm
|
@@ -117,6 +118,7 @@ export const EditPromotionDetailsForm = ({
|
|
117
118
|
<Form.Label>{t("promotions.form.status.label")}</Form.Label>
|
118
119
|
<Form.Control>
|
119
120
|
<RadioGroup
|
121
|
+
dir={direction}
|
120
122
|
className="flex-col gap-y-3"
|
121
123
|
{...field}
|
122
124
|
value={field.value}
|
@@ -162,6 +164,7 @@ export const EditPromotionDetailsForm = ({
|
|
162
164
|
<Form.Label>{t("promotions.form.method.label")}</Form.Label>
|
163
165
|
<Form.Control>
|
164
166
|
<RadioGroup
|
167
|
+
dir={direction}
|
165
168
|
className="flex-col gap-y-3"
|
166
169
|
{...field}
|
167
170
|
value={field.value}
|
@@ -242,6 +245,7 @@ export const EditPromotionDetailsForm = ({
|
|
242
245
|
</Form.Label>
|
243
246
|
<Form.Control>
|
244
247
|
<RadioGroup
|
248
|
+
dir={direction}
|
245
249
|
className="flex-col gap-y-3"
|
246
250
|
{...field}
|
247
251
|
onValueChange={field.onChange}
|
@@ -336,6 +340,7 @@ export const EditPromotionDetailsForm = ({
|
|
336
340
|
</Form.Label>
|
337
341
|
<Form.Control>
|
338
342
|
<RadioGroup
|
343
|
+
dir={direction}
|
339
344
|
className="flex-col gap-y-3"
|
340
345
|
{...field}
|
341
346
|
onValueChange={field.onChange}
|
package/src/routes/refund-reasons/refund-reason-create/components/refund-reason-create-form/index.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { RefundReasonCreateForm } from "./refund-reason-create-form"
|
@@ -0,0 +1,131 @@
|
|
1
|
+
import { zodResolver } from "@hookform/resolvers/zod"
|
2
|
+
import { Button, Heading, Input, Text, Textarea, toast } from "@medusajs/ui"
|
3
|
+
import { useForm } from "react-hook-form"
|
4
|
+
import { useTranslation } from "react-i18next"
|
5
|
+
import { z } from "zod"
|
6
|
+
import { Form } from "../../../../../components/common/form"
|
7
|
+
import {
|
8
|
+
RouteFocusModal,
|
9
|
+
useRouteModal,
|
10
|
+
} from "../../../../../components/modals"
|
11
|
+
import { KeyboundForm } from "../../../../../components/utilities/keybound-form"
|
12
|
+
import { useCreateRefundReason } from "../../../../../hooks/api"
|
13
|
+
|
14
|
+
const RefundReasonCreateSchema = z.object({
|
15
|
+
label: z.string().min(1),
|
16
|
+
description: z.string().optional(),
|
17
|
+
})
|
18
|
+
|
19
|
+
export const RefundReasonCreateForm = () => {
|
20
|
+
const { t } = useTranslation()
|
21
|
+
const { handleSuccess } = useRouteModal()
|
22
|
+
|
23
|
+
const form = useForm<z.infer<typeof RefundReasonCreateSchema>>({
|
24
|
+
defaultValues: {
|
25
|
+
label: "",
|
26
|
+
description: "",
|
27
|
+
},
|
28
|
+
resolver: zodResolver(RefundReasonCreateSchema),
|
29
|
+
})
|
30
|
+
|
31
|
+
const { mutateAsync, isPending } = useCreateRefundReason()
|
32
|
+
|
33
|
+
const handleSubmit = form.handleSubmit(async (data) => {
|
34
|
+
await mutateAsync(data, {
|
35
|
+
onSuccess: ({ refund_reason }) => {
|
36
|
+
toast.success(
|
37
|
+
t("refundReasons.create.successToast", {
|
38
|
+
label: refund_reason.label,
|
39
|
+
})
|
40
|
+
)
|
41
|
+
handleSuccess(`../`)
|
42
|
+
},
|
43
|
+
onError: (error) => {
|
44
|
+
toast.error(error.message)
|
45
|
+
},
|
46
|
+
})
|
47
|
+
})
|
48
|
+
|
49
|
+
return (
|
50
|
+
<RouteFocusModal.Form form={form}>
|
51
|
+
<KeyboundForm
|
52
|
+
className="flex size-full flex-col overflow-hidden"
|
53
|
+
onSubmit={handleSubmit}
|
54
|
+
>
|
55
|
+
<RouteFocusModal.Header />
|
56
|
+
<RouteFocusModal.Body className="flex flex-1 justify-center overflow-auto px-6 py-16">
|
57
|
+
<div className="flex w-full max-w-[720px] flex-col gap-y-8">
|
58
|
+
<div className="flex flex-col gap-y-1">
|
59
|
+
<RouteFocusModal.Title asChild>
|
60
|
+
<Heading>{t("refundReasons.create.header")}</Heading>
|
61
|
+
</RouteFocusModal.Title>
|
62
|
+
<RouteFocusModal.Description asChild>
|
63
|
+
<Text size="small" className="text-ui-fg-subtle">
|
64
|
+
{t("refundReasons.create.subtitle")}
|
65
|
+
</Text>
|
66
|
+
</RouteFocusModal.Description>
|
67
|
+
</div>
|
68
|
+
<div className="grid gap-4 md:grid-cols-2">
|
69
|
+
<Form.Field
|
70
|
+
control={form.control}
|
71
|
+
name="label"
|
72
|
+
render={({ field }) => {
|
73
|
+
return (
|
74
|
+
<Form.Item>
|
75
|
+
<Form.Label>
|
76
|
+
{t("refundReasons.fields.label.label")}
|
77
|
+
</Form.Label>
|
78
|
+
<Form.Control>
|
79
|
+
<Input
|
80
|
+
{...field}
|
81
|
+
placeholder={t(
|
82
|
+
"refundReasons.fields.label.placeholder"
|
83
|
+
)}
|
84
|
+
/>
|
85
|
+
</Form.Control>
|
86
|
+
<Form.ErrorMessage />
|
87
|
+
</Form.Item>
|
88
|
+
)
|
89
|
+
}}
|
90
|
+
/>
|
91
|
+
</div>
|
92
|
+
<Form.Field
|
93
|
+
control={form.control}
|
94
|
+
name="description"
|
95
|
+
render={({ field }) => {
|
96
|
+
return (
|
97
|
+
<Form.Item>
|
98
|
+
<Form.Label optional>
|
99
|
+
{t("refundReasons.fields.description.label")}
|
100
|
+
</Form.Label>
|
101
|
+
<Form.Control>
|
102
|
+
<Textarea
|
103
|
+
{...field}
|
104
|
+
placeholder={t(
|
105
|
+
"refundReasons.fields.description.placeholder"
|
106
|
+
)}
|
107
|
+
/>
|
108
|
+
</Form.Control>
|
109
|
+
<Form.ErrorMessage />
|
110
|
+
</Form.Item>
|
111
|
+
)
|
112
|
+
}}
|
113
|
+
/>
|
114
|
+
</div>
|
115
|
+
</RouteFocusModal.Body>
|
116
|
+
<RouteFocusModal.Footer>
|
117
|
+
<div className="flex items-center justify-end gap-2">
|
118
|
+
<RouteFocusModal.Close asChild>
|
119
|
+
<Button size="small" variant="secondary" type="button">
|
120
|
+
{t("actions.cancel")}
|
121
|
+
</Button>
|
122
|
+
</RouteFocusModal.Close>
|
123
|
+
<Button size="small" type="submit" isLoading={isPending}>
|
124
|
+
{t("actions.save")}
|
125
|
+
</Button>
|
126
|
+
</div>
|
127
|
+
</RouteFocusModal.Footer>
|
128
|
+
</KeyboundForm>
|
129
|
+
</RouteFocusModal.Form>
|
130
|
+
)
|
131
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { RefundReasonCreate as Component } from "./refund-reason-create"
|
@@ -0,0 +1,10 @@
|
|
1
|
+
import { RouteFocusModal } from "../../../components/modals"
|
2
|
+
import { RefundReasonCreateForm } from "./components/refund-reason-create-form"
|
3
|
+
|
4
|
+
export const RefundReasonCreate = () => {
|
5
|
+
return (
|
6
|
+
<RouteFocusModal>
|
7
|
+
<RefundReasonCreateForm />
|
8
|
+
</RouteFocusModal>
|
9
|
+
)
|
10
|
+
}
|
package/src/routes/refund-reasons/refund-reason-edit/components/refund-reason-edit-form/index.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { RefundReasonEditForm } from "./refund-reason-edit-form"
|
@@ -0,0 +1,119 @@
|
|
1
|
+
import { zodResolver } from "@hookform/resolvers/zod"
|
2
|
+
import { HttpTypes } from "@medusajs/types"
|
3
|
+
import { Button, Input, Textarea, toast } from "@medusajs/ui"
|
4
|
+
import { useForm } from "react-hook-form"
|
5
|
+
import { useTranslation } from "react-i18next"
|
6
|
+
import { z } from "zod"
|
7
|
+
|
8
|
+
import { Form } from "../../../../../components/common/form"
|
9
|
+
import { RouteDrawer, useRouteModal } from "../../../../../components/modals"
|
10
|
+
import { KeyboundForm } from "../../../../../components/utilities/keybound-form"
|
11
|
+
import { useUpdateRefundReason } from "../../../../../hooks/api/refund-reasons"
|
12
|
+
|
13
|
+
type RefundReasonEditFormProps = {
|
14
|
+
refundReason: HttpTypes.AdminRefundReason
|
15
|
+
}
|
16
|
+
|
17
|
+
const RefundReasonEditSchema = z.object({
|
18
|
+
label: z.string().min(1),
|
19
|
+
description: z.string().optional(),
|
20
|
+
})
|
21
|
+
|
22
|
+
export const RefundReasonEditForm = ({
|
23
|
+
refundReason,
|
24
|
+
}: RefundReasonEditFormProps) => {
|
25
|
+
const { t } = useTranslation()
|
26
|
+
const { handleSuccess } = useRouteModal()
|
27
|
+
|
28
|
+
const form = useForm<z.infer<typeof RefundReasonEditSchema>>({
|
29
|
+
defaultValues: {
|
30
|
+
label: refundReason.label,
|
31
|
+
description: refundReason.description ?? undefined,
|
32
|
+
},
|
33
|
+
resolver: zodResolver(RefundReasonEditSchema),
|
34
|
+
})
|
35
|
+
|
36
|
+
const { mutateAsync, isPending } = useUpdateRefundReason(refundReason.id)
|
37
|
+
|
38
|
+
const handleSubmit = form.handleSubmit(async (data) => {
|
39
|
+
await mutateAsync(data, {
|
40
|
+
onSuccess: ({ refund_reason }) => {
|
41
|
+
toast.success(
|
42
|
+
t("refundReasons.edit.successToast", {
|
43
|
+
label: refund_reason.label,
|
44
|
+
})
|
45
|
+
)
|
46
|
+
handleSuccess()
|
47
|
+
},
|
48
|
+
onError: (error) => {
|
49
|
+
toast.error(error.message)
|
50
|
+
},
|
51
|
+
})
|
52
|
+
})
|
53
|
+
|
54
|
+
return (
|
55
|
+
<RouteDrawer.Form form={form}>
|
56
|
+
<KeyboundForm
|
57
|
+
className="flex size-full flex-col overflow-hidden"
|
58
|
+
onSubmit={handleSubmit}
|
59
|
+
>
|
60
|
+
<RouteDrawer.Body className="flex flex-1 flex-col gap-y-4 overflow-auto">
|
61
|
+
<Form.Field
|
62
|
+
control={form.control}
|
63
|
+
name="label"
|
64
|
+
render={({ field }) => {
|
65
|
+
return (
|
66
|
+
<Form.Item>
|
67
|
+
<Form.Label>
|
68
|
+
{t("refundReasons.fields.label.label")}
|
69
|
+
</Form.Label>
|
70
|
+
<Form.Control>
|
71
|
+
<Input
|
72
|
+
{...field}
|
73
|
+
placeholder={t("refundReasons.fields.label.placeholder")}
|
74
|
+
/>
|
75
|
+
</Form.Control>
|
76
|
+
<Form.ErrorMessage />
|
77
|
+
</Form.Item>
|
78
|
+
)
|
79
|
+
}}
|
80
|
+
/>
|
81
|
+
<Form.Field
|
82
|
+
control={form.control}
|
83
|
+
name="description"
|
84
|
+
render={({ field }) => {
|
85
|
+
return (
|
86
|
+
<Form.Item>
|
87
|
+
<Form.Label optional>
|
88
|
+
{t("refundReasons.fields.description.label")}
|
89
|
+
</Form.Label>
|
90
|
+
<Form.Control>
|
91
|
+
<Textarea
|
92
|
+
{...field}
|
93
|
+
placeholder={t(
|
94
|
+
"refundReasons.fields.description.placeholder"
|
95
|
+
)}
|
96
|
+
/>
|
97
|
+
</Form.Control>
|
98
|
+
<Form.ErrorMessage />
|
99
|
+
</Form.Item>
|
100
|
+
)
|
101
|
+
}}
|
102
|
+
/>
|
103
|
+
</RouteDrawer.Body>
|
104
|
+
<RouteDrawer.Footer>
|
105
|
+
<div className="flex items-center justify-end gap-x-2">
|
106
|
+
<RouteDrawer.Close asChild>
|
107
|
+
<Button variant="secondary" size="small" type="button">
|
108
|
+
{t("actions.cancel")}
|
109
|
+
</Button>
|
110
|
+
</RouteDrawer.Close>
|
111
|
+
<Button size="small" type="submit" isLoading={isPending}>
|
112
|
+
{t("actions.save")}
|
113
|
+
</Button>
|
114
|
+
</div>
|
115
|
+
</RouteDrawer.Footer>
|
116
|
+
</KeyboundForm>
|
117
|
+
</RouteDrawer.Form>
|
118
|
+
)
|
119
|
+
}
|
@@ -0,0 +1 @@
|
|
1
|
+
export { RefundReasonEdit as Component } from "./refund-reason-edit"
|
@@ -0,0 +1,33 @@
|
|
1
|
+
import { Heading } from "@medusajs/ui"
|
2
|
+
import { useTranslation } from "react-i18next"
|
3
|
+
import { useParams } from "react-router-dom"
|
4
|
+
import { RouteDrawer } from "../../../components/modals"
|
5
|
+
import { useRefundReason } from "../../../hooks/api/refund-reasons"
|
6
|
+
import { RefundReasonEditForm } from "./components/refund-reason-edit-form"
|
7
|
+
|
8
|
+
export const RefundReasonEdit = () => {
|
9
|
+
const { id } = useParams()
|
10
|
+
const { t } = useTranslation()
|
11
|
+
|
12
|
+
const { refund_reason, isPending, isError, error } = useRefundReason(id!)
|
13
|
+
|
14
|
+
const ready = !isPending && !!refund_reason
|
15
|
+
|
16
|
+
if (isError) {
|
17
|
+
throw error
|
18
|
+
}
|
19
|
+
|
20
|
+
return (
|
21
|
+
<RouteDrawer>
|
22
|
+
<RouteDrawer.Header>
|
23
|
+
<RouteDrawer.Title asChild>
|
24
|
+
<Heading>{t("refundReasons.edit.header")}</Heading>
|
25
|
+
</RouteDrawer.Title>
|
26
|
+
<RouteDrawer.Description className="sr-only">
|
27
|
+
{t("refundReasons.edit.subtitle")}
|
28
|
+
</RouteDrawer.Description>
|
29
|
+
</RouteDrawer.Header>
|
30
|
+
{ready && <RefundReasonEditForm refundReason={refund_reason} />}
|
31
|
+
</RouteDrawer>
|
32
|
+
)
|
33
|
+
}
|
package/src/routes/refund-reasons/refund-reason-list/components/refund-reason-list-table/index.ts
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
export { RefundReasonListTable } from "./refund-reason-list-table"
|
@@ -0,0 +1,130 @@
|
|
1
|
+
import { PencilSquare, Trash } from "@medusajs/icons"
|
2
|
+
import { HttpTypes } from "@medusajs/types"
|
3
|
+
import { Container, createDataTableColumnHelper, toast, usePrompt, } from "@medusajs/ui"
|
4
|
+
import { keepPreviousData } from "@tanstack/react-query"
|
5
|
+
import { useCallback, useMemo } from "react"
|
6
|
+
import { useTranslation } from "react-i18next"
|
7
|
+
import { useNavigate } from "react-router-dom"
|
8
|
+
import { DataTable } from "../../../../../components/data-table"
|
9
|
+
import { useDeleteRefundReasonLazy, useRefundReasons, } from "../../../../../hooks/api"
|
10
|
+
import { useRefundReasonTableColumns } from "../../../../../hooks/table/columns"
|
11
|
+
import { useRefundReasonTableQuery } from "../../../../../hooks/table/query"
|
12
|
+
|
13
|
+
const PAGE_SIZE = 20
|
14
|
+
|
15
|
+
export const RefundReasonListTable = () => {
|
16
|
+
const { t } = useTranslation()
|
17
|
+
const { searchParams } = useRefundReasonTableQuery({
|
18
|
+
pageSize: PAGE_SIZE,
|
19
|
+
})
|
20
|
+
|
21
|
+
const { refund_reasons, count, isPending, isError, error } = useRefundReasons(
|
22
|
+
searchParams,
|
23
|
+
{
|
24
|
+
placeholderData: keepPreviousData,
|
25
|
+
}
|
26
|
+
)
|
27
|
+
|
28
|
+
const columns = useColumns()
|
29
|
+
|
30
|
+
if (isError) {
|
31
|
+
throw error
|
32
|
+
}
|
33
|
+
|
34
|
+
return (
|
35
|
+
<Container className="divide-y px-0 py-0">
|
36
|
+
<DataTable
|
37
|
+
data={refund_reasons}
|
38
|
+
columns={columns}
|
39
|
+
rowCount={count}
|
40
|
+
pageSize={PAGE_SIZE}
|
41
|
+
getRowId={(row) => row.id}
|
42
|
+
heading={t("refundReasons.domain")}
|
43
|
+
subHeading={t("refundReasons.subtitle")}
|
44
|
+
emptyState={{
|
45
|
+
empty: {
|
46
|
+
heading: t("general.noRecordsMessage"),
|
47
|
+
},
|
48
|
+
filtered: {
|
49
|
+
heading: t("general.noRecordsMessage"),
|
50
|
+
description: t("general.noRecordsMessageFiltered"),
|
51
|
+
},
|
52
|
+
}}
|
53
|
+
actions={[
|
54
|
+
{
|
55
|
+
label: t("actions.create"),
|
56
|
+
to: "create",
|
57
|
+
},
|
58
|
+
]}
|
59
|
+
isLoading={isPending}
|
60
|
+
enableSearch={true}
|
61
|
+
/>
|
62
|
+
</Container>
|
63
|
+
)
|
64
|
+
}
|
65
|
+
|
66
|
+
const columnHelper = createDataTableColumnHelper<HttpTypes.AdminRefundReason>()
|
67
|
+
|
68
|
+
const useColumns = () => {
|
69
|
+
const { t } = useTranslation()
|
70
|
+
const prompt = usePrompt()
|
71
|
+
const navigate = useNavigate()
|
72
|
+
const base = useRefundReasonTableColumns()
|
73
|
+
|
74
|
+
const { mutateAsync } = useDeleteRefundReasonLazy()
|
75
|
+
|
76
|
+
const handleDelete = useCallback(
|
77
|
+
async (refundReason: HttpTypes.AdminRefundReason) => {
|
78
|
+
const confirm = await prompt({
|
79
|
+
title: t("general.areYouSure"),
|
80
|
+
description: t("refundReasons.delete.confirmation", {
|
81
|
+
label: refundReason.label,
|
82
|
+
}),
|
83
|
+
confirmText: t("actions.delete"),
|
84
|
+
cancelText: t("actions.cancel"),
|
85
|
+
})
|
86
|
+
|
87
|
+
if (!confirm) {
|
88
|
+
return
|
89
|
+
}
|
90
|
+
|
91
|
+
await mutateAsync(refundReason.id, {
|
92
|
+
onSuccess: () => {
|
93
|
+
toast.success(t("refundReasons.delete.successToast"))
|
94
|
+
},
|
95
|
+
onError: (e) => {
|
96
|
+
toast.error(e.message)
|
97
|
+
},
|
98
|
+
})
|
99
|
+
},
|
100
|
+
[t, prompt, mutateAsync]
|
101
|
+
)
|
102
|
+
|
103
|
+
return useMemo(
|
104
|
+
() => [
|
105
|
+
...base,
|
106
|
+
columnHelper.action({
|
107
|
+
actions: (ctx) => [
|
108
|
+
[
|
109
|
+
{
|
110
|
+
icon: <PencilSquare />,
|
111
|
+
label: t("actions.edit"),
|
112
|
+
onClick: () =>
|
113
|
+
navigate(
|
114
|
+
`/settings/refund-reasons/${ctx.row.original.id}/edit`
|
115
|
+
),
|
116
|
+
},
|
117
|
+
],
|
118
|
+
[
|
119
|
+
{
|
120
|
+
icon: <Trash />,
|
121
|
+
label: t("actions.delete"),
|
122
|
+
onClick: () => handleDelete(ctx.row.original),
|
123
|
+
},
|
124
|
+
],
|
125
|
+
],
|
126
|
+
}),
|
127
|
+
],
|
128
|
+
[base, handleDelete, navigate, t]
|
129
|
+
)
|
130
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import { refundReasonsQueryKeys } from "../../../hooks/api"
|
2
|
+
import { sdk } from "../../../lib/client"
|
3
|
+
import { queryClient } from "../../../lib/query-client"
|
4
|
+
|
5
|
+
const refundReasonListQuery = () => ({
|
6
|
+
queryKey: refundReasonsQueryKeys.list(),
|
7
|
+
queryFn: async () => sdk.admin.refundReason.list(),
|
8
|
+
})
|
9
|
+
|
10
|
+
export const refundReasonListLoader = async () => {
|
11
|
+
const query = refundReasonListQuery()
|
12
|
+
return (
|
13
|
+
queryClient.getQueryData(query.queryKey) ??
|
14
|
+
(await queryClient.fetchQuery(query))
|
15
|
+
)
|
16
|
+
}
|
@@ -0,0 +1,21 @@
|
|
1
|
+
import { SingleColumnPage } from "../../../components/layout/pages"
|
2
|
+
import { useExtension } from "../../../providers/extension-provider"
|
3
|
+
import { RefundReasonListTable } from "./components/refund-reason-list-table"
|
4
|
+
|
5
|
+
export const RefundReasonList = () => {
|
6
|
+
const { getWidgets } = useExtension()
|
7
|
+
|
8
|
+
return (
|
9
|
+
<SingleColumnPage
|
10
|
+
showMetadata={false}
|
11
|
+
showJSON={false}
|
12
|
+
hasOutlet
|
13
|
+
widgets={{
|
14
|
+
after: getWidgets("refund_reason.list.after"),
|
15
|
+
before: getWidgets("refund_reason.list.before"),
|
16
|
+
}}
|
17
|
+
>
|
18
|
+
<RefundReasonListTable />
|
19
|
+
</SingleColumnPage>
|
20
|
+
)
|
21
|
+
}
|