@bolio-ui/core 3.0.0-alpha.1 → 3.0.0-alpha.2

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 (130) hide show
  1. package/dist/ContextMenu/index.js +3 -3
  2. package/dist/CssBaseline/index.js +2 -2
  3. package/dist/DateRangePicker/index.js +2 -2
  4. package/dist/ImageZoom/ImageZoom.d.ts +14 -0
  5. package/dist/ImageZoom/index.d.ts +3 -0
  6. package/dist/ImageZoom/index.js +17 -0
  7. package/dist/Menu/index.js +2 -2
  8. package/dist/Splitter/Splitter.d.ts +14 -0
  9. package/dist/Splitter/SplitterContext.d.ts +6 -0
  10. package/dist/Splitter/SplitterPanel.d.ts +13 -0
  11. package/dist/Splitter/index.d.ts +9 -0
  12. package/dist/Splitter/index.js +14 -0
  13. package/dist/Table/Table.d.ts +11 -1
  14. package/dist/Table/TableBody.d.ts +8 -2
  15. package/dist/Table/TableColumn.d.ts +2 -0
  16. package/dist/Table/TableHead.d.ts +9 -1
  17. package/dist/Table/TableSelectBox.d.ts +9 -0
  18. package/dist/Table/TableTypes.d.ts +8 -0
  19. package/dist/Table/index.d.ts +1 -1
  20. package/dist/Table/index.js +2 -2
  21. package/dist/Tour/Tour.d.ts +26 -0
  22. package/dist/Tour/index.d.ts +3 -0
  23. package/dist/Tour/index.js +23 -0
  24. package/dist/{chunk-AVO2SK2I.js → chunk-3S6G7WGK.js} +2 -2
  25. package/dist/{chunk-GYFW5NLU.js → chunk-BHQRX76X.js} +22 -4
  26. package/dist/chunk-FFEAKF3A.js +220 -0
  27. package/dist/{chunk-XLPOECCE.js → chunk-FL6J36B7.js} +3 -2
  28. package/dist/chunk-REWKR7S3.js +109 -0
  29. package/dist/chunk-STYC6O24.js +232 -0
  30. package/dist/{chunk-TDJGMSGT.js → chunk-WIIDIZYK.js} +3 -1
  31. package/dist/{chunk-TKICX5R6.js → chunk-ZNDN2VPZ.js} +225 -33
  32. package/dist/css/ButtonDropdown-ButtonDropdownItem.css +0 -1
  33. package/dist/css/ButtonGroup.css +0 -1
  34. package/dist/css/Calendar.css +0 -1
  35. package/dist/css/Carousel.css +0 -1
  36. package/dist/css/ColorInput.css +0 -2
  37. package/dist/css/ColorPicker.css +0 -3
  38. package/dist/css/Combobox.css +0 -2
  39. package/dist/css/DatePicker.css +0 -3
  40. package/dist/css/DateRangePicker.css +6 -3
  41. package/dist/css/Dropzone.css +0 -3
  42. package/dist/css/Fieldset-FieldsetGroup.css +0 -1
  43. package/dist/css/ImageZoom.css +93 -0
  44. package/dist/css/Input.css +0 -1
  45. package/dist/css/Menu-MenuList.css +0 -1
  46. package/dist/css/NumberInput.css +0 -1
  47. package/dist/css/PinInput.css +0 -1
  48. package/dist/css/Radio.css +0 -1
  49. package/dist/css/SegmentedControl.css +0 -1
  50. package/dist/css/Select-SelectDropdown.css +0 -1
  51. package/dist/css/Select-SelectOption.css +0 -1
  52. package/dist/css/Select.css +0 -1
  53. package/dist/css/Splitter.css +77 -0
  54. package/dist/css/Table-TableBody.css +10 -0
  55. package/dist/css/Table-TableHead.css +41 -0
  56. package/dist/css/Table-TableSelectBox.css +11 -0
  57. package/dist/css/TagsInput.css +0 -2
  58. package/dist/css/Textarea.css +0 -1
  59. package/dist/css/Toggle.css +0 -1
  60. package/dist/css/Tour.css +81 -0
  61. package/dist/css/use-toasts-toast-item.css +0 -1
  62. package/dist/index.d.ts +7 -1
  63. package/dist/index.js +31 -19
  64. package/dist/styles.css +3227 -2939
  65. package/esm/ContextMenu/index.js +2 -2
  66. package/esm/CssBaseline/index.js +1 -1
  67. package/esm/DateRangePicker/index.js +1 -1
  68. package/esm/ImageZoom/ImageZoom.d.ts +14 -0
  69. package/esm/ImageZoom/index.d.ts +3 -0
  70. package/esm/ImageZoom/index.js +17 -0
  71. package/esm/Menu/index.js +1 -1
  72. package/esm/Splitter/Splitter.d.ts +14 -0
  73. package/esm/Splitter/SplitterContext.d.ts +6 -0
  74. package/esm/Splitter/SplitterPanel.d.ts +13 -0
  75. package/esm/Splitter/index.d.ts +9 -0
  76. package/esm/Splitter/index.js +14 -0
  77. package/esm/Table/Table.d.ts +11 -1
  78. package/esm/Table/TableBody.d.ts +8 -2
  79. package/esm/Table/TableColumn.d.ts +2 -0
  80. package/esm/Table/TableHead.d.ts +9 -1
  81. package/esm/Table/TableSelectBox.d.ts +9 -0
  82. package/esm/Table/TableTypes.d.ts +8 -0
  83. package/esm/Table/index.d.ts +1 -1
  84. package/esm/Table/index.js +1 -1
  85. package/esm/Tour/Tour.d.ts +26 -0
  86. package/esm/Tour/index.d.ts +3 -0
  87. package/esm/Tour/index.js +23 -0
  88. package/esm/{chunk-AVO2SK2I.js → chunk-3S6G7WGK.js} +1 -1
  89. package/esm/{chunk-GYFW5NLU.js → chunk-BHQRX76X.js} +22 -4
  90. package/esm/chunk-FFEAKF3A.js +220 -0
  91. package/esm/{chunk-XLPOECCE.js → chunk-FL6J36B7.js} +3 -2
  92. package/esm/chunk-REWKR7S3.js +109 -0
  93. package/esm/chunk-STYC6O24.js +232 -0
  94. package/esm/{chunk-TDJGMSGT.js → chunk-WIIDIZYK.js} +3 -1
  95. package/esm/chunk-ZNDN2VPZ.js +543 -0
  96. package/esm/css/ButtonDropdown-ButtonDropdownItem.css +0 -1
  97. package/esm/css/ButtonGroup.css +0 -1
  98. package/esm/css/Calendar.css +0 -1
  99. package/esm/css/Carousel.css +0 -1
  100. package/esm/css/ColorInput.css +0 -2
  101. package/esm/css/ColorPicker.css +0 -3
  102. package/esm/css/Combobox.css +0 -2
  103. package/esm/css/DatePicker.css +0 -3
  104. package/esm/css/DateRangePicker.css +6 -3
  105. package/esm/css/Dropzone.css +0 -3
  106. package/esm/css/Fieldset-FieldsetGroup.css +0 -1
  107. package/esm/css/ImageZoom.css +93 -0
  108. package/esm/css/Input.css +0 -1
  109. package/esm/css/Menu-MenuList.css +0 -1
  110. package/esm/css/NumberInput.css +0 -1
  111. package/esm/css/PinInput.css +0 -1
  112. package/esm/css/Radio.css +0 -1
  113. package/esm/css/SegmentedControl.css +0 -1
  114. package/esm/css/Select-SelectDropdown.css +0 -1
  115. package/esm/css/Select-SelectOption.css +0 -1
  116. package/esm/css/Select.css +0 -1
  117. package/esm/css/Splitter.css +77 -0
  118. package/esm/css/Table-TableBody.css +10 -0
  119. package/esm/css/Table-TableHead.css +41 -0
  120. package/esm/css/Table-TableSelectBox.css +11 -0
  121. package/esm/css/TagsInput.css +0 -2
  122. package/esm/css/Textarea.css +0 -1
  123. package/esm/css/Toggle.css +0 -1
  124. package/esm/css/Tour.css +81 -0
  125. package/esm/css/use-toasts-toast-item.css +0 -1
  126. package/esm/index.d.ts +7 -1
  127. package/esm/index.js +36 -24
  128. package/esm/styles.css +2987 -2699
  129. package/package.json +1 -1
  130. package/esm/chunk-TKICX5R6.js +0 -351
@@ -0,0 +1,220 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+
4
+ var _chunkMAICNLTYjs = require('./chunk-MAICNLTY.js');
5
+
6
+
7
+ var _chunkV5I4ORQQjs = require('./chunk-V5I4ORQQ.js');
8
+
9
+
10
+
11
+ var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
12
+
13
+ // core/Splitter/Splitter.tsx
14
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
15
+
16
+ // core/Splitter/SplitterContext.ts
17
+
18
+ var SplitterPanelContext = _react2.default.createContext(null);
19
+
20
+ // css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/Splitter/Splitter.module.css.bolio-css-module-source
21
+ var Splitter_module_css_default = { "splitter": "Splitter-module_splitter__ZxGeO", "horizontal": "Splitter-module_horizontal__1LuP6", "vertical": "Splitter-module_vertical__APNTT", "panel": "Splitter-module_panel__UyXwt", "handle": "Splitter-module_handle__zkBUq" };
22
+
23
+ // core/Splitter/Splitter.tsx
24
+ var _jsxruntime = require('react/jsx-runtime');
25
+ var initialSizes = (panels) => {
26
+ const given = panels.map((panel) => panel.props.defaultSize);
27
+ const used = given.reduce((sum, size) => sum + (size != null ? size : 0), 0);
28
+ const open = given.filter((size) => size === void 0).length;
29
+ return given.map(
30
+ (size) => size === void 0 ? Math.max(0, 100 - used) / open : size
31
+ );
32
+ };
33
+ var SplitterComponent = _react2.default.forwardRef(
34
+ ({
35
+ direction = "horizontal",
36
+ onResize,
37
+ handleLabel = "Resize",
38
+ className = "",
39
+ children,
40
+ style,
41
+ ...props
42
+ }, ref) => {
43
+ const theme = _chunkV5I4ORQQjs.use_theme_default.call(void 0, );
44
+ const { SCALES } = _chunkMAICNLTYjs.use_scale_default.call(void 0, );
45
+ const baseId = _react.useId.call(void 0, );
46
+ const panels = _react2.default.Children.toArray(children).filter(
47
+ _react2.default.isValidElement
48
+ );
49
+ const horizontal = direction === "horizontal";
50
+ const [sizes, setSizes] = _react.useState.call(void 0, () => initialSizes(panels));
51
+ if (sizes.length !== panels.length) setSizes(initialSizes(panels));
52
+ const elements = _react.useRef.call(void 0, []);
53
+ const drag = _react.useRef.call(void 0, void 0);
54
+ const minOf = (index) => {
55
+ var _a;
56
+ return (_a = panels[index].props.minSize) != null ? _a : 0;
57
+ };
58
+ const maxOf = (index) => {
59
+ var _a;
60
+ return (_a = panels[index].props.maxSize) != null ? _a : 100;
61
+ };
62
+ const move = (index, delta, from) => {
63
+ const [a, b] = [from[index], from[index + 1]];
64
+ const low = Math.max(minOf(index) - a, b - maxOf(index + 1));
65
+ const high = Math.min(maxOf(index) - a, b - minOf(index + 1));
66
+ const applied = Math.min(Math.max(delta, low), high);
67
+ if (!applied && sizes[index] === a) return;
68
+ const next = [...from];
69
+ next[index] = a + applied;
70
+ next[index + 1] = b - applied;
71
+ setSizes(next);
72
+ if (onResize) onResize(next);
73
+ };
74
+ const pointerDown = (event) => {
75
+ var _a, _b;
76
+ (_b = (_a = event.currentTarget).setPointerCapture) == null ? void 0 : _b.call(_a, event.pointerId);
77
+ const room = elements.current.reduce((sum, element) => {
78
+ const rect = element == null ? void 0 : element.getBoundingClientRect();
79
+ return sum + (rect ? horizontal ? rect.width : rect.height : 0);
80
+ }, 0);
81
+ drag.current = {
82
+ from: horizontal ? event.clientX : event.clientY,
83
+ sizes: [...sizes],
84
+ room
85
+ };
86
+ };
87
+ const pointerMove = (event, index) => {
88
+ var _a, _b;
89
+ const start = drag.current;
90
+ if (!start || !start.room) return;
91
+ if (!((_b = (_a = event.currentTarget).hasPointerCapture) == null ? void 0 : _b.call(_a, event.pointerId))) return;
92
+ const travelled = (horizontal ? event.clientX : event.clientY) - start.from;
93
+ move(index, travelled / start.room * 100, start.sizes);
94
+ };
95
+ const keyDown = (event, index) => {
96
+ const step = event.shiftKey ? 10 : 1;
97
+ const [less, more] = horizontal ? ["ArrowLeft", "ArrowRight"] : ["ArrowUp", "ArrowDown"];
98
+ const deltas = {
99
+ [less]: -step,
100
+ [more]: step,
101
+ Home: -100,
102
+ End: 100
103
+ };
104
+ if (!(event.key in deltas)) return;
105
+ event.preventDefault();
106
+ move(index, deltas[event.key], sizes);
107
+ };
108
+ const template = sizes.map((size) => `minmax(0, ${size}fr)`).join(" auto ");
109
+ const splitterStyle = {
110
+ "--splitter-template": template,
111
+ width: SCALES.width(1, "100%"),
112
+ height: SCALES.height(1, "100%"),
113
+ margin: `${SCALES.mt(0)} ${SCALES.mr(0)} ${SCALES.mb(0)} ${SCALES.ml(0)}`,
114
+ "--splitter-line": theme.palette.border,
115
+ "--splitter-active": theme.palette.primary,
116
+ ...style
117
+ };
118
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
119
+ "div",
120
+ {
121
+ ref,
122
+ className: _chunk5KUROAEPjs.use_classes_default.call(void 0, Splitter_module_css_default.splitter, className, {
123
+ [Splitter_module_css_default.horizontal]: horizontal,
124
+ [Splitter_module_css_default.vertical]: !horizontal
125
+ }),
126
+ ...props,
127
+ style: splitterStyle,
128
+ children: panels.map((panel, index) => {
129
+ var _a;
130
+ const [a, b] = [sizes[index], sizes[index + 1]];
131
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _react2.default.Fragment, { children: [
132
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
133
+ SplitterPanelContext.Provider,
134
+ {
135
+ value: {
136
+ id: `${baseId}-panel-${index}`,
137
+ setElement: (element) => {
138
+ elements.current[index] = element;
139
+ }
140
+ },
141
+ children: panel
142
+ }
143
+ ),
144
+ index < panels.length - 1 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
145
+ "div",
146
+ {
147
+ role: "separator",
148
+ tabIndex: 0,
149
+ "aria-label": handleLabel,
150
+ "aria-orientation": horizontal ? "vertical" : "horizontal",
151
+ "aria-controls": `${baseId}-panel-${index}`,
152
+ "aria-valuenow": Math.round(a),
153
+ "aria-valuemin": Math.round(
154
+ Math.max(minOf(index), a + b - maxOf(index + 1))
155
+ ),
156
+ "aria-valuemax": Math.round(
157
+ Math.min(maxOf(index), a + b - minOf(index + 1))
158
+ ),
159
+ className: _chunk5KUROAEPjs.joinClasses.call(void 0, Splitter_module_css_default.handle),
160
+ onPointerDown: pointerDown,
161
+ onPointerMove: (event) => pointerMove(event, index),
162
+ onPointerUp: () => drag.current = void 0,
163
+ onPointerCancel: () => drag.current = void 0,
164
+ onKeyDown: (event) => keyDown(event, index)
165
+ }
166
+ )
167
+ ] }, (_a = panel.key) != null ? _a : index);
168
+ })
169
+ }
170
+ );
171
+ }
172
+ );
173
+ SplitterComponent.displayName = "BolioUISplitter";
174
+ var Splitter = _chunkMAICNLTYjs.with_scale_default.call(void 0, SplitterComponent);
175
+ var Splitter_default = Splitter;
176
+
177
+ // core/Splitter/SplitterPanel.tsx
178
+
179
+
180
+ var SplitterPanel = _react2.default.forwardRef(
181
+ ({
182
+ // read by the Splitter
183
+ /* eslint-disable @typescript-eslint/no-unused-vars */
184
+ defaultSize,
185
+ minSize,
186
+ maxSize,
187
+ /* eslint-enable @typescript-eslint/no-unused-vars */
188
+ className = "",
189
+ children,
190
+ style,
191
+ ...props
192
+ }, ref) => {
193
+ const config = _react.useContext.call(void 0, SplitterPanelContext);
194
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
195
+ "div",
196
+ {
197
+ ref: (element) => {
198
+ config == null ? void 0 : config.setElement(element);
199
+ if (typeof ref === "function") ref(element);
200
+ else if (ref) ref.current = element;
201
+ },
202
+ id: config == null ? void 0 : config.id,
203
+ className: _chunk5KUROAEPjs.use_classes_default.call(void 0, Splitter_module_css_default.panel, className),
204
+ ...props,
205
+ style,
206
+ children
207
+ }
208
+ );
209
+ }
210
+ );
211
+ SplitterPanel.displayName = "BolioUISplitterPanel";
212
+ var SplitterPanel_default = SplitterPanel;
213
+
214
+ // core/Splitter/index.ts
215
+ Splitter_default.Panel = SplitterPanel_default;
216
+ var Splitter_default2 = Splitter_default;
217
+
218
+
219
+
220
+ exports.Splitter_default = Splitter_default2;
@@ -64,10 +64,11 @@ var MenuList = ({
64
64
  };
65
65
  _react.useEffect.call(void 0, () => {
66
66
  var _a, _b;
67
- if (focus === "list") return (_a = listRef.current) == null ? void 0 : _a.focus();
67
+ const options = { preventScroll: true };
68
+ if (focus === "list") return (_a = listRef.current) == null ? void 0 : _a.focus(options);
68
69
  const items = getItems();
69
70
  const target = focus === "first" ? items[0] : items[items.length - 1];
70
- (_b = target != null ? target : listRef.current) == null ? void 0 : _b.focus();
71
+ (_b = target != null ? target : listRef.current) == null ? void 0 : _b.focus(options);
71
72
  }, []);
72
73
  const typeahead = (key, items, index) => {
73
74
  const now = Date.now();
@@ -0,0 +1,109 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkTWIOSRRPjs = require('./chunk-TWIOSRRP.js');
4
+
5
+
6
+ var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
7
+
8
+ // core/ImageZoom/ImageZoom.tsx
9
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
10
+
11
+ // css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/ImageZoom/ImageZoom.module.css.bolio-css-module-source
12
+ var ImageZoom_module_css_default = { "trigger": "ImageZoom-module_trigger__-42Bz", "dialog": "ImageZoom-module_dialog__TjA9E", "figure": "ImageZoom-module_figure__YIBq1", "zoomed": "ImageZoom-module_zoomed__7gfCP", "caption": "ImageZoom-module_caption__6SFRA", "close": "ImageZoom-module_close__iEiwJ" };
13
+
14
+ // core/ImageZoom/ImageZoom.tsx
15
+ var _jsxruntime = require('react/jsx-runtime');
16
+ var ImageZoom = _react2.default.forwardRef(
17
+ ({
18
+ src,
19
+ alt,
20
+ zoomSrc,
21
+ caption,
22
+ closeLabel = "Close",
23
+ className = "",
24
+ ...imageProps
25
+ }, ref) => {
26
+ const [open, setOpen] = _react.useState.call(void 0, false);
27
+ const dialog = _react.useRef.call(void 0, null);
28
+ _react.useEffect.call(void 0, () => {
29
+ var _a;
30
+ if (open) (_a = dialog.current) == null ? void 0 : _a.showModal();
31
+ }, [open]);
32
+ return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
33
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
34
+ "button",
35
+ {
36
+ ref,
37
+ type: "button",
38
+ className: _chunk5KUROAEPjs.use_classes_default.call(void 0, ImageZoom_module_css_default.trigger, className),
39
+ "aria-haspopup": "dialog",
40
+ onClick: () => setOpen(true),
41
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTWIOSRRPjs.Image_default, { src, alt, ...imageProps })
42
+ }
43
+ ),
44
+ open && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
45
+ "dialog",
46
+ {
47
+ ref: dialog,
48
+ "aria-label": alt,
49
+ className: ImageZoom_module_css_default.dialog,
50
+ onClose: () => setOpen(false),
51
+ onKeyDown: (event) => {
52
+ var _a;
53
+ if (event.key === "Escape") (_a = dialog.current) == null ? void 0 : _a.close();
54
+ },
55
+ onClick: (event) => {
56
+ var _a;
57
+ if (event.target === event.currentTarget) (_a = dialog.current) == null ? void 0 : _a.close();
58
+ },
59
+ children: [
60
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "figure", { className: ImageZoom_module_css_default.figure, children: [
61
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "img", { src: zoomSrc || src, alt, className: ImageZoom_module_css_default.zoomed }),
62
+ caption && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "figcaption", { className: ImageZoom_module_css_default.caption, children: caption })
63
+ ] }),
64
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
65
+ "button",
66
+ {
67
+ type: "button",
68
+ className: ImageZoom_module_css_default.close,
69
+ "aria-label": closeLabel,
70
+ onClick: () => {
71
+ var _a;
72
+ return (_a = dialog.current) == null ? void 0 : _a.close();
73
+ },
74
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
75
+ "svg",
76
+ {
77
+ viewBox: "0 0 24 24",
78
+ width: "1.5em",
79
+ height: "1.5em",
80
+ "aria-hidden": "true",
81
+ children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
82
+ "path",
83
+ {
84
+ d: "M6 6l12 12M18 6L6 18",
85
+ fill: "none",
86
+ stroke: "currentColor",
87
+ strokeWidth: "2",
88
+ strokeLinecap: "round"
89
+ }
90
+ )
91
+ }
92
+ )
93
+ }
94
+ )
95
+ ]
96
+ }
97
+ )
98
+ ] });
99
+ }
100
+ );
101
+ ImageZoom.displayName = "BolioUIImageZoom";
102
+ var ImageZoom_default = ImageZoom;
103
+
104
+ // core/ImageZoom/index.ts
105
+ var ImageZoom_default2 = ImageZoom_default;
106
+
107
+
108
+
109
+ exports.ImageZoom_default = ImageZoom_default2;
@@ -0,0 +1,232 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
2
+
3
+ var _chunkAXYDJGTNjs = require('./chunk-AXYDJGTN.js');
4
+
5
+
6
+ var _chunkBXDUHMWSjs = require('./chunk-BXDUHMWS.js');
7
+
8
+
9
+ var _chunkZRORQ2WHjs = require('./chunk-ZRORQ2WH.js');
10
+
11
+
12
+ var _chunkDXHNQANXjs = require('./chunk-DXHNQANX.js');
13
+
14
+
15
+ var _chunkV5I4ORQQjs = require('./chunk-V5I4ORQQ.js');
16
+
17
+
18
+ var _chunk5KUROAEPjs = require('./chunk-5KUROAEP.js');
19
+
20
+ // core/Tour/Tour.tsx
21
+ var _react = require('react'); var _react2 = _interopRequireDefault(_react);
22
+ var _reactdom = require('react-dom');
23
+
24
+ // css-module-source:/Users/brunnoandrade/Desktop/BolioUI/bolio-ui/core/Tour/Tour.module.css.bolio-css-module-source
25
+ var Tour_module_css_default = { "tour": "Tour-module_tour__FLAxG", "spotlight": "Tour-module_spotlight__o7ukV", "dim": "Tour-module_dim__ZPmGZ", "card": "Tour-module_card__p9LCI", "centered": "Tour-module_centered__KJvbZ", "count": "Tour-module_count__2K7-G", "title": "Tour-module_title__Z-spV", "content": "Tour-module_content__qLvnb", "actions": "Tour-module_actions__HKbHi", "spacer": "Tour-module_spacer__dkdPy" };
26
+
27
+ // core/Tour/Tour.tsx
28
+ var _jsxruntime = require('react/jsx-runtime');
29
+ var CARD_WIDTH = 320;
30
+ var MARGIN = 8;
31
+ var GAP = 8;
32
+ var ROOM_BELOW = 240;
33
+ var resolve = (target) => !target ? null : typeof target === "string" ? document.querySelector(target) : typeof target === "function" ? target() : target;
34
+ var Tour = _react2.default.forwardRef(
35
+ ({
36
+ steps,
37
+ open,
38
+ onClose,
39
+ current: customCurrent,
40
+ initialCurrent = 0,
41
+ onCurrentChange,
42
+ onFinish,
43
+ previousLabel = "Back",
44
+ nextLabel = "Next",
45
+ finishLabel = "Done",
46
+ skipLabel = "Skip",
47
+ stepLabel = (index, count) => `${index + 1} of ${count}`,
48
+ spotlightPadding = 6,
49
+ className = "",
50
+ style,
51
+ onKeyDown,
52
+ ...props
53
+ }, ref) => {
54
+ const theme = _chunkV5I4ORQQjs.use_theme_default.call(void 0, );
55
+ const portal = _chunkBXDUHMWSjs.use_portal_default.call(void 0, "tour");
56
+ const id = _react.useId.call(void 0, );
57
+ const [selfCurrent, setSelfCurrent] = _react.useState.call(void 0, initialCurrent);
58
+ const current = Math.max(
59
+ 0,
60
+ Math.min(customCurrent != null ? customCurrent : selfCurrent, steps.length - 1)
61
+ );
62
+ const step = steps[current];
63
+ const last = current === steps.length - 1;
64
+ const [rect, setRect] = _react.useState.call(void 0, null);
65
+ const card = _react.useRef.call(void 0, null);
66
+ const previous = _react.useRef.call(void 0, null);
67
+ const latestSteps = _chunkZRORQ2WHjs.use_latest_default.call(void 0, steps);
68
+ _react.useEffect.call(void 0, () => {
69
+ var _a, _b;
70
+ const target = (_a = latestSteps.current[current]) == null ? void 0 : _a.target;
71
+ if (!open) return;
72
+ const element = resolve(target);
73
+ if (!element) {
74
+ if (target) _chunkAXYDJGTNjs.log_warning_default.call(void 0, "The target of the step was not found.", "Tour");
75
+ setRect(null);
76
+ return;
77
+ }
78
+ (_b = element.scrollIntoView) == null ? void 0 : _b.call(element, { block: "center", inline: "nearest" });
79
+ const update = () => setRect(element.getBoundingClientRect());
80
+ update();
81
+ window.addEventListener("resize", update);
82
+ window.addEventListener("scroll", update, true);
83
+ return () => {
84
+ window.removeEventListener("resize", update);
85
+ window.removeEventListener("scroll", update, true);
86
+ };
87
+ }, [open, current, latestSteps]);
88
+ _react.useEffect.call(void 0, () => {
89
+ if (!open) return;
90
+ previous.current = document.activeElement;
91
+ return () => {
92
+ var _a, _b;
93
+ return (_b = (_a = previous.current) == null ? void 0 : _a.focus) == null ? void 0 : _b.call(_a);
94
+ };
95
+ }, [open]);
96
+ _react.useEffect.call(void 0, () => {
97
+ var _a;
98
+ if (open && portal) (_a = card.current) == null ? void 0 : _a.focus({ preventScroll: true });
99
+ }, [open, current, portal]);
100
+ if (!open || !step || !portal) return null;
101
+ const go = (next) => {
102
+ if (customCurrent === void 0) setSelfCurrent(next);
103
+ if (onCurrentChange) onCurrentChange(next);
104
+ };
105
+ const finish = () => {
106
+ if (onFinish) onFinish();
107
+ onClose();
108
+ };
109
+ const keyDownHandler = (event) => {
110
+ var _a, _b;
111
+ if (onKeyDown) onKeyDown(event);
112
+ if (event.key === "Escape") {
113
+ event.stopPropagation();
114
+ return onClose();
115
+ }
116
+ if (event.key !== "Tab") return;
117
+ const buttons = Array.from(
118
+ (_b = (_a = card.current) == null ? void 0 : _a.querySelectorAll("button")) != null ? _b : []
119
+ );
120
+ const [first, end] = [buttons[0], buttons[buttons.length - 1]];
121
+ const onCard = document.activeElement === card.current;
122
+ if (!first) return;
123
+ if (event.shiftKey && (onCard || document.activeElement === first)) {
124
+ event.preventDefault();
125
+ end.focus();
126
+ } else if (!event.shiftKey && (onCard || document.activeElement === end)) {
127
+ event.preventDefault();
128
+ first.focus();
129
+ }
130
+ };
131
+ const width = Math.min(CARD_WIDTH, window.innerWidth - 2 * MARGIN);
132
+ const room = rect ? window.innerHeight - rect.bottom : 0;
133
+ const above = Boolean(rect && room < ROOM_BELOW && rect.top > room);
134
+ const cardStyle = rect ? {
135
+ width,
136
+ left: Math.max(
137
+ MARGIN,
138
+ Math.min(rect.left, window.innerWidth - width - MARGIN)
139
+ ),
140
+ ...above ? { bottom: window.innerHeight - rect.top + spotlightPadding + GAP } : { top: rect.bottom + spotlightPadding + GAP }
141
+ } : { width };
142
+ const dark = theme.type === "dark";
143
+ const tourStyle = {
144
+ "--tour-color": theme.palette.foreground,
145
+ "--tour-muted": theme.palette.accents_5,
146
+ "--tour-radius": theme.layout.radius,
147
+ "--tour-bg": dark ? theme.palette.accents_3 : theme.palette.background,
148
+ "--tour-shadow": theme.expressiveness.shadowMedium,
149
+ "--tour-dim": dark ? "rgb(0 0 0 / 60%)" : "rgb(0 0 0 / 55%)",
150
+ ...style
151
+ };
152
+ return _reactdom.createPortal.call(void 0,
153
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
154
+ "div",
155
+ {
156
+ ref,
157
+ className: _chunk5KUROAEPjs.joinClasses.call(void 0, Tour_module_css_default.tour, className),
158
+ ...props,
159
+ style: tourStyle,
160
+ onKeyDown: keyDownHandler,
161
+ children: [
162
+ rect ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
163
+ "div",
164
+ {
165
+ className: Tour_module_css_default.spotlight,
166
+ style: {
167
+ left: rect.left - spotlightPadding,
168
+ top: rect.top - spotlightPadding,
169
+ width: rect.width + 2 * spotlightPadding,
170
+ height: rect.height + 2 * spotlightPadding
171
+ }
172
+ }
173
+ ) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: Tour_module_css_default.dim }),
174
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
175
+ "div",
176
+ {
177
+ ref: card,
178
+ role: "dialog",
179
+ "aria-modal": "true",
180
+ "aria-labelledby": `${id}-title`,
181
+ "aria-describedby": `${id}-content`,
182
+ tabIndex: -1,
183
+ className: _chunk5KUROAEPjs.joinClasses.call(void 0, Tour_module_css_default.card, { [Tour_module_css_default.centered]: !rect }),
184
+ style: cardStyle,
185
+ children: [
186
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: Tour_module_css_default.count, children: stepLabel(current, steps.length) }),
187
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { id: `${id}-title`, className: Tour_module_css_default.title, children: step.title }),
188
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { id: `${id}-content`, className: Tour_module_css_default.content, children: step.content }),
189
+ /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: Tour_module_css_default.actions, children: [
190
+ !last && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkDXHNQANXjs.Button_default, { auto: true, scale: 0.75, effect: false, onClick: onClose, children: skipLabel }),
191
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "span", { className: Tour_module_css_default.spacer }),
192
+ current > 0 && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
193
+ _chunkDXHNQANXjs.Button_default,
194
+ {
195
+ auto: true,
196
+ scale: 0.75,
197
+ effect: false,
198
+ onClick: () => go(current - 1),
199
+ children: previousLabel
200
+ }
201
+ ),
202
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
203
+ _chunkDXHNQANXjs.Button_default,
204
+ {
205
+ auto: true,
206
+ scale: 0.75,
207
+ type: "primary",
208
+ effect: false,
209
+ onClick: last ? finish : () => go(current + 1),
210
+ children: last ? finishLabel : nextLabel
211
+ }
212
+ )
213
+ ] })
214
+ ]
215
+ }
216
+ )
217
+ ]
218
+ }
219
+ ),
220
+ portal
221
+ );
222
+ }
223
+ );
224
+ Tour.displayName = "BolioUITour";
225
+ var Tour_default = Tour;
226
+
227
+ // core/Tour/index.ts
228
+ var Tour_default2 = Tour_default;
229
+
230
+
231
+
232
+ exports.Tour_default = Tour_default2;
@@ -26,6 +26,9 @@ var CssBaseline = ({
26
26
  font-size: 16px;
27
27
  --bolioui-icons-background: ${theme.palette.background};
28
28
  box-sizing: border-box;
29
+ /* the native parts of the page follow the theme: the clock of a time
30
+ field, the scrollbars and the pickers of the browser */
31
+ color-scheme: ${theme.type};
29
32
  }
30
33
 
31
34
  body {
@@ -53,7 +56,6 @@ var CssBaseline = ({
53
56
  *:before,
54
57
  *:after {
55
58
  box-sizing: inherit;
56
- text-rendering: geometricPrecision;
57
59
  -webkit-tap-highlight-color: transparent;
58
60
  }
59
61