23 lines
1.8 KiB
PowerShell
23 lines
1.8 KiB
PowerShell
$ErrorActionPreference = 'Stop'
|
|
$root = Split-Path -Parent $PSScriptRoot
|
|
$page = Get-Content -LiteralPath (Join-Path $root 'pages/family/f01-family-feed.vue') -Raw -Encoding utf8
|
|
$profiles = Get-Content -LiteralPath (Join-Path $root 'styles/adaptive-frame-profiles.scss') -Raw -Encoding utf8
|
|
|
|
function Assert-Match([string]$Pattern, [string]$Message) {
|
|
if ($page -notmatch $Pattern) { throw $Message }
|
|
}
|
|
|
|
Assert-Match '@include\s+adaptive\.adaptive-family-letter\s*;' 'F01 must consume its dedicated adaptive family-letter profile.'
|
|
if ($profiles -notmatch '(?s)@mixin\s+adaptive-family-letter\s*\{.*?modules/family/transparent/f01-family-letter-card\.png') { throw 'The adaptive profile owner must retain F01 dedicated family-letter artwork.' }
|
|
if ($page -match 'application-status-card\.png') { throw 'F01 must not reuse the application status card.' }
|
|
Assert-Match 'class="feed-card__title"' 'F01 must expose an explicit feed title hierarchy.'
|
|
Assert-Match 'class="feed-card__meta"' 'F01 must expose category and time as secondary metadata.'
|
|
Assert-Match 'class="feed-card__summary"' 'F01 must expose feed summary copy.'
|
|
Assert-Match 'class="feed-card__author"' 'F01 must expose the author as tertiary information.'
|
|
Assert-Match '(?s)\.feed-shortcut\s*\{[^}]*min-height:\s*44px;' 'F01 shortcuts must preserve a 44 CSS px touch height.'
|
|
Assert-Match '@include\s+adaptive\.adaptive-scroll-button\(secondary\)\s*;' 'F01 shortcuts must share the adaptive secondary navigation profile.'
|
|
Assert-Match '(?s)\.feed-shortcuts\s*\{[^}]*grid-template-columns:\s*repeat\(4,\s*minmax\(0,\s*1fr\)\);' 'F01 shortcuts must use one four-column equal-width navigation strip.'
|
|
if ($page -match 'position\s*:') { throw 'F01 must keep ordinary content in document flow.' }
|
|
|
|
Write-Output 'F01-MODULE-BASELINE-CONTRACT PASS'
|