@seed-design/react 0.1.3 → 0.1.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 (57) hide show
  1. package/lib/components/ActionChip/ActionChip.d.ts +16 -0
  2. package/lib/components/ActionChip/ActionChip.d.ts.map +1 -1
  3. package/lib/components/ActionSheet/ActionSheet.d.ts +66 -0
  4. package/lib/components/ActionSheet/ActionSheet.d.ts.map +1 -1
  5. package/lib/components/Chip/Chip.cjs +39 -0
  6. package/lib/components/Chip/Chip.d.ts +19 -0
  7. package/lib/components/Chip/Chip.d.ts.map +1 -0
  8. package/lib/components/Chip/Chip.js +31 -0
  9. package/lib/components/Chip/Chip.namespace.cjs +12 -0
  10. package/lib/components/Chip/Chip.namespace.d.ts +2 -0
  11. package/lib/components/Chip/Chip.namespace.d.ts.map +1 -0
  12. package/lib/components/Chip/Chip.namespace.js +1 -0
  13. package/lib/components/Chip/index.cjs +15 -0
  14. package/lib/components/Chip/index.d.ts +3 -0
  15. package/lib/components/Chip/index.d.ts.map +1 -0
  16. package/lib/components/Chip/index.js +3 -0
  17. package/lib/components/ControlChip/ControlChip.cjs +1 -0
  18. package/lib/components/ControlChip/ControlChip.d.ts +19 -0
  19. package/lib/components/ControlChip/ControlChip.d.ts.map +1 -1
  20. package/lib/components/ControlChip/ControlChip.js +1 -0
  21. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts +72 -0
  22. package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts.map +1 -1
  23. package/lib/components/MenuSheet/MenuSheet.cjs +119 -0
  24. package/lib/components/MenuSheet/MenuSheet.d.ts +42 -0
  25. package/lib/components/MenuSheet/MenuSheet.d.ts.map +1 -0
  26. package/lib/components/MenuSheet/MenuSheet.js +85 -0
  27. package/lib/components/MenuSheet/MenuSheet.namespace.cjs +20 -0
  28. package/lib/components/MenuSheet/MenuSheet.namespace.d.ts +2 -0
  29. package/lib/components/MenuSheet/MenuSheet.namespace.d.ts.map +1 -0
  30. package/lib/components/MenuSheet/MenuSheet.namespace.js +1 -0
  31. package/lib/components/MenuSheet/index.cjs +22 -0
  32. package/lib/components/MenuSheet/index.d.ts +3 -0
  33. package/lib/components/MenuSheet/index.d.ts.map +1 -0
  34. package/lib/components/MenuSheet/index.js +3 -0
  35. package/lib/components/index.cjs +23 -0
  36. package/lib/components/index.d.ts +2 -0
  37. package/lib/components/index.d.ts.map +1 -1
  38. package/lib/components/index.js +6 -0
  39. package/lib/index.cjs +23 -0
  40. package/lib/index.js +6 -0
  41. package/lib/utils/styled.cjs +10 -2
  42. package/lib/utils/styled.d.ts +5 -4
  43. package/lib/utils/styled.d.ts.map +1 -1
  44. package/lib/utils/styled.js +10 -3
  45. package/package.json +3 -3
  46. package/src/components/ActionChip/ActionChip.tsx +16 -0
  47. package/src/components/ActionSheet/ActionSheet.tsx +66 -0
  48. package/src/components/Chip/Chip.namespace.ts +10 -0
  49. package/src/components/Chip/Chip.tsx +57 -0
  50. package/src/components/Chip/index.ts +14 -0
  51. package/src/components/ControlChip/ControlChip.tsx +20 -0
  52. package/src/components/ExtendedActionSheet/ExtendedActionSheet.tsx +72 -0
  53. package/src/components/MenuSheet/MenuSheet.namespace.ts +26 -0
  54. package/src/components/MenuSheet/MenuSheet.tsx +172 -0
  55. package/src/components/MenuSheet/index.ts +28 -0
  56. package/src/components/index.ts +2 -0
  57. package/src/utils/styled.tsx +31 -6
@@ -0,0 +1,172 @@
1
+ import { Dialog as DialogPrimitive, useDialogContext } from "@seed-design/react-dialog";
2
+ import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive";
3
+ import { menuSheet, type MenuSheetVariantProps } from "@seed-design/css/recipes/menu-sheet";
4
+ import {
5
+ menuSheetItem,
6
+ type MenuSheetItemVariantProps,
7
+ } from "@seed-design/css/recipes/menu-sheet-item";
8
+ import * as React from "react";
9
+ import { createRecipeContext } from "../../utils/createRecipeContext";
10
+ import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext";
11
+ import { createWithStateProps } from "../../utils/createWithStateProps";
12
+
13
+ const { withRootProvider, withContext } = createSlotRecipeContext(menuSheet);
14
+ const {
15
+ withContext: withItemContext,
16
+ PropsProvider: ItemPropsProvider,
17
+ useProps: useItemProps,
18
+ } = createRecipeContext(menuSheetItem);
19
+ const withStateProps = createWithStateProps([useDialogContext]);
20
+
21
+ ////////////////////////////////////////////////////////////////////////////////////
22
+
23
+ export interface MenuSheetRootProps extends MenuSheetVariantProps, DialogPrimitive.RootProps {}
24
+
25
+ export const MenuSheetRoot = withRootProvider<MenuSheetRootProps>(DialogPrimitive.Root, {
26
+ defaultProps: {
27
+ lazyMount: true,
28
+ unmountOnExit: true,
29
+ },
30
+ });
31
+
32
+ ////////////////////////////////////////////////////////////////////////////////////
33
+
34
+ export interface MenuSheetTriggerProps extends DialogPrimitive.TriggerProps {}
35
+
36
+ export const MenuSheetTrigger = DialogPrimitive.Trigger;
37
+
38
+ ////////////////////////////////////////////////////////////////////////////////////
39
+
40
+ export interface MenuSheetPositionerProps extends DialogPrimitive.PositionerProps {}
41
+
42
+ export const MenuSheetPositioner = withContext<HTMLDivElement, MenuSheetPositionerProps>(
43
+ DialogPrimitive.Positioner,
44
+ "positioner",
45
+ );
46
+
47
+ ////////////////////////////////////////////////////////////////////////////////////
48
+
49
+ export interface MenuSheetBackdropProps extends DialogPrimitive.BackdropProps {}
50
+
51
+ export const MenuSheetBackdrop = withContext<HTMLDivElement, MenuSheetBackdropProps>(
52
+ DialogPrimitive.Backdrop,
53
+ "backdrop",
54
+ );
55
+
56
+ ////////////////////////////////////////////////////////////////////////////////////
57
+
58
+ export interface MenuSheetContentProps
59
+ extends DialogPrimitive.ContentProps,
60
+ Pick<MenuSheetItemVariantProps, "labelAlign"> {}
61
+
62
+ const MenuSheetContentBase = withContext<HTMLDivElement, DialogPrimitive.ContentProps>(
63
+ DialogPrimitive.Content,
64
+ "content",
65
+ );
66
+
67
+ export const MenuSheetContent = React.forwardRef<HTMLDivElement, MenuSheetContentProps>(
68
+ ({ labelAlign, children, ...props }, ref) => {
69
+ return (
70
+ <ItemPropsProvider value={React.useMemo(() => ({ labelAlign }), [labelAlign])}>
71
+ <MenuSheetContentBase ref={ref} {...props}>
72
+ {children}
73
+ </MenuSheetContentBase>
74
+ </ItemPropsProvider>
75
+ );
76
+ },
77
+ );
78
+
79
+ ////////////////////////////////////////////////////////////////////////////////////
80
+
81
+ export interface MenuSheetHeaderProps
82
+ extends PrimitiveProps,
83
+ React.HTMLAttributes<HTMLDivElement> {}
84
+
85
+ export const MenuSheetHeader = withContext<HTMLDivElement, MenuSheetHeaderProps>(
86
+ withStateProps(Primitive.div),
87
+ "header",
88
+ );
89
+
90
+ ////////////////////////////////////////////////////////////////////////////////////
91
+
92
+ export interface MenuSheetTitleProps extends DialogPrimitive.TitleProps {}
93
+
94
+ export const MenuSheetTitle = withContext<HTMLHeadingElement, MenuSheetTitleProps>(
95
+ withStateProps(Primitive.h2),
96
+ "title",
97
+ );
98
+
99
+ ////////////////////////////////////////////////////////////////////////////////////
100
+
101
+ export interface MenuSheetListProps extends PrimitiveProps, React.HTMLAttributes<HTMLDivElement> {}
102
+
103
+ export const MenuSheetList = withContext<HTMLDivElement, MenuSheetListProps>(
104
+ withStateProps(Primitive.div),
105
+ "list",
106
+ );
107
+
108
+ ////////////////////////////////////////////////////////////////////////////////////
109
+
110
+ export interface MenuSheetGroupProps
111
+ extends React.HTMLAttributes<HTMLDivElement>,
112
+ Pick<MenuSheetItemVariantProps, "labelAlign"> {}
113
+
114
+ const MenuSheetGroupBase = withContext<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(
115
+ withStateProps(Primitive.div),
116
+ "group",
117
+ );
118
+
119
+ export const MenuSheetGroup = React.forwardRef<HTMLDivElement, MenuSheetGroupProps>(
120
+ ({ labelAlign: overriddenLabelAlign, children, ...props }, ref) => {
121
+ const parentProps = useItemProps();
122
+ const labelAlign = overriddenLabelAlign ?? parentProps?.labelAlign;
123
+
124
+ return (
125
+ <ItemPropsProvider value={React.useMemo(() => ({ labelAlign }), [labelAlign])}>
126
+ <MenuSheetGroupBase ref={ref} {...props}>
127
+ {children}
128
+ </MenuSheetGroupBase>
129
+ </ItemPropsProvider>
130
+ );
131
+ },
132
+ );
133
+
134
+ ////////////////////////////////////////////////////////////////////////////////////
135
+
136
+ export interface MenuSheetItemProps
137
+ extends PrimitiveProps,
138
+ MenuSheetItemVariantProps,
139
+ React.HTMLAttributes<HTMLButtonElement> {}
140
+
141
+ const MenuSheetItemBase = withItemContext<HTMLButtonElement, MenuSheetItemProps>(
142
+ withStateProps(Primitive.button),
143
+ );
144
+
145
+ export const MenuSheetItem = React.forwardRef<HTMLButtonElement, MenuSheetItemProps>(
146
+ ({ labelAlign: overriddenLabelAlign, ...props }, ref) => {
147
+ const parentProps = useItemProps();
148
+ const labelAlign = overriddenLabelAlign ?? parentProps?.labelAlign;
149
+
150
+ return <MenuSheetItemBase ref={ref} labelAlign={labelAlign} {...props} />;
151
+ },
152
+ );
153
+
154
+ ////////////////////////////////////////////////////////////////////////////////////
155
+
156
+ export interface MenuSheetFooterProps
157
+ extends PrimitiveProps,
158
+ React.HTMLAttributes<HTMLDivElement> {}
159
+
160
+ export const MenuSheetFooter = withContext<HTMLDivElement, MenuSheetFooterProps>(
161
+ withStateProps(Primitive.div),
162
+ "footer",
163
+ );
164
+
165
+ ////////////////////////////////////////////////////////////////////////////////////
166
+
167
+ export interface MenuSheetCloseButtonProps extends DialogPrimitive.CloseButtonProps {}
168
+
169
+ export const MenuSheetCloseButton = withContext<HTMLDivElement, MenuSheetCloseButtonProps>(
170
+ DialogPrimitive.CloseButton,
171
+ "closeButton",
172
+ );
@@ -0,0 +1,28 @@
1
+ export {
2
+ MenuSheetBackdrop,
3
+ MenuSheetPositioner,
4
+ MenuSheetContent,
5
+ MenuSheetFooter,
6
+ MenuSheetHeader,
7
+ MenuSheetRoot,
8
+ MenuSheetTitle,
9
+ MenuSheetTrigger,
10
+ MenuSheetList,
11
+ MenuSheetGroup,
12
+ MenuSheetItem,
13
+ MenuSheetCloseButton,
14
+ type MenuSheetBackdropProps,
15
+ type MenuSheetPositionerProps,
16
+ type MenuSheetContentProps,
17
+ type MenuSheetFooterProps,
18
+ type MenuSheetHeaderProps,
19
+ type MenuSheetRootProps,
20
+ type MenuSheetTitleProps,
21
+ type MenuSheetTriggerProps,
22
+ type MenuSheetListProps,
23
+ type MenuSheetGroupProps,
24
+ type MenuSheetItemProps,
25
+ type MenuSheetCloseButtonProps,
26
+ } from "./MenuSheet";
27
+
28
+ export * as MenuSheet from "./MenuSheet.namespace";
@@ -8,6 +8,7 @@ export * from "./Box";
8
8
  export * from "./Callout";
9
9
  export * from "./Celcius";
10
10
  export * from "./Checkbox";
11
+ export * from "./Chip";
11
12
  export * from "./ChipTabs";
12
13
  export * from "./Columns";
13
14
  export * from "./ConsistentWidth";
@@ -31,6 +32,7 @@ export * from "./LinkContent";
31
32
  export * from "./LoadingIndicator";
32
33
  export * from "./MannerTemp";
33
34
  export * from "./MannerTempBadge";
35
+ export * from "./MenuSheet";
34
36
  export * from "./NotificationBadge";
35
37
  export * from "./Portal";
36
38
  export * from "./ProgressCircle";
@@ -51,6 +51,19 @@ function handleBleed(
51
51
  return handleDimension(dimension);
52
52
  }
53
53
 
54
+ export function handlePaddingWithSafeArea(
55
+ padding: string | 0 | undefined,
56
+ direction: "top" | "bottom",
57
+ ): string | undefined {
58
+ if (padding === "safeArea") {
59
+ return `var(--seed-safe-area-${direction})`;
60
+ }
61
+
62
+ const paddingValue = handleDimension(padding);
63
+
64
+ return paddingValue;
65
+ }
66
+
54
67
  function handleRadius(radius: string | 0 | undefined) {
55
68
  if (radius == null) {
56
69
  return undefined;
@@ -284,12 +297,18 @@ export interface StyleProps {
284
297
  */
285
298
  py?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
286
299
 
287
- paddingTop?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
300
+ paddingTop?:
301
+ | Dimension
302
+ | `spacingX.${SpacingX}`
303
+ | `spacingY.${SpacingY}`
304
+ | 0
305
+ | "safeArea"
306
+ | (string & {});
288
307
 
289
308
  /**
290
309
  * Shorthand for `paddingTop`.
291
310
  */
292
- pt?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
311
+ pt?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | "safeArea" | (string & {});
293
312
 
294
313
  paddingRight?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
295
314
 
@@ -298,12 +317,18 @@ export interface StyleProps {
298
317
  */
299
318
  pr?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
300
319
 
301
- paddingBottom?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
320
+ paddingBottom?:
321
+ | Dimension
322
+ | `spacingX.${SpacingX}`
323
+ | `spacingY.${SpacingY}`
324
+ | 0
325
+ | "safeArea"
326
+ | (string & {});
302
327
 
303
328
  /**
304
329
  * Shorthand for `paddingBottom`.
305
330
  */
306
- pb?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
331
+ pb?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | "safeArea" | (string & {});
307
332
 
308
333
  paddingLeft?: Dimension | `spacingX.${SpacingX}` | `spacingY.${SpacingY}` | 0 | (string & {});
309
334
 
@@ -576,9 +601,9 @@ export function useStyleProps<T extends UseStyleProps>(
576
601
  "--seed-box-padding": handleDimension(padding ?? p),
577
602
  "--seed-box-padding-x": handleDimension(paddingX ?? px),
578
603
  "--seed-box-padding-y": handleDimension(paddingY ?? py),
579
- "--seed-box-padding-top": handleDimension(paddingTop ?? pt),
604
+ "--seed-box-padding-top": handlePaddingWithSafeArea(paddingTop ?? pt, "top"),
580
605
  "--seed-box-padding-right": handleDimension(paddingRight ?? pr),
581
- "--seed-box-padding-bottom": handleDimension(paddingBottom ?? pb),
606
+ "--seed-box-padding-bottom": handlePaddingWithSafeArea(paddingBottom ?? pb, "bottom"),
582
607
  "--seed-box-padding-left": handleDimension(paddingLeft ?? pl),
583
608
  "--seed-box-bleed-top": handleBleed(bleedTop ?? bleedY, "top"),
584
609
  "--seed-box-bleed-right": handleBleed(bleedRight ?? bleedX, "right"),