@justai/cuts 0.53.0 → 0.54.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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/src/Posts.astro +24 -9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@justai/cuts",
3
- "version": "0.53.0",
3
+ "version": "0.54.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": {
package/src/Posts.astro CHANGED
@@ -118,20 +118,35 @@ const vars = [
118
118
  margin-inline: -16px;
119
119
  border-radius: 0;
120
120
  cursor: pointer;
121
- transition: background 0.15s var(--ease-out);
121
+ transition: background 0.15s var(--ease-out), transform 0.15s var(--ease-out),
122
+ border-radius 0.15s var(--ease-out);
122
123
  }
123
- /* The card's own material, and all three ingredients of it rather than just the fill — because on dark
124
- `--card-bg` and `--surface` are THE SAME VALUE (#1c1c228c), so a fill alone would have been invisible
125
- against the column it sits in. The catalogue cards get away with it because their border, their blur and
126
- their shadow do the separating there; measured from tokens.css, not guessed.
124
+ /* THE FILL LIVES IN ITS OWN PROPERTY, and that is not tidiness — it is the difference between a hover and
125
+ no hover. A color-mix over a bare --card-bg (no fallback) written straight into `background` is an
126
+ INVALID declaration for a persona that never defined --card-bg, and an invalid declaration is dropped, so
127
+ those pages would answer the cursor with nothing at all. Here the fallback sits inside the mix, so the
128
+ value is always valid; the defaults mirror app.zone's own tokens per scheme.
129
+ (app.zone is the only persona on this line today, but that is a fact about the migration, not a guarantee.)
127
130
 
128
- The hairline is an INSET shadow rather than a border: a real border would add a pixel to the box on
129
- hover and nudge everything below it. */
131
+ 55% rather than the full card colour, and no hairline. The full-strength version was measured at 7
132
+ luminance steps of lift in light, and it read as a slab competing with the text — the inset hairline was
133
+ doing most of that. At 55% the lift is 4 in light and still 9 in dark, so it calms down where it was loud
134
+ without disappearing where it was already subtle. 35% was tried and rejected: 2 steps in dark, which on a
135
+ bright screen is nothing.
136
+
137
+ The radius and the scale are why it now invites rather than announces. They only exist on hover — at rest
138
+ the post has no box to round. */
130
139
  .post:hover {
131
- background: var(--card-bg, color-mix(in srgb, var(--text) 3.5%, transparent));
132
- box-shadow: inset 0 0 0 1px var(--border);
140
+ background: color-mix(in srgb, var(--card-bg, rgba(255, 255, 255, 0.06)) 55%, transparent);
133
141
  backdrop-filter: var(--card-blur, none);
134
142
  -webkit-backdrop-filter: var(--card-blur, none);
143
+ border-radius: 14px;
144
+ transform: scale(1.006);
145
+ }
146
+ /* The light default is white because that is what --card-bg is there; the dark default is a faint white
147
+ overlay because on dark --card-bg equals --surface, which is the column, so copying it would vanish. */
148
+ @media (prefers-color-scheme: light) {
149
+ .post:hover { background: color-mix(in srgb, var(--card-bg, #fff) 55%, transparent); }
135
150
  }
136
151
  .post + .post { border-block-start: 1px solid var(--border); }
137
152