@bongos/core 1.19.424 → 1.19.425

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.
@@ -1676,3 +1676,59 @@ test('one column grammar: the table lays every row on one set of fixed tracks (e
1676
1676
  assert.match(COSMOS, /@media \(max-width:780px\)\{\.tbl \.colTags,\.tbl \.colType\{display:none;\}\.tbl\{min-width:600px;\}\}/, 'a phone scrolls the table inside its wrap');
1677
1677
  assert.match(COSMOS, /#sub-table-body\{overflow-x:auto;\}/, 'the wrap scrolls, never the page');
1678
1678
  });
1679
+
1680
+ /* ── the create wizard in the world (task 1003346; direction record §15, the pick: v1 the
1681
+ rail above, the bongo pair kept). Two sheets carry it: cosmos.css draws the FRAME by scope
1682
+ (#view-new), projects.html's own wizard block draws the wizard's structures. ── */
1683
+ test('the wizard takes the world by scope: no card ground, the six-step strip as the rail, the doors as pills (task 1003346)', () => {
1684
+ const at = COSMOS.indexOf('THE CREATE WIZARD, IN THE WORLD');
1685
+ assert.ok(at > -1, 'the #view-new block exists in cosmos.css');
1686
+ const block = COSMOS.slice(at);
1687
+ assert.match(block, /#view-new \.card\{background:none;border-radius:0;box-shadow:none;/, 'no card ground');
1688
+ assert.match(block, /#view-new \.steps\{display:grid;grid-template-columns:repeat\(6,1fr\);/, 'the strip lays its six steps on six tracks');
1689
+ assert.match(block, /#view-new \.steps li::before\{content:"";position:absolute;top:-4px;left:0;right:auto;width:7px;height:7px;/, 'the connector becomes the 7px dot');
1690
+ assert.match(block, /#view-new \.steps li\.now::before\{background:var\(--accent\);border-color:var\(--accent\);outline:4px solid/, 'the lit step carries the accent and an outline halo');
1691
+ assert.match(block, /#view-new \.panel h1\{font-weight:300;[^}]*text-transform:lowercase;/, 'the step title in the display voice, lowercase');
1692
+ assert.match(block, /#view-new \.btn\{[^}]*text-transform:lowercase;[^}]*box-shadow:none;/, 'the doors are pills without a shadow');
1693
+ assert.match(block, /#view-new \.btn\.ghost\{[^}]*border:1px solid var\(--rule\);/, 'back and skip are hairline pills');
1694
+ assert.match(block, /#view-new #wizSignin\{background:var\(--ink\);color:var\(--bg\);/, 'the GitHub sign-in is the inverted pill');
1695
+ assert.match(block, /#view-new \.bongos \.glow\{display:none;\}/, 'the bongo pair stays (the owner\'s one mark on every surface), its halo goes');
1696
+ assert.match(block, /#view-new \.panel \.lede a\{display:inline-block;padding:3px 0;min-height:24px;/, 'the done clause\'s link clears the 24px floor (the sheet\'s first problem)');
1697
+ assert.doesNotMatch(block, /box-shadow:(?!none)/, 'halos are outlines in the world, never box-shadow');
1698
+ assert.doesNotMatch(block, /#[0-9a-f]{3,8}\b/i, 'every colour is a token');
1699
+ });
1700
+
1701
+ test('the wizard\'s own structures wear the world: hairline fields, cells of one band, the review as a ledger, the human steps as a numbered ledger, the standup strip as the rail (task 1003346)', () => {
1702
+ const at = STYLE.indexOf('the create wizard (task 1002763');
1703
+ assert.ok(at > -1, 'the wizard block is still the page\'s own');
1704
+ const block = STYLE.slice(at);
1705
+ assert.match(block, /#view-new input\[type=text\], #view-new textarea\{\s*width:100%;[^}]*border:0;border-bottom:1px solid var\(--rule\);border-radius:0;/, 'a field is one bottom hairline');
1706
+ assert.match(block, /#view-new input\[type=text\]:focus, #view-new textarea:focus\{border-bottom-color:var\(--ink\);box-shadow:none;\}/, 'focus takes ink, never a glow');
1707
+ assert.match(block, /\.typeCards\{display:grid;[^}]*border-top:1px solid var\(--rule\);border-bottom:1px solid var\(--rule\);/, 'the type and team choices are cells of one band');
1708
+ assert.match(block, /\.tpill\[aria-pressed=true\]::before\{background:var\(--accent\);/, 'the chosen cell carries the dot');
1709
+ assert.match(block, /\.choices\{display:grid;grid-template-columns:1fr 1fr;gap:0;border-top:1px solid var\(--rule\);/, 'start fresh / adopt are two cells of one band');
1710
+ assert.match(block, /\.choice svg\{display:none;\}/, 'the dot is the mark, the icon leaves');
1711
+ assert.match(block, /\.review\{list-style:none;display:grid;grid-template-columns:172px 1fr;/, 'the review is a ledger');
1712
+ assert.match(block, /\.review li\{display:contents;\}/, 'renderReview\'s li markup stands; the grid lays its k and v');
1713
+ assert.match(block, /\.humanSteps>li\{\s*display:grid;grid-template-columns:44px 1fr;/, 'the human steps are a numbered ledger');
1714
+ assert.match(block, /\.humanSteps>li>\*\{grid-column:2;/, 'every child of a step sits in the text column, never under the counter (the sheet\'s bug)');
1715
+ assert.match(block, /\.humanSteps>li\.sdone::before\{content:"done";/, 'a finished step reads DONE in the ok ink');
1716
+ assert.match(block, /\.prog\{background:none;border:0;border-radius:0;padding:0;/, 'the standup strip is drawn as the rail');
1717
+ assert.match(block, /\.prog \.stages li\.now \.sdot::after\{content:none;animation:none;\}/, 'no pulse on the rail');
1718
+ assert.match(block, /\.doneHead \.tick\{display:none;\}/, 'the tick leaves; the rail says filed');
1719
+ assert.match(block, /\.addrBig code\{display:block;font-family:var\(--font-display\);/, 'the address stands in the display voice');
1720
+ assert.doesNotMatch(block, /linear-gradient/, 'no tinted plates');
1721
+ assert.doesNotMatch(block, /box-shadow:(?!none)/, 'no box shadow in the wizard block');
1722
+ assert.match(HUB, /<div class="nav">\s*<button type="button" class="btn ghost" data-back="5">← Back<\/button>\s*<button type="button" class="btn big" id="doCreate">Create my project<\/button>/, 'the review\'s doors sit on one row, back then the primary');
1723
+ assert.match(HUB, /<h2 class="stepsHead">Your steps — the parts only you can play<\/h2>/, 'the steps heading is the label face by class, not an inline style');
1724
+ // what is enqueued is unchanged (ADR 0111): the filing body the control plane reads
1725
+ assert.match(SCRIPT, /body: JSON\.stringify\(\{\s*slug: state\.slug,/, 'the filing still carries the slug first');
1726
+ assert.match(SCRIPT, /hosting_shape: 'standalone',/, 'the shape is unchanged');
1727
+ assert.match(SCRIPT, /target_ref: state\.owner \+ '\/' \+ state\.repo,/, 'the repo ref is unchanged');
1728
+ assert.match(SCRIPT, /onboard_mode: state\.mode === 'adopt' \? 'adopt' : 'greenfield'/, 'the onboard mode is unchanged');
1729
+ // the kit walks every step and files against the stub
1730
+ const states = JSON.parse(fs.readFileSync(path.join(ROOT, 'public-landing', 'projects.states.json'), 'utf8')).states;
1731
+ for (const s of ['type', 'about', 'home', 'address', 'review', 'done']) assert.ok(states['in-new-' + s], `the ${s} step has a kit state`);
1732
+ const probes = JSON.parse(fs.readFileSync(path.join(ROOT, 'public-landing', 'projects.probes.json'), 'utf8')).probes;
1733
+ assert.ok(probes.some((p) => /the wizard driver \(task 1003346\)/.test(p.name) && p.steps.some((st) => st[1] === '#doCreate')), 'the wizard driver files a project end to end');
1734
+ });