@burdenoff/microfe-store 2026.525.3 → 2026.528.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (69) hide show
  1. package/dist/StoreAdminRoutes.js +10 -9
  2. package/dist/StoreAdminRoutes.js.map +1 -1
  3. package/dist/StoreRoutes.js +2 -1
  4. package/dist/StoreRoutes.js.map +1 -1
  5. package/dist/components/AccessDenied.js +23 -0
  6. package/dist/components/AccessDenied.js.map +1 -0
  7. package/dist/components/InstallAppModal.js +183 -129
  8. package/dist/components/InstallAppModal.js.map +1 -1
  9. package/dist/components/PermissionGuard.js +8 -0
  10. package/dist/components/PermissionGuard.js.map +1 -0
  11. package/dist/components/RouteGuards.js +7 -21
  12. package/dist/components/RouteGuards.js.map +1 -1
  13. package/dist/components/cart/CartDrawer.js +20 -14
  14. package/dist/components/cart/CartDrawer.js.map +1 -1
  15. package/dist/hooks/useStoreGraphQL.js +22 -20
  16. package/dist/hooks/useStoreGraphQL.js.map +1 -1
  17. package/dist/hooks/useStoreGraphQLWithContext.js.map +1 -1
  18. package/dist/hooks/useStorePermissions.js +4 -1
  19. package/dist/hooks/useStorePermissions.js.map +1 -1
  20. package/dist/index.js +4 -4
  21. package/dist/pages/AdminDashboardPage.js +182 -183
  22. package/dist/pages/AdminDashboardPage.js.map +1 -1
  23. package/dist/pages/AdminReviewModerationPage.js +7 -6
  24. package/dist/pages/AdminReviewModerationPage.js.map +1 -1
  25. package/dist/pages/AdminStoresPage.js +193 -185
  26. package/dist/pages/AdminStoresPage.js.map +1 -1
  27. package/dist/pages/AdminSubmissionsQueuePage.js +140 -142
  28. package/dist/pages/AdminSubmissionsQueuePage.js.map +1 -1
  29. package/dist/pages/AppDetailPage.js +6 -3
  30. package/dist/pages/AppDetailPage.js.map +1 -1
  31. package/dist/pages/AppSettingsPage.js +6 -3
  32. package/dist/pages/AppSettingsPage.js.map +1 -1
  33. package/dist/pages/CartPage.js +23 -15
  34. package/dist/pages/CartPage.js.map +1 -1
  35. package/dist/pages/InstalledAppsPage.js +26 -15
  36. package/dist/pages/InstalledAppsPage.js.map +1 -1
  37. package/dist/pages/MarketplaceHomePage.js +275 -247
  38. package/dist/pages/MarketplaceHomePage.js.map +1 -1
  39. package/dist/pages/MyLicensesPage.js +10 -8
  40. package/dist/pages/MyLicensesPage.js.map +1 -1
  41. package/dist/pages/OrderConfirmationPage.js +72 -75
  42. package/dist/pages/OrderConfirmationPage.js.map +1 -1
  43. package/dist/pages/OrdersPage.js +22 -20
  44. package/dist/pages/OrdersPage.js.map +1 -1
  45. package/dist/pages/ProductCategoryPage.js +3 -1
  46. package/dist/pages/ProductCategoryPage.js.map +1 -1
  47. package/dist/pages/ProductDetailPage.js +458 -443
  48. package/dist/pages/ProductDetailPage.js.map +1 -1
  49. package/dist/pages/ProductReviewsPage.js +4 -3
  50. package/dist/pages/ProductReviewsPage.js.map +1 -1
  51. package/dist/pages/PublisherDashboardPage.js +13 -7
  52. package/dist/pages/PublisherDashboardPage.js.map +1 -1
  53. package/dist/pages/PublisherRevenuePage.js +7 -5
  54. package/dist/pages/PublisherRevenuePage.js.map +1 -1
  55. package/dist/pages/PublisherSubmissionsPage.js +12 -7
  56. package/dist/pages/PublisherSubmissionsPage.js.map +1 -1
  57. package/dist/pages/PublisherSubmitPage.js +6 -0
  58. package/dist/pages/PublisherSubmitPage.js.map +1 -1
  59. package/dist/pages/SearchResultsPage.js +6 -3
  60. package/dist/pages/SearchResultsPage.js.map +1 -1
  61. package/dist/pages/StoresPage.js +73 -74
  62. package/dist/pages/StoresPage.js.map +1 -1
  63. package/dist/providers/StoreProvider.js +25 -25
  64. package/dist/providers/StoreProvider.js.map +1 -1
  65. package/dist/utils/index.js +29 -19
  66. package/dist/utils/index.js.map +1 -1
  67. package/package.json +1 -1
  68. package/dist/components/index.js +0 -3
  69. package/dist/components/marketplace/ProductCard.js +0 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ProductCategoryPage.js","names":[],"sources":["../../src/pages/ProductCategoryPage.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useMemo } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { ArrowLeft } from 'lucide-react';\nimport { useStore } from '../providers/StoreProvider';\nimport { useBrowseStoreWithContext, type StoreProduct } from '../hooks/useStoreGraphQL';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nconst ProductTile: FC<{ product: StoreProduct; onOpen: (id: string) => void; noDesc: string }> = ({\n product,\n onOpen,\n noDesc,\n}) => (\n <button\n onClick={() => onOpen(product.id)}\n className=\"cursor-pointer rounded-xl border border-border-default bg-bg-surface p-4 text-left transition-colors hover:bg-bg-sunken\"\n >\n <h3 className=\"font-semibold text-text-primary\">{product.name}</h3>\n <p className=\"mt-1 text-xs text-text-muted\">{product.type}</p>\n <p className=\"mt-2 text-sm text-text-muted line-clamp-2\">{product.description || noDesc}</p>\n </button>\n);\n\nexport const ProductCategoryPage: FC = () => {\n const navigate = useNavigate();\n const { basePath } = useStore();\n const { categorySlug } = useParams<{ categorySlug: string }>();\n const { t } = useI18n();\n\n const category = useMemo(() => decodeURIComponent(categorySlug ?? ''), [categorySlug]);\n const { products, loading, error } = useBrowseStoreWithContext({\n filter: category ? { category } : undefined,\n pagination: { limit: 30 },\n });\n\n return (\n <div className=\"flex h-full flex-col\">\n <header className=\"border-b border-border-default bg-bg-surface px-6 py-4\">\n <div className=\"mx-auto flex max-w-6xl items-center gap-3\">\n <button\n onClick={() => navigate(-1)}\n aria-label=\"Go back\"\n className=\"cursor-pointer rounded-lg p-2 text-text-muted hover:bg-bg-sunken hover:text-text-primary\"\n >\n <ArrowLeft className=\"h-5 w-5\" />\n </button>\n <div>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n {t('pages.category.title', {\n defaultValue: `Category: ${category || 'All'}`,\n name: category || 'All',\n })}\n </h1>\n <p className=\"text-sm text-text-muted\">\n {t('pages.category.subtitle', {\n defaultValue: 'Browse products filtered by category',\n })}\n </p>\n </div>\n </div>\n </header>\n\n <main className=\"flex-1 overflow-y-auto p-6\">\n <div className=\"mx-auto max-w-6xl\">\n {loading ? (\n <p role=\"status\" className=\"text-sm text-text-muted\">\n {t('common.loading', { defaultValue: 'Loading products...' })}\n </p>\n ) : error ? (\n <p role=\"alert\" className=\"text-sm text-status-error-text\">\n {error.message}\n </p>\n ) : products.length === 0 ? (\n <p className=\"text-sm text-text-muted\">\n {t('pages.category.noProducts', {\n defaultValue: 'No products found for this category.',\n })}\n </p>\n ) : (\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {products.map((product) => (\n <li key={product.id}>\n <ProductTile\n product={product}\n noDesc={t('pages.productDetail.noDesc', {\n defaultValue: 'No description available.',\n })}\n onOpen={(id) => navigate(`${basePath}/marketplace/product/${id}`)}\n />\n </li>\n ))}\n </ul>\n )}\n </div>\n </main>\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAQA,IAAM,KAA4F,EAChG,YACA,WACA,gBAEA,kBAAC,UAAD;CACE,eAAe,EAAO,EAAQ,GAAG;CACjC,WAAU;WAFZ;EAIE,kBAAC,MAAD;GAAI,WAAU;aAAmC,EAAQ;GAAU,CAAA;EACnE,kBAAC,KAAD;GAAG,WAAU;aAAgC,EAAQ;GAAS,CAAA;EAC9D,kBAAC,KAAD;GAAG,WAAU;aAA6C,EAAQ,eAAe;GAAW,CAAA;EACrF;IAGE,UAAgC;CAC3C,IAAM,IAAW,GAAa,EACxB,EAAE,gBAAa,GAAU,EACzB,EAAE,oBAAiB,GAAqC,EACxD,EAAE,SAAM,GAAS,EAEjB,IAAW,QAAc,mBAAmB,KAAgB,GAAG,EAAE,CAAC,EAAa,CAAC,EAChF,EAAE,aAAU,YAAS,aAAU,EAA0B;EAC7D,QAAQ,IAAW,EAAE,aAAU,GAAG,KAAA;EAClC,YAAY,EAAE,OAAO,IAAI;EAC1B,CAAC;AAEF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,UAAD;GAAQ,WAAU;aAChB,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,UAAD;KACE,eAAe,EAAS,GAAG;KAC3B,cAAW;KACX,WAAU;eAEV,kBAAC,GAAD,EAAW,WAAU,WAAY,CAAA;KAC1B,CAAA,EACT,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eACX,EAAE,wBAAwB;MACzB,cAAc,aAAa,KAAY;MACvC,MAAM,KAAY;MACnB,CAAC;KACC,CAAA,EACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,2BAA2B,EAC5B,cAAc,wCACf,CAAC;KACA,CAAA,CACA,EAAA,CAAA,CACF;;GACC,CAAA,EAET,kBAAC,QAAD;GAAM,WAAU;aACd,kBAAC,OAAD;IAAK,WAAU;cACZ,IACC,kBAAC,KAAD;KAAG,MAAK;KAAS,WAAU;eACxB,EAAE,kBAAkB,EAAE,cAAc,uBAAuB,CAAC;KAC3D,CAAA,GACF,IACF,kBAAC,KAAD;KAAG,MAAK;KAAQ,WAAU;eACvB,EAAM;KACL,CAAA,GACF,EAAS,WAAW,IACtB,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,6BAA6B,EAC9B,cAAc,wCACf,CAAC;KACA,CAAA,GAEJ,kBAAC,MAAD;KAAI,WAAU;eACX,EAAS,KAAK,MACb,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;MACW;MACT,QAAQ,EAAE,8BAA8B,EACtC,cAAc,6BACf,CAAC;MACF,SAAS,MAAO,EAAS,GAAG,EAAS,uBAAuB,IAAK;MACjE,CAAA,EACC,EARI,EAAQ,GAQZ,CACL;KACC,CAAA;IAEH,CAAA;GACD,CAAA,CACH"}
1
+ {"version":3,"file":"ProductCategoryPage.js","names":[],"sources":["../../src/pages/ProductCategoryPage.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useMemo } from 'react';\nimport { useNavigate, useParams } from 'react-router-dom';\nimport { ArrowLeft } from 'lucide-react';\nimport { useStore } from '../providers/StoreProvider';\nimport { useBrowseStoreWithContext, type StoreProduct } from '../hooks/useStoreGraphQL';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\n\nconst ProductTile: FC<{ product: StoreProduct; onOpen: (id: string) => void; noDesc: string }> = ({\n product,\n onOpen,\n noDesc,\n}) => (\n <button\n type=\"button\"\n onClick={() => onOpen(product.id)}\n className=\"cursor-pointer rounded-xl border border-border-default bg-bg-surface p-4 text-left transition-colors hover:bg-bg-sunken\"\n >\n <h3 className=\"font-semibold text-text-primary\">{product.name}</h3>\n <p className=\"mt-1 text-xs text-text-muted\">{product.type}</p>\n <p className=\"mt-2 text-sm text-text-muted line-clamp-2\">{product.description || noDesc}</p>\n </button>\n);\n\nexport const ProductCategoryPage: FC = () => {\n const navigate = useNavigate();\n const { basePath } = useStore();\n const { categorySlug } = useParams<{ categorySlug: string }>();\n const { t } = useI18n();\n\n const category = useMemo(() => decodeURIComponent(categorySlug ?? ''), [categorySlug]);\n const { products, loading, error } = useBrowseStoreWithContext({\n filter: category ? { category } : undefined,\n pagination: { limit: 30 },\n });\n\n return (\n <div className=\"flex h-full flex-col\">\n <header className=\"border-b border-border-default bg-bg-surface px-6 py-4\">\n <div className=\"mx-auto flex max-w-6xl items-center gap-3\">\n <button\n type=\"button\"\n onClick={() => navigate(-1)}\n aria-label=\"Go back\"\n className=\"cursor-pointer rounded-lg p-2 text-text-muted hover:bg-bg-sunken hover:text-text-primary\"\n >\n <ArrowLeft className=\"size-5\" />\n </button>\n <div>\n <h1 className=\"text-2xl font-bold text-text-primary\">\n {t('pages.category.title', {\n defaultValue: `Category: ${category || 'All'}`,\n name: category || 'All',\n })}\n </h1>\n <p className=\"text-sm text-text-muted\">\n {t('pages.category.subtitle', {\n defaultValue: 'Browse products filtered by category',\n })}\n </p>\n </div>\n </div>\n </header>\n\n <main className=\"flex-1 overflow-y-auto p-6\">\n <div className=\"mx-auto max-w-6xl\">\n {loading ? (\n <p role=\"status\" className=\"text-sm text-text-muted\">\n {t('common.loading', { defaultValue: 'Loading products...' })}\n </p>\n ) : error ? (\n <p role=\"alert\" className=\"text-sm text-status-error-text\">\n {error.message}\n </p>\n ) : products.length === 0 ? (\n <p className=\"text-sm text-text-muted\">\n {t('pages.category.noProducts', {\n defaultValue: 'No products found for this category.',\n })}\n </p>\n ) : (\n <ul className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {products.map((product) => (\n <li key={product.id}>\n <ProductTile\n product={product}\n noDesc={t('pages.productDetail.noDesc', {\n defaultValue: 'No description available.',\n })}\n onOpen={(id) => navigate(`${basePath}/marketplace/product/${id}`)}\n />\n </li>\n ))}\n </ul>\n )}\n </div>\n </main>\n </div>\n );\n};\n"],"mappings":";;;;;;;;AAQA,IAAM,KAA4F,EAChG,YACA,WACA,gBAEA,kBAAC,UAAD;CACE,MAAK;CACL,eAAe,EAAO,EAAQ,GAAG;CACjC,WAAU;WAHZ;EAKE,kBAAC,MAAD;GAAI,WAAU;aAAmC,EAAQ;GAAU,CAAA;EACnE,kBAAC,KAAD;GAAG,WAAU;aAAgC,EAAQ;GAAS,CAAA;EAC9D,kBAAC,KAAD;GAAG,WAAU;aAA6C,EAAQ,eAAe;GAAW,CAAA;EACrF;IAGE,UAAgC;CAC3C,IAAM,IAAW,GAAa,EACxB,EAAE,gBAAa,GAAU,EACzB,EAAE,oBAAiB,GAAqC,EACxD,EAAE,SAAM,GAAS,EAEjB,IAAW,QAAc,mBAAmB,KAAgB,GAAG,EAAE,CAAC,EAAa,CAAC,EAChF,EAAE,aAAU,YAAS,aAAU,EAA0B;EAC7D,QAAQ,IAAW,EAAE,aAAU,GAAG,KAAA;EAClC,YAAY,EAAE,OAAO,IAAI;EAC1B,CAAC;AAEF,QACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,UAAD;GAAQ,WAAU;aAChB,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,UAAD;KACE,MAAK;KACL,eAAe,EAAS,GAAG;KAC3B,cAAW;KACX,WAAU;eAEV,kBAAC,GAAD,EAAW,WAAU,UAAW,CAAA;KACzB,CAAA,EACT,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,MAAD;KAAI,WAAU;eACX,EAAE,wBAAwB;MACzB,cAAc,aAAa,KAAY;MACvC,MAAM,KAAY;MACnB,CAAC;KACC,CAAA,EACL,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,2BAA2B,EAC5B,cAAc,wCACf,CAAC;KACA,CAAA,CACA,EAAA,CAAA,CACF;;GACC,CAAA,EAET,kBAAC,QAAD;GAAM,WAAU;aACd,kBAAC,OAAD;IAAK,WAAU;cACZ,IACC,kBAAC,KAAD;KAAG,MAAK;KAAS,WAAU;eACxB,EAAE,kBAAkB,EAAE,cAAc,uBAAuB,CAAC;KAC3D,CAAA,GACF,IACF,kBAAC,KAAD;KAAG,MAAK;KAAQ,WAAU;eACvB,EAAM;KACL,CAAA,GACF,EAAS,WAAW,IACtB,kBAAC,KAAD;KAAG,WAAU;eACV,EAAE,6BAA6B,EAC9B,cAAc,wCACf,CAAC;KACA,CAAA,GAEJ,kBAAC,MAAD;KAAI,WAAU;eACX,EAAS,KAAK,MACb,kBAAC,MAAD,EAAA,UACE,kBAAC,GAAD;MACW;MACT,QAAQ,EAAE,8BAA8B,EACtC,cAAc,6BACf,CAAC;MACF,SAAS,MAAO,EAAS,GAAG,EAAS,uBAAuB,IAAK;MACjE,CAAA,EACC,EARI,EAAQ,GAQZ,CACL;KACC,CAAA;IAEH,CAAA;GACD,CAAA,CACH"}