@spark-ui/components 10.8.2 → 10.9.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.
@@ -26,10 +26,43 @@ module.exports = __toCommonJS(drawer_exports);
26
26
 
27
27
  // src/drawer/Drawer.tsx
28
28
  var import_radix_ui = require("radix-ui");
29
+
30
+ // src/drawer/DrawerContext.tsx
31
+ var import_react = require("react");
29
32
  var import_jsx_runtime = require("react/jsx-runtime");
30
- var Drawer = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_radix_ui.Dialog.Root, { ...rest, children });
33
+ var DrawerContext = (0, import_react.createContext)(null);
34
+ var DrawerProvider = ({
35
+ children: childrenProp,
36
+ withFade = false
37
+ }) => {
38
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
39
+ DrawerContext.Provider,
40
+ {
41
+ value: {
42
+ withFade
43
+ },
44
+ children: childrenProp
45
+ }
46
+ );
47
+ };
48
+ var useDrawer = () => {
49
+ const context = (0, import_react.useContext)(DrawerContext);
50
+ if (!context) {
51
+ throw Error("useDrawer must be used within a Drawer provider");
52
+ }
53
+ return context;
54
+ };
55
+
56
+ // src/drawer/Drawer.tsx
57
+ var import_jsx_runtime2 = require("react/jsx-runtime");
58
+ var Drawer = ({ children, withFade = false, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(DrawerProvider, { withFade, children: /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_radix_ui.Dialog.Root, { ...rest, children }) });
31
59
  Drawer.displayName = "Drawer.Root";
32
60
 
61
+ // src/drawer/DrawerBody.tsx
62
+ var import_use_merge_refs = require("@spark-ui/hooks/use-merge-refs");
63
+ var import_use_scroll_overflow = require("@spark-ui/hooks/use-scroll-overflow");
64
+ var import_react2 = require("react");
65
+
33
66
  // src/drawer/DrawerBody.styles.ts
34
67
  var import_class_variance_authority = require("class-variance-authority");
35
68
  var drawerBodyStyles = (0, import_class_variance_authority.cva)(
@@ -48,23 +81,36 @@ var drawerBodyStyles = (0, import_class_variance_authority.cva)(
48
81
  );
49
82
 
50
83
  // src/drawer/DrawerBody.tsx
51
- var import_jsx_runtime2 = require("react/jsx-runtime");
84
+ var import_jsx_runtime3 = require("react/jsx-runtime");
52
85
  var DrawerBody = ({
53
86
  children,
54
87
  inset = false,
55
88
  className,
56
- ref,
89
+ ref: forwardedRef,
57
90
  ...rest
58
- }) => /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(
59
- "div",
60
- {
61
- "data-spark-component": "drawer-body",
62
- ref,
63
- className: drawerBodyStyles({ inset, className }),
64
- ...rest,
65
- children
66
- }
67
- );
91
+ }) => {
92
+ const scrollAreaRef = (0, import_react2.useRef)(null);
93
+ const ref = (0, import_use_merge_refs.useMergeRefs)(forwardedRef, scrollAreaRef);
94
+ const { withFade } = useDrawer();
95
+ const overflow = (0, import_use_scroll_overflow.useScrollOverflow)(scrollAreaRef);
96
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
97
+ "div",
98
+ {
99
+ "data-spark-component": "drawer-body",
100
+ ref,
101
+ className: drawerBodyStyles({ inset, className }),
102
+ style: {
103
+ ...withFade && {
104
+ maskImage: "linear-gradient(to bottom, rgba(0, 0, 0, 0), rgba(0, 0, 0, 1) 44px, rgba(0, 0, 0, 1) calc(100% - 44px), rgba(0, 0, 0, 0))",
105
+ maskSize: `100% calc(100% + ${overflow.top ? "0px" : "44px"} + ${overflow.bottom ? "0px" : "44px"})`,
106
+ maskPosition: `0 ${overflow.top ? "0px" : "-44px"}`
107
+ }
108
+ },
109
+ ...rest,
110
+ children
111
+ }
112
+ );
113
+ };
68
114
  DrawerBody.displayName = "Drawer.Body";
69
115
 
70
116
  // src/drawer/DrawerCloseButton.tsx
@@ -72,19 +118,19 @@ var import_Close = require("@spark-ui/icons/Close");
72
118
  var import_class_variance_authority7 = require("class-variance-authority");
73
119
 
74
120
  // src/icon/Icon.tsx
75
- var import_react2 = require("react");
121
+ var import_react4 = require("react");
76
122
 
77
123
  // src/slot/Slot.tsx
78
124
  var import_radix_ui2 = require("radix-ui");
79
- var import_react = require("react");
80
- var import_jsx_runtime3 = require("react/jsx-runtime");
125
+ var import_react3 = require("react");
126
+ var import_jsx_runtime4 = require("react/jsx-runtime");
81
127
  var Slottable = import_radix_ui2.Slot.Slottable;
82
128
  var Slot = ({ ref, ...props }) => {
83
- return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_radix_ui2.Slot.Root, { ref, ...props });
129
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_radix_ui2.Slot.Root, { ref, ...props });
84
130
  };
85
131
  var wrapPolymorphicSlot = (asChild, children, callback) => {
86
132
  if (!asChild) return callback(children);
87
- return (0, import_react.isValidElement)(children) ? (0, import_react.cloneElement)(
133
+ return (0, import_react3.isValidElement)(children) ? (0, import_react3.cloneElement)(
88
134
  children,
89
135
  void 0,
90
136
  callback(children.props.children)
@@ -92,10 +138,10 @@ var wrapPolymorphicSlot = (asChild, children, callback) => {
92
138
  };
93
139
 
94
140
  // src/visually-hidden/VisuallyHidden.tsx
95
- var import_jsx_runtime4 = require("react/jsx-runtime");
141
+ var import_jsx_runtime5 = require("react/jsx-runtime");
96
142
  var VisuallyHidden = ({ asChild = false, ref, ...props }) => {
97
143
  const Component = asChild ? Slot : "span";
98
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
144
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
99
145
  Component,
100
146
  {
101
147
  ...props,
@@ -153,7 +199,7 @@ var iconStyles = (0, import_class_variance_authority2.cva)(["fill-current shrink
153
199
  });
154
200
 
155
201
  // src/icon/Icon.tsx
156
- var import_jsx_runtime5 = require("react/jsx-runtime");
202
+ var import_jsx_runtime6 = require("react/jsx-runtime");
157
203
  var Icon = ({
158
204
  label,
159
205
  className,
@@ -162,23 +208,23 @@ var Icon = ({
162
208
  children,
163
209
  ...others
164
210
  }) => {
165
- const child = import_react2.Children.only(children);
166
- return /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(import_jsx_runtime5.Fragment, { children: [
167
- (0, import_react2.cloneElement)(child, {
211
+ const child = import_react4.Children.only(children);
212
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
213
+ (0, import_react4.cloneElement)(child, {
168
214
  className: iconStyles({ className, size, intent }),
169
215
  "data-spark-component": "icon",
170
216
  "aria-hidden": "true",
171
217
  focusable: "false",
172
218
  ...others
173
219
  }),
174
- label && /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(VisuallyHidden, { children: label })
220
+ label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(VisuallyHidden, { children: label })
175
221
  ] });
176
222
  };
177
223
  Icon.displayName = "Icon";
178
224
 
179
225
  // src/button/Button.tsx
180
226
  var import_class_variance_authority5 = require("class-variance-authority");
181
- var import_react3 = require("react");
227
+ var import_react5 = require("react");
182
228
 
183
229
  // src/spinner/Spinner.styles.tsx
184
230
  var import_internal_utils2 = require("@spark-ui/internal-utils");
@@ -229,7 +275,7 @@ var spinnerStyles = (0, import_class_variance_authority3.cva)(
229
275
  );
230
276
 
231
277
  // src/spinner/Spinner.tsx
232
- var import_jsx_runtime6 = require("react/jsx-runtime");
278
+ var import_jsx_runtime7 = require("react/jsx-runtime");
233
279
  var Spinner = ({
234
280
  className,
235
281
  size = "current",
@@ -239,7 +285,7 @@ var Spinner = ({
239
285
  ref,
240
286
  ...others
241
287
  }) => {
242
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
288
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
243
289
  "span",
244
290
  {
245
291
  role: "status",
@@ -247,7 +293,7 @@ var Spinner = ({
247
293
  ref,
248
294
  className: spinnerStyles({ className, size, intent, isBackgroundVisible }),
249
295
  ...others,
250
- children: label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(VisuallyHidden, { children: label })
296
+ children: label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(VisuallyHidden, { children: label })
251
297
  }
252
298
  );
253
299
  };
@@ -898,7 +944,7 @@ var buttonStyles = (0, import_class_variance_authority4.cva)(
898
944
  );
899
945
 
900
946
  // src/button/Button.tsx
901
- var import_jsx_runtime7 = require("react/jsx-runtime");
947
+ var import_jsx_runtime8 = require("react/jsx-runtime");
902
948
  var blockedEventHandlers = [
903
949
  "onClick",
904
950
  "onMouseDown",
@@ -930,7 +976,7 @@ var Button = ({
930
976
  }) => {
931
977
  const Component = asChild ? Slot : "button";
932
978
  const shouldNotInteract = !!disabled || isLoading;
933
- const disabledEventHandlers = (0, import_react3.useMemo)(() => {
979
+ const disabledEventHandlers = (0, import_react5.useMemo)(() => {
934
980
  const result = {};
935
981
  if (shouldNotInteract) {
936
982
  blockedEventHandlers.forEach((eventHandler) => result[eventHandler] = void 0);
@@ -942,7 +988,7 @@ var Button = ({
942
988
  className: loadingText ? "inline-block" : "absolute",
943
989
  ...loadingLabel && { "aria-label": loadingLabel }
944
990
  };
945
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
991
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
946
992
  Component,
947
993
  {
948
994
  "data-spark-component": "button",
@@ -965,10 +1011,10 @@ var Button = ({
965
1011
  children: wrapPolymorphicSlot(
966
1012
  asChild,
967
1013
  children,
968
- (slotted) => isLoading ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
969
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Spinner, { ...spinnerProps }),
1014
+ (slotted) => isLoading ? /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(import_jsx_runtime8.Fragment, { children: [
1015
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(Spinner, { ...spinnerProps }),
970
1016
  loadingText && loadingText,
971
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
1017
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
972
1018
  "div",
973
1019
  {
974
1020
  "aria-hidden": true,
@@ -1000,7 +1046,7 @@ var iconButtonStyles = (0, import_class_variance_authority6.cva)(["pl-0 pr-0"],
1000
1046
  });
1001
1047
 
1002
1048
  // src/icon-button/IconButton.tsx
1003
- var import_jsx_runtime8 = require("react/jsx-runtime");
1049
+ var import_jsx_runtime9 = require("react/jsx-runtime");
1004
1050
  var IconButton = ({
1005
1051
  design = "filled",
1006
1052
  disabled = false,
@@ -1011,7 +1057,7 @@ var IconButton = ({
1011
1057
  ref,
1012
1058
  ...others
1013
1059
  }) => {
1014
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
1060
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
1015
1061
  Button,
1016
1062
  {
1017
1063
  "data-spark-component": "icon-button",
@@ -1030,22 +1076,22 @@ IconButton.displayName = "IconButton";
1030
1076
 
1031
1077
  // src/drawer/DrawerClose.tsx
1032
1078
  var import_radix_ui3 = require("radix-ui");
1033
- var import_jsx_runtime9 = require("react/jsx-runtime");
1034
- var DrawerClose = (props) => /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_radix_ui3.Dialog.Close, { "data-spark-component": "drawer-close", ...props });
1079
+ var import_jsx_runtime10 = require("react/jsx-runtime");
1080
+ var DrawerClose = (props) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_radix_ui3.Dialog.Close, { "data-spark-component": "drawer-close", ...props });
1035
1081
  DrawerClose.displayName = "Drawer.Close";
1036
1082
 
1037
1083
  // src/drawer/DrawerCloseButton.tsx
1038
- var import_jsx_runtime10 = require("react/jsx-runtime");
1084
+ var import_jsx_runtime11 = require("react/jsx-runtime");
1039
1085
  var DrawerCloseButton = ({
1040
1086
  "aria-label": ariaLabel,
1041
1087
  className,
1042
1088
  size = "md",
1043
1089
  intent = "neutral",
1044
1090
  design = "ghost",
1045
- children = /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_Close.Close, {}),
1091
+ children = /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_Close.Close, {}),
1046
1092
  ref,
1047
1093
  ...rest
1048
- }) => /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
1094
+ }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1049
1095
  DrawerClose,
1050
1096
  {
1051
1097
  "data-spark-component": "drawer-close-button",
@@ -1053,7 +1099,7 @@ var DrawerCloseButton = ({
1053
1099
  className: (0, import_class_variance_authority7.cx)(["absolute", "top-sm", "right-xl"], className),
1054
1100
  asChild: true,
1055
1101
  ...rest,
1056
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(IconButton, { intent, size, design, "aria-label": ariaLabel, children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { children }) })
1102
+ children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(IconButton, { intent, size, design, "aria-label": ariaLabel, children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { children }) })
1057
1103
  }
1058
1104
  );
1059
1105
  DrawerCloseButton.displayName = "Drawer.CloseButton";
@@ -1152,7 +1198,7 @@ var drawerContentStyles = (0, import_class_variance_authority8.cva)(
1152
1198
  );
1153
1199
 
1154
1200
  // src/drawer/DrawerContent.tsx
1155
- var import_jsx_runtime11 = require("react/jsx-runtime");
1201
+ var import_jsx_runtime12 = require("react/jsx-runtime");
1156
1202
  var DrawerContent = ({
1157
1203
  className,
1158
1204
  size = "md",
@@ -1160,7 +1206,7 @@ var DrawerContent = ({
1160
1206
  onInteractOutside,
1161
1207
  ref,
1162
1208
  ...rest
1163
- }) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
1209
+ }) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
1164
1210
  import_radix_ui4.Dialog.Content,
1165
1211
  {
1166
1212
  "data-spark-component": "drawer-content",
@@ -1184,14 +1230,14 @@ DrawerContent.displayName = "Drawer.Content";
1184
1230
 
1185
1231
  // src/drawer/DrawerDescription.tsx
1186
1232
  var import_radix_ui5 = require("radix-ui");
1187
- var import_jsx_runtime12 = require("react/jsx-runtime");
1188
- var DrawerDescription = (props) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_radix_ui5.Dialog.Description, { "data-spark-component": "drawer-description", ...props });
1233
+ var import_jsx_runtime13 = require("react/jsx-runtime");
1234
+ var DrawerDescription = (props) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_radix_ui5.Dialog.Description, { "data-spark-component": "drawer-description", ...props });
1189
1235
  DrawerDescription.displayName = "Drawer.Description";
1190
1236
 
1191
1237
  // src/drawer/DrawerFooter.tsx
1192
1238
  var import_class_variance_authority9 = require("class-variance-authority");
1193
- var import_jsx_runtime13 = require("react/jsx-runtime");
1194
- var DrawerFooter = ({ className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
1239
+ var import_jsx_runtime14 = require("react/jsx-runtime");
1240
+ var DrawerFooter = ({ className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1195
1241
  "footer",
1196
1242
  {
1197
1243
  "data-spark-component": "drawer-footer",
@@ -1204,13 +1250,13 @@ DrawerFooter.displayName = "Drawer.Footer";
1204
1250
 
1205
1251
  // src/drawer/DrawerHeader.tsx
1206
1252
  var import_class_variance_authority10 = require("class-variance-authority");
1207
- var import_jsx_runtime14 = require("react/jsx-runtime");
1253
+ var import_jsx_runtime15 = require("react/jsx-runtime");
1208
1254
  var DrawerHeader = ({
1209
1255
  children,
1210
1256
  className,
1211
1257
  ref,
1212
1258
  ...rest
1213
- }) => /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
1259
+ }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1214
1260
  "header",
1215
1261
  {
1216
1262
  "data-spark-component": "drawer-header",
@@ -1225,8 +1271,8 @@ DrawerHeader.displayName = "Dialog.Header";
1225
1271
  // src/drawer/DrawerOverlay.tsx
1226
1272
  var import_class_variance_authority11 = require("class-variance-authority");
1227
1273
  var import_radix_ui6 = require("radix-ui");
1228
- var import_jsx_runtime15 = require("react/jsx-runtime");
1229
- var DrawerOverlay = ({ className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
1274
+ var import_jsx_runtime16 = require("react/jsx-runtime");
1275
+ var DrawerOverlay = ({ className, ref, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
1230
1276
  import_radix_ui6.Dialog.Overlay,
1231
1277
  {
1232
1278
  "data-spark-component": "drawer-overlay",
@@ -1245,15 +1291,15 @@ DrawerOverlay.displayName = "Drawer.Overlay";
1245
1291
 
1246
1292
  // src/drawer/DrawerPortal.tsx
1247
1293
  var import_radix_ui7 = require("radix-ui");
1248
- var import_jsx_runtime16 = require("react/jsx-runtime");
1249
- var DrawerPortal = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_radix_ui7.Dialog.Portal, { ...rest, children });
1294
+ var import_jsx_runtime17 = require("react/jsx-runtime");
1295
+ var DrawerPortal = ({ children, ...rest }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_radix_ui7.Dialog.Portal, { ...rest, children });
1250
1296
  DrawerPortal.displayName = "Drawer.Portal";
1251
1297
 
1252
1298
  // src/drawer/DrawerTitle.tsx
1253
1299
  var import_class_variance_authority12 = require("class-variance-authority");
1254
1300
  var import_radix_ui8 = require("radix-ui");
1255
- var import_jsx_runtime17 = require("react/jsx-runtime");
1256
- var DrawerTitle = ({ className, ref, ...others }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
1301
+ var import_jsx_runtime18 = require("react/jsx-runtime");
1302
+ var DrawerTitle = ({ className, ref, ...others }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
1257
1303
  import_radix_ui8.Dialog.Title,
1258
1304
  {
1259
1305
  "data-spark-component": "drawer-title",
@@ -1266,8 +1312,8 @@ DrawerTitle.displayName = "Drawer.Title";
1266
1312
 
1267
1313
  // src/drawer/DrawerTrigger.tsx
1268
1314
  var import_radix_ui9 = require("radix-ui");
1269
- var import_jsx_runtime18 = require("react/jsx-runtime");
1270
- var DrawerTrigger = (props) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_radix_ui9.Dialog.Trigger, { "data-spark-component": "drawer-trigger", ...props });
1315
+ var import_jsx_runtime19 = require("react/jsx-runtime");
1316
+ var DrawerTrigger = (props) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_radix_ui9.Dialog.Trigger, { "data-spark-component": "drawer-trigger", ...props });
1271
1317
  DrawerTrigger.displayName = "Drawer.Trigger";
1272
1318
 
1273
1319
  // src/drawer/index.ts