diff --git a/platform/packages/api/src/admin/react/styles.css b/platform/packages/api/src/admin/react/styles.css index 97a35feaa..1a3bcea7d 100644 --- a/platform/packages/api/src/admin/react/styles.css +++ b/platform/packages/api/src/admin/react/styles.css @@ -78,6 +78,26 @@ body { .void-admin-content { width: 100%; } +/* Columns size to their content and keep words whole, so wide tables scroll on narrow screens. */ +.void-admin-content th, +.void-admin-content td { + max-width: none; + overflow-wrap: normal; + word-break: normal; +} +/* Fields keep their width but fit narrow screens. */ +.void-admin-content .astryx-field { + max-width: 100%; +} +/* On wide screens, page tables line up with the content; cards keep their own edges. */ +@media (min-width: 701px) { + .void-admin-content { + --container-padding-inline-start: 0px; + --container-padding-inline-end: 0px; + --container-padding-block-start: 0px; + --container-padding-block-end: 0px; + } +} /* Stack gaps own vertical rhythm, including headings and empty states. */ .void-admin-stack, @@ -154,6 +174,20 @@ body { align-items: flex-start; gap: var(--spacing-2); } +/* On phones, the account button stacks above the menu button and can shrink. */ +.void-admin-shell .astryx-top-nav[data-mode='mobile-bar'] > :last-child { + flex-direction: column; + align-items: flex-end; + min-width: 0; +} +/* Room around the stacked brand, matching the phone top bar. */ +.void-admin-shell .astryx-top-nav:not([data-mode]) { + padding-block: var(--spacing-4); +} +.astryx-mobile-nav :has(> .void-admin-brand) { + height: auto; + padding-block: var(--spacing-4); +} .void-admin-logo { display: block; @@ -267,13 +301,10 @@ body { } .void-admin-team-table-scroll { - --container-padding-inline-start: 0px; - --container-padding-inline-end: 0px; --container-padding-block-start: 0px; --container-padding-block-end: 0px; min-width: 0; max-width: 100%; - overflow-x: auto; } .void-admin-team-email { display: block; @@ -738,6 +769,13 @@ body { .void-admin-invitations-table td { white-space: nowrap; } +.void-admin-detail-table th { + /* Side labels take only the width they need. */ + width: 1%; +} +.void-admin-detail-table tr:last-child th { + border-bottom-width: 0; +} .void-admin-pagination { display: flex; align-items: center; diff --git a/platform/packages/api/src/admin/react/views/BuildDetailPage.tsx b/platform/packages/api/src/admin/react/views/BuildDetailPage.tsx index 8f20957ca..93cf03311 100644 --- a/platform/packages/api/src/admin/react/views/BuildDetailPage.tsx +++ b/platform/packages/api/src/admin/react/views/BuildDetailPage.tsx @@ -23,7 +23,7 @@ export function BuildDetailPage({ path, platformName, username }: AdminPageProps

Build {build.id}

- +
Status diff --git a/platform/packages/api/src/admin/react/views/DeploymentDetailPage.tsx b/platform/packages/api/src/admin/react/views/DeploymentDetailPage.tsx index b29e777b0..16f00b755 100644 --- a/platform/packages/api/src/admin/react/views/DeploymentDetailPage.tsx +++ b/platform/packages/api/src/admin/react/views/DeploymentDetailPage.tsx @@ -63,7 +63,7 @@ export function DeploymentDetailPage({ path, platformName, username }: AdminPage )} -
+
ID diff --git a/platform/packages/api/src/admin/react/views/ProjectDetailPage.tsx b/platform/packages/api/src/admin/react/views/ProjectDetailPage.tsx index 63067d57c..a1578cd16 100644 --- a/platform/packages/api/src/admin/react/views/ProjectDetailPage.tsx +++ b/platform/packages/api/src/admin/react/views/ProjectDetailPage.tsx @@ -18,6 +18,7 @@ import { formatDateTime } from './format.ts'; import { Layout } from './Layout.tsx'; import { ProjectOwnerTransferSection } from './ProjectOwnerTransferSection.tsx'; import { ProjectTeamSection } from './ProjectTeamSection.tsx'; +import { ProjectUrlLink } from './ProjectUrlLink.tsx'; import { ProjectZeroTrustSection } from './ProjectZeroTrustSection.tsx'; import { SectionStack } from './SectionStack.tsx'; export function ProjectDetailPage({ path, platformName, username }: AdminPageProps) { @@ -47,7 +48,7 @@ export function ProjectDetailPage({ path, platformName, username }: AdminPagePro

{project.slug}

-
+
ID @@ -60,9 +61,7 @@ export function ProjectDetailPage({ path, platformName, username }: AdminPagePro URL - - {deployUrl} - + @@ -71,14 +70,11 @@ export function ProjectDetailPage({ path, platformName, username }: AdminPagePro {domains.length > 0 ? ( domains.map((d) => ( - - {d.hostname} - {' '} - ({d.status}){' '} + ({d.status}){' '} )) ) : ( - <>None + <>— )} @@ -101,7 +97,9 @@ export function ProjectDetailPage({ path, platformName, username }: AdminPagePro Email - usage, limits, destinations + + usage, limits, destinations + diff --git a/platform/packages/api/src/admin/react/views/UserDetailPage.tsx b/platform/packages/api/src/admin/react/views/UserDetailPage.tsx index ce694d1d0..1bf24a89d 100644 --- a/platform/packages/api/src/admin/react/views/UserDetailPage.tsx +++ b/platform/packages/api/src/admin/react/views/UserDetailPage.tsx @@ -38,7 +38,7 @@ export function UserDetailPage({ path, platformName, username }: AdminPageProps)

{user.login}

-
+
ID