@primer/react 38.35.1 → 38.36.0-rc.3fb350b1f
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 +7 -0
- package/dist/ActionBar/ActionBar.js +10 -8
- package/dist/ActionList/Heading.js +2 -1
- package/dist/CounterLabel/CounterLabel.js +5 -2
- package/dist/Details/Details.js +2 -1
- package/dist/Dialog/Dialog.js +3 -2
- package/dist/PageHeader/PageHeader.js +2 -1
- package/dist/SelectPanel/SelectPanel.js +26 -25
- package/dist/ThemeContext.d.ts +20 -0
- package/dist/ThemeProvider.d.ts +3 -0
- package/dist/ThemeProvider.js +39 -129
- package/dist/TooltipV2/Tooltip.js +3 -2
- package/dist/TreeView/TreeView.js +0 -1
- package/dist/deprecated/ActionList/List.js +2 -1
- package/dist/experimental/SelectPanel2/SelectPanel.js +7 -4
- package/dist/hooks/useFocusZone.js +2 -1
- package/dist/internal/components/ThemeProviderBase.js +50 -0
- package/dist/internal/hooks/useThemeProvider.js +71 -0
- package/dist/legacy-theme/ts/color-schemes.js +3942 -3942
- package/dist/next/ThemeProvider.d.ts +7 -0
- package/dist/next/ThemeProvider.js +35 -0
- package/dist/next/index.d.ts +4 -1
- package/dist/next/index.js +3 -1
- package/dist/theme.d.ts +16 -54
- package/dist/useTheme.d.ts +2 -14
- package/generated/hooks.json +2 -7
- package/package.json +2 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @primer/react
|
|
2
2
|
|
|
3
|
+
## 38.36.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- [#8212](https://github.com/primer/react/pull/8212) [`9ac9343`](https://github.com/primer/react/commit/9ac9343a70fd0f70413a42cd27baf562a74dd4fc) Thanks [@mattcosta7](https://github.com/mattcosta7)! - ThemeProvider: Add a CSS-variable-based implementation to `@primer/react/next`
|
|
8
|
+
and deprecate the legacy JavaScript theme implementation.
|
|
9
|
+
|
|
3
10
|
## 38.35.1
|
|
4
11
|
|
|
5
12
|
### Patch Changes
|
|
@@ -133,14 +133,15 @@ const ActionBarIconButton = /*#__PURE__*/ forwardRef(({ disabled, onClick, ...pr
|
|
|
133
133
|
disabled,
|
|
134
134
|
onClick
|
|
135
135
|
]));
|
|
136
|
+
const clickHandler = useCallback((event) => {
|
|
137
|
+
if (disabled) return;
|
|
138
|
+
onClick === null || onClick === void 0 || onClick(event);
|
|
139
|
+
}, [disabled, onClick]);
|
|
136
140
|
return /*#__PURE__*/ jsx(IconButton, {
|
|
137
141
|
"aria-disabled": disabled,
|
|
138
142
|
ref: mergedRef,
|
|
139
143
|
size,
|
|
140
|
-
onClick:
|
|
141
|
-
if (disabled) return;
|
|
142
|
-
onClick === null || onClick === void 0 || onClick(event);
|
|
143
|
-
}, [disabled, onClick]),
|
|
144
|
+
onClick: clickHandler,
|
|
144
145
|
...props,
|
|
145
146
|
variant: "invisible",
|
|
146
147
|
"data-overflowing": dataOverflowingAttr
|
|
@@ -163,14 +164,15 @@ const ActionBarButton = /*#__PURE__*/ forwardRef(({ disabled, onClick, ...props
|
|
|
163
164
|
disabled,
|
|
164
165
|
onClick
|
|
165
166
|
]));
|
|
167
|
+
const clickHandler = useCallback((event) => {
|
|
168
|
+
if (disabled) return;
|
|
169
|
+
onClick === null || onClick === void 0 || onClick(event);
|
|
170
|
+
}, [disabled, onClick]);
|
|
166
171
|
return /*#__PURE__*/ jsx(ButtonComponent, {
|
|
167
172
|
"aria-disabled": disabled,
|
|
168
173
|
ref: mergedRef,
|
|
169
174
|
size,
|
|
170
|
-
onClick:
|
|
171
|
-
if (disabled) return;
|
|
172
|
-
onClick === null || onClick === void 0 || onClick(event);
|
|
173
|
-
}, [disabled, onClick]),
|
|
175
|
+
onClick: clickHandler,
|
|
174
176
|
...props,
|
|
175
177
|
variant: "invisible",
|
|
176
178
|
"data-overflowing": dataOverflowingAttr
|
|
@@ -37,7 +37,8 @@ const Heading = /*#__PURE__*/ forwardRef((t0, forwardedRef) => {
|
|
|
37
37
|
t1 = $[6];
|
|
38
38
|
}
|
|
39
39
|
const visuallyHidden = t1 === void 0 ? false : t1;
|
|
40
|
-
const
|
|
40
|
+
const innerRef = React.useRef(null);
|
|
41
|
+
const mergedRef = useMergedRefs(forwardedRef, innerRef);
|
|
41
42
|
const { headingId, variant: listVariant } = React.useContext(ListContext);
|
|
42
43
|
const { container } = React.useContext(ActionListContainerContext);
|
|
43
44
|
!(container !== "ActionMenu") && invariant(false, "ActionList.Heading shouldn't be used within an ActionMenu container. Menus are labelled by the menu button's name.");
|
|
@@ -11,11 +11,14 @@ const CounterLabel = /*#__PURE__*/ forwardRef(({ variant, scheme, className, chi
|
|
|
11
11
|
")"
|
|
12
12
|
] });
|
|
13
13
|
const inferredVariant = variant || scheme || "secondary";
|
|
14
|
-
|
|
14
|
+
const counterProps = {
|
|
15
15
|
ref: forwardedRef,
|
|
16
16
|
["aria-hidden"]: "true",
|
|
17
17
|
["data-variant"]: inferredVariant,
|
|
18
|
-
...rest
|
|
18
|
+
...rest
|
|
19
|
+
};
|
|
20
|
+
return /*#__PURE__*/ jsxs(Fragment, { children: [/*#__PURE__*/ jsx("span", {
|
|
21
|
+
...counterProps,
|
|
19
22
|
"data-component": dataComponent !== null && dataComponent !== void 0 ? dataComponent : "CounterLabel",
|
|
20
23
|
className: clsx(className, CounterLabel_module_css_default.CounterLabel),
|
|
21
24
|
children
|
package/dist/Details/Details.js
CHANGED
|
@@ -34,7 +34,8 @@ const Root = /*#__PURE__*/ React.forwardRef((t0, forwardRef) => {
|
|
|
34
34
|
t1 = () => {
|
|
35
35
|
const { current: details } = detailsRef;
|
|
36
36
|
if (!details) return;
|
|
37
|
-
|
|
37
|
+
const summary = details.querySelector("summary:not([data-default-summary])");
|
|
38
|
+
warning(summary === null, "The <Details> component must have a <summary> child component. You can either use <Details.Summary> or a native <summary> element.");
|
|
38
39
|
};
|
|
39
40
|
t2 = [];
|
|
40
41
|
$[5] = t1;
|
package/dist/Dialog/Dialog.js
CHANGED
|
@@ -140,7 +140,7 @@ const _Dialog = /*#__PURE__*/ React.forwardRef((props, forwardedRef) => {
|
|
|
140
140
|
});
|
|
141
141
|
const footer = (_slots$footer = slots.footer) !== null && _slots$footer !== void 0 ? _slots$footer : (renderFooter !== null && renderFooter !== void 0 ? renderFooter : DefaultFooter)(defaultedProps);
|
|
142
142
|
const hasFooter = footer != null;
|
|
143
|
-
|
|
143
|
+
const updateFooterButtonLayout = useCallback(() => {
|
|
144
144
|
if (!hasFooter) return;
|
|
145
145
|
const dialogElement = dialogRef.current;
|
|
146
146
|
if (!(dialogElement instanceof HTMLElement)) return;
|
|
@@ -150,7 +150,8 @@ const _Dialog = /*#__PURE__*/ React.forwardRef((props, forwardedRef) => {
|
|
|
150
150
|
const newLayout = bodyWrapper.clientHeight >= MIN_BODY_HEIGHT ? "wrap" : "scroll";
|
|
151
151
|
dialogElement.setAttribute("data-footer-button-layout", newLayout);
|
|
152
152
|
setFooterButtonLayout(newLayout);
|
|
153
|
-
}, [hasFooter])
|
|
153
|
+
}, [hasFooter]);
|
|
154
|
+
useResizeObserver(updateFooterButtonLayout, backdropRef);
|
|
154
155
|
const positionDataAttributes = typeof position === "string" ? { "data-position-regular": position } : Object.fromEntries(Object.entries(position).map(([key, value]) => {
|
|
155
156
|
return [`data-position-${key}`, value];
|
|
156
157
|
}));
|
|
@@ -72,7 +72,8 @@ const Root = /*#__PURE__*/ React.forwardRef((t0, forwardedRef) => {
|
|
|
72
72
|
if (/*#__PURE__*/ React.isValidElement(child_1) && (child_1.type === ContextArea || isSlot(child_1, ContextArea))) hasContextArea = true;
|
|
73
73
|
if (/*#__PURE__*/ React.isValidElement(child_1) && (child_1.type === LeadingAction || isSlot(child_1, LeadingAction))) hasLeadingAction = true;
|
|
74
74
|
}
|
|
75
|
-
|
|
75
|
+
const hasInteractiveContent = Array.from(titleArea.childNodes).some((child_2) => child_2 instanceof HTMLElement && isInteractive(child_2) || Array.from(child_2.childNodes).some((child_3) => child_3 instanceof HTMLElement && isInteractive(child_3)));
|
|
76
|
+
warning(hasInteractiveContent && (hasContextArea || hasLeadingAction), "When PageHeader.ContextArea or PageHeader.LeadingAction is present, we recommended not to include any interactive items in the PageHeader.TitleArea to make sure the focus order is logical.");
|
|
76
77
|
};
|
|
77
78
|
t3 = [children, readRef];
|
|
78
79
|
$[0] = children;
|
|
@@ -435,6 +435,31 @@ function Panel({ open, onOpenChange, renderAnchor = defaultRenderAnchor, anchorR
|
|
|
435
435
|
if (event.key !== "/" && !isAlphabetKey(event.nativeEvent)) return;
|
|
436
436
|
event.stopPropagation();
|
|
437
437
|
}, [overlayProps]);
|
|
438
|
+
const mergedOverlayProps = useMemo(() => ({
|
|
439
|
+
role: "dialog",
|
|
440
|
+
"aria-labelledby": titleId,
|
|
441
|
+
"aria-describedby": subtitle ? subtitleId : void 0,
|
|
442
|
+
...overlayProps,
|
|
443
|
+
...variant === "modal" ? {
|
|
444
|
+
top: "50vh",
|
|
445
|
+
left: "50vw",
|
|
446
|
+
anchorSide: void 0
|
|
447
|
+
} : {},
|
|
448
|
+
style: {
|
|
449
|
+
transform: variant === "modal" ? "translate(-50%, -50%)" : void 0,
|
|
450
|
+
...isKeyboardVisible ? { maxHeight: availablePanelHeight !== void 0 ? `${availablePanelHeight}px` : "auto" } : {}
|
|
451
|
+
},
|
|
452
|
+
onKeyDown: preventBubbling
|
|
453
|
+
}), [
|
|
454
|
+
titleId,
|
|
455
|
+
subtitle,
|
|
456
|
+
subtitleId,
|
|
457
|
+
overlayProps,
|
|
458
|
+
variant,
|
|
459
|
+
isKeyboardVisible,
|
|
460
|
+
availablePanelHeight,
|
|
461
|
+
preventBubbling
|
|
462
|
+
]);
|
|
438
463
|
return /*#__PURE__*/ jsxs(Fragment, { children: [/*#__PURE__*/ jsx(AnchoredOverlay, {
|
|
439
464
|
renderAnchor: renderMenuAnchor,
|
|
440
465
|
anchorRef,
|
|
@@ -442,31 +467,7 @@ function Panel({ open, onOpenChange, renderAnchor = defaultRenderAnchor, anchorR
|
|
|
442
467
|
open,
|
|
443
468
|
onOpen,
|
|
444
469
|
onClose,
|
|
445
|
-
overlayProps:
|
|
446
|
-
role: "dialog",
|
|
447
|
-
"aria-labelledby": titleId,
|
|
448
|
-
"aria-describedby": subtitle ? subtitleId : void 0,
|
|
449
|
-
...overlayProps,
|
|
450
|
-
...variant === "modal" ? {
|
|
451
|
-
top: "50vh",
|
|
452
|
-
left: "50vw",
|
|
453
|
-
anchorSide: void 0
|
|
454
|
-
} : {},
|
|
455
|
-
style: {
|
|
456
|
-
transform: variant === "modal" ? "translate(-50%, -50%)" : void 0,
|
|
457
|
-
...isKeyboardVisible ? { maxHeight: availablePanelHeight !== void 0 ? `${availablePanelHeight}px` : "auto" } : {}
|
|
458
|
-
},
|
|
459
|
-
onKeyDown: preventBubbling
|
|
460
|
-
}), [
|
|
461
|
-
titleId,
|
|
462
|
-
subtitle,
|
|
463
|
-
subtitleId,
|
|
464
|
-
overlayProps,
|
|
465
|
-
variant,
|
|
466
|
-
isKeyboardVisible,
|
|
467
|
-
availablePanelHeight,
|
|
468
|
-
preventBubbling
|
|
469
|
-
]),
|
|
470
|
+
overlayProps: mergedOverlayProps,
|
|
470
471
|
focusTrapSettings,
|
|
471
472
|
focusZoneSettings,
|
|
472
473
|
height,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ColorMode, ColorModeWithAuto, Theme } from "./ThemeProvider.js";
|
|
2
|
+
import React from "react";
|
|
3
|
+
|
|
4
|
+
//#region src/ThemeContext.d.ts
|
|
5
|
+
interface ThemeContextValue {
|
|
6
|
+
/** @deprecated Use `ThemeProvider` and `useTheme` from `@primer/react/next` to migrate away from JavaScript theme values. */
|
|
7
|
+
theme?: Theme;
|
|
8
|
+
colorScheme?: string;
|
|
9
|
+
colorMode?: ColorModeWithAuto;
|
|
10
|
+
resolvedColorMode?: ColorMode;
|
|
11
|
+
/** @deprecated Use `ThemeProvider` and `useTheme` from `@primer/react/next` to migrate away from JavaScript theme values. */
|
|
12
|
+
resolvedColorScheme?: string;
|
|
13
|
+
dayScheme?: string;
|
|
14
|
+
nightScheme?: string;
|
|
15
|
+
setColorMode: React.Dispatch<React.SetStateAction<ColorModeWithAuto>>;
|
|
16
|
+
setDayScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
17
|
+
setNightScheme: React.Dispatch<React.SetStateAction<string>>;
|
|
18
|
+
}
|
|
19
|
+
//#endregion
|
|
20
|
+
export { ThemeContextValue };
|
package/dist/ThemeProvider.d.ts
CHANGED
|
@@ -21,6 +21,9 @@ type ThemeProviderProps = {
|
|
|
21
21
|
*/
|
|
22
22
|
contextOnly?: boolean;
|
|
23
23
|
};
|
|
24
|
+
/**
|
|
25
|
+
* @deprecated Use `ThemeProvider` from `@primer/react/next` to migrate away from JavaScript theme values.
|
|
26
|
+
*/
|
|
24
27
|
declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
|
|
25
28
|
//#endregion
|
|
26
29
|
export { ColorMode, ColorModeWithAuto, Theme, ThemeProvider, ThemeProvider as default, ThemeProviderProps };
|
package/dist/ThemeProvider.js
CHANGED
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import theme from "./theme.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { useTheme } from "./useTheme.js";
|
|
2
|
+
import { ThemeProviderBase } from "./internal/components/ThemeProviderBase.js";
|
|
3
|
+
import { useThemeProvider } from "./internal/hooks/useThemeProvider.js";
|
|
5
4
|
import { c } from "react-compiler-runtime";
|
|
6
5
|
import { jsx } from "react/jsx-runtime";
|
|
7
|
-
import
|
|
6
|
+
import "react";
|
|
8
7
|
import deepmerge from "deepmerge";
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
//#region src/ThemeProvider.tsx
|
|
9
|
+
/**
|
|
10
|
+
* @deprecated Use `ThemeProvider` from `@primer/react/next` to migrate away from JavaScript theme values.
|
|
11
|
+
*/
|
|
11
12
|
const ThemeProvider = (t0) => {
|
|
12
|
-
var
|
|
13
|
-
const $ = c(
|
|
13
|
+
var _parentValue$theme;
|
|
14
|
+
const $ = c(14);
|
|
14
15
|
let children;
|
|
15
16
|
let props;
|
|
16
17
|
if ($[0] !== t0) {
|
|
@@ -22,134 +23,43 @@ const ThemeProvider = (t0) => {
|
|
|
22
23
|
children = $[1];
|
|
23
24
|
props = $[2];
|
|
24
25
|
}
|
|
25
|
-
const {
|
|
26
|
-
const theme$1 =
|
|
27
|
-
const [colorMode, setColorMode] = useSyncedState((_ref = (_props$colorMode = props.colorMode) !== null && _props$colorMode !== void 0 ? _props$colorMode : fallbackColorMode) !== null && _ref !== void 0 ? _ref : "day");
|
|
28
|
-
const [dayScheme, setDayScheme] = useSyncedState((_ref2 = (_props$dayScheme = props.dayScheme) !== null && _props$dayScheme !== void 0 ? _props$dayScheme : fallbackDayScheme) !== null && _ref2 !== void 0 ? _ref2 : defaultDayScheme);
|
|
29
|
-
const [nightScheme, setNightScheme] = useSyncedState((_ref3 = (_props$nightScheme = props.nightScheme) !== null && _props$nightScheme !== void 0 ? _props$nightScheme : fallbackNightScheme) !== null && _ref3 !== void 0 ? _ref3 : defaultNightScheme);
|
|
30
|
-
const systemColorMode = useSystemColorMode();
|
|
31
|
-
let resolvedColorMode;
|
|
26
|
+
const { parentValue, value } = useThemeProvider(props);
|
|
27
|
+
const theme$1 = (_parentValue$theme = parentValue.theme) !== null && _parentValue$theme !== void 0 ? _parentValue$theme : theme;
|
|
32
28
|
let t1;
|
|
33
|
-
if ($[3] !==
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
$[
|
|
37
|
-
$[
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
$[7] = resolvedColorMode;
|
|
41
|
-
$[8] = t1;
|
|
42
|
-
} else {
|
|
43
|
-
resolvedColorMode = $[7];
|
|
44
|
-
t1 = $[8];
|
|
45
|
-
}
|
|
46
|
-
const colorScheme = t1;
|
|
29
|
+
if ($[3] !== theme$1 || $[4] !== value.colorScheme) {
|
|
30
|
+
t1 = applyColorScheme(theme$1, value.colorScheme);
|
|
31
|
+
$[3] = theme$1;
|
|
32
|
+
$[4] = value.colorScheme;
|
|
33
|
+
$[5] = t1;
|
|
34
|
+
} else t1 = $[5];
|
|
35
|
+
const { resolvedTheme, resolvedColorScheme } = t1;
|
|
47
36
|
let t2;
|
|
48
|
-
if ($[
|
|
49
|
-
t2 =
|
|
50
|
-
|
|
51
|
-
$[10] = theme$1;
|
|
52
|
-
$[11] = t2;
|
|
53
|
-
} else t2 = $[11];
|
|
54
|
-
const { resolvedTheme, resolvedColorScheme } = t2;
|
|
55
|
-
let t3;
|
|
56
|
-
if ($[12] !== colorMode || $[13] !== colorScheme || $[14] !== dayScheme || $[15] !== nightScheme || $[16] !== resolvedColorMode || $[17] !== resolvedColorScheme || $[18] !== resolvedTheme || $[19] !== setColorMode || $[20] !== setDayScheme || $[21] !== setNightScheme) {
|
|
57
|
-
t3 = {
|
|
37
|
+
if ($[6] !== resolvedColorScheme || $[7] !== resolvedTheme || $[8] !== value) {
|
|
38
|
+
t2 = {
|
|
39
|
+
...value,
|
|
58
40
|
theme: resolvedTheme,
|
|
59
|
-
|
|
60
|
-
colorMode,
|
|
61
|
-
resolvedColorMode,
|
|
62
|
-
resolvedColorScheme,
|
|
63
|
-
dayScheme,
|
|
64
|
-
nightScheme,
|
|
65
|
-
setColorMode,
|
|
66
|
-
setDayScheme,
|
|
67
|
-
setNightScheme
|
|
41
|
+
resolvedColorScheme
|
|
68
42
|
};
|
|
69
|
-
$[
|
|
70
|
-
$[
|
|
71
|
-
$[
|
|
72
|
-
$[
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
$[22] = t3;
|
|
80
|
-
} else t3 = $[22];
|
|
81
|
-
const contextValue = t3;
|
|
82
|
-
if (props.contextOnly) {
|
|
83
|
-
let t4;
|
|
84
|
-
if ($[23] !== children || $[24] !== contextValue) {
|
|
85
|
-
t4 = /*#__PURE__*/ jsx(ThemeContext.Provider, {
|
|
86
|
-
value: contextValue,
|
|
87
|
-
children
|
|
88
|
-
});
|
|
89
|
-
$[23] = children;
|
|
90
|
-
$[24] = contextValue;
|
|
91
|
-
$[25] = t4;
|
|
92
|
-
} else t4 = $[25];
|
|
93
|
-
return t4;
|
|
94
|
-
}
|
|
95
|
-
const t4 = colorMode === "auto" ? "auto" : colorScheme.includes("dark") ? "dark" : "light";
|
|
96
|
-
let t5;
|
|
97
|
-
if ($[26] !== children || $[27] !== dayScheme || $[28] !== nightScheme || $[29] !== t4) {
|
|
98
|
-
t5 = /*#__PURE__*/ jsx("div", {
|
|
99
|
-
"data-component": "ThemeProvider",
|
|
100
|
-
"data-color-mode": t4,
|
|
101
|
-
"data-light-theme": dayScheme,
|
|
102
|
-
"data-dark-theme": nightScheme,
|
|
103
|
-
children
|
|
104
|
-
});
|
|
105
|
-
$[26] = children;
|
|
106
|
-
$[27] = dayScheme;
|
|
107
|
-
$[28] = nightScheme;
|
|
108
|
-
$[29] = t4;
|
|
109
|
-
$[30] = t5;
|
|
110
|
-
} else t5 = $[30];
|
|
111
|
-
let t6;
|
|
112
|
-
if ($[31] !== contextValue || $[32] !== t5) {
|
|
113
|
-
t6 = /*#__PURE__*/ jsx(ThemeContext.Provider, {
|
|
43
|
+
$[6] = resolvedColorScheme;
|
|
44
|
+
$[7] = resolvedTheme;
|
|
45
|
+
$[8] = value;
|
|
46
|
+
$[9] = t2;
|
|
47
|
+
} else t2 = $[9];
|
|
48
|
+
const contextValue = t2;
|
|
49
|
+
let t3;
|
|
50
|
+
if ($[10] !== children || $[11] !== contextValue || $[12] !== props.contextOnly) {
|
|
51
|
+
t3 = /*#__PURE__*/ jsx(ThemeProviderBase, {
|
|
52
|
+
contextOnly: props.contextOnly,
|
|
114
53
|
value: contextValue,
|
|
115
|
-
children
|
|
54
|
+
children
|
|
116
55
|
});
|
|
117
|
-
$[
|
|
118
|
-
$[
|
|
119
|
-
$[
|
|
120
|
-
|
|
121
|
-
|
|
56
|
+
$[10] = children;
|
|
57
|
+
$[11] = contextValue;
|
|
58
|
+
$[12] = props.contextOnly;
|
|
59
|
+
$[13] = t3;
|
|
60
|
+
} else t3 = $[13];
|
|
61
|
+
return t3;
|
|
122
62
|
};
|
|
123
|
-
function subscribeToSystemColorMode(callback) {
|
|
124
|
-
var _window, _window$matchMedia;
|
|
125
|
-
const media = (_window = window) === null || _window === void 0 ? void 0 : (_window$matchMedia = _window.matchMedia) === null || _window$matchMedia === void 0 ? void 0 : _window$matchMedia.call(_window, "(prefers-color-scheme: dark)");
|
|
126
|
-
media === null || media === void 0 || media.addEventListener("change", callback);
|
|
127
|
-
return () => media === null || media === void 0 ? void 0 : media.removeEventListener("change", callback);
|
|
128
|
-
}
|
|
129
|
-
function useSystemColorMode() {
|
|
130
|
-
return React.useSyncExternalStore(subscribeToSystemColorMode, getSystemColorMode, _temp);
|
|
131
|
-
}
|
|
132
|
-
function _temp() {
|
|
133
|
-
return "day";
|
|
134
|
-
}
|
|
135
|
-
function getSystemColorMode() {
|
|
136
|
-
var _window2, _window2$matchMedia, _window2$matchMedia$c;
|
|
137
|
-
return (_window2 = window) !== null && _window2 !== void 0 && (_window2$matchMedia = _window2.matchMedia) !== null && _window2$matchMedia !== void 0 && (_window2$matchMedia$c = _window2$matchMedia.call(_window2, "(prefers-color-scheme: dark)")) !== null && _window2$matchMedia$c !== void 0 && _window2$matchMedia$c.matches ? "night" : "day";
|
|
138
|
-
}
|
|
139
|
-
function resolveColorMode(colorMode, systemColorMode) {
|
|
140
|
-
switch (colorMode) {
|
|
141
|
-
case "auto": return systemColorMode;
|
|
142
|
-
default: return colorMode;
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
function chooseColorScheme(colorMode, dayScheme, nightScheme) {
|
|
146
|
-
switch (colorMode) {
|
|
147
|
-
case "day":
|
|
148
|
-
case "light": return dayScheme;
|
|
149
|
-
case "dark":
|
|
150
|
-
case "night": return nightScheme;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
63
|
function applyColorScheme(theme, colorScheme) {
|
|
154
64
|
if (!theme.colorSchemes) return {
|
|
155
65
|
resolvedTheme: theme,
|
|
@@ -100,10 +100,11 @@ const Tooltip = /*#__PURE__*/ React.forwardRef(({ direction = "s", text, type =
|
|
|
100
100
|
const trigger = readTriggerRef.current;
|
|
101
101
|
tooltip.showPopover();
|
|
102
102
|
setIsPopoverOpen(true);
|
|
103
|
-
const
|
|
103
|
+
const settings = {
|
|
104
104
|
side: directionToPosition[direction].side,
|
|
105
105
|
align: directionToPosition[direction].align
|
|
106
|
-
}
|
|
106
|
+
};
|
|
107
|
+
const { top, left, anchorAlign, anchorSide } = getAnchoredPosition(tooltip, trigger, settings);
|
|
107
108
|
const calculatedDirection = positionToDirection[`${anchorSide}-${anchorAlign}`];
|
|
108
109
|
setCalculatedDirection(calculatedDirection);
|
|
109
110
|
tooltip.style.top = `${top}px`;
|
|
@@ -59,7 +59,8 @@ const List = /*#__PURE__*/ React.forwardRef((props, forwardedRef) => {
|
|
|
59
59
|
const { firstGroupStyle, lastGroupStyle, headerStyle, itemStyle } = useListVariant(restProps.variant);
|
|
60
60
|
const renderGroup = (groupProps) => {
|
|
61
61
|
var _ref;
|
|
62
|
-
|
|
62
|
+
const GroupComponent = ((_ref = "renderGroup" in groupProps && groupProps.renderGroup) !== null && _ref !== void 0 ? _ref : restProps.renderGroup) || Group;
|
|
63
|
+
return /*#__PURE__*/ createElement(GroupComponent, {
|
|
63
64
|
...groupProps,
|
|
64
65
|
key: groupProps.groupId
|
|
65
66
|
});
|
|
@@ -43,10 +43,11 @@ const responsiveButtonSizes = {
|
|
|
43
43
|
const Panel = ({ title, description, variant: propsVariant, selectionVariant = "multiple", id, defaultOpen = false, open: propsOpen, anchorRef: providedAnchorRef, anchoredPositionSettings, onCancel: propsOnCancel, onClearSelection: propsOnClearSelection, onSubmit: propsOnSubmit, width = "medium", maxHeight = "large", className, ...props }) => {
|
|
44
44
|
var _position$top, _position$left, _slots$header;
|
|
45
45
|
const [internalOpen, setInternalOpen] = React.useState(defaultOpen);
|
|
46
|
-
const
|
|
46
|
+
const responsiveVariants = Object.assign({
|
|
47
47
|
regular: "anchored",
|
|
48
48
|
narrow: "full-screen"
|
|
49
|
-
}, typeof propsVariant === "string" ? { regular: propsVariant } : propsVariant)
|
|
49
|
+
}, typeof propsVariant === "string" ? { regular: propsVariant } : propsVariant);
|
|
50
|
+
const currentVariant = useResponsiveValue(responsiveVariants, "anchored");
|
|
50
51
|
if (propsOpen !== void 0 && internalOpen !== propsOpen) setInternalOpen(propsOpen);
|
|
51
52
|
let Anchor;
|
|
52
53
|
const anchorRef = useProvidedRefOrCreate(providedAnchorRef);
|
|
@@ -348,18 +349,20 @@ const SelectPanelFooter = ({ ...props }) => {
|
|
|
348
349
|
SelectPanelFooter.displayName = "SelectPanelFooter";
|
|
349
350
|
SelectPanelFooter.__SLOT__ = Symbol("SelectPanel.Footer");
|
|
350
351
|
const SecondaryButton = (props) => {
|
|
352
|
+
const size = useResponsiveValue(responsiveButtonSizes, "small");
|
|
351
353
|
return /*#__PURE__*/ jsx(ButtonComponent, {
|
|
352
354
|
type: "button",
|
|
353
|
-
size
|
|
355
|
+
size,
|
|
354
356
|
block: true,
|
|
355
357
|
...props
|
|
356
358
|
});
|
|
357
359
|
};
|
|
358
360
|
SecondaryButton.displayName = "SecondaryButton";
|
|
359
361
|
const SecondaryLink = ({ className, ...props }) => {
|
|
362
|
+
const size = useResponsiveValue(responsiveButtonSizes, "small");
|
|
360
363
|
return /*#__PURE__*/ jsx(ButtonComponent, {
|
|
361
364
|
as: Link,
|
|
362
|
-
size
|
|
365
|
+
size,
|
|
363
366
|
variant: "invisible",
|
|
364
367
|
block: true,
|
|
365
368
|
...props,
|
|
@@ -5,7 +5,8 @@ import { FocusKeys as FocusKeys$1, focusZone } from "@primer/behaviors";
|
|
|
5
5
|
function useFocusZone(settings = {}, dependencies = []) {
|
|
6
6
|
const containerRef = useProvidedRefOrCreate(settings.containerRef);
|
|
7
7
|
const useActiveDescendant = !!settings.activeDescendantFocus;
|
|
8
|
-
const
|
|
8
|
+
const passedActiveDescendantRef = typeof settings.activeDescendantFocus === "boolean" || !settings.activeDescendantFocus ? void 0 : settings.activeDescendantFocus;
|
|
9
|
+
const activeDescendantControlRef = useProvidedRefOrCreate(passedActiveDescendantRef);
|
|
9
10
|
const disabled = settings.disabled;
|
|
10
11
|
const abortController = React.useRef();
|
|
11
12
|
useEffect(() => {
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ThemeContext } from "../../ThemeContext.js";
|
|
2
|
+
import { c } from "react-compiler-runtime";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
//#region src/internal/components/ThemeProviderBase.tsx
|
|
5
|
+
const ThemeProviderBase = (t0) => {
|
|
6
|
+
const $ = c(11);
|
|
7
|
+
const { children, contextOnly, value } = t0;
|
|
8
|
+
if (contextOnly) {
|
|
9
|
+
let t1;
|
|
10
|
+
if ($[0] !== children || $[1] !== value) {
|
|
11
|
+
t1 = /*#__PURE__*/ jsx(ThemeContext.Provider, {
|
|
12
|
+
value,
|
|
13
|
+
children
|
|
14
|
+
});
|
|
15
|
+
$[0] = children;
|
|
16
|
+
$[1] = value;
|
|
17
|
+
$[2] = t1;
|
|
18
|
+
} else t1 = $[2];
|
|
19
|
+
return t1;
|
|
20
|
+
}
|
|
21
|
+
const t1 = value.colorMode === "auto" ? "auto" : value.colorScheme.includes("dark") ? "dark" : "light";
|
|
22
|
+
let t2;
|
|
23
|
+
if ($[3] !== children || $[4] !== t1 || $[5] !== value.dayScheme || $[6] !== value.nightScheme) {
|
|
24
|
+
t2 = /*#__PURE__*/ jsx("div", {
|
|
25
|
+
"data-component": "ThemeProvider",
|
|
26
|
+
"data-color-mode": t1,
|
|
27
|
+
"data-light-theme": value.dayScheme,
|
|
28
|
+
"data-dark-theme": value.nightScheme,
|
|
29
|
+
children
|
|
30
|
+
});
|
|
31
|
+
$[3] = children;
|
|
32
|
+
$[4] = t1;
|
|
33
|
+
$[5] = value.dayScheme;
|
|
34
|
+
$[6] = value.nightScheme;
|
|
35
|
+
$[7] = t2;
|
|
36
|
+
} else t2 = $[7];
|
|
37
|
+
let t3;
|
|
38
|
+
if ($[8] !== t2 || $[9] !== value) {
|
|
39
|
+
t3 = /*#__PURE__*/ jsx(ThemeContext.Provider, {
|
|
40
|
+
value,
|
|
41
|
+
children: t2
|
|
42
|
+
});
|
|
43
|
+
$[8] = t2;
|
|
44
|
+
$[9] = value;
|
|
45
|
+
$[10] = t3;
|
|
46
|
+
} else t3 = $[10];
|
|
47
|
+
return t3;
|
|
48
|
+
};
|
|
49
|
+
//#endregion
|
|
50
|
+
export { ThemeProviderBase };
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { useSyncedState } from "../../hooks/useSyncedState.js";
|
|
2
|
+
import { useTheme } from "../../useTheme.js";
|
|
3
|
+
import { c } from "react-compiler-runtime";
|
|
4
|
+
import React from "react";
|
|
5
|
+
//#region src/internal/hooks/useThemeProvider.ts
|
|
6
|
+
const defaultColorMode = "day";
|
|
7
|
+
const defaultDayScheme = "light";
|
|
8
|
+
const defaultNightScheme = "dark";
|
|
9
|
+
function useThemeProvider(props) {
|
|
10
|
+
var _ref, _props$colorMode, _ref2, _props$dayScheme, _ref3, _props$nightScheme;
|
|
11
|
+
const $ = c(12);
|
|
12
|
+
const parentValue = useTheme();
|
|
13
|
+
const [colorMode, setColorMode] = useSyncedState((_ref = (_props$colorMode = props.colorMode) !== null && _props$colorMode !== void 0 ? _props$colorMode : parentValue.colorMode) !== null && _ref !== void 0 ? _ref : defaultColorMode);
|
|
14
|
+
const [dayScheme, setDayScheme] = useSyncedState((_ref2 = (_props$dayScheme = props.dayScheme) !== null && _props$dayScheme !== void 0 ? _props$dayScheme : parentValue.dayScheme) !== null && _ref2 !== void 0 ? _ref2 : defaultDayScheme);
|
|
15
|
+
const [nightScheme, setNightScheme] = useSyncedState((_ref3 = (_props$nightScheme = props.nightScheme) !== null && _props$nightScheme !== void 0 ? _props$nightScheme : parentValue.nightScheme) !== null && _ref3 !== void 0 ? _ref3 : defaultNightScheme);
|
|
16
|
+
const systemColorMode = useSystemColorMode();
|
|
17
|
+
const resolvedColorMode = colorMode === "auto" ? systemColorMode : colorMode;
|
|
18
|
+
const colorScheme = resolvedColorMode === "day" || resolvedColorMode === "light" ? dayScheme : nightScheme;
|
|
19
|
+
let t0;
|
|
20
|
+
if ($[0] !== colorMode || $[1] !== colorScheme || $[2] !== dayScheme || $[3] !== nightScheme || $[4] !== resolvedColorMode || $[5] !== setColorMode || $[6] !== setDayScheme || $[7] !== setNightScheme) {
|
|
21
|
+
t0 = {
|
|
22
|
+
colorScheme,
|
|
23
|
+
colorMode,
|
|
24
|
+
resolvedColorMode,
|
|
25
|
+
dayScheme,
|
|
26
|
+
nightScheme,
|
|
27
|
+
setColorMode,
|
|
28
|
+
setDayScheme,
|
|
29
|
+
setNightScheme
|
|
30
|
+
};
|
|
31
|
+
$[0] = colorMode;
|
|
32
|
+
$[1] = colorScheme;
|
|
33
|
+
$[2] = dayScheme;
|
|
34
|
+
$[3] = nightScheme;
|
|
35
|
+
$[4] = resolvedColorMode;
|
|
36
|
+
$[5] = setColorMode;
|
|
37
|
+
$[6] = setDayScheme;
|
|
38
|
+
$[7] = setNightScheme;
|
|
39
|
+
$[8] = t0;
|
|
40
|
+
} else t0 = $[8];
|
|
41
|
+
const value = t0;
|
|
42
|
+
let t1;
|
|
43
|
+
if ($[9] !== parentValue || $[10] !== value) {
|
|
44
|
+
t1 = {
|
|
45
|
+
parentValue,
|
|
46
|
+
value
|
|
47
|
+
};
|
|
48
|
+
$[9] = parentValue;
|
|
49
|
+
$[10] = value;
|
|
50
|
+
$[11] = t1;
|
|
51
|
+
} else t1 = $[11];
|
|
52
|
+
return t1;
|
|
53
|
+
}
|
|
54
|
+
function subscribeToSystemColorMode(callback) {
|
|
55
|
+
var _window, _window$matchMedia;
|
|
56
|
+
const media = (_window = window) === null || _window === void 0 ? void 0 : (_window$matchMedia = _window.matchMedia) === null || _window$matchMedia === void 0 ? void 0 : _window$matchMedia.call(_window, "(prefers-color-scheme: dark)");
|
|
57
|
+
media === null || media === void 0 || media.addEventListener("change", callback);
|
|
58
|
+
return () => media === null || media === void 0 ? void 0 : media.removeEventListener("change", callback);
|
|
59
|
+
}
|
|
60
|
+
function useSystemColorMode() {
|
|
61
|
+
return React.useSyncExternalStore(subscribeToSystemColorMode, getSystemColorMode, _temp);
|
|
62
|
+
}
|
|
63
|
+
function _temp() {
|
|
64
|
+
return "day";
|
|
65
|
+
}
|
|
66
|
+
function getSystemColorMode() {
|
|
67
|
+
var _window2, _window2$matchMedia, _window2$matchMedia$c;
|
|
68
|
+
return (_window2 = window) !== null && _window2 !== void 0 && (_window2$matchMedia = _window2.matchMedia) !== null && _window2$matchMedia !== void 0 && (_window2$matchMedia$c = _window2$matchMedia.call(_window2, "(prefers-color-scheme: dark)")) !== null && _window2$matchMedia$c !== void 0 && _window2$matchMedia$c.matches ? "night" : "day";
|
|
69
|
+
}
|
|
70
|
+
//#endregion
|
|
71
|
+
export { useThemeProvider };
|