@jobber/components 8.21.1 → 8.23.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 (93) hide show
  1. package/Dialog.d.ts +1 -0
  2. package/Dialog.js +17 -0
  3. package/dist/BottomSheet-cjs.js +34 -7
  4. package/dist/BottomSheet-es.js +34 -8
  5. package/dist/CSPContext-cjs.js +69 -0
  6. package/dist/CSPContext-es.js +46 -0
  7. package/dist/Card/index.cjs +3 -0
  8. package/dist/Card/index.mjs +3 -0
  9. package/dist/ComboboxChipRemove-cjs.js +54 -211
  10. package/dist/ComboboxChipRemove-es.js +8 -164
  11. package/dist/DataDump/index.cjs +3 -0
  12. package/dist/DataDump/index.mjs +3 -0
  13. package/dist/Dialog/Dialog.d.ts +3 -0
  14. package/dist/Dialog/Dialog.types.d.ts +205 -0
  15. package/dist/Dialog/DialogBottomSheet.d.ts +28 -0
  16. package/dist/Dialog/DialogModal.d.ts +20 -0
  17. package/dist/Dialog/constants.d.ts +1 -0
  18. package/dist/Dialog/dialogComposableShared.d.ts +53 -0
  19. package/dist/Dialog/dialogReturnFocus.d.ts +43 -0
  20. package/dist/Dialog/index.cjs +33 -0
  21. package/dist/Dialog/index.d.ts +4 -0
  22. package/dist/Dialog/index.mjs +25 -0
  23. package/dist/DrawerDescription-cjs.js +410 -0
  24. package/dist/DrawerDescription-es.js +383 -0
  25. package/dist/DrawerTitle-cjs.js +116 -0
  26. package/dist/DrawerTitle-es.js +92 -0
  27. package/dist/InputNumberExperimental-cjs.js +24 -23
  28. package/dist/InputNumberExperimental-es.js +3 -2
  29. package/dist/InternalBackdrop-es.js +3 -3
  30. package/dist/Menu/index.cjs +3 -0
  31. package/dist/Menu/index.mjs +3 -0
  32. package/dist/Menu-cjs.js +6 -4
  33. package/dist/Menu-es.js +6 -4
  34. package/dist/MenuSubmenuTrigger-cjs.js +53 -103
  35. package/dist/MenuSubmenuTrigger-es.js +55 -103
  36. package/dist/NumberFieldInput-cjs.js +9 -9
  37. package/dist/NumberFieldInput-es.js +3 -3
  38. package/dist/Page/index.cjs +3 -0
  39. package/dist/Page/index.mjs +3 -0
  40. package/dist/ScrollAreaViewport-cjs.js +921 -960
  41. package/dist/ScrollAreaViewport-es.js +917 -958
  42. package/dist/SelectGroupLabel-cjs.js +1924 -0
  43. package/dist/SelectGroupLabel-es.js +1888 -0
  44. package/dist/SelectPrimitive-cjs.js +112 -0
  45. package/dist/SelectPrimitive-es.js +110 -0
  46. package/dist/ToolbarRootContext-cjs.js +35 -0
  47. package/dist/ToolbarRootContext-es.js +14 -0
  48. package/dist/dialogReturnFocus-cjs.js +427 -0
  49. package/dist/dialogReturnFocus-es.js +423 -0
  50. package/dist/docs/SelectPrimitive/SelectPrimitive.md +326 -0
  51. package/dist/docs/index.md +1 -0
  52. package/dist/floating-ui.react-dom-cjs.js +1 -0
  53. package/dist/floating-ui.react-dom-es.js +2 -2
  54. package/dist/floating-ui.utils.dom-es.js +1 -1
  55. package/dist/index.cjs +15 -7
  56. package/dist/index.d.mts +1 -0
  57. package/dist/index.d.ts +1 -0
  58. package/dist/index.mjs +12 -7
  59. package/dist/primitives/BottomSheet/BottomSheet.d.ts +19 -1
  60. package/dist/primitives/BottomSheet/BottomSheet.types.d.ts +8 -0
  61. package/dist/primitives/BottomSheet/index.cjs +2 -0
  62. package/dist/primitives/BottomSheet/index.d.ts +1 -1
  63. package/dist/primitives/BottomSheet/index.mjs +2 -1
  64. package/dist/primitives/ComboboxPrimitive/index.cjs +3 -1
  65. package/dist/primitives/ComboboxPrimitive/index.mjs +3 -1
  66. package/dist/primitives/InputNumberExperimental/index.cjs +2 -1
  67. package/dist/primitives/InputNumberExperimental/index.mjs +2 -1
  68. package/dist/primitives/SelectPrimitive/SelectPrimitive.d.ts +63 -0
  69. package/dist/primitives/SelectPrimitive/index.cjs +29 -0
  70. package/dist/primitives/SelectPrimitive/index.d.ts +2 -0
  71. package/dist/primitives/SelectPrimitive/index.mjs +23 -0
  72. package/dist/primitives/SelectPrimitive/types.d.ts +16 -0
  73. package/dist/primitives/index.cjs +9 -1
  74. package/dist/primitives/index.d.ts +1 -0
  75. package/dist/primitives/index.mjs +8 -2
  76. package/dist/primitives/mergeClassName.d.ts +12 -0
  77. package/dist/resolveAriaLabelledBy-cjs.js +195 -0
  78. package/dist/resolveAriaLabelledBy-es.js +162 -0
  79. package/dist/styles.css +685 -0
  80. package/dist/unstyledPrimitives/index.cjs +434 -259
  81. package/dist/unstyledPrimitives/index.d.ts +2 -0
  82. package/dist/unstyledPrimitives/index.mjs +425 -252
  83. package/dist/useButton-cjs.js +2 -0
  84. package/dist/useButton-es.js +3 -2
  85. package/dist/useCompositeListItem-es.js +4 -4
  86. package/dist/useLabel-cjs.js +3 -329
  87. package/dist/useLabel-es.js +4 -299
  88. package/dist/useLabelableId-cjs.js +332 -0
  89. package/dist/useLabelableId-es.js +300 -0
  90. package/dist/useRenderElement-cjs.js +3 -0
  91. package/dist/useRenderElement-es.js +4 -1
  92. package/dist/utils/meta/meta.json +11 -1
  93. package/package.json +2 -2
package/Dialog.d.ts ADDED
@@ -0,0 +1 @@
1
+ export * from "./dist/Dialog";
package/Dialog.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true,
5
+ });
6
+
7
+ var Dialog = require("./dist/Dialog");
8
+
9
+ Object.keys(Dialog).forEach(function(key) {
10
+ if (key === "default" || key === "__esModule") return;
11
+ Object.defineProperty(exports, key, {
12
+ enumerable: true,
13
+ get: function get() {
14
+ return Dialog[key];
15
+ },
16
+ });
17
+ });
@@ -35,6 +35,15 @@ function resolveBottomSheetTriggerRender({ children, render, }) {
35
35
  React.createElement(Button.Button.Label, null, children)));
36
36
  }
37
37
 
38
+ /**
39
+ * Whether `BottomSheet.Popup` renders its own built-in scroll area (with the
40
+ * bottom fade). Defaults to `true` — the popup wraps its `children` in a
41
+ * scrollable viewport. A consumer that manages its own scroll region (e.g.
42
+ * `Dialog`, which pins a header/footer outside a single scroll area) provides
43
+ * `false` to opt out. Mirrors how `Dialog.Body` decides whether to wrap itself
44
+ * via context rather than a prop.
45
+ */
46
+ const BottomSheetScrollAreaContext = React.createContext(true);
38
47
  function BottomSheetTrigger(_a) {
39
48
  var { children, render, className } = _a, triggerProps = tslib_es6.__rest(_a, ["children", "render", "className"]);
40
49
  return (React.createElement(ScrollAreaViewport.DrawerTrigger, Object.assign({}, triggerProps, { className: className, render: resolveBottomSheetTriggerRender({ children, render }) })));
@@ -50,14 +59,30 @@ function BottomSheetRoot(_a) {
50
59
  }
51
60
  function BottomSheetPopup(_a) {
52
61
  var { children, className, initialFocus, finalFocus, ref } = _a, popupProps = tslib_es6.__rest(_a, ["children", "className", "initialFocus", "finalFocus", "ref"]);
62
+ // Defaults to wrapping; a consumer managing its own scroll region provides
63
+ // `BottomSheetScrollAreaContext` = false.
64
+ const renderScrollArea = React.useContext(BottomSheetScrollAreaContext);
53
65
  return (React.createElement(ScrollAreaViewport.DrawerPortal, null,
54
- React.createElement(ScrollAreaViewport.DrawerBackdrop, { forceRender: true, className: styles.backdrop }),
55
- React.createElement(ScrollAreaViewport.DrawerPopup, Object.assign({}, popupProps, { ref: ref, className: classnames(styles.popup, className), initialFocus: initialFocus, finalFocus: finalFocus }),
56
- React.createElement(ScrollAreaViewport.ScrollAreaRoot, { className: styles.scrollRoot },
57
- React.createElement(ScrollAreaViewport.ScrollAreaViewport, { className: styles.scrollArea, "data-testid": "ATL-BottomSheet-ScrollArea",
58
- // BaseUI sets overflow: scroll in the style prop by default. This is to override that because adding it to the className doesn't work.
59
- style: { overflow: "auto" } }, children),
60
- React.createElement("div", { "aria-hidden": "true", className: styles.bottomFade, "data-testid": "ATL-BottomSheet-Fade" })))));
66
+ React.createElement(ScrollAreaViewport.DrawerBackdrop, { forceRender: true, className: styles.backdrop, "data-testid": "ATL-BottomSheet-Backdrop" }),
67
+ React.createElement(ScrollAreaViewport.DrawerPopup, Object.assign({}, popupProps, { ref: ref, className: classnames(styles.popup, className), initialFocus: initialFocus, finalFocus: finalFocus }), !renderScrollArea ? (
68
+ // The consumer manages its own scroll region (e.g. Dialog pins a
69
+ // header/footer outside a single scroll area) — often by composing
70
+ // `BottomSheet.ScrollArea` itself.
71
+ children) : (React.createElement(BottomSheetScrollArea, null, children)))));
72
+ }
73
+ /**
74
+ * The sheet's scroll region: a styled BaseUI `ScrollArea` (native scrollbar) with
75
+ * a bottom fade that hints at more content while the viewport can scroll further.
76
+ * `BottomSheet.Popup` renders this automatically unless a consumer opts out via
77
+ * `BottomSheetScrollAreaContext` and composes it (or its own scroll region)
78
+ * directly.
79
+ */
80
+ function BottomSheetScrollArea({ children, className, style, }) {
81
+ return (React.createElement(ScrollAreaViewport.ScrollAreaRoot, { className: classnames(styles.scrollRoot, className), style: style },
82
+ React.createElement(ScrollAreaViewport.ScrollAreaViewport, { className: styles.scrollArea, "data-testid": "ATL-BottomSheet-ScrollArea",
83
+ // BaseUI sets overflow: scroll in the style prop by default. This is to override that because adding it to the className doesn't work.
84
+ style: { overflow: "auto" } }, children),
85
+ React.createElement("div", { "aria-hidden": "true", className: styles.bottomFade, "data-testid": "ATL-BottomSheet-Fade" })));
61
86
  }
62
87
  function BottomSheetContent(_a) {
63
88
  var { children, className, ref } = _a, contentProps = tslib_es6.__rest(_a, ["children", "className", "ref"]);
@@ -74,6 +99,8 @@ const BottomSheet = Object.assign(BottomSheetComponent, {
74
99
  Trigger: BottomSheetTrigger,
75
100
  Popup: BottomSheetPopup,
76
101
  Content: BottomSheetContent,
102
+ ScrollArea: BottomSheetScrollArea,
77
103
  });
78
104
 
79
105
  exports.BottomSheet = BottomSheet;
106
+ exports.BottomSheetScrollAreaContext = BottomSheetScrollAreaContext;
@@ -33,6 +33,15 @@ function resolveBottomSheetTriggerRender({ children, render, }) {
33
33
  React__default.createElement(Button.Label, null, children)));
34
34
  }
35
35
 
36
+ /**
37
+ * Whether `BottomSheet.Popup` renders its own built-in scroll area (with the
38
+ * bottom fade). Defaults to `true` — the popup wraps its `children` in a
39
+ * scrollable viewport. A consumer that manages its own scroll region (e.g.
40
+ * `Dialog`, which pins a header/footer outside a single scroll area) provides
41
+ * `false` to opt out. Mirrors how `Dialog.Body` decides whether to wrap itself
42
+ * via context rather than a prop.
43
+ */
44
+ const BottomSheetScrollAreaContext = React__default.createContext(true);
36
45
  function BottomSheetTrigger(_a) {
37
46
  var { children, render, className } = _a, triggerProps = __rest(_a, ["children", "render", "className"]);
38
47
  return (React__default.createElement(DrawerTrigger, Object.assign({}, triggerProps, { className: className, render: resolveBottomSheetTriggerRender({ children, render }) })));
@@ -48,14 +57,30 @@ function BottomSheetRoot(_a) {
48
57
  }
49
58
  function BottomSheetPopup(_a) {
50
59
  var { children, className, initialFocus, finalFocus, ref } = _a, popupProps = __rest(_a, ["children", "className", "initialFocus", "finalFocus", "ref"]);
60
+ // Defaults to wrapping; a consumer managing its own scroll region provides
61
+ // `BottomSheetScrollAreaContext` = false.
62
+ const renderScrollArea = React__default.useContext(BottomSheetScrollAreaContext);
51
63
  return (React__default.createElement(DrawerPortal, null,
52
- React__default.createElement(DrawerBackdrop, { forceRender: true, className: styles.backdrop }),
53
- React__default.createElement(DrawerPopup, Object.assign({}, popupProps, { ref: ref, className: classnames(styles.popup, className), initialFocus: initialFocus, finalFocus: finalFocus }),
54
- React__default.createElement(ScrollAreaRoot, { className: styles.scrollRoot },
55
- React__default.createElement(ScrollAreaViewport, { className: styles.scrollArea, "data-testid": "ATL-BottomSheet-ScrollArea",
56
- // BaseUI sets overflow: scroll in the style prop by default. This is to override that because adding it to the className doesn't work.
57
- style: { overflow: "auto" } }, children),
58
- React__default.createElement("div", { "aria-hidden": "true", className: styles.bottomFade, "data-testid": "ATL-BottomSheet-Fade" })))));
64
+ React__default.createElement(DrawerBackdrop, { forceRender: true, className: styles.backdrop, "data-testid": "ATL-BottomSheet-Backdrop" }),
65
+ React__default.createElement(DrawerPopup, Object.assign({}, popupProps, { ref: ref, className: classnames(styles.popup, className), initialFocus: initialFocus, finalFocus: finalFocus }), !renderScrollArea ? (
66
+ // The consumer manages its own scroll region (e.g. Dialog pins a
67
+ // header/footer outside a single scroll area) — often by composing
68
+ // `BottomSheet.ScrollArea` itself.
69
+ children) : (React__default.createElement(BottomSheetScrollArea, null, children)))));
70
+ }
71
+ /**
72
+ * The sheet's scroll region: a styled BaseUI `ScrollArea` (native scrollbar) with
73
+ * a bottom fade that hints at more content while the viewport can scroll further.
74
+ * `BottomSheet.Popup` renders this automatically unless a consumer opts out via
75
+ * `BottomSheetScrollAreaContext` and composes it (or its own scroll region)
76
+ * directly.
77
+ */
78
+ function BottomSheetScrollArea({ children, className, style, }) {
79
+ return (React__default.createElement(ScrollAreaRoot, { className: classnames(styles.scrollRoot, className), style: style },
80
+ React__default.createElement(ScrollAreaViewport, { className: styles.scrollArea, "data-testid": "ATL-BottomSheet-ScrollArea",
81
+ // BaseUI sets overflow: scroll in the style prop by default. This is to override that because adding it to the className doesn't work.
82
+ style: { overflow: "auto" } }, children),
83
+ React__default.createElement("div", { "aria-hidden": "true", className: styles.bottomFade, "data-testid": "ATL-BottomSheet-Fade" })));
59
84
  }
60
85
  function BottomSheetContent(_a) {
61
86
  var { children, className, ref } = _a, contentProps = __rest(_a, ["children", "className", "ref"]);
@@ -72,6 +97,7 @@ const BottomSheet = Object.assign(BottomSheetComponent, {
72
97
  Trigger: BottomSheetTrigger,
73
98
  Popup: BottomSheetPopup,
74
99
  Content: BottomSheetContent,
100
+ ScrollArea: BottomSheetScrollArea,
75
101
  });
76
102
 
77
- export { BottomSheet as B };
103
+ export { BottomSheetScrollAreaContext as B, BottomSheet as a };
@@ -0,0 +1,69 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+
6
+ function _interopNamespaceDefault(e) {
7
+ var n = Object.create(null);
8
+ if (e) {
9
+ Object.keys(e).forEach(function (k) {
10
+ if (k !== 'default') {
11
+ var d = Object.getOwnPropertyDescriptor(e, k);
12
+ Object.defineProperty(n, k, d.get ? d : {
13
+ enumerable: true,
14
+ get: function () { return e[k]; }
15
+ });
16
+ }
17
+ });
18
+ }
19
+ n.default = e;
20
+ return Object.freeze(n);
21
+ }
22
+
23
+ var React__namespace = /*#__PURE__*/_interopNamespaceDefault(React);
24
+
25
+ const ARROW_UP = 'ArrowUp';
26
+ const ARROW_DOWN = 'ArrowDown';
27
+ const ARROW_LEFT = 'ArrowLeft';
28
+ const ARROW_RIGHT = 'ArrowRight';
29
+ const HOME = 'Home';
30
+ const END = 'End';
31
+ const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
32
+ const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
33
+ const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
34
+ new Set([...ARROW_KEYS, HOME, END]);
35
+ const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
36
+
37
+ const DISABLE_SCROLLBAR_CLASS_NAME = 'base-ui-disable-scrollbar';
38
+ const styleDisableScrollbar = {
39
+ className: DISABLE_SCROLLBAR_CLASS_NAME,
40
+ getElement(nonce) {
41
+ return /*#__PURE__*/jsxRuntime.jsx("style", {
42
+ nonce: nonce,
43
+ href: DISABLE_SCROLLBAR_CLASS_NAME,
44
+ precedence: "base-ui:low",
45
+ children: `.${DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.${DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}`
46
+ });
47
+ }
48
+ };
49
+ if (process.env.NODE_ENV !== "production") styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement";
50
+
51
+ /**
52
+ * @internal
53
+ */
54
+ const CSPContext = /*#__PURE__*/React__namespace.createContext(undefined);
55
+ if (process.env.NODE_ENV !== "production") CSPContext.displayName = "CSPContext";
56
+ const DEFAULT_CSP_CONTEXT_VALUE = {
57
+ disableStyleElements: false
58
+ };
59
+
60
+ /**
61
+ * @internal
62
+ */
63
+ function useCSPContext() {
64
+ return React__namespace.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
65
+ }
66
+
67
+ exports.COMPOSITE_KEYS = COMPOSITE_KEYS;
68
+ exports.styleDisableScrollbar = styleDisableScrollbar;
69
+ exports.useCSPContext = useCSPContext;
@@ -0,0 +1,46 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import * as React from 'react';
3
+
4
+ const ARROW_UP = 'ArrowUp';
5
+ const ARROW_DOWN = 'ArrowDown';
6
+ const ARROW_LEFT = 'ArrowLeft';
7
+ const ARROW_RIGHT = 'ArrowRight';
8
+ const HOME = 'Home';
9
+ const END = 'End';
10
+ const HORIZONTAL_KEYS = new Set([ARROW_LEFT, ARROW_RIGHT]);
11
+ const VERTICAL_KEYS = new Set([ARROW_UP, ARROW_DOWN]);
12
+ const ARROW_KEYS = new Set([...HORIZONTAL_KEYS, ...VERTICAL_KEYS]);
13
+ new Set([...ARROW_KEYS, HOME, END]);
14
+ const COMPOSITE_KEYS = new Set([ARROW_UP, ARROW_DOWN, ARROW_LEFT, ARROW_RIGHT, HOME, END]);
15
+
16
+ const DISABLE_SCROLLBAR_CLASS_NAME = 'base-ui-disable-scrollbar';
17
+ const styleDisableScrollbar = {
18
+ className: DISABLE_SCROLLBAR_CLASS_NAME,
19
+ getElement(nonce) {
20
+ return /*#__PURE__*/jsx("style", {
21
+ nonce: nonce,
22
+ href: DISABLE_SCROLLBAR_CLASS_NAME,
23
+ precedence: "base-ui:low",
24
+ children: `.${DISABLE_SCROLLBAR_CLASS_NAME}{scrollbar-width:none}.${DISABLE_SCROLLBAR_CLASS_NAME}::-webkit-scrollbar{display:none}`
25
+ });
26
+ }
27
+ };
28
+ if (process.env.NODE_ENV !== "production") styleDisableScrollbar.getElement.displayName = "styleDisableScrollbar.getElement";
29
+
30
+ /**
31
+ * @internal
32
+ */
33
+ const CSPContext = /*#__PURE__*/React.createContext(undefined);
34
+ if (process.env.NODE_ENV !== "production") CSPContext.displayName = "CSPContext";
35
+ const DEFAULT_CSP_CONTEXT_VALUE = {
36
+ disableStyleElements: false
37
+ };
38
+
39
+ /**
40
+ * @internal
41
+ */
42
+ function useCSPContext() {
43
+ return React.useContext(CSPContext) ?? DEFAULT_CSP_CONTEXT_VALUE;
44
+ }
45
+
46
+ export { COMPOSITE_KEYS as C, styleDisableScrollbar as s, useCSPContext as u };
@@ -27,11 +27,14 @@ require('../BottomSheet-cjs.js');
27
27
  require('../ScrollAreaViewport-cjs.js');
28
28
  require('../InternalBackdrop-cjs.js');
29
29
  require('../useButton-cjs.js');
30
+ require('../CSPContext-cjs.js');
30
31
  require('../clamp-cjs.js');
31
32
  require('../OverlaySeparator-cjs.js');
32
33
  require('../Separator-cjs.js');
34
+ require('../DrawerTitle-cjs.js');
33
35
  require('../MenuSubmenuTrigger-cjs.js');
34
36
  require('../useCompositeListItem-cjs.js');
37
+ require('../ToolbarRootContext-cjs.js');
35
38
 
36
39
 
37
40
 
@@ -25,8 +25,11 @@ import '../BottomSheet-es.js';
25
25
  import '../ScrollAreaViewport-es.js';
26
26
  import '../InternalBackdrop-es.js';
27
27
  import '../useButton-es.js';
28
+ import '../CSPContext-es.js';
28
29
  import '../clamp-es.js';
29
30
  import '../OverlaySeparator-es.js';
30
31
  import '../Separator-es.js';
32
+ import '../DrawerTitle-es.js';
31
33
  import '../MenuSubmenuTrigger-es.js';
32
34
  import '../useCompositeListItem-es.js';
35
+ import '../ToolbarRootContext-es.js';