@seed-design/react 1.0.6 → 1.1.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 (155) hide show
  1. package/lib/components/ActionButton/ActionButton.cjs +7 -1
  2. package/lib/components/ActionButton/ActionButton.d.ts +7 -1
  3. package/lib/components/ActionButton/ActionButton.d.ts.map +1 -1
  4. package/lib/components/ActionButton/ActionButton.js +7 -1
  5. package/lib/components/BottomSheet/BottomSheet.cjs +14 -18
  6. package/lib/components/BottomSheet/BottomSheet.d.ts +12 -19
  7. package/lib/components/BottomSheet/BottomSheet.d.ts.map +1 -1
  8. package/lib/components/BottomSheet/BottomSheet.js +14 -18
  9. package/lib/components/BottomSheet/BottomSheet.namespace.cjs +2 -0
  10. package/lib/components/BottomSheet/BottomSheet.namespace.d.ts +1 -0
  11. package/lib/components/BottomSheet/BottomSheet.namespace.d.ts.map +1 -1
  12. package/lib/components/BottomSheet/BottomSheet.namespace.js +1 -0
  13. package/lib/components/BottomSheetHandle/BottomSheetHandle.cjs +20 -0
  14. package/lib/components/BottomSheetHandle/BottomSheetHandle.d.ts +6 -0
  15. package/lib/components/BottomSheetHandle/BottomSheetHandle.d.ts.map +1 -0
  16. package/lib/components/BottomSheetHandle/BottomSheetHandle.js +16 -0
  17. package/lib/components/BottomSheetHandle/index.cjs +9 -0
  18. package/lib/components/BottomSheetHandle/index.d.ts +2 -0
  19. package/lib/components/BottomSheetHandle/index.d.ts.map +1 -0
  20. package/lib/components/BottomSheetHandle/index.js +1 -0
  21. package/lib/components/Chip/Chip.cjs +4 -3
  22. package/lib/components/Chip/Chip.d.ts.map +1 -1
  23. package/lib/components/Chip/Chip.js +4 -3
  24. package/lib/components/Field/Field.cjs +108 -0
  25. package/lib/components/Field/Field.d.ts +41 -0
  26. package/lib/components/Field/Field.d.ts.map +1 -0
  27. package/lib/components/Field/Field.js +96 -0
  28. package/lib/components/Field/Field.namespace.cjs +17 -0
  29. package/lib/components/Field/Field.namespace.d.ts +2 -0
  30. package/lib/components/Field/Field.namespace.d.ts.map +1 -0
  31. package/lib/components/Field/Field.namespace.js +1 -0
  32. package/lib/components/Field/index.cjs +19 -0
  33. package/lib/components/Field/index.d.ts +3 -0
  34. package/lib/components/Field/index.d.ts.map +1 -0
  35. package/lib/components/Field/index.js +3 -0
  36. package/lib/components/FieldButton/FieldButton.cjs +201 -0
  37. package/lib/components/FieldButton/FieldButton.d.ts +61 -0
  38. package/lib/components/FieldButton/FieldButton.d.ts.map +1 -0
  39. package/lib/components/FieldButton/FieldButton.js +161 -0
  40. package/lib/components/FieldButton/FieldButton.namespace.cjs +26 -0
  41. package/lib/components/FieldButton/FieldButton.namespace.d.ts +2 -0
  42. package/lib/components/FieldButton/FieldButton.namespace.d.ts.map +1 -0
  43. package/lib/components/FieldButton/FieldButton.namespace.js +1 -0
  44. package/lib/components/FieldButton/index.cjs +28 -0
  45. package/lib/components/FieldButton/index.d.ts +3 -0
  46. package/lib/components/FieldButton/index.d.ts.map +1 -0
  47. package/lib/components/FieldButton/index.js +3 -0
  48. package/lib/components/HelpBubble/HelpBubble.d.ts +1 -1
  49. package/lib/components/List/List.cjs +5 -4
  50. package/lib/components/List/List.d.ts.map +1 -1
  51. package/lib/components/List/List.js +5 -4
  52. package/lib/components/PageBanner/PageBanner.cjs +8 -3
  53. package/lib/components/PageBanner/PageBanner.d.ts +5 -2
  54. package/lib/components/PageBanner/PageBanner.d.ts.map +1 -1
  55. package/lib/components/PageBanner/PageBanner.js +7 -3
  56. package/lib/components/PageBanner/PageBanner.namespace.cjs +2 -1
  57. package/lib/components/PageBanner/PageBanner.namespace.d.ts +1 -1
  58. package/lib/components/PageBanner/PageBanner.namespace.d.ts.map +1 -1
  59. package/lib/components/PageBanner/PageBanner.namespace.js +1 -1
  60. package/lib/components/PageBanner/index.cjs +2 -1
  61. package/lib/components/PageBanner/index.d.ts +1 -1
  62. package/lib/components/PageBanner/index.d.ts.map +1 -1
  63. package/lib/components/PageBanner/index.js +1 -1
  64. package/lib/components/Slider/Slider.cjs +110 -0
  65. package/lib/components/Slider/Slider.d.ts +51 -0
  66. package/lib/components/Slider/Slider.d.ts.map +1 -0
  67. package/lib/components/Slider/Slider.js +94 -0
  68. package/lib/components/Slider/Slider.namespace.cjs +21 -0
  69. package/lib/components/Slider/Slider.namespace.d.ts +2 -0
  70. package/lib/components/Slider/Slider.namespace.d.ts.map +1 -0
  71. package/lib/components/Slider/Slider.namespace.js +1 -0
  72. package/lib/components/Slider/index.cjs +23 -0
  73. package/lib/components/Slider/index.d.ts +3 -0
  74. package/lib/components/Slider/index.d.ts.map +1 -0
  75. package/lib/components/Slider/index.js +3 -0
  76. package/lib/components/TextField/TextField.cjs +54 -74
  77. package/lib/components/TextField/TextField.d.ts +2 -35
  78. package/lib/components/TextField/TextField.d.ts.map +1 -1
  79. package/lib/components/TextField/TextField.js +56 -65
  80. package/lib/components/TextField/TextField.namespace.cjs +0 -11
  81. package/lib/components/TextField/TextField.namespace.d.ts +1 -1
  82. package/lib/components/TextField/TextField.namespace.d.ts.map +1 -1
  83. package/lib/components/TextField/TextField.namespace.js +1 -1
  84. package/lib/components/TextField/TextField.test.d.ts +1 -0
  85. package/lib/components/TextField/TextField.test.d.ts.map +1 -0
  86. package/lib/components/TextField/index.cjs +2 -11
  87. package/lib/components/TextField/index.d.ts +2 -1
  88. package/lib/components/TextField/index.d.ts.map +1 -1
  89. package/lib/components/TextField/index.js +2 -1
  90. package/lib/components/TextField/memoize.cjs +18 -0
  91. package/lib/components/TextField/memoize.d.ts +2 -0
  92. package/lib/components/TextField/memoize.d.ts.map +1 -0
  93. package/lib/components/TextField/memoize.js +14 -0
  94. package/lib/components/TextField/useTextFieldWithGraphemes.cjs +52 -0
  95. package/lib/components/TextField/useTextFieldWithGraphemes.d.ts +23 -0
  96. package/lib/components/TextField/useTextFieldWithGraphemes.d.ts.map +1 -0
  97. package/lib/components/TextField/useTextFieldWithGraphemes.js +48 -0
  98. package/lib/components/TextField/useTextFieldWithGraphemes.test.d.ts +1 -0
  99. package/lib/components/TextField/useTextFieldWithGraphemes.test.d.ts.map +1 -0
  100. package/lib/components/index.cjs +53 -12
  101. package/lib/components/index.d.ts +3 -0
  102. package/lib/components/index.d.ts.map +1 -1
  103. package/lib/components/index.js +12 -2
  104. package/lib/index.cjs +53 -12
  105. package/lib/index.js +12 -2
  106. package/lib/node_modules/unicode-segmenter/_grapheme_data.cjs +23 -0
  107. package/lib/node_modules/unicode-segmenter/_grapheme_data.js +19 -0
  108. package/lib/node_modules/unicode-segmenter/_incb_data.cjs +29 -0
  109. package/lib/node_modules/unicode-segmenter/_incb_data.js +25 -0
  110. package/lib/node_modules/unicode-segmenter/core.cjs +83 -0
  111. package/lib/node_modules/unicode-segmenter/core.js +78 -0
  112. package/lib/node_modules/unicode-segmenter/grapheme.cjs +312 -0
  113. package/lib/node_modules/unicode-segmenter/grapheme.js +307 -0
  114. package/lib/primitive.cjs +7 -0
  115. package/lib/primitive.d.ts +1 -0
  116. package/lib/primitive.d.ts.map +1 -1
  117. package/lib/primitive.js +1 -0
  118. package/lib/utils/createWithStateProps.cjs +8 -4
  119. package/lib/utils/createWithStateProps.d.ts +6 -3
  120. package/lib/utils/createWithStateProps.d.ts.map +1 -1
  121. package/lib/utils/createWithStateProps.js +8 -4
  122. package/package.json +9 -6
  123. package/src/components/ActionButton/ActionButton.tsx +21 -2
  124. package/src/components/BottomSheet/BottomSheet.namespace.ts +5 -0
  125. package/src/components/BottomSheet/BottomSheet.tsx +24 -38
  126. package/src/components/BottomSheetHandle/BottomSheetHandle.tsx +22 -0
  127. package/src/components/BottomSheetHandle/index.ts +1 -0
  128. package/src/components/Chip/Chip.tsx +4 -3
  129. package/src/components/Field/Field.namespace.ts +19 -0
  130. package/src/components/Field/Field.tsx +136 -0
  131. package/src/components/Field/index.ts +21 -0
  132. package/src/components/FieldButton/FieldButton.namespace.ts +38 -0
  133. package/src/components/FieldButton/FieldButton.tsx +249 -0
  134. package/src/components/FieldButton/index.ts +40 -0
  135. package/src/components/HelpBubble/HelpBubble.tsx +1 -1
  136. package/src/components/List/List.tsx +5 -4
  137. package/src/components/PageBanner/PageBanner.namespace.ts +4 -2
  138. package/src/components/PageBanner/PageBanner.tsx +10 -3
  139. package/src/components/PageBanner/index.ts +4 -2
  140. package/src/components/Slider/Slider.namespace.ts +28 -0
  141. package/src/components/Slider/Slider.tsx +154 -0
  142. package/src/components/Slider/index.ts +30 -0
  143. package/src/components/TextField/TextField.namespace.ts +2 -24
  144. package/src/components/TextField/TextField.test.tsx +260 -0
  145. package/src/components/TextField/TextField.tsx +67 -143
  146. package/src/components/TextField/index.ts +7 -24
  147. package/src/components/TextField/memoize.ts +14 -0
  148. package/src/components/TextField/useTextFieldWithGraphemes.test.tsx +301 -0
  149. package/src/components/TextField/useTextFieldWithGraphemes.ts +65 -0
  150. package/src/components/index.ts +3 -0
  151. package/src/primitive.ts +1 -0
  152. package/src/utils/createWithStateProps.tsx +14 -9
  153. package/lib/components/List/ListHeader.namespace.d.ts +0 -2
  154. package/lib/components/List/ListHeader.namespace.d.ts.map +0 -1
  155. package/src/components/List/ListHeader.namespace.ts +0 -0
@@ -0,0 +1,249 @@
1
+ import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive";
2
+ import { FieldButton, useFieldButtonContext } from "@seed-design/react-field-button";
3
+ import * as React from "react";
4
+ import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext";
5
+ import { createWithStateProps } from "../../utils/createWithStateProps";
6
+ import { field, type FieldVariantProps } from "@seed-design/css/recipes/field";
7
+ import { fieldLabel, type FieldLabelVariantProps } from "@seed-design/css/recipes/field-label";
8
+ import { InternalIcon, type InternalIconProps } from "../private/Icon";
9
+ import { inputButton } from "@seed-design/css/recipes/input-button";
10
+ import clsx from "clsx";
11
+
12
+ const { withContext: withFieldContext, withProvider: withFieldProvider } =
13
+ createSlotRecipeContext(field);
14
+ const { withProvider, withContext, useClassNames } = createSlotRecipeContext(inputButton);
15
+ const {
16
+ withProvider: withLabelProvider,
17
+ withContext: withLabelContext,
18
+ useClassNames: useLabelClassNames,
19
+ } = createSlotRecipeContext(fieldLabel);
20
+
21
+ const withStateProps = createWithStateProps([useFieldButtonContext]);
22
+
23
+ ////////////////////////////////////////////////////////////////////////////////////
24
+
25
+ export interface FieldButtonRootProps extends FieldVariantProps, FieldButton.RootProps {}
26
+
27
+ export const FieldButtonRoot = withFieldProvider<HTMLDivElement, FieldButtonRootProps>(
28
+ FieldButton.Root,
29
+ "root",
30
+ );
31
+
32
+ ////////////////////////////////////////////////////////////////////////////////////
33
+
34
+ export interface FieldButtonHeaderProps
35
+ extends PrimitiveProps,
36
+ React.HTMLAttributes<HTMLDivElement> {}
37
+
38
+ export const FieldButtonHeader = withFieldContext<HTMLDivElement, FieldButtonHeaderProps>(
39
+ withStateProps(Primitive.div),
40
+ "header",
41
+ );
42
+
43
+ export interface FieldButtonLabelProps
44
+ extends PrimitiveProps,
45
+ FieldLabelVariantProps,
46
+ React.HTMLAttributes<HTMLDivElement> {}
47
+
48
+ export const FieldButtonLabel = withLabelProvider<HTMLDivElement, FieldButtonLabelProps>(
49
+ withStateProps(Primitive.div),
50
+ "root",
51
+ );
52
+
53
+ export interface FieldButtonIndicatorTextProps
54
+ extends PrimitiveProps,
55
+ React.HTMLAttributes<HTMLSpanElement> {}
56
+
57
+ export const FieldButtonIndicatorText = withLabelContext<
58
+ HTMLSpanElement,
59
+ FieldButtonIndicatorTextProps
60
+ >(withStateProps(Primitive.span), "indicatorText");
61
+
62
+ export interface FieldButtonRequiredIndicatorProps extends React.SVGProps<SVGElement> {}
63
+
64
+ export const FieldButtonRequiredIndicator = React.forwardRef<
65
+ SVGSVGElement,
66
+ FieldButtonRequiredIndicatorProps
67
+ >(({ className, ...props }, ref) => {
68
+ const { indicatorIcon } = useLabelClassNames();
69
+
70
+ return (
71
+ <InternalIcon
72
+ svg={
73
+ // biome-ignore lint/a11y/noSvgWithoutTitle: InternalIcon is aria-hidden
74
+ <svg
75
+ viewBox="0 0 6 6"
76
+ fill="none"
77
+ xmlns="http://www.w3.org/2000/svg"
78
+ className={clsx(indicatorIcon, className)}
79
+ >
80
+ <path
81
+ d="M3.75002 1.55859L4.41318 1.09468C4.75243 0.857361 5.21982 0.939865 5.45732 1.27899C5.69499 1.61836 5.61243 2.08615 5.27295 2.32366L4.30763 2.99902L5.27372 3.67612C5.61285 3.91381 5.69517 4.38137 5.45761 4.72059C5.21999 5.0599 4.7523 5.14233 4.41299 4.90471L3.75002 4.44043V5.25C3.75002 5.66421 3.41423 6 3.00002 6C2.5858 6 2.25002 5.66421 2.25002 5.25V4.44043L1.58704 4.90471C1.24773 5.14233 0.780041 5.0599 0.542418 4.72059C0.304856 4.38137 0.387176 3.91381 0.726309 3.67612L1.6924 2.99902L0.727079 2.32366C0.387603 2.08615 0.305043 1.61836 0.542707 1.27899C0.780206 0.939865 1.2476 0.857361 1.58685 1.09468L2.25002 1.55859V0.75C2.25002 0.335786 2.5858 0 3.00002 0C3.41423 0 3.75002 0.335786 3.75002 0.75V1.55859Z"
82
+ fill="currentColor"
83
+ />
84
+ </svg>
85
+ }
86
+ ref={ref}
87
+ {...props}
88
+ />
89
+ );
90
+ });
91
+ FieldButtonRequiredIndicator.displayName = "FieldButtonRequiredIndicator";
92
+
93
+ ////////////////////////////////////////////////////////////////////////////////////
94
+
95
+ export interface FieldButtonPrefixIconProps extends InternalIconProps {}
96
+
97
+ export const FieldButtonPrefixIcon = withContext<SVGSVGElement, FieldButtonPrefixIconProps>(
98
+ withStateProps(InternalIcon),
99
+ "prefixIcon",
100
+ );
101
+
102
+ export interface FieldButtonPrefixTextProps
103
+ extends PrimitiveProps,
104
+ React.HTMLAttributes<HTMLSpanElement> {}
105
+
106
+ export const FieldButtonPrefixText = React.forwardRef<HTMLSpanElement, FieldButtonPrefixTextProps>(
107
+ ({ className, ...props }, ref) => {
108
+ const { stateProps } = useFieldButtonContext();
109
+ const { prefixText } = useClassNames();
110
+
111
+ return (
112
+ <Primitive.span
113
+ className={clsx(prefixText, className)}
114
+ ref={ref}
115
+ aria-hidden
116
+ {...stateProps}
117
+ {...props}
118
+ />
119
+ );
120
+ },
121
+ );
122
+ FieldButtonPrefixText.displayName = "FieldButtonPrefixText";
123
+
124
+ export interface FieldButtonSuffixIconProps extends InternalIconProps {}
125
+
126
+ export const FieldButtonSuffixIcon = withContext<SVGSVGElement, FieldButtonSuffixIconProps>(
127
+ withStateProps(InternalIcon),
128
+ "suffixIcon",
129
+ );
130
+
131
+ export interface FieldButtonSuffixTextProps
132
+ extends PrimitiveProps,
133
+ React.HTMLAttributes<HTMLSpanElement> {}
134
+
135
+ export const FieldButtonSuffixText = React.forwardRef<HTMLSpanElement, FieldButtonSuffixTextProps>(
136
+ ({ className, ...props }, ref) => {
137
+ const { stateProps } = useFieldButtonContext();
138
+ const { suffixText } = useClassNames();
139
+
140
+ return (
141
+ <Primitive.span
142
+ className={clsx(suffixText, className)}
143
+ ref={ref}
144
+ aria-hidden
145
+ {...stateProps}
146
+ {...props}
147
+ />
148
+ );
149
+ },
150
+ );
151
+ FieldButtonSuffixText.displayName = "FieldButtonSuffixText";
152
+
153
+ ////////////////////////////////////////////////////////////////////////////////////
154
+
155
+ export interface FieldButtonFooterProps
156
+ extends PrimitiveProps,
157
+ React.HTMLAttributes<HTMLDivElement> {}
158
+
159
+ export const FieldButtonFooter = withFieldContext<HTMLDivElement, FieldButtonFooterProps>(
160
+ withStateProps(Primitive.div),
161
+ "footer",
162
+ );
163
+
164
+ export interface FieldButtonDescriptionProps extends FieldButton.DescriptionProps {}
165
+
166
+ export const FieldButtonDescription = withFieldContext<
167
+ HTMLSpanElement,
168
+ FieldButtonDescriptionProps
169
+ >(FieldButton.Description, "description");
170
+
171
+ export interface FieldButtonErrorMessageProps extends FieldButton.ErrorMessageProps {}
172
+
173
+ export const FieldButtonErrorMessage = withFieldContext<
174
+ HTMLSpanElement,
175
+ FieldButtonErrorMessageProps
176
+ >(FieldButton.ErrorMessage, "errorMessage");
177
+
178
+ ////////////////////////////////////////////////////////////////////////////////////
179
+
180
+ export interface FieldButtonHiddenInputProps extends FieldButton.HiddenInputProps {}
181
+
182
+ export const FieldButtonHiddenInput = FieldButton.HiddenInput;
183
+
184
+ export interface FieldButtonButtonProps extends FieldButton.ButtonProps {}
185
+
186
+ export const FieldButtonButton = withContext<HTMLButtonElement, FieldButtonButtonProps>(
187
+ FieldButton.Button,
188
+ "button",
189
+ );
190
+
191
+ export interface FieldButtonControlProps
192
+ extends PrimitiveProps,
193
+ React.HTMLAttributes<HTMLDivElement> {}
194
+
195
+ export const FieldButtonControl = withProvider<HTMLDivElement, FieldButtonControlProps>(
196
+ withStateProps(Primitive.div),
197
+ "root",
198
+ );
199
+
200
+ export interface FieldButtonClearButtonProps extends FieldButton.ClearButtonProps {}
201
+
202
+ export const FieldButtonClearButton = withContext<HTMLButtonElement, FieldButtonClearButtonProps>(
203
+ FieldButton.ClearButton,
204
+ "clearButton",
205
+ );
206
+
207
+ export interface FieldButtonValueProps
208
+ extends PrimitiveProps,
209
+ React.HTMLAttributes<HTMLDivElement> {}
210
+
211
+ export const FieldButtonValue = React.forwardRef<HTMLDivElement, FieldButtonValueProps>(
212
+ ({ className, ...props }, ref) => {
213
+ const { stateProps } = useFieldButtonContext();
214
+ const { value } = useClassNames();
215
+
216
+ return (
217
+ <Primitive.div
218
+ className={clsx(value, className)}
219
+ ref={ref}
220
+ aria-hidden
221
+ {...stateProps}
222
+ {...props}
223
+ />
224
+ );
225
+ },
226
+ );
227
+ FieldButtonValue.displayName = "FieldButtonValue";
228
+
229
+ export interface FieldButtonPlaceholderProps
230
+ extends PrimitiveProps,
231
+ React.HTMLAttributes<HTMLDivElement> {}
232
+
233
+ export const FieldButtonPlaceholder = React.forwardRef<HTMLDivElement, FieldButtonPlaceholderProps>(
234
+ ({ className, ...props }, ref) => {
235
+ const { stateProps } = useFieldButtonContext();
236
+ const { placeholder } = useClassNames();
237
+
238
+ return (
239
+ <Primitive.div
240
+ className={clsx(placeholder, className)}
241
+ ref={ref}
242
+ aria-hidden
243
+ {...stateProps}
244
+ {...props}
245
+ />
246
+ );
247
+ },
248
+ );
249
+ FieldButtonPlaceholder.displayName = "FieldButtonPlaceholder";
@@ -0,0 +1,40 @@
1
+ export {
2
+ FieldButtonButton,
3
+ FieldButtonClearButton,
4
+ FieldButtonDescription,
5
+ FieldButtonErrorMessage,
6
+ FieldButtonRoot,
7
+ FieldButtonFooter,
8
+ FieldButtonHeader,
9
+ FieldButtonHiddenInput,
10
+ FieldButtonIndicatorText,
11
+ FieldButtonLabel,
12
+ FieldButtonPlaceholder,
13
+ FieldButtonPrefixIcon,
14
+ FieldButtonPrefixText,
15
+ FieldButtonRequiredIndicator,
16
+ FieldButtonControl,
17
+ FieldButtonSuffixIcon,
18
+ FieldButtonSuffixText,
19
+ FieldButtonValue,
20
+ type FieldButtonButtonProps,
21
+ type FieldButtonClearButtonProps,
22
+ type FieldButtonDescriptionProps,
23
+ type FieldButtonErrorMessageProps,
24
+ type FieldButtonRootProps,
25
+ type FieldButtonFooterProps,
26
+ type FieldButtonHeaderProps,
27
+ type FieldButtonHiddenInputProps,
28
+ type FieldButtonIndicatorTextProps,
29
+ type FieldButtonLabelProps,
30
+ type FieldButtonPlaceholderProps,
31
+ type FieldButtonPrefixIconProps,
32
+ type FieldButtonPrefixTextProps,
33
+ type FieldButtonRequiredIndicatorProps,
34
+ type FieldButtonControlProps,
35
+ type FieldButtonSuffixIconProps,
36
+ type FieldButtonSuffixTextProps,
37
+ type FieldButtonValueProps,
38
+ } from "./FieldButton";
39
+
40
+ export * as FieldButton from "./FieldButton.namespace";
@@ -88,7 +88,7 @@ export const HelpBubbleArrow = withContext<HTMLDivElement, HelpBubbleArrowProps>
88
88
  export interface HelpBubbleArrowTipProps extends React.SVGProps<SVGSVGElement> {
89
89
  /**
90
90
  * radius of the arrow tip
91
- * @default 1
91
+ * @default 2
92
92
  */
93
93
  tipRadius?: number;
94
94
  }
@@ -12,10 +12,11 @@ import { useRadioGroupItemContext } from "@seed-design/react-radio-group";
12
12
  import { useSwitchContext } from "@seed-design/react-switch";
13
13
 
14
14
  const { withContext, withProvider } = createSlotRecipeContext(listItem);
15
- const withStateProps = createWithStateProps(
16
- [useCheckboxContext, useRadioGroupItemContext, useSwitchContext],
17
- { strict: false },
18
- );
15
+ const withStateProps = createWithStateProps([
16
+ { useContext: useCheckboxContext, strict: false },
17
+ { useContext: useRadioGroupItemContext, strict: false },
18
+ { useContext: useSwitchContext, strict: false },
19
+ ]);
19
20
 
20
21
  export interface ListRootProps extends VStackProps {}
21
22
 
@@ -1,12 +1,14 @@
1
1
  export {
2
+ PageBannerBody as Body,
2
3
  PageBannerCloseButton as CloseButton,
3
- PageBannerTextContent as TextContent,
4
+ PageBannerContent as Content,
4
5
  PageBannerDescription as Description,
5
6
  PageBannerButton as Button,
6
7
  PageBannerRoot as Root,
7
8
  PageBannerTitle as Title,
9
+ type PageBannerBodyProps as BodyProps,
8
10
  type PageBannerCloseButtonProps as CloseButtonProps,
9
- type PageBannerTextContentProps as TextContentProps,
11
+ type PageBannerContentProps as ContentProps,
10
12
  type PageBannerDescriptionProps as DescriptionProps,
11
13
  type PageBannerButtonProps as ButtonProps,
12
14
  type PageBannerRootProps as RootProps,
@@ -18,13 +18,20 @@ export const PageBannerRoot = withProvider<HTMLDivElement, PageBannerRootProps>(
18
18
  "root",
19
19
  );
20
20
 
21
- export interface PageBannerTextContentProps
21
+ export interface PageBannerContentProps
22
22
  extends PrimitiveProps,
23
23
  React.HTMLAttributes<HTMLDivElement> {}
24
24
 
25
- export const PageBannerTextContent = withContext<HTMLDivElement, PageBannerTextContentProps>(
25
+ export const PageBannerContent = withContext<HTMLDivElement, PageBannerContentProps>(
26
26
  Primitive.div,
27
- "textContent",
27
+ "content",
28
+ );
29
+
30
+ export interface PageBannerBodyProps extends PrimitiveProps, React.HTMLAttributes<HTMLDivElement> {}
31
+
32
+ export const PageBannerBody = withContext<HTMLDivElement, PageBannerBodyProps>(
33
+ Primitive.div,
34
+ "body",
28
35
  );
29
36
 
30
37
  export interface PageBannerTitleProps
@@ -1,12 +1,14 @@
1
1
  export {
2
+ PageBannerBody,
2
3
  PageBannerCloseButton,
3
- PageBannerTextContent,
4
+ PageBannerContent,
4
5
  PageBannerDescription,
5
6
  PageBannerButton,
6
7
  PageBannerRoot,
7
8
  PageBannerTitle,
9
+ type PageBannerBodyProps,
8
10
  type PageBannerCloseButtonProps,
9
- type PageBannerTextContentProps,
11
+ type PageBannerContentProps,
10
12
  type PageBannerDescriptionProps,
11
13
  type PageBannerButtonProps,
12
14
  type PageBannerRootProps,
@@ -0,0 +1,28 @@
1
+ export {
2
+ SliderRoot as Root,
3
+ SliderControl as Control,
4
+ SliderTrack as Track,
5
+ SliderRange as Range,
6
+ SliderThumb as Thumb,
7
+ SliderHiddenInput as HiddenInput,
8
+ SliderTick as Tick,
9
+ SliderMarkers as Markers,
10
+ SliderMarker as Marker,
11
+ SliderValueIndicatorRoot as ValueIndicatorRoot,
12
+ SliderValueIndicatorArrow as ValueIndicatorArrow,
13
+ SliderValueIndicatorArrowTip as ValueIndicatorArrowTip,
14
+ SliderValueIndicatorLabel as ValueIndicatorLabel,
15
+ type SliderRootProps as RootProps,
16
+ type SliderControlProps as ControlProps,
17
+ type SliderTrackProps as TrackProps,
18
+ type SliderRangeProps as RangeProps,
19
+ type SliderThumbProps as ThumbProps,
20
+ type SliderHiddenInputProps as HiddenInputProps,
21
+ type SliderTickProps as TickProps,
22
+ type SliderMarkersProps as MarkersProps,
23
+ type SliderMarkerProps as MarkerProps,
24
+ type SliderValueIndicatorRootProps as ValueIndicatorRootProps,
25
+ type SliderValueIndicatorArrowProps as ValueIndicatorArrowProps,
26
+ type SliderValueIndicatorArrowTipProps as ValueIndicatorArrowTipProps,
27
+ type SliderValueIndicatorLabelProps as ValueIndicatorLabelProps,
28
+ } from "./Slider";
@@ -0,0 +1,154 @@
1
+ "use client";
2
+
3
+ import { slider, type SliderVariantProps } from "@seed-design/css/recipes/slider";
4
+ import { sliderTick, type SliderTickVariantProps } from "@seed-design/css/recipes/slider-tick";
5
+ import {
6
+ sliderMarker,
7
+ type SliderMarkerVariantProps,
8
+ } from "@seed-design/css/recipes/slider-marker";
9
+ import { Primitive, type PrimitiveProps } from "@seed-design/react-primitive";
10
+ import { createSlotRecipeContext } from "../../utils/createSlotRecipeContext";
11
+ import { Slider, useSliderContext } from "@seed-design/react-slider";
12
+ import { forwardRef, useState, type HTMLAttributes } from "react";
13
+ import { createWithStateProps } from "../../utils/createWithStateProps";
14
+ import { createRecipeContext } from "../../utils/createRecipeContext";
15
+ import clsx from "clsx";
16
+ import { mergeProps } from "@seed-design/dom-utils";
17
+ import { useFieldContext } from "@seed-design/react-field";
18
+ import { composeRefs } from "@radix-ui/react-compose-refs";
19
+
20
+ const { withProvider, withContext, useClassNames } = createSlotRecipeContext(slider);
21
+ const { withContext: withTickContext } = createRecipeContext(sliderTick);
22
+ const { withContext: withMarkerContext } = createRecipeContext(sliderMarker);
23
+
24
+ const withFieldStateProps = createWithStateProps([{ useContext: useFieldContext, strict: false }]);
25
+ const withStateProps = createWithStateProps([
26
+ useSliderContext,
27
+ { useContext: useFieldContext, strict: false },
28
+ ]);
29
+
30
+ export interface SliderRootProps extends SliderVariantProps, Slider.RootProps {}
31
+
32
+ export const SliderRoot = withProvider<HTMLDivElement, SliderRootProps>(Slider.Root, "root");
33
+
34
+ export interface SliderControlProps extends PrimitiveProps, HTMLAttributes<HTMLDivElement> {}
35
+
36
+ export const SliderControl = withContext<HTMLDivElement, SliderControlProps>(
37
+ withStateProps(Primitive.div),
38
+ "control",
39
+ );
40
+
41
+ export interface SliderTrackProps extends PrimitiveProps, HTMLAttributes<HTMLDivElement> {}
42
+
43
+ export const SliderTrack = withContext<HTMLDivElement, SliderTrackProps>(
44
+ withStateProps(Primitive.div),
45
+ "track",
46
+ );
47
+
48
+ export interface SliderRangeProps extends Slider.RangeProps {}
49
+
50
+ export const SliderRange = withContext<HTMLDivElement, SliderRangeProps>(
51
+ withFieldStateProps(Slider.Range),
52
+ "range",
53
+ );
54
+
55
+ export interface SliderThumbProps extends Slider.ThumbProps {}
56
+
57
+ export const SliderThumb = forwardRef<HTMLDivElement, Slider.ThumbProps>(
58
+ ({ thumbIndex, className, ...props }, ref) => {
59
+ const classNames = useClassNames();
60
+
61
+ const fieldContext = useFieldContext({ strict: false });
62
+ const mergedProps = mergeProps(fieldContext?.inputAriaAttributes ?? {}, props); // intentionally omits Field stateProps here because each thumb is styled individually
63
+
64
+ return (
65
+ <Slider.Thumb
66
+ ref={ref}
67
+ className={clsx(classNames.thumb, className)}
68
+ thumbIndex={thumbIndex}
69
+ {...mergedProps}
70
+ />
71
+ );
72
+ },
73
+ );
74
+ SliderThumb.displayName = "SliderThumb";
75
+
76
+ export interface SliderHiddenInputProps extends Slider.HiddenInputProps {}
77
+
78
+ export const SliderHiddenInput = Slider.HiddenInput;
79
+
80
+ export interface SliderTickProps extends SliderTickVariantProps, Slider.TickProps {}
81
+
82
+ export const SliderTick = withTickContext<HTMLDivElement, SliderTickProps>(Slider.Tick);
83
+
84
+ export interface SliderMarkersProps extends PrimitiveProps, HTMLAttributes<HTMLDivElement> {}
85
+
86
+ export const SliderMarkers = withContext<HTMLDivElement, SliderMarkersProps>(
87
+ withStateProps(Primitive.div),
88
+ "markers",
89
+ );
90
+
91
+ export interface SliderMarkerProps extends SliderMarkerVariantProps, Slider.MarkerProps {}
92
+
93
+ export const SliderMarker = withMarkerContext<HTMLDivElement, SliderMarkerProps>(
94
+ withFieldStateProps(Slider.Marker),
95
+ );
96
+
97
+ export interface SliderValueIndicatorRootProps extends Slider.ValueIndicatorRootProps {}
98
+
99
+ export const SliderValueIndicatorRoot = withContext<HTMLDivElement, SliderValueIndicatorRootProps>(
100
+ Slider.ValueIndicatorRoot,
101
+ "valueIndicatorRoot",
102
+ );
103
+
104
+ export interface SliderValueIndicatorLabelProps extends Slider.ValueIndicatorLabelProps {}
105
+
106
+ export const SliderValueIndicatorLabel = Slider.ValueIndicatorLabel;
107
+
108
+ export interface SliderValueIndicatorArrowProps
109
+ extends PrimitiveProps,
110
+ HTMLAttributes<HTMLDivElement> {}
111
+
112
+ export const SliderValueIndicatorArrow = withContext<
113
+ HTMLDivElement,
114
+ SliderValueIndicatorArrowProps
115
+ >(withStateProps(Primitive.div), "valueIndicatorArrow");
116
+
117
+ export interface SliderValueIndicatorArrowTipProps extends React.SVGProps<SVGSVGElement> {
118
+ /**
119
+ * radius of the arrow tip
120
+ * @default 2
121
+ */
122
+ tipRadius?: number;
123
+ }
124
+
125
+ export const SliderValueIndicatorArrowTip = forwardRef<
126
+ SVGSVGElement,
127
+ SliderValueIndicatorArrowTipProps
128
+ >(({ tipRadius = 2, className, ...otherProps }, ref) => {
129
+ const [valueIndicatorArrowTip, setValueIndicatorArrowTip] = useState<SVGSVGElement | null>(null);
130
+
131
+ const width = valueIndicatorArrowTip?.clientWidth ?? 0;
132
+ const height = valueIndicatorArrowTip?.clientHeight ?? 0;
133
+
134
+ const pathData = `M0,0
135
+ H${width}
136
+ L${width / 2 + tipRadius},${height - tipRadius}
137
+ Q${width / 2},${height} ${width / 2 - tipRadius},${height - tipRadius}
138
+ Z`;
139
+
140
+ const classNames = useClassNames();
141
+
142
+ return (
143
+ <svg
144
+ aria-hidden="true"
145
+ viewBox={`0 0 ${width} ${height}`}
146
+ ref={composeRefs(setValueIndicatorArrowTip, ref)}
147
+ className={clsx(classNames.valueIndicatorArrowTip, className)}
148
+ {...otherProps}
149
+ >
150
+ <path stroke="none" d={pathData} />
151
+ </svg>
152
+ );
153
+ });
154
+ SliderValueIndicatorArrowTip.displayName = "SliderValueIndicatorArrowTip";
@@ -0,0 +1,30 @@
1
+ export {
2
+ SliderRoot,
3
+ SliderControl,
4
+ SliderTrack,
5
+ SliderRange,
6
+ SliderThumb,
7
+ SliderHiddenInput,
8
+ SliderTick,
9
+ SliderMarkers,
10
+ SliderMarker,
11
+ SliderValueIndicatorRoot,
12
+ SliderValueIndicatorArrow,
13
+ SliderValueIndicatorArrowTip,
14
+ SliderValueIndicatorLabel,
15
+ type SliderRootProps,
16
+ type SliderControlProps,
17
+ type SliderTrackProps,
18
+ type SliderRangeProps,
19
+ type SliderThumbProps,
20
+ type SliderHiddenInputProps,
21
+ type SliderTickProps,
22
+ type SliderMarkersProps,
23
+ type SliderMarkerProps,
24
+ type SliderValueIndicatorRootProps,
25
+ type SliderValueIndicatorArrowProps,
26
+ type SliderValueIndicatorArrowTipProps,
27
+ type SliderValueIndicatorLabelProps,
28
+ } from "./Slider";
29
+
30
+ export * as Slider from "./Slider.namespace";
@@ -1,38 +1,16 @@
1
1
  export {
2
- TextFieldCharacterCount as CharacterCount,
3
- TextFieldCharacterCountArea as CharacterCountArea,
4
- TextFieldDescription as Description,
5
- TextFieldErrorIcon as ErrorIcon,
6
- TextFieldErrorMessage as ErrorMessage,
7
- TextFieldField as Field,
8
- TextFieldFooter as Footer,
9
- TextFieldHeader as Header,
10
- TextFieldIndicator as Indicator,
2
+ TextFieldRoot as Root,
11
3
  TextFieldInput as Input,
12
4
  TextFieldTextarea as Textarea,
13
- TextFieldLabel as Label,
14
- TextFieldMaxCharacterCount as MaxCharacterCount,
15
5
  TextFieldPrefixIcon as PrefixIcon,
16
6
  TextFieldPrefixText as PrefixText,
17
- TextFieldRoot as Root,
18
7
  TextFieldSuffixIcon as SuffixIcon,
19
8
  TextFieldSuffixText as SuffixText,
20
- type TextFieldCharacterCountAreaProps as CharacterCountAreaProps,
21
- type TextFieldCharacterCountProps as CharacterCountProps,
22
- type TextFieldDescriptionProps as DescriptionProps,
23
- type TextFieldErrorIconProps as ErrorIconProps,
24
- type TextFieldErrorMessageProps as ErrorMessageProps,
25
- type TextFieldFieldProps as FieldProps,
26
- type TextFieldFooterProps as FooterProps,
27
- type TextFieldHeaderProps as HeaderProps,
28
- type TextFieldIndicatorProps as IndicatorProps,
9
+ type TextFieldRootProps as RootProps,
29
10
  type TextFieldInputProps as InputProps,
30
11
  type TextFieldTextareaProps as TextareaProps,
31
- type TextFieldLabelProps as LabelProps,
32
- type TextFieldMaxCharacterCountProps as MaxCharacterCountProps,
33
12
  type TextFieldPrefixIconProps as PrefixIconProps,
34
13
  type TextFieldPrefixTextProps as PrefixTextProps,
35
- type TextFieldRootProps as RootProps,
36
14
  type TextFieldSuffixIconProps as SuffixIconProps,
37
15
  type TextFieldSuffixTextProps as SuffixTextProps,
38
16
  } from "./TextField";