@burdenoff/microfe-devportal 2026.720.5 → 2026.720.7

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 (49) hide show
  1. package/dist/devportal/components/MarkdownEditor.d.ts +24 -0
  2. package/dist/devportal/components/MarkdownEditor.d.ts.map +1 -0
  3. package/dist/devportal/components/MarkdownEditor.js +136 -0
  4. package/dist/devportal/components/MarkdownEditor.js.map +1 -0
  5. package/dist/devportal/components/index.d.ts +1 -0
  6. package/dist/devportal/components/index.d.ts.map +1 -1
  7. package/dist/devportal/components/index.js +1 -0
  8. package/dist/devportal/hooks/usePackageUpload.d.ts.map +1 -1
  9. package/dist/devportal/hooks/usePackageUpload.js.map +1 -1
  10. package/dist/devportal/pages/ApplicationDetailPage.d.ts.map +1 -1
  11. package/dist/devportal/pages/ApplicationDetailPage.js +748 -746
  12. package/dist/devportal/pages/ApplicationDetailPage.js.map +1 -1
  13. package/dist/devportal/pages/ApplicationVersionsPage.d.ts.map +1 -1
  14. package/dist/devportal/pages/ApplicationVersionsPage.js +390 -374
  15. package/dist/devportal/pages/ApplicationVersionsPage.js.map +1 -1
  16. package/dist/devportal/pages/CreateApiKeyPage.d.ts.map +1 -1
  17. package/dist/devportal/pages/CreateApiKeyPage.js +103 -104
  18. package/dist/devportal/pages/CreateApiKeyPage.js.map +1 -1
  19. package/dist/devportal/pages/CreateApplicationPage.d.ts.map +1 -1
  20. package/dist/devportal/pages/CreateApplicationPage.js +103 -103
  21. package/dist/devportal/pages/CreateApplicationPage.js.map +1 -1
  22. package/dist/devportal/pages/CreateOAuthClientPage.d.ts.map +1 -1
  23. package/dist/devportal/pages/CreateOAuthClientPage.js +129 -130
  24. package/dist/devportal/pages/CreateOAuthClientPage.js.map +1 -1
  25. package/dist/devportal/pages/CreateWebhookPage.js +1 -1
  26. package/dist/devportal/pages/CreateWebhookPage.js.map +1 -1
  27. package/dist/devportal/pages/DelegationsPage.js +214 -214
  28. package/dist/devportal/pages/DelegationsPage.js.map +1 -1
  29. package/dist/devportal/pages/EditApplicationPage.d.ts.map +1 -1
  30. package/dist/devportal/pages/EditApplicationPage.js +285 -284
  31. package/dist/devportal/pages/EditApplicationPage.js.map +1 -1
  32. package/dist/devportal/pages/ListingPreviewPage.d.ts.map +1 -1
  33. package/dist/devportal/pages/ListingPreviewPage.js +162 -158
  34. package/dist/devportal/pages/ListingPreviewPage.js.map +1 -1
  35. package/dist/devportal/pages/PublishPage.d.ts.map +1 -1
  36. package/dist/devportal/pages/PublishPage.js +106 -106
  37. package/dist/devportal/pages/PublishPage.js.map +1 -1
  38. package/dist/devportal/pages/SellerDashboardPage.d.ts.map +1 -1
  39. package/dist/devportal/pages/SellerDashboardPage.js +136 -137
  40. package/dist/devportal/pages/SellerDashboardPage.js.map +1 -1
  41. package/dist/devportal/pages/SellerItemsPage.d.ts.map +1 -1
  42. package/dist/devportal/pages/SellerItemsPage.js +190 -191
  43. package/dist/devportal/pages/SellerItemsPage.js.map +1 -1
  44. package/dist/devportal/pages/SellerOrdersPage.d.ts.map +1 -1
  45. package/dist/devportal/pages/SellerOrdersPage.js +138 -139
  46. package/dist/devportal/pages/SellerOrdersPage.js.map +1 -1
  47. package/dist/devportal/types/index.d.ts.map +1 -1
  48. package/dist/devportal/types/index.js.map +1 -1
  49. package/package.json +2 -2
@@ -1 +1 @@
1
- {"version":3,"file":"ListingPreviewPage.js","names":[],"sources":["../../../src/devportal/pages/ListingPreviewPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Star,\n Download,\n Globe,\n FileText,\n Shield,\n ExternalLink,\n Tag,\n CheckCircle,\n Loader2,\n Eye,\n} from \"lucide-react\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { Alert } from \"../components/ConfirmDialog\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { useGetApplicationQuery } from \"../../generated/global-operations\";\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst PRICING_LABELS: Record<string, string> = {\n FREE: \"Free\",\n FREEMIUM: \"Free with in-app purchases\",\n PAID: \"Paid\",\n ONE_TIME: \"One-time purchase\",\n SUBSCRIPTION: \"Subscription\",\n USAGE_BASED: \"Usage-based pricing\",\n ENTERPRISE: \"Enterprise pricing\",\n};\n\nconst APP_TYPE_LABELS: Record<string, string> = {\n WORKFLOW: \"Workflow\",\n WIDGET: \"Widget\",\n BOT: \"Bot / Chatbot\",\n API_INTEGRATION: \"API Integration\",\n INTEGRATION: \"Integration\",\n ANALYST: \"AI Analyst\",\n ASSISTANT: \"AI Assistant\",\n AUTOMATION: \"Automation\",\n SPECIALIST: \"AI Specialist\",\n WEB_APP: \"Web App\",\n MOBILE_APP: \"Mobile App\",\n DESKTOP_APP: \"Desktop App\",\n CLI_TOOL: \"CLI Tool\",\n SERVICE: \"Service\",\n};\n\n// ============================================================================\n// Listing Preview Page\n// ============================================================================\n\nexport const ListingPreviewPage: FC = () => {\n const { appId } = useParams<{ appId: string }>();\n const { navigate, basePath } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const { data, loading, error } = useGetApplicationQuery({\n variables: { id: appId! },\n skip: !appId,\n fetchPolicy: \"cache-and-network\",\n });\n\n const app = data?.application;\n\n useEffect(() => {\n const name = app?.name;\n if (!appId || !name) return;\n const reg = (\n window as unknown as {\n __breadcrumbRegistry?: {\n register: (id: string, name: string) => void;\n unregister: (id: string) => void;\n };\n }\n ).__breadcrumbRegistry;\n reg?.register(appId, name);\n return () => reg?.unregister(appId);\n }, [appId, app?.name]);\n\n if (loading) {\n return (\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\"devportal.loading\", \"Loading...\")}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n >\n <div className=\"flex items-center justify-center py-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n </PageLayout>\n );\n }\n\n if (error || !app) {\n return (\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\n \"devportal.couldNotLoadApplication\",\n \"Could not load application\",\n )}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n >\n <Alert\n variant=\"error\"\n title={tr(\n \"devportal.failedToLoadApplication\",\n \"Failed to load application\",\n )}\n >\n {error?.message ??\n tr(\"devportal.applicationNotFound\", \"Application not found\")}\n </Alert>\n </PageLayout>\n );\n }\n\n const screenshots = Array.isArray(app.screenshots)\n ? (app.screenshots as string[])\n : [];\n\n const isPublished = app.status === \"PUBLISHED\";\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\n \"devportal.marketplacePreviewDescription\",\n \"Preview how your app will appear in the marketplace\",\n )}\n purpose={tr(\n \"devportal.marketplacePreviewPurpose\",\n \"See exactly how shoppers will experience your store listing — icon, screenshots, description, and pricing — before it goes live. Use it to catch missing assets or typos, then submit for review when the listing looks right.\",\n )}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n actions={\n !isPublished ? (\n <button\n onClick={() => navigate?.(`${basePath}/apps/${appId}/publish`)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Eye size={16} />\n {tr(\"devportal.submitForReview\", \"Submit for Review\")}\n </button>\n ) : undefined\n }\n >\n {/* Preview banner */}\n <div className=\"flex items-center gap-2 rounded-lg border border-border-subtle bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text\">\n <Eye size={16} className=\"flex-shrink-0\" />\n <span>\n {tr(\n \"devportal.previewBannerText\",\n \"This is a preview of your marketplace listing. It shows how your app will appear to users after publication.\",\n )}\n </span>\n </div>\n\n {/* === Simulated marketplace product page === */}\n <div className=\"rounded-xl border bg-bg-surface overflow-hidden\">\n {/* Banner */}\n {app.bannerUrl ? (\n <div className=\"h-48 w-full overflow-hidden\">\n <img\n src={app.bannerUrl}\n alt={tr(\"devportal.appBannerAlt\", \"App banner\")}\n className=\"h-full w-full object-cover\"\n />\n </div>\n ) : (\n <div className=\"h-32 w-full bg-gradient-to-r from-primary/20 to-primary/5\" />\n )}\n\n {/* Hero */}\n <div className=\"p-6\">\n <div className=\"flex items-start gap-5\">\n {app.iconUrl ? (\n <img\n src={app.iconUrl}\n alt={app.name}\n className=\"h-20 w-20 rounded-2xl border object-cover flex-shrink-0 shadow-sm\"\n />\n ) : (\n <div className=\"h-20 w-20 rounded-2xl border bg-bg-sunken flex items-center justify-center flex-shrink-0\">\n <span\n className=\"text-3xl font-bold text-text-secondary\"\n aria-label={tr(\n \"devportal.appIconFallbackAriaLabel\",\n \"App icon\",\n )}\n >\n {app.name.charAt(0).toUpperCase()}\n </span>\n </div>\n )}\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-2xl font-bold\">{app.name}</h1>\n {app.isVerified && (\n <CheckCircle size={20} className=\"text-primary\" />\n )}\n {app.isFeatured && (\n <span className=\"rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text\">\n {tr(\"devportal.featured\", \"Featured\")}\n </span>\n )}\n </div>\n\n <p className=\"mt-1 text-text-secondary\">\n {app.shortDescription ??\n app.description ??\n tr(\"devportal.noDescription\", \"No description\")}\n </p>\n\n <div className=\"mt-3 flex flex-wrap items-center gap-4 text-sm text-text-secondary\">\n {app.averageRating != null && (\n <div className=\"flex items-center gap-1\">\n <Star\n size={14}\n className=\"text-status-warning-text fill-status-warning-text\"\n />\n <span className=\"font-medium text-text-primary\">\n {app.averageRating.toFixed(1)}\n </span>\n <span>\n ({app.reviewCount ?? 0}{\" \"}\n {tr(\"devportal.reviews\", \"reviews\")})\n </span>\n </div>\n )}\n <div className=\"flex items-center gap-1\">\n <Download size={14} />\n <span>\n {(app.installCount ?? 0).toLocaleString()}{\" \"}\n {tr(\"devportal.installs\", \"installs\")}\n </span>\n </div>\n {app.category && (\n <span className=\"rounded-full border px-2 py-0.5 text-xs\">\n {app.category}\n </span>\n )}\n <span className=\"rounded-full border px-2 py-0.5 text-xs\">\n {APP_TYPE_LABELS[app.appType] ?? app.appType}\n </span>\n </div>\n </div>\n\n {/* Install CTA (simulated) */}\n <div className=\"flex-shrink-0 text-right space-y-2\">\n <div className=\"text-lg font-semibold\">\n {PRICING_LABELS[app.pricingType ?? \"FREE\"] ?? \"Free\"}\n </div>\n <button\n disabled\n className=\"w-full rounded-lg bg-action-primary-bg px-6 py-2 text-sm font-semibold text-action-primary-text opacity-60 cursor-not-allowed\"\n title={tr(\"devportal.previewOnly\", \"Preview only\")}\n >\n {tr(\"devportal.install\", \"Install\")}\n </button>\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.previewOnly\", \"Preview only\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Screenshots */}\n {screenshots.length > 0 && (\n <div className=\"border-t px-6 py-5\">\n <h2 className=\"text-base font-semibold mb-3\">\n {tr(\"devportal.screenshots\", \"Screenshots\")}\n </h2>\n <div className=\"flex gap-3 overflow-x-auto pb-2\">\n {screenshots.map((url, i) => (\n <img\n key={i}\n src={url}\n alt={`${tr(\"devportal.screenshotAlt\", \"Screenshot\")} ${i + 1}`}\n className=\"h-44 w-auto rounded-lg border object-cover flex-shrink-0\"\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Description */}\n <div className=\"border-t px-6 py-5\">\n <h2 className=\"text-base font-semibold mb-2\">\n {tr(\"devportal.about\", \"About\")}\n </h2>\n <p className=\"text-sm text-text-secondary whitespace-pre-wrap\">\n {app.description ??\n app.shortDescription ??\n tr(\n \"devportal.noDetailedDescription\",\n \"No detailed description provided.\",\n )}\n </p>\n </div>\n\n {/* Tags */}\n {Array.isArray(app.tags) && app.tags.length > 0 && (\n <div className=\"border-t px-6 py-4\">\n <div className=\"flex flex-wrap gap-2\">\n {(app.tags as string[]).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 rounded-full border px-3 py-1 text-xs text-text-secondary\"\n >\n <Tag size={10} />\n {tag}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {/* Links & Compliance */}\n <div className=\"border-t px-6 py-5 grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm\">\n {app.websiteUrl && (\n <a\n href={app.websiteUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <Globe size={14} />\n {tr(\"devportal.website\", \"Website\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.documentationUrl && (\n <a\n href={app.documentationUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <FileText size={14} />\n {tr(\"devportal.documentation\", \"Documentation\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.privacyPolicyUrl && (\n <a\n href={app.privacyPolicyUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <Shield size={14} />\n {tr(\"devportal.privacyPolicy\", \"Privacy Policy\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.termsOfServiceUrl && (\n <a\n href={app.termsOfServiceUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <FileText size={14} />\n {tr(\"devportal.termsOfService\", \"Terms of Service\")}\n <ExternalLink size={12} />\n </a>\n )}\n </div>\n </div>\n\n {/* Completeness tips */}\n <PageSection\n title={tr(\"devportal.listingCompleteness\", \"Listing Completeness\")}\n >\n <div className=\"space-y-2\">\n {[\n {\n label: tr(\"devportal.completenessAppIcon\", \"App icon\"),\n ok: !!app.iconUrl,\n },\n {\n label: tr(\"devportal.completenessBannerImage\", \"Banner image\"),\n ok: !!app.bannerUrl,\n },\n {\n label: tr(\n \"devportal.completenessShortDescription\",\n \"Short description\",\n ),\n ok: !!app.shortDescription,\n },\n {\n label: tr(\n \"devportal.completenessFullDescription\",\n \"Full description\",\n ),\n ok: !!app.description,\n },\n {\n label: tr(\n \"devportal.completenessScreenshots\",\n \"Screenshots (3+)\",\n ),\n ok: screenshots.length >= 3,\n },\n {\n label: tr(\"devportal.completenessCategory\", \"Category\"),\n ok: !!app.category,\n },\n {\n label: tr(\"devportal.completenessTags\", \"Tags\"),\n ok:\n Array.isArray(app.tags) && (app.tags as string[]).length > 0,\n },\n {\n label: tr(\n \"devportal.completenessPrivacyPolicy\",\n \"Privacy policy URL\",\n ),\n ok: !!app.privacyPolicyUrl,\n },\n {\n label: tr(\n \"devportal.completenessTermsOfService\",\n \"Terms of service URL\",\n ),\n ok: !!app.termsOfServiceUrl,\n },\n ].map(({ label, ok }) => (\n <div key={label} className=\"flex items-center gap-3 text-sm\">\n {ok ? (\n <CheckCircle\n size={16}\n className=\"text-status-success-text flex-shrink-0\"\n />\n ) : (\n <div className=\"h-4 w-4 rounded-full border-2 border-muted-foreground flex-shrink-0\" />\n )}\n <span\n className={ok ? \"text-text-primary\" : \"text-text-secondary\"}\n >\n {label}\n </span>\n </div>\n ))}\n </div>\n {!isPublished && (\n <button\n onClick={() => navigate?.(`${basePath}/apps/${appId}/edit`)}\n className=\"mt-4 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken\"\n >\n {tr(\n \"devportal.editToImproveListing\",\n \"Edit to improve listing →\",\n )}\n </button>\n )}\n </PageSection>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"ListingPreviewPage.js","names":[],"sources":["../../../src/devportal/pages/ListingPreviewPage.tsx"],"sourcesContent":["import type { FC } from \"react\";\nimport { useEffect } from \"react\";\nimport { useParams } from \"react-router-dom\";\nimport { useI18n } from \"@burdenoff/fe-libs/shared/providers/shell/I18nProvider\";\nimport {\n Star,\n Download,\n Globe,\n FileText,\n Shield,\n ExternalLink,\n Tag,\n CheckCircle,\n Loader2,\n Eye,\n} from \"lucide-react\";\nimport { PageLayout, PageSection } from \"../components/PageLayout\";\nimport { Alert } from \"../components/ConfirmDialog\";\nimport { Markdown } from \"@burdenoff/fe-libs/shared/components\";\nimport { useDevportal } from \"../providers/DevportalProvider\";\nimport { PermissionGuard } from \"../components\";\nimport { useGetApplicationQuery } from \"../../generated/global-operations\";\n\n// ============================================================================\n// Helpers\n// ============================================================================\n\nconst PRICING_LABELS: Record<string, string> = {\n FREE: \"Free\",\n FREEMIUM: \"Free with in-app purchases\",\n PAID: \"Paid\",\n ONE_TIME: \"One-time purchase\",\n SUBSCRIPTION: \"Subscription\",\n USAGE_BASED: \"Usage-based pricing\",\n ENTERPRISE: \"Enterprise pricing\",\n};\n\nconst APP_TYPE_LABELS: Record<string, string> = {\n WORKFLOW: \"Workflow\",\n WIDGET: \"Widget\",\n BOT: \"Bot / Chatbot\",\n API_INTEGRATION: \"API Integration\",\n INTEGRATION: \"Integration\",\n ANALYST: \"AI Analyst\",\n ASSISTANT: \"AI Assistant\",\n AUTOMATION: \"Automation\",\n SPECIALIST: \"AI Specialist\",\n WEB_APP: \"Web App\",\n MOBILE_APP: \"Mobile App\",\n DESKTOP_APP: \"Desktop App\",\n CLI_TOOL: \"CLI Tool\",\n SERVICE: \"Service\",\n};\n\n// ============================================================================\n// Listing Preview Page\n// ============================================================================\n\nexport const ListingPreviewPage: FC = () => {\n const { appId } = useParams<{ appId: string }>();\n const { navigate, basePath } = useDevportal();\n const { t } = useI18n();\n const tr = (key: string, fallback: string): string => {\n const value = t(key);\n return value === key ? fallback : value;\n };\n const { data, loading, error } = useGetApplicationQuery({\n variables: { id: appId! },\n skip: !appId,\n fetchPolicy: \"cache-and-network\",\n });\n\n const app = data?.application;\n\n useEffect(() => {\n const name = app?.name;\n if (!appId || !name) return;\n const reg = (\n window as unknown as {\n __breadcrumbRegistry?: {\n register: (id: string, name: string) => void;\n unregister: (id: string) => void;\n };\n }\n ).__breadcrumbRegistry;\n reg?.register(appId, name);\n return () => reg?.unregister(appId);\n }, [appId, app?.name]);\n\n if (loading) {\n return (\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\"devportal.loading\", \"Loading...\")}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n >\n <div className=\"flex items-center justify-center py-12\">\n <Loader2 className=\"h-8 w-8 animate-spin text-text-secondary\" />\n </div>\n </PageLayout>\n );\n }\n\n if (error || !app) {\n return (\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\n \"devportal.couldNotLoadApplication\",\n \"Could not load application\",\n )}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n >\n <Alert\n variant=\"error\"\n title={tr(\n \"devportal.failedToLoadApplication\",\n \"Failed to load application\",\n )}\n >\n {error?.message ??\n tr(\"devportal.applicationNotFound\", \"Application not found\")}\n </Alert>\n </PageLayout>\n );\n }\n\n const screenshots = Array.isArray(app.screenshots)\n ? (app.screenshots as string[])\n : [];\n\n const isPublished = app.status === \"PUBLISHED\";\n\n return (\n <PermissionGuard authOnly>\n <PageLayout\n title={tr(\"devportal.marketplacePreview\", \"Marketplace Preview\")}\n description={tr(\n \"devportal.marketplacePreviewDescription\",\n \"Preview how your app will appear in the marketplace\",\n )}\n purpose={tr(\n \"devportal.marketplacePreviewPurpose\",\n \"See exactly how shoppers will experience your store listing — icon, screenshots, description, and pricing — before it goes live. Use it to catch missing assets or typos, then submit for review when the listing looks right.\",\n )}\n backLink={`/apps/${appId}`}\n backLabel={tr(\"devportal.backToApplication\", \"Back to Application\")}\n actions={\n !isPublished ? (\n <button\n onClick={() => navigate?.(`${basePath}/apps/${appId}/publish`)}\n className=\"inline-flex items-center gap-2 rounded-md bg-action-primary-bg px-4 py-2 text-sm font-medium text-action-primary-text hover:bg-action-primary-bg/90\"\n >\n <Eye size={16} />\n {tr(\"devportal.submitForReview\", \"Submit for Review\")}\n </button>\n ) : undefined\n }\n >\n {/* Preview banner */}\n <div className=\"flex items-center gap-2 rounded-lg border border-border-subtle bg-status-warning-bg-subtle px-4 py-3 text-sm text-status-warning-text\">\n <Eye size={16} className=\"flex-shrink-0\" />\n <span>\n {tr(\n \"devportal.previewBannerText\",\n \"This is a preview of your marketplace listing. It shows how your app will appear to users after publication.\",\n )}\n </span>\n </div>\n\n {/* === Simulated marketplace product page === */}\n <div className=\"rounded-xl border bg-bg-surface overflow-hidden\">\n {/* Banner */}\n {app.bannerUrl ? (\n <div className=\"h-48 w-full overflow-hidden\">\n <img\n src={app.bannerUrl}\n alt={tr(\"devportal.appBannerAlt\", \"App banner\")}\n className=\"h-full w-full object-cover\"\n />\n </div>\n ) : (\n <div className=\"h-32 w-full bg-gradient-to-r from-primary/20 to-primary/5\" />\n )}\n\n {/* Hero */}\n <div className=\"p-6\">\n <div className=\"flex items-start gap-5\">\n {app.iconUrl ? (\n <img\n src={app.iconUrl}\n alt={app.name}\n className=\"h-20 w-20 rounded-2xl border object-cover flex-shrink-0 shadow-sm\"\n />\n ) : (\n <div className=\"h-20 w-20 rounded-2xl border bg-bg-sunken flex items-center justify-center flex-shrink-0\">\n <span\n className=\"text-3xl font-bold text-text-secondary\"\n aria-label={tr(\n \"devportal.appIconFallbackAriaLabel\",\n \"App icon\",\n )}\n >\n {app.name.charAt(0).toUpperCase()}\n </span>\n </div>\n )}\n\n <div className=\"flex-1 min-w-0\">\n <div className=\"flex flex-wrap items-center gap-2\">\n <h1 className=\"text-2xl font-bold\">{app.name}</h1>\n {app.isVerified && (\n <CheckCircle size={20} className=\"text-primary\" />\n )}\n {app.isFeatured && (\n <span className=\"rounded-full bg-status-warning-bg-subtle px-2 py-0.5 text-xs font-medium text-status-warning-text\">\n {tr(\"devportal.featured\", \"Featured\")}\n </span>\n )}\n </div>\n\n <p className=\"mt-1 text-text-secondary\">\n {app.shortDescription ??\n app.description ??\n tr(\"devportal.noDescription\", \"No description\")}\n </p>\n\n <div className=\"mt-3 flex flex-wrap items-center gap-4 text-sm text-text-secondary\">\n {app.averageRating != null && (\n <div className=\"flex items-center gap-1\">\n <Star\n size={14}\n className=\"text-status-warning-text fill-status-warning-text\"\n />\n <span className=\"font-medium text-text-primary\">\n {app.averageRating.toFixed(1)}\n </span>\n <span>\n ({app.reviewCount ?? 0}{\" \"}\n {tr(\"devportal.reviews\", \"reviews\")})\n </span>\n </div>\n )}\n <div className=\"flex items-center gap-1\">\n <Download size={14} />\n <span>\n {(app.installCount ?? 0).toLocaleString()}{\" \"}\n {tr(\"devportal.installs\", \"installs\")}\n </span>\n </div>\n {app.category && (\n <span className=\"rounded-full border px-2 py-0.5 text-xs\">\n {app.category}\n </span>\n )}\n <span className=\"rounded-full border px-2 py-0.5 text-xs\">\n {APP_TYPE_LABELS[app.appType] ?? app.appType}\n </span>\n </div>\n </div>\n\n {/* Install CTA (simulated) */}\n <div className=\"flex-shrink-0 text-right space-y-2\">\n <div className=\"text-lg font-semibold\">\n {PRICING_LABELS[app.pricingType ?? \"FREE\"] ?? \"Free\"}\n </div>\n <button\n disabled\n className=\"w-full rounded-lg bg-action-primary-bg px-6 py-2 text-sm font-semibold text-action-primary-text opacity-60 cursor-not-allowed\"\n title={tr(\"devportal.previewOnly\", \"Preview only\")}\n >\n {tr(\"devportal.install\", \"Install\")}\n </button>\n <p className=\"text-xs text-text-secondary\">\n {tr(\"devportal.previewOnly\", \"Preview only\")}\n </p>\n </div>\n </div>\n </div>\n\n {/* Screenshots */}\n {screenshots.length > 0 && (\n <div className=\"border-t px-6 py-5\">\n <h2 className=\"text-base font-semibold mb-3\">\n {tr(\"devportal.screenshots\", \"Screenshots\")}\n </h2>\n <div className=\"flex gap-3 overflow-x-auto pb-2\">\n {screenshots.map((url, i) => (\n <img\n key={i}\n src={url}\n alt={`${tr(\"devportal.screenshotAlt\", \"Screenshot\")} ${i + 1}`}\n className=\"h-44 w-auto rounded-lg border object-cover flex-shrink-0\"\n />\n ))}\n </div>\n </div>\n )}\n\n {/* Description */}\n <div className=\"border-t px-6 py-5\">\n <h2 className=\"text-base font-semibold mb-2\">\n {tr(\"devportal.about\", \"About\")}\n </h2>\n {app.description || app.shortDescription ? (\n <Markdown className=\"text-sm text-text-secondary\">\n {app.description ?? app.shortDescription ?? \"\"}\n </Markdown>\n ) : (\n <p className=\"text-sm text-text-secondary\">\n {tr(\n \"devportal.noDetailedDescription\",\n \"No detailed description provided.\",\n )}\n </p>\n )}\n </div>\n\n {/* Tags */}\n {Array.isArray(app.tags) && app.tags.length > 0 && (\n <div className=\"border-t px-6 py-4\">\n <div className=\"flex flex-wrap gap-2\">\n {(app.tags as string[]).map((tag) => (\n <span\n key={tag}\n className=\"inline-flex items-center gap-1 rounded-full border px-3 py-1 text-xs text-text-secondary\"\n >\n <Tag size={10} />\n {tag}\n </span>\n ))}\n </div>\n </div>\n )}\n\n {/* Links & Compliance */}\n <div className=\"border-t px-6 py-5 grid grid-cols-1 sm:grid-cols-2 gap-4 text-sm\">\n {app.websiteUrl && (\n <a\n href={app.websiteUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <Globe size={14} />\n {tr(\"devportal.website\", \"Website\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.documentationUrl && (\n <a\n href={app.documentationUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <FileText size={14} />\n {tr(\"devportal.documentation\", \"Documentation\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.privacyPolicyUrl && (\n <a\n href={app.privacyPolicyUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <Shield size={14} />\n {tr(\"devportal.privacyPolicy\", \"Privacy Policy\")}\n <ExternalLink size={12} />\n </a>\n )}\n {app.termsOfServiceUrl && (\n <a\n href={app.termsOfServiceUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center gap-2 text-primary hover:underline\"\n >\n <FileText size={14} />\n {tr(\"devportal.termsOfService\", \"Terms of Service\")}\n <ExternalLink size={12} />\n </a>\n )}\n </div>\n </div>\n\n {/* Completeness tips */}\n <PageSection\n title={tr(\"devportal.listingCompleteness\", \"Listing Completeness\")}\n >\n <div className=\"space-y-2\">\n {[\n {\n label: tr(\"devportal.completenessAppIcon\", \"App icon\"),\n ok: !!app.iconUrl,\n },\n {\n label: tr(\"devportal.completenessBannerImage\", \"Banner image\"),\n ok: !!app.bannerUrl,\n },\n {\n label: tr(\n \"devportal.completenessShortDescription\",\n \"Short description\",\n ),\n ok: !!app.shortDescription,\n },\n {\n label: tr(\n \"devportal.completenessFullDescription\",\n \"Full description\",\n ),\n ok: !!app.description,\n },\n {\n label: tr(\n \"devportal.completenessScreenshots\",\n \"Screenshots (3+)\",\n ),\n ok: screenshots.length >= 3,\n },\n {\n label: tr(\"devportal.completenessCategory\", \"Category\"),\n ok: !!app.category,\n },\n {\n label: tr(\"devportal.completenessTags\", \"Tags\"),\n ok:\n Array.isArray(app.tags) && (app.tags as string[]).length > 0,\n },\n {\n label: tr(\n \"devportal.completenessPrivacyPolicy\",\n \"Privacy policy URL\",\n ),\n ok: !!app.privacyPolicyUrl,\n },\n {\n label: tr(\n \"devportal.completenessTermsOfService\",\n \"Terms of service URL\",\n ),\n ok: !!app.termsOfServiceUrl,\n },\n ].map(({ label, ok }) => (\n <div key={label} className=\"flex items-center gap-3 text-sm\">\n {ok ? (\n <CheckCircle\n size={16}\n className=\"text-status-success-text flex-shrink-0\"\n />\n ) : (\n <div className=\"h-4 w-4 rounded-full border-2 border-muted-foreground flex-shrink-0\" />\n )}\n <span\n className={ok ? \"text-text-primary\" : \"text-text-secondary\"}\n >\n {label}\n </span>\n </div>\n ))}\n </div>\n {!isPublished && (\n <button\n onClick={() => navigate?.(`${basePath}/apps/${appId}/edit`)}\n className=\"mt-4 rounded-md border px-3 py-1.5 text-sm hover:bg-bg-sunken\"\n >\n {tr(\n \"devportal.editToImproveListing\",\n \"Edit to improve listing →\",\n )}\n </button>\n )}\n </PageSection>\n </PageLayout>\n </PermissionGuard>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PublishPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/PublishPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AA2EhC,eAAO,MAAM,WAAW,EAAE,EA6tBzB,CAAC"}
1
+ {"version":3,"file":"PublishPage.d.ts","sourceRoot":"","sources":["../../../src/devportal/pages/PublishPage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AA2EhC,eAAO,MAAM,WAAW,EAAE,EAguBzB,CAAC"}