@justai/cuts 0.82.0 → 0.84.0

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justai/cuts",
3
- "version": "0.82.0",
3
+ "version": "0.84.0",
4
4
  "description": "A persona's named parts — the page shell that holds them, and the cuts themselves.",
5
5
  "license": "UNLICENSED",
6
6
  "repository": {
@@ -110,9 +110,17 @@ interface Props {
110
110
  avatarPad?: string;
111
111
  /** The cover behind the profile. Defaults to the host persona's accent, which is the point. */
112
112
  cover?: string;
113
- /** The host persona's face, if the page already resolved it server-side. Otherwise `childFace()`
114
- * fills it in at runtime from /api/face — see @justai/core. */
113
+ /** queries: the child persona knows its host already · server-side face · feed accent
114
+ *
115
+ * THE HOST'S FACE WHEN THE PAGE ALREADY HAS IT. Two children fetch it in the browser because they
116
+ * are one static bundle mounted on every host; the feed RENDERS per host and already read the
117
+ * registry, so it knows before the first paint. Pass it and the accent is set server-side —
118
+ * no flash of the platform default, and `childFace()` has nothing to do.
119
+ * Leave it out and the runtime path applies, which is the ordinary case. */
115
120
  host?: { name?: string; avatar?: string; accent?: string };
121
+ /** Override the handle line. Defaults to `@<child>` — a child persona's own address. The feed says
122
+ * `qr.app.zone · feed` instead, because it is the FEED OF a host rather than a room inside it. */
123
+ handle?: string;
116
124
  /** Where the parent's kernel is. Defaults to the host root, which is where a visitor came from. */
117
125
  parentHref?: string;
118
126
  parentLabel?: string;
@@ -126,6 +134,7 @@ interface Props {
126
134
  }
127
135
  const {
128
136
  child, name, bio, meta, host,
137
+ handle,
129
138
  parentHref = "/#kernel", parentLabel = "Home",
130
139
  sectionsLabel = "Sections", profileLabel, kernelLabel, face = "page",
131
140
  avatarBg = "linear-gradient(160deg, #1f2740, #11141f)",
@@ -144,7 +153,7 @@ const chrome = face === "page";
144
153
  IT RENDERS THE COLUMN ITSELF. An earlier draft styled `.pp .app` and left the consumer to emit
145
154
  the element, which is precisely the homework law 1 forbids: a shell whose geometry only works if
146
155
  somebody remembers a class name is a template, not a component. */}
147
- <div class="pp" id="pp" data-child={child} data-face={face}>
156
+ <div class="pp" id="pp" data-child={child} data-face={face} style={host?.accent ? `--accent: ${host.accent}` : undefined}>
148
157
  <main class="app">
149
158
  {/* THE `sheet` FACE SHOWS NO PROFILE AND NO ROW. It is content inside somebody's chrome, and a
150
159
  biography there is the guest introducing itself while the host is mid-sentence. As a `page`
@@ -162,7 +171,7 @@ const chrome = face === "page";
162
171
  child's own words, correct if the lookup never returns. */}
163
172
  <Profile
164
173
  name={`<span id="pnName">${name}</span><span class="pro" id="pnFacet"></span>`}
165
- handle={`<span id="pnHandle">@${child}</span>`}
174
+ handle={`<span id="pnHandle">${handle ?? "@" + child}</span>`}
166
175
  bio={bio ? `<span id="pnBio">${bio}</span>` : undefined}
167
176
  meta={`<span id="pnMeta">${meta ?? ""}</span>`}
168
177
  kernelLabel={name}
@@ -187,6 +196,13 @@ const chrome = face === "page";
187
196
  <slot name="langPicker" slot="langPicker" />
188
197
  </Toolbar>
189
198
  <section class="cut kernel" id="kernel"><slot /></section>
199
+ {/* queries: where does the footer go · z-foot · content after the kernel
200
+ AFTER the kernel, still inside `.below`. The kernel is `min-height: 100dvh`, so anything
201
+ placed in its flow sits inside that screenful rather than below it — measured when
202
+ /files' footer was swept into the default slot and jumped 465px up the page. A named
203
+ slot is the difference between "after the kernel" and "at the end of the kernel", and
204
+ only the child knows which it meant. */}
205
+ <slot name="foot" />
190
206
  </div>
191
207
  </>
192
208
  ) : (