@apliteni/apliteni-ui 0.92.0 → 0.93.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 (54) hide show
  1. package/README.md +5 -7
  2. package/package.json +1 -1
  3. package/react/README.md +2 -2
  4. package/react/dist/index.d.ts +3 -3
  5. package/src/assets/icons.js +1 -1
  6. package/src/components/account-nav.js +2 -2
  7. package/src/components/back.js +2 -2
  8. package/src/components/command-palette.js +2 -2
  9. package/src/components/drawer.js +1 -1
  10. package/src/components/dropdown.js +12 -12
  11. package/src/components/filter-bar.js +2 -2
  12. package/src/components/footer.js +1 -1
  13. package/src/components/index.js +1 -1
  14. package/src/components/loading.js +1 -1
  15. package/src/components/shell.js +19 -19
  16. package/src/components/stat.js +3 -3
  17. package/src/components/success.js +3 -3
  18. package/src/components/tooltip.js +1 -1
  19. package/src/components/topbar.js +1 -1
  20. package/src/html.js +1 -1
  21. package/src/index.css +1 -1
  22. package/src/index.d.ts +1 -1
  23. package/src/logic/accents.js +1 -1
  24. package/src/logic/filter-bar.js +4 -4
  25. package/src/styles/back.css +3 -3
  26. package/src/styles/base.css +3 -3
  27. package/src/styles/button.css +3 -3
  28. package/src/styles/callout.css +2 -2
  29. package/src/styles/card.css +8 -8
  30. package/src/styles/command-palette.css +14 -14
  31. package/src/styles/confirm.css +7 -7
  32. package/src/styles/drawer.css +8 -8
  33. package/src/styles/dropdown.css +21 -21
  34. package/src/styles/feedback.css +2 -2
  35. package/src/styles/field-zoom.css +1 -1
  36. package/src/styles/file-drop.css +1 -1
  37. package/src/styles/filter-bar.css +6 -6
  38. package/src/styles/footer.css +1 -1
  39. package/src/styles/input.css +6 -6
  40. package/src/styles/layout.css +32 -32
  41. package/src/styles/loading.css +1 -1
  42. package/src/styles/motion.css +1 -1
  43. package/src/styles/nav.css +4 -4
  44. package/src/styles/pagination.css +2 -2
  45. package/src/styles/reduced-motion.css +2 -2
  46. package/src/styles/segmented.css +3 -3
  47. package/src/styles/stat.css +3 -3
  48. package/src/styles/success.css +1 -1
  49. package/src/styles/table.css +6 -6
  50. package/src/styles/tap-zone.css +1 -1
  51. package/src/styles/tooltip.css +3 -3
  52. package/src/styles/topbar.css +8 -8
  53. package/src/tokens/accents.css +1 -1
  54. package/src/tokens/tokens.css +25 -25
@@ -132,7 +132,7 @@
132
132
  /* The two-step edge and the drop, through the level's own names: in DARK that is
133
133
  --border-strong outside and --border one pixel inside it, then the drop; in LIGHT
134
134
  both lines are transparent and the drop carries the whole separation.
135
- why: docs/specification.md#elevation */
135
+ why: docs/foundations.md#elevation */
136
136
  border: 1px solid var(--float-edge);
137
137
  box-shadow: inset 0 0 0 1px var(--elev-edge, var(--float-edge-inner)), var(--elev-drop);
138
138
  border-radius: 16px;
@@ -141,7 +141,7 @@
141
141
  visibility: hidden;
142
142
  /* Drawn for the whole of the fade out, so the rows do not vanish mid-fade — and a box
143
143
  that is drawn is a box that is hit. The open rule takes this back.
144
- why: docs/specification.md#the-dropdown-panel */
144
+ why: docs/components.md#the-dropdown-panel */
145
145
  pointer-events: none;
146
146
  transform: translateY(-6px);
147
147
  /* Named properties, not the bare shorthand: `transition: 0.18s` is `all`, and `all`
@@ -159,7 +159,7 @@
159
159
  open transition, because the frame the open class lands is the frame the wiring moves
160
160
  focus onto a row in and a browser will not focus inside a hidden box; and
161
161
  `pointer-events` back on, because the closed rule turned it off.
162
- why: docs/specification.md#the-dropdown-panel */
162
+ why: docs/components.md#the-dropdown-panel */
163
163
  .vsw.open .vsw__menu {
164
164
  opacity: 1;
165
165
  visibility: visible;
@@ -189,7 +189,7 @@
189
189
  }
190
190
  /* Menu rows use the reading surface and an edge on hover — see
191
191
  src/styles/dropdown.css:176 `.ui-dropdown__item:hover`.
192
- why: docs/specification.md#elevation */
192
+ why: docs/foundations.md#elevation */
193
193
  .vopt:hover { outline: 1px solid var(--control-edge); outline-offset: -1px; background: var(--surface); /* ring-gap: inherit — control paint; its focus indicator uses the containing surface. */ }
194
194
  /* The row is a keyboard stop: src/components/dropdown.js:804
195
195
  `items[next < 0 ? 0 : next]?.focus()` moves focus onto a `[data-dd-item]` with
@@ -210,7 +210,7 @@
210
210
  }
211
211
  .vbadge.live { color: var(--chip-success-ink); background: var(--chip-success-fill); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
212
212
  .vbadge.arch { /* muted-ink: state — archived version */ color: var(--muted); background: var(--surface); /* ring-gap: inherit — decorative or text-only surface has no nested focus target. */ }
213
- /* The phone step — the same one the rail folds at: docs/specification.md#breakpoints.
213
+ /* The phone step — the same one the rail folds at: docs/foundations.md#breakpoints.
214
214
  The switcher keeps its glyph and drops its label.
215
215
  The menu hangs the other way here. Anchored by its left edge it opened
216
216
  rightwards off a band that is as wide as the page, and a CLOSED menu is still
@@ -231,7 +231,7 @@
231
231
  area. Packed to --space-2 the band needs 352 of the 362 it has there, so the
232
232
  avatar is whole with the band's own gutter beside it. 320 is still short of the
233
233
  room these controls want, which stays #558.
234
- why: docs/specification.md#breakpoints */
234
+ why: docs/foundations.md#breakpoints */
235
235
  @media (max-width: 560px) {
236
236
  .topbar__in { gap: var(--space-2); }
237
237
  }
@@ -265,14 +265,14 @@
265
265
  /* The two-step edge and the drop, through the level's own names: in DARK that is
266
266
  --border-strong outside and --border one pixel inside it, then the drop; in LIGHT
267
267
  both lines are transparent and the drop carries the whole separation.
268
- why: docs/specification.md#elevation */
268
+ why: docs/foundations.md#elevation */
269
269
  border: 1px solid var(--float-edge);
270
270
  box-shadow: inset 0 0 0 1px var(--elev-edge, var(--float-edge-inner)), var(--elev-drop);
271
271
  border-radius: 14px;
272
272
  /* No clip. The rows reach this panel's edges, and the ring a focused row draws reaches
273
273
  3px past itself; `overflow: hidden` here cut that down to the one pixel of border it
274
274
  had, and the reader met two accent bars instead of a ring. The ring crosses the edge
275
- now. #519 why: docs/specification.md#a-menu-panel-does-not-cut-off-its-rows-ring */
275
+ now. #519 why: docs/components.md#a-menu-panel-does-not-cut-off-its-rows-ring */
276
276
  opacity: 0;
277
277
  visibility: hidden;
278
278
  pointer-events: none; /* see .vsw__menu above */
@@ -25,7 +25,7 @@
25
25
  * property to one half of a pair and not the other is what breaks that, and
26
26
  * stories/accent-without-theme.test.js is the gate that says so.
27
27
  *
28
- * why: docs/specification.md#the-focus-ring */
28
+ * why: docs/foundations.md#the-focus-ring */
29
29
 
30
30
  /* ---- Phoenix — ember / rising fire (the strategy's namesake) ------------- */
31
31
  :root[data-accent="phoenix"],
@@ -38,7 +38,7 @@
38
38
  /* -- Measure ------------------------------------------------------------
39
39
  * --container is the page, gutter to gutter; --measure is the reading column
40
40
  * INSIDE a track, beside a sidebar. Different axes, never interchangeable.
41
- * why: docs/specification.md#widths */
41
+ * why: docs/foundations.md#widths */
42
42
  --container: 1120px;
43
43
  --measure: 860px;
44
44
 
@@ -50,7 +50,7 @@
50
50
  * smears, worst of all in Cyrillic, which is where the kit spends most of its
51
51
  * pixels. IBM Plex Sans is humanist and narrower, and its Cyrillic was drawn
52
52
  * by the same team as its Latin.
53
- * why: docs/specification.md#typefaces */
53
+ * why: docs/foundations.md#typefaces */
54
54
  --font-display: 'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
55
55
  --font-sans: 'IBM Plex Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
56
56
  --font-mono: ui-monospace, 'SF Mono', Menlo, Consolas, monospace;
@@ -136,7 +136,7 @@
136
136
  /* The elevation ladder, bottom to top. A surface says how high it is with its step
137
137
  and, IN DARK, with the hairline around it; --muted caps how far the ladder can go.
138
138
  Nothing casts in dark below the floating step, and the floating step adds
139
- --elev-drop under its inner line. why: docs/specification.md#elevation */
139
+ --elev-drop under its inner line. why: docs/foundations.md#elevation */
140
140
  --bg: #0e0d14;
141
141
  --table-bg: var(--bg);
142
142
  /* A dark table is flush with the page, so the reading surface an inline code chip has
@@ -163,20 +163,20 @@
163
163
  /* WHICH EDGE EACH LEVEL DRAWS. One name per level, so a sheet never has to ask
164
164
  which theme it is in. Dark answers all four with the hairline, because a drop
165
165
  on a near-black page reaches 1.20 at its core and has nowhere else to go —
166
- light answers them with the drop instead. why: docs/specification.md#elevation */
166
+ light answers them with the drop instead. why: docs/foundations.md#elevation */
167
167
  --card-edge: var(--border); /* a card */
168
168
  --rail-edge: var(--border); /* the shell's rail */
169
169
  --float-edge: var(--border-strong); /* a floating surface, outer line */
170
170
  --float-edge-inner: var(--border); /* a floating surface, inner line */
171
171
 
172
- /* Fields use the card surface and an edge in both themes. why: docs/specification.md#elevation */
172
+ /* Fields use the card surface and an edge in both themes. why: docs/foundations.md#elevation */
173
173
  --field-bg: var(--surface);
174
174
  --field-edge: var(--border);
175
175
  --field-edge-hover: var(--border-strong);
176
176
  --control-edge: var(--border);
177
177
 
178
178
  /* How much of its own colour a tinted card mixes in. Dark mixes upward off a mid-grey
179
- card, so it can afford this much. why: docs/specification.md#elevation */
179
+ card, so it can afford this much. why: docs/foundations.md#elevation */
180
180
  --card-tint: 9%;
181
181
 
182
182
  --text: #e9e7f0;
@@ -184,31 +184,31 @@
184
184
  --dim: #c6c2d6;
185
185
  /* Picked against the TOP of the ladder above, not against the page: #948fa8 cleared the
186
186
  two floating steps by hundredths. Same violet-grey, fourteen steps up every channel.
187
- why: docs/specification.md#elevation */
187
+ why: docs/foundations.md#elevation */
188
188
  --muted: #a29db6;
189
189
 
190
190
  /* The paint of a control that is off. NOT an opacity: `opacity` is a group property,
191
191
  so it fades label and box toward the ground TOGETHER — a disabled primary button
192
192
  measured 1.48:1 that way. These three are aliases that composite predictably, the
193
193
  ink read on the surface beside it. Held by guidelines/accessibility-floor.test.js.
194
- why: docs/specification.md#colour-and-contrast */
194
+ why: docs/foundations.md#colour-and-contrast */
195
195
  --disabled-ink: var(--muted);
196
196
  --disabled-surface: var(--surface);
197
197
  /* One rung below the hairline, so an off box is not the live box with quieter words
198
198
  in it: dark answered both with --border. 1.16:1 on the card against the live
199
199
  1.27:1, and as far down as the headroom goes. #564
200
- why: docs/specification.md#colour-and-contrast */
200
+ why: docs/foundations.md#colour-and-contrast */
201
201
  --disabled-border: var(--surface-3);
202
202
  /* The ink of a disabled control that paints no box of its own — a ghost button. With
203
203
  no surface beside it, it is read on whatever is behind it, so it is set to clear the
204
204
  floor on the dullest ground there is (--surface-3). #273
205
- why: docs/specification.md#colour-and-contrast */
205
+ why: docs/foundations.md#colour-and-contrast */
206
206
  --disabled-ink-bare: #a39eb7;
207
207
 
208
208
  /* Lifted from #9b5dff, which cleared the flat surfaces and failed on its own wash over
209
209
  a card; the value was already in the ramp. --ring-color is var(--accent) and follows by
210
210
  reference. Held by stories/accent-contrast.test.js. #157.
211
- why: docs/specification.md#colour-and-contrast */
211
+ why: docs/foundations.md#colour-and-contrast */
212
212
  --accent: #b479ff;
213
213
  --accent-strong: #7c3aed; /* button bg — white text clears WCAG AA at 5.70:1 */
214
214
  --accent-contrast: #ffffff;
@@ -216,7 +216,7 @@
216
216
  /* Ink that reads on a SIGNAL colour once that colour becomes a fill — the glyph in a
217
217
  success circle, or on a toast's status circle. One near-black ink clears all five in
218
218
  dark; danger keeps its own token because LIGHT still needs one.
219
- why: docs/specification.md#colour-and-contrast */
219
+ why: docs/foundations.md#colour-and-contrast */
220
220
  --signal-contrast: #0c0c0c;
221
221
  --danger-contrast: var(--signal-contrast);
222
222
 
@@ -257,13 +257,13 @@
257
257
  A transparent shadow, not `none`, because these are read in a LIST. The kit's own
258
258
  pre-0.32 pattern was `box-shadow: var(--shadow-lg), var(--ring)`, and `none` is only
259
259
  valid alone — it makes the whole declaration invalid, which silently takes the focus
260
- ring with it. `0 0 #0000` composes. why: docs/specification.md#elevation */
260
+ ring with it. `0 0 #0000` composes. why: docs/foundations.md#elevation */
261
261
  --shadow-sm: 0 0 #0000;
262
262
  --shadow-md: 0 0 #0000;
263
263
  --shadow-lg: 0 0 #0000;
264
264
  --shadow-seg: 0 0 #0000;
265
265
  --shadow-card: 0 0 #0000;
266
- /* G2: the band carries contrast; the halo decorates it. why: docs/specification.md#the-focus-ring */
266
+ /* G2: the band carries contrast; the halo decorates it. why: docs/foundations.md#the-focus-ring */
267
267
  --ring-width: 2px;
268
268
  --ring-color: var(--accent);
269
269
  --ring-gap-width: 1px;
@@ -273,7 +273,7 @@
273
273
  no halo. An OUTLINE, because an inset shadow is painted under the box's own
274
274
  children and a table scrolled under one erases it. The gap is left unpainted, so
275
275
  neither half reads --ring-gap and neither is recomposed per surface. Chosen by
276
- Artur on #531 round r30. why: docs/specification.md#the-focus-ring */
276
+ Artur on #531 round r30. why: docs/foundations.md#the-focus-ring */
277
277
  --ring-scroll: var(--ring-width) solid var(--ring-color);
278
278
  --ring-scroll-offset: calc(-1 * (var(--ring-gap-width) + var(--ring-width)));
279
279
 
@@ -289,7 +289,7 @@
289
289
  nothing below could re-point it. A floating surface writes the pair itself:
290
290
  box-shadow: inset 0 0 0 1px var(--elev-edge, var(--float-edge-inner)), var(--elev-drop);
291
291
  Dark spends 62% / 50% of the ink and reaches 1.20 at the drop's core, having
292
- nowhere to go on a near-black page. why: docs/specification.md#elevation */
292
+ nowhere to go on a near-black page. why: docs/foundations.md#elevation */
293
293
  --elev-drop:
294
294
  0 14px 30px -12px color-mix(in srgb, var(--shadow-ink) 62%, transparent),
295
295
  0 3px 9px -4px color-mix(in srgb, var(--shadow-ink) 50%, transparent);
@@ -297,7 +297,7 @@
297
297
  /* The ladder's two resting rungs, which only light climbs. Transparent here and
298
298
  not `none`, for the reason the deprecated --shadow-* tokens are: these are read
299
299
  in a layer list, and `none` is valid only alone — it would invalidate the whole
300
- declaration and take the focus ring with it. why: docs/specification.md#elevation */
300
+ declaration and take the focus ring with it. why: docs/foundations.md#elevation */
301
301
  --elev-rest: 0 0 #0000; /* a card */
302
302
  --elev-rail: 0 0 #0000; /* the shell's rail, cast sideways */
303
303
 
@@ -337,7 +337,7 @@
337
337
  blue than the one it replaces. Light spends its white on the surface you read
338
338
  ON, and separates the panel that floats over it by role — its two-step edge and
339
339
  its drop — rather than by a rung it has nothing left to pay for. See issue #448.
340
- why: docs/specification.md#elevation */
340
+ why: docs/foundations.md#elevation */
341
341
  --bg: #f2f3f6;
342
342
  --table-bg: #ffffff;
343
343
  --table-code-bg: var(--bg);
@@ -356,7 +356,7 @@
356
356
  the reference he supplied. A line divides two regions of ONE surface (a card's
357
357
  rows, a table's rules, the rail's head band, the topbar); a drop says a surface
358
358
  is HIGHER, and only a higher surface may cast one.
359
- why: docs/specification.md#elevation */
359
+ why: docs/foundations.md#elevation */
360
360
  --card-edge: transparent;
361
361
  --rail-edge: transparent;
362
362
  --float-edge: transparent;
@@ -364,14 +364,14 @@
364
364
 
365
365
  /* Light draws a field with its EDGE, because since #448 it has no well left to draw it
366
366
  with: a card and a panel are both white, the sunken step falls two rungs under either,
367
- and --border on it measures 1.047:1. why: docs/specification.md#elevation */
367
+ and --border on it measures 1.047:1. why: docs/foundations.md#elevation */
368
368
  --field-bg: var(--surface);
369
369
  --field-edge: var(--border-strong);
370
370
  --field-edge-hover: var(--muted);
371
371
  --control-edge: var(--border-strong);
372
372
 
373
373
  /* Light mixes DOWN from white, so tint costs lightness: 5% is the most a card can spend
374
- and stay above the page. why: docs/specification.md#elevation */
374
+ and stay above the page. why: docs/foundations.md#elevation */
375
375
  --card-tint: 5%;
376
376
 
377
377
  --text: #1a1e27;
@@ -446,7 +446,7 @@
446
446
  and held in by a negative spread. None is a glow — a glow is a zero-offset layer of
447
447
  the signal's own colour. A level with no line casts a rung that reaches on every
448
448
  side it exposes, which is why the wide layer's offset stays under half its blur.
449
- why: docs/specification.md#elevation */
449
+ why: docs/foundations.md#elevation */
450
450
  --elev-rest:
451
451
  0 2px 26px -3px color-mix(in srgb, var(--shadow-ink) 9%, transparent),
452
452
  0 1px 3px -1px color-mix(in srgb, var(--shadow-ink) 7%, transparent);
@@ -471,7 +471,7 @@
471
471
  * a box that holds a LINE -> --prose-* (ch)
472
472
  *
473
473
  * Both are theme-invariant, so they sit outside the palette blocks.
474
- * why: docs/specification.md#boxes-below-the-page
474
+ * why: docs/foundations.md#boxes-below-the-page
475
475
  * ========================================================================== */
476
476
  :root {
477
477
  /* -- Panel widths -------------------------------------------------------
@@ -502,14 +502,14 @@
502
502
  * substituted on the element that DECLARES it — so the painted container hands it the one
503
503
  * it is not using itself, and the chip keeps a step wherever it is written. The page hands
504
504
  * over the card below; every painted container hands over the page, in the recipe under it.
505
- * Held by stories/code-chip.test.js. why: docs/specification.md#elevation */
505
+ * Held by stories/code-chip.test.js. why: docs/foundations.md#elevation */
506
506
  :root { --code-bg: var(--surface); }
507
507
 
508
508
  /* Recompose only at painted containers; controls inherit the outside gap, and each hands an
509
509
  * inline code chip the page. One recipe keeps surface propagation cheap and consistent.
510
510
  * .ui-code composes its own ring in src/styles/code.css instead of joining this list: a
511
511
  * chip cannot both paint --code-bg and re-point it, and its gap has to be the surface it
512
- * actually paints. why: docs/specification.md#the-focus-ring */
512
+ * actually paints. why: docs/foundations.md#the-focus-ring */
513
513
  .amenu,
514
514
  .dtsw,
515
515
  .rx-modal,