@justai/cuts 0.80.0 → 0.81.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.80.0",
3
+ "version": "0.81.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": {
@@ -127,45 +127,56 @@ const {
127
127
  const chrome = face === "page";
128
128
  ---
129
129
 
130
- {/* `.pp` IS the child persona. One wrapper, two situations — and `data-presented` is how the kernel
131
- inside asks which one it is in without re-deriving it from the URL. */}
132
- <div class="pp" id="pp" data-child={child} data-face={face}>
133
- {/* A PRESENTED CHILD SHOWS NO PROFILE AND NO ROW. It is content inside somebody's sheet, and a
134
- biography there is the guest introducing itself while the host is mid-sentence. Standalone it
135
- is a full persona page, because then it IS the page. */}
136
- {chrome && (
137
- <>
138
- <Profile
139
- name={name}
140
- handle={`@${child}`}
141
- bio={bio}
142
- meta={meta}
143
- kernelLabel={name}
144
- avatarBg="#fff"
145
- avatarPad="14px"
146
- cover="linear-gradient(135deg, color-mix(in srgb, var(--accent) 88%, #fff), var(--accent) 55%, color-mix(in srgb, var(--accent) 70%, #000))"
147
- >
148
- <Fragment slot="avatar"><slot name="mark" /></Fragment>
149
- </Profile>
130
+ {/* `.pp` IS the child persona — one wrapper, every face. `data-face` is how the kernel inside asks
131
+ which one it is in without re-deriving it from the URL.
150
132
 
151
- <div class="below" id="below">
152
- <Toolbar
153
- sectionsLabel={sectionsLabel}
154
- profileLabel={profileLabel ?? name}
155
- kernelLabel={kernelLabel ?? name}
156
- postsLabel="Posts"
157
- parent={{ href: parentHref, label: parentLabel, icon: host?.avatar }}
158
- files={false}
133
+ IT RENDERS THE COLUMN ITSELF. An earlier draft styled `.pp .app` and left the consumer to emit
134
+ the element, which is precisely the homework law 1 forbids: a shell whose geometry only works if
135
+ somebody remembers a class name is a template, not a component. */}
136
+ <div class="pp" id="pp" data-child={child} data-face={face}>
137
+ <main class="app">
138
+ {/* THE `sheet` FACE SHOWS NO PROFILE AND NO ROW. It is content inside somebody's chrome, and a
139
+ biography there is the guest introducing itself while the host is mid-sentence. As a `page`
140
+ it IS the page, so it wears the whole persona shape. */}
141
+ {chrome ? (
142
+ <>
143
+ <Profile
144
+ name={name}
145
+ handle={`@${child}`}
146
+ bio={bio}
147
+ meta={meta}
148
+ kernelLabel={name}
149
+ avatarBg="#fff"
150
+ avatarPad="14px"
151
+ cover="linear-gradient(135deg, color-mix(in srgb, var(--accent) 88%, #fff), var(--accent) 55%, color-mix(in srgb, var(--accent) 70%, #000))"
159
152
  >
160
- <Fragment slot="profileIcon"><slot name="mark" /></Fragment>
161
- <slot name="langPicker" slot="langPicker" />
162
- </Toolbar>
163
- <section class="cut kernel" id="kernel"><slot /></section>
164
- </div>
165
- </>
166
- )}
153
+ <Fragment slot="avatar"><slot name="mark" /></Fragment>
154
+ </Profile>
155
+
156
+ <div class="below" id="below">
157
+ <Toolbar
158
+ sectionsLabel={sectionsLabel}
159
+ profileLabel={profileLabel ?? name}
160
+ kernelLabel={kernelLabel ?? name}
161
+ postsLabel="Posts"
162
+ parent={{ href: parentHref, label: parentLabel, icon: host?.avatar }}
163
+ files={false}
164
+ >
165
+ <Fragment slot="profileIcon"><slot name="mark" /></Fragment>
166
+ <slot name="langPicker" slot="langPicker" />
167
+ </Toolbar>
168
+ <section class="cut kernel" id="kernel"><slot /></section>
169
+ </div>
170
+ </>
171
+ ) : (
172
+ <section class="cut kernel" id="kernel" data-guest><slot /></section>
173
+ )}
174
+ </main>
167
175
 
168
- {!chrome && <section class="cut kernel" id="kernel" data-guest><slot /></section>}
176
+ {/* Sheets, toasts, confirmations — inside `.pp` so they take the child's tokens, OUTSIDE `.app`
177
+ so the column does not clip or centre them. Every child has some; naming the slot is what
178
+ stops each one inventing a different place to put them. */}
179
+ <slot name="overlays" />
169
180
  </div>
170
181
 
171
182
  <style>