mevebu 1.4.0 → 1.4.2
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/mevebu/app/mevebu.js +7 -5
- package/mevebu/app/tailwind.css +26 -0
- package/mevebu/app/tailwind.src.css +6 -0
- package/mevebu/libs/js/core.js +13 -4
- package/package.json +1 -1
package/mevebu/app/mevebu.js
CHANGED
|
@@ -130,7 +130,7 @@ function masthead() {
|
|
|
130
130
|
el(
|
|
131
131
|
"div",
|
|
132
132
|
{ class: "mx-[var(--margin)] flex h-[var(--bar)] items-center gap-[clamp(14px,3vw,32px)]" },
|
|
133
|
-
el("a", { class: "inline-flex flex-none items-center gap-2.5 text-lg font-bold tracking-[-0.01em] text-ink no-underline", href: "#/" },
|
|
133
|
+
el("a", { class: "inline-flex min-h-11 flex-none items-center gap-2.5 text-lg font-bold tracking-[-0.01em] text-ink no-underline", href: "#/" },
|
|
134
134
|
el("img", { class: "block size-[30px] rounded-[9px] shadow-[0_0_0_1px_var(--orbit)]", src: "./icon.png", alt: "", width: "30", height: "30" }), "mevebu"),
|
|
135
135
|
nav,
|
|
136
136
|
el("div", { class: "flex items-center gap-0.5 max-[45rem]:ms-auto" }, searchButton(), themeBtn, menuBtn)
|
|
@@ -259,12 +259,14 @@ function footer() {
|
|
|
259
259
|
},
|
|
260
260
|
});
|
|
261
261
|
|
|
262
|
-
|
|
262
|
+
// A finger needs 44px on a phone, so the whole list is a comfortable target
|
|
263
|
+
// there. The desktop row stays as it was, at text height.
|
|
264
|
+
const FOOT_LINK = "inline-flex items-center text-sm text-ink-2 no-underline hover:text-jade max-[45rem]:min-h-11";
|
|
263
265
|
const group = (title, links) =>
|
|
264
266
|
el(
|
|
265
267
|
"div",
|
|
266
268
|
{},
|
|
267
|
-
el("h4", { class: "
|
|
269
|
+
el("h4", { class: "mb-2.5 text-2xs font-bold tracking-[0.08em] text-ink-3 uppercase" }, title),
|
|
268
270
|
el("ul", { class: "m-0 grid list-none gap-1.5 p-0" }, ...links.map((link) => el("li", {}, link)))
|
|
269
271
|
);
|
|
270
272
|
|
|
@@ -280,7 +282,7 @@ function footer() {
|
|
|
280
282
|
el(
|
|
281
283
|
"div",
|
|
282
284
|
{ class: "grid gap-1.5" },
|
|
283
|
-
el("a", { class: "inline-flex items-center gap-[9px] text-md font-bold tracking-[-0.01em] text-ink no-underline", href: "#/" },
|
|
285
|
+
el("a", { class: "inline-flex min-h-11 items-center gap-[9px] text-md font-bold tracking-[-0.01em] text-ink no-underline", href: "#/" },
|
|
284
286
|
el("img", { class: "block size-[34px] rounded-[11px] shadow-[0_0_0_1px_var(--orbit)]", src: "./icon.png", alt: "", width: "34", height: "34" }), "mevebu"),
|
|
285
287
|
el("p", { class: "m-0 max-w-[30ch] text-sm leading-[1.5] text-ink-3" }, "Small tools that run in your browser. No accounts, no uploads, no tracking.")
|
|
286
288
|
),
|
|
@@ -315,7 +317,7 @@ function footer() {
|
|
|
315
317
|
{ class: "m-0 flex items-center gap-2" },
|
|
316
318
|
el("button", {
|
|
317
319
|
class:
|
|
318
|
-
"inline-flex min-h-7 cursor-pointer items-center gap-1.5 rounded-full border border-orbit bg-transparent px-2.5 py-[3px] font-sans text-2xs tabular-nums text-ink-3 transition-colors duration-150 hover:border-orbit-hard hover:text-ink data-[new]:border-jade data-[new]:bg-jade-soft data-[new]:font-semibold data-[new]:text-jade data-[new]:hover:bg-jade data-[new]:hover:text-on-jade",
|
|
320
|
+
"inline-flex min-h-7 cursor-pointer items-center gap-1.5 rounded-full border border-orbit bg-transparent px-2.5 py-[3px] font-sans text-2xs tabular-nums text-ink-3 transition-colors duration-150 hover:border-orbit-hard hover:text-ink data-[new]:border-jade data-[new]:bg-jade-soft data-[new]:font-semibold data-[new]:text-jade data-[new]:hover:bg-jade data-[new]:hover:text-on-jade max-[45rem]:min-h-11",
|
|
319
321
|
id: "version",
|
|
320
322
|
type: "button",
|
|
321
323
|
title: "Check for updates",
|
package/mevebu/app/tailwind.css
CHANGED
|
@@ -1558,6 +1558,9 @@
|
|
|
1558
1558
|
.max-\[45rem\]\:inline-flex {
|
|
1559
1559
|
display: inline-flex;
|
|
1560
1560
|
}
|
|
1561
|
+
.max-\[45rem\]\:min-h-11 {
|
|
1562
|
+
min-height: calc(var(--spacing) * 11);
|
|
1563
|
+
}
|
|
1561
1564
|
.max-\[45rem\]\:\[grid-template-columns\:minmax\(0\,1fr\)_62px\] {
|
|
1562
1565
|
grid-template-columns: minmax(0,1fr) 62px;
|
|
1563
1566
|
}
|
|
@@ -1579,6 +1582,18 @@
|
|
|
1579
1582
|
}
|
|
1580
1583
|
}
|
|
1581
1584
|
@media (width >= 60rem) {
|
|
1585
|
+
.min-\[60rem\]\:sticky {
|
|
1586
|
+
position: sticky;
|
|
1587
|
+
}
|
|
1588
|
+
.min-\[60rem\]\:top-\[var\(--stick\)\] {
|
|
1589
|
+
top: var(--stick);
|
|
1590
|
+
}
|
|
1591
|
+
.min-\[60rem\]\:-mx-1 {
|
|
1592
|
+
margin-inline: calc(var(--spacing) * -1);
|
|
1593
|
+
}
|
|
1594
|
+
.min-\[60rem\]\:max-h-\[var\(--stick-max\)\] {
|
|
1595
|
+
max-height: var(--stick-max);
|
|
1596
|
+
}
|
|
1582
1597
|
.min-\[60rem\]\:grid-cols-\[minmax\(0\,1fr\)_auto\] {
|
|
1583
1598
|
grid-template-columns: minmax(0,1fr) auto;
|
|
1584
1599
|
}
|
|
@@ -1588,6 +1603,15 @@
|
|
|
1588
1603
|
.min-\[60rem\]\:gap-6 {
|
|
1589
1604
|
gap: calc(var(--spacing) * 6);
|
|
1590
1605
|
}
|
|
1606
|
+
.min-\[60rem\]\:overflow-y-auto {
|
|
1607
|
+
overflow-y: auto;
|
|
1608
|
+
}
|
|
1609
|
+
.min-\[60rem\]\:overscroll-contain {
|
|
1610
|
+
overscroll-behavior: contain;
|
|
1611
|
+
}
|
|
1612
|
+
.min-\[60rem\]\:px-1 {
|
|
1613
|
+
padding-inline: var(--spacing);
|
|
1614
|
+
}
|
|
1591
1615
|
}
|
|
1592
1616
|
@media (width >= 64rem) {
|
|
1593
1617
|
.lg\:grid-cols-3 {
|
|
@@ -1955,6 +1979,8 @@
|
|
|
1955
1979
|
--ctl: 40px;
|
|
1956
1980
|
--card-pad: clamp(20px, 3vw, 32px);
|
|
1957
1981
|
--band-pad: clamp(12px, 2vw, 16px);
|
|
1982
|
+
--stick: calc(var(--bar) + 1rem);
|
|
1983
|
+
--stick-max: calc(100dvh - var(--bar) - 3rem);
|
|
1958
1984
|
--sans: ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
|
|
1959
1985
|
--mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, monospace;
|
|
1960
1986
|
--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
|
|
package/mevebu/libs/js/core.js
CHANGED
|
@@ -280,7 +280,7 @@ export function openPalette({ onPick } = {}) {
|
|
|
280
280
|
autocomplete: "off",
|
|
281
281
|
spellcheck: "false",
|
|
282
282
|
});
|
|
283
|
-
const list = el("ul", { class: "
|
|
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:
|
|
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.
|
|
745
|
+
export const VERSION = "1.4.2";
|
|
737
746
|
export const PACKAGE_NAME = "mevebu";
|
|
738
747
|
export const REPO_SLUG = "mevebu/mevebu";
|
|
739
748
|
|