@octavius2929-personal/design-system 0.1.0 → 0.4.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/README.md +64 -0
- package/dist/dm-serif-display-latin-ext-italic-400-QUYR73UK.woff2 +0 -0
- package/dist/dm-serif-display-latin-ext-normal-400-GP44XTZK.woff2 +0 -0
- package/dist/dm-serif-display-latin-italic-400-NM54ELTO.woff2 +0 -0
- package/dist/dm-serif-display-latin-normal-400-DCCDLJOI.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-ext-normal-400-T6XOR2FX.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-ext-normal-500-LJE4XY22.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-ext-normal-600-IEJYURAG.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-normal-400-A2WATXFY.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-normal-500-33HAQIPI.woff2 +0 -0
- package/dist/ibm-plex-mono-latin-normal-600-IIV3OB4N.woff2 +0 -0
- package/dist/index.cjs +189 -115
- package/dist/index.cjs.map +1 -0
- package/dist/index.css +888 -746
- package/dist/index.css.map +1 -0
- package/dist/index.d.cts +647 -6
- package/dist/index.d.ts +647 -6
- package/dist/index.js +107 -35
- package/dist/index.js.map +1 -0
- package/dist/newsreader-latin-ext-italic-400-500-6IPSRR6F.woff2 +0 -0
- package/dist/newsreader-latin-ext-normal-300-600-HJH6YDA4.woff2 +0 -0
- package/dist/newsreader-latin-italic-400-500-ZC4QAWU3.woff2 +0 -0
- package/dist/newsreader-latin-normal-300-600-J4KAOEDO.woff2 +0 -0
- package/dist/unifraktur-maguntia-latin-normal-400-TOQBJZN4.woff2 +0 -0
- package/package.json +19 -13
package/dist/index.js
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
// src/theme/theme.css.ts
|
|
2
|
+
var colorVars = { bg1: "var(--bg1__e3grur2c)", bg2: "var(--bg2__e3grur2d)", bg3: "var(--bg3__e3grur2e)", bgInset: "var(--bgInset__e3grur2f)", fg1: "var(--fg1__e3grur2g)", fg2: "var(--fg2__e3grur2h)", fg3: "var(--fg3__e3grur2i)", fgOnAccent: "var(--fgOnAccent__e3grur2j)", border1: "var(--border1__e3grur2k)", border2: "var(--border2__e3grur2l)", borderStrong: "var(--borderStrong__e3grur2m)", accent: "var(--accent__e3grur2n)", accentHover: "var(--accentHover__e3grur2o)", accentSoft: "var(--accentSoft__e3grur2p)", ok: "var(--ok__e3grur2q)", warn: "var(--warn__e3grur2r)", danger: "var(--danger__e3grur2s)", info: "var(--info__e3grur2t)", focus: "var(--focus__e3grur2u)", scrim: "var(--scrim__e3grur2v)" };
|
|
2
3
|
var modeNames = ["light", "dark", "sepia", "contrast"];
|
|
3
4
|
var schemaNames = ["tinta"];
|
|
4
|
-
var themes = { tinta: { light: "
|
|
5
|
-
var vars = { font: { display: "var(--font-display__e3grur0)", text: "var(--font-text__e3grur1)", mono: "var(--font-mono__e3grur2)", black: "var(--font-black__e3grur3)" }, text: { eyebrow: { size: "var(--text-eyebrow-size__e3grur4)", lineHeight: "var(--text-eyebrow-lineHeight__e3grur5)", weight: "var(--text-eyebrow-weight__e3grur6)", letterSpacing: "var(--text-eyebrow-letterSpacing__e3grur7)" }, display: { size: "var(--text-display-size__e3grur8)", lineHeight: "var(--text-display-lineHeight__e3grur9)", weight: "var(--text-display-weight__e3grura)", letterSpacing: "var(--text-display-letterSpacing__e3grurb)" }, h1: { size: "var(--text-h1-size__e3grurc)", lineHeight: "var(--text-h1-lineHeight__e3grurd)", weight: "var(--text-h1-weight__e3grure)", letterSpacing: "var(--text-h1-letterSpacing__e3grurf)" }, h2: { size: "var(--text-h2-size__e3grurg)", lineHeight: "var(--text-h2-lineHeight__e3grurh)", weight: "var(--text-h2-weight__e3gruri)", letterSpacing: "var(--text-h2-letterSpacing__e3grurj)" }, h3: { size: "var(--text-h3-size__e3grurk)", lineHeight: "var(--text-h3-lineHeight__e3grurl)", weight: "var(--text-h3-weight__e3grurm)", letterSpacing: "var(--text-h3-letterSpacing__e3grurn)" }, h4: { size: "var(--text-h4-size__e3gruro)", lineHeight: "var(--text-h4-lineHeight__e3grurp)", weight: "var(--text-h4-weight__e3grurq)", letterSpacing: "var(--text-h4-letterSpacing__e3grurr)" }, body: { size: "var(--text-body-size__e3grurs)", lineHeight: "var(--text-body-lineHeight__e3grurt)", weight: "var(--text-body-weight__e3gruru)", letterSpacing: "var(--text-body-letterSpacing__e3grurv)" }, lead: { size: "var(--text-lead-size__e3grurw)", lineHeight: "var(--text-lead-lineHeight__e3grurx)", weight: "var(--text-lead-weight__e3grury)", letterSpacing: "var(--text-lead-letterSpacing__e3grurz)" }, small: { size: "var(--text-small-size__e3grur10)", lineHeight: "var(--text-small-lineHeight__e3grur11)", weight: "var(--text-small-weight__e3grur12)", letterSpacing: "var(--text-small-letterSpacing__e3grur13)" }, caption: { size: "var(--text-caption-size__e3grur14)", lineHeight: "var(--text-caption-lineHeight__e3grur15)", weight: "var(--text-caption-weight__e3grur16)", letterSpacing: "var(--text-caption-letterSpacing__e3grur17)" } }, space: { none: "var(--space-none__e3grur18)", xs: "var(--space-xs__e3grur19)", sm: "var(--space-sm__e3grur1a)", md: "var(--space-md__e3grur1b)", lg: "var(--space-lg__e3grur1c)", xl: "var(--space-xl__e3grur1d)", "2xl": "var(--space-2xl__e3grur1e)", "3xl": "var(--space-3xl__e3grur1f)", "4xl": "var(--space-4xl__e3grur1g)", "5xl": "var(--space-5xl__e3grur1h)" }, radius: { none: "var(--radius-none__e3grur1i)", sm: "var(--radius-sm__e3grur1j)", md: "var(--radius-md__e3grur1k)", lg: "var(--radius-lg__e3grur1l)", base: "var(--radius-base__e3grur1m)", full: "var(--radius-full__e3grur1n)" }, border: { hair: "var(--border-hair__e3grur1o)", rule: "var(--border-rule__e3grur1p)", heavy: "var(--border-heavy__e3grur1q)" }, tracking: { tight: "var(--tracking-tight__e3grur1r)", normal: "var(--tracking-normal__e3grur1s)", wide: "var(--tracking-wide__e3grur1t)", wider: "var(--tracking-wider__e3grur1u)", widest: "var(--tracking-widest__e3grur1v)" }, leading: { tight: "var(--leading-tight__e3grur1w)", snug: "var(--leading-snug__e3grur1x)", normal: "var(--leading-normal__e3grur1y)", relaxed: "var(--leading-relaxed__e3grur1z)" }, weight: { light: "var(--weight-light__e3grur20)", regular: "var(--weight-regular__e3grur21)", medium: "var(--weight-medium__e3grur22)", semibold: "var(--weight-semibold__e3grur23)", bold: "var(--weight-bold__e3grur24)" }, dur: { fast: "var(--dur-fast__e3grur25)", base: "var(--dur-base__e3grur26)", slow: "var(--dur-slow__e3grur27)" }, ease: { ink: "var(--ease-ink__e3grur28)" }, shadow: { sm: "var(--shadow-sm__e3grur29)", md: "var(--shadow-md__e3grur2a)", lg: "var(--shadow-lg__e3grur2b)" }, color:
|
|
5
|
+
var themes = { tinta: { light: "theme_themes_tinta_light__e3grur2w", dark: "theme_themes_tinta_dark__e3grur2x", sepia: "theme_themes_tinta_sepia__e3grur2y", contrast: "theme_themes_tinta_contrast__e3grur2z" } };
|
|
6
|
+
var vars = { font: { display: "var(--font-display__e3grur0)", text: "var(--font-text__e3grur1)", mono: "var(--font-mono__e3grur2)", black: "var(--font-black__e3grur3)" }, text: { eyebrow: { size: "var(--text-eyebrow-size__e3grur4)", lineHeight: "var(--text-eyebrow-lineHeight__e3grur5)", weight: "var(--text-eyebrow-weight__e3grur6)", letterSpacing: "var(--text-eyebrow-letterSpacing__e3grur7)" }, display: { size: "var(--text-display-size__e3grur8)", lineHeight: "var(--text-display-lineHeight__e3grur9)", weight: "var(--text-display-weight__e3grura)", letterSpacing: "var(--text-display-letterSpacing__e3grurb)" }, h1: { size: "var(--text-h1-size__e3grurc)", lineHeight: "var(--text-h1-lineHeight__e3grurd)", weight: "var(--text-h1-weight__e3grure)", letterSpacing: "var(--text-h1-letterSpacing__e3grurf)" }, h2: { size: "var(--text-h2-size__e3grurg)", lineHeight: "var(--text-h2-lineHeight__e3grurh)", weight: "var(--text-h2-weight__e3gruri)", letterSpacing: "var(--text-h2-letterSpacing__e3grurj)" }, h3: { size: "var(--text-h3-size__e3grurk)", lineHeight: "var(--text-h3-lineHeight__e3grurl)", weight: "var(--text-h3-weight__e3grurm)", letterSpacing: "var(--text-h3-letterSpacing__e3grurn)" }, h4: { size: "var(--text-h4-size__e3gruro)", lineHeight: "var(--text-h4-lineHeight__e3grurp)", weight: "var(--text-h4-weight__e3grurq)", letterSpacing: "var(--text-h4-letterSpacing__e3grurr)" }, body: { size: "var(--text-body-size__e3grurs)", lineHeight: "var(--text-body-lineHeight__e3grurt)", weight: "var(--text-body-weight__e3gruru)", letterSpacing: "var(--text-body-letterSpacing__e3grurv)" }, lead: { size: "var(--text-lead-size__e3grurw)", lineHeight: "var(--text-lead-lineHeight__e3grurx)", weight: "var(--text-lead-weight__e3grury)", letterSpacing: "var(--text-lead-letterSpacing__e3grurz)" }, small: { size: "var(--text-small-size__e3grur10)", lineHeight: "var(--text-small-lineHeight__e3grur11)", weight: "var(--text-small-weight__e3grur12)", letterSpacing: "var(--text-small-letterSpacing__e3grur13)" }, caption: { size: "var(--text-caption-size__e3grur14)", lineHeight: "var(--text-caption-lineHeight__e3grur15)", weight: "var(--text-caption-weight__e3grur16)", letterSpacing: "var(--text-caption-letterSpacing__e3grur17)" } }, space: { none: "var(--space-none__e3grur18)", xs: "var(--space-xs__e3grur19)", sm: "var(--space-sm__e3grur1a)", md: "var(--space-md__e3grur1b)", lg: "var(--space-lg__e3grur1c)", xl: "var(--space-xl__e3grur1d)", "2xl": "var(--space-2xl__e3grur1e)", "3xl": "var(--space-3xl__e3grur1f)", "4xl": "var(--space-4xl__e3grur1g)", "5xl": "var(--space-5xl__e3grur1h)" }, radius: { none: "var(--radius-none__e3grur1i)", sm: "var(--radius-sm__e3grur1j)", md: "var(--radius-md__e3grur1k)", lg: "var(--radius-lg__e3grur1l)", base: "var(--radius-base__e3grur1m)", full: "var(--radius-full__e3grur1n)" }, border: { hair: "var(--border-hair__e3grur1o)", rule: "var(--border-rule__e3grur1p)", heavy: "var(--border-heavy__e3grur1q)" }, tracking: { tight: "var(--tracking-tight__e3grur1r)", normal: "var(--tracking-normal__e3grur1s)", wide: "var(--tracking-wide__e3grur1t)", wider: "var(--tracking-wider__e3grur1u)", widest: "var(--tracking-widest__e3grur1v)" }, leading: { tight: "var(--leading-tight__e3grur1w)", snug: "var(--leading-snug__e3grur1x)", normal: "var(--leading-normal__e3grur1y)", relaxed: "var(--leading-relaxed__e3grur1z)" }, weight: { light: "var(--weight-light__e3grur20)", regular: "var(--weight-regular__e3grur21)", medium: "var(--weight-medium__e3grur22)", semibold: "var(--weight-semibold__e3grur23)", bold: "var(--weight-bold__e3grur24)" }, dur: { fast: "var(--dur-fast__e3grur25)", base: "var(--dur-base__e3grur26)", slow: "var(--dur-slow__e3grur27)" }, ease: { ink: "var(--ease-ink__e3grur28)" }, shadow: { sm: "var(--shadow-sm__e3grur29)", md: "var(--shadow-md__e3grur2a)", lg: "var(--shadow-lg__e3grur2b)" }, color: colorVars };
|
|
7
|
+
|
|
8
|
+
// src/hooks/use-previous/index.ts
|
|
9
|
+
import { useEffect, useRef } from "react";
|
|
10
|
+
function usePrevious(value, initial) {
|
|
11
|
+
const ref = useRef(initial);
|
|
12
|
+
useEffect(() => {
|
|
13
|
+
ref.current = value;
|
|
14
|
+
}, [value]);
|
|
15
|
+
return ref.current;
|
|
16
|
+
}
|
|
6
17
|
|
|
7
18
|
// src/hooks/use-toggle/index.ts
|
|
8
19
|
import { useCallback, useState } from "react";
|
|
@@ -16,36 +27,86 @@ function useToggle(initial = false) {
|
|
|
16
27
|
import { useMemo as useMemo2 } from "react";
|
|
17
28
|
|
|
18
29
|
// src/theme/context/theme-context.tsx
|
|
19
|
-
import { createContext, useContext, useMemo, useState as useState2 } from "react";
|
|
30
|
+
import { createContext, useContext, useEffect as useEffect2, useMemo, useState as useState2 } from "react";
|
|
20
31
|
import { jsx } from "react/jsx-runtime";
|
|
21
32
|
var noop = () => {
|
|
22
33
|
};
|
|
23
34
|
var DEFAULT_VALUE = {
|
|
24
35
|
schema: "tinta",
|
|
25
36
|
mode: "light",
|
|
37
|
+
preference: "light",
|
|
26
38
|
themeClass: themes.tinta.light,
|
|
27
39
|
setSchema: noop,
|
|
28
40
|
setMode: noop,
|
|
29
|
-
toggleMode: noop
|
|
41
|
+
toggleMode: noop,
|
|
42
|
+
cycleMode: noop
|
|
30
43
|
};
|
|
31
44
|
var ThemeContext = createContext(null);
|
|
45
|
+
function resolveSystemMode() {
|
|
46
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return "light";
|
|
47
|
+
if (window.matchMedia("(prefers-contrast: more)").matches) return "contrast";
|
|
48
|
+
if (window.matchMedia("(prefers-color-scheme: dark)").matches) return "dark";
|
|
49
|
+
return "light";
|
|
50
|
+
}
|
|
51
|
+
function readStored(key) {
|
|
52
|
+
if (typeof window === "undefined") return null;
|
|
53
|
+
try {
|
|
54
|
+
const raw = window.localStorage.getItem(key);
|
|
55
|
+
return raw ? JSON.parse(raw) : null;
|
|
56
|
+
} catch {
|
|
57
|
+
return null;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function writeStored(key, value) {
|
|
61
|
+
if (typeof window === "undefined") return;
|
|
62
|
+
try {
|
|
63
|
+
window.localStorage.setItem(key, JSON.stringify(value));
|
|
64
|
+
} catch {
|
|
65
|
+
}
|
|
66
|
+
}
|
|
32
67
|
function ThemeProvider({
|
|
33
68
|
children,
|
|
34
69
|
defaultSchema = "tinta",
|
|
35
|
-
defaultMode = "light"
|
|
70
|
+
defaultMode = "light",
|
|
71
|
+
storageKey = "ds-theme",
|
|
72
|
+
persist = true
|
|
36
73
|
}) {
|
|
37
|
-
const [schema, setSchema] = useState2(
|
|
38
|
-
|
|
74
|
+
const [schema, setSchema] = useState2(
|
|
75
|
+
() => persist && readStored(storageKey)?.schema || defaultSchema
|
|
76
|
+
);
|
|
77
|
+
const [preference, setPreference] = useState2(
|
|
78
|
+
() => (persist ? readStored(storageKey)?.preference : null) ?? defaultMode
|
|
79
|
+
);
|
|
80
|
+
const [systemMode, setSystemMode] = useState2(resolveSystemMode);
|
|
81
|
+
useEffect2(() => {
|
|
82
|
+
if (preference !== "system") return;
|
|
83
|
+
if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
|
|
84
|
+
const mqls = ["(prefers-contrast: more)", "(prefers-color-scheme: dark)"].map(
|
|
85
|
+
(q) => window.matchMedia(q)
|
|
86
|
+
);
|
|
87
|
+
const onChange = () => setSystemMode(resolveSystemMode());
|
|
88
|
+
onChange();
|
|
89
|
+
for (const mql of mqls) mql.addEventListener?.("change", onChange);
|
|
90
|
+
return () => {
|
|
91
|
+
for (const mql of mqls) mql.removeEventListener?.("change", onChange);
|
|
92
|
+
};
|
|
93
|
+
}, [preference]);
|
|
94
|
+
const mode = preference === "system" ? systemMode : preference;
|
|
95
|
+
useEffect2(() => {
|
|
96
|
+
if (persist) writeStored(storageKey, { schema, preference });
|
|
97
|
+
}, [schema, preference, persist, storageKey]);
|
|
39
98
|
const value = useMemo(
|
|
40
99
|
() => ({
|
|
41
100
|
schema,
|
|
42
101
|
mode,
|
|
102
|
+
preference,
|
|
43
103
|
themeClass: themes[schema][mode],
|
|
44
104
|
setSchema,
|
|
45
|
-
setMode,
|
|
46
|
-
toggleMode: () =>
|
|
105
|
+
setMode: setPreference,
|
|
106
|
+
toggleMode: () => setPreference(mode === "dark" ? "light" : "dark"),
|
|
107
|
+
cycleMode: () => setPreference(modeNames[(modeNames.indexOf(mode) + 1) % modeNames.length])
|
|
47
108
|
}),
|
|
48
|
-
[schema, mode]
|
|
109
|
+
[schema, mode, preference]
|
|
49
110
|
);
|
|
50
111
|
return /* @__PURE__ */ jsx(ThemeContext.Provider, { value, children });
|
|
51
112
|
}
|
|
@@ -984,7 +1045,7 @@ function Tooltip({ label: label7, children, placement: placement2 }) {
|
|
|
984
1045
|
}
|
|
985
1046
|
|
|
986
1047
|
// src/components/select/index.tsx
|
|
987
|
-
import { useEffect, useId as useId3, useRef, useState as useState5 } from "react";
|
|
1048
|
+
import { useEffect as useEffect3, useId as useId3, useRef as useRef2, useState as useState5 } from "react";
|
|
988
1049
|
|
|
989
1050
|
// src/components/icons/chevron-down/index.tsx
|
|
990
1051
|
import { jsx as jsx24 } from "react/jsx-runtime";
|
|
@@ -1047,7 +1108,7 @@ import { jsx as jsx25, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
|
1047
1108
|
function Select({ options, value, onChange, placeholder: placeholder2, label: label7, disabled: disabled3 }) {
|
|
1048
1109
|
const [open, setOpen] = useState5(false);
|
|
1049
1110
|
const [activeIndex, setActiveIndex] = useState5(0);
|
|
1050
|
-
const rootRef =
|
|
1111
|
+
const rootRef = useRef2(null);
|
|
1051
1112
|
const baseId = useId3();
|
|
1052
1113
|
const labelId = `${baseId}-label`;
|
|
1053
1114
|
const optionId = (index) => `${baseId}-option-${index}`;
|
|
@@ -1060,7 +1121,7 @@ function Select({ options, value, onChange, placeholder: placeholder2, label: la
|
|
|
1060
1121
|
menu: menu2,
|
|
1061
1122
|
optionClass
|
|
1062
1123
|
} = useStyles15({ open });
|
|
1063
|
-
|
|
1124
|
+
useEffect3(() => {
|
|
1064
1125
|
if (!open) return;
|
|
1065
1126
|
const onPointerDown = (event) => {
|
|
1066
1127
|
if (rootRef.current && !rootRef.current.contains(event.target)) {
|
|
@@ -1571,8 +1632,8 @@ function Tabs({ items, value, onChange }) {
|
|
|
1571
1632
|
// src/components/menu/index.tsx
|
|
1572
1633
|
import {
|
|
1573
1634
|
cloneElement as cloneElement2,
|
|
1574
|
-
useEffect as
|
|
1575
|
-
useRef as
|
|
1635
|
+
useEffect as useEffect4,
|
|
1636
|
+
useRef as useRef3,
|
|
1576
1637
|
useState as useState7
|
|
1577
1638
|
} from "react";
|
|
1578
1639
|
|
|
@@ -1608,9 +1669,9 @@ function assignRef(ref, value) {
|
|
|
1608
1669
|
function Menu({ trigger: trigger2, items }) {
|
|
1609
1670
|
const { wrapper: wrapper4, list: list2, item: item3, dangerItem } = useStyles22();
|
|
1610
1671
|
const [open, setOpen] = useState7(false);
|
|
1611
|
-
const rootRef =
|
|
1612
|
-
const listRef =
|
|
1613
|
-
const triggerRef =
|
|
1672
|
+
const rootRef = useRef3(null);
|
|
1673
|
+
const listRef = useRef3(null);
|
|
1674
|
+
const triggerRef = useRef3(null);
|
|
1614
1675
|
const getMenuItems = () => Array.from(listRef.current?.querySelectorAll('[role="menuitem"]') ?? []);
|
|
1615
1676
|
const focusItemAt = (index) => {
|
|
1616
1677
|
const menuItems = getMenuItems();
|
|
@@ -1622,7 +1683,7 @@ function Menu({ trigger: trigger2, items }) {
|
|
|
1622
1683
|
setOpen(false);
|
|
1623
1684
|
triggerRef.current?.focus();
|
|
1624
1685
|
};
|
|
1625
|
-
|
|
1686
|
+
useEffect4(() => {
|
|
1626
1687
|
if (!open) return;
|
|
1627
1688
|
listRef.current?.querySelector('[role="menuitem"]')?.focus();
|
|
1628
1689
|
const onDocMouseDown = (event) => {
|
|
@@ -1709,10 +1770,11 @@ function Menu({ trigger: trigger2, items }) {
|
|
|
1709
1770
|
|
|
1710
1771
|
// src/components/dialog/index.tsx
|
|
1711
1772
|
import {
|
|
1712
|
-
useEffect as
|
|
1773
|
+
useEffect as useEffect5,
|
|
1713
1774
|
useId as useId4,
|
|
1714
|
-
useRef as
|
|
1775
|
+
useRef as useRef4
|
|
1715
1776
|
} from "react";
|
|
1777
|
+
import { createPortal } from "react-dom";
|
|
1716
1778
|
|
|
1717
1779
|
// src/components/dialog/use-styles.ts
|
|
1718
1780
|
import { useMemo as useMemo24 } from "react";
|
|
@@ -1744,11 +1806,11 @@ import { jsx as jsx35, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
|
1744
1806
|
var FOCUSABLE = 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])';
|
|
1745
1807
|
function Dialog({ open, onClose, title, actions: actions3, children }) {
|
|
1746
1808
|
const { overlay: overlay2, surface: surface2, titleText: titleText3, body: body4, actions: actionsClass } = useStyles23();
|
|
1747
|
-
const surfaceRef =
|
|
1748
|
-
const previouslyFocused =
|
|
1809
|
+
const surfaceRef = useRef4(null);
|
|
1810
|
+
const previouslyFocused = useRef4(null);
|
|
1749
1811
|
const generatedId = useId4();
|
|
1750
1812
|
const titleId = title != null ? generatedId : void 0;
|
|
1751
|
-
|
|
1813
|
+
useEffect5(() => {
|
|
1752
1814
|
if (!open) return;
|
|
1753
1815
|
const onKeyDown = (event) => {
|
|
1754
1816
|
if (event.key === "Escape") onClose();
|
|
@@ -1756,13 +1818,13 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
|
|
|
1756
1818
|
document.addEventListener("keydown", onKeyDown);
|
|
1757
1819
|
return () => document.removeEventListener("keydown", onKeyDown);
|
|
1758
1820
|
}, [open, onClose]);
|
|
1759
|
-
|
|
1821
|
+
useEffect5(() => {
|
|
1760
1822
|
if (!open) return;
|
|
1761
1823
|
previouslyFocused.current = document.activeElement;
|
|
1762
1824
|
surfaceRef.current?.focus();
|
|
1763
1825
|
return () => previouslyFocused.current?.focus?.();
|
|
1764
1826
|
}, [open]);
|
|
1765
|
-
|
|
1827
|
+
useEffect5(() => {
|
|
1766
1828
|
if (!open) return;
|
|
1767
1829
|
const previousOverflow = document.body.style.overflow;
|
|
1768
1830
|
document.body.style.overflow = "hidden";
|
|
@@ -1770,7 +1832,7 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
|
|
|
1770
1832
|
document.body.style.overflow = previousOverflow;
|
|
1771
1833
|
};
|
|
1772
1834
|
}, [open]);
|
|
1773
|
-
if (!open) return null;
|
|
1835
|
+
if (!open || typeof document === "undefined") return null;
|
|
1774
1836
|
const stop = (event) => event.stopPropagation();
|
|
1775
1837
|
const onSurfaceKeyDown = (event) => {
|
|
1776
1838
|
if (event.key !== "Tab") return;
|
|
@@ -1797,7 +1859,7 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
|
|
|
1797
1859
|
first.focus();
|
|
1798
1860
|
}
|
|
1799
1861
|
};
|
|
1800
|
-
return (
|
|
1862
|
+
return createPortal(
|
|
1801
1863
|
// biome-ignore lint/a11y/useKeyWithClickEvents: ESC handled by a document keydown listener.
|
|
1802
1864
|
/* @__PURE__ */ jsx35("div", { className: overlay2, "data-testid": "dialog-overlay", onClick: onClose, children: /* @__PURE__ */ jsxs25(
|
|
1803
1865
|
"div",
|
|
@@ -1816,10 +1878,14 @@ function Dialog({ open, onClose, title, actions: actions3, children }) {
|
|
|
1816
1878
|
actions3 != null && /* @__PURE__ */ jsx35("div", { className: actionsClass, children: actions3 })
|
|
1817
1879
|
]
|
|
1818
1880
|
}
|
|
1819
|
-
) })
|
|
1881
|
+
) }),
|
|
1882
|
+
document.body
|
|
1820
1883
|
);
|
|
1821
1884
|
}
|
|
1822
1885
|
|
|
1886
|
+
// src/components/snackbar/index.tsx
|
|
1887
|
+
import { createPortal as createPortal2 } from "react-dom";
|
|
1888
|
+
|
|
1823
1889
|
// src/components/snackbar/use-styles.ts
|
|
1824
1890
|
import { useMemo as useMemo25 } from "react";
|
|
1825
1891
|
|
|
@@ -1845,12 +1911,15 @@ function useStyles24() {
|
|
|
1845
1911
|
import { jsx as jsx36, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1846
1912
|
function Snackbar({ open, message: message2, action, onClose }) {
|
|
1847
1913
|
const { root: root24, message: messageClass, closeBtn: closeBtn2 } = useStyles24();
|
|
1848
|
-
if (!open) return null;
|
|
1849
|
-
return
|
|
1850
|
-
/* @__PURE__ */
|
|
1851
|
-
|
|
1852
|
-
|
|
1853
|
-
|
|
1914
|
+
if (!open || typeof document === "undefined") return null;
|
|
1915
|
+
return createPortal2(
|
|
1916
|
+
/* @__PURE__ */ jsxs26("div", { role: "status", className: root24, children: [
|
|
1917
|
+
/* @__PURE__ */ jsx36("span", { className: messageClass, children: message2 }),
|
|
1918
|
+
action,
|
|
1919
|
+
onClose && /* @__PURE__ */ jsx36("button", { type: "button", "aria-label": "Close", className: closeBtn2, onClick: onClose, children: /* @__PURE__ */ jsx36(XIcon, { size: 18 }) })
|
|
1920
|
+
] }),
|
|
1921
|
+
document.body
|
|
1922
|
+
);
|
|
1854
1923
|
}
|
|
1855
1924
|
|
|
1856
1925
|
// src/components/table/use-styles.ts
|
|
@@ -2124,11 +2193,14 @@ export {
|
|
|
2124
2193
|
Tooltip,
|
|
2125
2194
|
TriangleAlertIcon,
|
|
2126
2195
|
XIcon,
|
|
2196
|
+
colorVars,
|
|
2127
2197
|
modeNames,
|
|
2128
2198
|
schemaNames,
|
|
2129
2199
|
text,
|
|
2130
2200
|
vars as theme,
|
|
2131
2201
|
themes,
|
|
2202
|
+
usePrevious,
|
|
2132
2203
|
useTheme,
|
|
2133
2204
|
useToggle
|
|
2134
2205
|
};
|
|
2206
|
+
//# sourceMappingURL=index.js.map
|