@mantajs/dashboard 0.1.12 → 0.1.14
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/LICENSE +21 -0
- package/README.md +253 -0
- package/dist/{api-key-management-detail-TM6K63HF.mjs → api-key-management-detail-SZR6LLZY.mjs} +16 -16
- package/dist/{api-key-management-sales-channels-4GOYD6BF.mjs → api-key-management-sales-channels-WZAGFYC5.mjs} +6 -6
- package/dist/app.css +0 -20
- package/dist/app.js +11156 -11279
- package/dist/app.mjs +9 -9
- package/dist/campaign-create-FJOECKGT.mjs +1 -1
- package/dist/{chunk-LISLAU2F.mjs → chunk-FBYTX6K7.mjs} +7 -7
- package/dist/{chunk-VHUQFKRO.mjs → chunk-M5AMBSF6.mjs} +188 -181
- package/dist/{collection-list-KLL2VLDE.mjs → collection-list-EFER73U6.mjs} +10 -10
- package/dist/{customer-detail-DN46Z4Z7.mjs → customer-detail-NCPDOSIN.mjs} +15 -15
- package/dist/{customer-group-list-UW5KXNKV.mjs → customer-group-list-KZHWADWX.mjs} +17 -17
- package/dist/{home-524EFXYO.mjs → home-KFQGXKRT.mjs} +1 -1
- package/dist/{inventory-detail-42PY5NFS.mjs → inventory-detail-2MFCIKDT.mjs} +16 -16
- package/dist/{inventory-stock-MCURFEYD.mjs → inventory-stock-3PPGJ2JD.mjs} +8 -9
- package/dist/{location-fulfillment-providers-KQUDIYAF.mjs → location-fulfillment-providers-TXNXNHRD.mjs} +16 -16
- package/dist/{location-list-YDMTR5QM.mjs → location-list-KVBA6J47.mjs} +4 -4
- package/dist/{location-sales-channels-WGVKHV3B.mjs → location-sales-channels-P6O7KJAO.mjs} +6 -6
- package/dist/{location-service-zone-shipping-option-create-5XHKSHIS.mjs → location-service-zone-shipping-option-create-XXHX5DWG.mjs} +15 -15
- package/dist/{location-service-zone-shipping-option-pricing-VTD5YQ7X.mjs → location-service-zone-shipping-option-pricing-5HN2Z5RB.mjs} +2 -2
- package/dist/{order-export-Z7RZH5EX.mjs → order-export-IFN234IN.mjs} +12 -12
- package/dist/{order-list-BXZST6UW.mjs → order-list-57XK2DRD.mjs} +10 -10
- package/dist/{product-attributes-NT25DQN6.mjs → product-attributes-TGLEKV7Y.mjs} +8 -8
- package/dist/{product-create-GZANVK54.mjs → product-create-IGJXOMQN.mjs} +28 -28
- package/dist/{product-detail-P3LEJNTC.mjs → product-detail-ZZMHLWWL.mjs} +19 -19
- package/dist/{product-edit-ZWEDI4DK.mjs → product-edit-AH2FVEYF.mjs} +8 -8
- package/dist/{product-export-TJYITBFD.mjs → product-export-TX7U6SYH.mjs} +10 -10
- package/dist/{product-list-7EB54CNP.mjs → product-list-RZNYCKTQ.mjs} +13 -13
- package/dist/{product-media-WN2GYSM3.mjs → product-media-CG4RFOTX.mjs} +2 -2
- package/dist/{product-organization-3PJP3Y43.mjs → product-organization-C4LU2WFS.mjs} +8 -8
- package/dist/{product-sales-channels-KZMXJISB.mjs → product-sales-channels-XBALPVAL.mjs} +6 -6
- package/dist/{product-tag-detail-JPH3QX6V.mjs → product-tag-detail-JPNWE5QK.mjs} +12 -12
- package/dist/{product-tag-list-AOR3RSJW.mjs → product-tag-list-KOYJZMGY.mjs} +12 -12
- package/dist/promotion-add-campaign-DO67QK6M.mjs +1 -1
- package/dist/{refund-reason-list-GKHO2WDS.mjs → refund-reason-list-YROTDEQW.mjs} +12 -12
- package/dist/{sales-channel-list-SWDVR3IS.mjs → sales-channel-list-BHMHTVP5.mjs} +13 -13
- package/dist/{tax-region-detail-D22AOV54.mjs → tax-region-detail-JDWO7JFL.mjs} +17 -17
- package/dist/{tax-region-province-detail-B5FBOF3U.mjs → tax-region-province-detail-NEYURIVX.mjs} +17 -17
- package/dist/{tax-region-tax-override-create-XDO7RON2.mjs → tax-region-tax-override-create-EBTFIY7C.mjs} +19 -19
- package/dist/{tax-region-tax-override-edit-3RTRDVDI.mjs → tax-region-tax-override-edit-UUKEKERW.mjs} +15 -15
- package/dist/{user-list-XFW3SHWQ.mjs → user-list-YTZQNYSO.mjs} +5 -5
- package/dist/vite-plugin/index.js +79 -21
- package/dist/vite-plugin/index.mjs +79 -21
- package/package.json +29 -3
- package/src/app.tsx +1 -1
- package/src/components/layout/main-layout/main-layout.tsx +2 -2
- package/src/dashboard-app/dashboard-app.tsx +2 -1
- package/src/dashboard-app/forms/hooks.tsx +1 -1
- package/src/dashboard-app/links/utils.ts +1 -1
- package/src/dashboard-app/routes/get-route.map.tsx +0 -8
- package/src/dashboard-app/routes/merge-extension-routes.ts +13 -4
- package/src/dashboard-app/routes/utils.ts +1 -1
- package/src/dashboard-app/utils/sort-menu-items-by-rank.ts +9 -7
- package/src/index.css +2 -8
- package/src/routes/home/home.tsx +1 -1
- package/src/routes/inventory/inventory-stock/components/inventory-stock-form/inventory-stock-form.tsx +1 -1
- package/src/vite-env.d.ts +4 -4
- package/src/vite-plugin/index.ts +91 -21
- package/dist/dashboard-C2M5PQNL.mjs +0 -135
- package/src/routes/dashboard/dashboard.tsx +0 -174
- package/src/routes/dashboard/index.ts +0 -1
- package/dist/{add-campaign-promotions-H7C2TJIH.mjs → add-campaign-promotions-OYPGISTF.mjs} +6 -6
- package/dist/{add-locales-47HF5EWF.mjs → add-locales-F4BOSZNU.mjs} +10 -10
- package/dist/{api-key-management-list-DPFW5U7B.mjs → api-key-management-list-2T35G3KT.mjs} +4 -4
- package/dist/{campaign-budget-edit-NLP7CWGC.mjs → campaign-budget-edit-B5MSE26J.mjs} +3 -3
- package/dist/{campaign-detail-JWCA2BOR.mjs → campaign-detail-2SHJIBIS.mjs} +9 -9
- package/dist/{campaign-list-CXECHCH4.mjs → campaign-list-PEOTTWBA.mjs} +2 -2
- package/dist/{categories-metadata-WYRXRAIH.mjs → categories-metadata-4OV6MKAD.mjs} +7 -7
- package/dist/{category-create-RCWOWE4W.mjs → category-create-G2JK5KDF.mjs} +3 -3
- package/dist/{category-detail-3GT2DMFA.mjs → category-detail-2TPOPANL.mjs} +9 -9
- package/dist/{category-list-C3JVQYQF.mjs → category-list-WHGMREI2.mjs} +4 -4
- package/dist/{category-products-KHRVHYTY.mjs → category-products-LKS7U7MI.mjs} +13 -13
- package/dist/{chunk-RCTRYC7L.mjs → chunk-5FMYPGTX.mjs} +3 -3
- package/dist/{chunk-5WXY5NFW.mjs → chunk-DODQ3KJT.mjs} +3 -3
- package/dist/{chunk-QV7RN52R.mjs → chunk-JUZ754L2.mjs} +3 -3
- package/dist/{chunk-5YS7C2IA.mjs → chunk-KCWP7RF5.mjs} +3 -3
- package/dist/{chunk-K737PKHV.mjs → chunk-KSDXSKJ7.mjs} +3 -3
- package/dist/{collection-add-products-5U6UXZO5.mjs → collection-add-products-KTACHFJO.mjs} +12 -12
- package/dist/{collection-detail-62PCW5E4.mjs → collection-detail-7GFJ3MAT.mjs} +9 -9
- package/dist/{collection-metadata-72WIRMTB.mjs → collection-metadata-EVPJGU6A.mjs} +7 -7
- package/dist/{customer-group-add-customers-OHFJCJAX.mjs → customer-group-add-customers-XMR2WBXX.mjs} +6 -6
- package/dist/{customer-group-detail-W2JHFS5S.mjs → customer-group-detail-GWTXNJ3C.mjs} +13 -13
- package/dist/{customer-list-RRV4GEKX.mjs → customer-list-UI5EQDII.mjs} +2 -2
- package/dist/{customers-add-customer-group-CG24Z4SE.mjs → customers-add-customer-group-3XYEAGX4.mjs} +16 -16
- package/dist/{edit-rules-IMAV7O5S.mjs → edit-rules-OOIFNR4Z.mjs} +7 -7
- package/dist/{inventory-create-PUU6JZLV.mjs → inventory-create-HQNGRBCA.mjs} +16 -16
- package/dist/{inventory-list-R5DC2CUH.mjs → inventory-list-IPORNDO4.mjs} +4 -4
- package/dist/{inventory-metadata-S66XTCLQ.mjs → inventory-metadata-RC7I7WAH.mjs} +7 -7
- package/dist/{location-detail-ULAMYS5R.mjs → location-detail-POZVJTS7.mjs} +8 -8
- package/dist/{location-service-zone-create-QINLHG5Y.mjs → location-service-zone-create-J43WN6G4.mjs} +3 -3
- package/dist/{location-service-zone-manage-areas-T5DBC22A.mjs → location-service-zone-manage-areas-6ZPMKMSX.mjs} +3 -3
- package/dist/{location-service-zone-shipping-option-edit-GGMKFUXK.mjs → location-service-zone-shipping-option-edit-4CGPQ3VT.mjs} +3 -3
- package/dist/{login-WK4YY6KQ.mjs → login-IMDOL4BZ.mjs} +7 -7
- package/dist/{order-create-claim-AB33KP6F.mjs → order-create-claim-H75RPNWI.mjs} +20 -20
- package/dist/{order-create-edit-QKGYBXVY.mjs → order-create-edit-6ZOYALA6.mjs} +15 -15
- package/dist/{order-create-exchange-YYNNY3HT.mjs → order-create-exchange-BUZTV7O7.mjs} +20 -20
- package/dist/{order-create-fulfillment-B4UKJX5F.mjs → order-create-fulfillment-YJS27E6Y.mjs} +9 -9
- package/dist/{order-create-refund-7MWFY4N3.mjs → order-create-refund-MY2VRRFA.mjs} +15 -15
- package/dist/{order-create-return-UZ2BDDH5.mjs → order-create-return-W3KT5LKU.mjs} +8 -8
- package/dist/{order-create-shipment-626Z6TQY.mjs → order-create-shipment-QMFZC6ZM.mjs} +9 -9
- package/dist/{order-detail-HISCRCUI.mjs → order-detail-VYLTG5MG.mjs} +20 -20
- package/dist/{order-edit-billing-address-3KER7QBF.mjs → order-edit-billing-address-ZZ4KK47F.mjs} +9 -9
- package/dist/{order-edit-email-4VZBU7P3.mjs → order-edit-email-TCRXOK3W.mjs} +9 -9
- package/dist/{order-edit-shipping-address-RKSV6BV6.mjs → order-edit-shipping-address-C3K5IZRG.mjs} +9 -9
- package/dist/{order-metadata-3F3KZ3GQ.mjs → order-metadata-5ESVMAPY.mjs} +9 -9
- package/dist/{order-receive-return-DA7KQHSO.mjs → order-receive-return-7N3532LA.mjs} +10 -10
- package/dist/{order-request-transfer-FP4FQQXG.mjs → order-request-transfer-VUPJ2FET.mjs} +9 -9
- package/dist/{price-list-configuration-MTUTPHQE.mjs → price-list-configuration-OH3KGRDN.mjs} +5 -5
- package/dist/{price-list-create-6TE264GD.mjs → price-list-create-77TLF2P2.mjs} +14 -14
- package/dist/{price-list-detail-ZML6WEJG.mjs → price-list-detail-KDMHC6V4.mjs} +12 -12
- package/dist/{price-list-list-P4O3ONES.mjs → price-list-list-JJXWBCTJ.mjs} +5 -5
- package/dist/{price-list-prices-add-BZIVC7QO.mjs → price-list-prices-add-RWB7WFOE.mjs} +14 -14
- package/dist/{price-list-prices-edit-42U6MFTL.mjs → price-list-prices-edit-ICTQBHHM.mjs} +2 -2
- package/dist/{product-create-variant-5HSS43Z7.mjs → product-create-variant-7EIWI54C.mjs} +13 -13
- package/dist/{product-image-variants-edit-S336246K.mjs → product-image-variants-edit-DWZWPK64.mjs} +12 -12
- package/dist/{product-import-72B4A7NT.mjs → product-import-NPPDYH7E.mjs} +7 -7
- package/dist/{product-metadata-QC3M4MYP.mjs → product-metadata-YNSTB5IC.mjs} +7 -7
- package/dist/{product-prices-WEGXAXQO.mjs → product-prices-LAVS64HJ.mjs} +1 -1
- package/dist/{product-stock-C5XB6GSY.mjs → product-stock-PEGYC4J5.mjs} +11 -11
- package/dist/{product-tag-create-TBICZVLL.mjs → product-tag-create-DJQIEWOF.mjs} +7 -7
- package/dist/{product-tag-edit-3DQJQ5YE.mjs → product-tag-edit-76EA7NLB.mjs} +7 -7
- package/dist/{product-tag-metadata-MQ5SCB3J.mjs → product-tag-metadata-HMCF2W4C.mjs} +7 -7
- package/dist/{product-type-detail-N2MDJT6X.mjs → product-type-detail-IJ6FGSB2.mjs} +9 -9
- package/dist/{product-type-list-BZDXJ2HH.mjs → product-type-list-MQ2PW2IE.mjs} +2 -2
- package/dist/{product-type-metadata-WPX7ZGF4.mjs → product-type-metadata-5Y5M2IQP.mjs} +7 -7
- package/dist/{product-variant-detail-PR4HNZ5A.mjs → product-variant-detail-N7YAKUOH.mjs} +8 -8
- package/dist/{product-variant-edit-UZBA2SBV.mjs → product-variant-edit-L2T5V2HJ.mjs} +11 -11
- package/dist/{product-variant-metadata-3YFLI23Q.mjs → product-variant-metadata-VTAPSZ24.mjs} +7 -7
- package/dist/{promotion-create-QDNLZXBY.mjs → promotion-create-I7OYJO55.mjs} +11 -11
- package/dist/{promotion-detail-P2C5XMVT.mjs → promotion-detail-Q7MMF7CC.mjs} +8 -8
- package/dist/{promotion-edit-details-DDT7MQVJ.mjs → promotion-edit-details-6BSOOWQN.mjs} +4 -4
- package/dist/{promotion-list-JFBYPMYZ.mjs → promotion-list-L22GJE3P.mjs} +2 -2
- package/dist/{refund-reason-create-DY22FUI4.mjs → refund-reason-create-UFAJFFFX.mjs} +7 -7
- package/dist/{refund-reason-edit-GLTVSOTD.mjs → refund-reason-edit-HM42SYVK.mjs} +7 -7
- package/dist/{region-add-countries-7P7MDPO2.mjs → region-add-countries-2VAVXMJQ.mjs} +3 -3
- package/dist/{region-create-DIZZS7HR.mjs → region-create-NA7Y2LN4.mjs} +6 -6
- package/dist/{region-detail-PL2IAQ4V.mjs → region-detail-3BARMXUE.mjs} +2 -2
- package/dist/{region-edit-2XQSSCPV.mjs → region-edit-WAU347DP.mjs} +3 -3
- package/dist/{region-list-J7R4D635.mjs → region-list-V4R2REMH.mjs} +2 -2
- package/dist/{region-metadata-ISC23DPY.mjs → region-metadata-UZXRJHUJ.mjs} +7 -7
- package/dist/{reservation-detail-7HTLPUEY.mjs → reservation-detail-JRY5S7TS.mjs} +9 -9
- package/dist/{reservation-list-IQ7T3RF2.mjs → reservation-list-HSF22GFZ.mjs} +4 -4
- package/dist/{reservation-metadata-E55IGDZR.mjs → reservation-metadata-UQZXHUCV.mjs} +9 -9
- package/dist/{return-reason-list-EGGZ7O6G.mjs → return-reason-list-EYLIXARO.mjs} +4 -4
- package/dist/{sales-channel-add-products-M37VZP3G.mjs → sales-channel-add-products-WNHRWOZS.mjs} +14 -14
- package/dist/{sales-channel-detail-4E2NPXYK.mjs → sales-channel-detail-GKI35W5H.mjs} +10 -10
- package/dist/{sales-channel-metadata-TXFO5GWM.mjs → sales-channel-metadata-GY2GM5OH.mjs} +8 -8
- package/dist/{shipping-option-type-create-Q47KBJCI.mjs → shipping-option-type-create-WKI3RSYP.mjs} +7 -7
- package/dist/{shipping-option-type-detail-UM6CAZRM.mjs → shipping-option-type-detail-RJ75KMFI.mjs} +7 -7
- package/dist/{shipping-option-type-edit-UB3ORRBC.mjs → shipping-option-type-edit-4KGCJFG3.mjs} +7 -7
- package/dist/{shipping-option-type-list-H3VQNXL7.mjs → shipping-option-type-list-NAT6DIHR.mjs} +11 -11
- package/dist/{shipping-profile-metadata-3VGQN6KZ.mjs → shipping-profile-metadata-6D3FYDC4.mjs} +7 -7
- package/dist/{shipping-profiles-list-RCSILIP5.mjs → shipping-profiles-list-WRPIJBZZ.mjs} +4 -4
- package/dist/{store-add-currencies-JCQAADSP.mjs → store-add-currencies-OX2WXFMS.mjs} +3 -3
- package/dist/{store-add-locales-S2HKXAPY.mjs → store-add-locales-37443R2E.mjs} +10 -10
- package/dist/{store-detail-LRVBWDU5.mjs → store-detail-IIKGTBWO.mjs} +11 -11
- package/dist/{store-metadata-X7X7J26V.mjs → store-metadata-3P5YI3YQ.mjs} +7 -7
- package/dist/{tax-region-create-BH4AS4OU.mjs → tax-region-create-BFOF2UVZ.mjs} +7 -7
- package/dist/{tax-region-edit-AGUULZKA.mjs → tax-region-edit-I2DTFHH4.mjs} +7 -7
- package/dist/{tax-region-list-ZYTJG7HC.mjs → tax-region-list-P4LDOPZD.mjs} +1 -1
- package/dist/{translation-list-3EGUQC7L.mjs → translation-list-2QIA5IZ4.mjs} +7 -7
- package/dist/{translations-edit-IWXQCTSI.mjs → translations-edit-K7EMV5N3.mjs} +8 -8
- package/dist/{user-invite-AQQMVG4K.mjs → user-invite-GAGIM5DO.mjs} +5 -5
- package/dist/{user-metadata-CGFMJKPT.mjs → user-metadata-WQ57HEMA.mjs} +7 -7
- package/dist/{workflow-execution-detail-QKA2H2VA.mjs → workflow-execution-detail-RRZJQZV6.mjs} +7 -7
- package/dist/{workflow-execution-list-N6YFMSXW.mjs → workflow-execution-list-C3EJMVSZ.mjs} +4 -4
package/src/vite-plugin/index.ts
CHANGED
|
@@ -6,18 +6,61 @@ const MENU_VIRTUAL_ID = "virtual:dashboard/menu-config"
|
|
|
6
6
|
const MENU_RESOLVED_ID = "\0" + MENU_VIRTUAL_ID
|
|
7
7
|
|
|
8
8
|
const COMPONENT_EXTENSIONS = [".tsx", ".ts", ".jsx", ".js", ".mts", ".mjs"]
|
|
9
|
+
const COMPONENT_EXT_SET = new Set(COMPONENT_EXTENSIONS)
|
|
10
|
+
|
|
11
|
+
const VALID_LOADERS: Record<string, string> = {
|
|
12
|
+
tsx: "tsx",
|
|
13
|
+
ts: "ts",
|
|
14
|
+
jsx: "jsx",
|
|
15
|
+
js: "js",
|
|
16
|
+
mts: "ts",
|
|
17
|
+
mjs: "js",
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Recursively collect all component files from a directory tree.
|
|
22
|
+
* Includes a depth guard to prevent symlink loops and skips hidden
|
|
23
|
+
* entries / node_modules.
|
|
24
|
+
*/
|
|
25
|
+
function collectComponentFiles(dir: string, depth = 0): string[] {
|
|
26
|
+
if (depth > 20) return []
|
|
27
|
+
const results: string[] = []
|
|
28
|
+
let entries: fs.Dirent[]
|
|
29
|
+
try {
|
|
30
|
+
entries = fs.readdirSync(dir, { withFileTypes: true })
|
|
31
|
+
} catch {
|
|
32
|
+
return results
|
|
33
|
+
}
|
|
34
|
+
for (const entry of entries) {
|
|
35
|
+
if (entry.name.startsWith(".") || entry.name === "node_modules") continue
|
|
36
|
+
const fullPath = path.resolve(dir, entry.name)
|
|
37
|
+
if (entry.isDirectory()) {
|
|
38
|
+
results.push(...collectComponentFiles(fullPath, depth + 1))
|
|
39
|
+
} else if (entry.isFile()) {
|
|
40
|
+
const ext = path.extname(entry.name)
|
|
41
|
+
if (COMPONENT_EXT_SET.has(ext)) {
|
|
42
|
+
results.push(fullPath)
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return results
|
|
47
|
+
}
|
|
9
48
|
|
|
10
49
|
/**
|
|
11
50
|
* Extract a component name from a resolved file path.
|
|
12
51
|
*/
|
|
13
52
|
function getComponentName(filePath: string): string | null {
|
|
14
53
|
const normalized = filePath.replace(/\\/g, "/")
|
|
15
|
-
const parts = normalized.split("/")
|
|
54
|
+
const parts = normalized.split("/").filter(Boolean)
|
|
55
|
+
if (parts.length === 0) return null
|
|
56
|
+
|
|
16
57
|
const fileName = parts[parts.length - 1]
|
|
17
58
|
const baseName = fileName.replace(/\.(tsx?|jsx?|mts|mjs)$/, "")
|
|
18
59
|
|
|
60
|
+
if (!baseName) return null
|
|
61
|
+
|
|
19
62
|
if (baseName === "index") {
|
|
20
|
-
return parts.length >= 2 ? parts[parts.length - 2] : null
|
|
63
|
+
return parts.length >= 2 ? parts[parts.length - 2] || null : null
|
|
21
64
|
}
|
|
22
65
|
if (parts.length >= 2 && baseName === parts[parts.length - 2]) {
|
|
23
66
|
return baseName
|
|
@@ -38,17 +81,24 @@ export function customDashboardPlugin(): Plugin {
|
|
|
38
81
|
const overridesByName = new Map<string, string>()
|
|
39
82
|
|
|
40
83
|
if (fs.existsSync(componentsDir)) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
const name =
|
|
45
|
-
|
|
84
|
+
const collectedFiles = collectComponentFiles(componentsDir).sort()
|
|
85
|
+
for (const fullPath of collectedFiles) {
|
|
86
|
+
const fileName = path.basename(fullPath)
|
|
87
|
+
const name = fileName.replace(/\.(tsx?|jsx?|mts|mjs)$/, "")
|
|
88
|
+
if (name && name !== "index") {
|
|
89
|
+
if (overridesByName.has(name) && process.env.NODE_ENV === "development") {
|
|
90
|
+
console.warn(
|
|
91
|
+
`[custom-dashboard] Duplicate override "${name}": ${overridesByName.get(name)} will be replaced by ${fullPath}`
|
|
92
|
+
)
|
|
93
|
+
}
|
|
94
|
+
overridesByName.set(name, fullPath)
|
|
95
|
+
}
|
|
46
96
|
}
|
|
47
97
|
}
|
|
48
98
|
|
|
49
99
|
const hasOverrides = overridesByName.size > 0
|
|
50
100
|
|
|
51
|
-
if (hasOverrides) {
|
|
101
|
+
if (hasOverrides && process.env.NODE_ENV === "development") {
|
|
52
102
|
console.log("[custom-dashboard] overrides:", [...overridesByName.keys()])
|
|
53
103
|
}
|
|
54
104
|
|
|
@@ -82,15 +132,23 @@ export function customDashboardPlugin(): Plugin {
|
|
|
82
132
|
const normalized = args.path.replace(/\\/g, "/")
|
|
83
133
|
if (!normalized.includes("/dashboard/dist/")) return undefined
|
|
84
134
|
|
|
85
|
-
const srcEntry =
|
|
135
|
+
const srcEntry = normalized
|
|
86
136
|
.replace(/\/dist\/app\.(mjs|js)$/, "/src/app.tsx")
|
|
87
|
-
if (!fs.existsSync(srcEntry)) return undefined
|
|
88
137
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
138
|
+
let contents: string
|
|
139
|
+
try {
|
|
140
|
+
contents = fs.readFileSync(srcEntry, "utf-8")
|
|
141
|
+
} catch {
|
|
142
|
+
return undefined
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
if (process.env.NODE_ENV === "development") {
|
|
146
|
+
console.log(
|
|
147
|
+
`[custom-dashboard] Redirecting entry: ${args.path} → ${srcEntry}`
|
|
148
|
+
)
|
|
149
|
+
}
|
|
92
150
|
return {
|
|
93
|
-
contents
|
|
151
|
+
contents,
|
|
94
152
|
loader: "tsx",
|
|
95
153
|
resolveDir: path.dirname(srcEntry),
|
|
96
154
|
}
|
|
@@ -109,12 +167,23 @@ export function customDashboardPlugin(): Plugin {
|
|
|
109
167
|
if (componentName && overrides.has(componentName)) {
|
|
110
168
|
const overridePath = overrides.get(componentName)!
|
|
111
169
|
const ext = path.extname(overridePath).slice(1)
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
170
|
+
const loader = VALID_LOADERS[ext] || "tsx"
|
|
171
|
+
|
|
172
|
+
let contents: string
|
|
173
|
+
try {
|
|
174
|
+
contents = fs.readFileSync(overridePath, "utf-8")
|
|
175
|
+
} catch {
|
|
176
|
+
return undefined
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (process.env.NODE_ENV === "development") {
|
|
180
|
+
console.log(
|
|
181
|
+
`[custom-dashboard] Override: ${componentName} → ${overridePath}`
|
|
182
|
+
)
|
|
183
|
+
}
|
|
115
184
|
return {
|
|
116
|
-
contents
|
|
117
|
-
loader:
|
|
185
|
+
contents,
|
|
186
|
+
loader: loader as any,
|
|
118
187
|
resolveDir: path.dirname(overridePath),
|
|
119
188
|
}
|
|
120
189
|
}
|
|
@@ -137,8 +206,9 @@ export function customDashboardPlugin(): Plugin {
|
|
|
137
206
|
if (id !== MENU_RESOLVED_ID) return
|
|
138
207
|
const basePath = path.resolve(process.cwd(), "src/admin/menu.config")
|
|
139
208
|
for (const ext of COMPONENT_EXTENSIONS) {
|
|
140
|
-
|
|
141
|
-
|
|
209
|
+
const fullPath = (basePath + ext).replace(/\\/g, "/")
|
|
210
|
+
if (fs.existsSync(fullPath)) {
|
|
211
|
+
return `export { default } from "${fullPath}"`
|
|
142
212
|
}
|
|
143
213
|
}
|
|
144
214
|
return "export default null"
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
SingleColumnPage
|
|
3
|
-
} from "./chunk-GIZFNLKK.mjs";
|
|
4
|
-
import {
|
|
5
|
-
SingleColumnPageSkeleton
|
|
6
|
-
} from "./chunk-LPEUYMRK.mjs";
|
|
7
|
-
import {
|
|
8
|
-
useCustomers
|
|
9
|
-
} from "./chunk-5AFMB7XQ.mjs";
|
|
10
|
-
import {
|
|
11
|
-
useOrders
|
|
12
|
-
} from "./chunk-73OGFYCU.mjs";
|
|
13
|
-
import "./chunk-R3FD2XEU.mjs";
|
|
14
|
-
import {
|
|
15
|
-
useProducts
|
|
16
|
-
} from "./chunk-3TPUO6MD.mjs";
|
|
17
|
-
import "./chunk-7AXHHXCX.mjs";
|
|
18
|
-
import "./chunk-FXYH54JP.mjs";
|
|
19
|
-
import "./chunk-774WSTCC.mjs";
|
|
20
|
-
import "./chunk-NFEK63OE.mjs";
|
|
21
|
-
import "./chunk-QZ7TP4HQ.mjs";
|
|
22
|
-
|
|
23
|
-
// src/routes/dashboard/dashboard.tsx
|
|
24
|
-
import { Container, Heading, Text } from "@medusajs/ui";
|
|
25
|
-
import {
|
|
26
|
-
ShoppingCart,
|
|
27
|
-
CurrencyDollar,
|
|
28
|
-
Users,
|
|
29
|
-
SquaresPlus
|
|
30
|
-
} from "@medusajs/icons";
|
|
31
|
-
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
32
|
-
var StatCard = ({ title, value, subtitle, icon, isLoading }) => /* @__PURE__ */ jsx(Container, { className: "p-6", children: /* @__PURE__ */ jsxs("div", { className: "flex items-start justify-between", children: [
|
|
33
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-2", children: [
|
|
34
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: title }),
|
|
35
|
-
isLoading ? /* @__PURE__ */ jsx("div", { className: "h-8 w-20 animate-pulse rounded bg-ui-bg-component" }) : /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
36
|
-
/* @__PURE__ */ jsx(Text, { size: "xlarge", leading: "compact", weight: "plus", children: value }),
|
|
37
|
-
subtitle && /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: subtitle })
|
|
38
|
-
] })
|
|
39
|
-
] }),
|
|
40
|
-
/* @__PURE__ */ jsx("div", { className: "text-ui-fg-muted", children: icon })
|
|
41
|
-
] }) });
|
|
42
|
-
var Dashboard = () => {
|
|
43
|
-
const { orders, count: ordersCount, isPending: ordersLoading } = useOrders({
|
|
44
|
-
limit: 100,
|
|
45
|
-
offset: 0
|
|
46
|
-
});
|
|
47
|
-
const { products, count: productsCount, isPending: productsLoading } = useProducts({
|
|
48
|
-
limit: 1,
|
|
49
|
-
offset: 0
|
|
50
|
-
});
|
|
51
|
-
const { customers, count: customersCount, isPending: customersLoading } = useCustomers({
|
|
52
|
-
limit: 1,
|
|
53
|
-
offset: 0
|
|
54
|
-
});
|
|
55
|
-
const totalRevenue = orders?.reduce((sum, order) => {
|
|
56
|
-
return sum + (order.total || 0);
|
|
57
|
-
}, 0) || 0;
|
|
58
|
-
const formatCurrency = (amount) => {
|
|
59
|
-
return new Intl.NumberFormat("fr-FR", {
|
|
60
|
-
style: "currency",
|
|
61
|
-
currency: "EUR",
|
|
62
|
-
minimumFractionDigits: 0,
|
|
63
|
-
maximumFractionDigits: 0
|
|
64
|
-
}).format(amount / 100);
|
|
65
|
-
};
|
|
66
|
-
const recentOrders = orders?.slice(0, 5) || [];
|
|
67
|
-
const isLoading = ordersLoading || productsLoading || customersLoading;
|
|
68
|
-
if (isLoading && !orders && !products && !customers) {
|
|
69
|
-
return /* @__PURE__ */ jsx(SingleColumnPageSkeleton, { sections: 3 });
|
|
70
|
-
}
|
|
71
|
-
return /* @__PURE__ */ jsxs(SingleColumnPage, { widgets: { before: [], after: [] }, children: [
|
|
72
|
-
/* @__PURE__ */ jsx(Container, { className: "p-6", children: /* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-1", children: [
|
|
73
|
-
/* @__PURE__ */ jsx(Heading, { level: "h1", children: "Dashboard" }),
|
|
74
|
-
/* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "Vue d'ensemble de votre activit\xE9 commerciale." })
|
|
75
|
-
] }) }),
|
|
76
|
-
/* @__PURE__ */ jsxs("div", { className: "grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4", children: [
|
|
77
|
-
/* @__PURE__ */ jsx(
|
|
78
|
-
StatCard,
|
|
79
|
-
{
|
|
80
|
-
title: "Chiffre d'affaires",
|
|
81
|
-
value: formatCurrency(totalRevenue),
|
|
82
|
-
subtitle: `${ordersCount || 0} commandes`,
|
|
83
|
-
icon: /* @__PURE__ */ jsx(CurrencyDollar, {}),
|
|
84
|
-
isLoading: ordersLoading
|
|
85
|
-
}
|
|
86
|
-
),
|
|
87
|
-
/* @__PURE__ */ jsx(
|
|
88
|
-
StatCard,
|
|
89
|
-
{
|
|
90
|
-
title: "Commandes",
|
|
91
|
-
value: ordersCount || 0,
|
|
92
|
-
icon: /* @__PURE__ */ jsx(ShoppingCart, {}),
|
|
93
|
-
isLoading: ordersLoading
|
|
94
|
-
}
|
|
95
|
-
),
|
|
96
|
-
/* @__PURE__ */ jsx(
|
|
97
|
-
StatCard,
|
|
98
|
-
{
|
|
99
|
-
title: "Produits",
|
|
100
|
-
value: productsCount || 0,
|
|
101
|
-
icon: /* @__PURE__ */ jsx(SquaresPlus, {}),
|
|
102
|
-
isLoading: productsLoading
|
|
103
|
-
}
|
|
104
|
-
),
|
|
105
|
-
/* @__PURE__ */ jsx(
|
|
106
|
-
StatCard,
|
|
107
|
-
{
|
|
108
|
-
title: "Clients",
|
|
109
|
-
value: customersCount || 0,
|
|
110
|
-
icon: /* @__PURE__ */ jsx(Users, {}),
|
|
111
|
-
isLoading: customersLoading
|
|
112
|
-
}
|
|
113
|
-
)
|
|
114
|
-
] }),
|
|
115
|
-
/* @__PURE__ */ jsxs(Container, { className: "p-0", children: [
|
|
116
|
-
/* @__PURE__ */ jsx("div", { className: "px-6 py-4 border-b border-ui-border-base", children: /* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: "Commandes r\xE9centes" }) }),
|
|
117
|
-
/* @__PURE__ */ jsx("div", { className: "divide-y divide-ui-border-base", children: ordersLoading ? /* @__PURE__ */ jsx("div", { className: "flex items-center justify-center py-8", children: /* @__PURE__ */ jsx("div", { className: "h-6 w-6 animate-spin rounded-full border-2 border-ui-border-base border-t-ui-fg-base" }) }) : recentOrders.length === 0 ? /* @__PURE__ */ jsx("div", { className: "px-6 py-8 text-center", children: /* @__PURE__ */ jsx(Text, { className: "text-ui-fg-subtle", children: "Aucune commande pour le moment." }) }) : recentOrders.map((order) => /* @__PURE__ */ jsxs("div", { className: "flex items-center justify-between px-6 py-3", children: [
|
|
118
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col gap-y-0.5", children: [
|
|
119
|
-
/* @__PURE__ */ jsxs(Text, { size: "small", leading: "compact", weight: "plus", children: [
|
|
120
|
-
"#",
|
|
121
|
-
order.display_id
|
|
122
|
-
] }),
|
|
123
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle", children: new Date(order.created_at).toLocaleDateString("fr-FR") })
|
|
124
|
-
] }),
|
|
125
|
-
/* @__PURE__ */ jsxs("div", { className: "flex flex-col items-end gap-y-0.5", children: [
|
|
126
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", weight: "plus", children: formatCurrency(order.total || 0) }),
|
|
127
|
-
/* @__PURE__ */ jsx(Text, { size: "small", leading: "compact", className: "text-ui-fg-subtle capitalize", children: order.status })
|
|
128
|
-
] })
|
|
129
|
-
] }, order.id)) })
|
|
130
|
-
] })
|
|
131
|
-
] });
|
|
132
|
-
};
|
|
133
|
-
export {
|
|
134
|
-
Dashboard as Component
|
|
135
|
-
};
|
|
@@ -1,174 +0,0 @@
|
|
|
1
|
-
import { Container, Heading, Text } from "@medusajs/ui"
|
|
2
|
-
import {
|
|
3
|
-
ChartBar,
|
|
4
|
-
ShoppingCart,
|
|
5
|
-
CurrencyDollar,
|
|
6
|
-
Users,
|
|
7
|
-
BuildingStorefront,
|
|
8
|
-
SquaresPlus
|
|
9
|
-
} from "@medusajs/icons"
|
|
10
|
-
|
|
11
|
-
import { useOrders } from "../../hooks/api/orders"
|
|
12
|
-
import { useProducts } from "../../hooks/api/products"
|
|
13
|
-
import { useCustomers } from "../../hooks/api/customers"
|
|
14
|
-
import { SingleColumnPage } from "../../components/layout/pages"
|
|
15
|
-
import { SingleColumnPageSkeleton } from "../../components/common/skeleton"
|
|
16
|
-
|
|
17
|
-
type StatCardProps = {
|
|
18
|
-
title: string
|
|
19
|
-
value: string | number
|
|
20
|
-
subtitle?: string
|
|
21
|
-
icon: React.ReactNode
|
|
22
|
-
isLoading?: boolean
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
const StatCard = ({ title, value, subtitle, icon, isLoading }: StatCardProps) => (
|
|
26
|
-
<Container className="p-6">
|
|
27
|
-
<div className="flex items-start justify-between">
|
|
28
|
-
<div className="flex flex-col gap-y-2">
|
|
29
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
30
|
-
{title}
|
|
31
|
-
</Text>
|
|
32
|
-
{isLoading ? (
|
|
33
|
-
<div className="h-8 w-20 animate-pulse rounded bg-ui-bg-component" />
|
|
34
|
-
) : (
|
|
35
|
-
<>
|
|
36
|
-
<Text size="xlarge" leading="compact" weight="plus">
|
|
37
|
-
{value}
|
|
38
|
-
</Text>
|
|
39
|
-
{subtitle && (
|
|
40
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
41
|
-
{subtitle}
|
|
42
|
-
</Text>
|
|
43
|
-
)}
|
|
44
|
-
</>
|
|
45
|
-
)}
|
|
46
|
-
</div>
|
|
47
|
-
<div className="text-ui-fg-muted">{icon}</div>
|
|
48
|
-
</div>
|
|
49
|
-
</Container>
|
|
50
|
-
)
|
|
51
|
-
|
|
52
|
-
export const Dashboard = () => {
|
|
53
|
-
const { orders, count: ordersCount, isPending: ordersLoading } = useOrders({
|
|
54
|
-
limit: 100,
|
|
55
|
-
offset: 0,
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
const { products, count: productsCount, isPending: productsLoading } = useProducts({
|
|
59
|
-
limit: 1,
|
|
60
|
-
offset: 0,
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
const { customers, count: customersCount, isPending: customersLoading } = useCustomers({
|
|
64
|
-
limit: 1,
|
|
65
|
-
offset: 0,
|
|
66
|
-
})
|
|
67
|
-
|
|
68
|
-
// Calculate total revenue from orders
|
|
69
|
-
const totalRevenue = orders?.reduce((sum, order) => {
|
|
70
|
-
return sum + (order.total || 0)
|
|
71
|
-
}, 0) || 0
|
|
72
|
-
|
|
73
|
-
// Format currency
|
|
74
|
-
const formatCurrency = (amount: number) => {
|
|
75
|
-
return new Intl.NumberFormat("fr-FR", {
|
|
76
|
-
style: "currency",
|
|
77
|
-
currency: "EUR",
|
|
78
|
-
minimumFractionDigits: 0,
|
|
79
|
-
maximumFractionDigits: 0,
|
|
80
|
-
}).format(amount / 100)
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
// Get recent orders
|
|
84
|
-
const recentOrders = orders?.slice(0, 5) || []
|
|
85
|
-
|
|
86
|
-
const isLoading = ordersLoading || productsLoading || customersLoading
|
|
87
|
-
|
|
88
|
-
if (isLoading && !orders && !products && !customers) {
|
|
89
|
-
return <SingleColumnPageSkeleton sections={3} />
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
return (
|
|
93
|
-
<SingleColumnPage widgets={{ before: [], after: [] }}>
|
|
94
|
-
<Container className="p-6">
|
|
95
|
-
<div className="flex flex-col gap-y-1">
|
|
96
|
-
<Heading level="h1">Dashboard</Heading>
|
|
97
|
-
<Text className="text-ui-fg-subtle">
|
|
98
|
-
Vue d'ensemble de votre activité commerciale.
|
|
99
|
-
</Text>
|
|
100
|
-
</div>
|
|
101
|
-
</Container>
|
|
102
|
-
|
|
103
|
-
{/* Stats Grid */}
|
|
104
|
-
<div className="grid grid-cols-1 gap-4 md:grid-cols-2 lg:grid-cols-4">
|
|
105
|
-
<StatCard
|
|
106
|
-
title="Chiffre d'affaires"
|
|
107
|
-
value={formatCurrency(totalRevenue)}
|
|
108
|
-
subtitle={`${ordersCount || 0} commandes`}
|
|
109
|
-
icon={<CurrencyDollar />}
|
|
110
|
-
isLoading={ordersLoading}
|
|
111
|
-
/>
|
|
112
|
-
<StatCard
|
|
113
|
-
title="Commandes"
|
|
114
|
-
value={ordersCount || 0}
|
|
115
|
-
icon={<ShoppingCart />}
|
|
116
|
-
isLoading={ordersLoading}
|
|
117
|
-
/>
|
|
118
|
-
<StatCard
|
|
119
|
-
title="Produits"
|
|
120
|
-
value={productsCount || 0}
|
|
121
|
-
icon={<SquaresPlus />}
|
|
122
|
-
isLoading={productsLoading}
|
|
123
|
-
/>
|
|
124
|
-
<StatCard
|
|
125
|
-
title="Clients"
|
|
126
|
-
value={customersCount || 0}
|
|
127
|
-
icon={<Users />}
|
|
128
|
-
isLoading={customersLoading}
|
|
129
|
-
/>
|
|
130
|
-
</div>
|
|
131
|
-
|
|
132
|
-
{/* Recent Orders */}
|
|
133
|
-
<Container className="p-0">
|
|
134
|
-
<div className="px-6 py-4 border-b border-ui-border-base">
|
|
135
|
-
<Text size="small" leading="compact" weight="plus">
|
|
136
|
-
Commandes récentes
|
|
137
|
-
</Text>
|
|
138
|
-
</div>
|
|
139
|
-
<div className="divide-y divide-ui-border-base">
|
|
140
|
-
{ordersLoading ? (
|
|
141
|
-
<div className="flex items-center justify-center py-8">
|
|
142
|
-
<div className="h-6 w-6 animate-spin rounded-full border-2 border-ui-border-base border-t-ui-fg-base" />
|
|
143
|
-
</div>
|
|
144
|
-
) : recentOrders.length === 0 ? (
|
|
145
|
-
<div className="px-6 py-8 text-center">
|
|
146
|
-
<Text className="text-ui-fg-subtle">Aucune commande pour le moment.</Text>
|
|
147
|
-
</div>
|
|
148
|
-
) : (
|
|
149
|
-
recentOrders.map((order) => (
|
|
150
|
-
<div key={order.id} className="flex items-center justify-between px-6 py-3">
|
|
151
|
-
<div className="flex flex-col gap-y-0.5">
|
|
152
|
-
<Text size="small" leading="compact" weight="plus">
|
|
153
|
-
#{order.display_id}
|
|
154
|
-
</Text>
|
|
155
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle">
|
|
156
|
-
{new Date(order.created_at).toLocaleDateString("fr-FR")}
|
|
157
|
-
</Text>
|
|
158
|
-
</div>
|
|
159
|
-
<div className="flex flex-col items-end gap-y-0.5">
|
|
160
|
-
<Text size="small" leading="compact" weight="plus">
|
|
161
|
-
{formatCurrency(order.total || 0)}
|
|
162
|
-
</Text>
|
|
163
|
-
<Text size="small" leading="compact" className="text-ui-fg-subtle capitalize">
|
|
164
|
-
{order.status}
|
|
165
|
-
</Text>
|
|
166
|
-
</div>
|
|
167
|
-
</div>
|
|
168
|
-
))
|
|
169
|
-
)}
|
|
170
|
-
</div>
|
|
171
|
-
</Container>
|
|
172
|
-
</SingleColumnPage>
|
|
173
|
-
)
|
|
174
|
-
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export { Dashboard as Component } from "./dashboard"
|
|
@@ -13,14 +13,16 @@ import {
|
|
|
13
13
|
} from "./chunk-DTZXEQXZ.mjs";
|
|
14
14
|
import "./chunk-HQKGZADC.mjs";
|
|
15
15
|
import "./chunk-EMIHDNB7.mjs";
|
|
16
|
-
import "./chunk-IUCDCPJU.mjs";
|
|
17
|
-
import {
|
|
18
|
-
KeyboundForm
|
|
19
|
-
} from "./chunk-6HTZNHPT.mjs";
|
|
20
16
|
import {
|
|
21
17
|
usePromotionTableFilters
|
|
22
18
|
} from "./chunk-LSEYENCI.mjs";
|
|
23
19
|
import "./chunk-ZQJPHZKI.mjs";
|
|
20
|
+
import "./chunk-C76H5USB.mjs";
|
|
21
|
+
import "./chunk-DFFLVEZ5.mjs";
|
|
22
|
+
import "./chunk-IUCDCPJU.mjs";
|
|
23
|
+
import {
|
|
24
|
+
KeyboundForm
|
|
25
|
+
} from "./chunk-6HTZNHPT.mjs";
|
|
24
26
|
import "./chunk-WVA4O7QS.mjs";
|
|
25
27
|
import {
|
|
26
28
|
RouteFocusModal,
|
|
@@ -32,8 +34,6 @@ import "./chunk-C5P5PL3E.mjs";
|
|
|
32
34
|
import "./chunk-LPEUYMRK.mjs";
|
|
33
35
|
import "./chunk-OC7BQLYI.mjs";
|
|
34
36
|
import "./chunk-S4DMV3ZT.mjs";
|
|
35
|
-
import "./chunk-C76H5USB.mjs";
|
|
36
|
-
import "./chunk-DFFLVEZ5.mjs";
|
|
37
37
|
import "./chunk-535OVBXR.mjs";
|
|
38
38
|
import "./chunk-OBQI23QM.mjs";
|
|
39
39
|
import {
|
|
@@ -8,9 +8,11 @@ import "./chunk-LQTHYS2Z.mjs";
|
|
|
8
8
|
import "./chunk-DTZXEQXZ.mjs";
|
|
9
9
|
import "./chunk-HQKGZADC.mjs";
|
|
10
10
|
import "./chunk-EMIHDNB7.mjs";
|
|
11
|
+
import "./chunk-ZQJPHZKI.mjs";
|
|
12
|
+
import "./chunk-C76H5USB.mjs";
|
|
13
|
+
import "./chunk-DFFLVEZ5.mjs";
|
|
11
14
|
import "./chunk-IUCDCPJU.mjs";
|
|
12
15
|
import "./chunk-6HTZNHPT.mjs";
|
|
13
|
-
import "./chunk-ZQJPHZKI.mjs";
|
|
14
16
|
import {
|
|
15
17
|
RouteFocusModal
|
|
16
18
|
} from "./chunk-D6UW7URG.mjs";
|
|
@@ -20,39 +22,37 @@ import {
|
|
|
20
22
|
import "./chunk-LPEUYMRK.mjs";
|
|
21
23
|
import "./chunk-OC7BQLYI.mjs";
|
|
22
24
|
import "./chunk-S4DMV3ZT.mjs";
|
|
23
|
-
import "./chunk-C76H5USB.mjs";
|
|
24
|
-
import "./chunk-DFFLVEZ5.mjs";
|
|
25
25
|
import "./chunk-535OVBXR.mjs";
|
|
26
26
|
import "./chunk-OBQI23QM.mjs";
|
|
27
27
|
import "./chunk-4GQYRG3L.mjs";
|
|
28
28
|
import "./chunk-I4OBEAOJ.mjs";
|
|
29
29
|
import "./chunk-FAB3VINY.mjs";
|
|
30
|
-
import "./chunk-C32SLRTC.mjs";
|
|
31
30
|
import "./chunk-HI6URQ7H.mjs";
|
|
32
31
|
import "./chunk-6CLQKVAU.mjs";
|
|
33
32
|
import "./chunk-KI7TOXBR.mjs";
|
|
34
33
|
import "./chunk-QBIQEVTU.mjs";
|
|
34
|
+
import "./chunk-C32SLRTC.mjs";
|
|
35
35
|
import "./chunk-WAXMT4IY.mjs";
|
|
36
36
|
import "./chunk-DYDGGABK.mjs";
|
|
37
37
|
import "./chunk-LGNTHZ5Y.mjs";
|
|
38
38
|
import "./chunk-CN7JXSGW.mjs";
|
|
39
39
|
import "./chunk-5BQQRHQS.mjs";
|
|
40
|
-
import "./chunk-6F74MBBU.mjs";
|
|
41
40
|
import "./chunk-FWRPGWPC.mjs";
|
|
41
|
+
import "./chunk-5AFMB7XQ.mjs";
|
|
42
|
+
import "./chunk-6F74MBBU.mjs";
|
|
42
43
|
import "./chunk-A63RZVX6.mjs";
|
|
43
44
|
import "./chunk-HBXV7ENS.mjs";
|
|
44
45
|
import "./chunk-CDORR33H.mjs";
|
|
46
|
+
import "./chunk-73OGFYCU.mjs";
|
|
47
|
+
import "./chunk-R3FD2XEU.mjs";
|
|
45
48
|
import "./chunk-6X2UTJF3.mjs";
|
|
49
|
+
import "./chunk-RNV5E7NV.mjs";
|
|
50
|
+
import "./chunk-3BF5SC66.mjs";
|
|
46
51
|
import {
|
|
47
52
|
useStore
|
|
48
53
|
} from "./chunk-VCSSQVPD.mjs";
|
|
49
54
|
import "./chunk-HP2JH45P.mjs";
|
|
50
55
|
import "./chunk-SQDIZZDW.mjs";
|
|
51
|
-
import "./chunk-RNV5E7NV.mjs";
|
|
52
|
-
import "./chunk-3BF5SC66.mjs";
|
|
53
|
-
import "./chunk-5AFMB7XQ.mjs";
|
|
54
|
-
import "./chunk-73OGFYCU.mjs";
|
|
55
|
-
import "./chunk-R3FD2XEU.mjs";
|
|
56
56
|
import "./chunk-3TPUO6MD.mjs";
|
|
57
57
|
import "./chunk-7AXHHXCX.mjs";
|
|
58
58
|
import "./chunk-FXYH54JP.mjs";
|
|
@@ -25,6 +25,10 @@ import "./chunk-ZQJPHZKI.mjs";
|
|
|
25
25
|
import {
|
|
26
26
|
SingleColumnPage
|
|
27
27
|
} from "./chunk-GIZFNLKK.mjs";
|
|
28
|
+
import {
|
|
29
|
+
useQueryParams
|
|
30
|
+
} from "./chunk-C76H5USB.mjs";
|
|
31
|
+
import "./chunk-DFFLVEZ5.mjs";
|
|
28
32
|
import {
|
|
29
33
|
useExtension
|
|
30
34
|
} from "./chunk-C5P5PL3E.mjs";
|
|
@@ -34,10 +38,6 @@ import {
|
|
|
34
38
|
} from "./chunk-OZPB6JBL.mjs";
|
|
35
39
|
import "./chunk-OC7BQLYI.mjs";
|
|
36
40
|
import "./chunk-S4DMV3ZT.mjs";
|
|
37
|
-
import {
|
|
38
|
-
useQueryParams
|
|
39
|
-
} from "./chunk-C76H5USB.mjs";
|
|
40
|
-
import "./chunk-DFFLVEZ5.mjs";
|
|
41
41
|
import "./chunk-535OVBXR.mjs";
|
|
42
42
|
import {
|
|
43
43
|
useApiKeys,
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
+
import {
|
|
2
|
+
getCurrencySymbol
|
|
3
|
+
} from "./chunk-DK4WIVY6.mjs";
|
|
1
4
|
import "./chunk-IUCDCPJU.mjs";
|
|
2
5
|
import {
|
|
3
6
|
KeyboundForm
|
|
4
7
|
} from "./chunk-6HTZNHPT.mjs";
|
|
5
|
-
import {
|
|
6
|
-
getCurrencySymbol
|
|
7
|
-
} from "./chunk-DK4WIVY6.mjs";
|
|
8
8
|
import {
|
|
9
9
|
RouteDrawer
|
|
10
10
|
} from "./chunk-WVA4O7QS.mjs";
|
|
@@ -26,6 +26,8 @@ import "./chunk-ZQJPHZKI.mjs";
|
|
|
26
26
|
import {
|
|
27
27
|
TwoColumnPage
|
|
28
28
|
} from "./chunk-GIZFNLKK.mjs";
|
|
29
|
+
import "./chunk-C76H5USB.mjs";
|
|
30
|
+
import "./chunk-DFFLVEZ5.mjs";
|
|
29
31
|
import "./chunk-4GQOUCX6.mjs";
|
|
30
32
|
import "./chunk-PMA2D6IL.mjs";
|
|
31
33
|
import {
|
|
@@ -39,24 +41,23 @@ import {
|
|
|
39
41
|
} from "./chunk-OZPB6JBL.mjs";
|
|
40
42
|
import "./chunk-OC7BQLYI.mjs";
|
|
41
43
|
import "./chunk-S4DMV3ZT.mjs";
|
|
42
|
-
import "./chunk-C76H5USB.mjs";
|
|
43
|
-
import "./chunk-DFFLVEZ5.mjs";
|
|
44
44
|
import "./chunk-535OVBXR.mjs";
|
|
45
45
|
import "./chunk-4GQYRG3L.mjs";
|
|
46
46
|
import "./chunk-I4OBEAOJ.mjs";
|
|
47
47
|
import "./chunk-FAB3VINY.mjs";
|
|
48
|
-
import "./chunk-C32SLRTC.mjs";
|
|
49
48
|
import "./chunk-HI6URQ7H.mjs";
|
|
50
49
|
import "./chunk-6CLQKVAU.mjs";
|
|
51
50
|
import "./chunk-KI7TOXBR.mjs";
|
|
52
51
|
import "./chunk-QBIQEVTU.mjs";
|
|
52
|
+
import "./chunk-C32SLRTC.mjs";
|
|
53
53
|
import "./chunk-WAXMT4IY.mjs";
|
|
54
54
|
import "./chunk-DYDGGABK.mjs";
|
|
55
55
|
import "./chunk-LGNTHZ5Y.mjs";
|
|
56
56
|
import "./chunk-CN7JXSGW.mjs";
|
|
57
57
|
import "./chunk-5BQQRHQS.mjs";
|
|
58
|
-
import "./chunk-6F74MBBU.mjs";
|
|
59
58
|
import "./chunk-FWRPGWPC.mjs";
|
|
59
|
+
import "./chunk-5AFMB7XQ.mjs";
|
|
60
|
+
import "./chunk-6F74MBBU.mjs";
|
|
60
61
|
import {
|
|
61
62
|
campaignsQueryKeys,
|
|
62
63
|
useAddOrRemoveCampaignPromotions,
|
|
@@ -66,15 +67,14 @@ import {
|
|
|
66
67
|
} from "./chunk-A63RZVX6.mjs";
|
|
67
68
|
import "./chunk-HBXV7ENS.mjs";
|
|
68
69
|
import "./chunk-CDORR33H.mjs";
|
|
70
|
+
import "./chunk-73OGFYCU.mjs";
|
|
71
|
+
import "./chunk-R3FD2XEU.mjs";
|
|
69
72
|
import "./chunk-6X2UTJF3.mjs";
|
|
73
|
+
import "./chunk-RNV5E7NV.mjs";
|
|
74
|
+
import "./chunk-3BF5SC66.mjs";
|
|
70
75
|
import "./chunk-VCSSQVPD.mjs";
|
|
71
76
|
import "./chunk-HP2JH45P.mjs";
|
|
72
77
|
import "./chunk-SQDIZZDW.mjs";
|
|
73
|
-
import "./chunk-RNV5E7NV.mjs";
|
|
74
|
-
import "./chunk-3BF5SC66.mjs";
|
|
75
|
-
import "./chunk-5AFMB7XQ.mjs";
|
|
76
|
-
import "./chunk-73OGFYCU.mjs";
|
|
77
|
-
import "./chunk-R3FD2XEU.mjs";
|
|
78
78
|
import "./chunk-3TPUO6MD.mjs";
|
|
79
79
|
import "./chunk-7AXHHXCX.mjs";
|
|
80
80
|
import {
|
|
@@ -18,6 +18,8 @@ import "./chunk-ZQJPHZKI.mjs";
|
|
|
18
18
|
import {
|
|
19
19
|
SingleColumnPage
|
|
20
20
|
} from "./chunk-GIZFNLKK.mjs";
|
|
21
|
+
import "./chunk-C76H5USB.mjs";
|
|
22
|
+
import "./chunk-DFFLVEZ5.mjs";
|
|
21
23
|
import {
|
|
22
24
|
useExtension
|
|
23
25
|
} from "./chunk-C5P5PL3E.mjs";
|
|
@@ -27,8 +29,6 @@ import {
|
|
|
27
29
|
} from "./chunk-OZPB6JBL.mjs";
|
|
28
30
|
import "./chunk-OC7BQLYI.mjs";
|
|
29
31
|
import "./chunk-S4DMV3ZT.mjs";
|
|
30
|
-
import "./chunk-C76H5USB.mjs";
|
|
31
|
-
import "./chunk-DFFLVEZ5.mjs";
|
|
32
32
|
import "./chunk-535OVBXR.mjs";
|
|
33
33
|
import {
|
|
34
34
|
useCampaigns,
|