@jonmilner/ui 0.0.0-stage → 0.1.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.
- package/THIRD_PARTY_NOTICES.md +51 -0
- package/dist/AlertDialog/index.d.mts +21 -0
- package/dist/AlertDialog/index.mjs +29 -0
- package/dist/Badge/Badge.css +2 -0
- package/dist/Badge/Badge.css.mjs +24 -0
- package/dist/Badge/index.d.mts +11 -0
- package/dist/Badge/index.mjs +54 -0
- package/dist/Box/Box.css +2 -0
- package/dist/Box/Box.css.mjs +8 -0
- package/dist/Box/index.d.mts +8 -0
- package/dist/Box/index.mjs +15 -0
- package/dist/Button/Button.css +2 -0
- package/dist/Button/Button.css.mjs +25 -0
- package/dist/Button/index.d.mts +18 -0
- package/dist/Button/index.mjs +97 -0
- package/dist/Checkbox/Checkbox.css +2 -0
- package/dist/Checkbox/Checkbox.css.mjs +8 -0
- package/dist/Checkbox/index.d.mts +6 -0
- package/dist/Checkbox/index.mjs +45 -0
- package/dist/Chip/Chip.css +2 -0
- package/dist/Chip/Chip.css.mjs +17 -0
- package/dist/Chip/index.d.mts +13 -0
- package/dist/Chip/index.mjs +73 -0
- package/dist/Clickable/Clickable.css +2 -0
- package/dist/Clickable/Clickable.css.mjs +8 -0
- package/dist/Clickable/index.d.mts +11 -0
- package/dist/Clickable/index.mjs +28 -0
- package/dist/Dialog/Dialog.css +2 -0
- package/dist/Dialog/Dialog.css.d.mts +3 -0
- package/dist/Dialog/Dialog.css.mjs +12 -0
- package/dist/Dialog/client.d.mts +12 -0
- package/dist/Dialog/client.mjs +31 -0
- package/dist/Dialog/index.d.mts +30 -0
- package/dist/Dialog/index.mjs +85 -0
- package/dist/Field/Field.css +2 -0
- package/dist/Field/Field.css.mjs +8 -0
- package/dist/Field/client.mjs +26 -0
- package/dist/Field/index.d.mts +20 -0
- package/dist/Field/index.mjs +88 -0
- package/dist/Heading/Heading.css +2 -0
- package/dist/Heading/Heading.css.mjs +8 -0
- package/dist/Heading/index.d.mts +9 -0
- package/dist/Heading/index.mjs +27 -0
- package/dist/Icon/Icon.css +2 -0
- package/dist/Icon/Icon.css.mjs +17 -0
- package/dist/Icon/index.d.mts +12 -0
- package/dist/Icon/index.mjs +24 -0
- package/dist/IconButton/IconButton.css +2 -0
- package/dist/IconButton/IconButton.css.mjs +24 -0
- package/dist/IconButton/index.d.mts +15 -0
- package/dist/IconButton/index.mjs +25 -0
- package/dist/Inline/Inline.css +2 -0
- package/dist/Inline/Inline.css.mjs +8 -0
- package/dist/Inline/index.d.mts +14 -0
- package/dist/Inline/index.mjs +17 -0
- package/dist/Menu/Menu.css +2 -0
- package/dist/Menu/Menu.css.mjs +8 -0
- package/dist/Menu/client.d.mts +9 -0
- package/dist/Menu/client.mjs +27 -0
- package/dist/Menu/index.d.mts +34 -0
- package/dist/Menu/index.mjs +107 -0
- package/dist/MultiSelect/MultiSelect.css +2 -0
- package/dist/MultiSelect/MultiSelect.css.mjs +8 -0
- package/dist/MultiSelect/client.d.mts +8 -0
- package/dist/MultiSelect/client.mjs +93 -0
- package/dist/MultiSelect/index.d.mts +23 -0
- package/dist/MultiSelect/index.mjs +75 -0
- package/dist/SearchField/SearchField.css +2 -0
- package/dist/SearchField/SearchField.css.mjs +27 -0
- package/dist/SearchField/client.d.mts +5 -0
- package/dist/SearchField/client.mjs +74 -0
- package/dist/SearchField/index.d.mts +25 -0
- package/dist/SearchField/index.mjs +36 -0
- package/dist/Stack/Stack.css +2 -0
- package/dist/Stack/Stack.css.mjs +8 -0
- package/dist/Stack/index.d.mts +14 -0
- package/dist/Stack/index.mjs +15 -0
- package/dist/Tabs/Tabs.css +2 -0
- package/dist/Tabs/Tabs.css.mjs +8 -0
- package/dist/Tabs/index.d.mts +20 -0
- package/dist/Tabs/index.mjs +88 -0
- package/dist/Tag/Tag.css +2 -0
- package/dist/Tag/Tag.css.mjs +17 -0
- package/dist/Tag/index.d.mts +13 -0
- package/dist/Tag/index.mjs +82 -0
- package/dist/Text/Text.css +2 -0
- package/dist/Text/Text.css.mjs +32 -0
- package/dist/Text/index.d.mts +16 -0
- package/dist/Text/index.mjs +25 -0
- package/dist/Toast/Toast.css +2 -0
- package/dist/Toast/Toast.css.mjs +18 -0
- package/dist/Toast/client.d.mts +46 -0
- package/dist/Toast/client.mjs +219 -0
- package/dist/Toast/index.d.mts +7 -0
- package/dist/Toast/index.mjs +5 -0
- package/dist/base.css +6 -0
- package/dist/brands/brand.d.mts +9 -0
- package/dist/brands/brand.mjs +4 -0
- package/dist/brands/check-fonts.mjs +15 -0
- package/dist/brands/default.d.mts +4 -0
- package/dist/brands/default.mjs +74 -0
- package/dist/brands/font.d.mts +17 -0
- package/dist/brands/font.mjs +35 -0
- package/dist/brands/forced-colors.mjs +18 -0
- package/dist/brands/index.d.mts +8 -0
- package/dist/brands/index.mjs +5 -0
- package/dist/brands/metrics.mjs +40 -0
- package/dist/contrast/color.d.mts +3 -0
- package/dist/contrast/color.mjs +222 -0
- package/dist/contrast/contrast.d.mts +18 -0
- package/dist/contrast/contrast.mjs +52 -0
- package/dist/contrast/mixes.mjs +33 -0
- package/dist/docs/AlertDialog.md +113 -0
- package/dist/docs/Badge.md +76 -0
- package/dist/docs/Box.md +87 -0
- package/dist/docs/Button.md +98 -0
- package/dist/docs/Checkbox.md +107 -0
- package/dist/docs/Chip.md +92 -0
- package/dist/docs/Clickable.md +82 -0
- package/dist/docs/Dialog.md +166 -0
- package/dist/docs/Field.md +143 -0
- package/dist/docs/Heading.md +69 -0
- package/dist/docs/Icon.md +116 -0
- package/dist/docs/IconButton.md +83 -0
- package/dist/docs/Inline.md +79 -0
- package/dist/docs/Menu.md +181 -0
- package/dist/docs/MultiSelect.md +120 -0
- package/dist/docs/SearchField.md +127 -0
- package/dist/docs/Stack.md +79 -0
- package/dist/docs/Tabs.md +130 -0
- package/dist/docs/Tag.md +97 -0
- package/dist/docs/Text.md +90 -0
- package/dist/docs/Toast.md +115 -0
- package/dist/docs/llms.txt +33 -0
- package/dist/docs/manifest.json +2649 -0
- package/dist/docs/manifest.schema.json +96 -0
- package/dist/docs/migrations/README.md +27 -0
- package/dist/docs/theming.md +59 -0
- package/dist/icons/ArrowLeftIcon.d.mts +4 -0
- package/dist/icons/ArrowLeftIcon.mjs +11 -0
- package/dist/icons/ArrowRightIcon.d.mts +4 -0
- package/dist/icons/ArrowRightIcon.mjs +11 -0
- package/dist/icons/CheckIcon.d.mts +4 -0
- package/dist/icons/CheckIcon.mjs +11 -0
- package/dist/icons/ChevronDownIcon.d.mts +4 -0
- package/dist/icons/ChevronDownIcon.mjs +11 -0
- package/dist/icons/ChevronRightIcon.d.mts +4 -0
- package/dist/icons/ChevronRightIcon.mjs +11 -0
- package/dist/icons/CircleAlertIcon.d.mts +4 -0
- package/dist/icons/CircleAlertIcon.mjs +15 -0
- package/dist/icons/CircleCheckIcon.d.mts +4 -0
- package/dist/icons/CircleCheckIcon.mjs +15 -0
- package/dist/icons/CircleDotIcon.d.mts +4 -0
- package/dist/icons/CircleDotIcon.mjs +19 -0
- package/dist/icons/CircleSlashIcon.d.mts +4 -0
- package/dist/icons/CircleSlashIcon.mjs +15 -0
- package/dist/icons/GitMergeIcon.d.mts +4 -0
- package/dist/icons/GitMergeIcon.mjs +23 -0
- package/dist/icons/GitPullRequestClosedIcon.d.mts +4 -0
- package/dist/icons/GitPullRequestClosedIcon.mjs +23 -0
- package/dist/icons/GitPullRequestDraftIcon.d.mts +4 -0
- package/dist/icons/GitPullRequestDraftIcon.mjs +23 -0
- package/dist/icons/GitPullRequestIcon.d.mts +4 -0
- package/dist/icons/GitPullRequestIcon.mjs +23 -0
- package/dist/icons/InboxIcon.d.mts +4 -0
- package/dist/icons/InboxIcon.mjs +11 -0
- package/dist/icons/InfoIcon.d.mts +4 -0
- package/dist/icons/InfoIcon.mjs +15 -0
- package/dist/icons/LoaderCircleIcon.d.mts +4 -0
- package/dist/icons/LoaderCircleIcon.mjs +11 -0
- package/dist/icons/RefreshCwIcon.d.mts +4 -0
- package/dist/icons/RefreshCwIcon.mjs +15 -0
- package/dist/icons/SearchIcon.d.mts +4 -0
- package/dist/icons/SearchIcon.mjs +15 -0
- package/dist/icons/SettingsIcon.d.mts +4 -0
- package/dist/icons/SettingsIcon.mjs +15 -0
- package/dist/icons/XIcon.d.mts +4 -0
- package/dist/icons/XIcon.mjs +11 -0
- package/dist/icons/index.d.mts +25 -0
- package/dist/icons/index.mjs +45 -0
- package/dist/index.d.mts +28 -0
- package/dist/index.mjs +25 -0
- package/dist/popup/client.d.mts +9 -0
- package/dist/popup/client.mjs +31 -0
- package/dist/styles/atoms.css +2 -0
- package/dist/styles/atoms.css.d.mts +219 -0
- package/dist/styles/atoms.css.mjs +2669 -0
- package/dist/styles/button-fills.mjs +17 -0
- package/dist/styles/highlight.mjs +8 -0
- package/dist/styles/hover-tint.mjs +4 -0
- package/dist/styles/join.mjs +4 -0
- package/dist/styles/layers.css +2 -0
- package/dist/styles/part-props.d.mts +8 -0
- package/dist/styles/split-style-props.mjs +9 -0
- package/dist/testing/index.d.mts +4 -0
- package/dist/testing/index.mjs +3 -0
- package/dist/testing/motion.d.mts +22 -0
- package/dist/testing/motion.mjs +49 -0
- package/dist/theme/FontCheck.mjs +11 -0
- package/dist/theme/ThemeProvider.d.mts +15 -0
- package/dist/theme/ThemeProvider.mjs +23 -0
- package/dist/theme/define-theme.d.mts +9 -0
- package/dist/theme/define-theme.mjs +84 -0
- package/dist/theme/use-theme-container.mjs +15 -0
- package/dist/tokens/contract.d.mts +110 -0
- package/dist/tokens/contract.mjs +17 -0
- package/dist/tokens/index.d.mts +2 -0
- package/dist/tokens/index.mjs +1 -0
- package/dist/tokens/roles.d.mts +6 -0
- package/dist/tokens/roles.mjs +24 -0
- package/dist/tokens/scales.d.mts +100 -0
- package/dist/tokens/scales.mjs +103 -0
- package/dist/types.d.mts +7 -0
- package/package.json +159 -3
- package/README.md +0 -3
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { join as e } from "../styles/join.mjs";
|
|
2
|
+
import { splitStyleProps as t } from "../styles/split-style-props.mjs";
|
|
3
|
+
import { Box as n } from "../Box/index.mjs";
|
|
4
|
+
import { Clickable as r } from "../Clickable/index.mjs";
|
|
5
|
+
import { Text as i } from "../Text/index.mjs";
|
|
6
|
+
import { indicator as a, list as o, panel as s, tab as c } from "./Tabs.css.mjs";
|
|
7
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
8
|
+
import { Tabs as d } from "@base-ui/react/tabs";
|
|
9
|
+
//#region src/Tabs/index.tsx
|
|
10
|
+
function f({ orientation: e = "horizontal", display: r = "flex", flexDirection: i = e === "vertical" ? "row" : "column", flexWrap: a = e === "vertical" ? "wrap" : "nowrap", gap: o = "16", className: s, style: c, ...u }) {
|
|
11
|
+
let [f, p] = t(u);
|
|
12
|
+
return /* @__PURE__ */ l(d.Root, {
|
|
13
|
+
...p,
|
|
14
|
+
orientation: e,
|
|
15
|
+
render: /* @__PURE__ */ l(n, {
|
|
16
|
+
display: r,
|
|
17
|
+
flexDirection: i,
|
|
18
|
+
flexWrap: a,
|
|
19
|
+
gap: o,
|
|
20
|
+
...f,
|
|
21
|
+
className: s,
|
|
22
|
+
style: c
|
|
23
|
+
})
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
function p({ display: r = "flex", flexWrap: i = "wrap", gap: a = "4", position: s = "relative", className: c, style: u, ...f }) {
|
|
27
|
+
let [p, m] = t(f);
|
|
28
|
+
return /* @__PURE__ */ l(d.List, {
|
|
29
|
+
...m,
|
|
30
|
+
render: /* @__PURE__ */ l(n, {
|
|
31
|
+
display: r,
|
|
32
|
+
flexWrap: i,
|
|
33
|
+
gap: a,
|
|
34
|
+
position: s,
|
|
35
|
+
...p,
|
|
36
|
+
className: e(o, c),
|
|
37
|
+
style: u
|
|
38
|
+
})
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
function m({ children: o, size: s = "sm", font: f = "label", weight: p = "medium", leading: m, paddingInline: h = "12", justifyContent: g = "start", minBlockSize: _ = "med", position: v = "relative", color: y = "fgMuted", className: b, style: x, ...S }) {
|
|
42
|
+
let [C, w] = t(S);
|
|
43
|
+
return /* @__PURE__ */ u(d.Tab, {
|
|
44
|
+
...w,
|
|
45
|
+
render: /* @__PURE__ */ l(r, {
|
|
46
|
+
color: y,
|
|
47
|
+
justifyContent: g,
|
|
48
|
+
minBlockSize: _,
|
|
49
|
+
paddingInline: h,
|
|
50
|
+
position: v,
|
|
51
|
+
...C,
|
|
52
|
+
className: e(c, b),
|
|
53
|
+
style: x
|
|
54
|
+
}),
|
|
55
|
+
children: [/* @__PURE__ */ l(i, {
|
|
56
|
+
as: "span",
|
|
57
|
+
size: s,
|
|
58
|
+
font: f,
|
|
59
|
+
weight: p,
|
|
60
|
+
leading: m,
|
|
61
|
+
children: o
|
|
62
|
+
}), /* @__PURE__ */ l(n, {
|
|
63
|
+
"aria-hidden": !0,
|
|
64
|
+
as: "span",
|
|
65
|
+
className: a,
|
|
66
|
+
position: "absolute"
|
|
67
|
+
})]
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
function h({ flexGrow: r = 1, className: i, style: a, ...o }) {
|
|
71
|
+
let [c, u] = t(o);
|
|
72
|
+
return /* @__PURE__ */ l(d.Panel, {
|
|
73
|
+
...u,
|
|
74
|
+
render: /* @__PURE__ */ l(n, {
|
|
75
|
+
flexGrow: r,
|
|
76
|
+
...c,
|
|
77
|
+
className: e(s, i),
|
|
78
|
+
style: a
|
|
79
|
+
})
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
var g = Object.assign(f, {
|
|
83
|
+
List: p,
|
|
84
|
+
Tab: m,
|
|
85
|
+
Panel: h
|
|
86
|
+
});
|
|
87
|
+
//#endregion
|
|
88
|
+
export { g as Tabs };
|
package/dist/Tag/Tag.css
ADDED
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
|
|
2
|
+
@layer components.tag{._1jsyd8s0{border-width:var(--space-1);border-style:solid;border-color:#0000}._1jsyd8s1{overflow-wrap:anywhere}._1jsyd8s0:hover ._1jsyd8s1,._1jsyd8s0:focus-within ._1jsyd8s1{white-space:normal;text-overflow:clip;padding-block:var(--space-4);margin-block:0}._1jsyd8s2{text-decoration:underline}._1jsyd8s3:hover{background-color:var(--color-bg)}@media (forced-colors:active){._1jsyd8s0{color:canvastext;background-color:canvas;border-color:canvastext}}}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import "../styles/layers.css";
|
|
2
|
+
import "./Tag.css";
|
|
3
|
+
/* empty css */
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
6
|
+
//#region src/Tag/Tag.css.ts
|
|
7
|
+
var t = "_1jsyd8s0", n = "_1jsyd8s1", r = "_1jsyd8s2", i = "_1jsyd8s3", a = e({
|
|
8
|
+
defaultClassName: "_1jsyd8s4",
|
|
9
|
+
variantClassNames: { size: {
|
|
10
|
+
sm: "_1jsyd8s5",
|
|
11
|
+
med: "_1jsyd8s6"
|
|
12
|
+
} },
|
|
13
|
+
defaultVariants: {},
|
|
14
|
+
compoundVariants: []
|
|
15
|
+
});
|
|
16
|
+
//#endregion
|
|
17
|
+
export { n as label, r as link, i as remove, t as root, a as tag };
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { OmitEach } from "../types.mjs";
|
|
2
|
+
import { StyleProps } from "../Box/index.mjs";
|
|
3
|
+
import { ComponentPropsWithRef } from "react";
|
|
4
|
+
//#region src/Tag/index.d.ts
|
|
5
|
+
export type TagOwnProps = {
|
|
6
|
+
href?: string;
|
|
7
|
+
onRemove?: () => void;
|
|
8
|
+
removeLabel?: string;
|
|
9
|
+
size?: "sm" | "med";
|
|
10
|
+
};
|
|
11
|
+
export type TagProps = StyleProps & TagOwnProps & OmitEach<ComponentPropsWithRef<"span">, keyof StyleProps | keyof TagOwnProps>;
|
|
12
|
+
export declare function Tag({ size, href, onRemove, removeLabel, display, alignItems, gap, minBlockSize, paddingInlineStart, paddingInlineEnd, borderRadius, backgroundColor, color, maxInlineSize, className, style, children, ...props }: TagProps): import("react").JSX.Element | null;
|
|
13
|
+
//#endregion
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { join as e } from "../styles/join.mjs";
|
|
2
|
+
import { Box as t } from "../Box/index.mjs";
|
|
3
|
+
import { Clickable as n } from "../Clickable/index.mjs";
|
|
4
|
+
import { Text as r } from "../Text/index.mjs";
|
|
5
|
+
import { XIcon as i } from "../icons/XIcon.mjs";
|
|
6
|
+
import { size as a } from "../tokens/scales.mjs";
|
|
7
|
+
import { label as o, link as s, root as c, tag as l } from "./Tag.css.mjs";
|
|
8
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
9
|
+
//#region src/Tag/index.tsx
|
|
10
|
+
function f(e) {
|
|
11
|
+
if (typeof e == "string" || typeof e == "number") return String(e);
|
|
12
|
+
if (!Array.isArray(e)) return;
|
|
13
|
+
let t = e.map(f);
|
|
14
|
+
return t.every((e) => e !== void 0) ? t.join("") : void 0;
|
|
15
|
+
}
|
|
16
|
+
var p = /* @__PURE__ */ new Set([...Object.keys(a), "full"]), m = /* @__PURE__ */ new Set([
|
|
17
|
+
"",
|
|
18
|
+
"none",
|
|
19
|
+
"auto",
|
|
20
|
+
"initial",
|
|
21
|
+
"unset"
|
|
22
|
+
]);
|
|
23
|
+
function h(e, t) {
|
|
24
|
+
let n = t?.maxInlineSize ?? t?.maxWidth;
|
|
25
|
+
return n == null ? typeof e != "object" || !e ? p.has(e) : e.base != null && Object.values(e).every((e) => e == null || p.has(e)) : !m.has(String(n).trim()) && !/-content\b/.test(String(n));
|
|
26
|
+
}
|
|
27
|
+
var g = {
|
|
28
|
+
sm: {
|
|
29
|
+
paddingInlineStart: "6",
|
|
30
|
+
paddingInlineEnd: "6"
|
|
31
|
+
},
|
|
32
|
+
med: {
|
|
33
|
+
paddingInlineStart: "8",
|
|
34
|
+
paddingInlineEnd: "8"
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
function _({ size: a = "med", href: p, onRemove: m, removeLabel: _, display: v = "inline-flex", alignItems: y = "center", gap: b = "2", minBlockSize: x = "xs", paddingInlineStart: S = g[a].paddingInlineStart, paddingInlineEnd: C = m ? "2" : g[a].paddingInlineEnd, borderRadius: w = "lg", backgroundColor: T = "bgMuted", color: E = "fg", maxInlineSize: D, className: O, style: k, children: A, ...j }) {
|
|
38
|
+
if (A == null || typeof A == "boolean" || A === "" || f(A) === "") return null;
|
|
39
|
+
let M = h(D, k), N = /* @__PURE__ */ u(r, {
|
|
40
|
+
as: "span",
|
|
41
|
+
className: o,
|
|
42
|
+
font: "label",
|
|
43
|
+
paddingBlock: M ? void 0 : "4",
|
|
44
|
+
size: a,
|
|
45
|
+
truncate: M,
|
|
46
|
+
weight: "medium",
|
|
47
|
+
children: A
|
|
48
|
+
}), P = f(A), F = _ ?? (P === void 0 ? void 0 : `Remove ${P}`);
|
|
49
|
+
return /* @__PURE__ */ d(t, {
|
|
50
|
+
...j,
|
|
51
|
+
alignItems: y,
|
|
52
|
+
as: "span",
|
|
53
|
+
backgroundColor: T,
|
|
54
|
+
borderRadius: w,
|
|
55
|
+
className: e(c, l({ size: a }), O),
|
|
56
|
+
color: E,
|
|
57
|
+
display: v,
|
|
58
|
+
gap: b,
|
|
59
|
+
maxInlineSize: D,
|
|
60
|
+
minBlockSize: x,
|
|
61
|
+
paddingInlineEnd: C,
|
|
62
|
+
paddingInlineStart: S,
|
|
63
|
+
style: k,
|
|
64
|
+
children: [p ? /* @__PURE__ */ u(n, {
|
|
65
|
+
as: "a",
|
|
66
|
+
className: s,
|
|
67
|
+
href: p,
|
|
68
|
+
overflow: "hidden",
|
|
69
|
+
children: N
|
|
70
|
+
}) : N, m && /* @__PURE__ */ u(n, {
|
|
71
|
+
alignSelf: "start",
|
|
72
|
+
"aria-label": F ?? "Remove",
|
|
73
|
+
borderRadius: "full",
|
|
74
|
+
className: "_1jsyd8s3",
|
|
75
|
+
flexShrink: 0,
|
|
76
|
+
onClick: m,
|
|
77
|
+
children: /* @__PURE__ */ u(i, { size: a })
|
|
78
|
+
})]
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
//#endregion
|
|
82
|
+
export { _ as Tag };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
|
|
2
|
+
@layer components.text{._1mgdisq3{--_1mgdisq0:var(--line-height-med);--_1mgdisq1:calc((var(--font-trim-body-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-body-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-body);font-size:var(--font-size-med);font-weight:var(--font-weight-regular);line-height:var(--_1mgdisq0)}._1mgdisq3:before{content:"";margin-block-end:var(--_1mgdisq1);display:table}._1mgdisq3:after{content:"";margin-block-start:var(--_1mgdisq2);display:table}:where(._1mgdisq3)>._1mgdisq3:where(a,abbr,b,bdi,bdo,cite,code,data,del,dfn,em,i,ins,kbd,label,mark,output,q,s,samp,small,span,strong,sub,sup,time,u,var){--_1mgdisq0:inherit;--_1mgdisq1:inherit;--_1mgdisq2:inherit;font-family:inherit;font-size:inherit;font-weight:inherit;line-height:inherit;display:inline}:where(._1mgdisq3)>._1mgdisq3:where(a,abbr,b,bdi,bdo,cite,code,data,del,dfn,em,i,ins,kbd,label,mark,output,q,s,samp,small,span,strong,sub,sup,time,u,var):before,:where(._1mgdisq3)>._1mgdisq3:where(a,abbr,b,bdi,bdo,cite,code,data,del,dfn,em,i,ins,kbd,label,mark,output,q,s,samp,small,span,strong,sub,sup,time,u,var):after{content:none}._1mgdisq4{--_1mgdisq1:calc((var(--font-trim-body-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-body-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-body)}._1mgdisq5{--_1mgdisq1:calc((var(--font-trim-heading-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-heading-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-heading)}._1mgdisq6{--_1mgdisq1:calc((var(--font-trim-display-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-display-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-display)}._1mgdisq7{--_1mgdisq1:calc((var(--font-trim-label-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-label-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-label)}._1mgdisq8{--_1mgdisq1:calc((var(--font-trim-mono-cap) - var(--_1mgdisq0) / 2) * 1em);--_1mgdisq2:calc((var(--font-trim-mono-baseline) - var(--_1mgdisq0) / 2) * 1em);font-family:var(--font-mono)}._1mgdisq9{font-size:var(--font-size-xs)}._1mgdisqa{font-size:var(--font-size-sm)}._1mgdisqb{font-size:var(--font-size-med)}._1mgdisqc{font-size:var(--font-size-lg)}._1mgdisqd{font-size:var(--font-size-xl)}._1mgdisqe{font-size:var(--font-size-2xl)}._1mgdisqf{font-size:var(--font-size-3xl)}._1mgdisqg{font-size:var(--font-size-4xl)}._1mgdisqh{font-weight:var(--font-weight-regular)}._1mgdisqi{font-weight:var(--font-weight-medium)}._1mgdisqj{font-weight:var(--font-weight-semibold)}._1mgdisqk{font-weight:var(--font-weight-bold)}._1mgdisql{--_1mgdisq0:var(--line-height-sm);line-height:var(--_1mgdisq0)}._1mgdisqm{--_1mgdisq0:var(--line-height-med);line-height:var(--_1mgdisq0)}._1mgdisqn{--_1mgdisq0:var(--line-height-lg);line-height:var(--_1mgdisq0)}._1mgdisqo{text-overflow:ellipsis;white-space:nowrap;margin-block-start:var(--_1mgdisq1);margin-block-end:var(--_1mgdisq2);padding-block-start:calc(-1 * var(--_1mgdisq1));padding-block-end:calc(-1 * var(--_1mgdisq2))}}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import "../styles/layers.css";
|
|
2
|
+
import "./Text.css";
|
|
3
|
+
/* empty css */
|
|
4
|
+
/* empty css */
|
|
5
|
+
//#region src/Text/Text.css.ts
|
|
6
|
+
var e = "_1mgdisq3", t = {
|
|
7
|
+
body: "_1mgdisq4",
|
|
8
|
+
heading: "_1mgdisq5",
|
|
9
|
+
display: "_1mgdisq6",
|
|
10
|
+
label: "_1mgdisq7",
|
|
11
|
+
mono: "_1mgdisq8"
|
|
12
|
+
}, n = {
|
|
13
|
+
xs: "_1mgdisq9",
|
|
14
|
+
sm: "_1mgdisqa",
|
|
15
|
+
med: "_1mgdisqb",
|
|
16
|
+
lg: "_1mgdisqc",
|
|
17
|
+
xl: "_1mgdisqd",
|
|
18
|
+
"2xl": "_1mgdisqe",
|
|
19
|
+
"3xl": "_1mgdisqf",
|
|
20
|
+
"4xl": "_1mgdisqg"
|
|
21
|
+
}, r = {
|
|
22
|
+
regular: "_1mgdisqh",
|
|
23
|
+
medium: "_1mgdisqi",
|
|
24
|
+
semibold: "_1mgdisqj",
|
|
25
|
+
bold: "_1mgdisqk"
|
|
26
|
+
}, i = {
|
|
27
|
+
sm: "_1mgdisql",
|
|
28
|
+
med: "_1mgdisqm",
|
|
29
|
+
lg: "_1mgdisqn"
|
|
30
|
+
}, a = "_1mgdisqo";
|
|
31
|
+
//#endregion
|
|
32
|
+
export { t as font, i as leading, e as root, n as size, a as truncate, r as weight };
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { PolymorphicProps } from "../types.mjs";
|
|
2
|
+
import { StyleProps } from "../Box/index.mjs";
|
|
3
|
+
import { tokens } from "../tokens/scales.mjs";
|
|
4
|
+
import { FontRole } from "../tokens/roles.mjs";
|
|
5
|
+
import { ElementType } from "react";
|
|
6
|
+
//#region src/Text/index.d.ts
|
|
7
|
+
export type TextOwnProps = {
|
|
8
|
+
font?: FontRole;
|
|
9
|
+
leading?: keyof typeof tokens.lineHeight;
|
|
10
|
+
size?: keyof typeof tokens.fontSize;
|
|
11
|
+
truncate?: boolean;
|
|
12
|
+
weight?: keyof typeof tokens.fontWeight;
|
|
13
|
+
};
|
|
14
|
+
export type TextProps<T extends ElementType = "p"> = PolymorphicProps<T, StyleProps & TextOwnProps>;
|
|
15
|
+
export declare function Text<T extends ElementType = "p">({ as, size, font, weight, leading, truncate, display, overflow, className, ...props }: TextProps<T>): import("react").JSX.Element;
|
|
16
|
+
//#endregion
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { join as e } from "../styles/join.mjs";
|
|
2
|
+
import { Box as t } from "../Box/index.mjs";
|
|
3
|
+
import { font as n, leading as r, root as i, size as a, weight as o } from "./Text.css.mjs";
|
|
4
|
+
import { jsx as s } from "react/jsx-runtime";
|
|
5
|
+
//#region src/Text/index.tsx
|
|
6
|
+
function c({ as: c, size: l, font: u, weight: d, leading: f, truncate: p, display: m = "block", overflow: h = p ? "hidden" : void 0, className: g, ..._ }) {
|
|
7
|
+
let v = [
|
|
8
|
+
i,
|
|
9
|
+
u && n[u],
|
|
10
|
+
l && a[l],
|
|
11
|
+
d && o[d],
|
|
12
|
+
f && r[f],
|
|
13
|
+
p && "_1mgdisqo",
|
|
14
|
+
g
|
|
15
|
+
];
|
|
16
|
+
return /* @__PURE__ */ s(t, {
|
|
17
|
+
as: c ?? "p",
|
|
18
|
+
display: m,
|
|
19
|
+
overflow: h,
|
|
20
|
+
..._,
|
|
21
|
+
className: e(...v)
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//#endregion
|
|
25
|
+
export { c as Text };
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
@layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
|
|
2
|
+
@layer components.toast{.hcnvsc1{inline-size:min(100% - 2 * var(--space-16), 6 * var(--space-64));inset-block-end:var(--space-16);inset-inline-end:var(--space-16);container:hcnvsc0/inline-size}.hcnvsc1:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}.hcnvsc2{gap:var(--space-8);margin:calc(-1 * var(--space-16));padding:var(--space-16);overscroll-behavior:contain;flex-direction:column;max-block-size:100dvh;margin-inline-start:calc(-1 * var(--space-24));padding-inline-start:var(--space-24);display:flex;overflow:hidden auto}.hcnvsc2:empty{padding:0}.hcnvsc2:has([data-swiping],[data-swipe-direction=down]){overflow-y:hidden}.hcnvsc3{border:var(--space-1) solid var(--color-border);transform:translate(var(--toast-swipe-movement-x,0), var(--toast-swipe-movement-y,0));transition:opacity var(--duration-med) var(--easing-standard), translate var(--duration-med) var(--easing-enter), transform var(--duration-med) var(--easing-enter)}.hcnvsc3:focus-visible{outline:var(--space-2) solid var(--color-focus);outline-offset:var(--space-2)}.hcnvsc3[data-starting-style],.hcnvsc3[data-ending-style]{opacity:0;translate:0 var(--distance-med)}.hcnvsc3[data-swiping]{transition:none}.hcnvsc3[data-limited]{display:none}.hcnvsc4{overflow-wrap:anywhere}.hcnvsca{clip-path:inset(50%);white-space:nowrap;border:0;block-size:1px;inline-size:1px;margin:0;padding:0;position:absolute;inset-block-start:0;inset-inline-start:0;overflow:hidden}@container hcnvsc0 (inline-size<16rem){.hcnvsc3{flex-wrap:wrap}.hcnvsc4{flex-basis:100%;order:1}.hcnvsc5{margin-inline-start:auto}}}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import "../styles/layers.css";
|
|
2
|
+
import "./Toast.css";
|
|
3
|
+
/* empty css */
|
|
4
|
+
/* empty css */
|
|
5
|
+
import { createRuntimeFn as e } from "@vanilla-extract/recipes/createRuntimeFn";
|
|
6
|
+
//#region src/Toast/Toast.css.ts
|
|
7
|
+
var t = "hcnvsc1", n = "hcnvsc2", r = "hcnvsc3", i = "hcnvsc4", a = "hcnvsc5", o = e({
|
|
8
|
+
defaultClassName: "hcnvsc6",
|
|
9
|
+
variantClassNames: { variant: {
|
|
10
|
+
info: "hcnvsc7",
|
|
11
|
+
success: "hcnvsc8",
|
|
12
|
+
error: "hcnvsc9"
|
|
13
|
+
} },
|
|
14
|
+
defaultVariants: {},
|
|
15
|
+
compoundVariants: []
|
|
16
|
+
}), s = "hcnvsca";
|
|
17
|
+
//#endregion
|
|
18
|
+
export { s as announcer, a as close, i as content, n as list, r as root, o as toast, t as viewport };
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { CircleAlertIcon } from "../icons/CircleAlertIcon.mjs";
|
|
2
|
+
import { CircleCheckIcon } from "../icons/CircleCheckIcon.mjs";
|
|
3
|
+
import { InfoIcon } from "../icons/InfoIcon.mjs";
|
|
4
|
+
import { CSSProperties, ReactNode } from "react";
|
|
5
|
+
import "@base-ui/react/toast";
|
|
6
|
+
//#region src/Toast/client.d.ts
|
|
7
|
+
export type ToastVariant = keyof typeof icons;
|
|
8
|
+
export type ToastOptions = {
|
|
9
|
+
action?: {
|
|
10
|
+
label: string;
|
|
11
|
+
onClick: () => void;
|
|
12
|
+
};
|
|
13
|
+
description?: string;
|
|
14
|
+
duration?: number;
|
|
15
|
+
title: string;
|
|
16
|
+
variant?: ToastVariant;
|
|
17
|
+
};
|
|
18
|
+
export type ToastProviderProps = {
|
|
19
|
+
children?: ReactNode;
|
|
20
|
+
className?: string;
|
|
21
|
+
closeLabel?: string;
|
|
22
|
+
limit?: number;
|
|
23
|
+
regionLabel?: string;
|
|
24
|
+
style?: CSSProperties;
|
|
25
|
+
};
|
|
26
|
+
declare const icons: {
|
|
27
|
+
readonly info: {
|
|
28
|
+
readonly Icon: typeof InfoIcon;
|
|
29
|
+
readonly color: "fgMuted";
|
|
30
|
+
};
|
|
31
|
+
readonly success: {
|
|
32
|
+
readonly Icon: typeof CircleCheckIcon;
|
|
33
|
+
readonly color: "accent";
|
|
34
|
+
};
|
|
35
|
+
readonly error: {
|
|
36
|
+
readonly Icon: typeof CircleAlertIcon;
|
|
37
|
+
readonly color: "danger";
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
declare function ToastProvider({ limit, closeLabel, regionLabel, className, style, children }: ToastProviderProps): import("react").JSX.Element;
|
|
41
|
+
export declare function useToast(): {
|
|
42
|
+
add: ({ title, description, variant, duration, action }: ToastOptions) => string;
|
|
43
|
+
close: (id: string) => void;
|
|
44
|
+
};
|
|
45
|
+
//#endregion
|
|
46
|
+
export { ToastProvider };
|
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { join as e } from "../styles/join.mjs";
|
|
3
|
+
import { Box as t } from "../Box/index.mjs";
|
|
4
|
+
import { Clickable as n } from "../Clickable/index.mjs";
|
|
5
|
+
import { Text as r } from "../Text/index.mjs";
|
|
6
|
+
import { Button as i } from "../Button/index.mjs";
|
|
7
|
+
import { useThemeContainer as a } from "../theme/use-theme-container.mjs";
|
|
8
|
+
import { CircleAlertIcon as o } from "../icons/CircleAlertIcon.mjs";
|
|
9
|
+
import { XIcon as s } from "../icons/XIcon.mjs";
|
|
10
|
+
import { CircleCheckIcon as c } from "../icons/CircleCheckIcon.mjs";
|
|
11
|
+
import { InfoIcon as l } from "../icons/InfoIcon.mjs";
|
|
12
|
+
import { announcer as u, close as d, content as f, list as p, root as m, toast as h, viewport as g } from "./Toast.css.mjs";
|
|
13
|
+
import { jsx as _, jsxs as v } from "react/jsx-runtime";
|
|
14
|
+
import { createContext as y, use as b, useCallback as x, useMemo as S, useRef as C, useState as w } from "react";
|
|
15
|
+
import { Toast as T } from "@base-ui/react/toast";
|
|
16
|
+
//#region src/Toast/client.tsx
|
|
17
|
+
var E = {
|
|
18
|
+
info: {
|
|
19
|
+
Icon: l,
|
|
20
|
+
color: "fgMuted"
|
|
21
|
+
},
|
|
22
|
+
success: {
|
|
23
|
+
Icon: c,
|
|
24
|
+
color: "accent"
|
|
25
|
+
},
|
|
26
|
+
error: {
|
|
27
|
+
Icon: o,
|
|
28
|
+
color: "danger"
|
|
29
|
+
}
|
|
30
|
+
}, D = y(null), O = y(null), k = (e) => e !== void 0 && Object.hasOwn(E, e);
|
|
31
|
+
function A({ limit: e = 3, closeLabel: n = "Dismiss", regionLabel: r = "Notifications", className: i, style: o, children: s }) {
|
|
32
|
+
let { container: c, ref: l } = a(), [u] = w(T.createToastManager);
|
|
33
|
+
return /* @__PURE__ */ _(T.Provider, {
|
|
34
|
+
limit: e,
|
|
35
|
+
toastManager: u,
|
|
36
|
+
children: /* @__PURE__ */ v(D, {
|
|
37
|
+
value: u,
|
|
38
|
+
children: [
|
|
39
|
+
/* @__PURE__ */ _(t, {
|
|
40
|
+
as: "span",
|
|
41
|
+
hidden: !0,
|
|
42
|
+
ref: l
|
|
43
|
+
}),
|
|
44
|
+
s,
|
|
45
|
+
/* @__PURE__ */ _(M, {}),
|
|
46
|
+
/* @__PURE__ */ _(T.Portal, {
|
|
47
|
+
container: c,
|
|
48
|
+
children: /* @__PURE__ */ _(j, {
|
|
49
|
+
className: i,
|
|
50
|
+
regionLabel: r,
|
|
51
|
+
style: o,
|
|
52
|
+
children: /* @__PURE__ */ _(N, { closeLabel: n })
|
|
53
|
+
})
|
|
54
|
+
})
|
|
55
|
+
]
|
|
56
|
+
})
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
function j({ regionLabel: n, className: r, style: i, children: a }) {
|
|
60
|
+
let o = C(null);
|
|
61
|
+
return /* @__PURE__ */ _(T.Viewport, {
|
|
62
|
+
"aria-atomic": void 0,
|
|
63
|
+
"aria-label": n,
|
|
64
|
+
"aria-live": "off",
|
|
65
|
+
"aria-relevant": void 0,
|
|
66
|
+
onFocus: (e) => {
|
|
67
|
+
let t = e.relatedTarget;
|
|
68
|
+
t && !e.currentTarget.contains(t) && (o.current = t);
|
|
69
|
+
},
|
|
70
|
+
render: /* @__PURE__ */ _(t, {
|
|
71
|
+
className: e(g, r),
|
|
72
|
+
position: "fixed",
|
|
73
|
+
style: i,
|
|
74
|
+
zIndex: "toast"
|
|
75
|
+
}),
|
|
76
|
+
children: /* @__PURE__ */ _("div", {
|
|
77
|
+
className: p,
|
|
78
|
+
children: /* @__PURE__ */ _(O, {
|
|
79
|
+
value: o,
|
|
80
|
+
children: a
|
|
81
|
+
})
|
|
82
|
+
})
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
function M() {
|
|
86
|
+
let { toasts: e } = T.useToastManager(), t = (t) => e.filter((e) => e.type === "error" === t).map((e) => /* @__PURE__ */ v("div", { children: [
|
|
87
|
+
e.title,
|
|
88
|
+
" ",
|
|
89
|
+
e.description
|
|
90
|
+
] }, e.id));
|
|
91
|
+
return /* @__PURE__ */ v("div", {
|
|
92
|
+
className: u,
|
|
93
|
+
children: [/* @__PURE__ */ _("div", {
|
|
94
|
+
"aria-atomic": !1,
|
|
95
|
+
"aria-live": "polite",
|
|
96
|
+
role: "status",
|
|
97
|
+
children: t(!1)
|
|
98
|
+
}), /* @__PURE__ */ _("div", {
|
|
99
|
+
"aria-atomic": !1,
|
|
100
|
+
"aria-live": "assertive",
|
|
101
|
+
role: "alert",
|
|
102
|
+
children: t(!0)
|
|
103
|
+
})]
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
function N({ closeLabel: e }) {
|
|
107
|
+
let { toasts: t } = T.useToastManager();
|
|
108
|
+
return t.map((t) => /* @__PURE__ */ _(P, {
|
|
109
|
+
closeLabel: e,
|
|
110
|
+
toast: t
|
|
111
|
+
}, t.id));
|
|
112
|
+
}
|
|
113
|
+
function P({ toast: a, closeLabel: o }) {
|
|
114
|
+
let c = k(a.type) ? a.type : "info", { Icon: l, color: u } = E[c], p = b(D), g = b(O), [y, S] = w(!1), C = x((e) => {
|
|
115
|
+
e && S(getComputedStyle(e).direction === "rtl");
|
|
116
|
+
}, []);
|
|
117
|
+
return /* @__PURE__ */ v(T.Root, {
|
|
118
|
+
"aria-modal": void 0,
|
|
119
|
+
ref: C,
|
|
120
|
+
render: /* @__PURE__ */ _(t, {
|
|
121
|
+
alignItems: "start",
|
|
122
|
+
backgroundColor: "bgRaised",
|
|
123
|
+
borderRadius: "med",
|
|
124
|
+
boxShadow: "lg",
|
|
125
|
+
className: e(m, h({ variant: c })),
|
|
126
|
+
display: "flex",
|
|
127
|
+
gap: "12",
|
|
128
|
+
padding: "12"
|
|
129
|
+
}),
|
|
130
|
+
role: "group",
|
|
131
|
+
swipeDirection: ["down", y ? "left" : "right"],
|
|
132
|
+
toast: a,
|
|
133
|
+
children: [
|
|
134
|
+
/* @__PURE__ */ _(t, {
|
|
135
|
+
display: "flex",
|
|
136
|
+
flexShrink: 0,
|
|
137
|
+
paddingBlock: "2",
|
|
138
|
+
children: /* @__PURE__ */ _(l, { color: u })
|
|
139
|
+
}),
|
|
140
|
+
/* @__PURE__ */ v(t, {
|
|
141
|
+
alignItems: "start",
|
|
142
|
+
className: f,
|
|
143
|
+
display: "flex",
|
|
144
|
+
flexDirection: "column",
|
|
145
|
+
flexGrow: 1,
|
|
146
|
+
gap: "8",
|
|
147
|
+
children: [
|
|
148
|
+
/* @__PURE__ */ _(T.Title, { render: /* @__PURE__ */ _(r, {
|
|
149
|
+
as: "div",
|
|
150
|
+
weight: "medium"
|
|
151
|
+
}) }),
|
|
152
|
+
/* @__PURE__ */ _(T.Description, { render: /* @__PURE__ */ _(r, {
|
|
153
|
+
as: "div",
|
|
154
|
+
color: "fgMuted",
|
|
155
|
+
size: "sm"
|
|
156
|
+
}) }),
|
|
157
|
+
/* @__PURE__ */ _(T.Action, { render: /* @__PURE__ */ _(i, {
|
|
158
|
+
size: "sm",
|
|
159
|
+
variant: "secondary"
|
|
160
|
+
}) })
|
|
161
|
+
]
|
|
162
|
+
}),
|
|
163
|
+
/* @__PURE__ */ _(T.Close, {
|
|
164
|
+
"aria-hidden": !1,
|
|
165
|
+
"aria-label": o,
|
|
166
|
+
onClick: (e) => {
|
|
167
|
+
if (e.detail !== 0 || !p) return;
|
|
168
|
+
let t = a.ref?.current, n = (t && F(t)) ?? g?.current;
|
|
169
|
+
n instanceof HTMLElement && (e.preventBaseUIHandler(), p.close(a.id), requestAnimationFrame(() => {
|
|
170
|
+
n.isConnected && n.focus();
|
|
171
|
+
}));
|
|
172
|
+
},
|
|
173
|
+
render: /* @__PURE__ */ _(n, {
|
|
174
|
+
borderRadius: "sm",
|
|
175
|
+
className: d,
|
|
176
|
+
flexShrink: 0,
|
|
177
|
+
padding: "4"
|
|
178
|
+
}),
|
|
179
|
+
children: /* @__PURE__ */ _(s, {})
|
|
180
|
+
})
|
|
181
|
+
]
|
|
182
|
+
});
|
|
183
|
+
}
|
|
184
|
+
function F(e) {
|
|
185
|
+
let t = (e, n) => !e || !e.matches("[data-ending-style]") ? e : t(n ? e.nextElementSibling : e.previousElementSibling, n);
|
|
186
|
+
return (t(e.nextElementSibling, !0) ?? t(e.previousElementSibling, !1))?.querySelector(`.${d}`);
|
|
187
|
+
}
|
|
188
|
+
function I() {
|
|
189
|
+
let e = b(D);
|
|
190
|
+
if (!e) throw Error("useToast must be called under Toast.Provider.");
|
|
191
|
+
return S(() => {
|
|
192
|
+
let t = (t) => e.close(t);
|
|
193
|
+
return {
|
|
194
|
+
add: ({ title: n, description: r, variant: i = "info", duration: a = i === "error" ? 0 : 5e3, action: o }) => {
|
|
195
|
+
let s = e.add({
|
|
196
|
+
title: n,
|
|
197
|
+
description: r,
|
|
198
|
+
type: i,
|
|
199
|
+
timeout: a,
|
|
200
|
+
priority: "low",
|
|
201
|
+
actionProps: o && {
|
|
202
|
+
children: o.label,
|
|
203
|
+
onClick: () => {
|
|
204
|
+
try {
|
|
205
|
+
o.onClick();
|
|
206
|
+
} finally {
|
|
207
|
+
t(s);
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
});
|
|
212
|
+
return s;
|
|
213
|
+
},
|
|
214
|
+
close: t
|
|
215
|
+
};
|
|
216
|
+
}, [e]);
|
|
217
|
+
}
|
|
218
|
+
//#endregion
|
|
219
|
+
export { M as ToastAnnouncer, P as ToastItem, A as ToastProvider, j as ToastStack, I as useToast };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ToastOptions, ToastProvider, ToastProviderProps, ToastVariant, useToast } from "./client.mjs";
|
|
2
|
+
//#region src/Toast/index.d.ts
|
|
3
|
+
export declare const Toast: {
|
|
4
|
+
Provider: typeof ToastProvider;
|
|
5
|
+
};
|
|
6
|
+
//#endregion
|
|
7
|
+
export { type ToastOptions, type ToastProviderProps, type ToastVariant, useToast };
|
package/dist/base.css
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
@layer tokens, reset, atoms, components.box, components.checkbox, components.clickable, components.icon, components.icon-button, components.inline, components.stack, components.text, components.badge, components.button, components.chip, components.field, components.heading, components.dialog, components.alert-dialog, components.menu, components.multiselect, components.search-field, components.tabs, components.tag, components.toast;
|
|
2
|
+
@layer tokens{:root{--space-0:0rem;--space-1:.0625rem;--space-2:.125rem;--space-4:.25rem;--space-6:.375rem;--space-8:.5rem;--space-12:.75rem;--space-16:1rem;--space-20:1.25rem;--space-24:1.5rem;--space-32:2rem;--space-40:2.5rem;--space-48:3rem;--space-64:4rem;--space-80:5rem;--space-96:6rem;--size-xs:1.5rem;--size-sm:2rem;--size-med:2.5rem;--size-lg:3rem;--size-xl:3.5rem;--container-prose:40rem;--container-page:64rem;--container-wide:80rem;--radius-none:0;--radius-sm:.25rem;--radius-med:.5rem;--radius-lg:.75rem;--radius-xl:1rem;--radius-full:9999px;--font-size-xs:.75rem;--font-size-sm:.875rem;--font-size-med:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-size-4xl:2.25rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-sm:1.25;--line-height-med:1.5;--line-height-lg:1.75;--z-index-base:0;--z-index-raised:1;--z-index-dropdown:1000;--z-index-sticky:1100;--z-index-overlay:1200;--z-index-modal:1300;--z-index-popover:1400;--z-index-toast:1500;--z-index-tooltip:1600;--duration-fast:.12s;--duration-med:.2s;--duration-slow:.32s;--easing-standard:cubic-bezier(.2, 0, 0, 1);--easing-enter:cubic-bezier(0, 0, 0, 1);--easing-exit:cubic-bezier(.3, 0, 1, 1);--distance-sm:.25rem;--distance-med:.5rem;--distance-lg:1rem;--scale-sm:.02;--scale-med:.05;--scale-lg:.1}[data-brand]{--shadow-sm:0 1px 2px color-mix(in srgb, var(--color-shadow) 12%, transparent);--shadow-med:0 2px 8px color-mix(in srgb, var(--color-shadow) 14%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 8%, transparent);--shadow-lg:0 8px 24px color-mix(in srgb, var(--color-shadow) 16%, transparent), 0 2px 6px color-mix(in srgb, var(--color-shadow) 8%, transparent)}[data-brand][data-mode=light]{color-scheme:light}[data-brand][data-mode=dark]{--shadow-sm:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 40%, transparent);--shadow-med:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 2px 8px color-mix(in srgb, var(--color-shadow) 48%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 32%, transparent);--shadow-lg:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 8px 24px color-mix(in srgb, var(--color-shadow) 56%, transparent), 0 2px 6px color-mix(in srgb, var(--color-shadow) 32%, transparent);color-scheme:dark}[data-brand][data-mode=system]{color-scheme:light dark}:dir(ltr){--dir:1}:dir(rtl){--dir:-1}@media (prefers-color-scheme:dark){[data-brand][data-mode=system]{--shadow-sm:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 40%, transparent);--shadow-med:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 2px 8px color-mix(in srgb, var(--color-shadow) 48%, transparent), 0 1px 2px color-mix(in srgb, var(--color-shadow) 32%, transparent);--shadow-lg:0 0 0 1px color-mix(in srgb, var(--color-fg) 10%, transparent), 0 8px 24px color-mix(in srgb, var(--color-shadow) 56%, transparent), 0 2px 6px color-mix(in srgb, var(--color-shadow) 32%, transparent)}}@media (prefers-reduced-motion:reduce){:root{--distance-sm:0rem;--distance-med:0rem;--distance-lg:0rem;--scale-sm:0;--scale-med:0;--scale-lg:0;--duration-fast:.12s;--duration-med:.12s;--duration-slow:.12s}}}
|
|
3
|
+
|
|
4
|
+
@font-face{src:local(Arial),local(ArialMT);size-adjust:101.568%;ascent-override:95.3892%;descent-override:23.7511%;line-gap-override:0%;font-family:Inter Fallback}@font-face{src:local(Courier New),local(CourierNewPSMT);size-adjust:127.781%;ascent-override:79.8319%;descent-override:23.48%;line-gap-override:0%;font-family:JetBrains Mono Fallback}@layer tokens{[data-brand=default]{--color-bg:light-dark(oklch(100% 0 0),oklch(14.5% .006 265));--color-bg-muted:light-dark(oklch(96.8% .004 265),oklch(27% .01 265));--color-bg-raised:light-dark(oklch(100% 0 0),oklch(20.5% .008 265));--color-fg:light-dark(oklch(14.5% .006 265),oklch(98.5% .002 265));--color-fg-muted:light-dark(oklch(44.5% .014 265),oklch(71% .012 265));--color-border:light-dark(oklch(92.5% .006 265),oklch(27% .01 265));--color-border-strong:oklch(55.5% .014 265);--color-accent:light-dark(oklch(54.6% .19 258),oklch(70.7% .14 258));--color-accent-fg:light-dark(oklch(100% 0 0),oklch(14.5% .006 265));--color-danger:light-dark(oklch(56% .2 25),oklch(70.4% .17 25));--color-danger-fg:light-dark(oklch(100% 0 0),oklch(14.5% .006 265));--color-focus:light-dark(oklch(54.6% .19 258),oklch(70.7% .14 258));--color-shadow:light-dark(oklch(14.5% .006 265),oklch(0% 0 0));--font-body:"Inter", "Inter Fallback", sans-serif;--font-heading:"Inter", "Inter Fallback", sans-serif;--font-display:"Inter", "Inter Fallback", sans-serif;--font-label:"Inter", "Inter Fallback", sans-serif;--font-mono:"JetBrains Mono", "JetBrains Mono Fallback", monospace;--font-trim-body-cap:.36377;--font-trim-body-baseline:.36377;--font-trim-heading-cap:.36377;--font-trim-heading-baseline:.36377;--font-trim-display-cap:.36377;--font-trim-display-baseline:.36377;--font-trim-label-cap:.36377;--font-trim-label-baseline:.36377;--font-trim-mono-cap:.37;--font-trim-mono-baseline:.36}@media (forced-colors:active){[data-brand][data-brand]{--color-bg:Canvas;--color-bg-muted:Canvas;--color-bg-raised:Canvas;--color-fg:CanvasText;--color-fg-muted:CanvasText;--color-border:CanvasText;--color-border-strong:CanvasText;--color-accent:LinkText;--color-accent-fg:Canvas;--color-danger:CanvasText;--color-danger-fg:Canvas;--color-focus:Highlight;--color-shadow:CanvasText}}}
|
|
5
|
+
|
|
6
|
+
@layer reset{*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;min-block-size:100dvb;line-height:1.5}img,picture,video,canvas,svg{max-inline-size:100%;display:block}input,button,textarea,select{font:inherit;color:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3,h4,h5,h6{text-wrap:balance}}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ColorRole, FontRole } from "../tokens/roles.mjs";
|
|
2
|
+
import { BrandFont } from "./font.mjs";
|
|
3
|
+
//#region src/brands/brand.d.ts
|
|
4
|
+
export interface Brand {
|
|
5
|
+
readonly name: string;
|
|
6
|
+
readonly color: Readonly<Record<ColorRole, string>>;
|
|
7
|
+
readonly font: Readonly<Record<FontRole, BrandFont>>;
|
|
8
|
+
}
|
|
9
|
+
//#endregion
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
//#region src/brands/check-fonts.ts
|
|
2
|
+
var e = /* @__PURE__ */ new Set();
|
|
3
|
+
async function t(t, n = 5e3) {
|
|
4
|
+
if (process.env.NODE_ENV === "production" || typeof document > "u") return;
|
|
5
|
+
await new Promise((e) => setTimeout(e, n)), await document.fonts.ready;
|
|
6
|
+
let r = [...document.fonts];
|
|
7
|
+
for (let n of Object.values(t.font)) {
|
|
8
|
+
let t = n.metrics.familyName;
|
|
9
|
+
if (e.has(t)) continue;
|
|
10
|
+
let i = r.filter((e) => e.family.replace(/^["']|["']$/g, "").toLowerCase() === t.toLowerCase()), a = i.length === 0 ? "has no @font-face" : i.some((e) => e.status === "error") ? "has a face that failed to load" : void 0;
|
|
11
|
+
a && (e.add(t), console.warn(`@jonmilner/ui: font "${t}" ${a}, so text uses its fallback. Load the font files for this brand (see the brand docs).`));
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
//#endregion
|
|
15
|
+
export { t as checkFonts };
|