stylegallery 0.1.0
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.
- package/AGENTS.md +156 -0
- package/CATALOG.md +69 -0
- package/DOMAINS.md +65 -0
- package/GOVERNANCE.md +222 -0
- package/GUIDE.md +59 -0
- package/README.md +313 -0
- package/consumer-reference/adapters/style-dictionary.config.mjs +36 -0
- package/consumer-reference/agent-native/README.md +157 -0
- package/consumer-reference/agent-native/registry.json +640 -0
- package/consumer-reference/agent-native/schema/agent-native.schema.json +848 -0
- package/consumer-reference/agent-native/schema/epistemic.schema.json +14 -0
- package/consumer-reference/agent-native/schema/execution.schema.json +12 -0
- package/consumer-reference/agent-native/schema/identity.schema.json +10 -0
- package/consumer-reference/agent-native/schema/learning.schema.json +12 -0
- package/consumer-reference/agent-native/schema/manifest.schema.json +6 -0
- package/consumer-reference/agent-native/schema/operation.schema.json +12 -0
- package/consumer-reference/agent-native/schema/protocol-binding.schema.json +9 -0
- package/consumer-reference/agent-native/schema/retrieval.schema.json +10 -0
- package/consumer-reference/baselines/calibration.json +260 -0
- package/consumer-reference/baselines/manifest.json +21 -0
- package/consumer-reference/contract.md +83 -0
- package/consumer-reference/fixtures/consumer-conformance/e2e-fixture.mjs +282 -0
- package/consumer-reference/fixtures/consumer-conformance/manifest.json +102 -0
- package/consumer-reference/fixtures/consumer-conformance/runtime-proof.mjs +32 -0
- package/consumer-reference/fixtures/consumer-conformance/valid-migration-result.json +18 -0
- package/consumer-reference/fixtures/consumer-conformance/valid-migration.json +142 -0
- package/consumer-reference/fixtures/invalid-stable-ended-support.json +19 -0
- package/consumer-reference/fixtures/promotion/invalid-blocking-evidence.json +26 -0
- package/consumer-reference/fixtures/promotion/invalid-count-only.json +29 -0
- package/consumer-reference/fixtures/promotion/invalid-missing-owner-migration.json +25 -0
- package/consumer-reference/fixtures/promotion/invalid-normative-bypass-no-regression.json +25 -0
- package/consumer-reference/fixtures/promotion/invalid-related-counted-independent.json +45 -0
- package/consumer-reference/fixtures/promotion/invalid-stable-ended-support.json +26 -0
- package/consumer-reference/fixtures/promotion/manifest.json +15 -0
- package/consumer-reference/fixtures/promotion/valid-deferred-example.json +67 -0
- package/consumer-reference/fixtures/promotion/valid-normative-bypass.json +67 -0
- package/consumer-reference/fixtures/token-portability/invalid-cycle.json +7 -0
- package/consumer-reference/fixtures/token-portability/invalid-dangling-alias.json +6 -0
- package/consumer-reference/fixtures/token-portability/invalid-extends.json +4 -0
- package/consumer-reference/fixtures/token-portability/invalid-json-pointer.json +7 -0
- package/consumer-reference/fixtures/token-portability/invalid-resolver.json +9 -0
- package/consumer-reference/fixtures/token-portability/invalid-type-mismatch.json +10 -0
- package/consumer-reference/fixtures/token-portability/invalid-unknown-reserved.json +6 -0
- package/consumer-reference/fixtures/token-portability/invalid-untested-type.json +6 -0
- package/consumer-reference/fixtures/token-portability/valid-border.json +14 -0
- package/consumer-reference/fixtures/token-portability/valid-reference.json +32 -0
- package/consumer-reference/fixtures/token-portability/valid-whole-alias.json +7 -0
- package/consumer-reference/fixtures/valid-deprecated.json +21 -0
- package/consumer-reference/fixtures/valid-experimental.json +19 -0
- package/consumer-reference/generated/manifest.json +40 -0
- package/consumer-reference/generated/tokens.css +12 -0
- package/consumer-reference/index.md +32 -0
- package/consumer-reference/policies/shared-experimental.json +37 -0
- package/consumer-reference/schema/ax-evidence.schema.json +30 -0
- package/consumer-reference/schema/baseline-manifest.schema.json +55 -0
- package/consumer-reference/schema/calibration-record.schema.json +190 -0
- package/consumer-reference/schema/capture-session.schema.json +161 -0
- package/consumer-reference/schema/component-state.schema.json +150 -0
- package/consumer-reference/schema/consumer-conformance-record.schema.json +365 -0
- package/consumer-reference/schema/dom-evidence.schema.json +38 -0
- package/consumer-reference/schema/evidence-record.schema.json +81 -0
- package/consumer-reference/schema/fixture-manifest.schema.json +32 -0
- package/consumer-reference/schema/item.schema.json +188 -0
- package/consumer-reference/schema/page-evidence-manifest.schema.json +216 -0
- package/consumer-reference/schema/page-evidence-session.schema.json +119 -0
- package/consumer-reference/schema/portable-tokens.schema.json +104 -0
- package/consumer-reference/schema/promotion-rfc.schema.json +219 -0
- package/consumer-reference/schema/runtime-evidence-manifest.schema.json +33 -0
- package/consumer-reference/schema/visual-evidence.schema.json +31 -0
- package/design-engineering/consumer-migration-readiness.md +124 -0
- package/design-engineering/index.md +28 -0
- package/design-engineering/interface-craft.md +107 -0
- package/design-engineering/reference-profiles/external-adaptation/index.md +12 -0
- package/design-engineering/reference-profiles/governed-local/editorial/components/button.component.json +125 -0
- package/design-engineering/reference-profiles/governed-local/editorial/evidence/button.evidence.json +3504 -0
- package/design-engineering/reference-profiles/governed-local/editorial/fixtures/button.fixture.json +65 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/evidence-coverage.md +23 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/keyboard-matrix.md +19 -0
- package/design-engineering/reference-profiles/governed-local/editorial/generated/state-matrix.md +21 -0
- package/design-engineering/reference-profiles/governed-local/editorial/local-foundations.json +12 -0
- package/design-engineering/reference-profiles/governed-local/editorial/profile.json +43 -0
- package/design-engineering/reference-profiles/governed-local/editorial/states/button.states.json +195 -0
- package/design-engineering/reference-profiles/governed-local/editorial/tokens.dtcg.json +17 -0
- package/design-engineering/reference-profiles/governed-local/index.md +26 -0
- package/design-engineering/reference-profiles/governed-local/terminal/components/button.component.json +125 -0
- package/design-engineering/reference-profiles/governed-local/terminal/evidence/button.evidence.json +3504 -0
- package/design-engineering/reference-profiles/governed-local/terminal/fixtures/button.fixture.json +65 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/evidence-coverage.md +23 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/keyboard-matrix.md +19 -0
- package/design-engineering/reference-profiles/governed-local/terminal/generated/state-matrix.md +21 -0
- package/design-engineering/reference-profiles/governed-local/terminal/local-foundations.json +12 -0
- package/design-engineering/reference-profiles/governed-local/terminal/profile.json +43 -0
- package/design-engineering/reference-profiles/governed-local/terminal/states/button.states.json +195 -0
- package/design-engineering/reference-profiles/governed-local/terminal/tokens.dtcg.json +17 -0
- package/design-engineering/reference-profiles/index.md +19 -0
- package/game-ui/classification.md +82 -0
- package/game-ui/index.md +35 -0
- package/game-ui/reference-record.md +62 -0
- package/game-ui/screen-hierarchy.md +107 -0
- package/game-ui/unity/architecture.md +166 -0
- package/game-ui/unity/cli-loop.md +84 -0
- package/game-ui/unity/data/unity-technologies-public-repositories.json +26654 -0
- package/game-ui/unity/org-wiki.md +146 -0
- package/game-ui/unity/repository-map.md +102 -0
- package/game-ui/unity/ui-systems.md +85 -0
- package/guides/decision-tree.md +149 -0
- package/guides/documentation-mode-taxonomy.md +157 -0
- package/guides/layout-brief.md +220 -0
- package/guides/vocabulary.md +148 -0
- package/guides/webpage-generation-workflow.md +185 -0
- package/index.md +36 -0
- package/layout/index.md +26 -0
- package/motion/index.md +24 -0
- package/motion/practice-reference.md +145 -0
- package/motion/review-workflow.md +86 -0
- package/motion/vocabulary.md +82 -0
- package/package.json +78 -0
- package/patterns/centering/center.md +87 -0
- package/patterns/centering/index.md +6 -0
- package/patterns/centering/super-center.md +89 -0
- package/patterns/containment/box.md +87 -0
- package/patterns/containment/clamped-card.md +86 -0
- package/patterns/containment/content-limiter.md +87 -0
- package/patterns/containment/fluid-styles.md +86 -0
- package/patterns/containment/index.md +8 -0
- package/patterns/grid-repetition/card-grid.md +88 -0
- package/patterns/grid-repetition/columns.md +87 -0
- package/patterns/grid-repetition/dense-grid.md +88 -0
- package/patterns/grid-repetition/grid-wrapper.md +89 -0
- package/patterns/grid-repetition/index.md +12 -0
- package/patterns/grid-repetition/masonry-approx.md +87 -0
- package/patterns/grid-repetition/page-grid.md +90 -0
- package/patterns/grid-repetition/ram-grid.md +88 -0
- package/patterns/grid-repetition/twelve-span-grid.md +92 -0
- package/patterns/in-line-grouping/badge-list.md +94 -0
- package/patterns/in-line-grouping/breadcrumb.md +89 -0
- package/patterns/in-line-grouping/cluster.md +89 -0
- package/patterns/in-line-grouping/deconstructed-pancake.md +92 -0
- package/patterns/in-line-grouping/index.md +13 -0
- package/patterns/in-line-grouping/pagination.md +89 -0
- package/patterns/in-line-grouping/reel.md +90 -0
- package/patterns/in-line-grouping/split-nav.md +97 -0
- package/patterns/in-line-grouping/tab-strip.md +88 -0
- package/patterns/in-line-grouping/wrap-row.md +89 -0
- package/patterns/index.md +13 -0
- package/patterns/media-fit/frame.md +95 -0
- package/patterns/media-fit/icon-frame.md +87 -0
- package/patterns/media-fit/index.md +6 -0
- package/patterns/overlay-exception/imposter.md +95 -0
- package/patterns/overlay-exception/index.md +6 -0
- package/patterns/overlay-exception/overlay-stack.md +89 -0
- package/patterns/split-sidebar/index.md +12 -0
- package/patterns/split-sidebar/list-detail.md +95 -0
- package/patterns/split-sidebar/main-with-rail.md +95 -0
- package/patterns/split-sidebar/media-object.md +102 -0
- package/patterns/split-sidebar/sidebar.md +101 -0
- package/patterns/split-sidebar/split-screen.md +92 -0
- package/patterns/split-sidebar/sticky-aside.md +97 -0
- package/patterns/split-sidebar/supporting-pane.md +95 -0
- package/patterns/split-sidebar/switcher.md +93 -0
- package/patterns/stacking/feed.md +88 -0
- package/patterns/stacking/index.md +8 -0
- package/patterns/stacking/line-up.md +95 -0
- package/patterns/stacking/stack.md +87 -0
- package/patterns/stacking/step-nav.md +88 -0
- package/patterns/viewport-shell/cover.md +90 -0
- package/patterns/viewport-shell/fixed-sidenav-shell.md +97 -0
- package/patterns/viewport-shell/holy-grail.md +112 -0
- package/patterns/viewport-shell/index.md +11 -0
- package/patterns/viewport-shell/panel-layout.md +95 -0
- package/patterns/viewport-shell/scroll-body-shell.md +93 -0
- package/patterns/viewport-shell/sticky-footer.md +92 -0
- package/patterns/viewport-shell/sticky-header.md +86 -0
- package/platform-guides/apple-interaction.md +89 -0
- package/platform-guides/index.md +26 -0
- package/quality/claim-records/index.md +3 -0
- package/quality/claim-records/samples.md +92 -0
- package/quality/claim-records/stylegallery-multidomain-scope.md +42 -0
- package/quality/claims.md +77 -0
- package/quality/evidence/accessibility.md +58 -0
- package/quality/evidence/consumer-migration.md +42 -0
- package/quality/evidence/design-rationale.md +34 -0
- package/quality/evidence/executable-evidence.md +79 -0
- package/quality/evidence/families.md +56 -0
- package/quality/evidence/hci-evaluation.md +36 -0
- package/quality/evidence/index.md +16 -0
- package/quality/evidence/pattern-contract-audit.md +96 -0
- package/quality/evidence/search-metadata-polyhierarchy.md +86 -0
- package/quality/evidence/sources.md +43 -0
- package/quality/evidence/tokens.md +33 -0
- package/quality/evidence/visual-qa.md +41 -0
- package/quality/gates/accessibility-evidence.md +60 -0
- package/quality/gates/consumer-migration-evidence.md +53 -0
- package/quality/gates/design-claim.md +56 -0
- package/quality/gates/harmony-evaluation.md +78 -0
- package/quality/gates/index.md +13 -0
- package/quality/gates/layout.md +52 -0
- package/quality/gates/rationale.md +53 -0
- package/quality/gates/visual-evidence.md +47 -0
- package/quality/index.md +55 -0
- package/quality/principles.md +58 -0
- package/recipes/article-page.md +52 -0
- package/recipes/command-surface.md +55 -0
- package/recipes/dashboard.md +56 -0
- package/recipes/form-flow.md +55 -0
- package/recipes/homepage.md +89 -0
- package/recipes/index.md +13 -0
- package/recipes/list-detail.md +55 -0
- package/recipes/primitive-to-recipe-matrix.md +83 -0
- package/recipes/saas-settings.md +52 -0
- package/scripts/agent-native/a2a-projection.mjs +248 -0
- package/scripts/agent-native/agui-projection.mjs +178 -0
- package/scripts/agent-native/canonical-json.mjs +109 -0
- package/scripts/agent-native/cli-adapter.mjs +68 -0
- package/scripts/agent-native/events.mjs +113 -0
- package/scripts/agent-native/execution.mjs +227 -0
- package/scripts/agent-native/fixture.mjs +159 -0
- package/scripts/agent-native/identity.mjs +184 -0
- package/scripts/agent-native/immutable-store.mjs +102 -0
- package/scripts/agent-native/knowledge.mjs +168 -0
- package/scripts/agent-native/learning-records.mjs +244 -0
- package/scripts/agent-native/learning.mjs +247 -0
- package/scripts/agent-native/mcp-adapter.mjs +173 -0
- package/scripts/agent-native/queries.mjs +173 -0
- package/scripts/agent-native/registry.mjs +154 -0
- package/scripts/agent-native/retrieval.mjs +171 -0
- package/scripts/agent-native/self-description.mjs +160 -0
- package/scripts/artifact-metadata.mjs +20 -0
- package/scripts/audit-evidence-freshness.mjs +308 -0
- package/scripts/baseline-contract.mjs +189 -0
- package/scripts/baseline-schema-parity.mjs +40 -0
- package/scripts/build-reference-artifacts.mjs +127 -0
- package/scripts/calibration-raw-contract.mjs +172 -0
- package/scripts/capture-session-contract.mjs +187 -0
- package/scripts/component-state-artifact-fixture.mjs +44 -0
- package/scripts/component-state-contract.mjs +99 -0
- package/scripts/component-state-semantics.mjs +128 -0
- package/scripts/component-state-workflow-contract.mjs +67 -0
- package/scripts/component-state-workflow-negative-cases.mjs +64 -0
- package/scripts/consumer-conformance-contract.mjs +198 -0
- package/scripts/consumer-evidence-governance-contract.mjs +210 -0
- package/scripts/consumer-reference-case-runner.mjs +93 -0
- package/scripts/consumer-reference-schema.mjs +155 -0
- package/scripts/create-component-state-session.mjs +100 -0
- package/scripts/create-page-evidence-session.mjs +139 -0
- package/scripts/domain-document-boundaries.mjs +40 -0
- package/scripts/domain-validation-checks.mjs +141 -0
- package/scripts/evidence-artifact-contract.mjs +191 -0
- package/scripts/finalize-component-state-evidence.mjs +165 -0
- package/scripts/finalize-page-evidence.mjs +197 -0
- package/scripts/generate-consumer-reference-evidence.mjs +154 -0
- package/scripts/generate-patterns.mjs +218 -0
- package/scripts/governance-matrix-contract.mjs +73 -0
- package/scripts/governance-matrix-negative-cases.mjs +114 -0
- package/scripts/governance-policy-contract.mjs +49 -0
- package/scripts/governance-test-fixture.mjs +321 -0
- package/scripts/governance-workflow-negative-cases.mjs +241 -0
- package/scripts/governed-profile-registry.mjs +125 -0
- package/scripts/json-schema-formats.mjs +31 -0
- package/scripts/markdown-structure.mjs +45 -0
- package/scripts/page-artifact-metadata.mjs +124 -0
- package/scripts/page-evidence-contract.mjs +297 -0
- package/scripts/page-evidence-fixture.mjs +271 -0
- package/scripts/pattern-data.mjs +325 -0
- package/scripts/profile-record-contract.mjs +140 -0
- package/scripts/promotion-attestation-contract.mjs +91 -0
- package/scripts/promotion-boundary-test-contract.mjs +92 -0
- package/scripts/promotion-fixture-inventory.mjs +109 -0
- package/scripts/promotion-governance-contract.mjs +28 -0
- package/scripts/reference-artifact-path-contract.mjs +28 -0
- package/scripts/reference-profile-contract.mjs +114 -0
- package/scripts/reference-token-contract.mjs +156 -0
- package/scripts/run-consumer-page-evidence-ci.mjs +170 -0
- package/scripts/sg-mcp.mjs +16 -0
- package/scripts/sg.mjs +27 -0
- package/scripts/strict-json.mjs +72 -0
- package/scripts/summarize-sentinel-calibration.mjs +98 -0
- package/scripts/test-agent-adapter-conformance.mjs +250 -0
- package/scripts/test-agent-conformance-receipt.mjs +106 -0
- package/scripts/test-agent-events.mjs +81 -0
- package/scripts/test-agent-execution-effects.mjs +114 -0
- package/scripts/test-agent-execution-fixtures.mjs +140 -0
- package/scripts/test-agent-execution-kernel.mjs +39 -0
- package/scripts/test-agent-execution-learning.mjs +130 -0
- package/scripts/test-agent-execution-lifecycle.mjs +143 -0
- package/scripts/test-agent-execution-safety.mjs +158 -0
- package/scripts/test-agent-execution-views.mjs +117 -0
- package/scripts/test-agent-identity-integrity-cases.mjs +160 -0
- package/scripts/test-agent-knowledge-kernel.mjs +183 -0
- package/scripts/test-agent-learning.mjs +246 -0
- package/scripts/test-agent-mcp.mjs +246 -0
- package/scripts/test-agent-native-schemas.mjs +215 -0
- package/scripts/test-agent-projections.mjs +249 -0
- package/scripts/test-agent-registry-mcp-integrity.mjs +215 -0
- package/scripts/test-agent-registry-mutations.mjs +110 -0
- package/scripts/test-audit-evidence-freshness.mjs +177 -0
- package/scripts/test-component-state-sentinel.mjs +35 -0
- package/scripts/test-component-state-source-contract.mjs +83 -0
- package/scripts/test-consumer-conformance-sentinel.mjs +165 -0
- package/scripts/test-consumer-reference-sentinel.mjs +31 -0
- package/scripts/test-generate-consumer-reference-evidence.mjs +124 -0
- package/scripts/test-json-cli-output.mjs +151 -0
- package/scripts/test-json-schema-formats.mjs +40 -0
- package/scripts/test-reference-adapters.mjs +199 -0
- package/scripts/test-renderer-purity.mjs +34 -0
- package/scripts/test-sg-cli.mjs +129 -0
- package/scripts/test-summarize-sentinel-calibration.mjs +226 -0
- package/scripts/test-validate-baseline-manifest.mjs +234 -0
- package/scripts/test-validate-component-state-artifacts.mjs +243 -0
- package/scripts/test-validate-component-state.mjs +106 -0
- package/scripts/test-validate-consumer-conformance.mjs +427 -0
- package/scripts/test-validate-consumer-reference-cli.mjs +69 -0
- package/scripts/test-validate-consumer-reference.mjs +263 -0
- package/scripts/test-validate-domains.mjs +357 -0
- package/scripts/test-validate-governance.mjs +292 -0
- package/scripts/test-validate-ia.mjs +262 -0
- package/scripts/test-validate-okf.mjs +73 -0
- package/scripts/test-validate-page-evidence.mjs +302 -0
- package/scripts/test-validate-patterns.mjs +157 -0
- package/scripts/test-validate-promotion-rfc.mjs +250 -0
- package/scripts/test-validate-reference-profiles.mjs +170 -0
- package/scripts/test-validate-unity-org-wiki.mjs +57 -0
- package/scripts/test-validate-unity-source-contracts.mjs +67 -0
- package/scripts/test-validate-vocabulary.mjs +174 -0
- package/scripts/test-validate-webpage-workflow.mjs +293 -0
- package/scripts/validate-baseline-manifest.mjs +44 -0
- package/scripts/validate-catalog.mjs +65 -0
- package/scripts/validate-component-state.mjs +141 -0
- package/scripts/validate-consumer-conformance.mjs +477 -0
- package/scripts/validate-consumer-reference.mjs +288 -0
- package/scripts/validate-domains.mjs +237 -0
- package/scripts/validate-governance.mjs +248 -0
- package/scripts/validate-ia.mjs +136 -0
- package/scripts/validate-links.mjs +66 -0
- package/scripts/validate-okf.mjs +104 -0
- package/scripts/validate-page-evidence.mjs +191 -0
- package/scripts/validate-patterns.mjs +246 -0
- package/scripts/validate-promotion-rfc.mjs +224 -0
- package/scripts/validate-reference-artifacts.mjs +125 -0
- package/scripts/validate-renderer-purity.mjs +56 -0
- package/scripts/validate-unity-org-wiki.mjs +146 -0
- package/scripts/validate-unity-source-contracts.mjs +107 -0
- package/scripts/validate-vocabulary.mjs +115 -0
- package/scripts/validate-webpage-workflow.mjs +254 -0
- package/scripts/visual-expectation-contract.mjs +20 -0
- package/scripts/workflow-action-contract.mjs +163 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: fixed-sidenav-shell
|
|
4
|
+
title: fixed-sidenav-shell
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Keep side navigation stable while main content scrolls.
|
|
7
|
+
primary_spatial_problem: Keep side navigation stable while main content scrolls.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: both
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: fluid
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: Pattern owns the named scroll container.
|
|
14
|
+
source_lineage: https://carbondesignsystem.com/elements/2x-grid/overview/
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# fixed-sidenav-shell
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to keep side navigation stable while main content scrolls.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<section class="fixed_sidenav_shell" aria-label="Settings">
|
|
31
|
+
<nav class="fixed_sidenav_shell_list"><a href="#">Profile</a><a href="#">Billing</a></nav>
|
|
32
|
+
<main class="fixed_sidenav_shell_main">Editable settings form scrolls independently</main>
|
|
33
|
+
</section>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## CSS
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
.fixed_sidenav_shell {
|
|
40
|
+
display: grid;
|
|
41
|
+
grid-template-columns: 16rem minmax(0, 1fr);
|
|
42
|
+
grid-template-rows: minmax(0, 1fr);
|
|
43
|
+
max-block-size: 100dvh;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.fixed_sidenav_shell_list {
|
|
47
|
+
min-block-size: 0;
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.fixed_sidenav_shell_main {
|
|
51
|
+
min-block-size: 0;
|
|
52
|
+
overflow: auto;
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
## Core Properties
|
|
57
|
+
|
|
58
|
+
- `display`, `grid-template-columns`, `grid-template-rows`, `max-block-size`, `min-block-size`, `overflow` define the spatial behavior for this pattern.
|
|
59
|
+
|
|
60
|
+
## Properties That Break The Layout If Removed
|
|
61
|
+
|
|
62
|
+
- Removing `display`, `grid-template-columns`, `grid-template-rows`, `max-block-size`, `min-block-size`, `overflow` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
63
|
+
|
|
64
|
+
## Constraints And Change Points
|
|
65
|
+
|
|
66
|
+
- fluid responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
67
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
68
|
+
|
|
69
|
+
## Scroll Ownership
|
|
70
|
+
|
|
71
|
+
Pattern owns the named scroll container.
|
|
72
|
+
|
|
73
|
+
## Accessibility And Source Order Notes
|
|
74
|
+
|
|
75
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
76
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
77
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
78
|
+
- Scroll expectation: Pattern owns the named scroll container.
|
|
79
|
+
- Cognitive risk: Medium: scroll ownership can hide context, controls, or return points if it is not named in the consuming layout.
|
|
80
|
+
|
|
81
|
+
## Browser And Fallback Notes
|
|
82
|
+
|
|
83
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
84
|
+
|
|
85
|
+
## Composition Notes
|
|
86
|
+
|
|
87
|
+
Use `fixed_sidenav_shell` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
88
|
+
|
|
89
|
+
## Anti-patterns
|
|
90
|
+
|
|
91
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
92
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
93
|
+
|
|
94
|
+
## IA Navigation
|
|
95
|
+
|
|
96
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
97
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: holy-grail
|
|
4
|
+
title: holy-grail
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Place header, footer, sidebars, and main content in a resilient shell.
|
|
7
|
+
primary_spatial_problem: Place header, footer, sidebars, and main content in a resilient shell.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: both
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: breakpointed
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: No internal scroll container.
|
|
14
|
+
source_lineage: https://web.dev/articles/one-line-layouts
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# holy-grail
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to place header, footer, sidebars, and main content in a resilient shell.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<section class="holy_grail" aria-label="News page">
|
|
31
|
+
<header class="holy_grail_header">Daily briefing</header>
|
|
32
|
+
<aside class="holy_grail_left">Topic navigation</aside>
|
|
33
|
+
<main class="holy_grail_main">Lead story and article stream</main>
|
|
34
|
+
<aside class="holy_grail_right">Market snapshot</aside>
|
|
35
|
+
<footer class="holy_grail_footer">Edition links</footer>
|
|
36
|
+
</section>
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## CSS
|
|
40
|
+
|
|
41
|
+
```css
|
|
42
|
+
.holy_grail {
|
|
43
|
+
display: grid;
|
|
44
|
+
gap: 1rem;
|
|
45
|
+
grid-template: "header header header" auto "left main right" 1fr "footer footer footer" auto / minmax(12rem, auto) 1fr minmax(12rem, auto);
|
|
46
|
+
min-block-size: 100dvh;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.holy_grail_header {
|
|
50
|
+
grid-area: header;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.holy_grail_left {
|
|
54
|
+
grid-area: left;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.holy_grail_main {
|
|
58
|
+
grid-area: main;
|
|
59
|
+
min-inline-size: 0;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
.holy_grail_right {
|
|
63
|
+
grid-area: right;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.holy_grail_footer {
|
|
67
|
+
grid-area: footer;
|
|
68
|
+
}
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Core Properties
|
|
72
|
+
|
|
73
|
+
- `display`, `gap`, `grid-template`, `min-block-size`, `grid-area`, `min-inline-size` define the spatial behavior for this pattern.
|
|
74
|
+
|
|
75
|
+
## Properties That Break The Layout If Removed
|
|
76
|
+
|
|
77
|
+
- Removing `display`, `gap`, `grid-template`, `min-block-size`, `grid-area`, `min-inline-size` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
78
|
+
|
|
79
|
+
## Constraints And Change Points
|
|
80
|
+
|
|
81
|
+
- breakpointed responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
82
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
83
|
+
|
|
84
|
+
## Scroll Ownership
|
|
85
|
+
|
|
86
|
+
No internal scroll container.
|
|
87
|
+
|
|
88
|
+
## Accessibility And Source Order Notes
|
|
89
|
+
|
|
90
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
91
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
92
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
93
|
+
- Scroll expectation: No internal scroll container.
|
|
94
|
+
- Cognitive risk: Low: the pattern should preserve ordinary reading flow when semantic order is already correct.
|
|
95
|
+
|
|
96
|
+
## Browser And Fallback Notes
|
|
97
|
+
|
|
98
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
99
|
+
|
|
100
|
+
## Composition Notes
|
|
101
|
+
|
|
102
|
+
Use `holy_grail` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
103
|
+
|
|
104
|
+
## Anti-patterns
|
|
105
|
+
|
|
106
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
107
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
108
|
+
|
|
109
|
+
## IA Navigation
|
|
110
|
+
|
|
111
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
112
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# Viewport / Shell
|
|
2
|
+
|
|
3
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
4
|
+
|
|
5
|
+
- [cover](cover.md) - Keep a central region balanced between optional header and footer.
|
|
6
|
+
- [holy-grail](holy-grail.md) - Place header, footer, sidebars, and main content in a resilient shell.
|
|
7
|
+
- [sticky-footer](sticky-footer.md) - Keep footer at the bottom when content is short.
|
|
8
|
+
- [sticky-header](sticky-header.md) - Keep a header visible above a scrolling content region.
|
|
9
|
+
- [scroll-body-shell](scroll-body-shell.md) - Keep shell regions fixed while only the body scrolls.
|
|
10
|
+
- [fixed-sidenav-shell](fixed-sidenav-shell.md) - Keep side navigation stable while main content scrolls.
|
|
11
|
+
- [panel-layout](panel-layout.md) - Create predictable main and utility panels.
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: panel-layout
|
|
4
|
+
title: panel-layout
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Create predictable main and utility panels.
|
|
7
|
+
primary_spatial_problem: Create predictable main and utility panels.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: inline
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: reflow
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: No internal scroll container.
|
|
14
|
+
source_lineage: https://carbondesignsystem.com/elements/2x-grid/overview/
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# panel-layout
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to create predictable main and utility panels.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<section class="panel_layout" aria-label="Console workspace">
|
|
31
|
+
<main class="panel_layout_main">Query editor</main>
|
|
32
|
+
<aside class="panel_layout_side">Execution history</aside>
|
|
33
|
+
</section>
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## CSS
|
|
37
|
+
|
|
38
|
+
```css
|
|
39
|
+
.panel_layout {
|
|
40
|
+
display: grid;
|
|
41
|
+
gap: 1rem;
|
|
42
|
+
grid-template-columns: repeat(auto-fit, minmax(min(22rem, 100%), 1fr));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
.panel_layout_main {
|
|
46
|
+
min-inline-size: 0;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.panel_layout_side {
|
|
50
|
+
min-inline-size: 0;
|
|
51
|
+
}
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Core Properties
|
|
55
|
+
|
|
56
|
+
- `display`, `gap`, `grid-template-columns`, `min-inline-size` define the spatial behavior for this pattern.
|
|
57
|
+
|
|
58
|
+
## Properties That Break The Layout If Removed
|
|
59
|
+
|
|
60
|
+
- Removing `display`, `gap`, `grid-template-columns`, `min-inline-size` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
61
|
+
|
|
62
|
+
## Constraints And Change Points
|
|
63
|
+
|
|
64
|
+
- reflow responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
65
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
66
|
+
|
|
67
|
+
## Scroll Ownership
|
|
68
|
+
|
|
69
|
+
No internal scroll container.
|
|
70
|
+
|
|
71
|
+
## Accessibility And Source Order Notes
|
|
72
|
+
|
|
73
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
74
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
75
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
76
|
+
- Scroll expectation: No internal scroll container.
|
|
77
|
+
- Cognitive risk: Medium: reflow can change spatial adjacency, so labels, controls, and related content must remain adjacent in DOM order.
|
|
78
|
+
|
|
79
|
+
## Browser And Fallback Notes
|
|
80
|
+
|
|
81
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
82
|
+
|
|
83
|
+
## Composition Notes
|
|
84
|
+
|
|
85
|
+
Use `panel_layout` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
86
|
+
|
|
87
|
+
## Anti-patterns
|
|
88
|
+
|
|
89
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
90
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
91
|
+
|
|
92
|
+
## IA Navigation
|
|
93
|
+
|
|
94
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
95
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: scroll-body-shell
|
|
4
|
+
title: scroll-body-shell
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Keep shell regions fixed while only the body scrolls.
|
|
7
|
+
primary_spatial_problem: Keep shell regions fixed while only the body scrolls.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: block
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: fluid
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: Pattern owns the named scroll container.
|
|
14
|
+
source_lineage: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/overflow
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# scroll-body-shell
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to keep shell regions fixed while only the body scrolls.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<section class="scroll_body_shell" aria-label="Inbox">
|
|
31
|
+
<header>Inbox filters</header>
|
|
32
|
+
<main class="scroll_body_shell_body">Message list owns vertical scrolling</main>
|
|
33
|
+
<footer>Selected message actions</footer>
|
|
34
|
+
</section>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## CSS
|
|
38
|
+
|
|
39
|
+
```css
|
|
40
|
+
.scroll_body_shell {
|
|
41
|
+
display: grid;
|
|
42
|
+
grid-template-rows: auto minmax(0, 1fr) auto;
|
|
43
|
+
max-block-size: 100dvh;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.scroll_body_shell_body {
|
|
47
|
+
min-block-size: 0;
|
|
48
|
+
overflow: auto;
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Core Properties
|
|
53
|
+
|
|
54
|
+
- `display`, `grid-template-rows`, `max-block-size`, `min-block-size`, `overflow` define the spatial behavior for this pattern.
|
|
55
|
+
|
|
56
|
+
## Properties That Break The Layout If Removed
|
|
57
|
+
|
|
58
|
+
- Removing `display`, `grid-template-rows`, `max-block-size`, `min-block-size`, `overflow` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
59
|
+
|
|
60
|
+
## Constraints And Change Points
|
|
61
|
+
|
|
62
|
+
- fluid responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
63
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
64
|
+
|
|
65
|
+
## Scroll Ownership
|
|
66
|
+
|
|
67
|
+
Pattern owns the named scroll container.
|
|
68
|
+
|
|
69
|
+
## Accessibility And Source Order Notes
|
|
70
|
+
|
|
71
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
72
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
73
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
74
|
+
- Scroll expectation: Pattern owns the named scroll container.
|
|
75
|
+
- Cognitive risk: Medium: scroll ownership can hide context, controls, or return points if it is not named in the consuming layout.
|
|
76
|
+
|
|
77
|
+
## Browser And Fallback Notes
|
|
78
|
+
|
|
79
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
80
|
+
|
|
81
|
+
## Composition Notes
|
|
82
|
+
|
|
83
|
+
Use `scroll_body_shell` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
84
|
+
|
|
85
|
+
## Anti-patterns
|
|
86
|
+
|
|
87
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
88
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
89
|
+
|
|
90
|
+
## IA Navigation
|
|
91
|
+
|
|
92
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
93
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: sticky-footer
|
|
4
|
+
title: sticky-footer
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Keep footer at the bottom when content is short.
|
|
7
|
+
primary_spatial_problem: Keep footer at the bottom when content is short.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: block
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: fluid
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: No internal scroll container.
|
|
14
|
+
source_lineage: https://developer.mozilla.org/en-US/docs/Web/CSS/How_to/Layout_cookbook
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# sticky-footer
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to keep footer at the bottom when content is short.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<section class="sticky_footer" aria-label="Account setup">
|
|
31
|
+
<header>Account setup</header>
|
|
32
|
+
<main class="sticky_footer_main">Profile fields and preferences</main>
|
|
33
|
+
<footer><button>Save profile</button></footer>
|
|
34
|
+
</section>
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## CSS
|
|
38
|
+
|
|
39
|
+
```css
|
|
40
|
+
.sticky_footer {
|
|
41
|
+
display: grid;
|
|
42
|
+
grid-template-rows: auto 1fr auto;
|
|
43
|
+
min-block-size: 100dvh;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.sticky_footer_main {
|
|
47
|
+
min-block-size: 0;
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Core Properties
|
|
52
|
+
|
|
53
|
+
- `display`, `grid-template-rows`, `min-block-size` define the spatial behavior for this pattern.
|
|
54
|
+
|
|
55
|
+
## Properties That Break The Layout If Removed
|
|
56
|
+
|
|
57
|
+
- Removing `display`, `grid-template-rows`, `min-block-size` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
58
|
+
|
|
59
|
+
## Constraints And Change Points
|
|
60
|
+
|
|
61
|
+
- fluid responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
62
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
63
|
+
|
|
64
|
+
## Scroll Ownership
|
|
65
|
+
|
|
66
|
+
No internal scroll container.
|
|
67
|
+
|
|
68
|
+
## Accessibility And Source Order Notes
|
|
69
|
+
|
|
70
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
71
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
72
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
73
|
+
- Scroll expectation: No internal scroll container.
|
|
74
|
+
- Cognitive risk: Low: the pattern should preserve ordinary reading flow when semantic order is already correct.
|
|
75
|
+
|
|
76
|
+
## Browser And Fallback Notes
|
|
77
|
+
|
|
78
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
79
|
+
|
|
80
|
+
## Composition Notes
|
|
81
|
+
|
|
82
|
+
Use `sticky_footer` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
83
|
+
|
|
84
|
+
## Anti-patterns
|
|
85
|
+
|
|
86
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
87
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
88
|
+
|
|
89
|
+
## IA Navigation
|
|
90
|
+
|
|
91
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
92
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Layout Pattern
|
|
3
|
+
name: sticky-header
|
|
4
|
+
title: sticky-header
|
|
5
|
+
category: Viewport / Shell
|
|
6
|
+
description: Keep a header visible above a scrolling content region.
|
|
7
|
+
primary_spatial_problem: Keep a header visible above a scrolling content region.
|
|
8
|
+
secondary_spatial_problems: none
|
|
9
|
+
layout_axis: block
|
|
10
|
+
content_shape: mixed
|
|
11
|
+
responsiveness: fluid
|
|
12
|
+
constraints: Uses only local class hooks and explicit layout constraints.
|
|
13
|
+
scroll_ownership: No internal scroll container.
|
|
14
|
+
source_lineage: https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/position
|
|
15
|
+
lifecycle: generated
|
|
16
|
+
generated_from: scripts/generate-patterns.mjs, scripts/pattern-data.mjs
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<!-- Generated from `scripts/generate-patterns.mjs` and `scripts/pattern-data.mjs`. Do not hand-edit generated catalog or pattern docs; edit the source files and regenerate. -->
|
|
20
|
+
|
|
21
|
+
# sticky-header
|
|
22
|
+
|
|
23
|
+
## When To Use
|
|
24
|
+
|
|
25
|
+
Use this pattern when you need to keep a header visible above a scrolling content region.
|
|
26
|
+
|
|
27
|
+
## HTML
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<header class="sticky_header">
|
|
31
|
+
<nav aria-label="Repository"><a href="#">Code</a><a href="#">Issues</a><a href="#">Pull requests</a></nav>
|
|
32
|
+
</header>
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## CSS
|
|
36
|
+
|
|
37
|
+
```css
|
|
38
|
+
.sticky_header {
|
|
39
|
+
inset-block-start: 0;
|
|
40
|
+
position: sticky;
|
|
41
|
+
z-index: 1;
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Core Properties
|
|
46
|
+
|
|
47
|
+
- `inset-block-start`, `position`, `z-index` define the spatial behavior for this pattern.
|
|
48
|
+
|
|
49
|
+
## Properties That Break The Layout If Removed
|
|
50
|
+
|
|
51
|
+
- Removing `inset-block-start`, `position`, `z-index` changes the pattern from its documented layout responsibility back toward ordinary flow or an unsafe fixed arrangement.
|
|
52
|
+
|
|
53
|
+
## Constraints And Change Points
|
|
54
|
+
|
|
55
|
+
- fluid responsiveness is part of the contract; change sizing values only when the new minimum, maximum, or wrap point is documented with the pattern.
|
|
56
|
+
- Keep the HTML class hooks and CSS selectors in one-to-one agreement.
|
|
57
|
+
|
|
58
|
+
## Scroll Ownership
|
|
59
|
+
|
|
60
|
+
No internal scroll container.
|
|
61
|
+
|
|
62
|
+
## Accessibility And Source Order Notes
|
|
63
|
+
|
|
64
|
+
- Semantic role expectation: Preserve the HTML sample's landmark, list, navigation, form, figure, or article roles; layout classes must not replace semantic elements.
|
|
65
|
+
- DOM order expectation: Keep semantic elements, DOM order, reading order, and focus order independent from the visual placement created by the layout classes.
|
|
66
|
+
- Focus risk: Any interactive descendants follow DOM order; do not use this pattern to create a visual order that keyboard focus cannot follow.
|
|
67
|
+
- Scroll expectation: No internal scroll container.
|
|
68
|
+
- Cognitive risk: Low: the pattern should preserve ordinary reading flow when semantic order is already correct.
|
|
69
|
+
|
|
70
|
+
## Browser And Fallback Notes
|
|
71
|
+
|
|
72
|
+
The CSS uses modern grid, flex, intrinsic sizing, logical properties, or positioning. If a target browser cannot support a property, fall back to ordinary block flow before adding decorative or script-driven layout behavior.
|
|
73
|
+
|
|
74
|
+
## Composition Notes
|
|
75
|
+
|
|
76
|
+
Use `sticky_header` as the stable pattern root and compose additional layout behavior outside that root unless the child class is part of the documented relationship.
|
|
77
|
+
|
|
78
|
+
## Anti-patterns
|
|
79
|
+
|
|
80
|
+
- Do not add color, border, shadow, typography, or animation rules to reusable pattern CSS.
|
|
81
|
+
- Do not use this pattern to repair unclear HTML structure; make the DOM roles legible first.
|
|
82
|
+
|
|
83
|
+
## IA Navigation
|
|
84
|
+
|
|
85
|
+
Parent: [Viewport / Shell patterns](index.md) in [Pattern Categories](../index.md).
|
|
86
|
+
Next: [Layout Recipes](../../recipes/index.md) for screen-level composition, or return to the [Layout Pattern Catalog](../../CATALOG.md) when choosing another primitive.
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: Domain Guide
|
|
3
|
+
title: Apple Interaction As A Comparative Reference
|
|
4
|
+
description: Bounded comparison of Apple interaction themes with explicit web-adaptation and provenance limits.
|
|
5
|
+
domain: platform-guides
|
|
6
|
+
lifecycle: experimental
|
|
7
|
+
source_repository: https://github.com/emilkowalski/skills
|
|
8
|
+
source_path: skills/apple-design/SKILL.md
|
|
9
|
+
source_revision: 220e8607c90b17337d210125777b7b695f26c221
|
|
10
|
+
platform: Apple platforms
|
|
11
|
+
platform_version: verify-current
|
|
12
|
+
reviewed_on: 2026-07-11
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Apple Interaction As A Comparative Reference
|
|
16
|
+
|
|
17
|
+
Primary role: platform comparison guide.
|
|
18
|
+
|
|
19
|
+
## Repository Boundary
|
|
20
|
+
|
|
21
|
+
This page uses selected Apple-platform interaction themes as comparative questions. It does not reproduce Apple guidance, establish affiliation, prescribe imitation, or treat a native implementation value as valid for the web.
|
|
22
|
+
|
|
23
|
+
Current official Apple documentation is required for Apple-specific claims. Current web standards and browser documentation are required for web adaptation. Local rendered, device, accessibility, and performance evidence is required for product conclusions.
|
|
24
|
+
|
|
25
|
+
## Reusable Method
|
|
26
|
+
|
|
27
|
+
For each proposed comparison:
|
|
28
|
+
|
|
29
|
+
1. Name the user task, platform, OS/API version, input method, and state transition.
|
|
30
|
+
2. Describe the observable behavior without branded terminology.
|
|
31
|
+
3. Identify the platform convention and its current official source.
|
|
32
|
+
4. Separate the reusable interaction question from native implementation details.
|
|
33
|
+
5. Define the web adaptation, including unavailable or materially different capabilities.
|
|
34
|
+
6. Verify the adapted behavior on its real surface and record what remains unproven.
|
|
35
|
+
|
|
36
|
+
## Comparative Questions
|
|
37
|
+
|
|
38
|
+
| Theme | Question to investigate | Required evidence | Boundary |
|
|
39
|
+
| --- | --- | --- | --- |
|
|
40
|
+
| Response | Does feedback begin close enough to input to preserve cause and effect? | Interaction recording and input-state trace | No universal latency value is implied. |
|
|
41
|
+
| Direct manipulation | Does the presented state follow, cancel, and resume from user input coherently? | Repeated drag/reversal test on target input modes | One-to-one tracking is not always required. |
|
|
42
|
+
| Interruption | Can new input redirect a transition without jumping or locking control? | Mid-transition retarget and reversal evidence | Springs are one option, not a requirement. |
|
|
43
|
+
| Velocity continuity | Does release-to-settle behavior avoid an observable seam? | Gesture and presented-state recording | Native velocity APIs and web libraries differ. |
|
|
44
|
+
| Spatial consistency | Can the reader understand where content came from and where it returns? | Before/intermediate/after render plus source/focus order | Visual path cannot override semantic order. |
|
|
45
|
+
| Recoverability | Can a user cancel, reverse, undo, or safely recover where the task requires it? | Task and error-path evidence | Confirmation is not universally preferable to undo. |
|
|
46
|
+
| Wayfinding | Can the interface answer location, available destinations, contents, and exit? | Navigation task evidence | Familiar platform placement may not transfer across products. |
|
|
47
|
+
| Soft boundaries | Would progressive resistance communicate a limit better than a hard stop? | Comparative prototype and input/device evidence | The resistance curve is not standardized across platforms. |
|
|
48
|
+
| Multimodal feedback | Do visual, audio, and haptic cues share a clear cause and useful purpose? | Device timing and accessibility evidence | Web haptics/audio are not native equivalents and may be unavailable. |
|
|
49
|
+
| Adaptive presentation | Does the interface remain usable across text size, contrast, transparency, motion preference, input, and viewport changes? | Relevant preference and constraint matrix | A platform feature name does not prove web accessibility. |
|
|
50
|
+
|
|
51
|
+
## Opinionated Guidance
|
|
52
|
+
|
|
53
|
+
Momentum-aware settling, source-anchored transitions, progressive boundary resistance, and carefully coordinated feedback can be useful hypotheses for directly manipulated interfaces. Translucent materials, system typography, haptics, and visual delight are product and platform choices outside reusable Layout pattern CSS.
|
|
54
|
+
|
|
55
|
+
## Platform-Specific Guidance
|
|
56
|
+
|
|
57
|
+
- iOS/macOS gesture physics, native spring APIs, Dynamic Type, system materials, haptics, and SwiftUI/UIKit behavior must be labeled as Apple-specific.
|
|
58
|
+
- Any value described as shipped by Apple requires a direct, current official source and version.
|
|
59
|
+
- A web mapping must identify browser support, input differences, accessibility behavior, and fallback semantics.
|
|
60
|
+
- `backdrop-filter`, the Vibration API, web media queries, and JavaScript animation libraries are not equivalents merely because they can approximate one visible effect.
|
|
61
|
+
|
|
62
|
+
## Unsupported Absolutes
|
|
63
|
+
|
|
64
|
+
- Do not call an upstream formula or parameter an exact Apple implementation without a primary official source.
|
|
65
|
+
- Do not require direct manipulation to track one-to-one in every context.
|
|
66
|
+
- Do not require audio and haptic events on one exact frame as a universal web contract.
|
|
67
|
+
- Do not claim translucent chrome is generally superior to opaque structure.
|
|
68
|
+
- Do not adopt a single spring configuration as a safe default across tasks.
|
|
69
|
+
- Do not import a named set of Apple principles as StyleGallery's shared principles.
|
|
70
|
+
- Do not infer native behavior, platform affiliation, or accessibility from visual similarity.
|
|
71
|
+
|
|
72
|
+
## Verification Contract
|
|
73
|
+
|
|
74
|
+
Record the official platform source and version, the web-standard or browser source for adaptation, the exact target devices and input modes, relevant user preferences, and the observed pass/fail behavior. Use a real interactive prototype for interaction claims. State explicitly when native behavior cannot be reproduced or verified on the web.
|
|
75
|
+
|
|
76
|
+
Review this page when Apple changes the cited convention, the web platform changes the adaptation surface, the source revision changes, or local testing contradicts the guidance. `platform_version: verify-current` prevents this experimental page from masquerading as a version-pinned platform contract.
|
|
77
|
+
|
|
78
|
+
## Source, License, And Attribution
|
|
79
|
+
|
|
80
|
+
- Upstream inspiration: [apple-design/SKILL.md](https://github.com/emilkowalski/skills/blob/220e8607c90b17337d210125777b7b695f26c221/skills/apple-design/SKILL.md)
|
|
81
|
+
- Snapshot: `220e8607c90b17337d210125777b7b695f26c221`
|
|
82
|
+
- Upstream license: MIT, Copyright (c) 2026 Emil Kowalski.
|
|
83
|
+
- Reuse form: independent method rewrite; upstream prose, tables, code, exact-value sequences, Apple/WWDC-derived expression, and quotations were not retained.
|
|
84
|
+
- Evidence boundary: the upstream artifact is a practitioner interpretation and provenance record, not an official Apple or web-platform source.
|
|
85
|
+
|
|
86
|
+
## IA Navigation
|
|
87
|
+
|
|
88
|
+
Parent: [Platform Guides](index.md).
|
|
89
|
+
Next: [Layout](../layout/index.md).
|