Polish subscription profile controls and status styling
Build and Deploy Gateway / build-and-push (push) Successful in 19s
Build and Deploy Gateway / deploy (push) Successful in 7s

This commit is contained in:
2026-08-11 10:04:13 +03:00
parent 021cdb28d0
commit 17849ffd73
4 changed files with 29 additions and 14 deletions
+12 -12
View File
@@ -37,25 +37,25 @@ const expectedImports = [
const sha256 = (value) => crypto.createHash('sha256').update(value).digest('hex');
const acceptedLedger = {
counts: {
cascadeEdges: 749,
cascadeEdges: 752,
customProperties: 103,
declarations: 3193,
declarations: 3202,
important: 0,
keyframes: 56,
media: 13,
rules: 916,
variableReferences: 788,
rules: 917,
variableReferences: 794,
},
hashes: {
cascadeEdges: 'a47dbf5212045c865de7a41d420e78df8b992a6ec1b06fb18a8d459cd480f0ae',
cascadeEdges: '5c09bfa1ab715bdd522969d017f4ff974e2a8fc391305e68943e39612245f815',
customProperties: 'fc8401b40b8d2cc8a1fc1716360ba8e5baccb694cdabde68427d3c92c04a84d4',
declarations: 'a35a393a48727746d6e0a57c84ab118ae44a48fd0e37748307e1a2e9ffa88ff7',
declarations: '0cacb55296aad8af6790036c75831f7a87429ec055481d9eb71d564e4d8a828c',
duplicateKeyframes: '4f53cda18c2baa0c0354bb5f9a3ecbe5ed12ab4d8e11ba873c2f11161202b945',
duplicateSelectors: '419962e669cbfdf5c8186318cb26688477fc0199cae98df8e1cd9bf5cddd76c2',
keyframes: 'fb859c4d0d1bfd2f5a18904e30a5f79c6ce6931d74fe88cbd506fb28c334b7ac',
ruleDeclarationSequences: 'e6d21f0272c35ef5909b3d6ced45e5bfba77d4cda6d3fc61728a9d97f9dd2736',
selectors: '8668def9103b02e94e3fcc53e5df9f2abc07c1d78d94517d0fefc9e2be54c8b4',
variableReferences: '700137c05be5f12722a7ebec90d06be70dde203a754a9312d45c03ff05ff08ec',
ruleDeclarationSequences: 'b2b02e78df98c48405a5243bb07e0cd6dfcfac83f7fea7847e82041741a56e14',
selectors: 'e4c3dc48d8998e9fc76a0a3eb147fe6366ebfc93e22ba9ebe77f08f1fe84de2f',
variableReferences: '252702ab07ce1c790d77a60f8e674cb3b55f7ffe6e52329a50b69e5306442f1f',
witnesses: 'f51f070cc2c7dba0f8d08518cdeee49eaf176aac82e3571cdd8498315ba8db83',
},
};
@@ -405,8 +405,8 @@ test('main owns one public stylesheet and the regrouped production CSS is determ
assert.equal((main.match(/import ['"][^'"]+\.css['"]/g) || []).length, 1);
const assets = fs.readdirSync(path.join(root, 'dist/assets')).filter((file) => file.endsWith('.css'));
assert.deepEqual(assets, ['index-vw0VVUis.css']);
assert.deepEqual(assets, ['index-dA_YmbDB.css']);
const built = fs.readFileSync(path.join(root, 'dist/assets', assets[0]));
assert.equal(built.byteLength, 123242);
assert.equal(sha256(built), '5bb8b7f5a82c2144a4f2c8bdb1543ca34f2d0738faeec97e2842175521862749');
assert.equal(built.byteLength, 123538);
assert.equal(sha256(built), '7c506bdd5d073515239a4d779f6f5365a07ef245c057772ba6a343b6d90838e7');
});
@@ -57,6 +57,7 @@ test('local validation, scoped refresh and drawer focus remain feature-owned', (
assert.match(feature, /className="client-profile-delete"[\s\S]*client-profile-delete-lid/);
assert.match(feature, /placeholder="https:\/\/…"[\s\S]*aria-label="Ссылка подписки"/);
assert.doesNotMatch(feature, /<span>Ссылка подписки<\/span>/);
assert.match(styles, /\.client-profile-form-status\s*\{[\s\S]*color:\s*oklch\(0\.68 0\.15 28\)[\s\S]*font:\s*var\(--type-control\)/);
assert.doesNotMatch(feature, /cancelRename|client-profile-menu|onRename/);
});
@@ -120,5 +121,7 @@ test('profiles render as flat accordion groups with scoped controls', () => {
assert.match(styles, /\.client-profile-body \{[\s\S]*grid-template-rows: 0fr[\s\S]*\.client-profile-body\.is-open \{[\s\S]*grid-template-rows: 1fr/);
assert.match(styles, /@media \(prefers-reduced-motion: reduce\)[\s\S]*\.client-profile-body \*/);
assert.match(styles, /\.client-profile-refresh\.is-refreshing/);
assert.match(styles, /\.client-profile-refresh,[\s\S]*\.client-profile-delete\s*\{[\s\S]*width:\s*36px;[\s\S]*height:\s*36px;[\s\S]*display:\s*grid;[\s\S]*place-items:\s*center/);
assert.match(styles, /\.client-profile-activate\s*\{[\s\S]*font:\s*var\(--type-micro\)/);
assert.doesNotMatch(feature, /client-subscription-card|role="tab"/);
});