@bongos/core 1.19.469 → 1.19.471

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.
@@ -1,93 +1,74 @@
1
- /* modules.css — Page-local styles for the Modules page.
2
- Lifted verbatim out of the page's inline <style> block (task 1002176);
3
- the ?v= cache-bust is stamped automatically from this file's content hash
4
- at boot (src/asset-version.js). */
1
+ /* modules.css — what a MODULE row has that no other oversight row does (task
2
+ 1003472, goal 1000081). The panel, the filter bar, the figure band, the group
3
+ heads, the row, the toggle and the foot line are all the shell's or the
4
+ family's (oversight.css); this sheet adds the clamped description, the
5
+ per-row details disclosure and the lines it opens onto.
5
6
 
6
- /* Page-local styles for Modules, layered on the shared design tokens
7
- (style.css) — same pattern as settings.html's page-local block. */
8
- .mod-grid {
9
- display: grid;
10
- grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
11
- gap: 14px;
12
- margin-top: 10px;
13
- }
14
- .mod-card {
15
- border: var(--line) solid var(--rule-soft);
16
- border-radius: var(--radius-sm);
17
- background: var(--bg-card);
18
- padding: 14px 16px;
7
+ ROWS, NOT CARDS — the call task 1003472 asked for. Modules was the one hall
8
+ page already rendering its record's description, so a card looked like the
9
+ case where prose earns a box. Rendered against the real catalog it is the
10
+ opposite: the descriptions run from 120 to 1,200 characters, so the 280px
11
+ auto-fill grid stood a 500px card beside a 120px one, the toggle (the row's
12
+ one control) sat at a different height in every column, and a builder
13
+ scanning for a NAME and a STATE read paragraphs to find either. A row puts
14
+ every title on one x, every switch on another, clamps the prose to two lines
15
+ and opens the rest on request. The card grammar (.mod-grid/.mod-card), the
16
+ boxed .mod-browse field and the .mod-chip alias are gone. */
17
+
18
+ /* The filter bar closes on a hairline, the goals panel's rule: the count and
19
+ the figures under it read as the panel's content, not as more controls. */
20
+ #mod-filters { margin: 0 0 12px; padding: 0 0 6px; border-bottom: var(--line) solid var(--rule-soft); }
21
+ #mod-filters .filters { margin-bottom: 10px; }
22
+ .mod-count { margin: 0 0 14px; font-family: var(--font-mono); font-size: 12.5px; font-variant-numeric: tabular-nums; color: var(--ink-faint); }
23
+ .mod-count:empty { display: none; }
24
+
25
+ /* One group after another: the second head carries the family's air above it,
26
+ and the first row after a head starts flush (oversight.css draws the rule). */
27
+ .mod-panel .ov-group + .ov-group { margin-top: var(--sp-md); }
28
+ .mod-loading { padding: 10px 0; font-size: 13.5px; color: var(--ink-soft); }
29
+
30
+ /* The description is the sub line, clamped to two lines of the measure so
31
+ twenty rows scan as twenty rows. The details disclosure under it opens the
32
+ rest; while it is open the clamp lifts, so the prose is never shown twice. */
33
+ .mod-row__desc {
34
+ display: -webkit-box;
35
+ -webkit-box-orient: vertical;
36
+ -webkit-line-clamp: 2;
37
+ overflow: hidden;
19
38
  }
20
- .mod-card__head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
21
- .mod-card__title { font-weight: 650; font-size: 14.5px; color: var(--ink); }
22
- .mod-card__key { font-size: 12px; color: var(--ink-faint); font-family: var(--font-mono); }
23
- .mod-card__desc { font-size: 13px; color: var(--ink-soft); margin: 8px 0; }
24
- .mod-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 8px 0; }
25
- /* Base: the shell's .fact-pill (task 1003307).
26
- One override, and it is the reason the pill is not simply reused as-is: the
27
- archetype's chip holds a short machine word (a module key, a version id) and
28
- is nowrap, but THIS page's chips hold prose: "by <author>", "from <origin>",
29
- "upkeep: undeclared". Inheriting nowrap put a single 559px chip on a 320px
30
- viewport. A chip that carries a sentence wraps. */
31
- .mod-chip { white-space: normal; }
32
- .mod-chip--core { color: var(--info); }
33
- .mod-chip--own { color: var(--accent-ink); }
34
- .mod-card__actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
35
- button.mod-toggle {
36
- font-family: var(--font-body);
39
+ .mod-row:has(.mod-more[open]) .mod-row__desc { display: block; -webkit-line-clamp: unset; overflow: visible; }
40
+
41
+ /* The disclosure is a text control in a 13px facts line: inline-block with the
42
+ family's padding trick so it clears the 24px floor on both axes. No marker
43
+ — the word says what it does, and the open state says so too. */
44
+ .mod-more { margin: 8px 0 0; }
45
+ .mod-more > summary {
46
+ display: inline-block;
47
+ list-style: none;
48
+ min-height: 24px;
49
+ min-width: 24px;
50
+ padding: 3px 4px;
51
+ margin: -3px -4px;
52
+ line-height: 18px;
37
53
  font-size: 12.5px;
38
- font-weight: 600;
39
- padding: 5px 16px;
40
- min-width: 78px;
41
- border-radius: var(--radius-pill);
42
- border: var(--line) solid var(--rule);
43
- background: var(--bg-card);
44
- color: var(--ink-soft);
54
+ color: var(--accent-ink);
45
55
  cursor: pointer;
46
56
  }
47
- button.mod-toggle[data-on="1"] { background: var(--accent); border-color: var(--accent); color: var(--accent-on); }
48
- button.mod-toggle:disabled { opacity: 0.5; cursor: default; }
49
- button.mod-submit {
50
- font-family: var(--font-body);
51
- font-size: 12px;
52
- font-weight: 600;
53
- padding: 5px 12px;
54
- border-radius: var(--radius-sm);
55
- border: var(--line) solid var(--rule);
56
- background: transparent;
57
- color: var(--ink-soft);
58
- cursor: pointer;
59
- }
60
- button.mod-submit:disabled { opacity: 0.45; cursor: not-allowed; }
61
- /* Italic was this sheet's alone — nothing else in the hall sets it, and an
62
- empty state is a plain statement, not an aside (task 1003307). */
63
- .mod-empty { color: var(--ink-faint); font-size: 13px; padding: 10px 0; }
64
- .mod-note { font-size: 12px; color: var(--ink-faint); margin-top: 4px; }
57
+ .mod-more > summary::-webkit-details-marker { display: none; }
58
+ .mod-more > summary:hover { text-decoration: underline; text-underline-offset: 3px; }
59
+ .mod-more > summary::before { content: "details"; }
60
+ .mod-more[open] > summary::before { content: "fewer details"; }
61
+ /* The lines the disclosure opens onto are the family's key/value lines; the
62
+ list of what a module contributes wraps as chips on its own line. */
63
+ .mod-more .ov-lines { margin-top: 8px; }
64
+ .mod-more .ov-lines .ov-lines__v { text-align: left; margin-left: 0; }
65
+ .mod-more .ov-lines .ov-lines__v .fact-chip { margin: 0 6px 4px 0; }
65
66
 
66
- /* Catalog browse bar (task 1001772) — one filter over both grids. */
67
- .mod-browse { margin: 0 0 16px; }
68
- .mod-browse__label {
69
- display: block;
70
- font-size: 12px;
71
- font-weight: 600;
72
- color: var(--ink-soft);
73
- margin-bottom: 6px;
74
- }
75
- .mod-browse__input {
76
- font-family: var(--font-body);
77
- font-size: 13.5px;
78
- width: 100%;
79
- max-width: 420px;
80
- padding: 8px 12px;
81
- border-radius: var(--radius-sm);
82
- border: var(--line) solid var(--rule);
83
- background: var(--bg-card);
84
- color: var(--ink);
85
- }
86
67
  /* The marker on an inferred credit — quiet, but hoverable for the reason. */
87
- .mod-inferred {
88
- border: 0;
89
- text-decoration: none;
90
- cursor: help;
91
- color: var(--ink-faint);
92
- margin-left: 1px;
93
- }
68
+ .mod-inferred { border: 0; text-decoration: none; cursor: help; color: var(--ink-faint); margin-left: 1px; }
69
+
70
+ /* The right column holds the switch and, on a module built here, the submit
71
+ door under it. The switch is the family's grant toggle: enabled reads in ink,
72
+ disabled in the faint ink, the accent only on hover. A viewer below the floor
73
+ sees the state as a pill, not a dead control. */
74
+ .mod-row__right .btn-ghost { white-space: nowrap; }
@@ -9,6 +9,10 @@
9
9
  <link rel="preconnect" href="https://fonts.googleapis.com">
10
10
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
11
  <link rel="stylesheet" href="/builders/style.css?v=2026-07-02-shell1">
12
+ <!-- task 1003472: the catalog rides the oversight family's row (a titled row
13
+ with facts and one action on the right), so the family sheet loads first
14
+ and modules.css holds only what a module row has that no other row does. -->
15
+ <link rel="stylesheet" href="/builders/oversight.css">
12
16
  <link rel="stylesheet" href="/builders/modules.css">
13
17
  </head>
14
18
  <body data-page="modules" data-page-title="Modules">
@@ -19,48 +23,53 @@
19
23
  <div class="app-body">
20
24
  <header class="app-topbar" id="app-topbar"></header>
21
25
  <div class="app-content">
22
- <!-- task 1003307: the board page head. Modules shipped with NO <h1> at all
23
- (one-header-main-h1 measured 0 on every render), so the re-skin
24
- carries the structural fix rather than porting the hole. The heading
25
- is the LABEL voice, not a display line: on a working surface the
26
- page's own name is the least interesting thing on it. -->
26
+ <!-- The board page head (task 1003307): the label voice, because on a
27
+ working surface the page's own name is the least interesting thing on
28
+ it. The sub says what the page IS; the numbers moved into the panel's
29
+ figure band (task 1003472), where a number belongs. -->
27
30
  <div class="page-head page-head--board">
28
31
  <h1 class="page-head__h">Modules</h1>
29
- <p class="page-head__sub" id="modules-sub">Loading modules…</p>
32
+ <p class="page-head__sub" id="modules-sub">Everything this instance can run: what the core ships, what this project built, and who keeps each one true as the core advances.</p>
30
33
  </div>
31
34
 
32
35
  <main id="hall-main">
33
- <!-- Browse — one filter over both grids below (task 1001772). -->
34
- <div class="mod-browse">
35
- <label class="mod-browse__label" for="mod-search">Search the catalog</label>
36
- <input type="search" id="mod-search" class="mod-browse__input" autocomplete="off"
37
- placeholder="name, author, origin project, or licence…">
38
- <p class="mod-note" id="mod-browse-count" role="status" aria-live="polite"></p>
39
- </div>
40
-
41
- <!-- The catalog — every module the CORE ships, which this instance can
42
- opt into (ADR 0107 §6: accepted modules land default-off). Each row
43
- carries its author + origin credit (§2/§3: credit now, money later). -->
44
- <section class="scroll" id="core-scroll" aria-labelledby="core-h">
36
+ <!-- task 1003472: ONE panel. The search and the state lens sit on a
37
+ hairline at the top, the figure band under them, then two runs of
38
+ rows under group heads — shipped with the core, built by this
39
+ project. Before this the page was a boxed search on the ground over
40
+ three panels, the middle two holding 280px card grids whose height
41
+ varied tenfold with the description, so the one control per record
42
+ (the toggle) landed at a different height on every card. A record
43
+ carrying this many facts is a row (docs/design/hall-direction-v2.md
44
+ section 6; the archetype at docs/design/mocks/hall/goals/v3.html). -->
45
+ <section class="scroll mod-panel" id="core-scroll" aria-labelledby="core-h">
45
46
  <h2 id="core-h" class="scroll__h">Module catalog</h2>
46
- <p class="scroll__lede">Modules the Cloud Bongos core ships — the shared repository built by its sub-projects, each credited to its author and the project it came from. Enable the ones you want; Metic+ can flip the switch, everyone can see the state.</p>
47
- <div class="mod-grid" id="core-grid"><div class="mod-empty">Loading…</div></div>
48
- </section>
47
+ <p class="scroll__lede">The shared repository the core ships and the modules this project built for itself, each credited to its author and the project it came from. Everyone can see the state; the switch is rank-gated.</p>
48
+ <div id="mod-filters"></div>
49
+ <p class="mod-count" id="mod-count" role="status" aria-live="polite"></p>
50
+ <div class="ov-figs" id="mod-figs" aria-label="Catalog at a glance"></div>
49
51
 
50
- <!-- This instance's own modules — the pool `bongos module submit` draws
51
- from. Separate from the catalog because these ship from this repo,
52
- not from the core package. -->
53
- <section class="scroll" id="own-scroll" aria-labelledby="own-h">
54
- <h2 id="own-h" class="scroll__h">Built by this project</h2>
55
- <p class="scroll__lede">Modules that live in this instance's own repo rather than arriving with the core. Submit one upstream below to offer it to every other instance.</p>
56
- <div class="mod-grid" id="own-grid"><div class="mod-empty">None on disk.</div></div>
57
- </section>
52
+ <!-- Shipped with the core — the catalog this instance opts into
53
+ (ADR 0107 §6: accepted modules land default-off). -->
54
+ <div class="ov-group" id="core-group">
55
+ <div class="ov-group__head">
56
+ <span class="ov-group__name">Shipped with the core</span>
57
+ <span class="ov-group__n" id="core-n"></span>
58
+ </div>
59
+ <ul class="ov-rows" id="core-grid"><li class="mod-loading">Loading the catalog…</li></ul>
60
+ </div>
58
61
 
59
- <!-- Submit for review — the front door to bongos module submit (ADR 0107 §1/§9). -->
60
- <section class="scroll" id="submit-scroll" aria-labelledby="submit-h">
61
- <h2 id="submit-h" class="scroll__h">Contribute a module upstream</h2>
62
- <p class="scroll__lede" id="submit-lede">Submit one of this project's own modules for review, so it can join the shared Cloud Bongos catalog with your name and this project credited.</p>
63
- <p class="settings-status" id="submit-status" role="status" aria-live="polite"></p>
62
+ <!-- Built by this project — the pool `bongos module submit` draws from
63
+ (ADR 0107 §1/§9). The submit door is on the row, beside the module
64
+ it files, so the third panel this page used to carry is gone. -->
65
+ <div class="ov-group" id="own-group">
66
+ <div class="ov-group__head">
67
+ <span class="ov-group__name">Built by this project</span>
68
+ <span class="ov-group__n" id="own-n"></span>
69
+ </div>
70
+ <ul class="ov-rows" id="own-grid"></ul>
71
+ <p class="ov-foot" id="submit-lede">A module built here can be submitted upstream for review, so it can join the shared catalog with your name and this project credited.</p>
72
+ </div>
64
73
  </section>
65
74
  </main>
66
75
 
@@ -75,6 +84,8 @@
75
84
  <!-- jump palette (Ctrl/Cmd-K). Optional by design: without it the shell's slot stays hidden. -->
76
85
  <script src="/builders/palette.js" defer></script>
77
86
  <script src="/builders/dom-utils.js?v=2026-06-23-contrib"></script>
78
- <script src="/builders/modules.js?v=2026-08-12-catalog"></script>
87
+ <script src="/builders/brand-apply.js"></script>
88
+ <script src="/builders/hall-kit.js"></script>
89
+ <script src="/builders/modules.js?v=2026-09-02-rows"></script>
79
90
  </body>
80
91
  </html>