mevebu 1.4.0 → 1.4.1

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.
@@ -264,7 +264,7 @@ function footer() {
264
264
  el(
265
265
  "div",
266
266
  {},
267
- el("h4", { class: "m-0 mb-2.5 text-2xs font-bold tracking-[0.08em] text-ink-3 uppercase" }, title),
267
+ el("h4", { class: "mb-2.5 text-2xs font-bold tracking-[0.08em] text-ink-3 uppercase" }, title),
268
268
  el("ul", { class: "m-0 grid list-none gap-1.5 p-0" }, ...links.map((link) => el("li", {}, link)))
269
269
  );
270
270
 
@@ -1579,6 +1579,18 @@
1579
1579
  }
1580
1580
  }
1581
1581
  @media (width >= 60rem) {
1582
+ .min-\[60rem\]\:sticky {
1583
+ position: sticky;
1584
+ }
1585
+ .min-\[60rem\]\:top-\[var\(--stick\)\] {
1586
+ top: var(--stick);
1587
+ }
1588
+ .min-\[60rem\]\:-mx-1 {
1589
+ margin-inline: calc(var(--spacing) * -1);
1590
+ }
1591
+ .min-\[60rem\]\:max-h-\[var\(--stick-max\)\] {
1592
+ max-height: var(--stick-max);
1593
+ }
1582
1594
  .min-\[60rem\]\:grid-cols-\[minmax\(0\,1fr\)_auto\] {
1583
1595
  grid-template-columns: minmax(0,1fr) auto;
1584
1596
  }
@@ -1588,6 +1600,15 @@
1588
1600
  .min-\[60rem\]\:gap-6 {
1589
1601
  gap: calc(var(--spacing) * 6);
1590
1602
  }
1603
+ .min-\[60rem\]\:overflow-y-auto {
1604
+ overflow-y: auto;
1605
+ }
1606
+ .min-\[60rem\]\:overscroll-contain {
1607
+ overscroll-behavior: contain;
1608
+ }
1609
+ .min-\[60rem\]\:px-1 {
1610
+ padding-inline: var(--spacing);
1611
+ }
1591
1612
  }
1592
1613
  @media (width >= 64rem) {
1593
1614
  .lg\:grid-cols-3 {
@@ -1955,6 +1976,8 @@
1955
1976
  --ctl: 40px;
1956
1977
  --card-pad: clamp(20px, 3vw, 32px);
1957
1978
  --band-pad: clamp(12px, 2vw, 16px);
1979
+ --stick: calc(var(--bar) + 1rem);
1980
+ --stick-max: calc(100dvh - var(--bar) - 3rem);
1958
1981
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
1959
1982
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
1960
1983
  --t: 150ms;
@@ -75,6 +75,12 @@
75
75
  --card-pad: clamp(20px, 3vw, 32px);
76
76
  --band-pad: clamp(12px, 2vw, 16px);
77
77
 
78
+ /* Where a short controls column pins while a long result scrolls past it:
79
+ just under the header, and never taller than the room left below it, so the
80
+ bottom of a long form stays reachable instead of being pushed off screen. */
81
+ --stick: calc(var(--bar) + 1rem);
82
+ --stick-max: calc(100dvh - var(--bar) - 3rem);
83
+
78
84
  --sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
79
85
  --mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
80
86
 
@@ -280,7 +280,7 @@ export function openPalette({ onPick } = {}) {
280
280
  autocomplete: "off",
281
281
  spellcheck: "false",
282
282
  });
283
- const list = el("ul", { class: "m-0 mt-1.5 max-h-[min(60vh,360px)] overflow-y-auto px-2 pb-2", role: "listbox" });
283
+ const list = el("ul", { class: "mt-1.5 max-h-[min(60vh,360px)] overflow-y-auto px-2 pb-2", role: "listbox" });
284
284
  const count = el("p", { class: "m-0 px-[18px] pt-2 text-2xs text-ink-3" });
285
285
  const footer = el(
286
286
  "p",
@@ -415,12 +415,21 @@ export function debounce(fn, ms = 120) {
415
415
 
416
416
  // ---------- bench layout ----------
417
417
 
418
- /** Two column bench: controls on the left, the result on the right. */
418
+ /** Two column bench: controls on the left, the result on the right.
419
+ * Above 60rem the controls pin under the header, so a long result can be read
420
+ * and scrolled without the controls leaving the screen. The cap keeps the
421
+ * bottom of a tall form reachable instead of pinning it out of view.
422
+ * The negative margin plus the matching padding give the focus halo room to
423
+ * paint: a scroll container clips its children's ink, and the fields sit flush
424
+ * with the column edges, so without the 4px gutter every ring loses its sides.
425
+ * The pair cancels out, so the fields keep their width and stay on the anchor line. */
419
426
  export function bench(side, main) {
427
+ const sideColumn =
428
+ "min-w-0 min-[60rem]:sticky min-[60rem]:top-[var(--stick)] min-[60rem]:max-h-[var(--stick-max)] min-[60rem]:overflow-y-auto min-[60rem]:overscroll-contain min-[60rem]:-mx-1 min-[60rem]:px-1";
420
429
  return el(
421
430
  "div",
422
431
  { class: "grid items-start gap-5 min-[60rem]:grid-cols-[minmax(0,21rem)_minmax(0,1fr)] min-[60rem]:gap-6" },
423
- el("div", { class: "min-w-0" }, side),
432
+ el("div", { class: sideColumn }, side),
424
433
  el("div", { class: "min-w-0" }, main)
425
434
  );
426
435
  }
@@ -733,7 +742,7 @@ export function blank(iconName, text) {
733
742
  // ---------- version ----------
734
743
 
735
744
  // Kept in one place. The CLI reads the same value from package.json.
736
- export const VERSION = "1.4.0";
745
+ export const VERSION = "1.4.1";
737
746
  export const PACKAGE_NAME = "mevebu";
738
747
  export const REPO_SLUG = "mevebu/mevebu";
739
748
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mevebu",
3
- "version": "1.4.0",
3
+ "version": "1.4.1",
4
4
  "description": "Small tools that run in your browser. No accounts, no uploads, no tracking.",
5
5
  "license": "MIT",
6
6
  "type": "module",