feat: unify project responsive layouts

This commit is contained in:
rain
2026-07-21 20:59:10 +08:00
parent a0d19f4aab
commit 5d99bae3f2
94 changed files with 2324 additions and 404 deletions
+84
View File
@@ -0,0 +1,84 @@
{
"exceptions": [
{ "path": "components/AppLoading.vue", "selector": ".app-loading--page .app-loading__seal", "property": "fixed-height", "reason": "Fixed-ratio loading artwork." },
{ "path": "components/AppLoading.vue", "selector": ".app-loading--page .app-loading__knot", "property": "fixed-height", "reason": "Fixed-ratio loading ornament." },
{ "path": "components/AppLoading.vue", "selector": ".app-loading--section .app-loading__seal", "property": "fixed-height", "reason": "Fixed-ratio loading artwork." },
{ "path": "components/AppLoading.vue", "selector": ".app-loading--section .app-loading__knot", "property": "fixed-height", "reason": "Fixed-ratio loading ornament." },
{ "path": "components/AppTabbar.vue", "selector": ".tab-icon", "property": "fixed-height", "reason": "Fixed-ratio navigation icon." },
{ "path": "components/GenealogyCard.vue", "selector": ".surname-seal", "property": "fixed-height", "reason": "Fixed-ratio surname seal." },
{ "path": "components/GenealogyCard.vue", "selector": ".surname-seal-copy", "property": "fixed-height", "reason": "Text overlay follows fixed seal artwork." },
{ "path": "components/GenealogyCard.vue", "selector": ".card-meta-icon", "property": "fixed-height", "reason": "Fixed-ratio metadata icon." },
{ "path": "components/GenealogyCard.vue", "selector": ".card-chevron", "property": "fixed-height", "reason": "Fixed-ratio navigation icon." },
{ "path": "components/PageHeader.vue", "selector": ".header-hall", "property": "fixed-height", "reason": "Fixed-ratio header artwork." },
{ "path": "components/PageHeader.vue", "selector": ".header-icon-button", "property": "fixed-height", "reason": "Minimum header touch target." },
{ "path": "components/PageHeader.vue", "selector": ".header-logo", "property": "fixed-height", "reason": "Fixed-ratio brand mark." },
{ "path": "components/PageHeader.vue", "selector": ".header-notice-icon", "property": "fixed-height", "reason": "Fixed-ratio notice icon." },
{ "path": "components/PageHeader.vue", "selector": ".notice-dot", "property": "fixed-height", "reason": "Fixed notification indicator." },
{ "path": "components/PageHeader.vue", "selector": ".header-back", "property": "fixed-height", "reason": "Minimum header touch target." },
{ "path": "components/PageHeader.vue", "selector": ".header-back__icon", "property": "fixed-height", "reason": "Fixed-ratio back icon." },
{ "path": "components/PageHeader.vue", "selector": ".page-header--root .header-logo", "property": "fixed-height", "reason": "Fixed-ratio root brand mark." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".title-divider", "property": "fixed-height", "reason": "Fixed-ratio title ornament." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".input-icon", "property": "fixed-height", "reason": "Fixed-ratio form icon." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".password-toggle__icon", "property": "fixed-height", "reason": "Fixed-ratio password icon." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".divider-line", "property": "fixed-height", "reason": "One-pixel ornamental rule." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".divider-knot", "property": "fixed-height", "reason": "Fixed-ratio divider ornament." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".wechat-icon", "property": "fixed-height", "reason": "Fixed-ratio provider icon." },
{ "path": "pages/auth/a01-entry.vue", "selector": ".agreement-icon", "property": "fixed-height", "reason": "Fixed-ratio agreement control." },
{ "path": "pages/auth/a04-register.vue", "selector": ".back-button__icon", "property": "fixed-height", "reason": "Fixed-ratio back icon." },
{ "path": "pages/auth/a04-register.vue", "selector": ".register-divider", "property": "fixed-height", "reason": "Fixed-ratio title ornament." },
{ "path": "pages/auth/a04-register.vue", "selector": ".agreement-icon", "property": "fixed-height", "reason": "Fixed-ratio agreement control." },
{ "path": "pages/auth/a05-reset-password.vue", "selector": ".back-button__icon", "property": "fixed-height", "reason": "Fixed-ratio back icon." },
{ "path": "pages/auth/a05-reset-password.vue", "selector": ".reset-divider", "property": "fixed-height", "reason": "Fixed-ratio title ornament." },
{ "path": "pages/auth/a05-reset-password.vue", "selector": ".success-mark", "property": "fixed-height", "reason": "Fixed-ratio success icon." },
{ "path": "pages/auth/a06-auth-status.vue", "selector": ".back-button__icon", "property": "fixed-height", "reason": "Fixed-ratio back icon." },
{ "path": "pages/auth/a06-auth-status.vue", "selector": ".status-divider", "property": "fixed-height", "reason": "Fixed-ratio title ornament." },
{ "path": "pages/auth/a06-auth-status.vue", "selector": ".status-icon", "property": "fixed-height", "reason": "Fixed-ratio status icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".current-seal", "property": "fixed-height", "reason": "Fixed-ratio genealogy seal." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".current-info-divider", "property": "fixed-height", "reason": "One-pixel ornamental rule." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".current-meta-icon", "property": "fixed-height", "reason": "Fixed-ratio metadata icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".shortcut-icon", "property": "fixed-height", "reason": "Fixed-ratio shortcut icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".section-divider", "property": "fixed-height", "reason": "Fixed-ratio section ornament." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".section-heading::before", "property": "fixed-height", "reason": "Fixed heading accent." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".application-record__chevron", "property": "fixed-height", "reason": "Fixed-ratio navigation icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".create-icon", "property": "fixed-height", "reason": "Fixed-ratio action icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".create-action .create-icon", "property": "fixed-height", "reason": "Responsive override for fixed-ratio action icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".create-cloud", "property": "fixed-height", "reason": "Fixed-ratio decorative cloud." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".error-panel__seal", "property": "fixed-height", "reason": "Fixed-ratio state icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".error-panel__divider", "property": "fixed-height", "reason": "Fixed-ratio state ornament." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".empty-seal", "property": "fixed-height", "reason": "Fixed-ratio empty-state seal." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".empty-divider", "property": "fixed-height", "reason": "Fixed-ratio empty-state ornament." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".add-dialog__close", "property": "fixed-height", "reason": "Minimum close touch target." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".add-dialog__close-icon", "property": "fixed-height", "reason": "Fixed-ratio close icon." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".genealogy-switcher__close", "property": "fixed-height", "reason": "Minimum close touch target." },
{ "path": "pages/genealogy/g01-my-genealogies.vue", "selector": ".genealogy-switcher__close-icon", "property": "fixed-height", "reason": "Fixed-ratio close icon." },
{ "path": "pages/genealogy/g05-genealogy-overview.vue", "selector": ".overview-state__seal", "property": "fixed-height", "reason": "Fixed-ratio state icon." },
{ "path": "pages/genealogy/g06-search-genealogies.vue", "selector": ".search-divider", "property": "fixed-height", "reason": "Fixed-ratio section ornament." },
{ "path": "pages/genealogy/g06-search-genealogies.vue", "selector": ".search-status__cloud", "property": "fixed-height", "reason": "Fixed-ratio decorative cloud." },
{ "path": "pages/genealogy/g06-search-genealogies.vue", "selector": ".search-status__hall", "property": "fixed-height", "reason": "Fixed-ratio state artwork." },
{ "path": "pages/family/f09-media-upload.vue", "selector": ".media-album-card__cover", "property": "fixed-height", "reason": "Fixed-ratio media thumbnail." },
{ "path": "pages/family/f09-media-upload.vue", "selector": ".media-photo-editor__thumb", "property": "fixed-height", "reason": "Fixed-ratio media thumbnail." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-hero__hall", "property": "fixed-height", "reason": "Fixed-ratio header artwork." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-hero__cloud", "property": "fixed-height", "reason": "Fixed-ratio decorative cloud." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-identity__seal", "property": "fixed-height", "reason": "Fixed-ratio identity seal." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-section-heading image", "property": "fixed-height", "reason": "Fixed-ratio heading ornament." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-menu__icon", "property": "fixed-height", "reason": "Fixed-ratio menu icon." },
{ "path": "pages/profile/m01-profile-home.vue", "selector": ".profile-menu__chevron", "property": "fixed-height", "reason": "Fixed-ratio navigation icon." },
{ "path": "pages/profile/m03-security-settings.vue", "selector": ".security-row>image", "property": "fixed-height", "reason": "Fixed-ratio security icon." },
{ "path": "pages/profile/m03-security-settings.vue", "selector": ".security-row .chevron", "property": "fixed-height", "reason": "Fixed-ratio navigation icon." },
{ "path": "pages/profile/m10-about-settings.vue", "selector": ".brand-card image", "property": "fixed-height", "reason": "Fixed-ratio brand mark." },
{ "path": "pages/profile/m10-about-settings.vue", "selector": ".settings-row image", "property": "fixed-height", "reason": "Fixed-ratio settings icon." },
{ "path": "pages/tree/t01-tree-overview.vue", "selector": ".generation-band", "property": "fixed-height", "reason": "Fixed-height generation lane in the scrollable tree canvas." },
{ "path": "pages/tree/t01-tree-overview.vue", "selector": ".member-node", "property": "fixed-height", "reason": "Fixed-ratio interactive tree node." },
{ "path": "pages/tree/t01-tree-overview.vue", "selector": ".member-node--selected", "property": "fixed-height", "reason": "Selected state preserves the fixed-ratio tree node." },
{ "path": "pages/tree/t03-member-profile.vue", "selector": ".member-heading__seal", "property": "fixed-height", "reason": "Fixed-ratio member seal." }
]
}