@seed-design/react 0.0.3 → 0.0.5

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 (131) hide show
  1. package/lib/components/ActionButton/ActionButton.cjs +6 -6
  2. package/lib/components/ActionButton/ActionButton.d.ts.map +1 -1
  3. package/lib/components/ActionButton/ActionButton.js +6 -6
  4. package/lib/components/ActionChip/ActionChip.cjs +4 -4
  5. package/lib/components/ActionChip/ActionChip.d.ts +1 -1
  6. package/lib/components/ActionChip/ActionChip.d.ts.map +1 -1
  7. package/lib/components/ActionChip/ActionChip.js +4 -4
  8. package/lib/components/ActionSheet/ActionSheet.cjs +7 -7
  9. package/lib/components/ActionSheet/ActionSheet.d.ts +2 -2
  10. package/lib/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  11. package/lib/components/ActionSheet/ActionSheet.js +7 -7
  12. package/lib/components/Avatar/Avatar.cjs +2 -2
  13. package/lib/components/Avatar/Avatar.js +2 -2
  14. package/lib/components/Badge/Badge.cjs +3 -3
  15. package/lib/components/Badge/Badge.d.ts.map +1 -1
  16. package/lib/components/Badge/Badge.js +3 -3
  17. package/lib/components/BottomSheet/BottomSheet.cjs +2 -2
  18. package/lib/components/BottomSheet/BottomSheet.js +2 -2
  19. package/lib/components/Callout/Callout.cjs +2 -2
  20. package/lib/components/Callout/Callout.js +2 -2
  21. package/lib/components/Checkbox/Checkbox.cjs +2 -2
  22. package/lib/components/Checkbox/Checkbox.js +2 -2
  23. package/lib/components/ChipTabs/ChipTabs.cjs +2 -2
  24. package/lib/components/ChipTabs/ChipTabs.js +2 -2
  25. package/lib/components/ControlChip/ControlChip.cjs +3 -3
  26. package/lib/components/ControlChip/ControlChip.js +3 -3
  27. package/lib/components/Dialog/Dialog.cjs +2 -2
  28. package/lib/components/Dialog/Dialog.js +2 -2
  29. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.cjs +5 -4
  30. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts.map +1 -1
  31. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.js +5 -4
  32. package/lib/components/ExtendedFab/ExtendedFab.cjs +7 -11
  33. package/lib/components/ExtendedFab/ExtendedFab.d.ts.map +1 -1
  34. package/lib/components/ExtendedFab/ExtendedFab.js +7 -11
  35. package/lib/components/Fab/Fab.cjs +3 -3
  36. package/lib/components/Fab/Fab.d.ts.map +1 -1
  37. package/lib/components/Fab/Fab.js +3 -3
  38. package/lib/components/HelpBubble/HelpBubble.cjs +8 -3
  39. package/lib/components/HelpBubble/HelpBubble.d.ts.map +1 -1
  40. package/lib/components/HelpBubble/HelpBubble.js +8 -3
  41. package/lib/components/IdentityPlaceholder/IdentityPlaceholder.cjs +2 -2
  42. package/lib/components/IdentityPlaceholder/IdentityPlaceholder.js +2 -2
  43. package/lib/components/InlineBanner/InlineBanner.cjs +2 -2
  44. package/lib/components/InlineBanner/InlineBanner.js +2 -2
  45. package/lib/components/LinkContent/LinkContent.cjs +3 -4
  46. package/lib/components/LinkContent/LinkContent.d.ts.map +1 -1
  47. package/lib/components/LinkContent/LinkContent.js +3 -4
  48. package/lib/components/MannerTempBadge/MannerTempBadge.cjs +4 -7
  49. package/lib/components/MannerTempBadge/MannerTempBadge.d.ts +1 -1
  50. package/lib/components/MannerTempBadge/MannerTempBadge.d.ts.map +1 -1
  51. package/lib/components/MannerTempBadge/MannerTempBadge.js +4 -7
  52. package/lib/components/ProgressCircle/ProgressCircle.cjs +2 -2
  53. package/lib/components/ProgressCircle/ProgressCircle.js +2 -2
  54. package/lib/components/PullToRefresh/PullToRefresh.cjs +2 -2
  55. package/lib/components/PullToRefresh/PullToRefresh.js +2 -2
  56. package/lib/components/ReactionButton/ReactionButton.cjs +5 -5
  57. package/lib/components/ReactionButton/ReactionButton.js +5 -5
  58. package/lib/components/SegmentedControl/SegmentedControl.cjs +2 -2
  59. package/lib/components/SegmentedControl/SegmentedControl.js +2 -2
  60. package/lib/components/SelectBox/CheckSelectBox.cjs +8 -8
  61. package/lib/components/SelectBox/CheckSelectBox.d.ts.map +1 -1
  62. package/lib/components/SelectBox/CheckSelectBox.js +8 -8
  63. package/lib/components/SelectBox/RadioSelectBox.cjs +7 -7
  64. package/lib/components/SelectBox/RadioSelectBox.d.ts.map +1 -1
  65. package/lib/components/SelectBox/RadioSelectBox.js +7 -7
  66. package/lib/components/Skeleton/Skeleton.cjs +3 -6
  67. package/lib/components/Skeleton/Skeleton.d.ts.map +1 -1
  68. package/lib/components/Skeleton/Skeleton.js +3 -6
  69. package/lib/components/Snackbar/Snackbar.cjs +9 -9
  70. package/lib/components/Snackbar/Snackbar.d.ts +1 -1
  71. package/lib/components/Snackbar/Snackbar.d.ts.map +1 -1
  72. package/lib/components/Snackbar/Snackbar.js +9 -9
  73. package/lib/components/Switch/Switch.cjs +2 -2
  74. package/lib/components/Switch/Switch.js +2 -2
  75. package/lib/components/Tabs/Tabs.cjs +2 -2
  76. package/lib/components/Tabs/Tabs.js +2 -2
  77. package/lib/components/Text/Text.cjs +2 -2
  78. package/lib/components/Text/Text.js +2 -2
  79. package/lib/components/TextField/TextField.cjs +2 -2
  80. package/lib/components/TextField/TextField.js +2 -2
  81. package/lib/components/ToggleButton/ToggleButton.cjs +5 -5
  82. package/lib/components/ToggleButton/ToggleButton.js +5 -5
  83. package/lib/components/VisuallyHidden/VisuallyHidden.cjs +3 -6
  84. package/lib/components/VisuallyHidden/VisuallyHidden.d.ts.map +1 -1
  85. package/lib/components/VisuallyHidden/VisuallyHidden.js +3 -6
  86. package/lib/components/private/useDismissible.d.ts +3 -3
  87. package/lib/utils/createRecipeContext.cjs +74 -0
  88. package/lib/utils/createRecipeContext.d.ts +24 -0
  89. package/lib/utils/createRecipeContext.d.ts.map +1 -0
  90. package/lib/utils/createRecipeContext.js +70 -0
  91. package/lib/utils/{createStyleContext.cjs → createSlotRecipeContext.cjs} +2 -2
  92. package/lib/utils/{createStyleContext.d.ts → createSlotRecipeContext.d.ts} +3 -3
  93. package/lib/utils/createSlotRecipeContext.d.ts.map +1 -0
  94. package/lib/utils/{createStyleContext.js → createSlotRecipeContext.js} +2 -2
  95. package/package.json +3 -3
  96. package/src/components/ActionButton/ActionButton.tsx +7 -7
  97. package/src/components/ActionChip/ActionChip.tsx +4 -4
  98. package/src/components/ActionSheet/ActionSheet.tsx +6 -6
  99. package/src/components/Avatar/Avatar.tsx +2 -2
  100. package/src/components/Badge/Badge.tsx +3 -3
  101. package/src/components/BottomSheet/BottomSheet.tsx +2 -2
  102. package/src/components/Callout/Callout.tsx +2 -2
  103. package/src/components/Checkbox/Checkbox.tsx +2 -2
  104. package/src/components/ChipTabs/ChipTabs.tsx +2 -2
  105. package/src/components/ControlChip/ControlChip.tsx +3 -3
  106. package/src/components/Dialog/Dialog.tsx +2 -2
  107. package/src/components/ExtendedActionSheet/ExtendedActionSheet.tsx +5 -4
  108. package/src/components/ExtendedFab/ExtendedFab.tsx +7 -11
  109. package/src/components/Fab/Fab.tsx +3 -3
  110. package/src/components/HelpBubble/HelpBubble.tsx +7 -4
  111. package/src/components/IdentityPlaceholder/IdentityPlaceholder.tsx +2 -2
  112. package/src/components/InlineBanner/InlineBanner.tsx +2 -2
  113. package/src/components/LinkContent/LinkContent.tsx +2 -4
  114. package/src/components/MannerTempBadge/MannerTempBadge.tsx +4 -7
  115. package/src/components/ProgressCircle/ProgressCircle.tsx +2 -2
  116. package/src/components/PullToRefresh/PullToRefresh.tsx +2 -2
  117. package/src/components/ReactionButton/ReactionButton.tsx +6 -6
  118. package/src/components/SegmentedControl/SegmentedControl.tsx +2 -2
  119. package/src/components/SelectBox/CheckSelectBox.tsx +7 -7
  120. package/src/components/SelectBox/RadioSelectBox.tsx +6 -6
  121. package/src/components/Skeleton/Skeleton.tsx +3 -6
  122. package/src/components/Snackbar/Snackbar.tsx +8 -8
  123. package/src/components/Switch/Switch.tsx +2 -2
  124. package/src/components/Tabs/Tabs.tsx +2 -2
  125. package/src/components/Text/Text.tsx +2 -2
  126. package/src/components/TextField/TextField.tsx +2 -2
  127. package/src/components/ToggleButton/ToggleButton.tsx +6 -6
  128. package/src/components/VisuallyHidden/VisuallyHidden.tsx +3 -6
  129. package/src/utils/createRecipeContext.tsx +114 -0
  130. package/src/utils/{createStyleContext.tsx → createSlotRecipeContext.tsx} +3 -3
  131. package/lib/utils/createStyleContext.d.ts.map +0 -1
@@ -108,7 +108,7 @@ export const Text = ({
108
108
  ...otherProps
109
109
  }: TextProps) => {
110
110
  const Comp = as || "span";
111
- const classNames = useMemo(
111
+ const textClassName = useMemo(
112
112
  () =>
113
113
  text({
114
114
  textStyle,
@@ -119,7 +119,7 @@ export const Text = ({
119
119
 
120
120
  return (
121
121
  <Comp
122
- className={clsx(classNames.root, className)}
122
+ className={clsx(textClassName, className)}
123
123
  style={
124
124
  {
125
125
  "--seed-max-lines": maxLines,
@@ -5,12 +5,12 @@ import { textField, type TextFieldVariantProps } from "@seed-design/css/recipes/
5
5
  import clsx from "clsx";
6
6
  import type * as React from "react";
7
7
  import { forwardRef, useCallback, useRef } from "react";
8
- import { createStyleContext } from "../../utils/createStyleContext";
8
+ import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext";
9
9
  import { createWithStateProps } from "../../utils/createWithStateProps";
10
10
  import { InternalIcon, type InternalIconProps } from "../private/Icon";
11
11
  import { composeRefs } from "@radix-ui/react-compose-refs";
12
12
 
13
- const { withProvider, withContext, useClassNames } = createStyleContext(textField);
13
+ const { withProvider, withContext, useClassNames } = createSlotRecipeContext(textField);
14
14
  const withStateProps = createWithStateProps([useTextFieldContext]);
15
15
 
16
16
  ////////////////////////////////////////////////////////////////////////////////////
@@ -5,14 +5,14 @@ import {
5
5
  } from "@seed-design/css/recipes/toggle-button";
6
6
  import clsx from "clsx";
7
7
  import * as React from "react";
8
- import { createStyleContext } from "../../utils/createStyleContext";
8
+ import { createRecipeContext } from "../../utils/createRecipeContext";
9
9
  import {
10
10
  PendingButtonProvider,
11
11
  usePendingButton,
12
12
  type UsePendingButtonProps,
13
13
  } from "../LoadingIndicator/usePendingButton";
14
14
 
15
- const { ClassNamesProvider } = createStyleContext(toggleButton);
15
+ const { ClassNameProvider } = createRecipeContext(toggleButton);
16
16
 
17
17
  export interface ToggleButtonProps
18
18
  extends ToggleButtonVariantProps,
@@ -21,20 +21,20 @@ export interface ToggleButtonProps
21
21
 
22
22
  export const ToggleButton = React.forwardRef<HTMLButtonElement, ToggleButtonProps>(
23
23
  ({ variant = "brandSolid", size = "small", loading = false, className, ...otherProps }, ref) => {
24
- const classNames = toggleButton({ variant, size });
24
+ const recipeClassName = toggleButton({ variant, size });
25
25
  const api = usePendingButton({ loading, disabled: otherProps.disabled });
26
26
 
27
27
  return (
28
- <ClassNamesProvider value={classNames}>
28
+ <ClassNameProvider value={recipeClassName}>
29
29
  <PendingButtonProvider value={api}>
30
30
  <TogglePrimitive.Root
31
31
  ref={ref}
32
- className={clsx(classNames.root, className)}
32
+ className={clsx(recipeClassName, className)}
33
33
  {...api.stateProps}
34
34
  {...otherProps}
35
35
  />
36
36
  </PendingButtonProvider>
37
- </ClassNamesProvider>
37
+ </ClassNameProvider>
38
38
  );
39
39
  },
40
40
  );
@@ -1,13 +1,10 @@
1
1
  import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive";
2
2
  import { visuallyHidden } from "@seed-design/css/recipes/visually-hidden";
3
3
  import type * as React from "react";
4
- import { createStyleContext } from "../../utils/createStyleContext";
4
+ import { createRecipeContext } from "../../utils/createRecipeContext";
5
5
 
6
- const { withProvider } = createStyleContext(visuallyHidden);
6
+ const { withProvider } = createRecipeContext(visuallyHidden);
7
7
 
8
8
  export interface VisuallyHiddenProps extends PrimitiveProps, React.HTMLAttributes<HTMLDivElement> {}
9
9
 
10
- export const VisuallyHidden = withProvider<HTMLDivElement, VisuallyHiddenProps>(
11
- Primitive.div,
12
- "root",
13
- );
10
+ export const VisuallyHidden = withProvider<HTMLDivElement, VisuallyHiddenProps>(Primitive.div);
@@ -0,0 +1,114 @@
1
+ import clsx from "clsx";
2
+ import { createContext, forwardRef, useContext } from "react";
3
+
4
+ type Recipe<
5
+ Props extends Record<string, string | boolean | undefined>,
6
+ ClassName extends string,
7
+ > = ((props?: Props) => ClassName) & {
8
+ splitVariantProps: <T extends Props>(props: T) => [Props, Omit<T, keyof Props>];
9
+ };
10
+
11
+ export function createRecipeContext<
12
+ Props extends Record<string, string | boolean | undefined>,
13
+ ClassName extends string,
14
+ >(recipe: Recipe<Props, ClassName>) {
15
+ const ClassNameContext = createContext<ClassName | null>(null);
16
+ const PropsContext = createContext<Props | null>(null);
17
+
18
+ const ClassNameProvider = ({
19
+ children,
20
+ value,
21
+ }: {
22
+ children: React.ReactNode;
23
+ value: ClassName;
24
+ }) => {
25
+ return <ClassNameContext.Provider value={value}>{children}</ClassNameContext.Provider>;
26
+ };
27
+
28
+ const PropsProvider = ({ children, value }: { children: React.ReactNode; value: Props }) => {
29
+ return <PropsContext.Provider value={value}>{children}</PropsContext.Provider>;
30
+ };
31
+
32
+ function useClassName() {
33
+ const context = useContext(ClassNameContext);
34
+ if (context === null) {
35
+ throw new Error(
36
+ "useClassName must be used within a ClassNameProvider. Did you forget to wrap your component in a ClassNameProvider?",
37
+ );
38
+ }
39
+ return context;
40
+ }
41
+
42
+ function useProps() {
43
+ return useContext(PropsContext);
44
+ }
45
+
46
+ const withRootProvider = <P,>(
47
+ Component: React.ElementType<any>,
48
+ options?: {
49
+ defaultProps?: Partial<P>;
50
+ },
51
+ ): React.ForwardRefExoticComponent<React.PropsWithoutRef<P>> => {
52
+ const { defaultProps } = options ?? {};
53
+
54
+ const StyledComponent = (innerProps: any) => {
55
+ const props = { ...(defaultProps ?? {}), ...useProps(), ...innerProps } as Props &
56
+ React.HTMLAttributes<HTMLElement>;
57
+ const [variantProps, otherProps] = recipe.splitVariantProps(props);
58
+ const className = recipe(variantProps);
59
+
60
+ return (
61
+ <ClassNameProvider value={className}>
62
+ <Component {...otherProps} className={clsx(className, props.className)} />
63
+ </ClassNameProvider>
64
+ );
65
+ };
66
+
67
+ StyledComponent.displayName = (Component as any).displayName || (Component as any).name;
68
+ return StyledComponent as any;
69
+ };
70
+
71
+ const withProvider = <T, P>(
72
+ Component: React.ElementType<any>,
73
+ options?: {
74
+ defaultProps?: Partial<P>;
75
+ },
76
+ ): React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> => {
77
+ const { defaultProps } = options ?? {};
78
+
79
+ const StyledComponent = forwardRef<any, any>((innerProps, ref) => {
80
+ const props = { ...(defaultProps ?? {}), ...useProps(), ...innerProps } as Props &
81
+ React.HTMLAttributes<HTMLElement>;
82
+ const [variantProps, otherProps] = recipe.splitVariantProps(props);
83
+ const className = recipe(variantProps);
84
+
85
+ return <Component ref={ref} {...otherProps} className={clsx(className, props.className)} />;
86
+ });
87
+
88
+ StyledComponent.displayName = (Component as any).displayName || (Component as any).name;
89
+ return StyledComponent as any;
90
+ };
91
+
92
+ const withContext = <T, P>(
93
+ Component: React.ElementType<any>,
94
+ ): React.ForwardRefExoticComponent<React.PropsWithoutRef<P> & React.RefAttributes<T>> => {
95
+ const StyledComponent = forwardRef<any, React.HTMLAttributes<HTMLElement>>((props, ref) => {
96
+ const className = useClassName();
97
+
98
+ return <Component ref={ref} {...props} className={clsx(className, props.className)} />;
99
+ });
100
+
101
+ StyledComponent.displayName = (Component as any).displayName || (Component as any).name;
102
+ return StyledComponent as any;
103
+ };
104
+
105
+ return {
106
+ ClassNameProvider,
107
+ PropsProvider,
108
+ useClassName,
109
+ useProps,
110
+ withRootProvider,
111
+ withProvider,
112
+ withContext,
113
+ };
114
+ }
@@ -1,17 +1,17 @@
1
1
  import clsx from "clsx";
2
2
  import { createContext, forwardRef, useContext } from "react";
3
3
 
4
- type Recipe<
4
+ type SlotRecipe<
5
5
  Props extends Record<string, string | boolean | undefined>,
6
6
  Classnames extends Record<string, string>,
7
7
  > = ((props?: Props) => Classnames) & {
8
8
  splitVariantProps: <T extends Props>(props: T) => [Props, Omit<T, keyof Props>];
9
9
  };
10
10
 
11
- export function createStyleContext<
11
+ export function createSlotRecipeContext<
12
12
  Props extends Record<string, string | boolean | undefined>,
13
13
  Classnames extends Record<string, string>,
14
- >(recipe: Recipe<Props, Classnames>) {
14
+ >(recipe: SlotRecipe<Props, Classnames>) {
15
15
  const ClassNamesContext = createContext<Classnames | null>(null);
16
16
  const PropsContext = createContext<Props | null>(null);
17
17
 
@@ -1 +0,0 @@
1
- {"version":3,"file":"createStyleContext.d.ts","sourceRoot":"","sources":["../../src/utils/createStyleContext.tsx"],"names":[],"mappings":"AAGA,KAAK,MAAM,CACT,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC1D,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IACvC,CAAC,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,UAAU,CAAC,GAAG;IACpC,iBAAiB,EAAE,CAAC,CAAC,SAAS,KAAK,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,EAAE,MAAM,KAAK,CAAC,CAAC,CAAC;CACjF,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,KAAK,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC,EAC1D,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACzC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,UAAU,CAAC;+CAO9B;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,EAAE,UAAU,CAAA;KAAE;yCAIP;QAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;QAAC,KAAK,EAAE,KAAK,CAAA;KAAE;;;uBAmB7D,CAAC,aACd,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,YACvB;QACR,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KAC3B,KACA,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;mBAsBtC,CAAC,EAAE,CAAC,aACb,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,QAC3B,MAAM,UAAU,YACZ;QACR,YAAY,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;KAC3B,KACA,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;kBAuBhE,CAAC,EAAE,CAAC,aACZ,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,SAC1B,MAAM,UAAU,KACtB,KAAK,CAAC,yBAAyB,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;EAsBtF"}