@fluid-app/portal-sdk 0.1.129 → 0.1.130
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/{AppDownloadScreen-DTxo4z3_.cjs → AppDownloadScreen-ChKim_6A.cjs} +2 -2
- package/dist/{AppDownloadScreen-DTxo4z3_.cjs.map → AppDownloadScreen-ChKim_6A.cjs.map} +1 -1
- package/dist/{AppDownloadScreen-BoGSdsJk.mjs → AppDownloadScreen-DGHd6hYM.mjs} +2 -2
- package/dist/{AppDownloadScreen-BoGSdsJk.mjs.map → AppDownloadScreen-DGHd6hYM.mjs.map} +1 -1
- package/dist/{AppDownloadScreen-Chxavsr_.cjs → AppDownloadScreen-DpyV1tJw.cjs} +2 -2
- package/dist/{ContactsScreen-BKOHursc.mjs → ContactsScreen-Bcea6126.mjs} +3 -3
- package/dist/{ContactsScreen-BKOHursc.mjs.map → ContactsScreen-Bcea6126.mjs.map} +1 -1
- package/dist/{ContactsScreen-DN8Qt2Ih.cjs → ContactsScreen-CsIGZaWy.cjs} +4 -4
- package/dist/{ContactsScreen-DN8Qt2Ih.cjs.map → ContactsScreen-CsIGZaWy.cjs.map} +1 -1
- package/dist/{ContactsScreen-FrVLbjGO.cjs → ContactsScreen-OBDC1046.cjs} +4 -4
- package/dist/{FluidProvider-CgTeGUnF.mjs → FluidProvider-BJQSXofR.mjs} +198 -615
- package/dist/FluidProvider-BJQSXofR.mjs.map +1 -0
- package/dist/{FluidProvider-BMMu_rp3.cjs → FluidProvider-DvqnkjZI.cjs} +196 -625
- package/dist/FluidProvider-DvqnkjZI.cjs.map +1 -0
- package/dist/{MessagingScreen-Bvq3Dd5i.mjs → MessagingScreen-B48ksZOJ.mjs} +3 -3
- package/dist/{MessagingScreen-Bvq3Dd5i.mjs.map → MessagingScreen-B48ksZOJ.mjs.map} +1 -1
- package/dist/{MessagingScreen-DMDXiH97.mjs → MessagingScreen-COGo4S9K.mjs} +2 -2
- package/dist/{MessagingScreen-DgbNN4BF.cjs → MessagingScreen-DYgiatey.cjs} +3 -3
- package/dist/{MessagingScreen-DgbNN4BF.cjs.map → MessagingScreen-DYgiatey.cjs.map} +1 -1
- package/dist/{MessagingScreen-bzzXjQMu.cjs → MessagingScreen-QyUOxYXl.cjs} +2 -2
- package/dist/{MySiteScreen-nV8x9xyy.cjs → MySiteScreen-ByIJ6CkU.cjs} +2 -2
- package/dist/{MySiteScreen-nV8x9xyy.cjs.map → MySiteScreen-ByIJ6CkU.cjs.map} +1 -1
- package/dist/{MySiteScreen-BJH5-RNT.mjs → MySiteScreen-DZ0ru6Bn.mjs} +2 -2
- package/dist/{MySiteScreen-BJH5-RNT.mjs.map → MySiteScreen-DZ0ru6Bn.mjs.map} +1 -1
- package/dist/{MySiteScreen-CYZpUYTn.cjs → MySiteScreen-DrWUJJiH.cjs} +2 -2
- package/dist/{OrdersScreen-BL__flBE.cjs → OrdersScreen-CkvoeTvK.cjs} +3 -3
- package/dist/OrdersScreen-D_7TJgZ4.mjs +561 -0
- package/dist/OrdersScreen-D_7TJgZ4.mjs.map +1 -0
- package/dist/OrdersScreen-DyYYjl9I.cjs +568 -0
- package/dist/OrdersScreen-DyYYjl9I.cjs.map +1 -0
- package/dist/{ProductsScreen-BIYHPaBZ.cjs → ProductsScreen-B8NmyIJy.cjs} +3 -3
- package/dist/{ProductsScreen-COwahI-V.mjs → ProductsScreen-CMnhqsSA.mjs} +5 -5
- package/dist/{ProductsScreen-COwahI-V.mjs.map → ProductsScreen-CMnhqsSA.mjs.map} +1 -1
- package/dist/{ProductsScreen-D6h-r9ht.mjs → ProductsScreen-DzNmbwVi.mjs} +3 -3
- package/dist/{ProductsScreen-C8UfVLRr.cjs → ProductsScreen-Z1hx1YZQ.cjs} +5 -5
- package/dist/{ProductsScreen-C8UfVLRr.cjs.map → ProductsScreen-Z1hx1YZQ.cjs.map} +1 -1
- package/dist/{ProfileScreen-CZp_NrjO.cjs → ProfileScreen-B81Ovmh_.cjs} +2 -2
- package/dist/{ProfileScreen-FYGHStqM.cjs → ProfileScreen-CYTxOGeW.cjs} +526 -137
- package/dist/ProfileScreen-CYTxOGeW.cjs.map +1 -0
- package/dist/{ProfileScreen-BKRn8AqI.mjs → ProfileScreen-QOXtyrJi.mjs} +522 -133
- package/dist/ProfileScreen-QOXtyrJi.mjs.map +1 -0
- package/dist/{ShareablesScreen-BEPVTMeI.cjs → ShareablesScreen-1HpfEjyd.cjs} +7 -7
- package/dist/{ShareablesScreen-BEPVTMeI.cjs.map → ShareablesScreen-1HpfEjyd.cjs.map} +1 -1
- package/dist/{ShareablesScreen-BrC5LGtU.cjs → ShareablesScreen-BXO8MpAy.cjs} +3 -3
- package/dist/{ShareablesScreen-BXzxUg0E.mjs → ShareablesScreen-DSsMJJh_.mjs} +7 -7
- package/dist/{ShareablesScreen-BXzxUg0E.mjs.map → ShareablesScreen-DSsMJJh_.mjs.map} +1 -1
- package/dist/{ShareablesScreen-aMnwEOAH.mjs → ShareablesScreen-Oo3jMHX6.mjs} +3 -3
- package/dist/{ShopScreen-CHH0cx2P.cjs → ShopScreen-BDcWpmi7.cjs} +4 -4
- package/dist/{ShopScreen-CHH0cx2P.cjs.map → ShopScreen-BDcWpmi7.cjs.map} +1 -1
- package/dist/{ShopScreen-8OQhLeLt.cjs → ShopScreen-CWxOPn7H.cjs} +2 -2
- package/dist/{ShopScreen-Yi9sOX_2.mjs → ShopScreen-DsReuJ7P.mjs} +4 -4
- package/dist/{ShopScreen-Yi9sOX_2.mjs.map → ShopScreen-DsReuJ7P.mjs.map} +1 -1
- package/dist/{SubscriptionsScreen-oApGaq11.cjs → SubscriptionsScreen-B8mLGt5-.cjs} +27 -10
- package/dist/SubscriptionsScreen-B8mLGt5-.cjs.map +1 -0
- package/dist/{SubscriptionsScreen-C2F3HNJS.cjs → SubscriptionsScreen-C2zbEjMC.cjs} +4 -4
- package/dist/{SubscriptionsScreen-CZ-1jSO2.mjs → SubscriptionsScreen-DZxLo4up.mjs} +21 -4
- package/dist/SubscriptionsScreen-DZxLo4up.mjs.map +1 -0
- package/dist/index.cjs +37 -37
- package/dist/index.d.cts.map +1 -1
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +37 -37
- package/dist/order-status-badge-KooNqnAs.mjs +262 -0
- package/dist/order-status-badge-KooNqnAs.mjs.map +1 -0
- package/dist/order-status-badge-cwqA8dZ-.cjs +304 -0
- package/dist/order-status-badge-cwqA8dZ-.cjs.map +1 -0
- package/dist/portal_tenant-CP5Ce8Jn.cjs +261 -0
- package/dist/portal_tenant-CP5Ce8Jn.cjs.map +1 -0
- package/dist/portal_tenant-CWy4Zg2t.mjs +166 -0
- package/dist/portal_tenant-CWy4Zg2t.mjs.map +1 -0
- package/dist/src-BOIW-KES.mjs +3 -0
- package/dist/src-CzwiFO_J.cjs +3 -0
- package/dist/{src-BMUEjfhg.mjs → src-Dgo44BGe.mjs} +1 -1
- package/dist/{src-BMUEjfhg.mjs.map → src-Dgo44BGe.mjs.map} +1 -1
- package/dist/{src-BJdOxgpp.cjs → src-DkhHoxnS.cjs} +1 -1
- package/dist/{src-BJdOxgpp.cjs.map → src-DkhHoxnS.cjs.map} +1 -1
- package/dist/use-account-clients-Dim60sir.mjs +451 -0
- package/dist/use-account-clients-Dim60sir.mjs.map +1 -0
- package/dist/use-account-clients-DoJW3KTx.cjs +481 -0
- package/dist/use-account-clients-DoJW3KTx.cjs.map +1 -0
- package/dist/{use-current-user-DCk55_Qn.mjs → use-current-user-Baxj7HJt.mjs} +3 -3
- package/dist/{use-current-user-DCk55_Qn.mjs.map → use-current-user-Baxj7HJt.mjs.map} +1 -1
- package/dist/{use-current-user-BR5_zaoZ.cjs → use-current-user-BcZWV7oU.cjs} +3 -3
- package/dist/{use-current-user-BR5_zaoZ.cjs.map → use-current-user-BcZWV7oU.cjs.map} +1 -1
- package/dist/{use-fluid-api-CmCAH10d.mjs → use-fluid-api-BP05Cf-f.mjs} +2 -2
- package/dist/{use-fluid-api-CmCAH10d.mjs.map → use-fluid-api-BP05Cf-f.mjs.map} +1 -1
- package/dist/{use-fluid-api-C1KeHB7q.cjs → use-fluid-api-Ds8BInAZ.cjs} +2 -2
- package/dist/{use-fluid-api-C1KeHB7q.cjs.map → use-fluid-api-Ds8BInAZ.cjs.map} +1 -1
- package/dist/{use-fluid-auth-BQEV7ylM.mjs → use-fluid-auth-C-Qpl8j4.mjs} +2 -2
- package/dist/{use-fluid-auth-BQEV7ylM.mjs.map → use-fluid-auth-C-Qpl8j4.mjs.map} +1 -1
- package/dist/{use-fluid-auth-CyKaXLbW.cjs → use-fluid-auth-sGNMgfnt.cjs} +2 -2
- package/dist/{use-fluid-auth-CyKaXLbW.cjs.map → use-fluid-auth-sGNMgfnt.cjs.map} +1 -1
- package/dist/{use-portal-products-client-pptYMuSw.cjs → use-portal-products-client-DKYkBjm-.cjs} +7 -48
- package/dist/use-portal-products-client-DKYkBjm-.cjs.map +1 -0
- package/dist/{use-portal-products-client-BL1xVtex.mjs → use-portal-products-client-s2qtZjhU.mjs} +3 -44
- package/dist/use-portal-products-client-s2qtZjhU.mjs.map +1 -0
- package/package.json +13 -12
- package/dist/FluidProvider-BMMu_rp3.cjs.map +0 -1
- package/dist/FluidProvider-CgTeGUnF.mjs.map +0 -1
- package/dist/OrdersScreen-BLb3_KtI.mjs +0 -176
- package/dist/OrdersScreen-BLb3_KtI.mjs.map +0 -1
- package/dist/OrdersScreen-uL3mRk1h.cjs +0 -183
- package/dist/OrdersScreen-uL3mRk1h.cjs.map +0 -1
- package/dist/ProfileScreen-BKRn8AqI.mjs.map +0 -1
- package/dist/ProfileScreen-FYGHStqM.cjs.map +0 -1
- package/dist/SubscriptionsScreen-CZ-1jSO2.mjs.map +0 -1
- package/dist/SubscriptionsScreen-oApGaq11.cjs.map +0 -1
- package/dist/order-detail-DHXdE4Cl.cjs +0 -961
- package/dist/order-detail-DHXdE4Cl.cjs.map +0 -1
- package/dist/order-detail-iZm_R0TX.mjs +0 -931
- package/dist/order-detail-iZm_R0TX.mjs.map +0 -1
- package/dist/src-BJSTFxSO.mjs +0 -1
- package/dist/src-DMVR26Fk.cjs +0 -1
- package/dist/use-account-clients-CL6rr17o.cjs +0 -214
- package/dist/use-account-clients-CL6rr17o.cjs.map +0 -1
- package/dist/use-account-clients-CMjRB5On.mjs +0 -190
- package/dist/use-account-clients-CMjRB5On.mjs.map +0 -1
- package/dist/use-customer-account-BAolVc3q.mjs +0 -22
- package/dist/use-customer-account-BAolVc3q.mjs.map +0 -1
- package/dist/use-customer-account-DSsXbcme.cjs +0 -28
- package/dist/use-customer-account-DSsXbcme.cjs.map +0 -1
- package/dist/use-portal-products-client-BL1xVtex.mjs.map +0 -1
- package/dist/use-portal-products-client-pptYMuSw.cjs.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OrdersScreen-D_7TJgZ4.mjs","names":["PortalOrdersListScreenContent","PortalOrderDetailScreenContent"],"sources":["../../../orders/ui/src/components/portal-orders-list.tsx","../../../orders/ui/src/screens/PortalOrdersListScreen.tsx","../src/screens/OrdersListScreen.tsx","../../../orders/ui/src/components/portal-order-detail.tsx","../../../orders/ui/src/screens/PortalOrderDetailScreen.tsx","../src/screens/OrderDetailScreen.tsx","../src/screens/OrdersScreen.tsx"],"sourcesContent":["import { useState, useCallback } from \"react\";\nimport type { orders } from \"@fluid-app/orders-core\";\nimport { usePortalTenantOrders } from \"@fluid-app/orders-core\";\nimport {\n Skeleton,\n Table,\n TableBody,\n TableCell,\n TableHeader,\n TableRow,\n} from \"@fluid-app/ui-primitives\";\nimport { SearchInput } from \"./search-input\";\nimport { PaginationFooter } from \"./pagination-footer\";\nimport { StatusBadge } from \"./status-badge\";\nimport { TableColumn } from \"./table-column\";\n\nexport interface PortalOrdersListProps {\n onOrderClick: (order: orders.PortalTenantOrder) => void;\n t: (key: string) => string;\n pageSize?: number;\n}\n\nfunction formatTotal(order: orders.PortalTenantOrder): string {\n return `${order.currency} ${Number(order.total).toFixed(2)}`;\n}\n\nexport function PortalOrdersList({\n onOrderClick,\n t,\n pageSize = 10,\n}: PortalOrdersListProps) {\n const [cursor, setCursor] = useState<string | null>(null);\n\n const params: orders.PortalTenantFetchOrdersParams = {\n limit: pageSize,\n cursor: cursor || undefined,\n };\n\n const { data, isLoading } = usePortalTenantOrders(params);\n\n const handleNextPage = useCallback(() => {\n const nextCursor = data?.meta?.pagination?.next_cursor;\n if (nextCursor) {\n setCursor(nextCursor);\n }\n }, [data?.meta?.pagination?.next_cursor]);\n\n const handlePrevPage = useCallback(() => {\n const prevCursor = data?.meta?.pagination?.prev_cursor;\n if (prevCursor) {\n setCursor(prevCursor);\n } else {\n setCursor(null);\n }\n }, [data?.meta?.pagination?.prev_cursor]);\n\n const ordersList = data?.orders || [];\n const pagination = data?.meta?.pagination;\n const totalItems = ordersList.length;\n const hasNextPage = !!pagination?.next_cursor;\n const hasPrevPage = !!pagination?.prev_cursor;\n\n const firstItem = (order: orders.PortalTenantOrder) => order.line_items[0];\n\n return (\n <div className=\"border-border overflow-hidden rounded-lg border shadow-sm\">\n {/* mobile view */}\n <div className=\"block md:hidden\">\n {isLoading ? (\n Array(5)\n .fill(0)\n .map((_, index) => (\n <div\n key={`skeleton-${index}`}\n className=\"border-border border-b p-4\"\n >\n <div className=\"flex space-x-3\">\n <Skeleton className=\"h-12 w-12 rounded-md\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-3 w-1/2\" />\n </div>\n </div>\n </div>\n ))\n ) : ordersList.length === 0 ? (\n <div className=\"text-muted-foreground px-3 py-8 text-center text-sm\">\n {t(\"no_orders_found\")}\n </div>\n ) : (\n ordersList.map((order) => (\n <div\n key={order.id}\n className=\"border-border hover:bg-accent cursor-pointer border-b p-4 transition-colors duration-200 ease-in-out last:border-b-0\"\n onClick={() => onOrderClick(order)}\n >\n <div className=\"flex items-start space-x-3\">\n <div className=\"bg-border h-12 w-12 flex-shrink-0 rounded-md\" />\n <div className=\"w-0 min-w-0 flex-1\">\n {firstItem(order) ? (\n <p className=\"text-foreground truncate text-sm font-medium\">\n {firstItem(order)?.product_name}\n </p>\n ) : (\n <div className=\"bg-muted rounded-lg p-2\">\n <div className=\"text-muted-foreground text-xs\">\n {t(\"this_product_no_longer_exists\")}\n </div>\n </div>\n )}\n <div className=\"mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-sm\">\n <div>\n <span className=\"text-muted-foreground block text-xs\">\n {t(\"date\")}\n </span>\n <span className=\"text-muted-foreground\">\n {new Date(order.created_at).toLocaleDateString()}\n </span>\n </div>\n <div>\n <span className=\"text-muted-foreground block text-xs\">\n {t(\"status\")}\n </span>\n <StatusBadge\n color={\n order.status === \"delivered\" ||\n order.status === \"shipped\"\n ? \"green\"\n : order.status === \"cancelled\" ||\n order.status === \"returned\"\n ? \"red\"\n : \"yellow\"\n }\n size=\"xs\"\n >\n {order.status}\n </StatusBadge>\n </div>\n <div className=\"col-span-2 mt-1\">\n <span className=\"text-foreground font-medium\">\n {formatTotal(order)}\n </span>\n </div>\n </div>\n </div>\n </div>\n </div>\n ))\n )}\n </div>\n\n {/* desktop view */}\n <div className=\"hidden md:block\">\n <Table className=\"min-w-full table-fixed\">\n <colgroup>\n <col className=\"w-2/5 min-w-[240px]\" />\n <col className=\"w-[20%] min-w-[100px]\" />\n <col className=\"w-[20%] min-w-[100px]\" />\n <col className=\"w-[20%] min-w-[100px]\" />\n </colgroup>\n <TableHeader className=\"bg-muted\">\n <TableRow className=\"hover:bg-muted h-10\">\n <TableColumn label={t(\"product\")} sortable={false} />\n <TableColumn label={t(\"date\")} sortable={false} />\n <TableColumn label={t(\"status\")} sortable={false} />\n <TableColumn label={t(\"total\")} sortable={false} />\n </TableRow>\n </TableHeader>\n <TableBody className=\"bg-background\">\n {isLoading ? (\n Array(5)\n .fill(0)\n .map((_, index) => (\n <TableRow key={`skeleton-${index}`}>\n <TableCell className=\"px-3 py-4\">\n <Skeleton className=\"h-4 w-32\" />\n </TableCell>\n <TableCell className=\"px-3 py-4\">\n <Skeleton className=\"h-4 w-24\" />\n </TableCell>\n <TableCell className=\"px-3 py-4\">\n <Skeleton className=\"h-4 w-20\" />\n </TableCell>\n <TableCell className=\"px-3 py-4\">\n <Skeleton className=\"h-4 w-24\" />\n </TableCell>\n </TableRow>\n ))\n ) : ordersList.length === 0 ? (\n <TableRow>\n <TableCell\n colSpan={4}\n className=\"text-muted-foreground px-3 py-8 text-center text-sm\"\n >\n {t(\"no_orders_found\")}\n </TableCell>\n </TableRow>\n ) : (\n ordersList.map((order) => (\n <TableRow\n key={order.id}\n className=\"cursor-pointer\"\n onClick={() => onOrderClick(order)}\n >\n <TableCell className=\"text-foreground px-3 py-4 text-sm font-medium\">\n {firstItem(order)?.product_name ?? (\n <span className=\"text-muted-foreground italic\">\n {t(\"this_product_no_longer_exists\")}\n </span>\n )}\n </TableCell>\n <TableCell className=\"text-muted-foreground px-3 py-4 text-sm whitespace-nowrap\">\n {new Date(order.created_at).toLocaleDateString()}\n </TableCell>\n <TableCell className=\"px-3 py-4 text-sm\">\n <StatusBadge\n color={\n order.status === \"delivered\" ||\n order.status === \"shipped\"\n ? \"green\"\n : order.status === \"cancelled\" ||\n order.status === \"returned\"\n ? \"red\"\n : \"yellow\"\n }\n size=\"xs\"\n >\n {order.status}\n </StatusBadge>\n </TableCell>\n <TableCell className=\"text-foreground px-3 py-4 text-sm whitespace-nowrap\">\n {formatTotal(order)}\n </TableCell>\n </TableRow>\n ))\n )}\n </TableBody>\n </Table>\n </div>\n\n <PaginationFooter\n currentPage={1}\n totalPages={1}\n pageSize={pageSize}\n totalItems={totalItems}\n cursorPaginationMode\n hasNextPage={hasNextPage}\n hasPrevPage={hasPrevPage}\n onCursorNext={handleNextPage}\n onCursorPrev={handlePrevPage}\n />\n </div>\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport type { orders } from \"@fluid-app/orders-core\";\nimport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbPage,\n} from \"@fluid-app/ui-primitives\";\nimport { useScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { PortalOrdersList } from \"../components/portal-orders-list\";\n\nexport interface PortalOrdersListScreenProps {\n onOrderClick: (order: orders.PortalTenantOrder) => void;\n t: (key: string) => string;\n pageSize?: number;\n}\n\nexport function PortalOrdersListScreen({\n onOrderClick,\n t,\n pageSize,\n}: PortalOrdersListScreenProps) {\n const headerBreadcrumbs = useMemo(\n () => (\n <Breadcrumb>\n <BreadcrumbList className=\"text-lg\">\n <BreadcrumbItem>\n <BreadcrumbPage className=\"font-semibold\">Orders</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n ),\n [],\n );\n useScreenHeaderBreadcrumbs(headerBreadcrumbs);\n\n return (\n <div className=\"mx-auto max-w-7xl px-4 py-4 sm:px-6 sm:py-6 lg:px-10 lg:py-8\">\n <PortalOrdersList onOrderClick={onOrderClick} t={t} pageSize={pageSize} />\n </div>\n );\n}\n","import { OrdersCoreProvider } from \"@fluid-app/orders-core\";\nimport type { orders } from \"@fluid-app/orders-core\";\nimport { PortalOrdersListScreen as PortalOrdersListScreenContent } from \"@fluid-app/orders-ui/screens/PortalOrdersListScreen\";\nimport { useOrdersApi } from \"../account/use-account-clients\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\n\nconst translations: Record<string, string> = {\n search_orders: \"Search orders...\",\n order_number: \"Order #\",\n date: \"Date\",\n status: \"Status\",\n product: \"Product\",\n no_orders_found: \"No orders found\",\n no_matching_orders: \"No matching orders\",\n no_image_available: \"No image available\",\n this_product_no_longer_exists: \"This product no longer exists\",\n subscription: \"Subscription\",\n view_subscription: \"View Subscription\",\n total: \"Total\",\n results: \"results\",\n previous: \"Previous\",\n next: \"Next\",\n pagination: \"Pagination\",\n};\n\nexport function OrdersListScreen(): React.JSX.Element {\n const ordersApi = useOrdersApi();\n const { navigate } = useAppNavigation();\n\n const handleOrderClick = (order: orders.PortalTenantOrder) => {\n navigate(`orders/${order.token}`);\n };\n\n return (\n <OrdersCoreProvider api={ordersApi}>\n <PortalOrdersListScreenContent\n onOrderClick={handleOrderClick}\n t={(key) => translations[key] ?? key}\n />\n </OrdersCoreProvider>\n );\n}\n","import { useEffect } from \"react\";\nimport type { orders } from \"@fluid-app/orders-core\";\nimport { usePortalTenantOrder } from \"@fluid-app/orders-core\";\nimport { Skeleton } from \"@fluid-app/ui-primitives\";\nimport { OrderStatusBadge } from \"./order-status-badge\";\n\nexport interface PortalOrderDetailProps {\n id: string | number;\n onNotFound?: () => void;\n onError?: (error: Error) => void;\n}\n\nfunction DetailSkeleton() {\n return (\n <div className=\"flex flex-col lg:grid lg:grid-cols-8\">\n <div className=\"bg-muted flex flex-col items-center px-8 lg:col-span-4\">\n <div className=\"w-full max-w-lg py-6\">\n <Skeleton className=\"mb-4 h-6 w-48\" />\n <div className=\"space-y-4\">\n <div className=\"flex items-center space-x-4\">\n <Skeleton className=\"h-24 w-24 rounded\" />\n <div className=\"flex-1 space-y-2\">\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-4 w-1/2\" />\n </div>\n </div>\n </div>\n <div className=\"mt-6 space-y-2\">\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-5 w-full\" />\n </div>\n </div>\n </div>\n <div className=\"bg-background px-8 pt-4 lg:col-span-4\">\n <div className=\"mx-auto max-w-lg lg:mx-0 lg:mr-auto\">\n <Skeleton className=\"mb-4 h-10 w-full rounded\" />\n <div className=\"mt-6 space-y-4\">\n <Skeleton className=\"h-5 w-40\" />\n <Skeleton className=\"h-16 w-full rounded\" />\n </div>\n </div>\n </div>\n </div>\n );\n}\n\nfunction ItemRow({ item }: { item: orders.PortalTenantOrderLineItem }) {\n return (\n <div className=\"flex items-center space-x-4 py-4\">\n <div className=\"relative shrink-0\">\n <div className=\"bg-muted text-muted-foreground flex h-24 w-24 items-center justify-center overflow-hidden rounded\">\n No image\n </div>\n {item.quantity > 1 && (\n <span className=\"bg-foreground text-background absolute -top-2 -right-2 z-10 flex h-6 w-6 items-center justify-center rounded-full text-xs font-medium\">\n {item.quantity}\n </span>\n )}\n </div>\n <div className=\"flex min-w-0 flex-1 flex-col space-y-0.5\">\n <p\n className=\"text-foreground truncate text-sm font-medium\"\n title={item.product_name}\n >\n {item.product_name}\n </p>\n <p className=\"text-foreground text-sm font-medium\">{item.total}</p>\n {item.quantity > 1 && (\n <p className=\"text-muted-foreground text-xs\">\n {item.price} x {item.quantity}\n </p>\n )}\n </div>\n </div>\n );\n}\n\nfunction ItemsSection({ order }: { order: orders.PortalTenantOrder }) {\n return (\n <section className=\"bg-muted flex w-full flex-col items-center px-8 lg:col-span-4\">\n <div className=\"flex w-full max-w-lg flex-col\">\n <div className=\"mt-4\">\n <h2 className=\"text-foreground mb-2 text-lg font-medium\">\n Items ({order.line_items.length})\n </h2>\n <hr className=\"border-border\" />\n </div>\n\n <div className=\"divide-border divide-y\">\n {order.line_items.map((item) => (\n <ItemRow key={item.id} item={item} />\n ))}\n </div>\n\n <div className=\"border-border mb-4 border-t pt-4\">\n <div className=\"mt-4 flex items-center justify-between text-base font-medium\">\n <p className=\"text-muted-foreground text-sm font-medium\">Total</p>\n <p className=\"text-foreground text-base font-bold\">\n {order.currency} {order.total}\n </p>\n </div>\n </div>\n </div>\n </section>\n );\n}\n\nfunction DetailsSection({ order }: { order: orders.PortalTenantOrder }) {\n return (\n <div className=\"bg-background px-8 pt-4 lg:col-span-4\">\n <div className=\"mx-auto max-w-lg lg:mx-0 lg:mr-auto\">\n {/* Order Status */}\n <div className=\"border-border mb-6 border-b pb-6\">\n <div className=\"flex flex-wrap items-center gap-3\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-muted-foreground text-sm\">Status:</span>\n <OrderStatusBadge status={order.status} />\n </div>\n </div>\n </div>\n\n {/* Order Info */}\n <div className=\"border-border mb-6 border-b pb-6\">\n <h3 className=\"text-foreground mb-3 text-sm/6 font-semibold\">\n Order Info\n </h3>\n <div className=\"divide-border flex divide-x\">\n <div className=\"flex-1 pr-4\">\n <div className=\"text-muted-foreground text-sm\">Order</div>\n <div className=\"text-foreground font-medium\">#{order.id}</div>\n </div>\n <div className=\"flex-1 pl-4 text-right\">\n <div className=\"text-muted-foreground text-sm\">Date</div>\n <div className=\"text-foreground font-medium\">\n {new Date(order.created_at).toLocaleDateString(\"en-US\", {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\",\n })}\n </div>\n </div>\n </div>\n {order.customer_email && (\n <div className=\"mt-3\">\n <div className=\"text-muted-foreground text-sm\">Email</div>\n <div className=\"text-foreground text-sm font-medium\">\n {order.customer_email}\n </div>\n </div>\n )}\n {order.customer_name && (\n <div className=\"mt-3\">\n <div className=\"text-muted-foreground text-sm\">Customer</div>\n <div className=\"text-foreground text-sm font-medium\">\n {order.customer_name}\n </div>\n </div>\n )}\n </div>\n </div>\n </div>\n );\n}\n\nexport function PortalOrderDetail({\n id,\n onNotFound,\n onError,\n}: PortalOrderDetailProps) {\n const { data, isLoading, error } = usePortalTenantOrder(id);\n const order = data?.order;\n\n useEffect(() => {\n if (!isLoading && error) {\n onError?.(error as Error);\n }\n }, [isLoading, error, onError]);\n\n useEffect(() => {\n if (!isLoading && !error && !order) {\n onNotFound?.();\n }\n }, [isLoading, error, order, onNotFound]);\n\n if (isLoading) {\n return <DetailSkeleton />;\n }\n\n if (!order) {\n return null;\n }\n\n return (\n <div className=\"flex flex-col lg:grid lg:grid-cols-8\">\n <ItemsSection order={order} />\n <DetailsSection order={order} />\n </div>\n );\n}\n","\"use client\";\n\nimport { useMemo } from \"react\";\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@fluid-app/ui-primitives\";\nimport { useScreenHeaderBreadcrumbs } from \"@fluid-app/portal-react/shell/ScreenHeaderContext\";\nimport { PortalOrderDetail } from \"../components/portal-order-detail\";\n\nexport interface PortalOrderDetailScreenProps {\n id: string | number;\n onNavigateToList: () => void;\n onNotFound?: () => void;\n onError?: (error: Error) => void;\n}\n\nexport function PortalOrderDetailScreen({\n id,\n onNavigateToList,\n onNotFound,\n onError,\n}: PortalOrderDetailScreenProps) {\n const headerBreadcrumbs = useMemo(\n () => (\n <Breadcrumb>\n <BreadcrumbList className=\"text-lg\">\n <BreadcrumbItem>\n <BreadcrumbLink\n href=\"#\"\n onClick={(e) => {\n e.preventDefault();\n onNavigateToList();\n }}\n >\n Orders\n </BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage className=\"font-semibold\">\n Order #{id}\n </BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n ),\n [id, onNavigateToList],\n );\n useScreenHeaderBreadcrumbs(headerBreadcrumbs);\n\n return (\n <div className=\"mx-auto max-w-7xl px-4 py-4 sm:px-6 sm:py-6 lg:px-10 lg:py-8\">\n <PortalOrderDetail id={id} onNotFound={onNotFound} onError={onError} />\n </div>\n );\n}\n","import { OrdersCoreProvider } from \"@fluid-app/orders-core\";\nimport { PortalOrderDetailScreen as PortalOrderDetailScreenContent } from \"@fluid-app/orders-ui/screens/PortalOrderDetailScreen\";\nimport { useOrdersApi } from \"../account/use-account-clients\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\n\ninterface OrderDetailScreenProps {\n token: string;\n onToast: (message: string, type: \"success\" | \"error\" | \"warning\") => void;\n}\n\nexport function OrderDetailScreen({\n token,\n onToast,\n}: OrderDetailScreenProps): React.JSX.Element {\n const ordersApi = useOrdersApi();\n const { navigate } = useAppNavigation();\n\n return (\n <OrdersCoreProvider api={ordersApi}>\n <PortalOrderDetailScreenContent\n id={token}\n onNavigateToList={() => navigate(\"orders\")}\n onNotFound={() => {\n onToast(\"Order not found\", \"warning\");\n navigate(\"orders\");\n }}\n onError={(err) => {\n const message =\n err instanceof Error ? err.message : \"An error occurred\";\n onToast(`Failed to load order: ${message}`, \"error\");\n }}\n />\n </OrdersCoreProvider>\n );\n}\n","import type { ComponentProps } from \"react\";\nimport type {\n BackgroundValue,\n BorderRadiusOptions,\n ColorOptions,\n PaddingOptions,\n} from \"../types\";\nimport type { WidgetPropertySchema } from \"../registries/property-schema-types\";\nimport { useAppNavigation } from \"../shell/AppNavigationContext\";\nimport { OrdersListScreen } from \"./OrdersListScreen\";\nimport { OrderDetailScreen } from \"./OrderDetailScreen\";\n\ntype OrdersScreenProps = ComponentProps<\"div\"> & {\n background?: BackgroundValue;\n textColor?: ColorOptions;\n accentColor?: ColorOptions;\n padding?: PaddingOptions;\n borderRadius?: BorderRadiusOptions;\n onToast?: (message: string, type: \"success\" | \"error\" | \"warning\") => void;\n};\n\nfunction defaultToast(message: string, type: \"success\" | \"error\" | \"warning\") {\n if (type === \"error\" || type === \"warning\") {\n console.warn(\"[Orders]\", message);\n } else {\n console.info(\"[Orders]\", message);\n }\n}\n\nexport function OrdersScreen({\n onToast,\n /* eslint-disable @typescript-eslint/no-unused-vars -- destructured to exclude from divProps spread */\n background,\n textColor,\n accentColor,\n padding,\n borderRadius,\n /* eslint-enable @typescript-eslint/no-unused-vars */\n ...divProps\n}: OrdersScreenProps): React.JSX.Element {\n const { currentSlug } = useAppNavigation();\n const effectiveToast = onToast ?? defaultToast;\n\n // Parse slug: \"orders\" → list, \"orders/{token}\" → detail\n const detailToken = currentSlug.split(\"/\")[1];\n const isDetailView = detailToken !== undefined;\n\n if (isDetailView) {\n return (\n <div {...divProps}>\n <OrderDetailScreen token={detailToken} onToast={effectiveToast} />\n </div>\n );\n }\n\n return (\n <div {...divProps}>\n <OrdersListScreen />\n </div>\n );\n}\n\nexport const ordersScreenPropertySchema: WidgetPropertySchema = {\n widgetType: \"OrdersScreen\",\n displayName: \"Orders Screen\",\n tabsConfig: [{ id: \"styling\", label: \"Styling\" }],\n fields: [],\n} as const satisfies WidgetPropertySchema;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
require("./chunk-9hOWP6kD.cjs");
|
|
2
|
+
const require_src = require("./src-UnXevN9n.cjs");
|
|
3
|
+
const require_ScreenHeaderContext = require("./ScreenHeaderContext-wrJlkhgN.cjs");
|
|
4
|
+
const require_AppNavigationContext = require("./AppNavigationContext-DnwdUAjn.cjs");
|
|
5
|
+
const require_use_account_clients = require("./use-account-clients-DoJW3KTx.cjs");
|
|
6
|
+
const require_order_status_badge = require("./order-status-badge-cwqA8dZ-.cjs");
|
|
7
|
+
let react = require("react");
|
|
8
|
+
let react_jsx_runtime = require("react/jsx-runtime");
|
|
9
|
+
//#region ../../orders/ui/src/components/portal-orders-list.tsx
|
|
10
|
+
function formatTotal(order) {
|
|
11
|
+
return `${order.currency} ${Number(order.total).toFixed(2)}`;
|
|
12
|
+
}
|
|
13
|
+
function PortalOrdersList({ onOrderClick, t, pageSize = 10 }) {
|
|
14
|
+
const [cursor, setCursor] = (0, react.useState)(null);
|
|
15
|
+
const { data, isLoading } = require_order_status_badge.usePortalTenantOrders({
|
|
16
|
+
limit: pageSize,
|
|
17
|
+
cursor: cursor || void 0
|
|
18
|
+
});
|
|
19
|
+
const handleNextPage = (0, react.useCallback)(() => {
|
|
20
|
+
const nextCursor = data?.meta?.pagination?.next_cursor;
|
|
21
|
+
if (nextCursor) setCursor(nextCursor);
|
|
22
|
+
}, [data?.meta?.pagination?.next_cursor]);
|
|
23
|
+
const handlePrevPage = (0, react.useCallback)(() => {
|
|
24
|
+
const prevCursor = data?.meta?.pagination?.prev_cursor;
|
|
25
|
+
if (prevCursor) setCursor(prevCursor);
|
|
26
|
+
else setCursor(null);
|
|
27
|
+
}, [data?.meta?.pagination?.prev_cursor]);
|
|
28
|
+
const ordersList = data?.orders || [];
|
|
29
|
+
const pagination = data?.meta?.pagination;
|
|
30
|
+
const totalItems = ordersList.length;
|
|
31
|
+
const hasNextPage = !!pagination?.next_cursor;
|
|
32
|
+
const hasPrevPage = !!pagination?.prev_cursor;
|
|
33
|
+
const firstItem = (order) => order.line_items[0];
|
|
34
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
35
|
+
className: "border-border overflow-hidden rounded-lg border shadow-sm",
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
38
|
+
className: "block md:hidden",
|
|
39
|
+
children: isLoading ? Array(5).fill(0).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
40
|
+
className: "border-border border-b p-4",
|
|
41
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
42
|
+
className: "flex space-x-3",
|
|
43
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-12 w-12 rounded-md" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
44
|
+
className: "flex-1 space-y-2",
|
|
45
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-3 w-1/2" })]
|
|
46
|
+
})]
|
|
47
|
+
})
|
|
48
|
+
}, `skeleton-${index}`)) : ordersList.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
49
|
+
className: "text-muted-foreground px-3 py-8 text-center text-sm",
|
|
50
|
+
children: t("no_orders_found")
|
|
51
|
+
}) : ordersList.map((order) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
52
|
+
className: "border-border hover:bg-accent cursor-pointer border-b p-4 transition-colors duration-200 ease-in-out last:border-b-0",
|
|
53
|
+
onClick: () => onOrderClick(order),
|
|
54
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
55
|
+
className: "flex items-start space-x-3",
|
|
56
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", { className: "bg-border h-12 w-12 flex-shrink-0 rounded-md" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
57
|
+
className: "w-0 min-w-0 flex-1",
|
|
58
|
+
children: [firstItem(order) ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
59
|
+
className: "text-foreground truncate text-sm font-medium",
|
|
60
|
+
children: firstItem(order)?.product_name
|
|
61
|
+
}) : /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
62
|
+
className: "bg-muted rounded-lg p-2",
|
|
63
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
64
|
+
className: "text-muted-foreground text-xs",
|
|
65
|
+
children: t("this_product_no_longer_exists")
|
|
66
|
+
})
|
|
67
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
68
|
+
className: "mt-2 grid grid-cols-2 gap-x-4 gap-y-1 text-sm",
|
|
69
|
+
children: [
|
|
70
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
71
|
+
className: "text-muted-foreground block text-xs",
|
|
72
|
+
children: t("date")
|
|
73
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
74
|
+
className: "text-muted-foreground",
|
|
75
|
+
children: new Date(order.created_at).toLocaleDateString()
|
|
76
|
+
})] }),
|
|
77
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", { children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
78
|
+
className: "text-muted-foreground block text-xs",
|
|
79
|
+
children: t("status")
|
|
80
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.StatusBadge, {
|
|
81
|
+
color: order.status === "delivered" || order.status === "shipped" ? "green" : order.status === "cancelled" || order.status === "returned" ? "red" : "yellow",
|
|
82
|
+
size: "xs",
|
|
83
|
+
children: order.status
|
|
84
|
+
})] }),
|
|
85
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
86
|
+
className: "col-span-2 mt-1",
|
|
87
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
88
|
+
className: "text-foreground font-medium",
|
|
89
|
+
children: formatTotal(order)
|
|
90
|
+
})
|
|
91
|
+
})
|
|
92
|
+
]
|
|
93
|
+
})]
|
|
94
|
+
})]
|
|
95
|
+
})
|
|
96
|
+
}, order.id))
|
|
97
|
+
}),
|
|
98
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
99
|
+
className: "hidden md:block",
|
|
100
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.Table, {
|
|
101
|
+
className: "min-w-full table-fixed",
|
|
102
|
+
children: [
|
|
103
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("colgroup", { children: [
|
|
104
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-2/5 min-w-[240px]" }),
|
|
105
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-[20%] min-w-[100px]" }),
|
|
106
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-[20%] min-w-[100px]" }),
|
|
107
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("col", { className: "w-[20%] min-w-[100px]" })
|
|
108
|
+
] }),
|
|
109
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableHeader, {
|
|
110
|
+
className: "bg-muted",
|
|
111
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, {
|
|
112
|
+
className: "hover:bg-muted h-10",
|
|
113
|
+
children: [
|
|
114
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.TableColumn, {
|
|
115
|
+
label: t("product"),
|
|
116
|
+
sortable: false
|
|
117
|
+
}),
|
|
118
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.TableColumn, {
|
|
119
|
+
label: t("date"),
|
|
120
|
+
sortable: false
|
|
121
|
+
}),
|
|
122
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.TableColumn, {
|
|
123
|
+
label: t("status"),
|
|
124
|
+
sortable: false
|
|
125
|
+
}),
|
|
126
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.TableColumn, {
|
|
127
|
+
label: t("total"),
|
|
128
|
+
sortable: false
|
|
129
|
+
})
|
|
130
|
+
]
|
|
131
|
+
})
|
|
132
|
+
}),
|
|
133
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableBody, {
|
|
134
|
+
className: "bg-background",
|
|
135
|
+
children: isLoading ? Array(5).fill(0).map((_, index) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, { children: [
|
|
136
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
137
|
+
className: "px-3 py-4",
|
|
138
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-32" })
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
141
|
+
className: "px-3 py-4",
|
|
142
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-24" })
|
|
143
|
+
}),
|
|
144
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
145
|
+
className: "px-3 py-4",
|
|
146
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-20" })
|
|
147
|
+
}),
|
|
148
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
149
|
+
className: "px-3 py-4",
|
|
150
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-24" })
|
|
151
|
+
})
|
|
152
|
+
] }, `skeleton-${index}`)) : ordersList.length === 0 ? /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableRow, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
153
|
+
colSpan: 4,
|
|
154
|
+
className: "text-muted-foreground px-3 py-8 text-center text-sm",
|
|
155
|
+
children: t("no_orders_found")
|
|
156
|
+
}) }) : ordersList.map((order) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.TableRow, {
|
|
157
|
+
className: "cursor-pointer",
|
|
158
|
+
onClick: () => onOrderClick(order),
|
|
159
|
+
children: [
|
|
160
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
161
|
+
className: "text-foreground px-3 py-4 text-sm font-medium",
|
|
162
|
+
children: firstItem(order)?.product_name ?? /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
163
|
+
className: "text-muted-foreground italic",
|
|
164
|
+
children: t("this_product_no_longer_exists")
|
|
165
|
+
})
|
|
166
|
+
}),
|
|
167
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
168
|
+
className: "text-muted-foreground px-3 py-4 text-sm whitespace-nowrap",
|
|
169
|
+
children: new Date(order.created_at).toLocaleDateString()
|
|
170
|
+
}),
|
|
171
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
172
|
+
className: "px-3 py-4 text-sm",
|
|
173
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.StatusBadge, {
|
|
174
|
+
color: order.status === "delivered" || order.status === "shipped" ? "green" : order.status === "cancelled" || order.status === "returned" ? "red" : "yellow",
|
|
175
|
+
size: "xs",
|
|
176
|
+
children: order.status
|
|
177
|
+
})
|
|
178
|
+
}),
|
|
179
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.TableCell, {
|
|
180
|
+
className: "text-foreground px-3 py-4 text-sm whitespace-nowrap",
|
|
181
|
+
children: formatTotal(order)
|
|
182
|
+
})
|
|
183
|
+
]
|
|
184
|
+
}, order.id))
|
|
185
|
+
})
|
|
186
|
+
]
|
|
187
|
+
})
|
|
188
|
+
}),
|
|
189
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.PaginationFooter, {
|
|
190
|
+
currentPage: 1,
|
|
191
|
+
totalPages: 1,
|
|
192
|
+
pageSize,
|
|
193
|
+
totalItems,
|
|
194
|
+
cursorPaginationMode: true,
|
|
195
|
+
hasNextPage,
|
|
196
|
+
hasPrevPage,
|
|
197
|
+
onCursorNext: handleNextPage,
|
|
198
|
+
onCursorPrev: handlePrevPage
|
|
199
|
+
})
|
|
200
|
+
]
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
//#endregion
|
|
204
|
+
//#region ../../orders/ui/src/screens/PortalOrdersListScreen.tsx
|
|
205
|
+
function PortalOrdersListScreen({ onOrderClick, t, pageSize }) {
|
|
206
|
+
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbList, {
|
|
207
|
+
className: "text-lg",
|
|
208
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbPage, {
|
|
209
|
+
className: "font-semibold",
|
|
210
|
+
children: "Orders"
|
|
211
|
+
}) })
|
|
212
|
+
}) }), []));
|
|
213
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
214
|
+
className: "mx-auto max-w-7xl px-4 py-4 sm:px-6 sm:py-6 lg:px-10 lg:py-8",
|
|
215
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PortalOrdersList, {
|
|
216
|
+
onOrderClick,
|
|
217
|
+
t,
|
|
218
|
+
pageSize
|
|
219
|
+
})
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//#endregion
|
|
223
|
+
//#region src/screens/OrdersListScreen.tsx
|
|
224
|
+
const translations = {
|
|
225
|
+
search_orders: "Search orders...",
|
|
226
|
+
order_number: "Order #",
|
|
227
|
+
date: "Date",
|
|
228
|
+
status: "Status",
|
|
229
|
+
product: "Product",
|
|
230
|
+
no_orders_found: "No orders found",
|
|
231
|
+
no_matching_orders: "No matching orders",
|
|
232
|
+
no_image_available: "No image available",
|
|
233
|
+
this_product_no_longer_exists: "This product no longer exists",
|
|
234
|
+
subscription: "Subscription",
|
|
235
|
+
view_subscription: "View Subscription",
|
|
236
|
+
total: "Total",
|
|
237
|
+
results: "results",
|
|
238
|
+
previous: "Previous",
|
|
239
|
+
next: "Next",
|
|
240
|
+
pagination: "Pagination"
|
|
241
|
+
};
|
|
242
|
+
function OrdersListScreen() {
|
|
243
|
+
const ordersApi = require_use_account_clients.useOrdersApi();
|
|
244
|
+
const { navigate } = require_AppNavigationContext.useAppNavigation();
|
|
245
|
+
const handleOrderClick = (order) => {
|
|
246
|
+
navigate(`orders/${order.token}`);
|
|
247
|
+
};
|
|
248
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.OrdersCoreProvider, {
|
|
249
|
+
api: ordersApi,
|
|
250
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PortalOrdersListScreen, {
|
|
251
|
+
onOrderClick: handleOrderClick,
|
|
252
|
+
t: (key) => translations[key] ?? key
|
|
253
|
+
})
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
//#endregion
|
|
257
|
+
//#region ../../orders/ui/src/components/portal-order-detail.tsx
|
|
258
|
+
function DetailSkeleton() {
|
|
259
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
260
|
+
className: "flex flex-col lg:grid lg:grid-cols-8",
|
|
261
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
262
|
+
className: "bg-muted flex flex-col items-center px-8 lg:col-span-4",
|
|
263
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
264
|
+
className: "w-full max-w-lg py-6",
|
|
265
|
+
children: [
|
|
266
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "mb-4 h-6 w-48" }),
|
|
267
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
268
|
+
className: "space-y-4",
|
|
269
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
270
|
+
className: "flex items-center space-x-4",
|
|
271
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-24 w-24 rounded" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
272
|
+
className: "flex-1 space-y-2",
|
|
273
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-3/4" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-1/2" })]
|
|
274
|
+
})]
|
|
275
|
+
})
|
|
276
|
+
}),
|
|
277
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
278
|
+
className: "mt-6 space-y-2",
|
|
279
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-4 w-full" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-full" })]
|
|
280
|
+
})
|
|
281
|
+
]
|
|
282
|
+
})
|
|
283
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
284
|
+
className: "bg-background px-8 pt-4 lg:col-span-4",
|
|
285
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
286
|
+
className: "mx-auto max-w-lg lg:mx-0 lg:mr-auto",
|
|
287
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "mb-4 h-10 w-full rounded" }), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
288
|
+
className: "mt-6 space-y-4",
|
|
289
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-5 w-40" }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Skeleton, { className: "h-16 w-full rounded" })]
|
|
290
|
+
})]
|
|
291
|
+
})
|
|
292
|
+
})]
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
function ItemRow({ item }) {
|
|
296
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
297
|
+
className: "flex items-center space-x-4 py-4",
|
|
298
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
299
|
+
className: "relative shrink-0",
|
|
300
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
301
|
+
className: "bg-muted text-muted-foreground flex h-24 w-24 items-center justify-center overflow-hidden rounded",
|
|
302
|
+
children: "No image"
|
|
303
|
+
}), item.quantity > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
304
|
+
className: "bg-foreground text-background absolute -top-2 -right-2 z-10 flex h-6 w-6 items-center justify-center rounded-full text-xs font-medium",
|
|
305
|
+
children: item.quantity
|
|
306
|
+
})]
|
|
307
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
308
|
+
className: "flex min-w-0 flex-1 flex-col space-y-0.5",
|
|
309
|
+
children: [
|
|
310
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
311
|
+
className: "text-foreground truncate text-sm font-medium",
|
|
312
|
+
title: item.product_name,
|
|
313
|
+
children: item.product_name
|
|
314
|
+
}),
|
|
315
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
316
|
+
className: "text-foreground text-sm font-medium",
|
|
317
|
+
children: item.total
|
|
318
|
+
}),
|
|
319
|
+
item.quantity > 1 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
320
|
+
className: "text-muted-foreground text-xs",
|
|
321
|
+
children: [
|
|
322
|
+
item.price,
|
|
323
|
+
" x ",
|
|
324
|
+
item.quantity
|
|
325
|
+
]
|
|
326
|
+
})
|
|
327
|
+
]
|
|
328
|
+
})]
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
function ItemsSection({ order }) {
|
|
332
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("section", {
|
|
333
|
+
className: "bg-muted flex w-full flex-col items-center px-8 lg:col-span-4",
|
|
334
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
335
|
+
className: "flex w-full max-w-lg flex-col",
|
|
336
|
+
children: [
|
|
337
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
338
|
+
className: "mt-4",
|
|
339
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("h2", {
|
|
340
|
+
className: "text-foreground mb-2 text-lg font-medium",
|
|
341
|
+
children: [
|
|
342
|
+
"Items (",
|
|
343
|
+
order.line_items.length,
|
|
344
|
+
")"
|
|
345
|
+
]
|
|
346
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("hr", { className: "border-border" })]
|
|
347
|
+
}),
|
|
348
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
349
|
+
className: "divide-border divide-y",
|
|
350
|
+
children: order.line_items.map((item) => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ItemRow, { item }, item.id))
|
|
351
|
+
}),
|
|
352
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
353
|
+
className: "border-border mb-4 border-t pt-4",
|
|
354
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
355
|
+
className: "mt-4 flex items-center justify-between text-base font-medium",
|
|
356
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("p", {
|
|
357
|
+
className: "text-muted-foreground text-sm font-medium",
|
|
358
|
+
children: "Total"
|
|
359
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("p", {
|
|
360
|
+
className: "text-foreground text-base font-bold",
|
|
361
|
+
children: [
|
|
362
|
+
order.currency,
|
|
363
|
+
" ",
|
|
364
|
+
order.total
|
|
365
|
+
]
|
|
366
|
+
})]
|
|
367
|
+
})
|
|
368
|
+
})
|
|
369
|
+
]
|
|
370
|
+
})
|
|
371
|
+
});
|
|
372
|
+
}
|
|
373
|
+
function DetailsSection({ order }) {
|
|
374
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
375
|
+
className: "bg-background px-8 pt-4 lg:col-span-4",
|
|
376
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
377
|
+
className: "mx-auto max-w-lg lg:mx-0 lg:mr-auto",
|
|
378
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
379
|
+
className: "border-border mb-6 border-b pb-6",
|
|
380
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
381
|
+
className: "flex flex-wrap items-center gap-3",
|
|
382
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
383
|
+
className: "flex items-center gap-2",
|
|
384
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
385
|
+
className: "text-muted-foreground text-sm",
|
|
386
|
+
children: "Status:"
|
|
387
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.OrderStatusBadge, { status: order.status })]
|
|
388
|
+
})
|
|
389
|
+
})
|
|
390
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
391
|
+
className: "border-border mb-6 border-b pb-6",
|
|
392
|
+
children: [
|
|
393
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("h3", {
|
|
394
|
+
className: "text-foreground mb-3 text-sm/6 font-semibold",
|
|
395
|
+
children: "Order Info"
|
|
396
|
+
}),
|
|
397
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
398
|
+
className: "divide-border flex divide-x",
|
|
399
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
400
|
+
className: "flex-1 pr-4",
|
|
401
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
402
|
+
className: "text-muted-foreground text-sm",
|
|
403
|
+
children: "Order"
|
|
404
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
405
|
+
className: "text-foreground font-medium",
|
|
406
|
+
children: ["#", order.id]
|
|
407
|
+
})]
|
|
408
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
409
|
+
className: "flex-1 pl-4 text-right",
|
|
410
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
411
|
+
className: "text-muted-foreground text-sm",
|
|
412
|
+
children: "Date"
|
|
413
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
414
|
+
className: "text-foreground font-medium",
|
|
415
|
+
children: new Date(order.created_at).toLocaleDateString("en-US", {
|
|
416
|
+
year: "numeric",
|
|
417
|
+
month: "short",
|
|
418
|
+
day: "numeric"
|
|
419
|
+
})
|
|
420
|
+
})]
|
|
421
|
+
})]
|
|
422
|
+
}),
|
|
423
|
+
order.customer_email && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
424
|
+
className: "mt-3",
|
|
425
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
426
|
+
className: "text-muted-foreground text-sm",
|
|
427
|
+
children: "Email"
|
|
428
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
429
|
+
className: "text-foreground text-sm font-medium",
|
|
430
|
+
children: order.customer_email
|
|
431
|
+
})]
|
|
432
|
+
}),
|
|
433
|
+
order.customer_name && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
434
|
+
className: "mt-3",
|
|
435
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
436
|
+
className: "text-muted-foreground text-sm",
|
|
437
|
+
children: "Customer"
|
|
438
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
439
|
+
className: "text-foreground text-sm font-medium",
|
|
440
|
+
children: order.customer_name
|
|
441
|
+
})]
|
|
442
|
+
})
|
|
443
|
+
]
|
|
444
|
+
})]
|
|
445
|
+
})
|
|
446
|
+
});
|
|
447
|
+
}
|
|
448
|
+
function PortalOrderDetail({ id, onNotFound, onError }) {
|
|
449
|
+
const { data, isLoading, error } = require_order_status_badge.usePortalTenantOrder(id);
|
|
450
|
+
const order = data?.order;
|
|
451
|
+
(0, react.useEffect)(() => {
|
|
452
|
+
if (!isLoading && error) onError?.(error);
|
|
453
|
+
}, [
|
|
454
|
+
isLoading,
|
|
455
|
+
error,
|
|
456
|
+
onError
|
|
457
|
+
]);
|
|
458
|
+
(0, react.useEffect)(() => {
|
|
459
|
+
if (!isLoading && !error && !order) onNotFound?.();
|
|
460
|
+
}, [
|
|
461
|
+
isLoading,
|
|
462
|
+
error,
|
|
463
|
+
order,
|
|
464
|
+
onNotFound
|
|
465
|
+
]);
|
|
466
|
+
if (isLoading) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailSkeleton, {});
|
|
467
|
+
if (!order) return null;
|
|
468
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
469
|
+
className: "flex flex-col lg:grid lg:grid-cols-8",
|
|
470
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(ItemsSection, { order }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(DetailsSection, { order })]
|
|
471
|
+
});
|
|
472
|
+
}
|
|
473
|
+
//#endregion
|
|
474
|
+
//#region ../../orders/ui/src/screens/PortalOrderDetailScreen.tsx
|
|
475
|
+
function PortalOrderDetailScreen({ id, onNavigateToList, onNotFound, onError }) {
|
|
476
|
+
require_ScreenHeaderContext.useScreenHeaderBreadcrumbs((0, react.useMemo)(() => /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.Breadcrumb, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbList, {
|
|
477
|
+
className: "text-lg",
|
|
478
|
+
children: [
|
|
479
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbLink, {
|
|
480
|
+
href: "#",
|
|
481
|
+
onClick: (e) => {
|
|
482
|
+
e.preventDefault();
|
|
483
|
+
onNavigateToList();
|
|
484
|
+
},
|
|
485
|
+
children: "Orders"
|
|
486
|
+
}) }),
|
|
487
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbSeparator, {}),
|
|
488
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_src.BreadcrumbItem, { children: /* @__PURE__ */ (0, react_jsx_runtime.jsxs)(require_src.BreadcrumbPage, {
|
|
489
|
+
className: "font-semibold",
|
|
490
|
+
children: ["Order #", id]
|
|
491
|
+
}) })
|
|
492
|
+
]
|
|
493
|
+
}) }), [id, onNavigateToList]));
|
|
494
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
495
|
+
className: "mx-auto max-w-7xl px-4 py-4 sm:px-6 sm:py-6 lg:px-10 lg:py-8",
|
|
496
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PortalOrderDetail, {
|
|
497
|
+
id,
|
|
498
|
+
onNotFound,
|
|
499
|
+
onError
|
|
500
|
+
})
|
|
501
|
+
});
|
|
502
|
+
}
|
|
503
|
+
//#endregion
|
|
504
|
+
//#region src/screens/OrderDetailScreen.tsx
|
|
505
|
+
function OrderDetailScreen({ token, onToast }) {
|
|
506
|
+
const ordersApi = require_use_account_clients.useOrdersApi();
|
|
507
|
+
const { navigate } = require_AppNavigationContext.useAppNavigation();
|
|
508
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)(require_order_status_badge.OrdersCoreProvider, {
|
|
509
|
+
api: ordersApi,
|
|
510
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(PortalOrderDetailScreen, {
|
|
511
|
+
id: token,
|
|
512
|
+
onNavigateToList: () => navigate("orders"),
|
|
513
|
+
onNotFound: () => {
|
|
514
|
+
onToast("Order not found", "warning");
|
|
515
|
+
navigate("orders");
|
|
516
|
+
},
|
|
517
|
+
onError: (err) => {
|
|
518
|
+
onToast(`Failed to load order: ${err instanceof Error ? err.message : "An error occurred"}`, "error");
|
|
519
|
+
}
|
|
520
|
+
})
|
|
521
|
+
});
|
|
522
|
+
}
|
|
523
|
+
//#endregion
|
|
524
|
+
//#region src/screens/OrdersScreen.tsx
|
|
525
|
+
function defaultToast(message, type) {
|
|
526
|
+
if (type === "error" || type === "warning") console.warn("[Orders]", message);
|
|
527
|
+
else console.info("[Orders]", message);
|
|
528
|
+
}
|
|
529
|
+
function OrdersScreen({ onToast, background, textColor, accentColor, padding, borderRadius, ...divProps }) {
|
|
530
|
+
const { currentSlug } = require_AppNavigationContext.useAppNavigation();
|
|
531
|
+
const effectiveToast = onToast ?? defaultToast;
|
|
532
|
+
const detailToken = currentSlug.split("/")[1];
|
|
533
|
+
if (detailToken !== void 0) return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
534
|
+
...divProps,
|
|
535
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OrderDetailScreen, {
|
|
536
|
+
token: detailToken,
|
|
537
|
+
onToast: effectiveToast
|
|
538
|
+
})
|
|
539
|
+
});
|
|
540
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
541
|
+
...divProps,
|
|
542
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)(OrdersListScreen, {})
|
|
543
|
+
});
|
|
544
|
+
}
|
|
545
|
+
const ordersScreenPropertySchema = {
|
|
546
|
+
widgetType: "OrdersScreen",
|
|
547
|
+
displayName: "Orders Screen",
|
|
548
|
+
tabsConfig: [{
|
|
549
|
+
id: "styling",
|
|
550
|
+
label: "Styling"
|
|
551
|
+
}],
|
|
552
|
+
fields: []
|
|
553
|
+
};
|
|
554
|
+
//#endregion
|
|
555
|
+
Object.defineProperty(exports, "OrdersScreen", {
|
|
556
|
+
enumerable: true,
|
|
557
|
+
get: function() {
|
|
558
|
+
return OrdersScreen;
|
|
559
|
+
}
|
|
560
|
+
});
|
|
561
|
+
Object.defineProperty(exports, "ordersScreenPropertySchema", {
|
|
562
|
+
enumerable: true,
|
|
563
|
+
get: function() {
|
|
564
|
+
return ordersScreenPropertySchema;
|
|
565
|
+
}
|
|
566
|
+
});
|
|
567
|
+
|
|
568
|
+
//# sourceMappingURL=OrdersScreen-DyYYjl9I.cjs.map
|