@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.
- package/lib/components/ActionChip/ActionChip.d.ts +16 -0
- package/lib/components/ActionChip/ActionChip.d.ts.map +1 -1
- package/lib/components/ActionSheet/ActionSheet.d.ts +66 -0
- package/lib/components/ActionSheet/ActionSheet.d.ts.map +1 -1
- package/lib/components/Chip/Chip.cjs +39 -0
- package/lib/components/Chip/Chip.d.ts +19 -0
- package/lib/components/Chip/Chip.d.ts.map +1 -0
- package/lib/components/Chip/Chip.js +31 -0
- package/lib/components/Chip/Chip.namespace.cjs +12 -0
- package/lib/components/Chip/Chip.namespace.d.ts +2 -0
- package/lib/components/Chip/Chip.namespace.d.ts.map +1 -0
- package/lib/components/Chip/Chip.namespace.js +1 -0
- package/lib/components/Chip/index.cjs +15 -0
- package/lib/components/Chip/index.d.ts +3 -0
- package/lib/components/Chip/index.d.ts.map +1 -0
- package/lib/components/Chip/index.js +3 -0
- package/lib/components/ControlChip/ControlChip.cjs +1 -0
- package/lib/components/ControlChip/ControlChip.d.ts +19 -0
- package/lib/components/ControlChip/ControlChip.d.ts.map +1 -1
- package/lib/components/ControlChip/ControlChip.js +1 -0
- package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts +72 -0
- package/lib/components/ExtendedActionSheet/ExtendedActionSheet.d.ts.map +1 -1
- package/lib/components/MenuSheet/MenuSheet.cjs +119 -0
- package/lib/components/MenuSheet/MenuSheet.d.ts +42 -0
- package/lib/components/MenuSheet/MenuSheet.d.ts.map +1 -0
- package/lib/components/MenuSheet/MenuSheet.js +85 -0
- package/lib/components/MenuSheet/MenuSheet.namespace.cjs +20 -0
- package/lib/components/MenuSheet/MenuSheet.namespace.d.ts +2 -0
- package/lib/components/MenuSheet/MenuSheet.namespace.d.ts.map +1 -0
- package/lib/components/MenuSheet/MenuSheet.namespace.js +1 -0
- package/lib/components/MenuSheet/index.cjs +22 -0
- package/lib/components/MenuSheet/index.d.ts +3 -0
- package/lib/components/MenuSheet/index.d.ts.map +1 -0
- package/lib/components/MenuSheet/index.js +3 -0
- package/lib/components/index.cjs +23 -0
- package/lib/components/index.d.ts +2 -0
- package/lib/components/index.d.ts.map +1 -1
- package/lib/components/index.js +6 -0
- package/lib/index.cjs +23 -0
- package/lib/index.js +6 -0
- package/lib/utils/styled.cjs +10 -2
- package/lib/utils/styled.d.ts +5 -4
- package/lib/utils/styled.d.ts.map +1 -1
- package/lib/utils/styled.js +10 -3
- package/package.json +3 -3
- package/src/components/ActionChip/ActionChip.tsx +16 -0
- package/src/components/ActionSheet/ActionSheet.tsx +66 -0
- package/src/components/Chip/Chip.namespace.ts +10 -0
- package/src/components/Chip/Chip.tsx +57 -0
- package/src/components/Chip/index.ts +14 -0
- package/src/components/ControlChip/ControlChip.tsx +20 -0
- package/src/components/ExtendedActionSheet/ExtendedActionSheet.tsx +72 -0
- package/src/components/MenuSheet/MenuSheet.namespace.ts +26 -0
- package/src/components/MenuSheet/MenuSheet.tsx +172 -0
- package/src/components/MenuSheet/index.ts +28 -0
- package/src/components/index.ts +2 -0
- 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";
|
package/src/components/index.ts
CHANGED
|
@@ -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";
|
package/src/utils/styled.tsx
CHANGED
|
@@ -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?:
|
|
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?:
|
|
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":
|
|
604
|
+
"--seed-box-padding-top": handlePaddingWithSafeArea(paddingTop ?? pt, "top"),
|
|
580
605
|
"--seed-box-padding-right": handleDimension(paddingRight ?? pr),
|
|
581
|
-
"--seed-box-padding-bottom":
|
|
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"),
|