@rinzai/zen 0.14.0 → 0.15.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/CHANGELOG.md +138 -0
- package/README.md +16 -1
- package/dist/carousel/index.d.ts.map +1 -1
- package/dist/carousel/index.js +5 -5
- package/dist/docs/README.md +205 -0
- package/dist/docs/accordion.md +122 -0
- package/dist/docs/alert.md +69 -0
- package/dist/docs/animated-number.md +105 -0
- package/dist/docs/avatar.md +91 -0
- package/dist/docs/backdrop.md +94 -0
- package/dist/docs/badge.md +37 -0
- package/dist/docs/breadcrumbs.md +44 -0
- package/dist/docs/button-group.md +76 -0
- package/dist/docs/button.md +131 -0
- package/dist/docs/calendar-heatmap.md +73 -0
- package/dist/docs/calendar.md +101 -0
- package/dist/docs/canvas.md +584 -0
- package/dist/docs/card.md +180 -0
- package/dist/docs/carousel.md +162 -0
- package/dist/docs/chart.md +325 -0
- package/dist/docs/checkbox.md +88 -0
- package/dist/docs/chip.md +52 -0
- package/dist/docs/code-block.md +116 -0
- package/dist/docs/code-input.md +52 -0
- package/dist/docs/collapse.md +46 -0
- package/dist/docs/color-picker.md +145 -0
- package/dist/docs/combobox.md +208 -0
- package/dist/docs/command-palette.md +65 -0
- package/dist/docs/date-picker.md +167 -0
- package/dist/docs/dialog.md +271 -0
- package/dist/docs/disclosure.md +88 -0
- package/dist/docs/editable-cell.md +90 -0
- package/dist/docs/empty-state.md +46 -0
- package/dist/docs/field.md +82 -0
- package/dist/docs/file-drop.md +44 -0
- package/dist/docs/filter-bar.md +66 -0
- package/dist/docs/header.md +51 -0
- package/dist/docs/hover-card.md +110 -0
- package/dist/docs/icon-picker.md +65 -0
- package/dist/docs/input-group.md +89 -0
- package/dist/docs/input.md +33 -0
- package/dist/docs/inset.md +57 -0
- package/dist/docs/kbd.md +34 -0
- package/dist/docs/keypad.md +51 -0
- package/dist/docs/load-more.md +66 -0
- package/dist/docs/locale-provider.md +99 -0
- package/dist/docs/marquee.md +86 -0
- package/dist/docs/menu.md +403 -0
- package/dist/docs/meter.md +102 -0
- package/dist/docs/money-input.md +169 -0
- package/dist/docs/month-picker.md +80 -0
- package/dist/docs/navigation-menu.md +157 -0
- package/dist/docs/number-field.md +129 -0
- package/dist/docs/page-header.md +44 -0
- package/dist/docs/page-transition.md +93 -0
- package/dist/docs/pagination.md +42 -0
- package/dist/docs/pills.md +85 -0
- package/dist/docs/player-bar.md +158 -0
- package/dist/docs/popover.md +200 -0
- package/dist/docs/progress-ring.md +70 -0
- package/dist/docs/radio-cards.md +82 -0
- package/dist/docs/radio-group.md +86 -0
- package/dist/docs/range-slider.md +64 -0
- package/dist/docs/repeat-picker.md +44 -0
- package/dist/docs/resizable.md +107 -0
- package/dist/docs/seek-bar.md +68 -0
- package/dist/docs/segmented.md +89 -0
- package/dist/docs/select.md +148 -0
- package/dist/docs/separator.md +76 -0
- package/dist/docs/side-nav.md +75 -0
- package/dist/docs/skeleton.md +89 -0
- package/dist/docs/slider.md +87 -0
- package/dist/docs/sortable.md +182 -0
- package/dist/docs/sparkline.md +56 -0
- package/dist/docs/spinner.md +69 -0
- package/dist/docs/status-pill.md +81 -0
- package/dist/docs/stepper.md +59 -0
- package/dist/docs/tab-bar.md +78 -0
- package/dist/docs/table-of-contents.md +43 -0
- package/dist/docs/table.md +714 -0
- package/dist/docs/tabs.md +140 -0
- package/dist/docs/tag-input.md +45 -0
- package/dist/docs/textarea.md +25 -0
- package/dist/docs/theme-toggle.md +85 -0
- package/dist/docs/theming.md +193 -0
- package/dist/docs/time-field.md +71 -0
- package/dist/docs/timeline.md +50 -0
- package/dist/docs/toast.md +53 -0
- package/dist/docs/toggle-group.md +83 -0
- package/dist/docs/toggle.md +38 -0
- package/dist/docs/toolbar.md +97 -0
- package/dist/docs/tooltip.md +60 -0
- package/dist/docs/tree.md +295 -0
- package/dist/docs/trend.md +50 -0
- package/dist/icons/arrow-path.d.ts +3 -0
- package/dist/icons/arrow-path.d.ts.map +1 -0
- package/dist/icons/arrows-right-left.d.ts +3 -0
- package/dist/icons/arrows-right-left.d.ts.map +1 -0
- package/dist/icons/backward.d.ts +3 -0
- package/dist/icons/backward.d.ts.map +1 -0
- package/dist/icons/forward.d.ts +3 -0
- package/dist/icons/forward.d.ts.map +1 -0
- package/dist/icons/heart-solid.d.ts +3 -0
- package/dist/icons/heart-solid.d.ts.map +1 -0
- package/dist/icons/heart.d.ts +3 -0
- package/dist/icons/heart.d.ts.map +1 -0
- package/dist/icons/musical-note.d.ts +3 -0
- package/dist/icons/musical-note.d.ts.map +1 -0
- package/dist/icons/pause.d.ts +3 -0
- package/dist/icons/pause.d.ts.map +1 -0
- package/dist/icons/play.d.ts +3 -0
- package/dist/icons/play.d.ts.map +1 -0
- package/dist/icons/queue-list.d.ts +3 -0
- package/dist/icons/queue-list.d.ts.map +1 -0
- package/dist/icons/speaker-wave.d.ts +3 -0
- package/dist/icons/speaker-wave.d.ts.map +1 -0
- package/dist/icons/speaker-x-mark.d.ts +3 -0
- package/dist/icons/speaker-x-mark.d.ts.map +1 -0
- package/dist/index.d.ts +7 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/lib.js +80 -74
- package/dist/marquee/index.d.ts +15 -0
- package/dist/marquee/index.d.ts.map +1 -0
- package/dist/marquee/index.js +90 -0
- package/dist/menu/index.d.ts.map +1 -1
- package/dist/menu/index.js +7 -6
- package/dist/player-bar/index.d.ts +11 -0
- package/dist/player-bar/index.d.ts.map +1 -0
- package/dist/player-bar/index.js +17 -0
- package/dist/radio-cards/index.d.ts +2 -1
- package/dist/radio-cards/index.d.ts.map +1 -1
- package/dist/radio-cards/index.js +3 -3
- package/dist/seek-bar/index.d.ts +24 -0
- package/dist/seek-bar/index.d.ts.map +1 -0
- package/dist/seek-bar/index.js +120 -0
- package/dist/segmented/index.d.ts +3 -2
- package/dist/segmented/index.d.ts.map +1 -1
- package/dist/segmented/index.js +19 -18
- package/dist/slider/index.d.ts +2 -1
- package/dist/slider/index.d.ts.map +1 -1
- package/dist/tab-bar/index.d.ts +4 -2
- package/dist/tab-bar/index.d.ts.map +1 -1
- package/dist/tab-bar/index.js +24 -19
- package/dist/textarea/index.d.ts +6 -2
- package/dist/textarea/index.d.ts.map +1 -1
- package/dist/textarea/index.js +2 -1
- package/dist/theme.css +40 -0
- package/dist/utils/duration.d.ts +3 -0
- package/dist/utils/duration.d.ts.map +1 -0
- package/dist/utils/duration.js +7 -0
- package/dist/utils/messages.d.ts +2 -0
- package/dist/utils/messages.d.ts.map +1 -1
- package/dist/utils/messages.js +3 -1
- package/dist/utils/slot.d.ts +5 -2
- package/dist/utils/slot.d.ts.map +1 -1
- package/dist/utils/slot.js +16 -11
- package/dist/utils/useAnchoredPopup.d.ts.map +1 -1
- package/dist/utils/useAnchoredPopup.js +3 -2
- package/dist/utils/useHeightVar.d.ts +7 -0
- package/dist/utils/useHeightVar.d.ts.map +1 -0
- package/dist/utils/useHeightVar.js +17 -0
- package/dist/utils/useMediaPlayer.d.ts +38 -0
- package/dist/utils/useMediaPlayer.d.ts.map +1 -0
- package/dist/utils/useMediaPlayer.js +91 -0
- package/dist/utils/useMediaSession.d.ts +24 -0
- package/dist/utils/useMediaSession.d.ts.map +1 -0
- package/dist/utils/useMediaSession.js +76 -0
- package/dist/zen.css +1 -1
- package/package.json +4 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/seek-bar/index.tsx"],"names":[],"mappings":"AACA,OAAe,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAQlD;;;;;;GAMG;AACH,MAAM,CAAC,OAAO,UAAU,OAAO,CAAC,EAC5B,WAAW,EACX,QAAQ,EACR,QAAY,EACZ,OAAe,EACf,YAAgB,EAChB,MAAM,EACN,SAAS,EACT,QAAQ,EACR,SAAS,EACT,GAAG,IAAI,EACV,EAAE,YAAY,+BA6Gd;AAED,MAAM,WAAW,YAAa,SAAQ,IAAI,CACtC,WAAW,EACX,OAAO,GAAG,cAAc,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,eAAe,GAAG,eAAe,GAAG,iBAAiB,CAC5G;IACG,sBAAsB;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,QAAQ,EAAE,MAAM,CAAC;IACjB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sDAAsD;IACtD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,4EAA4E;IAC5E,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC"}
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cx as e } from "../utils/cx.js";
|
|
3
|
+
import { useMessages as t } from "../locale-provider/index.js";
|
|
4
|
+
import n from "../slider/index.js";
|
|
5
|
+
import { formatDuration as r } from "../utils/duration.js";
|
|
6
|
+
import { useLayoutEffect as i, useRef as a, useState as o } from "react";
|
|
7
|
+
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
8
|
+
//#region packages/seek-bar/index.tsx
|
|
9
|
+
var l = 5;
|
|
10
|
+
function u({ currentTime: u, duration: d, buffered: f = 0, playing: p = !1, playbackRate: m = 1, onSeek: h, onKeyDown: g, disabled: _, className: v, ...y }) {
|
|
11
|
+
let b = t(), [x, S] = o(null), [C, w] = o(null), T = C && C.from === u ? C.at : null, E = Math.max(0, Math.min(x ?? T ?? u, d)), D = a(null), O = a(null), k = p && x === null && T === null && d > 0 && E < d, A = a(null);
|
|
12
|
+
i(() => {
|
|
13
|
+
let e = [D.current, O.current].filter((e) => e !== null);
|
|
14
|
+
if (!e.length) return;
|
|
15
|
+
let t = A.current;
|
|
16
|
+
if (k && t && t.rate === m && t.duration === d) {
|
|
17
|
+
let e = Number(t.animations[0].currentTime ?? 0) / 1e3;
|
|
18
|
+
if (Math.abs(t.from + e * m - E) < .15) return;
|
|
19
|
+
}
|
|
20
|
+
t?.animations.forEach((e) => e.cancel()), A.current = null;
|
|
21
|
+
let n = getComputedStyle(e[0]).direction === "rtl" ? -1 : 1, r = (e) => `${d > 0 ? n * e * 100 / d : 0}cqw`;
|
|
22
|
+
for (let t of e) t.style.translate = r(E);
|
|
23
|
+
if (!k) return;
|
|
24
|
+
let i = e.map((e) => e.animate([{ translate: r(E) }, { translate: r(d) }], {
|
|
25
|
+
duration: (d - E) / m * 1e3,
|
|
26
|
+
easing: "linear",
|
|
27
|
+
fill: "forwards"
|
|
28
|
+
}));
|
|
29
|
+
A.current = {
|
|
30
|
+
animations: i,
|
|
31
|
+
from: E,
|
|
32
|
+
rate: m,
|
|
33
|
+
duration: d
|
|
34
|
+
};
|
|
35
|
+
}, [
|
|
36
|
+
E,
|
|
37
|
+
d,
|
|
38
|
+
k,
|
|
39
|
+
m
|
|
40
|
+
]), i(() => () => A.current?.animations.forEach((e) => e.cancel()), []);
|
|
41
|
+
let j = (e) => {
|
|
42
|
+
if (g?.(e), e.defaultPrevented) return;
|
|
43
|
+
let t = getComputedStyle(e.currentTarget).direction === "rtl", n = {
|
|
44
|
+
ArrowUp: 1,
|
|
45
|
+
ArrowDown: -1,
|
|
46
|
+
ArrowRight: t ? -1 : 1,
|
|
47
|
+
ArrowLeft: t ? 1 : -1
|
|
48
|
+
}[e.key];
|
|
49
|
+
if (!n) return;
|
|
50
|
+
e.preventDefault();
|
|
51
|
+
let r = Math.max(0, Math.min(E + n * l, d));
|
|
52
|
+
w({
|
|
53
|
+
at: r,
|
|
54
|
+
from: u
|
|
55
|
+
}), h(r);
|
|
56
|
+
}, M = _ || d <= 0, N = d > 0 ? Math.min(f, d) / d * 100 : 0, P = { width: `${r(d).length}ch` };
|
|
57
|
+
return /* @__PURE__ */ c("div", {
|
|
58
|
+
className: e("zen__seek-bar flex items-center gap-3", v),
|
|
59
|
+
children: [
|
|
60
|
+
/* @__PURE__ */ s("span", {
|
|
61
|
+
className: "text-muted-foreground shrink-0 text-end text-xs tabular-nums",
|
|
62
|
+
style: P,
|
|
63
|
+
children: r(E)
|
|
64
|
+
}),
|
|
65
|
+
/* @__PURE__ */ c("div", {
|
|
66
|
+
className: e("group relative h-5 min-w-0 flex-1", M && "opacity-50"),
|
|
67
|
+
children: [
|
|
68
|
+
/* @__PURE__ */ s(n, {
|
|
69
|
+
"aria-label": b.seek,
|
|
70
|
+
min: 0,
|
|
71
|
+
max: d || 1,
|
|
72
|
+
step: "any",
|
|
73
|
+
value: E,
|
|
74
|
+
disabled: M,
|
|
75
|
+
valueText: () => b.timeOf(r(E), r(d)),
|
|
76
|
+
className: "absolute inset-0 z-10 h-full opacity-0",
|
|
77
|
+
onKeyDown: j,
|
|
78
|
+
onValueChange: S,
|
|
79
|
+
onValueCommit: (e) => {
|
|
80
|
+
S(null), w({
|
|
81
|
+
at: e,
|
|
82
|
+
from: u
|
|
83
|
+
}), h(e);
|
|
84
|
+
},
|
|
85
|
+
...y
|
|
86
|
+
}),
|
|
87
|
+
/* @__PURE__ */ c("div", {
|
|
88
|
+
"aria-hidden": !0,
|
|
89
|
+
className: "absolute inset-x-0 top-1/2 h-2.5 -translate-y-1/2 overflow-hidden rounded-full bg-[oklch(var(--muted))]",
|
|
90
|
+
children: [/* @__PURE__ */ s("div", {
|
|
91
|
+
className: "absolute inset-y-0 start-0 bg-[oklch(var(--tint)/0.22)] transition-[width] duration-300",
|
|
92
|
+
style: { width: `${N}%` }
|
|
93
|
+
}), /* @__PURE__ */ s("div", {
|
|
94
|
+
className: "[container-type:inline-size] absolute inset-x-2.5 inset-y-0",
|
|
95
|
+
children: /* @__PURE__ */ s("div", {
|
|
96
|
+
ref: D,
|
|
97
|
+
className: "bg-primary absolute inset-y-0 end-full w-[calc(100%+0.625rem)]"
|
|
98
|
+
})
|
|
99
|
+
})]
|
|
100
|
+
}),
|
|
101
|
+
/* @__PURE__ */ s("div", {
|
|
102
|
+
"aria-hidden": !0,
|
|
103
|
+
className: "[container-type:inline-size] pointer-events-none absolute inset-x-2.5 inset-y-0",
|
|
104
|
+
children: /* @__PURE__ */ s("div", {
|
|
105
|
+
ref: O,
|
|
106
|
+
className: "bg-primary group-has-[input:focus-visible]:ring-ring/40 absolute start-0 top-1/2 -ms-2.5 -mt-2.5 size-5 rounded-full border-2 border-white shadow-[0_0_0_1px_oklch(0_0_0/0.3),0_0_16px_oklch(var(--glow)/calc(0.8*var(--glow-k)))] group-has-[input:focus-visible]:ring-4"
|
|
107
|
+
})
|
|
108
|
+
})
|
|
109
|
+
]
|
|
110
|
+
}),
|
|
111
|
+
/* @__PURE__ */ s("span", {
|
|
112
|
+
className: "text-muted-foreground shrink-0 text-xs tabular-nums",
|
|
113
|
+
style: P,
|
|
114
|
+
children: r(d)
|
|
115
|
+
})
|
|
116
|
+
]
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
export { u as default };
|
|
@@ -5,11 +5,12 @@ import { ComponentProps, ReactNode } from 'react';
|
|
|
5
5
|
* selection slides between options, like Pills. Fill it with
|
|
6
6
|
* SegmentedItem (any content: text, icons, a disabled option).
|
|
7
7
|
*/
|
|
8
|
-
export default function Segmented<V extends string>({ label, value: valueProp, defaultValue, onValueChange, name, className, children, ...rest }: SegmentedProps<V>): import('react').JSX.Element;
|
|
8
|
+
export default function Segmented<V extends string>({ label, value: valueProp, defaultValue, onValueChange, name, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, className, children, ...rest }: SegmentedProps<V>): import('react').JSX.Element;
|
|
9
9
|
/** One option of a Segmented: a native radio covering whatever you put inside. */
|
|
10
10
|
export declare function SegmentedItem({ value, disabled, className, children }: SegmentedItemProps): import('react').JSX.Element;
|
|
11
11
|
export interface SegmentedProps<V extends string> extends Omit<ComponentProps<'div'>, 'defaultValue' | 'children'> {
|
|
12
|
-
label
|
|
12
|
+
/** Shown above the options, naming the group. Without it, give the group an aria-label or aria-labelledby. */
|
|
13
|
+
label?: ReactNode;
|
|
13
14
|
/** The chosen option, when you keep it. */
|
|
14
15
|
value?: V;
|
|
15
16
|
/** The first chosen option, when the control keeps its own. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/segmented/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,SAAS,EAA6B,MAAM,OAAO,CAAC;AAY5F;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,cAAc,CAAC,CAAC,CAAC,+
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/segmented/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAiB,SAAS,EAA6B,MAAM,OAAO,CAAC;AAY5F;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,EAChD,KAAK,EACL,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,aAAa,EACb,IAAI,EACJ,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,EACjC,SAAS,EACT,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,cAAc,CAAC,CAAC,CAAC,+BA2CnB;AAED,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE,kBAAkB,+BA4BzF;AAED,MAAM,WAAW,cAAc,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,EAAE,cAAc,GAAG,UAAU,CAAC;IAC9G,8GAA8G;IAC9G,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,CAAC,CAAC;IACV,+DAA+D;IAC/D,YAAY,CAAC,EAAE,CAAC,CAAC;IACjB,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IACnC,oDAAoD;IACpD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0BAA0B;IAC1B,QAAQ,EAAE,SAAS,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,QAAQ,EAAE,SAAS,CAAC;CACvB"}
|
package/dist/segmented/index.js
CHANGED
|
@@ -6,36 +6,37 @@ import { createContext as r, useContext as i, useId as a, useRef as o } from "re
|
|
|
6
6
|
import { jsx as s, jsxs as c } from "react/jsx-runtime";
|
|
7
7
|
//#region packages/segmented/index.tsx
|
|
8
8
|
var l = r(null);
|
|
9
|
-
function u({ label: r, value: i, defaultValue: u, onValueChange: d, name: f,
|
|
10
|
-
let [
|
|
9
|
+
function u({ label: r, value: i, defaultValue: u, onValueChange: d, name: f, "aria-label": p, "aria-labelledby": m, className: h, children: g, ..._ }) {
|
|
10
|
+
let [v, y] = t(i, u, d), b = a(), x = o(null), S = n(x, "label:has(input:checked)", [v, g]);
|
|
11
11
|
return /* @__PURE__ */ c("div", {
|
|
12
|
-
className: e("zen__segmented flex flex-col gap-2",
|
|
13
|
-
...
|
|
14
|
-
children: [/* @__PURE__ */ s("span", {
|
|
15
|
-
id:
|
|
12
|
+
className: e("zen__segmented flex flex-col gap-2", h),
|
|
13
|
+
..._,
|
|
14
|
+
children: [r && /* @__PURE__ */ s("span", {
|
|
15
|
+
id: b,
|
|
16
16
|
className: "text-sm font-medium",
|
|
17
17
|
children: r
|
|
18
18
|
}), /* @__PURE__ */ c("div", {
|
|
19
|
-
ref:
|
|
19
|
+
ref: x,
|
|
20
20
|
role: "radiogroup",
|
|
21
|
-
"aria-
|
|
21
|
+
"aria-label": p,
|
|
22
|
+
"aria-labelledby": r ? b : m,
|
|
22
23
|
className: "glow-edge border-tint/10 bg-tint/[0.03] relative inline-flex w-fit flex-wrap gap-1 rounded-xl border p-1",
|
|
23
|
-
children: [
|
|
24
|
+
children: [S && /* @__PURE__ */ s("span", {
|
|
24
25
|
"aria-hidden": !0,
|
|
25
26
|
className: "zen__segmented-indicator bg-primary/15 ease-out-soft absolute top-0 left-0 rounded-lg shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.4)] transition-[translate,width,height] duration-500",
|
|
26
27
|
style: {
|
|
27
|
-
translate: `${
|
|
28
|
-
width:
|
|
29
|
-
height:
|
|
28
|
+
translate: `${S.x}px ${S.y}px`,
|
|
29
|
+
width: S.w,
|
|
30
|
+
height: S.h
|
|
30
31
|
}
|
|
31
32
|
}), /* @__PURE__ */ s(l.Provider, {
|
|
32
33
|
value: {
|
|
33
|
-
name: f ??
|
|
34
|
-
value:
|
|
35
|
-
select:
|
|
36
|
-
measured:
|
|
34
|
+
name: f ?? b,
|
|
35
|
+
value: v,
|
|
36
|
+
select: y,
|
|
37
|
+
measured: S !== null
|
|
37
38
|
},
|
|
38
|
-
children:
|
|
39
|
+
children: g
|
|
39
40
|
})]
|
|
40
41
|
})]
|
|
41
42
|
});
|
|
@@ -44,7 +45,7 @@ function d({ value: t, disabled: n, className: r, children: a }) {
|
|
|
44
45
|
let o = i(l);
|
|
45
46
|
if (!o) throw Error("SegmentedItem must be inside a Segmented");
|
|
46
47
|
return /* @__PURE__ */ c("label", {
|
|
47
|
-
className: e("text-muted-foreground relative cursor-pointer rounded-lg px-3 py-1.5 text-sm transition-colors duration-300", "hover:text-foreground has-checked:text-foreground has-
|
|
48
|
+
className: e("text-muted-foreground relative inline-flex cursor-pointer items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm transition-colors duration-300", "hover:text-foreground has-checked:text-foreground has-focus-ring", "has-disabled:hover:text-muted-foreground has-disabled:cursor-not-allowed has-disabled:opacity-50", !o.measured && "has-checked:bg-primary/15 has-checked:shadow-[inset_0_0_0_1px_oklch(var(--primary)/0.4)]", r),
|
|
48
49
|
children: [/* @__PURE__ */ s("input", {
|
|
49
50
|
type: "radio",
|
|
50
51
|
className: "absolute inset-0 z-10 m-0 size-full cursor-pointer appearance-none rounded-[inherit] opacity-0 disabled:cursor-not-allowed",
|
package/dist/slider/index.d.ts
CHANGED
|
@@ -15,7 +15,8 @@ export interface SliderProps extends Omit<ComponentProps<'input'>, 'type' | 'val
|
|
|
15
15
|
defaultValue?: number;
|
|
16
16
|
min?: number;
|
|
17
17
|
max?: number;
|
|
18
|
-
|
|
18
|
+
/** `'any'` for no snapping; the arrow keys then move by the browser's own amount. */
|
|
19
|
+
step?: number | 'any';
|
|
19
20
|
/** While dragging (every step). */
|
|
20
21
|
onValueChange?: (value: number) => void;
|
|
21
22
|
/** Once the user lets go: the moment to save. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,WAAW,+BAmDb;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK,QAI+E,CAAC;AAElG,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,CAAC,EACvB,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,cAAc,CAC7D;IACG,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/slider/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAoC,MAAM,OAAO,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAC3B,KAAK,EAAE,SAAS,EAChB,YAAY,EACZ,GAAO,EACP,GAAS,EACT,IAAQ,EACR,aAAa,EACb,aAAa,EACb,eAAe,EACf,UAAU,EACV,SAAS,EACT,SAAS,EACT,KAAK,EACL,QAAQ,EACR,GAAG,IAAI,EACV,EAAE,WAAW,+BAmDb;AAED,0EAA0E;AAC1E,eAAO,MAAM,KAAK,QAI+E,CAAC;AAElG,MAAM,WAAW,WAAY,SAAQ,IAAI,CACrC,cAAc,CAAC,OAAO,CAAC,EACvB,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,cAAc,CAC7D;IACG,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,qFAAqF;IACrF,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IACtB,mCAAmC;IACnC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,iDAAiD;IACjD,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACxC,6DAA6D;IAC7D,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,sDAAsD;IACtD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,oDAAoD;IACpD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACzC"}
|
package/dist/tab-bar/index.d.ts
CHANGED
|
@@ -2,11 +2,13 @@ import { ComponentProps, ReactNode } from 'react';
|
|
|
2
2
|
/**
|
|
3
3
|
* Phone navigation: a glass bar fixed to the bottom, clear of the home
|
|
4
4
|
* indicator, hidden from `hideFrom` up (default md). Fill it with TabBarItems.
|
|
5
|
+
* Its height is kept in `--zen-tab-bar-height` on its parent (0px while
|
|
6
|
+
* hidden): a PlayerBar beside it sits on it, and the page can pad its end by it.
|
|
5
7
|
* Inside a rounded frame, round the bar to match (className, e.g.
|
|
6
8
|
* rounded-b-[15px]): with GPU compositing, Chrome doesn't clip a blurred
|
|
7
9
|
* backdrop to an ancestor's rounded corners, only to the element's own.
|
|
8
10
|
*/
|
|
9
|
-
export default function TabBar({ hideFrom, className, children, ...rest }: TabBarProps): import('react').JSX.Element;
|
|
11
|
+
export default function TabBar({ hideFrom, className, children, ref, ...rest }: TabBarProps): import('react').JSX.Element;
|
|
10
12
|
/**
|
|
11
13
|
* One destination: an icon over a label. `active` marks the current page; with
|
|
12
14
|
* `asChild`, the styles go onto your own link (e.g. a router's NavLink, which
|
|
@@ -20,7 +22,7 @@ export interface TabBarProps extends ComponentProps<'nav'> {
|
|
|
20
22
|
export interface TabBarItemProps extends ComponentProps<'a'> {
|
|
21
23
|
icon?: ReactNode;
|
|
22
24
|
active?: boolean;
|
|
23
|
-
/** Style the single child element (a router link holding the
|
|
25
|
+
/** Style the single child element (a router link holding the label) instead of rendering an <a>; `icon` goes inside it. */
|
|
24
26
|
asChild?: boolean;
|
|
25
27
|
}
|
|
26
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/tab-bar/index.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/tab-bar/index.tsx"],"names":[],"mappings":"AAIA,OAAO,EAAY,cAAc,EAAE,SAAS,EAAU,MAAM,OAAO,CAAC;AAEpE;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,MAAM,CAAC,EAAE,QAAe,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,EAAE,WAAW,+BAoBjG;AAOD;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI,EAAE,EAAE,eAAe,+BAgBlG;AAED,MAAM,WAAW,WAAY,SAAQ,cAAc,CAAC,KAAK,CAAC;IACtD,iEAAiE;IACjE,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,CAAC;CACzC;AAED,MAAM,WAAW,eAAgB,SAAQ,cAAc,CAAC,GAAG,CAAC;IACxD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,2HAA2H;IAC3H,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB"}
|
package/dist/tab-bar/index.js
CHANGED
|
@@ -1,34 +1,39 @@
|
|
|
1
1
|
"use client";
|
|
2
2
|
import { cx as e } from "../utils/cx.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useMergedRefs as t } from "../utils/refs.js";
|
|
4
|
+
import { Slot as n } from "../utils/slot.js";
|
|
5
|
+
import { useHeightVar as r } from "../utils/useHeightVar.js";
|
|
6
|
+
import { Children as i, useRef as a } from "react";
|
|
7
|
+
import { jsx as o, jsxs as s } from "react/jsx-runtime";
|
|
6
8
|
//#region packages/tab-bar/index.tsx
|
|
7
|
-
function
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
function c({ hideFrom: n = "md", className: s, children: c, ref: l, ...u }) {
|
|
10
|
+
let d = a(null);
|
|
11
|
+
return r(d, "--zen-tab-bar-height"), /* @__PURE__ */ o("nav", {
|
|
12
|
+
ref: t(d, l),
|
|
13
|
+
className: e("zen__tab-bar glass glass-blur glow-edge fixed inset-x-0 bottom-0 z-40 rounded-none border-x-0! border-b-0! pb-[env(safe-area-inset-bottom)]", n === "sm" && "sm:hidden", n === "md" && "md:hidden", n === "lg" && "lg:hidden", s),
|
|
14
|
+
...u,
|
|
15
|
+
children: /* @__PURE__ */ o("div", {
|
|
12
16
|
className: "grid",
|
|
13
|
-
style: { gridTemplateColumns: `repeat(${
|
|
14
|
-
children:
|
|
17
|
+
style: { gridTemplateColumns: `repeat(${i.count(c)}, 1fr)` },
|
|
18
|
+
children: c
|
|
15
19
|
})
|
|
16
20
|
});
|
|
17
21
|
}
|
|
18
|
-
var
|
|
19
|
-
function
|
|
22
|
+
var l = e("flex flex-col items-center gap-1 py-2.5 text-2xs outline-hidden transition-colors duration-200 focus-ring focus-visible:ring-inset", "text-muted-foreground aria-[current=page]:text-primary [&_svg]:size-5 aria-[current=page]:[&_svg]:drop-shadow-[0_0_8px_oklch(var(--glow)/calc(0.8*var(--glow-k)))]");
|
|
23
|
+
function u({ icon: t, active: r, asChild: i, className: a, children: c, ...u }) {
|
|
20
24
|
let d = {
|
|
21
25
|
...u,
|
|
22
|
-
"aria-current":
|
|
23
|
-
className: e(
|
|
26
|
+
"aria-current": r ? "page" : void 0,
|
|
27
|
+
className: e(l, a)
|
|
24
28
|
};
|
|
25
|
-
return
|
|
29
|
+
return i ? (r || delete d["aria-current"], /* @__PURE__ */ o(n, {
|
|
26
30
|
...d,
|
|
27
|
-
|
|
28
|
-
|
|
31
|
+
before: t,
|
|
32
|
+
children: c
|
|
33
|
+
})) : /* @__PURE__ */ s("a", {
|
|
29
34
|
...d,
|
|
30
|
-
children: [
|
|
35
|
+
children: [t, c]
|
|
31
36
|
});
|
|
32
37
|
}
|
|
33
38
|
//#endregion
|
|
34
|
-
export {
|
|
39
|
+
export { u as TabBarItem, c as default };
|
package/dist/textarea/index.d.ts
CHANGED
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { ComponentProps } from 'react';
|
|
2
|
-
export default function Textarea(props:
|
|
3
|
-
export type
|
|
2
|
+
export default function Textarea(props: TextareaProps): import('react').JSX.Element;
|
|
3
|
+
export type TextareaProps = ComponentProps<'textarea'>;
|
|
4
|
+
/** @deprecated Renamed Textarea, like the element. */
|
|
5
|
+
export declare const TextArea: typeof Textarea;
|
|
6
|
+
/** @deprecated Renamed TextareaProps. */
|
|
7
|
+
export type TextAreaProps = TextareaProps;
|
|
4
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/textarea/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAiBpD;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../packages/textarea/index.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAEvC,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,KAAK,EAAE,aAAa,+BAiBpD;AAED,MAAM,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;AAEvD,sDAAsD;AACtD,eAAO,MAAM,QAAQ,iBAAW,CAAC;AACjC,yCAAyC;AACzC,MAAM,MAAM,aAAa,GAAG,aAAa,CAAC"}
|
package/dist/textarea/index.js
CHANGED
package/dist/theme.css
CHANGED
|
@@ -1592,3 +1592,43 @@ html.reduce-motion .rise-list > * {
|
|
|
1592
1592
|
animation-iteration-count: 1 !important;
|
|
1593
1593
|
transition-duration: 0.01ms !important;
|
|
1594
1594
|
}
|
|
1595
|
+
|
|
1596
|
+
/*
|
|
1597
|
+
* Marquee: an ellipsis at rest. While it scrolls (data-moving, set with its
|
|
1598
|
+
* animation) the text is one box to slide, cut off by fades at both edges; the
|
|
1599
|
+
* start's fade grows in as the text leaves it.
|
|
1600
|
+
*/
|
|
1601
|
+
@property --zen-marquee-fade-start {
|
|
1602
|
+
syntax: '<length>';
|
|
1603
|
+
inherits: false;
|
|
1604
|
+
initial-value: 0px;
|
|
1605
|
+
}
|
|
1606
|
+
.zen__marquee {
|
|
1607
|
+
display: block;
|
|
1608
|
+
min-width: 0;
|
|
1609
|
+
overflow: hidden;
|
|
1610
|
+
white-space: nowrap;
|
|
1611
|
+
text-overflow: ellipsis;
|
|
1612
|
+
}
|
|
1613
|
+
.zen__marquee[data-moving] {
|
|
1614
|
+
text-overflow: clip;
|
|
1615
|
+
mask-image: linear-gradient(
|
|
1616
|
+
to right,
|
|
1617
|
+
transparent,
|
|
1618
|
+
#000 var(--zen-marquee-fade-start),
|
|
1619
|
+
#000 calc(100% - 1rem),
|
|
1620
|
+
transparent
|
|
1621
|
+
);
|
|
1622
|
+
}
|
|
1623
|
+
.zen__marquee[data-moving]:dir(rtl) {
|
|
1624
|
+
mask-image: linear-gradient(
|
|
1625
|
+
to left,
|
|
1626
|
+
transparent,
|
|
1627
|
+
#000 var(--zen-marquee-fade-start),
|
|
1628
|
+
#000 calc(100% - 1rem),
|
|
1629
|
+
transparent
|
|
1630
|
+
);
|
|
1631
|
+
}
|
|
1632
|
+
.zen__marquee[data-moving] > .zen__marquee-content {
|
|
1633
|
+
display: inline-block;
|
|
1634
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../packages/utils/duration.ts"],"names":[],"mappings":"AAAA,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,UAM7C"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
//#region packages/utils/duration.ts
|
|
2
|
+
function e(e) {
|
|
3
|
+
let t = Math.floor(Math.max(e, 0)), n = Math.floor(t / 3600), r = Math.floor(t % 3600 / 60), i = String(t % 60).padStart(2, "0");
|
|
4
|
+
return n ? `${n}:${String(r).padStart(2, "0")}:${i}` : `${r}:${i}`;
|
|
5
|
+
}
|
|
6
|
+
//#endregion
|
|
7
|
+
export { e as formatDuration };
|
package/dist/utils/messages.d.ts
CHANGED
|
@@ -132,6 +132,8 @@ export declare const ENGLISH: {
|
|
|
132
132
|
nextSlide: string;
|
|
133
133
|
resize: string;
|
|
134
134
|
notifications: string;
|
|
135
|
+
seek: string;
|
|
136
|
+
timeOf: (time: string, total: string) => string;
|
|
135
137
|
};
|
|
136
138
|
export type Messages = typeof ENGLISH;
|
|
137
139
|
//# sourceMappingURL=messages.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../packages/utils/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;mBAOD,MAAM;;;;;;;;;;;;;;gBAgBT,MAAM;;;;;;;;;;;;;gCAeU,MAAM;uBACf,MAAM;;;4CAKe,MAAM,cAAc,MAAM;;wBAG9C,MAAM;;4BAEF,MAAM;;;;;;;;;;;;;;;;;;+BAsBH,MAAM;;2BAEV,MAAM,SAAS,MAAM;;;;;;6BAMnB,MAAM;4BACP,MAAM,QAAQ,MAAM;uBACzB,MAAM,UAAU,MAAM;;;;;;aAQhC,MAAM;;;uBAGI,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,SAAS,MAAM;yBAC9C,MAAM,QAAQ,MAAM;qBACxB,MAAM,QAAQ,MAAM;mBACtB,MAAM;;oBAIL,MAAM;qBACL,MAAM,SAAS,MAAM;oBAEtB,MAAM,SAAS,MAAM;oBACrB,MAAM,SAAS,MAAM;oBACrB,MAAM,UAAU,MAAM;sBACpB,MAAM,SAAS,MAAM;wBACnB,MAAM,SAAS,MAAM,SAAS,MAAM;oBAGxC,MAAM,SAAS,MAAM,UAAU,MAAM;kBACvC,MAAM,KAAK,MAAM,KAAK,MAAM;sBACxB,MAAM;;;;2BAOD,MAAM;;;;uBAMV,MAAM;oBACT,MAAM,QAAQ,MAAM;;;;;;;;;;;;;;qBAgBnB,MAAM;;cAEb,MAAM;;;;;;iBAMH,MAAM,SAAS,MAAM;mBACnB,MAAM
|
|
1
|
+
{"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../packages/utils/messages.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,OAAO;;;;;;mBAOD,MAAM;;;;;;;;;;;;;;gBAgBT,MAAM;;;;;;;;;;;;;gCAeU,MAAM;uBACf,MAAM;;;4CAKe,MAAM,cAAc,MAAM;;wBAG9C,MAAM;;4BAEF,MAAM;;;;;;;;;;;;;;;;;;+BAsBH,MAAM;;2BAEV,MAAM,SAAS,MAAM;;;;;;6BAMnB,MAAM;4BACP,MAAM,QAAQ,MAAM;uBACzB,MAAM,UAAU,MAAM;;;;;;aAQhC,MAAM;;;uBAGI,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,SAAS,MAAM;yBAC9C,MAAM,QAAQ,MAAM;qBACxB,MAAM,QAAQ,MAAM;mBACtB,MAAM;;oBAIL,MAAM;qBACL,MAAM,SAAS,MAAM;oBAEtB,MAAM,SAAS,MAAM;oBACrB,MAAM,SAAS,MAAM;oBACrB,MAAM,UAAU,MAAM;sBACpB,MAAM,SAAS,MAAM;wBACnB,MAAM,SAAS,MAAM,SAAS,MAAM;oBAGxC,MAAM,SAAS,MAAM,UAAU,MAAM;kBACvC,MAAM,KAAK,MAAM,KAAK,MAAM;sBACxB,MAAM;;;;2BAOD,MAAM;;;;uBAMV,MAAM;oBACT,MAAM,QAAQ,MAAM;;;;;;;;;;;;;;qBAgBnB,MAAM;;cAEb,MAAM;;;;;;iBAMH,MAAM,SAAS,MAAM;mBACnB,MAAM;;;;;;mBAQN,MAAM,SAAS,MAAM;CACvC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,OAAO,OAAO,CAAC"}
|
package/dist/utils/messages.js
CHANGED
|
@@ -127,7 +127,9 @@ var e = {
|
|
|
127
127
|
previousSlide: "Previous slide",
|
|
128
128
|
nextSlide: "Next slide",
|
|
129
129
|
resize: "Resize",
|
|
130
|
-
notifications: "Notifications (F8)"
|
|
130
|
+
notifications: "Notifications (F8)",
|
|
131
|
+
seek: "Seek",
|
|
132
|
+
timeOf: (e, t) => `${e} of ${t}`
|
|
131
133
|
};
|
|
132
134
|
//#endregion
|
|
133
135
|
export { e as ENGLISH };
|
package/dist/utils/slot.d.ts
CHANGED
|
@@ -5,9 +5,12 @@ type Props = Record<string, unknown>;
|
|
|
5
5
|
* props: a component's styles and attributes go onto the caller's own element,
|
|
6
6
|
* such as a router's Link. Classes are combined, styles merged (the child's
|
|
7
7
|
* win), event handlers both run (the child's first), and refs both receive the
|
|
8
|
-
* element; other props from the component win.
|
|
8
|
+
* element; other props from the component win. `before` goes ahead of the
|
|
9
|
+
* child's own content (e.g. a component's icon), also when that content is a
|
|
10
|
+
* render function such as a router NavLink's.
|
|
9
11
|
*/
|
|
10
|
-
export declare function Slot({ children, ...props }: ComponentProps<'a'> & {
|
|
12
|
+
export declare function Slot({ before, children, ...props }: ComponentProps<'a'> & {
|
|
13
|
+
before?: ReactNode;
|
|
11
14
|
children?: ReactNode;
|
|
12
15
|
}): ReactElement<Props, string | import('react').JSXElementConstructor<any>> | null;
|
|
13
16
|
export {};
|
package/dist/utils/slot.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../packages/utils/slot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAkB,YAAY,EAAE,SAAS,EAAO,MAAM,OAAO,CAAC;AAKnG,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErC
|
|
1
|
+
{"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../../packages/utils/slot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAkB,YAAY,EAAE,SAAS,EAAO,MAAM,OAAO,CAAC;AAKnG,KAAK,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErC;;;;;;;;GAQG;AACH,wBAAgB,IAAI,CAAC,EACjB,MAAM,EACN,QAAQ,EACR,GAAG,KAAK,EACX,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG;IAAE,MAAM,CAAC,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;CAAE,mFAqCpE"}
|
package/dist/utils/slot.js
CHANGED
|
@@ -2,20 +2,25 @@
|
|
|
2
2
|
import { cx as e } from "./cx.js";
|
|
3
3
|
import { mergeRefs as t } from "./refs.js";
|
|
4
4
|
import { cloneElement as n, isValidElement as r } from "react";
|
|
5
|
+
import { Fragment as i, jsxs as a } from "react/jsx-runtime";
|
|
5
6
|
//#region packages/utils/slot.tsx
|
|
6
|
-
function
|
|
7
|
-
if (!r(
|
|
8
|
-
let
|
|
9
|
-
for (let e of Object.keys(
|
|
10
|
-
let t =
|
|
11
|
-
/^on[A-Z]/.test(e) && typeof t == "function" && typeof n == "function" && (
|
|
7
|
+
function o({ before: o, children: s, ...c }) {
|
|
8
|
+
if (!r(s)) return null;
|
|
9
|
+
let l = s, u = c, d = l.props, f = { ...u };
|
|
10
|
+
for (let e of Object.keys(u)) {
|
|
11
|
+
let t = u[e], n = d[e];
|
|
12
|
+
/^on[A-Z]/.test(e) && typeof t == "function" && typeof n == "function" && (f[e] = (...e) => {
|
|
12
13
|
n(...e), t(...e);
|
|
13
14
|
});
|
|
14
15
|
}
|
|
15
|
-
|
|
16
|
-
...
|
|
17
|
-
...
|
|
18
|
-
}),
|
|
16
|
+
if (f.className = e(u.className, d.className), (u.style || d.style) && (f.style = {
|
|
17
|
+
...u.style,
|
|
18
|
+
...d.style
|
|
19
|
+
}), u.ref && d.ref && (f.ref = t(u.ref, d.ref)), o != null) {
|
|
20
|
+
let e = d.children;
|
|
21
|
+
f.children = typeof e == "function" ? ((...t) => /* @__PURE__ */ a(i, { children: [o, e(...t)] })) : /* @__PURE__ */ a(i, { children: [o, e] });
|
|
22
|
+
}
|
|
23
|
+
return n(l, f);
|
|
19
24
|
}
|
|
20
25
|
//#endregion
|
|
21
|
-
export {
|
|
26
|
+
export { o as Slot };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAnchoredPopup.d.ts","sourceRoot":"","sources":["../../packages/utils/useAnchoredPopup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAmD,MAAM,OAAO,CAAC;AAElG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EAAE,EACrE,KAAe,EACf,MAAU,EACV,UAAkB,EAClB,YAAY,GACf,GAAE,oBAAyB;;;oBAgBb,OAAO;;;eA6CkD,aAAa;;;;;;;;;;;;;EAJpF;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM;;WACoC,aAAa;EACpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CACzB,EAAE,EAAE,MAAM,EACV,EAAE,KAAe,EAAE,MAAU,EAAE,KAAK,EAAE,IAAc,EAAE,GAAE,aAAkB,GAC3E,aAAa,
|
|
1
|
+
{"version":3,"file":"useAnchoredPopup.d.ts","sourceRoot":"","sources":["../../packages/utils/useAnchoredPopup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAmD,MAAM,OAAO,CAAC;AAElG;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,WAAW,GAAG,cAAc,EAAE,EACrE,KAAe,EACf,MAAU,EACV,UAAkB,EAClB,YAAY,GACf,GAAE,oBAAyB;;;oBAgBb,OAAO;;;eA6CkD,aAAa;;;;;;;;;;;;;EAJpF;AAED,gGAAgG;AAChG,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM;;WACoC,aAAa;EACpF;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CACzB,EAAE,EAAE,MAAM,EACV,EAAE,KAAe,EAAE,MAAU,EAAE,KAAK,EAAE,IAAc,EAAE,GAAE,aAAkB,GAC3E,aAAa,CA4Bf;AAED,UAAU,aAAa;IACnB,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,OAAO,GAAG,UAAU,CAAC;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC7B;AAYD,8FAA8F;AAC9F,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,QAiCnE;AA6CD,MAAM,WAAW,oBAAoB;IACjC,sFAAsF;IACtF,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACnC,oCAAoC;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8DAA8D;IAC9D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;CAC1C"}
|
|
@@ -54,12 +54,13 @@ function s(e, { align: t = "start", offset: n = 4, width: r, side: i = "below" }
|
|
|
54
54
|
let a = i === "beside" ? "inline-end span-block-end" : {
|
|
55
55
|
start: "block-end span-inline-end",
|
|
56
56
|
end: "block-end span-inline-start",
|
|
57
|
-
center: "block-end
|
|
57
|
+
center: "block-end span-all"
|
|
58
58
|
}[t];
|
|
59
59
|
return {
|
|
60
60
|
positionAnchor: `--${e}`,
|
|
61
61
|
positionArea: a,
|
|
62
|
-
|
|
62
|
+
...i !== "beside" && t === "center" && { justifySelf: "anchor-center" },
|
|
63
|
+
positionTryFallbacks: i === "beside" || t !== "center" ? "flip-inline, flip-block, flip-block flip-inline" : "flip-block",
|
|
63
64
|
inset: "auto",
|
|
64
65
|
...r === "at-least" && {
|
|
65
66
|
width: "max-content",
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { RefObject } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Keeps a fixed bar's height in a CSS variable on its parent (0px while the bar
|
|
4
|
+
* is hidden), so the bars and the page beside it can stack on it and pad for it.
|
|
5
|
+
*/
|
|
6
|
+
export declare function useHeightVar(ref: RefObject<HTMLElement | null>, name: `--${string}`): void;
|
|
7
|
+
//# sourceMappingURL=useHeightVar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useHeightVar.d.ts","sourceRoot":"","sources":["../../packages/utils/useHeightVar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAmB,MAAM,OAAO,CAAC;AAEnD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,EAAE,IAAI,EAAE,KAAK,MAAM,EAAE,QAcnF"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { useLayoutEffect as e } from "react";
|
|
3
|
+
//#region packages/utils/useHeightVar.ts
|
|
4
|
+
function t(t, n) {
|
|
5
|
+
e(() => {
|
|
6
|
+
let e = t.current, r = e?.parentElement;
|
|
7
|
+
if (!e || !r) return;
|
|
8
|
+
let i = () => r.style.setProperty(n, `${e.offsetHeight}px`);
|
|
9
|
+
i();
|
|
10
|
+
let a = new ResizeObserver(i);
|
|
11
|
+
return a.observe(e), () => {
|
|
12
|
+
a.disconnect(), r.style.removeProperty(n);
|
|
13
|
+
};
|
|
14
|
+
}, [t, n]);
|
|
15
|
+
}
|
|
16
|
+
//#endregion
|
|
17
|
+
export { t as useHeightVar };
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { RefCallback } from 'react';
|
|
2
|
+
export interface MediaState {
|
|
3
|
+
/** Playing, or about to (not paused). */
|
|
4
|
+
playing: boolean;
|
|
5
|
+
/** Playing but stalled, waiting for data. */
|
|
6
|
+
waiting: boolean;
|
|
7
|
+
ended: boolean;
|
|
8
|
+
/** Seconds in. */
|
|
9
|
+
currentTime: number;
|
|
10
|
+
/** Seconds long; 0 until known, and for a live stream. */
|
|
11
|
+
duration: number;
|
|
12
|
+
/** Seconds loaded from the start of the stretch being played: how far it can play without waiting. */
|
|
13
|
+
buffered: number;
|
|
14
|
+
/** 0 to 1. */
|
|
15
|
+
volume: number;
|
|
16
|
+
muted: boolean;
|
|
17
|
+
playbackRate: number;
|
|
18
|
+
error: MediaError | null;
|
|
19
|
+
}
|
|
20
|
+
export interface MediaPlayer extends MediaState {
|
|
21
|
+
/** Rejects when the browser won't play yet (autoplay before any tap) or can't play the source. */
|
|
22
|
+
play: () => Promise<void>;
|
|
23
|
+
pause: () => void;
|
|
24
|
+
toggle: () => Promise<void>;
|
|
25
|
+
/** Jump to a time, in seconds. */
|
|
26
|
+
seek: (time: number) => void;
|
|
27
|
+
setVolume: (volume: number) => void;
|
|
28
|
+
setMuted: (muted: boolean) => void;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Plays audio or video through your own <audio> or <video> element, and keeps
|
|
32
|
+
* its state for the UI: playing, time, duration, buffered, volume. Returns the
|
|
33
|
+
* ref for the element, kept apart from the player so reading the player isn't
|
|
34
|
+
* reading a ref: `const [ref, player] = useMediaPlayer(); <audio ref={ref} />`.
|
|
35
|
+
* Pair it with SeekBar, and with useMediaSession for the lock screen and media keys.
|
|
36
|
+
*/
|
|
37
|
+
export declare function useMediaPlayer(): [ref: RefCallback<HTMLMediaElement>, player: MediaPlayer];
|
|
38
|
+
//# sourceMappingURL=useMediaPlayer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useMediaPlayer.d.ts","sourceRoot":"","sources":["../../packages/utils/useMediaPlayer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAA0C,MAAM,OAAO,CAAC;AAE5E,MAAM,WAAW,UAAU;IACvB,yCAAyC;IACzC,OAAO,EAAE,OAAO,CAAC;IACjB,6CAA6C;IAC7C,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,kBAAkB;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,sGAAsG;IACtG,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;CAC5B;AAED,MAAM,WAAW,WAAY,SAAQ,UAAU;IAC3C,kGAAkG;IAClG,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,kCAAkC;IAClC,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAC7B,SAAS,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;IACpC,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;CACtC;AAuDD;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,CAAC,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,CA8C1F"}
|