))}
@@ -286,7 +286,7 @@ const shareArea = `${shareLine} L ${sPts[sPts.length - 1][0].toFixed(1)} 314 L 4
-
+
Share image
@@ -306,7 +306,7 @@ const shareArea = `${shareLine} L ${sPts[sPts.length - 1][0].toFixed(1)} 314 L 4
-
+
diff --git a/site/src/components/AppShellMock.astro b/site/src/components/AppShellMock.astro
index 140d39953..d1a427dd6 100644
--- a/site/src/components/AppShellMock.astro
+++ b/site/src/components/AppShellMock.astro
@@ -25,10 +25,10 @@
* exactly as the portaled one covers the real viewport, and the demo cursor
* can travel the whole screen.
*
- * `chrome="lg"` drops the header and sidebar below lg, so a narrow frame
- * shows the screen alone instead of spending half a phone width on nav.
- * `chrome="always"` keeps the whole desktop shell at every width (the hero
- * deliberately bleeds a desktop shot off the right edge on mobile).
+ * The shell is the same desktop screenshot at every viewport: a phone gets it
+ * scaled, never a phone layout. The root is a container query root, and the
+ * mocks inside use `@md:`-style variants, so their responsive classes answer
+ * to this 1280px window rather than to the visitor's screen.
*/
import { nextId } from '../lib/uid';
@@ -39,22 +39,16 @@ interface Props {
active?: string;
/** Extra breadcrumb segment after the section, e.g. "Q1 sales". */
sub?: string;
- chrome?: 'always' | 'lg';
}
-const { crumb, active = crumb, sub, chrome = 'lg' } = Astro.props;
+const { crumb, active = crumb, sub } = Astro.props;
-const shellShow = chrome === 'always' ? 'flex' : 'hidden lg:flex';
-const headerShow = chrome === 'always' ? 'flex' : 'hidden lg:flex';
// The sidebar is taken out of flow so the screen mock, not the nav, decides
// how tall the shell is; the nav clips and the footer stays pinned, exactly
// as it behaves in the app.
-const mainEdge =
- chrome === 'always'
- ? 'ml-64 rounded-tl-2xl border-t border-l border-slate-200/70'
- : 'border-t border-slate-200/70 lg:ml-64 lg:rounded-tl-2xl lg:border-l';
+const mainEdge = 'ml-64 rounded-tl-2xl border-t border-l border-slate-200/70';
// 1280x900 minus the 56px header. Fixed, so every window is exactly a viewport
// whichever screen is inside it, and the sidebar always draws itself whole.
-const bodyMin = chrome === 'always' ? 'min-h-[844px]' : 'lg:min-h-[844px]';
+const bodyMin = 'min-h-[844px]';
const navIcons: Record = {
Inbox: '',
@@ -178,14 +172,14 @@ const online = [
{ initials: 'RS', hot: false },
];
---
-
-
-
-
-
+
+
-
+
Warmbly
@@ -256,7 +250,7 @@ const online = [
-
-
+
Test run
diff --git a/site/src/components/CRMMock.astro b/site/src/components/CRMMock.astro
index cb2eec17e..68045879d 100644
--- a/site/src/components/CRMMock.astro
+++ b/site/src/components/CRMMock.astro
@@ -99,12 +99,12 @@ const ic = {