@blockle/blocks-react 2.8.0 → 3.0.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.
Files changed (34) hide show
  1. package/dist/components/feedback/Skeleton/Skeleton.js +1 -1
  2. package/dist/components/form/Slider/Slider.d.ts +1 -1
  3. package/dist/components/form/Slider/Slider.d.ts.map +1 -1
  4. package/dist/components/form/Slider/Slider.js +2 -2
  5. package/dist/components/overlay/Tooltip/Tooltip.d.ts +1 -1
  6. package/dist/components/overlay/Tooltip/Tooltip.d.ts.map +1 -1
  7. package/dist/components/overlay/Tooltip/Tooltip.js +2 -2
  8. package/dist/components/providers/BlocksProvider/BlocksProvider.d.ts +7 -1
  9. package/dist/components/providers/BlocksProvider/BlocksProvider.d.ts.map +1 -1
  10. package/dist/components/providers/BlocksProvider/BlocksProvider.js +26 -4
  11. package/dist/components/providers/BlocksProvider/context.d.ts +3 -1
  12. package/dist/components/providers/BlocksProvider/context.d.ts.map +1 -1
  13. package/dist/components/typography/Heading/Heading.d.ts +4 -1
  14. package/dist/components/typography/Heading/Heading.d.ts.map +1 -1
  15. package/dist/components/typography/Heading/Heading.js +8 -1
  16. package/dist/components/typography/Text/Text.d.ts +5 -2
  17. package/dist/components/typography/Text/Text.d.ts.map +1 -1
  18. package/dist/components/typography/Text/Text.js +19 -4
  19. package/dist/components/typography/textColor.d.ts +12 -0
  20. package/dist/components/typography/textColor.d.ts.map +1 -0
  21. package/dist/hooks/useColorMode/useColorMode.d.ts +13 -0
  22. package/dist/hooks/useColorMode/useColorMode.d.ts.map +1 -0
  23. package/dist/hooks/useColorMode/useColorMode.js +41 -0
  24. package/dist/index.d.ts +1 -0
  25. package/dist/index.d.ts.map +1 -1
  26. package/dist/index.js +2 -0
  27. package/dist/testUtils/browser/contrast.d.ts +4 -0
  28. package/dist/testUtils/browser/contrast.d.ts.map +1 -0
  29. package/dist/testUtils/browser/emulateColorScheme.d.ts +7 -0
  30. package/dist/testUtils/browser/emulateColorScheme.d.ts.map +1 -0
  31. package/dist/testUtils/browser/render.d.ts +13 -0
  32. package/dist/testUtils/browser/render.d.ts.map +1 -0
  33. package/dist/testUtils/testTheme.css.d.ts.map +1 -1
  34. package/package.json +2 -2
@@ -7,7 +7,7 @@ const Skeleton = ({
7
7
  circle = false,
8
8
  className,
9
9
  borderRadius = 1,
10
- backgroundColor = "background-300",
10
+ backgroundColor = { light: "neutral-200", dark: "neutral-800" },
11
11
  style,
12
12
  ...restProps
13
13
  }) => {
@@ -14,7 +14,7 @@ export type SliderProps = {
14
14
  'aria-valuetext'?: string;
15
15
  'aria-label'?: string;
16
16
  size?: SliderTheme['variants']['size'];
17
- colorScheme?: SliderTheme['variants']['colorScheme'];
17
+ intent?: SliderTheme['variants']['intent'];
18
18
  disabled?: boolean;
19
19
  };
20
20
  export declare const Slider: React.FC<SliderProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../../src/components/form/Slider/Slider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,KAAK,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,IAAI,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,WAAW,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsIxC,CAAC"}
1
+ {"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../../src/components/form/Slider/Slider.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAGrB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAsB/B,KAAK,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACxC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,IAAI,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,CAAC,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC3C,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,eAAO,MAAM,MAAM,EAAE,KAAK,CAAC,EAAE,CAAC,WAAW,CAsIxC,CAAC"}
@@ -28,13 +28,13 @@ const Slider = ({
28
28
  value,
29
29
  name,
30
30
  size,
31
- colorScheme,
31
+ intent,
32
32
  disabled,
33
33
  ...restProps
34
34
  }) => {
35
35
  const baseClass = useComponentStyles("slider", {
36
36
  root: true,
37
- variants: { size, colorScheme, disabled }
37
+ variants: { size, intent, disabled }
38
38
  });
39
39
  const trackClass = useComponentStyles("slider", { track: true }, false);
40
40
  const filledTrackClass = useComponentStyles(
@@ -6,7 +6,7 @@ export type TooltipProps = {
6
6
  position?: PopoverProps['position'];
7
7
  children: ReactElement;
8
8
  content: React.ReactNode;
9
- colorScheme?: TooltipTheme['variants']['colorScheme'];
9
+ intent?: TooltipTheme['variants']['intent'];
10
10
  } & Omit<HTMLElementProps<HTMLDivElement>, 'ref' | 'children'>;
11
11
  export declare const Tooltip: React.FC<TooltipProps>;
12
12
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/overlay/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAY9B,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,YAAY,GAAG,KAAK,CAAC,YAAY,CAEpC,GAAG,EAEH,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAC1C,CAAC;AAEF,KAAK,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,aAAa,CAAC,CAAC;CACvD,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAE/D,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA+E1C,CAAC"}
1
+ {"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../../src/components/overlay/Tooltip/Tooltip.tsx"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,eAAe,EAEpB,KAAK,gBAAgB,EACtB,MAAM,sBAAsB,CAAC;AAY9B,OAAO,EAAW,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAEnE,KAAK,YAAY,GAAG,KAAK,CAAC,YAAY,CAEpC,GAAG,EAEH,MAAM,GAAG,KAAK,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAC1C,CAAC;AAEF,KAAK,YAAY,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;AAE/C,MAAM,MAAM,YAAY,GAAG;IACzB,QAAQ,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACpC,QAAQ,EAAE,YAAY,CAAC;IACvB,OAAO,EAAE,KAAK,CAAC,SAAS,CAAC;IACzB,MAAM,CAAC,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC;CAC7C,GAAG,IAAI,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,KAAK,GAAG,UAAU,CAAC,CAAC;AAE/D,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA+E1C,CAAC"}
@@ -8,14 +8,14 @@ const Tooltip = ({
8
8
  position = "top",
9
9
  children,
10
10
  content,
11
- colorScheme
11
+ intent
12
12
  }) => {
13
13
  const id = useId();
14
14
  const ref = useRef(null);
15
15
  const [open, setOpen] = useState(false);
16
16
  const tooltipClassName = useComponentStyles("tooltip", {
17
17
  root: true,
18
- variants: { colorScheme }
18
+ variants: { intent }
19
19
  });
20
20
  useEffect(() => {
21
21
  const element = ref.current;
@@ -1,7 +1,13 @@
1
- import { Theme } from '@blockle/blocks-core';
1
+ import { ColorModeSetting, Theme } from '@blockle/blocks-core';
2
2
  export type BlocksProviderProps = {
3
3
  children: React.ReactNode;
4
4
  theme: Theme;
5
+ /**
6
+ * The Color mode of the whole page, written as `data-color-mode` on `<html>`.
7
+ * Only the outermost BlocksProvider uses it; a nested provider ignores it.
8
+ * @default 'system'
9
+ */
10
+ colorMode?: ColorModeSetting;
5
11
  className?: string;
6
12
  style?: React.CSSProperties;
7
13
  asChild?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"BlocksProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/providers/BlocksProvider/BlocksProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAMrE,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAIF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA2BxD,CAAC"}
1
+ {"version":3,"file":"BlocksProvider.d.ts","sourceRoot":"","sources":["../../../../src/components/providers/BlocksProvider/BlocksProvider.tsx"],"names":[],"mappings":"AAEA,OAAO,EAEL,KAAK,gBAAgB,EAIrB,KAAK,KAAK,EACX,MAAM,sBAAsB,CAAC;AAO9B,MAAM,MAAM,mBAAmB,GAAG;IAChC,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb;;;;OAIG;IACH,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAuBF;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA+CxD,CAAC"}
@@ -1,21 +1,43 @@
1
1
  "use client";
2
2
  import { jsx } from "react/jsx-runtime";
3
- import { classnames, atoms } from "@blockle/blocks-core";
3
+ import { defaultColorMode, classnames, atoms, colorModeAttribute } from "@blockle/blocks-core";
4
4
  import { createSlottable } from "@blockle/blocks-react-slot";
5
- import { useMemo } from "react";
5
+ import { useContext, useEffect, useMemo } from "react";
6
+ import { useIsomorphicLayoutEffect } from "../../../hooks/useIsomorphicLayoutEffect/useIsomorphicLayoutEffect.js";
6
7
  import { BlocksProviderContext } from "./context.js";
7
8
  const [Template, Slot] = createSlottable("div");
9
+ function useColorModeAttribute(colorMode) {
10
+ useIsomorphicLayoutEffect(() => {
11
+ if (colorMode === null) {
12
+ return;
13
+ }
14
+ const element = document.documentElement;
15
+ element.setAttribute(colorModeAttribute, colorMode);
16
+ return () => {
17
+ element.removeAttribute(colorModeAttribute);
18
+ };
19
+ }, [colorMode]);
20
+ }
8
21
  const BlocksProvider = ({
9
22
  children,
10
23
  theme,
24
+ colorMode,
11
25
  className,
12
26
  ...restProps
13
27
  }) => {
28
+ const parentContext = useContext(BlocksProviderContext);
29
+ const isOutermost = parentContext === null;
30
+ const activeColorMode = parentContext ? parentContext.colorMode : colorMode ?? defaultColorMode;
31
+ useColorModeAttribute(isOutermost ? activeColorMode : null);
32
+ const ignoresColorMode = !isOutermost && colorMode !== void 0;
33
+ useEffect(() => {
34
+ }, [ignoresColorMode]);
14
35
  const contextValue = useMemo(
15
36
  () => ({
16
- theme
37
+ theme,
38
+ colorMode: activeColorMode
17
39
  }),
18
- [theme]
40
+ [theme, activeColorMode]
19
41
  );
20
42
  return /* @__PURE__ */ jsx(BlocksProviderContext, { value: contextValue, children: /* @__PURE__ */ jsx(
21
43
  Template,
@@ -1,6 +1,8 @@
1
- import { Theme } from '@blockle/blocks-core';
1
+ import { ColorModeSetting, Theme } from '@blockle/blocks-core';
2
2
  export type BlocksProviderContextProps = {
3
3
  theme: Theme;
4
+ /** The outermost provider's colorMode, shared with nested providers. */
5
+ colorMode: ColorModeSetting;
4
6
  };
5
7
  export declare const BlocksProviderContext: import('react').Context<BlocksProviderContextProps | null>;
6
8
  //# sourceMappingURL=context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/providers/BlocksProvider/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGlD,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;CACd,CAAC;AAEF,eAAO,MAAM,qBAAqB,4DACsB,CAAC"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../../src/components/providers/BlocksProvider/context.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAGpE,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,KAAK,CAAC;IACb,wEAAwE;IACxE,SAAS,EAAE,gBAAgB,CAAC;CAC7B,CAAC;AAEF,eAAO,MAAM,qBAAqB,4DACsB,CAAC"}
@@ -1,7 +1,10 @@
1
1
  import { HTMLElementProps, MarginAtoms, PaddingAtoms, TextAtoms } from '@blockle/blocks-core';
2
+ import { TextColor } from '../textColor.js';
2
3
  export type HeadingProps = {
3
4
  className?: string;
5
+ /** A text Color role, which follows the Color mode, or a fixed Palette color. */
6
+ color?: TextColor;
4
7
  level?: 1 | 2 | 3 | 4 | 5 | 6;
5
- } & HTMLElementProps<HTMLHeadingElement> & TextAtoms & MarginAtoms & PaddingAtoms;
8
+ } & HTMLElementProps<HTMLHeadingElement> & Omit<TextAtoms, 'color'> & MarginAtoms & PaddingAtoms;
6
9
  export declare const Heading: React.FC<HeadingProps>;
7
10
  //# sourceMappingURL=Heading.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/Heading/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GACtC,SAAS,GACT,WAAW,GACX,YAAY,CAAC;AAEf,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAiB1C,CAAC"}
1
+ {"version":3,"file":"Heading.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/Heading/Heading.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAI9B,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAGhE,MAAM,MAAM,YAAY,GAAG;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;CAC/B,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,GACtC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GACxB,WAAW,GACX,YAAY,CAAC;AAEf,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAuB1C,CAAC"}
@@ -1,19 +1,26 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { classnames } from "@blockle/blocks-core";
3
+ import { useComponentStyles } from "../../../hooks/useComponentStyles/useComponentStyles.js";
3
4
  import { Box } from "../../layout/Box/Box.js";
4
5
  import { heading } from "./heading.css.js";
5
6
  const Heading = ({
6
7
  className,
8
+ color,
7
9
  level = 1,
8
10
  children,
9
11
  ...restProps
10
12
  }) => {
13
+ const themeClassName = useComponentStyles("heading", {
14
+ root: true,
15
+ variants: { color }
16
+ });
11
17
  const Tag = `h${level}`;
12
18
  return /* @__PURE__ */ jsx(
13
19
  Box,
14
20
  {
15
21
  asChild: true,
16
- className: classnames(heading, className),
22
+ className: classnames(heading, themeClassName, className),
23
+ color,
17
24
  ...restProps,
18
25
  children: /* @__PURE__ */ jsx(Tag, { children })
19
26
  }
@@ -1,12 +1,15 @@
1
1
  import { HTMLElementProps, MarginAtoms, PaddingAtoms, TextAtoms } from '@blockle/blocks-core';
2
2
  import { default as React } from 'react';
3
+ import { TextColor } from '../textColor.js';
3
4
  type Tags = 'cite' | 'code' | 'del' | 'em' | 'ins' | 'kbd' | 'label' | 'mark' | 'p' | 'q' | 's' | 'small' | 'span' | 'strong' | 'sub' | 'sup';
4
5
  export type TextProps<Tag extends Tags = 'span'> = {
5
6
  asChild?: boolean;
6
7
  children: React.ReactNode;
7
8
  ref?: React.Ref<HTMLElementTagNameMap[Tag]>;
8
9
  tag?: Tag;
9
- } & Omit<HTMLElementProps<HTMLSpanElement>, 'children' | 'ref'> & TextAtoms & MarginAtoms & PaddingAtoms;
10
- export declare const Text: <T extends Tags = "span">({ asChild, children, className, ref, tag, ...restProps }: TextProps<T>) => import("react/jsx-runtime").JSX.Element;
10
+ /** A text Color role, which follows the Color mode, or a fixed Palette color. */
11
+ color?: TextColor;
12
+ } & Omit<HTMLElementProps<HTMLSpanElement>, 'children' | 'ref'> & Omit<TextAtoms, 'color'> & MarginAtoms & PaddingAtoms;
13
+ export declare const Text: <T extends Tags = "span">({ asChild, children, className, color, ref, tag, ...restProps }: TextProps<T>) => import("react/jsx-runtime").JSX.Element;
11
14
  export {};
12
15
  //# sourceMappingURL=Text.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAK/B,KAAK,IAAI,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,IAAI,GACJ,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,GACN,GAAG,GACH,GAAG,GACH,GAAG,GACH,OAAO,GACP,MAAM,GACN,QAAQ,GACR,KAAK,GACL,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,GAAG,SAAS,IAAI,GAAG,MAAM,IAAI;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,EAAE,GAAG,CAAC;CACX,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,GAC7D,SAAS,GACT,WAAW,GACX,YAAY,CAAC;AAEf,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,0DAO3C,SAAS,CAAC,CAAC,CAAC,4CAad,CAAC"}
1
+ {"version":3,"file":"Text.d.ts","sourceRoot":"","sources":["../../../../src/components/typography/Text/Text.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,iBAAiB,CAAC;AAGhE,KAAK,IAAI,GACL,MAAM,GACN,MAAM,GACN,KAAK,GACL,IAAI,GACJ,KAAK,GACL,KAAK,GACL,OAAO,GACP,MAAM,GACN,GAAG,GACH,GAAG,GACH,GAAG,GACH,OAAO,GACP,MAAM,GACN,QAAQ,GACR,KAAK,GACL,KAAK,CAAC;AAEV,MAAM,MAAM,SAAS,CAAC,GAAG,SAAS,IAAI,GAAG,MAAM,IAAI;IACjD,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,iFAAiF;IACjF,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB,GAAG,IAAI,CAAC,gBAAgB,CAAC,eAAe,CAAC,EAAE,UAAU,GAAG,KAAK,CAAC,GAC7D,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,GACxB,WAAW,GACX,YAAY,CAAC;AAEf,eAAO,MAAM,IAAI,GAAI,CAAC,SAAS,IAAI,GAAG,MAAM,EAAE,iEAQ3C,SAAS,CAAC,CAAC,CAAC,4CAsBd,CAAC"}
@@ -1,20 +1,35 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
2
  import { classnames } from "@blockle/blocks-core";
3
+ import { useComponentStyles } from "../../../hooks/useComponentStyles/useComponentStyles.js";
3
4
  import { Box } from "../../layout/Box/Box.js";
4
5
  import { text } from "./text.css.js";
5
6
  const Text = ({
6
7
  asChild,
7
8
  children,
8
9
  className,
10
+ color,
9
11
  ref,
10
12
  tag,
11
13
  ...restProps
12
14
  }) => {
13
15
  const Component = tag ?? "span";
14
- return /* @__PURE__ */ jsx(Box, { asChild: true, className: classnames(text, className), ...restProps, children: asChild ? children : (
15
- // biome-ignore lint/suspicious/noExplicitAny: Safe to assert ref as React.RefObject<any>
16
- /* @__PURE__ */ jsx(Component, { ref, children })
17
- ) });
16
+ const themeClassName = useComponentStyles("text", {
17
+ root: true,
18
+ variants: { color }
19
+ });
20
+ return /* @__PURE__ */ jsx(
21
+ Box,
22
+ {
23
+ asChild: true,
24
+ className: classnames(text, themeClassName, className),
25
+ color,
26
+ ...restProps,
27
+ children: asChild ? children : (
28
+ // biome-ignore lint/suspicious/noExplicitAny: Safe to assert ref as React.RefObject<any>
29
+ /* @__PURE__ */ jsx(Component, { ref, children })
30
+ )
31
+ }
32
+ );
18
33
  };
19
34
  export {
20
35
  Text
@@ -0,0 +1,12 @@
1
+ import { Atoms, ComponentThemes } from '@blockle/blocks-core';
2
+ export type TextColorRole = ComponentThemes['text']['variants']['color'];
3
+ /**
4
+ * The `color` prop of Text and Heading: a Color role (`muted`), styled by the
5
+ * component theme and following the Color mode, or a Palette atom for Box.
6
+ *
7
+ * The prop goes to both the theme and Box, and each ignores values it doesn't
8
+ * know. Any color also suppresses the theme's default variant, so a Palette
9
+ * color is not overridden by `text.default`.
10
+ */
11
+ export type TextColor = TextColorRole | Atoms['color'];
12
+ //# sourceMappingURL=textColor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"textColor.d.ts","sourceRoot":"","sources":["../../../src/components/typography/textColor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEnE,MAAM,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;AAEzE;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ColorMode, ColorModeSetting } from '@blockle/blocks-core';
2
+ export type UseColorModeResult = {
3
+ /** What the outermost BlocksProvider was given: `light`, `dark` or `system`. */
4
+ colorMode: ColorModeSetting;
5
+ /** The Color mode actually rendered. Under `system` it follows the OS. */
6
+ resolvedColorMode: ColorMode;
7
+ };
8
+ /**
9
+ * The page's Color mode, for JS-driven visuals (charts, canvas, maps) that need
10
+ * to know it. Saving the user's choice and toggling stay the app's job.
11
+ */
12
+ export declare const useColorMode: () => UseColorModeResult;
13
+ //# sourceMappingURL=useColorMode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useColorMode.d.ts","sourceRoot":"","sources":["../../../src/hooks/useColorMode/useColorMode.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,gBAAgB,EAItB,MAAM,sBAAsB,CAAC;AAK9B,MAAM,MAAM,kBAAkB,GAAG;IAC/B,gFAAgF;IAChF,SAAS,EAAE,gBAAgB,CAAC;IAC5B,0EAA0E;IAC1E,iBAAiB,EAAE,SAAS,CAAC;CAC9B,CAAC;AAyBF;;;GAGG;AACH,eAAO,MAAM,YAAY,QAAO,kBAoB/B,CAAC"}
@@ -0,0 +1,41 @@
1
+ "use client";
2
+ import { systemFallbackColorMode, systemColorModeQueries, resolveSystemColorMode } from "@blockle/blocks-core";
3
+ import { useContext, useSyncExternalStore } from "react";
4
+ import { BlocksProviderContext } from "../../components/providers/BlocksProvider/context.js";
5
+ const getServerSnapshot = () => systemFallbackColorMode;
6
+ const getSystemColorMode = () => resolveSystemColorMode((query) => window.matchMedia(query).matches);
7
+ const subscribeToSystemColorMode = (onChange) => {
8
+ const lists = Object.values(systemColorModeQueries).map(
9
+ (query) => window.matchMedia(query)
10
+ );
11
+ for (const list of lists) {
12
+ list.addEventListener("change", onChange);
13
+ }
14
+ return () => {
15
+ for (const list of lists) {
16
+ list.removeEventListener("change", onChange);
17
+ }
18
+ };
19
+ };
20
+ const noopSubscribe = () => () => {
21
+ };
22
+ const useColorMode = () => {
23
+ const context = useContext(BlocksProviderContext);
24
+ if (!context) {
25
+ throw new Error("useColorMode must be called within a BlocksProvider");
26
+ }
27
+ const { colorMode } = context;
28
+ const isSystem = colorMode === "system";
29
+ const systemColorMode = useSyncExternalStore(
30
+ isSystem ? subscribeToSystemColorMode : noopSubscribe,
31
+ isSystem ? getSystemColorMode : getServerSnapshot,
32
+ getServerSnapshot
33
+ );
34
+ return {
35
+ colorMode,
36
+ resolvedColorMode: isSystem ? systemColorMode : colorMode
37
+ };
38
+ };
39
+ export {
40
+ useColorMode
41
+ };
package/dist/index.d.ts CHANGED
@@ -33,6 +33,7 @@ export { Tooltip, type TooltipProps, } from './components/overlay/Tooltip/Toolti
33
33
  export { BlocksProvider, type BlocksProviderProps, } from './components/providers/BlocksProvider/BlocksProvider.js';
34
34
  export { Heading, type HeadingProps, } from './components/typography/Heading/Heading.js';
35
35
  export { Text, type TextProps } from './components/typography/Text/Text.js';
36
+ export { type UseColorModeResult, useColorMode, } from './hooks/useColorMode/useColorMode.js';
36
37
  export { useComponentStyleDefaultProps } from './hooks/useComponentStyles/useComponentStyleDefaultProps.js';
37
38
  export { useComponentStyles } from './hooks/useComponentStyles/useComponentStyles.js';
38
39
  export { useControlledValue } from './hooks/useControlledValue/useControlledValue.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -33,6 +33,7 @@ import { Tooltip } from "./components/overlay/Tooltip/Tooltip.js";
33
33
  import { BlocksProvider } from "./components/providers/BlocksProvider/BlocksProvider.js";
34
34
  import { Heading } from "./components/typography/Heading/Heading.js";
35
35
  import { Text } from "./components/typography/Text/Text.js";
36
+ import { useColorMode } from "./hooks/useColorMode/useColorMode.js";
36
37
  import { useComponentStyleDefaultProps } from "./hooks/useComponentStyles/useComponentStyleDefaultProps.js";
37
38
  import { useComponentStyles } from "./hooks/useComponentStyles/useComponentStyles.js";
38
39
  import { useControlledValue } from "./hooks/useControlledValue/useControlledValue.js";
@@ -74,6 +75,7 @@ export {
74
75
  Tooltip,
75
76
  VisuallyHidden,
76
77
  createIconMask,
78
+ useColorMode,
77
79
  useComponentStyleDefaultProps,
78
80
  useComponentStyles,
79
81
  useControlledValue,
@@ -0,0 +1,4 @@
1
+ /** Resolves a CSS `var(--x)` reference to a computed rgb() string. */
2
+ export declare function resolve(cssVar: string, colorMode: 'light' | 'dark'): Promise<string>;
3
+ export declare function contrast(a: string, b: string): number;
4
+ //# sourceMappingURL=contrast.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contrast.d.ts","sourceRoot":"","sources":["../../../src/testUtils/browser/contrast.tsx"],"names":[],"mappings":"AAEA,sEAAsE;AACtE,wBAAsB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,GAAG,MAAM,mBAYxE;AAeD,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,UAM5C"}
@@ -0,0 +1,7 @@
1
+ export type EmulatedColorScheme = 'light' | 'dark';
2
+ /**
3
+ * Emulates the OS preference (`prefers-color-scheme`) of the browser under test.
4
+ * Can be called repeatedly to switch mid-test. Chromium only.
5
+ */
6
+ export declare function emulateColorScheme(scheme: EmulatedColorScheme): Promise<void>;
7
+ //# sourceMappingURL=emulateColorScheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emulateColorScheme.d.ts","sourceRoot":"","sources":["../../../src/testUtils/browser/emulateColorScheme.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,CAAC;AAEnD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,mBAAmB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -0,0 +1,13 @@
1
+ import { render as browserRender } from 'vitest-browser-react';
2
+ import { BlocksProviderProps } from '../../components/providers/BlocksProvider/BlocksProvider.js';
3
+ type RenderOptions = Parameters<typeof browserRender>[1] & {
4
+ /** Passed to the outermost BlocksProvider. Omit to use its default. */
5
+ colorMode?: BlocksProviderProps['colorMode'];
6
+ };
7
+ /**
8
+ * Renders the UI in a real browser, under BlocksProvider with the momotaro theme.
9
+ * Use for tests that need real computed styles.
10
+ */
11
+ export declare const render: (ui: Parameters<typeof browserRender>[0], { colorMode, ...options }?: RenderOptions) => Promise<import('vitest-browser-react').RenderResult>;
12
+ export {};
13
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../../src/testUtils/browser/render.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,IAAI,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE/D,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,6DAA6D,CAAC;AAErE,KAAK,aAAa,GAAG,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG;IACzD,uEAAuE;IACvE,SAAS,CAAC,EAAE,mBAAmB,CAAC,WAAW,CAAC,CAAC;CAC9C,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,MAAM,GACjB,IAAI,UAAU,CAAC,OAAO,aAAa,CAAC,CAAC,CAAC,CAAC,EACvC,4BAA2B,aAAkB,yDAU9C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"testTheme.css.d.ts","sourceRoot":"","sources":["../../src/testUtils/testTheme.css.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,KAuGvB,CAAC"}
1
+ {"version":3,"file":"testTheme.css.d.ts","sourceRoot":"","sources":["../../src/testUtils/testTheme.css.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,YAAY,KAuMvB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@blockle/blocks-react",
3
- "version": "2.8.0",
3
+ "version": "3.0.0",
4
4
  "description": "React hooks and components for Blockle",
5
5
  "type": "module",
6
6
  "exports": {
@@ -34,7 +34,7 @@
34
34
  "@vanilla-extract/css": "^1.18.0"
35
35
  },
36
36
  "peerDependencies": {
37
- "@blockle/blocks-core": ">=1.3.x",
37
+ "@blockle/blocks-core": ">=3.0.x",
38
38
  "@blockle/blocks-react-slot": ">=1.2.x",
39
39
  "@vanilla-extract/css": "^1.18.0",
40
40
  "react": ">=19.1.0",