Skip to content

Commit 9058c00

Browse files
[fix](ui): tablet uses the compact mobile chrome (no app-bar wrap) + general hero invite
Owner feedback (Fase 2b continued): - Navigation chrome breakpoint moves 640 -> 1024: tablets now share the phone's elegant single-row top bar (brand left + Guide) with the bottom tab bar, action bar and settings sheet — the app bar can never wrap again. Content- density rules stay on the 640 phone tier. Docs updated (design-spec §6.1, mobile-experience-plan §5); historical -phone class names now mean "compact tier". - Hero radar chip: "21 architectures · 1 answer" -> a general, inviting "Decide with confidence" / "Putuskan dengan yakin". Verified: iPad-768 overflow 0 + tabbar active, desktop-1280 nav intact; 119 unit + 14 e2e, lint, all 6 guards green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent 08baf77 commit 9058c00

4 files changed

Lines changed: 25 additions & 15 deletions

File tree

docs/03-blueprint/design-specification.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ utilities via `tailwind.config.js`); view code references these instead of hardc
279279
| **Type** | `--aa-fs-2xs..2xl` = 11/12/12.5/13.5/15 px + fluid lg/xl/2xl via `clamp()`; `--aa-lh` 1.6 |
280280
| **Elevation** | `--aa-shadow-sm/md/lg` over a theme-aware `--aa-shadow-color` |
281281
| **Touch & focus** | `--aa-touch` 44 px (coarse pointers); `--aa-focus-ring` 2 px info, global `:focus-visible` |
282-
| **Breakpoints** | canonical (cannot be `var()` in `@media`): **phone ≤ 640 px · tablet 641–1024 px · laptop ≥ 1025 px** |
282+
| **Breakpoints** | canonical (cannot be `var()` in `@media`): **phone ≤ 640 px · tablet 641–1024 px · laptop ≥ 1025 px**. **Navigation chrome switches at ≤ 1024 px** (Fase 2b): phones AND tablets share the compact mobile chrome (bottom tab bar, action bar, settings sheet, compact top bar — brand left + Guide) so the app bar never wraps; content-density rules (`.f-div`, overlay padding, grid columns) keep the 640 px phone tier. Historical `-phone` class names mean "compact tier". |
283283

284284
Base classes: `.aa-page` / `.aa-frame` / `.aa-surface` / `.aa-panel` / `.aa-card` / `.aa-wrap` /
285285
`.aa-touch`. New classes are namespaced `aa-`; no `!important`.

docs/03-blueprint/mobile-experience-plan.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,8 +60,11 @@ Desktop (≥641px) is unchanged (top nav + header controls as today).
6060

6161
## 5. Breakpoint & tokens
6262

63-
- Phone tier: **≤640px** (canonical, design-spec §6.1). Bottom nav + action bar + settings sheet are
64-
phone-only; ≥641px keeps the current top-nav desktop layout.
63+
- ~~Phone tier: **≤640px** (canonical, design-spec §6.1). Bottom nav + action bar + settings sheet are
64+
phone-only; ≥641px keeps the current top-nav desktop layout.~~ **Updated (Fase 2b, 2026-07-16):**
65+
the navigation chrome now switches at **≤1024px** — tablets share the phone's bottom nav /
66+
action bar / settings sheet / compact top bar so the app bar never wraps; only content-density
67+
rules stay on the 640px phone tier (design-spec §6.1).
6568
- Safe area: `padding-bottom: env(safe-area-inset-bottom)` on the fixed bars; the viewport already
6669
uses `viewport-fit=cover`? (verify/set in index.html).
6770

src/i18n/dict.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -321,10 +321,10 @@ export const DICT = {
321321
'lp.meta.iso': { en: 'ISO/IEC 2023', id: 'ISO/IEC 2023' },
322322
'lp.meta.client': { en: 'client-side', id: 'client-side' },
323323
'lp.radar.aria': { en: 'Trade-off radar across five architecture dimensions', id: 'Radar trade-off lima dimensi arsitektur' },
324-
/* Hero radar chips — short, elegant one-liners that tease the product's two hooks:
325-
instant explained analysis (Advisor) and the breadth of the library (Insights). */
324+
/* Hero radar chips — short, GENERAL one-liners that invite trying the product (owner
325+
feedback: no detailed numbers — just the promise). */
326326
'lp.chip.try': { en: 'Instant · free · explained', id: 'Instan · gratis · dijelaskan' },
327-
'lp.chip.explore': { en: '21 architectures · 1 answer', id: '21 arsitektur · 1 jawaban' },
327+
'lp.chip.explore': { en: 'Decide with confidence', id: 'Putuskan dengan yakin' },
328328
'lp.patterns.kicker': { en: 'Pattern Library', id: 'Pustaka Pola' },
329329
'lp.patterns.h2': { en: 'Know the pattern before you pick it.', id: 'Kenali polanya sebelum memilihnya.' },
330330
'lp.patterns.sub': {

src/index.css

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -778,11 +778,18 @@ svg {
778778
}
779779

780780
/* ---- Phone tier (≤640px — canonical breakpoint, design-spec §6.1) ---- */
781-
@media (max-width: 640px) {
782-
/* Keyboard-centric chrome adds noise on touch phones. */
781+
/* ---- Compact-nav tier (≤1024px — phones AND tablets, Fase 2b) ----------------
782+
Owner feedback: the app bar must NEVER wrap. Below the laptop tier the mobile
783+
chrome takes over entirely (bottom tab bar + compact top bar), so tablets get
784+
the same elegant single-row experience as phones. The historical class names
785+
keep the -phone suffix; they now mean "compact tier". */
786+
@media (max-width: 1024px) {
787+
/* Keyboard-centric chrome adds noise on touch devices. */
783788
.aa-hide-phone {
784789
display: none;
785790
}
791+
}
792+
@media (max-width: 640px) {
786793
/* Tighter vertical rhythm on small screens. */
787794
.f-div {
788795
margin: var(--aa-space-4) 0;
@@ -1429,7 +1436,7 @@ svg {
14291436
.aa-tabbar {
14301437
display: none;
14311438
}
1432-
@media (max-width: 640px) {
1439+
@media (max-width: 1024px) {
14331440
.aa-tabbar {
14341441
position: fixed;
14351442
inset-inline: 0;
@@ -1562,7 +1569,7 @@ svg {
15621569
.aa-mobile-actionbar {
15631570
display: none;
15641571
}
1565-
@media (max-width: 640px) {
1572+
@media (max-width: 1024px) {
15661573
.aa-mobile-actionbar {
15671574
position: fixed;
15681575
inset-inline: 0;
@@ -1607,8 +1614,8 @@ svg {
16071614
margin-bottom: var(--aa-space-2);
16081615
border-radius: var(--border-radius-xl);
16091616
}
1610-
@media (max-width: 640px) {
1611-
/* Phones: MobileChrome owns navigation; the bar is a compact row (brand left + Guide right). */
1617+
@media (max-width: 1024px) {
1618+
/* Compact tier: MobileChrome owns navigation; the bar is a compact row (brand left + Guide right). */
16121619
.aa-appbar {
16131620
border-radius: var(--border-radius-lg);
16141621
}
@@ -1618,7 +1625,7 @@ svg {
16181625
.aa-brand-phone {
16191626
display: none;
16201627
}
1621-
@media (max-width: 640px) {
1628+
@media (max-width: 1024px) {
16221629
.aa-brand-phone {
16231630
display: inline-flex;
16241631
align-items: center;
@@ -1686,7 +1693,7 @@ svg {
16861693
background: var(--color-background-info);
16871694
}
16881695
}
1689-
@media (max-width: 640px) {
1696+
@media (max-width: 1024px) {
16901697
.aa-topnav {
16911698
display: none;
16921699
}
@@ -1698,7 +1705,7 @@ svg {
16981705
align-items: center;
16991706
gap: 10px;
17001707
}
1701-
@media (max-width: 640px) {
1708+
@media (max-width: 1024px) {
17021709
.aa-desktop-controls {
17031710
display: none;
17041711
}

0 commit comments

Comments
 (0)