@primer/styled-react 0.0.0-20260610121450 → 0.0.0-20260722001252

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.
Files changed (38) hide show
  1. package/dist/components/BaseStyles.d.ts +23 -14
  2. package/dist/components/BaseStyles.d.ts.map +1 -1
  3. package/dist/components/BaseStyles.js +27 -48
  4. package/dist/components/FeatureFlaggedTheming.d.ts +11 -11
  5. package/dist/components/FeatureFlaggedTheming.d.ts.map +1 -1
  6. package/dist/components/FeatureFlaggedTheming.js +20 -43
  7. package/dist/components/ThemeContext.d.ts +19 -0
  8. package/dist/components/ThemeContext.d.ts.map +1 -0
  9. package/dist/components/ThemeContext.js +9 -0
  10. package/dist/components/ThemeProvider.d.ts +21 -31
  11. package/dist/components/ThemeProvider.d.ts.map +1 -1
  12. package/dist/components/ThemeProvider.js +104 -147
  13. package/dist/components/useFeatureFlaggedTheme.d.ts +8 -0
  14. package/dist/components/useFeatureFlaggedTheme.d.ts.map +1 -0
  15. package/dist/components/useFeatureFlaggedTheme.js +19 -0
  16. package/dist/components/useTheme.d.ts +20 -0
  17. package/dist/components/useTheme.d.ts.map +1 -0
  18. package/dist/components/useTheme.js +12 -0
  19. package/dist/index.d.ts +6 -67
  20. package/dist/index.js +6 -6
  21. package/dist/legacy-theme/ts/color-schemes.js +4252 -0
  22. package/dist/polymorphic.d.ts +23 -26
  23. package/dist/polymorphic.d.ts.map +1 -1
  24. package/dist/styled-props.d.ts +7 -3
  25. package/dist/styled-props.d.ts.map +1 -1
  26. package/dist/sx.d.ts +20 -20
  27. package/dist/sx.d.ts.map +1 -1
  28. package/dist/sx.js +6 -8
  29. package/dist/theme-get.d.ts +4 -1
  30. package/dist/theme-get.d.ts.map +1 -1
  31. package/dist/theme-get.js +7 -9
  32. package/dist/theme-types.d.ts +94 -0
  33. package/dist/theme-types.d.ts.map +1 -0
  34. package/dist/theme.d.ts +1090 -0
  35. package/dist/theme.d.ts.map +1 -0
  36. package/dist/theme.js +14 -0
  37. package/package.json +15 -9
  38. package/dist/index.d.ts.map +0 -1
@@ -1,17 +1,26 @@
1
- import type React from 'react';
2
- import { type CSSProperties, type PropsWithChildren, type JSX } from 'react';
3
- import type * as styledSystem from 'styled-system';
4
- import 'focus-visible';
5
- export interface SystemCommonProps extends styledSystem.ColorProps, styledSystem.SpaceProps, styledSystem.DisplayProps {
1
+ import React, { CSSProperties, JSX, PropsWithChildren } from "react";
2
+ import * as styledSystem from "styled-system";
3
+ //#region src/components/BaseStyles.d.ts
4
+ interface SystemCommonProps extends styledSystem.ColorProps, styledSystem.SpaceProps, styledSystem.DisplayProps {}
5
+ interface SystemTypographyProps extends styledSystem.TypographyProps {
6
+ whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line';
6
7
  }
7
- export interface SystemTypographyProps extends styledSystem.TypographyProps {
8
- whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line';
9
- }
10
- export type BaseStylesProps = PropsWithChildren & {
11
- as?: React.ComponentType<any> | keyof JSX.IntrinsicElements;
12
- className?: string;
13
- style?: CSSProperties;
14
- color?: string;
8
+ type BaseStylesProps = PropsWithChildren & {
9
+ as?: React.ComponentType<any> | keyof JSX.IntrinsicElements;
10
+ className?: string;
11
+ style?: CSSProperties;
12
+ color?: string;
15
13
  } & SystemTypographyProps & SystemCommonProps;
16
- export declare function BaseStyles({ children, color, fontFamily, lineHeight, className, as: Component, style, ...rest }: BaseStylesProps): JSX.Element;
14
+ declare function BaseStyles({
15
+ children,
16
+ color,
17
+ fontFamily,
18
+ lineHeight,
19
+ className,
20
+ as: Component,
21
+ style,
22
+ ...rest
23
+ }: BaseStylesProps): JSX.Element;
24
+ //#endregion
25
+ export { BaseStyles, BaseStylesProps, SystemCommonProps, SystemTypographyProps };
17
26
  //# sourceMappingURL=BaseStyles.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"BaseStyles.d.ts","sourceRoot":"","sources":["../../src/components/BaseStyles.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAAC,KAAK,aAAa,EAAE,KAAK,iBAAiB,EAAE,KAAK,GAAG,EAAC,MAAM,OAAO,CAAA;AAG1E,OAAO,KAAK,KAAK,YAAY,MAAM,eAAe,CAAA;AAGlD,OAAO,eAAe,CAAA;AAGtB,MAAM,WAAW,iBACf,SAAQ,YAAY,CAAC,UAAU,EAC7B,YAAY,CAAC,UAAU,EACvB,YAAY,CAAC,YAAY;CAAG;AAEhC,MAAM,WAAW,qBAAsB,SAAQ,YAAY,CAAC,eAAe;IACzE,UAAU,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,GAAG,UAAU,GAAG,UAAU,CAAA;CACnE;AA8ED,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG;IAEhD,EAAE,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,CAAC,iBAAiB,CAAA;IAC3D,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf,GAAG,qBAAqB,GACvB,iBAAiB,CAAA;AAEnB,wBAAgB,UAAU,CAAC,EACzB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,UAAU,EACV,SAAS,EACT,EAAE,EAAE,SAAiB,EACrB,KAAK,EACL,GAAG,IAAI,EACR,EAAE,eAAe,eA+BjB"}
1
+ {"version":3,"file":"BaseStyles.d.ts","names":[],"sources":["../../src/components/BaseStyles.tsx"],"mappings":";;;UAUiB,iBAAA,SACP,YAAA,CAAa,UAAA,EACnB,YAAA,CAAa,UAAA,EACb,YAAA,CAAa,YAAA;AAAA,UAEA,qBAAA,SAA8B,YAAA,CAAa,eAAe;EACzE,UAAA;AAAA;AAAA,KA+EU,eAAA,GAAkB,iBAAA;EAE5B,EAAA,GAAK,KAAA,CAAM,aAAA,cAA2B,GAAA,CAAI,iBAAA;EAC1C,SAAA;EACA,KAAA,GAAQ,aAAA;EACR,KAAA;AAAA,IACE,qBAAA,GACF,iBAAA;AAAA,iBAEc,UAAA;EACd,QAAA;EACA,KAAA;EACA,UAAA;EACA,UAAA;EACA,SAAA;EACA,EAAA,EAAI,SAAA;EACJ,KAAA;EAAA,GACG;AAAA,GACF,eAAA,GAAe,GAAA,CAAA,OAAA"}
@@ -1,51 +1,30 @@
1
- import { clsx } from 'clsx';
2
- import { useTheme } from './ThemeProvider.js';
3
- import 'focus-visible';
4
- import { createGlobalStyle } from 'styled-components';
5
- import { jsxs, jsx } from 'react/jsx-runtime';
6
-
1
+ import { useTheme } from "./useTheme.js";
2
+ import { createGlobalStyle } from "styled-components";
3
+ import { jsx, jsxs } from "react/jsx-runtime";
4
+ import { clsx } from "clsx";
5
+ import "focus-visible";
6
+ //#region src/components/BaseStyles.tsx
7
7
  const GlobalStyle = createGlobalStyle(["*{box-sizing:border-box;}body{margin:0;}table{border-collapse:collapse;}[data-color-mode='light'] input{color-scheme:light;}[data-color-mode='dark'] input{color-scheme:dark;}@media (prefers-color-scheme:light){[data-color-mode='auto'][data-light-theme*='light']{color-scheme:light;}}@media (prefers-color-scheme:dark){[data-color-mode='auto'][data-dark-theme*='dark']{color-scheme:dark;}}[role='button']:focus:not(:focus-visible):not(:global(.focus-visible)),[role='tabpanel'][tabindex='0']:focus:not(:focus-visible):not(:global(.focus-visible)),button:focus:not(:focus-visible):not(:global(.focus-visible)),summary:focus:not(:focus-visible):not(:global(.focus-visible)),a:focus:not(:focus-visible):not(:global(.focus-visible)){outline:none;box-shadow:none;}[tabindex='0']:focus:not(:focus-visible):not(:global(.focus-visible)),details-dialog:focus:not(:focus-visible):not(:global(.focus-visible)){outline:none;}.BaseStyles{font-family:var(--BaseStyles-fontFamily,var(--fontStack-system));line-height:var(--BaseStyles-lineHeight,1.5);color:var(--BaseStyles-fgColor,var(--fgColor-default));:where(a:not([class*='prc-']):not([class*='PRC-']):not([class*='Primer_Brand__'])){color:var(--fgColor-accent,var(--color-accent-fg));text-decoration:none;&:hover{text-decoration:underline;}}}"]);
8
- function BaseStyles({
9
- children,
10
- color,
11
- fontFamily,
12
- lineHeight,
13
- className,
14
- as: Component = 'div',
15
- style,
16
- ...rest
17
- }) {
18
- const {
19
- colorMode,
20
- colorScheme,
21
- dayScheme,
22
- nightScheme
23
- } = useTheme();
24
- const baseStyles = {
25
- ['--BaseStyles-fgColor']: color,
26
- ['--BaseStyles-fontFamily']: fontFamily,
27
- ['--BaseStyles-lineHeight']: lineHeight
28
- };
29
- return /*#__PURE__*/jsxs(Component, {
30
- className: clsx('BaseStyles', className),
31
- "data-portal-root": true
32
- /**
33
- * We need to map valid primer/react color modes onto valid color modes for primer/primitives
34
- * valid color modes for primer/primitives: auto | light | dark
35
- * valid color modes for primer/primer: auto | day | night | light | dark
36
- */,
37
- "data-color-mode": colorMode === 'auto' ? 'auto' : colorScheme?.includes('dark') ? 'dark' : 'light',
38
- "data-light-theme": dayScheme,
39
- "data-dark-theme": nightScheme,
40
- style: {
41
- ...baseStyles,
42
- ...style
43
- },
44
- ...rest,
45
- children: [/*#__PURE__*/jsx(GlobalStyle, {
46
- colorScheme: colorScheme?.includes('dark') ? 'dark' : 'light'
47
- }), children]
48
- });
8
+ function BaseStyles({ children, color, fontFamily, lineHeight, className, as: Component = "div", style, ...rest }) {
9
+ const { colorMode, colorScheme, dayScheme, nightScheme } = useTheme();
10
+ const baseStyles = {
11
+ ["--BaseStyles-fgColor"]: color,
12
+ ["--BaseStyles-fontFamily"]: fontFamily,
13
+ ["--BaseStyles-lineHeight"]: lineHeight
14
+ };
15
+ return /*#__PURE__*/ jsxs(Component, {
16
+ className: clsx("BaseStyles", className),
17
+ "data-portal-root": true,
18
+ "data-color-mode": colorMode === "auto" ? "auto" : colorScheme?.includes("dark") ? "dark" : "light",
19
+ "data-light-theme": dayScheme,
20
+ "data-dark-theme": nightScheme,
21
+ style: {
22
+ ...baseStyles,
23
+ ...style
24
+ },
25
+ ...rest,
26
+ children: [/*#__PURE__*/ jsx(GlobalStyle, { colorScheme: colorScheme?.includes("dark") ? "dark" : "light" }), children]
27
+ });
49
28
  }
50
-
29
+ //#endregion
51
30
  export { BaseStyles };
@@ -1,12 +1,12 @@
1
- import type React from 'react';
2
- import { useTheme as primerUseTheme } from '@primer/react';
3
- import { useColorSchemeVar } from './ThemeProvider';
4
- import type { ThemeProviderProps as StyledThemeProviderProps } from './ThemeProvider';
5
- import type { BaseStylesProps as StyledBaseStylesProps } from './BaseStyles';
6
- export type ThemeProviderProps = StyledThemeProviderProps;
7
- export type BaseStylesProps = StyledBaseStylesProps;
8
- export declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
9
- export declare function useTheme(): ReturnType<typeof primerUseTheme>;
10
- export { useColorSchemeVar };
11
- export declare function BaseStyles(props: BaseStylesProps): React.JSX.Element;
1
+ import { BaseStylesProps as BaseStylesProps$1 } from "./BaseStyles.js";
2
+ import { ThemeProviderProps as ThemeProviderProps$1 } from "./ThemeProvider.js";
3
+ import React from "react";
4
+
5
+ //#region src/components/FeatureFlaggedTheming.d.ts
6
+ type ThemeProviderProps = ThemeProviderProps$1;
7
+ type BaseStylesProps = BaseStylesProps$1;
8
+ declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
9
+ declare function BaseStyles(props: BaseStylesProps): React.JSX.Element;
10
+ //#endregion
11
+ export { BaseStyles, BaseStylesProps, ThemeProvider, ThemeProviderProps };
12
12
  //# sourceMappingURL=FeatureFlaggedTheming.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureFlaggedTheming.d.ts","sourceRoot":"","sources":["../../src/components/FeatureFlaggedTheming.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAC9B,OAAO,EAEL,QAAQ,IAAI,cAAc,EAE3B,MAAM,eAAe,CAAA;AAMtB,OAAO,EAAmE,iBAAiB,EAAC,MAAM,iBAAiB,CAAA;AACnH,OAAO,KAAK,EAAC,kBAAkB,IAAI,wBAAwB,EAAC,MAAM,iBAAiB,CAAA;AAEnF,OAAO,KAAK,EAAC,eAAe,IAAI,qBAAqB,EAAC,MAAM,cAAc,CAAA;AAE1E,MAAM,MAAM,kBAAkB,GAAG,wBAAwB,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG,qBAAqB,CAAA;AAEnD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAM/E,CAAA;AAED,wBAAgB,QAAQ,IAAI,UAAU,CAAC,OAAO,cAAc,CAAC,CAQ5D;AAED,OAAO,EAAC,iBAAiB,EAAC,CAAA;AAE1B,wBAAgB,UAAU,CAAC,KAAK,EAAE,eAAe,qBAMhD"}
1
+ {"version":3,"file":"FeatureFlaggedTheming.d.ts","names":[],"sources":["../../src/components/FeatureFlaggedTheming.tsx"],"mappings":";;;;;KAYY,kBAAA,GAAqB,oBAAwB;AAAA,KAE7C,eAAA,GAAkB,iBAAqB;AAAA,cAEtC,aAAA,EAAe,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,iBAAA,CAAkB,kBAAA;AAAA,iBAQ7C,UAAA,CAAW,KAAA,EAAO,eAAA,GAAe,KAAA,CAAA,GAAA,CAAA,OAAA"}
@@ -1,45 +1,22 @@
1
- import { BaseStyles as BaseStyles$1, ThemeProvider as ThemeProvider$1, useTheme as useTheme$2 } from '@primer/react';
2
- import { useFeatureFlag } from '@primer/react/experimental';
3
- import { ThemeProvider as ThemeProvider$2, useTheme as useTheme$1 } from './ThemeProvider.js';
4
- export { useColorSchemeVar } from './ThemeProvider.js';
5
- import { BaseStyles as BaseStyles$2 } from './BaseStyles.js';
6
- import { jsx } from 'react/jsx-runtime';
7
-
8
- const ThemeProvider = ({
9
- children,
10
- ...props
11
- }) => {
12
- const enabled = useFeatureFlag('primer_react_styled_react_use_primer_theme_providers');
13
- if (enabled) {
14
- return /*#__PURE__*/jsx(ThemeProvider$1, {
15
- ...props,
16
- children: children
17
- });
18
- }
19
- return /*#__PURE__*/jsx(ThemeProvider$2, {
20
- ...props,
21
- children: children
22
- });
1
+ import { ThemeProvider as ThemeProvider$2 } from "./ThemeProvider.js";
2
+ import { BaseStyles as BaseStyles$2 } from "./BaseStyles.js";
3
+ import { BaseStyles, ThemeProvider } from "@primer/react";
4
+ import { useFeatureFlag } from "@primer/react/experimental";
5
+ import { jsx } from "react/jsx-runtime";
6
+ //#region src/components/FeatureFlaggedTheming.tsx
7
+ const ThemeProvider$1 = ({ children, ...props }) => {
8
+ if (useFeatureFlag("primer_react_styled_react_use_primer_theme_providers")) return /*#__PURE__*/ jsx(ThemeProvider, {
9
+ ...props,
10
+ children
11
+ });
12
+ return /*#__PURE__*/ jsx(ThemeProvider$2, {
13
+ ...props,
14
+ children
15
+ });
23
16
  };
24
- function useTheme() {
25
- const enabled = useFeatureFlag('primer_react_styled_react_use_primer_theme_providers');
26
- const styledTheme = useTheme$1();
27
- const primerTheme = useTheme$2();
28
- if (enabled) {
29
- return primerTheme;
30
- }
31
- return styledTheme;
17
+ function BaseStyles$1(props) {
18
+ if (useFeatureFlag("primer_react_styled_react_use_primer_theme_providers")) return /*#__PURE__*/ jsx(BaseStyles, { ...props });
19
+ return /*#__PURE__*/ jsx(BaseStyles$2, { ...props });
32
20
  }
33
- function BaseStyles(props) {
34
- const enabled = useFeatureFlag('primer_react_styled_react_use_primer_theme_providers');
35
- if (enabled) {
36
- return /*#__PURE__*/jsx(BaseStyles$1, {
37
- ...props
38
- });
39
- }
40
- return /*#__PURE__*/jsx(BaseStyles$2, {
41
- ...props
42
- });
43
- }
44
-
45
- export { BaseStyles, ThemeProvider, useTheme };
21
+ //#endregion
22
+ export { BaseStyles$1 as BaseStyles, ThemeProvider$1 as ThemeProvider };
@@ -0,0 +1,19 @@
1
+ import { ColorMode, ColorModeWithAuto, Theme } from "./ThemeProvider.js";
2
+ import React from "react";
3
+
4
+ //#region src/components/ThemeContext.d.ts
5
+ declare const ThemeContext: React.Context<{
6
+ theme?: Theme;
7
+ colorScheme?: string;
8
+ colorMode?: ColorModeWithAuto;
9
+ resolvedColorMode?: ColorMode;
10
+ resolvedColorScheme?: string;
11
+ dayScheme?: string;
12
+ nightScheme?: string;
13
+ setColorMode: React.Dispatch<React.SetStateAction<ColorModeWithAuto>>;
14
+ setDayScheme: React.Dispatch<React.SetStateAction<string>>;
15
+ setNightScheme: React.Dispatch<React.SetStateAction<string>>;
16
+ }>;
17
+ //#endregion
18
+ export { ThemeContext };
19
+ //# sourceMappingURL=ThemeContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ThemeContext.d.ts","names":[],"sources":["../../src/components/ThemeContext.ts"],"mappings":";;;;cAGa,YAAA,EAAY,KAAA,CAAA,OAAA;UACf,KAAA;;cAEI,iBAAA;sBACQ,SAAA;;;;gBAIN,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA,CAAe,iBAAA;gBACpC,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA;kBACnB,KAAA,CAAM,QAAA,CAAS,KAAA,CAAM,cAAA;AAAA"}
@@ -0,0 +1,9 @@
1
+ import React from "react";
2
+ //#region src/components/ThemeContext.ts
3
+ const ThemeContext = /*#__PURE__*/ React.createContext({
4
+ setColorMode: () => null,
5
+ setDayScheme: () => null,
6
+ setNightScheme: () => null
7
+ });
8
+ //#endregion
9
+ export { ThemeContext };
@@ -1,35 +1,25 @@
1
- import React from 'react';
2
- export declare const defaultColorMode = "day";
3
- export type Theme = {
4
- [key: string]: any;
1
+ import React from "react";
2
+
3
+ //#region src/components/ThemeProvider.d.ts
4
+ declare const defaultColorMode = "day";
5
+ type Theme = {
6
+ [key: string]: any;
5
7
  };
6
8
  type ColorMode = 'day' | 'night' | 'light' | 'dark';
7
- export type ColorModeWithAuto = ColorMode | 'auto';
8
- export type ThemeProviderProps = {
9
- theme?: Theme;
10
- colorMode?: ColorModeWithAuto;
11
- dayScheme?: string;
12
- nightScheme?: string;
13
- preventSSRMismatch?: boolean;
14
- /**
15
- * No-op. Exists solely to match @primer/react's ThemeProvider API.
16
- * @default false
17
- */
18
- contextOnly?: boolean;
9
+ type ColorModeWithAuto = ColorMode | 'auto';
10
+ type ThemeProviderProps = {
11
+ theme?: Theme;
12
+ colorMode?: ColorModeWithAuto;
13
+ dayScheme?: string;
14
+ nightScheme?: string;
15
+ preventSSRMismatch?: boolean;
16
+ /**
17
+ * No-op. Exists solely to match @primer/react's ThemeProvider API.
18
+ * @default false
19
+ */
20
+ contextOnly?: boolean;
19
21
  };
20
- export declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
21
- export declare function useTheme(): {
22
- theme?: Theme;
23
- colorScheme?: string;
24
- colorMode?: ColorModeWithAuto;
25
- resolvedColorMode?: ColorMode;
26
- resolvedColorScheme?: string;
27
- dayScheme?: string;
28
- nightScheme?: string;
29
- setColorMode: React.Dispatch<React.SetStateAction<ColorModeWithAuto>>;
30
- setDayScheme: React.Dispatch<React.SetStateAction<string>>;
31
- setNightScheme: React.Dispatch<React.SetStateAction<string>>;
32
- };
33
- export declare function useColorSchemeVar(values: Partial<Record<string, string>>, fallback: string): string;
34
- export default ThemeProvider;
22
+ declare const ThemeProvider: React.FC<React.PropsWithChildren<ThemeProviderProps>>;
23
+ //#endregion
24
+ export { ColorMode, ColorModeWithAuto, Theme, ThemeProvider, ThemeProvider as default, ThemeProviderProps, defaultColorMode };
35
25
  //# sourceMappingURL=ThemeProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ThemeProvider.d.ts","sourceRoot":"","sources":["../../src/components/ThemeProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAKzB,eAAO,MAAM,gBAAgB,QAAQ,CAAA;AAKrC,MAAM,MAAM,KAAK,GAAG;IAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAC,CAAA;AACxC,KAAK,SAAS,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,CAAA;AACnD,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,MAAM,CAAA;AAElD,MAAM,MAAM,kBAAkB,GAAG;IAC/B,KAAK,CAAC,EAAE,KAAK,CAAA;IACb,SAAS,CAAC,EAAE,iBAAiB,CAAA;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAA;IAC5B;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB,CAAA;AA8CD,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC,kBAAkB,CAAC,CAyE/E,CAAA;AAED,wBAAgB,QAAQ;YAtHd,KAAK;kBACC,MAAM;gBACR,iBAAiB;wBACT,SAAS;0BACP,MAAM;gBAChB,MAAM;kBACJ,MAAM;kBACN,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;kBACvD,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;oBAC1C,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;EA+G7D;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,UAG1F;AAqED,eAAe,aAAa,CAAA"}
1
+ {"version":3,"file":"ThemeProvider.d.ts","names":[],"sources":["../../src/components/ThemeProvider.tsx"],"mappings":";;;cAQa,gBAAA;AAAA,KAKD,KAAA;EAAA,CAAU,GAAW;AAAA;AAAA,KACrB,SAAA;AAAA,KACA,iBAAA,GAAoB,SAAS;AAAA,KAE7B,kBAAA;EACV,KAAA,GAAQ,KAAA;EACR,SAAA,GAAY,iBAAiB;EAC7B,SAAA;EACA,WAAA;EACA,kBAAA;EARU;;;;EAaV,WAAA;AAAA;AAAA,cA8BW,aAAA,EAAe,KAAA,CAAM,EAAA,CAAG,KAAA,CAAM,iBAAA,CAAkB,kBAAA"}
@@ -1,163 +1,120 @@
1
- import React from 'react';
2
- import { ThemeProvider as ThemeProvider$1 } from 'styled-components';
3
- import { theme, useId, useSyncedState } from '@primer/react';
4
- import deepmerge from 'deepmerge';
5
- import { jsx, jsxs } from 'react/jsx-runtime';
6
-
7
- const defaultColorMode = 'day';
8
- const defaultDayScheme = 'light';
9
- const defaultNightScheme = 'dark';
10
-
11
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
12
-
13
- const ThemeContext = /*#__PURE__*/React.createContext({
14
- setColorMode: () => null,
15
- setDayScheme: () => null,
16
- setNightScheme: () => null
17
- });
18
-
19
- // inspired from __NEXT_DATA__, we use application/json to avoid CSRF policy with inline scripts
20
- const serverHandoffCache = new Map();
1
+ import { theme as theme$1 } from "../theme.js";
2
+ import { ThemeContext } from "./ThemeContext.js";
3
+ import { useTheme as useTheme$1 } from "./useTheme.js";
4
+ import { useId, useSyncedState } from "@primer/react";
5
+ import React from "react";
6
+ import { ThemeProvider as ThemeProvider$1 } from "styled-components";
7
+ import deepmerge from "deepmerge";
8
+ import { jsx, jsxs } from "react/jsx-runtime";
9
+ const defaultDayScheme = "light";
10
+ const defaultNightScheme = "dark";
11
+ const serverHandoffCache = /* @__PURE__ */ new Map();
21
12
  const emptyHandoff = {};
22
- const getServerHandoff = id => {
23
- if (typeof document === 'undefined') return emptyHandoff;
24
- const cached = serverHandoffCache.get(id);
25
- if (cached !== undefined) return cached;
26
- try {
27
- const serverData = document.getElementById(`__PRIMER_DATA_${id}__`)?.textContent;
28
- if (serverData) {
29
- const parsed = JSON.parse(serverData);
30
- serverHandoffCache.set(id, parsed);
31
- return parsed;
32
- }
33
- } catch (_error) {
34
- // if document/element does not exist or JSON is invalid, supress error
35
- }
36
- const empty = {};
37
- serverHandoffCache.set(id, empty);
38
- return empty;
13
+ const getServerHandoff = (id) => {
14
+ if (typeof document === "undefined") return emptyHandoff;
15
+ const cached = serverHandoffCache.get(id);
16
+ if (cached !== void 0) return cached;
17
+ try {
18
+ const serverData = document.getElementById(`__PRIMER_DATA_${id}__`)?.textContent;
19
+ if (serverData) {
20
+ const parsed = JSON.parse(serverData);
21
+ serverHandoffCache.set(id, parsed);
22
+ return parsed;
23
+ }
24
+ } catch (_error) {}
25
+ const empty = {};
26
+ serverHandoffCache.set(id, empty);
27
+ return empty;
39
28
  };
40
29
  const emptySubscribe = () => () => {};
41
- const ThemeProvider = ({
42
- children,
43
- ...props
44
- }) => {
45
- // Get fallback values from parent ThemeProvider (if exists)
46
- const {
47
- theme: fallbackTheme,
48
- colorMode: fallbackColorMode,
49
- dayScheme: fallbackDayScheme,
50
- nightScheme: fallbackNightScheme
51
- } = useTheme();
52
-
53
- // Initialize state
54
- const theme$1 = props.theme ?? fallbackTheme ?? theme;
55
- const uniqueDataId = useId();
56
- const [colorMode, setColorMode] = useSyncedState(props.colorMode ?? fallbackColorMode ?? defaultColorMode);
57
- const [dayScheme, setDayScheme] = useSyncedState(props.dayScheme ?? fallbackDayScheme ?? defaultDayScheme);
58
- const [nightScheme, setNightScheme] = useSyncedState(props.nightScheme ?? fallbackNightScheme ?? defaultNightScheme);
59
- const systemColorMode = useSystemColorMode();
60
- const clientColorMode = resolveColorMode(colorMode, systemColorMode);
61
- // During SSR/hydration, use the server-rendered color mode from the handoff script tag
62
- // to avoid mismatches. After hydration, resolve from client state.
63
- const resolvedColorMode = React.useSyncExternalStore(emptySubscribe, () => clientColorMode, () => getServerHandoff(uniqueDataId).resolvedServerColorMode ?? clientColorMode);
64
- const colorScheme = chooseColorScheme(resolvedColorMode, dayScheme, nightScheme);
65
- const {
66
- resolvedTheme,
67
- resolvedColorScheme
68
- } = React.useMemo(() => applyColorScheme(theme$1, colorScheme), [theme$1, colorScheme]);
69
- const contextValue = React.useMemo(() => ({
70
- theme: resolvedTheme,
71
- colorScheme,
72
- colorMode,
73
- resolvedColorMode,
74
- resolvedColorScheme,
75
- dayScheme,
76
- nightScheme,
77
- setColorMode,
78
- setDayScheme,
79
- setNightScheme
80
- }), [resolvedTheme, colorScheme, colorMode, resolvedColorMode, resolvedColorScheme, dayScheme, nightScheme, setColorMode, setDayScheme, setNightScheme]);
81
- return /*#__PURE__*/jsx(ThemeContext.Provider, {
82
- value: contextValue,
83
- children: /*#__PURE__*/jsxs(ThemeProvider$1, {
84
- theme: resolvedTheme,
85
- children: [children, props.preventSSRMismatch ? /*#__PURE__*/jsx("script", {
86
- type: "application/json",
87
- id: `__PRIMER_DATA_${uniqueDataId}__`,
88
- dangerouslySetInnerHTML: {
89
- __html: JSON.stringify({
90
- resolvedServerColorMode: resolvedColorMode
91
- })
92
- }
93
- }) : null]
94
- })
95
- });
30
+ const ThemeProvider$2 = ({ children, ...props }) => {
31
+ const { theme: fallbackTheme, colorMode: fallbackColorMode, dayScheme: fallbackDayScheme, nightScheme: fallbackNightScheme } = useTheme$1();
32
+ const theme = props.theme ?? fallbackTheme ?? theme$1;
33
+ const uniqueDataId = useId();
34
+ const [colorMode, setColorMode] = useSyncedState(props.colorMode ?? fallbackColorMode ?? "day");
35
+ const [dayScheme, setDayScheme] = useSyncedState(props.dayScheme ?? fallbackDayScheme ?? defaultDayScheme);
36
+ const [nightScheme, setNightScheme] = useSyncedState(props.nightScheme ?? fallbackNightScheme ?? defaultNightScheme);
37
+ const clientColorMode = resolveColorMode(colorMode, useSystemColorMode());
38
+ const resolvedColorMode = React.useSyncExternalStore(emptySubscribe, () => clientColorMode, () => getServerHandoff(uniqueDataId).resolvedServerColorMode ?? clientColorMode);
39
+ const colorScheme = chooseColorScheme(resolvedColorMode, dayScheme, nightScheme);
40
+ const { resolvedTheme, resolvedColorScheme } = React.useMemo(() => applyColorScheme(theme, colorScheme), [theme, colorScheme]);
41
+ const contextValue = React.useMemo(() => ({
42
+ theme: resolvedTheme,
43
+ colorScheme,
44
+ colorMode,
45
+ resolvedColorMode,
46
+ resolvedColorScheme,
47
+ dayScheme,
48
+ nightScheme,
49
+ setColorMode,
50
+ setDayScheme,
51
+ setNightScheme
52
+ }), [
53
+ resolvedTheme,
54
+ colorScheme,
55
+ colorMode,
56
+ resolvedColorMode,
57
+ resolvedColorScheme,
58
+ dayScheme,
59
+ nightScheme,
60
+ setColorMode,
61
+ setDayScheme,
62
+ setNightScheme
63
+ ]);
64
+ return /*#__PURE__*/ jsx(ThemeContext.Provider, {
65
+ value: contextValue,
66
+ children: /*#__PURE__*/ jsxs(ThemeProvider$1, {
67
+ theme: resolvedTheme,
68
+ children: [children, props.preventSSRMismatch ? /*#__PURE__*/ jsx("script", {
69
+ type: "application/json",
70
+ id: `__PRIMER_DATA_${uniqueDataId}__`,
71
+ dangerouslySetInnerHTML: { __html: JSON.stringify({ resolvedServerColorMode: resolvedColorMode }) }
72
+ }) : null]
73
+ })
74
+ });
96
75
  };
97
- function useTheme() {
98
- return React.useContext(ThemeContext);
99
- }
100
- function useColorSchemeVar(values, fallback) {
101
- const {
102
- colorScheme = ''
103
- } = useTheme();
104
- return values[colorScheme] ?? fallback;
105
- }
106
76
  function subscribeToSystemColorMode(callback) {
107
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
108
- const media = window?.matchMedia?.('(prefers-color-scheme: dark)');
109
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
110
- media?.addEventListener('change', callback);
111
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
112
- return () => media?.removeEventListener('change', callback);
77
+ const media = window?.matchMedia?.("(prefers-color-scheme: dark)");
78
+ media?.addEventListener("change", callback);
79
+ return () => media?.removeEventListener("change", callback);
113
80
  }
114
81
  function useSystemColorMode() {
115
- return React.useSyncExternalStore(subscribeToSystemColorMode, getSystemColorMode, () => 'day');
82
+ return React.useSyncExternalStore(subscribeToSystemColorMode, getSystemColorMode, () => "day");
116
83
  }
117
84
  function getSystemColorMode() {
118
- // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition
119
- return window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches ? 'night' : 'day';
85
+ return window?.matchMedia?.("(prefers-color-scheme: dark)")?.matches ? "night" : "day";
120
86
  }
121
87
  function resolveColorMode(colorMode, systemColorMode) {
122
- switch (colorMode) {
123
- case 'auto':
124
- return systemColorMode;
125
- default:
126
- return colorMode;
127
- }
88
+ switch (colorMode) {
89
+ case "auto": return systemColorMode;
90
+ default: return colorMode;
91
+ }
128
92
  }
129
93
  function chooseColorScheme(colorMode, dayScheme, nightScheme) {
130
- switch (colorMode) {
131
- case 'day':
132
- case 'light':
133
- return dayScheme;
134
- case 'dark':
135
- case 'night':
136
- return nightScheme;
137
- }
94
+ switch (colorMode) {
95
+ case "day":
96
+ case "light": return dayScheme;
97
+ case "dark":
98
+ case "night": return nightScheme;
99
+ }
138
100
  }
139
101
  function applyColorScheme(theme, colorScheme) {
140
- if (!theme.colorSchemes) {
141
- return {
142
- resolvedTheme: theme,
143
- resolvedColorScheme: undefined
144
- };
145
- }
146
- if (!theme.colorSchemes[colorScheme]) {
147
- // eslint-disable-next-line no-console
148
- console.error(`\`${colorScheme}\` scheme not defined in \`theme.colorSchemes\``);
149
-
150
- // Apply the first defined color scheme
151
- const defaultColorScheme = Object.keys(theme.colorSchemes)[0];
152
- return {
153
- resolvedTheme: deepmerge(theme, theme.colorSchemes[defaultColorScheme]),
154
- resolvedColorScheme: defaultColorScheme
155
- };
156
- }
157
- return {
158
- resolvedTheme: deepmerge(theme, theme.colorSchemes[colorScheme]),
159
- resolvedColorScheme: colorScheme
160
- };
102
+ if (!theme.colorSchemes) return {
103
+ resolvedTheme: theme,
104
+ resolvedColorScheme: void 0
105
+ };
106
+ if (!theme.colorSchemes[colorScheme]) {
107
+ console.error(`\`${colorScheme}\` scheme not defined in \`theme.colorSchemes\``);
108
+ const defaultColorScheme = Object.keys(theme.colorSchemes)[0];
109
+ return {
110
+ resolvedTheme: deepmerge(theme, theme.colorSchemes[defaultColorScheme]),
111
+ resolvedColorScheme: defaultColorScheme
112
+ };
113
+ }
114
+ return {
115
+ resolvedTheme: deepmerge(theme, theme.colorSchemes[colorScheme]),
116
+ resolvedColorScheme: colorScheme
117
+ };
161
118
  }
162
-
163
- export { ThemeProvider, defaultColorMode, useColorSchemeVar, useTheme };
119
+ //#endregion
120
+ export { ThemeProvider$2 as ThemeProvider, ThemeProvider$2 as default };
@@ -0,0 +1,8 @@
1
+ import { useTheme as useTheme$1 } from "./useTheme.js";
2
+
3
+ //#region src/components/useFeatureFlaggedTheme.d.ts
4
+ declare function useTheme(): ReturnType<typeof useTheme$1>;
5
+ declare function useColorSchemeVar(values: Partial<Record<string, string>>, fallback: string): string;
6
+ //#endregion
7
+ export { useColorSchemeVar, useTheme };
8
+ //# sourceMappingURL=useFeatureFlaggedTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFeatureFlaggedTheme.d.ts","names":[],"sources":["../../src/components/useFeatureFlaggedTheme.ts"],"mappings":";;;iBAIgB,QAAA,IAAY,UAAU,QAAQ,UAAA;AAAA,iBAU9B,iBAAA,CAAkB,MAAA,EAAQ,OAAO,CAAC,MAAA,mBAAyB,QAAA"}