@marigold/components 0.8.0 → 1.0.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 (4) hide show
  1. package/dist/index.d.ts +419 -233
  2. package/dist/index.js +2063 -1025
  3. package/dist/index.mjs +2130 -1024
  4. package/package.json +28 -10
package/dist/index.js CHANGED
@@ -51,7 +51,6 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
51
51
  // src/index.ts
52
52
  var src_exports = {};
53
53
  __export(src_exports, {
54
- ActionGroup: () => ActionGroup,
55
54
  Aside: () => Aside,
56
55
  Aspect: () => Aspect,
57
56
  Badge: () => Badge,
@@ -61,121 +60,54 @@ __export(src_exports, {
61
60
  Card: () => Card,
62
61
  Center: () => Center,
63
62
  Checkbox: () => Checkbox,
63
+ CheckboxGroup: () => CheckboxGroup,
64
+ CheckboxGroupContext: () => CheckboxGroupContext,
64
65
  Columns: () => Columns,
65
66
  Container: () => Container,
67
+ Content: () => Content,
66
68
  Dialog: () => Dialog,
67
69
  Divider: () => Divider,
68
- Field: () => Field,
70
+ Footer: () => Footer,
71
+ Header: () => Header,
72
+ Headline: () => Headline,
69
73
  Image: () => Image,
70
74
  Inline: () => Inline,
71
75
  Input: () => Input,
72
- Item: () => import_collections.Item,
73
76
  Label: () => Label,
74
- LabelBase: () => LabelBase,
75
77
  Link: () => Link,
76
78
  MarigoldProvider: () => MarigoldProvider,
77
79
  Menu: () => Menu,
78
- MenuItem: () => MenuItem,
79
80
  Message: () => Message,
81
+ NumberField: () => NumberField,
82
+ Overlay: () => Overlay,
83
+ Popover: () => Popover,
80
84
  Radio: () => Radio,
81
85
  SSRProvider: () => import_ssr.SSRProvider,
82
- Section: () => import_collections.Section,
83
86
  Select: () => Select,
84
87
  Slider: () => Slider,
85
88
  Stack: () => Stack,
86
89
  Switch: () => Switch,
90
+ Table: () => Table,
87
91
  Text: () => Text,
88
- Textarea: () => Textarea,
89
- ThemeProvider: () => import_system5.ThemeProvider,
92
+ TextArea: () => TextArea,
93
+ TextField: () => TextField,
94
+ ThemeProvider: () => import_system26.ThemeProvider,
90
95
  Tiles: () => Tiles,
91
96
  Tooltip: () => Tooltip,
92
- TooltipContext: () => TooltipContext,
93
- TooltipTrigger: () => TooltipTrigger,
94
- ValidationMessage: () => ValidationMessage,
95
- VisuallyHidden: () => import_visually_hidden2.VisuallyHidden,
96
- useDialogButtonProps: () => useDialogButtonProps,
97
- useTheme: () => import_system5.useTheme
97
+ Underlay: () => Underlay,
98
+ VisuallyHidden: () => import_visually_hidden.VisuallyHidden,
99
+ useCheckboxGroupContext: () => useCheckboxGroupContext,
100
+ useTheme: () => import_system26.useTheme
98
101
  });
99
102
  module.exports = __toCommonJS(src_exports);
100
103
 
101
- // src/ActionGroup/ActionGroup.tsx
102
- var import_react3 = __toESM(require("react"));
103
-
104
- // src/Inline/Inline.tsx
104
+ // src/Aside/Aside.tsx
105
105
  var import_react = __toESM(require("react"));
106
106
 
107
107
  // src/Box.ts
108
108
  var import_system = require("@marigold/system");
109
109
 
110
- // src/Inline/Inline.tsx
111
- var ALIGNMENT = {
112
- top: "flex-start",
113
- center: "center",
114
- bottom: "flex-end"
115
- };
116
- var Inline = (_a) => {
117
- var _b = _a, {
118
- space = "none",
119
- align = "center",
120
- children
121
- } = _b, props = __objRest(_b, [
122
- "space",
123
- "align",
124
- "children"
125
- ]);
126
- return /* @__PURE__ */ import_react.default.createElement(import_system.Box, __spreadValues({
127
- __baseCSS: { gap: space, flexWrap: "wrap" },
128
- display: "inline-flex",
129
- alignItems: ALIGNMENT[align]
130
- }, props), children);
131
- };
132
-
133
- // src/Stack/Stack.tsx
134
- var import_react2 = __toESM(require("react"));
135
- var ALIGNMENT2 = {
136
- left: "flex-start",
137
- center: "center",
138
- right: "flex-end"
139
- };
140
- var Stack = (_a) => {
141
- var _b = _a, {
142
- space = "none",
143
- align = "left",
144
- children
145
- } = _b, props = __objRest(_b, [
146
- "space",
147
- "align",
148
- "children"
149
- ]);
150
- return /* @__PURE__ */ import_react2.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
151
- display: "flex",
152
- flexDirection: "column",
153
- alignItems: ALIGNMENT2[align],
154
- p: "0",
155
- css: { gap: space }
156
- }), children);
157
- };
158
-
159
- // src/ActionGroup/ActionGroup.tsx
160
- var ActionGroup = (_a) => {
161
- var _b = _a, {
162
- space = "none",
163
- verticalAlignment = false,
164
- children
165
- } = _b, props = __objRest(_b, [
166
- "space",
167
- "verticalAlignment",
168
- "children"
169
- ]);
170
- return verticalAlignment ? /* @__PURE__ */ import_react3.default.createElement(Stack, __spreadValues({
171
- space
172
- }, props), children) : /* @__PURE__ */ import_react3.default.createElement(Inline, __spreadValues({
173
- space
174
- }, props), children);
175
- };
176
-
177
110
  // src/Aside/Aside.tsx
178
- var import_react4 = __toESM(require("react"));
179
111
  var SIDE_MAP = {
180
112
  left: [":not(style):first-of-type", ":last-child"],
181
113
  right: [":last-child", ":not(style):first-of-type"]
@@ -189,7 +121,7 @@ var Aside = ({
189
121
  wrap = "50%"
190
122
  }) => {
191
123
  const [aside, content] = SIDE_MAP[side];
192
- return /* @__PURE__ */ import_react4.default.createElement(import_system.Box, {
124
+ return /* @__PURE__ */ import_react.default.createElement(import_system.Box, {
193
125
  css: {
194
126
  display: "flex",
195
127
  flexWrap: "wrap",
@@ -209,90 +141,33 @@ var Aside = ({
209
141
  };
210
142
 
211
143
  // src/Aspect/Aspect.tsx
212
- var import_react5 = __toESM(require("react"));
144
+ var import_react2 = __toESM(require("react"));
213
145
  var import_tokens = require("@marigold/tokens");
214
- var Aspect = import_react5.default.forwardRef(function AspectRatio(_a, ref) {
215
- var _b = _a, { ratio = "square", maxWidth = "100%", children } = _b, props = __objRest(_b, ["ratio", "maxWidth", "children"]);
216
- return /* @__PURE__ */ import_react5.default.createElement(import_system.Box, {
217
- ref,
218
- __baseCSS: {
219
- position: "relative",
220
- overflow: "hidden",
221
- maxWidth
222
- }
223
- }, /* @__PURE__ */ import_react5.default.createElement(import_system.Box, {
224
- __baseCSS: {
225
- aspectRatio: import_tokens.aspect[ratio]
226
- }
227
- }), /* @__PURE__ */ import_react5.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
228
- __baseCSS: {
229
- position: "absolute",
230
- top: 0,
231
- right: 0,
232
- bottom: 0,
233
- left: 0
234
- }
235
- }), children));
236
- });
146
+ var Aspect = ({
147
+ ratio = "square",
148
+ maxWidth,
149
+ children
150
+ }) => /* @__PURE__ */ import_react2.default.createElement(import_system.Box, {
151
+ css: {
152
+ aspectRatio: import_tokens.aspect[ratio],
153
+ overflow: "hidden",
154
+ maxWidth
155
+ }
156
+ }, children);
237
157
 
238
158
  // src/Badge/Badge.tsx
239
- var import_react6 = __toESM(require("react"));
159
+ var import_react3 = __toESM(require("react"));
160
+ var import_system2 = require("@marigold/system");
240
161
  var Badge = (_a) => {
241
- var _b = _a, {
242
- variant = "",
243
- bgColor = "transparent",
244
- borderColor = "transparent",
245
- children
246
- } = _b, props = __objRest(_b, [
247
- "variant",
248
- "bgColor",
249
- "borderColor",
250
- "children"
251
- ]);
252
- return /* @__PURE__ */ import_react6.default.createElement(import_system.Box, __spreadValues({
253
- css: { bg: bgColor, borderColor },
254
- variant: `badge.${variant}`
255
- }, props), children);
256
- };
257
-
258
- // src/Button/Button.tsx
259
- var import_react7 = __toESM(require("react"));
260
- var import_button = require("@react-aria/button");
261
- var Button = (0, import_react7.forwardRef)((_a, ref) => {
262
- var _b = _a, {
263
- as = "button",
264
- variant = "primary",
265
- size = "large",
266
- space = "none",
267
- disabled,
268
- children,
269
- className
270
- } = _b, props = __objRest(_b, [
271
- "as",
272
- "variant",
273
- "size",
274
- "space",
275
- "disabled",
276
- "children",
277
- "className"
278
- ]);
279
- const { buttonProps } = (0, import_button.useButton)(__spreadProps(__spreadValues({}, props), {
280
- elementType: typeof as === "string" ? as : "span",
281
- isDisabled: disabled
282
- }), ref);
283
- return /* @__PURE__ */ import_react7.default.createElement(import_system.Box, __spreadProps(__spreadValues(__spreadValues({}, buttonProps), props), {
284
- as,
285
- display: "inline-flex",
286
- alignItems: "center",
287
- variant: [`button.${variant}`, `button.${size}`],
288
- className,
289
- ref,
290
- css: { columnGap: space }
162
+ var _b = _a, { variant, size, children } = _b, props = __objRest(_b, ["variant", "size", "children"]);
163
+ const styles = (0, import_system2.useComponentStyles)("Badge", { variant, size });
164
+ return /* @__PURE__ */ import_react3.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
165
+ css: styles
291
166
  }), children);
292
- });
167
+ };
293
168
 
294
169
  // src/Breakout/Breakout.tsx
295
- var import_react8 = __toESM(require("react"));
170
+ var import_react4 = __toESM(require("react"));
296
171
  var useAlignment = (direction) => {
297
172
  switch (direction) {
298
173
  case "right":
@@ -316,7 +191,7 @@ var Breakout = (_a) => {
316
191
  ]);
317
192
  const alignItems = useAlignment(horizontalAlign);
318
193
  const justifyContent = useAlignment(verticalAlign);
319
- return /* @__PURE__ */ import_react8.default.createElement(import_system.Box, __spreadValues({
194
+ return /* @__PURE__ */ import_react4.default.createElement(import_system.Box, __spreadValues({
320
195
  alignItems,
321
196
  justifyContent,
322
197
  width: "100%",
@@ -327,35 +202,64 @@ var Breakout = (_a) => {
327
202
  }, props), children);
328
203
  };
329
204
 
330
- // src/Card/Card.tsx
331
- var import_react9 = __toESM(require("react"));
332
- var Card = (_a) => {
205
+ // src/Button/Button.tsx
206
+ var import_react5 = __toESM(require("react"));
207
+ var import_button = require("@react-aria/button");
208
+ var import_focus = require("@react-aria/focus");
209
+ var import_utils = require("@react-aria/utils");
210
+ var import_system3 = require("@marigold/system");
211
+ var Button = (0, import_react5.forwardRef)((_a, ref) => {
333
212
  var _b = _a, {
334
- variant = "",
335
- title,
336
- width,
337
- className,
338
- children
213
+ as = "button",
214
+ children,
215
+ variant,
216
+ size,
217
+ disabled
339
218
  } = _b, props = __objRest(_b, [
219
+ "as",
220
+ "children",
340
221
  "variant",
341
- "title",
342
- "width",
343
- "className",
344
- "children"
222
+ "size",
223
+ "disabled"
345
224
  ]);
346
- return /* @__PURE__ */ import_react9.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
347
- variant: `card.${variant}`,
348
- maxWidth: width,
349
- className
350
- }), title && /* @__PURE__ */ import_react9.default.createElement(import_system.Box, {
351
- as: "h2",
352
- variant: "text.h2",
353
- pb: "small"
354
- }, title), children);
225
+ const buttonRef = (0, import_react5.useRef)(null);
226
+ (0, import_react5.useImperativeHandle)(ref, () => buttonRef.current);
227
+ const { buttonProps, isPressed } = (0, import_button.useButton)(__spreadProps(__spreadValues({}, props), {
228
+ elementType: typeof as === "string" ? as : "span",
229
+ isDisabled: disabled
230
+ }), buttonRef);
231
+ const { isFocusVisible, focusProps } = (0, import_focus.useFocusRing)();
232
+ const styles = (0, import_system3.useComponentStyles)("Button", { variant, size });
233
+ const stateProps = (0, import_system3.useStateProps)({
234
+ active: isPressed,
235
+ focus: isFocusVisible
236
+ });
237
+ return /* @__PURE__ */ import_react5.default.createElement(import_system3.Box, __spreadProps(__spreadValues(__spreadValues({}, (0, import_utils.mergeProps)(buttonProps, focusProps)), stateProps), {
238
+ as,
239
+ ref: buttonRef,
240
+ __baseCSS: {
241
+ display: "inline-flex",
242
+ alignItems: "center",
243
+ gap: "0.5ch",
244
+ cursor: disabled ? "not-allowed" : "pointer"
245
+ },
246
+ css: styles
247
+ }), children);
248
+ });
249
+
250
+ // src/Card/Card.tsx
251
+ var import_react6 = __toESM(require("react"));
252
+ var import_system4 = require("@marigold/system");
253
+ var Card = (_a) => {
254
+ var _b = _a, { children, variant, size } = _b, props = __objRest(_b, ["children", "variant", "size"]);
255
+ const styles = (0, import_system4.useComponentStyles)("Card", { variant, size });
256
+ return /* @__PURE__ */ import_react6.default.createElement(import_system4.Box, __spreadProps(__spreadValues({}, props), {
257
+ css: styles
258
+ }), children);
355
259
  };
356
260
 
357
261
  // src/Center/Center.tsx
358
- var import_react10 = __toESM(require("react"));
262
+ var import_react7 = __toESM(require("react"));
359
263
  var Center = (_a) => {
360
264
  var _b = _a, {
361
265
  maxWidth,
@@ -366,7 +270,7 @@ var Center = (_a) => {
366
270
  "space",
367
271
  "children"
368
272
  ]);
369
- return /* @__PURE__ */ import_react10.default.createElement(import_system.Box, __spreadValues({
273
+ return /* @__PURE__ */ import_react7.default.createElement(import_system.Box, __spreadValues({
370
274
  css: {
371
275
  boxSizing: "content-box",
372
276
  display: "flex",
@@ -381,172 +285,217 @@ var Center = (_a) => {
381
285
  };
382
286
 
383
287
  // src/Checkbox/Checkbox.tsx
384
- var import_react14 = __toESM(require("react"));
385
- var import_focus = require("@react-aria/focus");
386
- var import_visually_hidden = require("@react-aria/visually-hidden");
387
- var import_checkbox = require("@react-aria/checkbox");
288
+ var import_react10 = __toESM(require("react"));
289
+ var import_checkbox3 = require("@react-aria/checkbox");
290
+ var import_focus2 = require("@react-aria/focus");
291
+ var import_interactions = require("@react-aria/interactions");
388
292
  var import_toggle = require("@react-stately/toggle");
389
- var import_icons2 = require("@marigold/icons");
293
+ var import_system7 = require("@marigold/system");
390
294
 
391
- // src/Checkbox/CheckboxIcon.tsx
392
- var import_react11 = __toESM(require("react"));
393
- var import_system2 = require("@marigold/system");
394
- var CheckboxIcon = ({
395
- variant = "",
396
- checked = false,
397
- disabled = false,
398
- indeterminated,
399
- error = false
400
- }) => {
401
- const conditionalStates = disabled ? {
402
- disabled
403
- } : {
404
- checked,
405
- error
406
- };
407
- return /* @__PURE__ */ import_react11.default.createElement(import_system2.SVG, {
408
- width: "16",
409
- height: "32",
410
- viewBox: "0 0 16 32",
411
- fill: "none",
412
- "aria-hidden": "true"
413
- }, /* @__PURE__ */ import_react11.default.createElement(import_system.Box, {
414
- as: "rect",
415
- x: "0.5",
416
- y: "8.5",
417
- width: "15px",
418
- height: "15px",
419
- rx: "1.5",
420
- variant: (0, import_system2.conditional)(`checkbox.${variant}`, conditionalStates)
421
- }), checked && indeterminated && /* @__PURE__ */ import_react11.default.createElement(import_system.Box, {
422
- __baseCSS: { fill: "gray00" },
423
- as: "path",
424
- fillRule: "evenodd",
425
- clipRule: "evenodd",
426
- d: "M13.5 17.0402H2.5V15.4688H13.5V17.0402V17.0402Z"
427
- }), checked && !indeterminated && /* @__PURE__ */ import_react11.default.createElement(import_system.Box, {
428
- __baseCSS: { fill: "gray00" },
429
- as: "path",
430
- fillRule: "evenodd",
431
- clipRule: "evenodd",
432
- d: "M13.9571 12.8338L12.4085 11.2852L6.08699 17.6007L3.59887 15.1126L2.04163 16.6588L6.08682 20.704L13.9571 12.8338Z"
433
- }));
434
- };
295
+ // src/Checkbox/CheckboxGroup.tsx
296
+ var import_react9 = __toESM(require("react"));
297
+ var import_checkbox = require("@react-aria/checkbox");
298
+ var import_checkbox2 = require("@react-stately/checkbox");
299
+ var import_system6 = require("@marigold/system");
435
300
 
436
301
  // src/Label/Label.tsx
437
- var import_react12 = __toESM(require("react"));
302
+ var import_react8 = __toESM(require("react"));
438
303
  var import_icons = require("@marigold/icons");
439
- var LabelBase = (_a) => {
440
- var _b = _a, {
441
- variant = "above",
442
- required,
443
- color = "text",
444
- children
445
- } = _b, props = __objRest(_b, [
446
- "variant",
447
- "required",
448
- "color",
449
- "children"
450
- ]);
451
- return /* @__PURE__ */ import_react12.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
452
- as: "label",
453
- __baseCSS: { color },
454
- variant: `label.${variant}`
455
- }), children);
456
- };
304
+ var import_system5 = require("@marigold/system");
457
305
  var Label = (_a) => {
458
306
  var _b = _a, {
307
+ as = "label",
459
308
  required,
460
- children
309
+ children,
310
+ variant,
311
+ size
461
312
  } = _b, props = __objRest(_b, [
313
+ "as",
462
314
  "required",
463
- "children"
315
+ "children",
316
+ "variant",
317
+ "size"
464
318
  ]);
465
- return required ? /* @__PURE__ */ import_react12.default.createElement(import_system.Box, {
466
- as: "span",
467
- display: "inline-flex",
468
- alignItems: "center"
469
- }, /* @__PURE__ */ import_react12.default.createElement(LabelBase, __spreadValues({}, props), children), required && /* @__PURE__ */ import_react12.default.createElement(import_icons.Required, {
319
+ const styles = (0, import_system5.useComponentStyles)("Label", { size, variant });
320
+ return /* @__PURE__ */ import_react8.default.createElement(import_system5.Box, __spreadProps(__spreadValues({}, props), {
321
+ as,
322
+ __baseCSS: { display: "flex", alignItems: "center", gap: 4 },
323
+ css: styles
324
+ }), children, required && /* @__PURE__ */ import_react8.default.createElement(import_icons.Required, {
325
+ role: "presentation",
470
326
  size: 16,
471
327
  fill: "error"
472
- })) : /* @__PURE__ */ import_react12.default.createElement(LabelBase, __spreadValues({}, props), children);
328
+ }));
473
329
  };
474
330
 
475
- // src/ValidationMessage/ValidationMessage.tsx
476
- var import_react13 = __toESM(require("react"));
477
- var ValidationMessage = (_a) => {
331
+ // src/Checkbox/CheckboxGroup.tsx
332
+ var CheckboxGroupContext = (0, import_react9.createContext)(null);
333
+ var useCheckboxGroupContext = () => (0, import_react9.useContext)(CheckboxGroupContext);
334
+ var CheckboxGroup = (_a) => {
478
335
  var _b = _a, {
479
- variant = "error",
480
336
  children,
481
- className
482
- } = _b, props = __objRest(_b, [
483
- "variant",
337
+ variant,
338
+ size,
339
+ required,
340
+ disabled,
341
+ readOnly,
342
+ error
343
+ } = _b, rest = __objRest(_b, [
484
344
  "children",
485
- "className"
345
+ "variant",
346
+ "size",
347
+ "required",
348
+ "disabled",
349
+ "readOnly",
350
+ "error"
486
351
  ]);
487
- return /* @__PURE__ */ import_react13.default.createElement(import_system.Box, __spreadValues({
352
+ const props = __spreadValues({
353
+ isRequired: required,
354
+ isDisabled: disabled,
355
+ isReadOnly: readOnly,
356
+ validationState: error ? "invalid" : "valid"
357
+ }, rest);
358
+ const state = (0, import_checkbox2.useCheckboxGroupState)(props);
359
+ const { groupProps, labelProps } = (0, import_checkbox.useCheckboxGroup)(props, state);
360
+ const styles = (0, import_system6.useComponentStyles)("CheckboxGroup", { variant, size }, { parts: ["container", "group"] });
361
+ return /* @__PURE__ */ import_react9.default.createElement(import_system6.Box, __spreadProps(__spreadValues({}, groupProps), {
362
+ css: styles.container
363
+ }), props.label && /* @__PURE__ */ import_react9.default.createElement(Label, __spreadValues({
488
364
  as: "span",
489
- display: "flex",
490
- alignItems: "center",
491
- variant: `validation.${variant}`,
492
- className
493
- }, props), children);
365
+ required
366
+ }, labelProps), props.label), /* @__PURE__ */ import_react9.default.createElement(import_system6.Box, {
367
+ role: "presentation",
368
+ __baseCSS: {
369
+ display: "flex",
370
+ flexDirection: "column",
371
+ alignItems: "start"
372
+ },
373
+ css: styles.group
374
+ }, /* @__PURE__ */ import_react9.default.createElement(CheckboxGroupContext.Provider, {
375
+ value: __spreadValues({ variant, size, error }, state)
376
+ }, children)));
494
377
  };
495
378
 
496
379
  // src/Checkbox/Checkbox.tsx
497
- var CheckboxInput = (_a) => {
498
- var _b = _a, {
499
- error,
500
- indeterminated = false
501
- } = _b, props = __objRest(_b, [
502
- "error",
503
- "indeterminated"
504
- ]);
505
- const state = (0, import_toggle.useToggleState)(props);
506
- const ref = import_react14.default.useRef(null);
507
- const { inputProps } = (0, import_checkbox.useCheckbox)(props, state, ref);
508
- const { focusProps } = (0, import_focus.useFocusRing)();
509
- const _a2 = props, { children } = _a2, restProps = __objRest(_a2, ["children"]);
510
- return /* @__PURE__ */ import_react14.default.createElement(import_system.Box, {
511
- pr: "xsmall"
512
- }, /* @__PURE__ */ import_react14.default.createElement(import_visually_hidden.VisuallyHidden, null, /* @__PURE__ */ import_react14.default.createElement("input", __spreadValues(__spreadProps(__spreadValues(__spreadValues({}, inputProps), focusProps), {
513
- ref
514
- }), restProps))), /* @__PURE__ */ import_react14.default.createElement(CheckboxIcon, {
515
- checked: props.checked,
516
- variant: props.variant,
517
- disabled: props.disabled,
518
- indeterminated,
519
- error
520
- }));
380
+ var CheckMark = () => /* @__PURE__ */ import_react10.default.createElement("svg", {
381
+ viewBox: "0 0 12 10"
382
+ }, /* @__PURE__ */ import_react10.default.createElement("path", {
383
+ fill: "currentColor",
384
+ stroke: "none",
385
+ d: "M11.915 1.548 10.367 0 4.045 6.315 1.557 3.827 0 5.373l4.045 4.046 7.87-7.871Z"
386
+ }));
387
+ var IndeterminateMark = () => /* @__PURE__ */ import_react10.default.createElement("svg", {
388
+ width: "12",
389
+ height: "3",
390
+ viewBox: "0 0 12 3"
391
+ }, /* @__PURE__ */ import_react10.default.createElement("path", {
392
+ fill: "currentColor",
393
+ stroke: "none",
394
+ d: "M11.5 2.04018H0.5V0.46875H11.5V2.04018Z"
395
+ }));
396
+ var Icon = (_a) => {
397
+ var _b = _a, { css, checked, indeterminate } = _b, props = __objRest(_b, ["css", "checked", "indeterminate"]);
398
+ return /* @__PURE__ */ import_react10.default.createElement(import_system7.Box, __spreadValues({
399
+ "aria-hidden": "true",
400
+ __baseCSS: {
401
+ width: 16,
402
+ height: 16,
403
+ bg: "#fff",
404
+ border: "1px solid #000",
405
+ borderRadius: 3,
406
+ display: "flex",
407
+ alignItems: "center",
408
+ justifyContent: "center",
409
+ p: 1
410
+ },
411
+ css
412
+ }, props), indeterminate ? /* @__PURE__ */ import_react10.default.createElement(IndeterminateMark, null) : checked ? /* @__PURE__ */ import_react10.default.createElement(CheckMark, null) : null);
521
413
  };
522
414
  var Checkbox = (_a) => {
523
415
  var _b = _a, {
416
+ size,
417
+ variant,
418
+ disabled,
419
+ checked,
420
+ defaultChecked,
421
+ indeterminate,
422
+ readOnly,
524
423
  required,
525
- labelVariant = "inline",
526
- errorMessage
424
+ error
527
425
  } = _b, props = __objRest(_b, [
426
+ "size",
427
+ "variant",
428
+ "disabled",
429
+ "checked",
430
+ "defaultChecked",
431
+ "indeterminate",
432
+ "readOnly",
528
433
  "required",
529
- "labelVariant",
530
- "errorMessage"
434
+ "error"
531
435
  ]);
532
- return /* @__PURE__ */ import_react14.default.createElement(import_react14.default.Fragment, null, /* @__PURE__ */ import_react14.default.createElement(import_system.Box, {
533
- as: Label,
436
+ const ref = import_react10.default.useRef(null);
437
+ const checkboxProps = {
438
+ isIndeterminate: indeterminate,
439
+ isDisabled: disabled,
440
+ isReadOnly: readOnly,
441
+ isRequired: required,
442
+ validationState: error ? "invalid" : "valid"
443
+ };
444
+ const groupState = useCheckboxGroupContext();
445
+ const { inputProps } = groupState ? (0, import_checkbox3.useCheckboxGroupItem)(__spreadProps(__spreadValues(__spreadValues({}, props), checkboxProps), {
446
+ value: props.value
447
+ }), groupState, ref) : (0, import_checkbox3.useCheckbox)(__spreadValues(__spreadValues({
448
+ isSelected: checked,
449
+ defaultSelected: defaultChecked
450
+ }, checkboxProps), props), (0, import_toggle.useToggleState)(__spreadValues({
451
+ isSelected: checked,
452
+ defaultSelected: defaultChecked
453
+ }, props)), ref);
454
+ const styles = (0, import_system7.useComponentStyles)("Checkbox", { variant: (groupState == null ? void 0 : groupState.variant) || variant, size: (groupState == null ? void 0 : groupState.size) || size }, { parts: ["container", "label", "checkbox"] });
455
+ const { hoverProps, isHovered } = (0, import_interactions.useHover)({});
456
+ const { isFocusVisible, focusProps } = (0, import_focus2.useFocusRing)();
457
+ const stateProps = (0, import_system7.useStateProps)({
458
+ hover: isHovered,
459
+ focus: isFocusVisible,
460
+ checked: inputProps.checked,
461
+ disabled: inputProps.disabled,
462
+ error: (groupState == null ? void 0 : groupState.error) || error,
463
+ readOnly,
464
+ indeterminate
465
+ });
466
+ return /* @__PURE__ */ import_react10.default.createElement(import_system7.Box, __spreadValues(__spreadValues({
467
+ as: "label",
534
468
  __baseCSS: {
535
- ":hover": { cursor: props.disabled ? "not-allowed" : "pointer" }
469
+ display: "flex",
470
+ alignItems: "center",
471
+ gap: "1ch",
472
+ position: "relative"
536
473
  },
537
- htmlFor: props.id,
538
- required,
539
- variant: `label.${labelVariant}`,
540
- color: props.disabled ? "disabled" : "text"
541
- }, /* @__PURE__ */ import_react14.default.createElement(CheckboxInput, __spreadValues({
542
- error: props.error
543
- }, props)), props.children), props.error && errorMessage && /* @__PURE__ */ import_react14.default.createElement(ValidationMessage, null, /* @__PURE__ */ import_react14.default.createElement(import_icons2.Exclamation, {
544
- size: 16
545
- }), errorMessage));
474
+ css: styles.container
475
+ }, hoverProps), stateProps), /* @__PURE__ */ import_react10.default.createElement(import_system7.Box, __spreadValues(__spreadValues({
476
+ as: "input",
477
+ ref,
478
+ css: {
479
+ position: "absolute",
480
+ width: "100%",
481
+ height: "100%",
482
+ top: 0,
483
+ left: 0,
484
+ zIndex: 1,
485
+ opacity: 1e-4,
486
+ cursor: inputProps.disabled ? "not-allowed" : "pointer"
487
+ }
488
+ }, inputProps), focusProps)), /* @__PURE__ */ import_react10.default.createElement(Icon, __spreadValues({
489
+ checked: inputProps.checked,
490
+ indeterminate,
491
+ css: styles.checkbox
492
+ }, stateProps)), props.children && /* @__PURE__ */ import_react10.default.createElement(import_system7.Box, __spreadValues({
493
+ css: styles.label
494
+ }, stateProps), props.children));
546
495
  };
547
496
 
548
497
  // src/Columns/Columns.tsx
549
- var import_react15 = __toESM(require("react"));
498
+ var import_react11 = __toESM(require("react"));
550
499
  var Columns = (_a) => {
551
500
  var _b = _a, {
552
501
  space = "none",
@@ -559,8 +508,8 @@ var Columns = (_a) => {
559
508
  "collapseAt",
560
509
  "children"
561
510
  ]);
562
- if (import_react15.Children.count(children) !== columns.length) {
563
- throw new Error(`Columns: expected ${columns.length} children, got ${import_react15.Children.count(children)}`);
511
+ if (import_react11.Children.count(children) !== columns.length) {
512
+ throw new Error(`Columns: expected ${columns.length} children, got ${import_react11.Children.count(children)}`);
564
513
  }
565
514
  const getColumnWidths = columns.map((column, index) => {
566
515
  return {
@@ -569,7 +518,7 @@ var Columns = (_a) => {
569
518
  }
570
519
  };
571
520
  });
572
- return /* @__PURE__ */ import_react15.default.createElement(import_system.Box, __spreadValues({
521
+ return /* @__PURE__ */ import_react11.default.createElement(import_system.Box, __spreadValues({
573
522
  display: "flex",
574
523
  css: Object.assign({
575
524
  flexWrap: "wrap",
@@ -581,797 +530,1903 @@ var Columns = (_a) => {
581
530
  }, props), children);
582
531
  };
583
532
 
584
- // src/Dialog/Dialog.tsx
585
- var import_react18 = __toESM(require("react"));
586
- var import_overlays2 = require("@react-stately/overlays");
587
- var import_overlays3 = require("@react-aria/overlays");
588
- var import_button2 = require("@react-aria/button");
589
- var import_icons3 = require("@marigold/icons");
590
-
591
- // src/Text/Text.tsx
592
- var import_react16 = __toESM(require("react"));
593
- var Text = (0, import_react16.forwardRef)((_a, ref) => {
533
+ // src/Container/Container.tsx
534
+ var import_react12 = __toESM(require("react"));
535
+ var import_tokens2 = require("@marigold/tokens");
536
+ var ALIGNMENT = {
537
+ left: "flex-start",
538
+ center: "center",
539
+ right: "flex-end"
540
+ };
541
+ var Container = (_a) => {
594
542
  var _b = _a, {
595
- as = "span",
596
- variant = "body",
597
- children,
598
- align,
599
- color,
600
- cursor,
601
- size,
602
- outline,
603
- userSelect
543
+ contentType = "content",
544
+ size = "medium",
545
+ align = "left",
546
+ alignContainer = "left",
547
+ children
604
548
  } = _b, props = __objRest(_b, [
605
- "as",
606
- "variant",
607
- "children",
608
- "align",
609
- "color",
610
- "cursor",
549
+ "contentType",
611
550
  "size",
612
- "outline",
613
- "userSelect"
551
+ "align",
552
+ "alignContainer",
553
+ "children"
614
554
  ]);
615
- return /* @__PURE__ */ import_react16.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
616
- as,
617
- variant: `text.${variant}`,
555
+ const maxWidth = import_tokens2.size[contentType][size];
556
+ let gridTemplateColumns = `${maxWidth} 1fr 1fr`;
557
+ let gridColumn = 1;
558
+ if (alignContainer === "center") {
559
+ gridTemplateColumns = `1fr ${maxWidth} 1fr`;
560
+ gridColumn = 2;
561
+ }
562
+ if (alignContainer === "right") {
563
+ gridTemplateColumns = `1fr 1fr ${maxWidth}`;
564
+ gridColumn = 3;
565
+ }
566
+ return /* @__PURE__ */ import_react12.default.createElement(import_system.Box, __spreadValues({
567
+ display: "grid",
618
568
  css: {
619
- textAlign: align,
620
- fontSize: size,
621
- color,
622
- cursor,
623
- outline,
624
- userSelect
625
- },
626
- ref
569
+ gridTemplateColumns,
570
+ placeItems: ALIGNMENT[align],
571
+ "> *": {
572
+ gridColumn
573
+ }
574
+ }
575
+ }, props), children);
576
+ };
577
+
578
+ // src/Content/Content.tsx
579
+ var import_react13 = __toESM(require("react"));
580
+ var import_system8 = require("@marigold/system");
581
+ var Content = (_a) => {
582
+ var _b = _a, {
583
+ children,
584
+ variant,
585
+ size
586
+ } = _b, props = __objRest(_b, [
587
+ "children",
588
+ "variant",
589
+ "size"
590
+ ]);
591
+ const styles = (0, import_system8.useComponentStyles)("Content", { variant, size });
592
+ return /* @__PURE__ */ import_react13.default.createElement(import_system8.Box, __spreadProps(__spreadValues({
593
+ as: "section"
594
+ }, props), {
595
+ css: styles
627
596
  }), children);
628
- });
597
+ };
629
598
 
630
- // src/Dialog/ModalDialog.tsx
631
- var import_react17 = __toESM(require("react"));
632
- var import_overlays = require("@react-aria/overlays");
599
+ // src/Dialog/Dialog.tsx
600
+ var import_react22 = __toESM(require("react"));
601
+ var import_button2 = require("@react-aria/button");
633
602
  var import_dialog = require("@react-aria/dialog");
634
- var import_focus2 = require("@react-aria/focus");
635
- var ModalDialog = (_a) => {
603
+ var import_system12 = require("@marigold/system");
604
+
605
+ // src/Header/Header.tsx
606
+ var import_react14 = __toESM(require("react"));
607
+ var import_system9 = require("@marigold/system");
608
+ var Header = (_a) => {
609
+ var _b = _a, { children, variant, size } = _b, props = __objRest(_b, ["children", "variant", "size"]);
610
+ const styles = (0, import_system9.useComponentStyles)("Header", { variant, size });
611
+ return /* @__PURE__ */ import_react14.default.createElement(import_system.Box, __spreadProps(__spreadValues({
612
+ as: "header"
613
+ }, props), {
614
+ css: styles
615
+ }), children);
616
+ };
617
+
618
+ // src/Headline/Headline.tsx
619
+ var import_react15 = __toESM(require("react"));
620
+ var import_system10 = require("@marigold/system");
621
+ var Headline = (_a) => {
636
622
  var _b = _a, {
623
+ children,
637
624
  variant,
638
- backdropVariant = "backdrop",
639
- children
625
+ size,
626
+ level = "1"
640
627
  } = _b, props = __objRest(_b, [
628
+ "children",
641
629
  "variant",
642
- "backdropVariant",
643
- "children"
630
+ "size",
631
+ "level"
644
632
  ]);
645
- const _a2 = props, { isDismissable, isOpen, onClose } = _a2, restProps = __objRest(_a2, ["isDismissable", "isOpen", "onClose"]);
646
- const ref = import_react17.default.useRef();
647
- const { overlayProps, underlayProps } = (0, import_overlays.useOverlay)({ isDismissable, isOpen, onClose }, ref);
648
- (0, import_overlays.usePreventScroll)();
649
- const { modalProps } = (0, import_overlays.useModal)();
650
- const { dialogProps } = (0, import_dialog.useDialog)(props, ref);
651
- return /* @__PURE__ */ import_react17.default.createElement(import_system.Box, __spreadValues({
633
+ const styles = (0, import_system10.useComponentStyles)("Headline", {
634
+ variant,
635
+ size: size != null ? size : `level-${level}`
636
+ });
637
+ return /* @__PURE__ */ import_react15.default.createElement(import_system10.Box, __spreadProps(__spreadValues({
638
+ as: `h${level}`
639
+ }, props), {
640
+ css: styles
641
+ }), children);
642
+ };
643
+
644
+ // src/Dialog/Context.ts
645
+ var import_react16 = require("react");
646
+ var DialogContext = (0, import_react16.createContext)({});
647
+ var useDialogContext = () => (0, import_react16.useContext)(DialogContext);
648
+
649
+ // src/Dialog/DialogTrigger.tsx
650
+ var import_react21 = __toESM(require("react"));
651
+ var import_interactions2 = require("@react-aria/interactions");
652
+ var import_overlays4 = require("@react-stately/overlays");
653
+
654
+ // src/Overlay/Modal.tsx
655
+ var import_react18 = __toESM(require("react"));
656
+ var import_focus3 = require("@react-aria/focus");
657
+ var import_overlays = require("@react-aria/overlays");
658
+ var import_utils2 = require("@react-aria/utils");
659
+
660
+ // src/Overlay/Underlay.tsx
661
+ var import_react17 = __toESM(require("react"));
662
+ var import_system11 = require("@marigold/system");
663
+ var Underlay = (_a) => {
664
+ var _b = _a, { size, variant } = _b, props = __objRest(_b, ["size", "variant"]);
665
+ const styles = (0, import_system11.useComponentStyles)("Underlay", { size, variant });
666
+ return /* @__PURE__ */ import_react17.default.createElement(import_system11.Box, __spreadValues({
652
667
  __baseCSS: {
653
- display: "grid",
654
- placeItems: "center",
655
668
  position: "fixed",
656
- zIndex: 100,
657
- top: 0,
658
- left: 0,
659
- bottom: 0,
660
- right: 0
669
+ inset: 0,
670
+ zIndex: 1
661
671
  },
662
- variant: `dialog.${backdropVariant}`
663
- }, underlayProps), /* @__PURE__ */ import_react17.default.createElement(import_focus2.FocusScope, {
672
+ css: styles
673
+ }, props));
674
+ };
675
+
676
+ // src/Overlay/Modal.tsx
677
+ var Modal = (0, import_react18.forwardRef)((_a, ref) => {
678
+ var _b = _a, { children, open, dismissable, keyboardDismissable, onClose } = _b, props = __objRest(_b, ["children", "open", "dismissable", "keyboardDismissable", "onClose"]);
679
+ const modalRef = (0, import_utils2.useObjectRef)(ref);
680
+ const { overlayProps, underlayProps } = (0, import_overlays.useOverlay)({
681
+ isOpen: open,
682
+ onClose,
683
+ isDismissable: dismissable,
684
+ isKeyboardDismissDisabled: !keyboardDismissable
685
+ }, modalRef);
686
+ (0, import_overlays.usePreventScroll)();
687
+ const { modalProps } = (0, import_overlays.useModal)({});
688
+ return /* @__PURE__ */ import_react18.default.createElement(import_focus3.FocusScope, {
664
689
  contain: true,
665
690
  restoreFocus: true,
666
691
  autoFocus: true
667
- }, /* @__PURE__ */ import_react17.default.createElement(import_system.Box, __spreadValues(__spreadProps(__spreadValues(__spreadValues(__spreadValues({}, overlayProps), dialogProps), modalProps), {
668
- ref,
669
- variant: variant ? `dialog.${variant}` : `dialog`
670
- }), restProps), children)));
692
+ }, /* @__PURE__ */ import_react18.default.createElement(Underlay, __spreadValues({}, underlayProps)), /* @__PURE__ */ import_react18.default.createElement("div", __spreadValues({
693
+ style: {
694
+ display: "flex",
695
+ alignItems: "center",
696
+ justifyContent: "center",
697
+ position: "fixed",
698
+ inset: 0,
699
+ zIndex: 2,
700
+ pointerEvents: "none"
701
+ },
702
+ ref: modalRef
703
+ }, (0, import_utils2.mergeProps)(props, overlayProps, modalProps)), /* @__PURE__ */ import_react18.default.createElement("div", {
704
+ style: { pointerEvents: "auto" }
705
+ }, children)));
706
+ });
707
+
708
+ // src/Overlay/Overlay.tsx
709
+ var import_react19 = __toESM(require("react"));
710
+ var import_overlays2 = require("@react-aria/overlays");
711
+ var Overlay = (_a) => {
712
+ var _b = _a, {
713
+ children,
714
+ open = false,
715
+ container = document.body
716
+ } = _b, props = __objRest(_b, [
717
+ "children",
718
+ "open",
719
+ "container"
720
+ ]);
721
+ if (!open) {
722
+ return null;
723
+ }
724
+ return /* @__PURE__ */ import_react19.default.createElement(import_overlays2.OverlayContainer, {
725
+ portalContainer: container
726
+ }, /* @__PURE__ */ import_react19.default.createElement(import_system.Box, __spreadValues({}, props), children));
671
727
  };
672
728
 
673
- // src/Dialog/Dialog.tsx
674
- var Dialog = (_a) => {
729
+ // src/Overlay/Popover.tsx
730
+ var import_react20 = __toESM(require("react"));
731
+ var import_overlays3 = require("@react-aria/overlays");
732
+ var import_utils3 = require("@react-aria/utils");
733
+ var Popover = (0, import_react20.forwardRef)((_a, ref) => {
675
734
  var _b = _a, {
676
- backdropVariant,
677
735
  children,
678
- className,
679
- close,
680
- isOpen,
681
- title,
682
- variant
736
+ open,
737
+ dismissable,
738
+ keyboardDismissDisabled,
739
+ shouldCloseOnBlur,
740
+ minWidth = 0
683
741
  } = _b, props = __objRest(_b, [
684
- "backdropVariant",
685
742
  "children",
686
- "className",
687
- "close",
688
- "isOpen",
689
- "title",
690
- "variant"
743
+ "open",
744
+ "dismissable",
745
+ "keyboardDismissDisabled",
746
+ "shouldCloseOnBlur",
747
+ "minWidth"
691
748
  ]);
692
- const closeButtonRef = import_react18.default.useRef();
693
- const { buttonProps: closeButtonProps } = (0, import_button2.useButton)({
694
- onPress: () => close()
695
- }, closeButtonRef);
696
- return /* @__PURE__ */ import_react18.default.createElement(import_overlays3.OverlayContainer, null, /* @__PURE__ */ import_react18.default.createElement(ModalDialog, __spreadValues({
697
- variant,
698
- backdropVariant,
699
- isOpen,
700
- onClose: close,
701
- isDismissable: true
702
- }, props), /* @__PURE__ */ import_react18.default.createElement(import_system.Box, {
749
+ const fallbackRef = (0, import_react20.useRef)(null);
750
+ const popoverRef = ref || fallbackRef;
751
+ const { overlayProps } = (0, import_overlays3.useOverlay)(__spreadValues({
752
+ isOpen: open,
753
+ isDismissable: dismissable,
754
+ isKeyboardDismissDisabled: keyboardDismissDisabled,
755
+ shouldCloseOnBlur
756
+ }, props), popoverRef);
757
+ const { modalProps } = (0, import_overlays3.useModal)({});
758
+ const style = { minWidth };
759
+ return /* @__PURE__ */ import_react20.default.createElement(Overlay, {
760
+ open
761
+ }, /* @__PURE__ */ import_react20.default.createElement(import_system.Box, __spreadValues({
762
+ ref: popoverRef,
763
+ role: "presentation"
764
+ }, (0, import_utils3.mergeProps)(props, overlayProps, modalProps, style)), children));
765
+ });
766
+
767
+ // src/Dialog/DialogTrigger.tsx
768
+ var DialogTrigger = ({
769
+ children,
770
+ dismissable = true,
771
+ keyboardDismissable = true
772
+ }) => {
773
+ const [dialogTrigger, dialog] = import_react21.default.Children.toArray(children);
774
+ const dialogTriggerRef = (0, import_react21.useRef)(null);
775
+ const state = (0, import_overlays4.useOverlayTriggerState)({});
776
+ const ctx = { open: state.isOpen, close: state.close };
777
+ return /* @__PURE__ */ import_react21.default.createElement(DialogContext.Provider, {
778
+ value: ctx
779
+ }, /* @__PURE__ */ import_react21.default.createElement(import_interactions2.PressResponder, {
780
+ ref: dialogTriggerRef,
781
+ isPressed: state.isOpen,
782
+ onPress: state.toggle
783
+ }, dialogTrigger), /* @__PURE__ */ import_react21.default.createElement(Overlay, {
784
+ open: state.isOpen
785
+ }, /* @__PURE__ */ import_react21.default.createElement(Modal, {
786
+ open: state.isOpen,
787
+ onClose: state.close,
788
+ dismissable,
789
+ keyboardDismissable
790
+ }, dialog)));
791
+ };
792
+
793
+ // src/Dialog/Dialog.tsx
794
+ var CloseButton = ({ css }) => {
795
+ const ref = (0, import_react22.useRef)(null);
796
+ const { close } = useDialogContext();
797
+ const { buttonProps } = (0, import_button2.useButton)({
798
+ onPress: () => close == null ? void 0 : close()
799
+ }, ref);
800
+ return /* @__PURE__ */ import_react22.default.createElement(import_system12.Box, {
801
+ css: { display: "flex", justifyContent: "flex-end" }
802
+ }, /* @__PURE__ */ import_react22.default.createElement(import_system12.Box, __spreadValues({
803
+ as: "button",
703
804
  __baseCSS: {
704
- display: "flex",
705
- justifyContent: "space-between",
706
- borderRadius: "small",
707
- pl: "large",
708
- pb: "large"
805
+ outline: "none",
806
+ border: "none",
807
+ cursor: "pointer",
808
+ height: 16,
809
+ width: 16,
810
+ lineHeight: 1,
811
+ p: 0
709
812
  },
710
- className
711
- }, /* @__PURE__ */ import_react18.default.createElement(import_system.Box, {
712
- pt: "medium"
713
- }, title && /* @__PURE__ */ import_react18.default.createElement(Text, {
714
- as: "h4",
715
- variant: "headline4"
716
- }, title), children), /* @__PURE__ */ import_react18.default.createElement(import_system.Box, {
717
- __baseCSS: {
718
- display: "flex",
719
- justifyContent: "flex-end",
720
- alignItems: "start",
721
- paddingTop: "xsmall",
722
- paddingX: "xsmall"
723
- }
724
- }, /* @__PURE__ */ import_react18.default.createElement(import_system.Box, __spreadProps(__spreadValues({
725
- as: Button,
726
- __baseCSS: {
727
- color: "text",
728
- bg: "transparent",
729
- lineHeight: "xsmall",
730
- px: "xxsmall",
731
- ":hover": {
732
- color: "text",
733
- bg: "transparent",
734
- cursor: "pointer"
735
- },
736
- ":focus": {
737
- outline: 0
738
- }
739
- }
740
- }, closeButtonProps), {
741
- ref: closeButtonRef
742
- }), /* @__PURE__ */ import_react18.default.createElement(import_icons3.Close, {
743
- size: 16
744
- }))))));
813
+ css,
814
+ ref
815
+ }, buttonProps), /* @__PURE__ */ import_react22.default.createElement("svg", {
816
+ viewBox: "0 0 20 20",
817
+ fill: "currentColor"
818
+ }, /* @__PURE__ */ import_react22.default.createElement("path", {
819
+ fillRule: "evenodd",
820
+ clipRule: "evenodd",
821
+ d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z"
822
+ }))));
745
823
  };
746
- var useDialogButtonProps = () => {
747
- const state = (0, import_overlays2.useOverlayTriggerState)({});
748
- const openButtonRef = import_react18.default.useRef();
749
- const { buttonProps: openButtonProps } = (0, import_button2.useButton)({
750
- onPress: () => state.open()
751
- }, openButtonRef);
752
- return {
753
- state,
754
- openButtonProps,
755
- openButtonRef
756
- };
824
+ var addTitleProps = (children, titleProps) => {
825
+ const childs = import_react22.default.Children.toArray(children);
826
+ const titleIndex = childs.findIndex((child) => import_react22.default.isValidElement(child) && (child.type === Header || child.type === Headline));
827
+ if (titleIndex < 0) {
828
+ console.warn("No child in <Dialog> found that can act as title for accessibility. Please add a <Header> or <Headline> as direct child.");
829
+ return children;
830
+ }
831
+ const titleChild = import_react22.default.cloneElement(childs[titleIndex], titleProps);
832
+ childs.splice(titleIndex, 1, titleChild);
833
+ return childs;
834
+ };
835
+ var Dialog = (_a) => {
836
+ var _b = _a, {
837
+ children,
838
+ variant,
839
+ size,
840
+ closeButton
841
+ } = _b, props = __objRest(_b, [
842
+ "children",
843
+ "variant",
844
+ "size",
845
+ "closeButton"
846
+ ]);
847
+ const ref = (0, import_react22.useRef)(null);
848
+ const { close } = useDialogContext();
849
+ const { dialogProps, titleProps } = (0, import_dialog.useDialog)(props, ref);
850
+ const styles = (0, import_system12.useComponentStyles)("Dialog", { variant, size }, { parts: ["container", "closeButton"] });
851
+ return /* @__PURE__ */ import_react22.default.createElement(import_system12.Box, __spreadValues({
852
+ __baseCSS: { bg: "#fff" },
853
+ css: styles.container
854
+ }, dialogProps), closeButton && /* @__PURE__ */ import_react22.default.createElement(CloseButton, {
855
+ css: styles.closeButton
856
+ }), typeof children === "function" ? children({ close, titleProps }) : props["aria-labelledby"] ? children : addTitleProps(children, titleProps));
757
857
  };
858
+ Dialog.Trigger = DialogTrigger;
758
859
 
759
860
  // src/Divider/Divider.tsx
760
- var import_react19 = __toESM(require("react"));
861
+ var import_react23 = __toESM(require("react"));
761
862
  var import_separator = require("@react-aria/separator");
863
+ var import_system13 = require("@marigold/system");
762
864
  var Divider = (_a) => {
763
- var _b = _a, { variant = "" } = _b, props = __objRest(_b, ["variant"]);
865
+ var _b = _a, { variant } = _b, props = __objRest(_b, ["variant"]);
764
866
  const { separatorProps } = (0, import_separator.useSeparator)(props);
765
- return /* @__PURE__ */ import_react19.default.createElement(import_system.Box, __spreadValues(__spreadValues({
766
- __baseCSS: { width: "100%", height: "1px", m: "none", bg: "text" },
767
- variant: `divider.${variant}`
867
+ const styles = (0, import_system13.useComponentStyles)("Divider", { variant });
868
+ return /* @__PURE__ */ import_react23.default.createElement(import_system13.Box, __spreadValues(__spreadValues({
869
+ css: styles
768
870
  }, props), separatorProps));
769
871
  };
770
872
 
771
- // src/Field/Field.tsx
772
- var import_react20 = __toESM(require("react"));
773
- var import_textfield = require("@react-aria/textfield");
774
- var import_icons4 = require("@marigold/icons");
775
- var Field = (_a) => {
776
- var _b = _a, {
777
- type = "text",
778
- variant = "",
779
- labelVariant = "above",
780
- htmlFor,
781
- required,
782
- error,
783
- errorMessage
784
- } = _b, props = __objRest(_b, [
785
- "type",
786
- "variant",
787
- "labelVariant",
788
- "htmlFor",
789
- "required",
790
- "error",
791
- "errorMessage"
792
- ]);
793
- const ref = (0, import_react20.useRef)(null);
794
- const { labelProps, inputProps, errorMessageProps } = (0, import_textfield.useTextField)(props, ref);
795
- return /* @__PURE__ */ import_react20.default.createElement(import_react20.default.Fragment, null, /* @__PURE__ */ import_react20.default.createElement(Label, __spreadValues({
796
- variant: labelVariant,
797
- htmlFor,
798
- required
799
- }, labelProps), props.label), /* @__PURE__ */ import_react20.default.createElement(import_system.Box, __spreadValues(__spreadProps(__spreadValues({
800
- as: "input",
801
- type,
802
- id: htmlFor,
803
- variant: `input.${variant}`
804
- }, inputProps), {
805
- ref
806
- }), props)), error && errorMessage && /* @__PURE__ */ import_react20.default.createElement(ValidationMessage, __spreadValues({}, errorMessageProps), /* @__PURE__ */ import_react20.default.createElement(import_icons4.Exclamation, {
807
- size: 16
808
- }), errorMessage));
873
+ // src/Footer/Footer.tsx
874
+ var import_react24 = __toESM(require("react"));
875
+ var import_system14 = require("@marigold/system");
876
+ var Footer = (_a) => {
877
+ var _b = _a, { children, variant, size } = _b, props = __objRest(_b, ["children", "variant", "size"]);
878
+ const styles = (0, import_system14.useComponentStyles)("Footer", { variant, size });
879
+ return /* @__PURE__ */ import_react24.default.createElement(import_system.Box, __spreadProps(__spreadValues({
880
+ as: "footer"
881
+ }, props), {
882
+ css: styles
883
+ }), children);
809
884
  };
810
885
 
811
- // src/VisuallyHidden/VisuallyHidden.tsx
812
- var import_visually_hidden2 = require("@react-aria/visually-hidden");
813
-
814
886
  // src/Image/Image.tsx
815
- var import_react21 = __toESM(require("react"));
887
+ var import_react25 = __toESM(require("react"));
888
+ var import_system15 = require("@marigold/system");
816
889
  var Image = (_a) => {
890
+ var _b = _a, { variant } = _b, props = __objRest(_b, ["variant"]);
891
+ const styles = (0, import_system15.useComponentStyles)("Image", { variant });
892
+ return /* @__PURE__ */ import_react25.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
893
+ as: "img",
894
+ css: styles
895
+ }));
896
+ };
897
+
898
+ // src/Inline/Inline.tsx
899
+ var import_react26 = __toESM(require("react"));
900
+ var ALIGNMENT_X = {
901
+ left: "flex-start",
902
+ center: "center",
903
+ right: "flex-end"
904
+ };
905
+ var ALIGNMENT_Y = {
906
+ top: "flex-start",
907
+ center: "center",
908
+ bottom: "flex-end"
909
+ };
910
+ var Inline = (_a) => {
817
911
  var _b = _a, {
818
- variant = "fullWidth"
912
+ space = "none",
913
+ alignX = "left",
914
+ alignY = "center",
915
+ children
819
916
  } = _b, props = __objRest(_b, [
820
- "variant"
917
+ "space",
918
+ "alignX",
919
+ "alignY",
920
+ "children"
821
921
  ]);
822
- return /* @__PURE__ */ import_react21.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
823
- as: "img",
824
- variant: `image.${variant}`
825
- }));
922
+ return /* @__PURE__ */ import_react26.default.createElement(import_system.Box, __spreadValues({
923
+ css: {
924
+ display: "flex",
925
+ flexWrap: "wrap",
926
+ gap: space,
927
+ alignItems: ALIGNMENT_Y[alignY],
928
+ justifyContent: ALIGNMENT_X[alignX]
929
+ }
930
+ }, props), children);
826
931
  };
827
932
 
933
+ // src/Input/Input.tsx
934
+ var import_react27 = __toESM(require("react"));
935
+ var import_system16 = require("@marigold/system");
936
+ var Input = (0, import_react27.forwardRef)((_a, ref) => {
937
+ var _b = _a, { variant, size, type = "text" } = _b, props = __objRest(_b, ["variant", "size", "type"]);
938
+ const styles = (0, import_system16.useComponentStyles)("Input", { variant, size });
939
+ return /* @__PURE__ */ import_react27.default.createElement(import_system16.Box, __spreadProps(__spreadValues({}, props), {
940
+ ref,
941
+ as: "input",
942
+ type,
943
+ css: styles
944
+ }));
945
+ });
946
+
828
947
  // src/Link/Link.tsx
829
- var import_react22 = __toESM(require("react"));
948
+ var import_react28 = __toESM(require("react"));
830
949
  var import_link = require("@react-aria/link");
831
- var import_system3 = require("@marigold/system");
950
+ var import_system17 = require("@marigold/system");
832
951
  var Link = (_a) => {
833
952
  var _b = _a, {
834
953
  as = "a",
835
- variant = "",
954
+ variant,
955
+ size,
836
956
  children,
837
957
  disabled
838
958
  } = _b, props = __objRest(_b, [
839
959
  "as",
840
960
  "variant",
961
+ "size",
841
962
  "children",
842
963
  "disabled"
843
964
  ]);
844
- const ref = (0, import_react22.useRef)(null);
965
+ const ref = (0, import_react28.useRef)(null);
845
966
  const { linkProps } = (0, import_link.useLink)(__spreadProps(__spreadValues({}, props), {
846
967
  elementType: typeof as === "string" ? as : "span",
847
968
  isDisabled: disabled
848
969
  }), ref);
849
- return /* @__PURE__ */ import_react22.default.createElement(import_system.Box, __spreadValues(__spreadValues({
970
+ const styles = (0, import_system17.useComponentStyles)("Link", { variant, size });
971
+ return /* @__PURE__ */ import_react28.default.createElement(import_system.Box, __spreadValues(__spreadValues({
850
972
  as,
851
- variant: (0, import_system3.conditional)(`link.${variant}`, { disabled }),
852
- css: { cursor: disabled ? "default" : "pointer" },
973
+ css: styles,
853
974
  ref
854
975
  }, props), linkProps), children);
855
976
  };
856
977
 
857
978
  // src/Menu/Menu.tsx
858
- var import_react23 = __toESM(require("react"));
859
- var Menu = (_a) => {
860
- var _b = _a, {
861
- variant = "default",
862
- label = "Menu",
863
- onClick,
864
- show = false,
865
- children
866
- } = _b, props = __objRest(_b, [
867
- "variant",
868
- "label",
869
- "onClick",
870
- "show",
871
- "children"
872
- ]);
873
- return /* @__PURE__ */ import_react23.default.createElement(import_system.Box, __spreadValues({
874
- variant: `menu.${variant}`
875
- }, props), /* @__PURE__ */ import_react23.default.createElement(Button, {
876
- onClick,
877
- variant: "menu"
878
- }, label), show ? /* @__PURE__ */ import_react23.default.createElement(import_system.Box, {
879
- display: "block",
880
- position: "absolute",
881
- minWidth: "120px",
882
- borderRadius: "2px"
883
- }, children) : null);
884
- };
885
-
886
- // src/MenuItem/MenuItem.tsx
887
- var import_react24 = __toESM(require("react"));
888
- var MenuItem = (_a) => {
889
- var _b = _a, {
890
- variant = "default",
891
- children
892
- } = _b, props = __objRest(_b, [
893
- "variant",
894
- "children"
895
- ]);
896
- return /* @__PURE__ */ import_react24.default.createElement(import_system.Box, {
897
- variant: `menuItem.${variant}`
898
- }, /* @__PURE__ */ import_react24.default.createElement(Link, __spreadValues({
899
- variant: "menuItemLink"
900
- }, props), children));
979
+ var import_react32 = __toESM(require("react"));
980
+ var import_focus5 = require("@react-aria/focus");
981
+ var import_menu4 = require("@react-aria/menu");
982
+ var import_overlays6 = require("@react-aria/overlays");
983
+ var import_collections = require("@react-stately/collections");
984
+ var import_tree = require("@react-stately/tree");
985
+ var import_system19 = require("@marigold/system");
986
+
987
+ // src/Menu/Context.ts
988
+ var import_react29 = require("react");
989
+ var MenuContext = (0, import_react29.createContext)({});
990
+ var useMenuContext = () => (0, import_react29.useContext)(MenuContext);
991
+
992
+ // src/Menu/MenuTrigger.tsx
993
+ var import_react30 = __toESM(require("react"));
994
+ var import_menu = require("@react-stately/menu");
995
+ var import_menu2 = require("@react-aria/menu");
996
+ var import_overlays5 = require("@react-aria/overlays");
997
+ var import_interactions3 = require("@react-aria/interactions");
998
+ var MenuTrigger = ({ disabled, children }) => {
999
+ const [menuTrigger, menu] = import_react30.default.Children.toArray(children);
1000
+ const menuTriggerRef = (0, import_react30.useRef)(null);
1001
+ const overlayRef = (0, import_react30.useRef)(null);
1002
+ const state = (0, import_menu.useMenuTriggerState)({});
1003
+ const { menuTriggerProps, menuProps } = (0, import_menu2.useMenuTrigger)({ trigger: "press", isDisabled: disabled }, state, menuTriggerRef);
1004
+ const { overlayProps: positionProps } = (0, import_overlays5.useOverlayPosition)({
1005
+ targetRef: menuTriggerRef,
1006
+ overlayRef,
1007
+ isOpen: state.isOpen
1008
+ });
1009
+ const menuContext = __spreadProps(__spreadValues({}, menuProps), {
1010
+ open: state.isOpen,
1011
+ onClose: state.close,
1012
+ autoFocus: state.focusStrategy,
1013
+ triggerWidth: menuTriggerRef.current ? menuTriggerRef.current.offsetWidth : void 0
1014
+ });
1015
+ return /* @__PURE__ */ import_react30.default.createElement(MenuContext.Provider, {
1016
+ value: menuContext
1017
+ }, /* @__PURE__ */ import_react30.default.createElement(import_interactions3.PressResponder, __spreadProps(__spreadValues({}, menuTriggerProps), {
1018
+ ref: menuTriggerRef,
1019
+ isPressed: state.isOpen
1020
+ }), menuTrigger), /* @__PURE__ */ import_react30.default.createElement(Popover, __spreadValues({
1021
+ open: state.isOpen,
1022
+ onClose: state.close,
1023
+ dismissable: true,
1024
+ shouldCloseOnBlur: true,
1025
+ ref: overlayRef
1026
+ }, positionProps), menu));
901
1027
  };
902
1028
 
1029
+ // src/Menu/MenuItem.tsx
1030
+ var import_react31 = __toESM(require("react"));
1031
+ var import_focus4 = require("@react-aria/focus");
1032
+ var import_menu3 = require("@react-aria/menu");
1033
+ var import_utils4 = require("@react-aria/utils");
1034
+ var import_system18 = require("@marigold/system");
1035
+ var MenuItem = ({ item, state, onAction, css }) => {
1036
+ const ref = (0, import_react31.useRef)(null);
1037
+ const { onClose } = useMenuContext();
1038
+ const { menuItemProps } = (0, import_menu3.useMenuItem)({
1039
+ key: item.key,
1040
+ onAction,
1041
+ onClose
1042
+ }, state, ref);
1043
+ const { isFocusVisible, focusProps } = (0, import_focus4.useFocusRing)();
1044
+ const stateProps = (0, import_system18.useStateProps)({
1045
+ focus: isFocusVisible
1046
+ });
1047
+ return /* @__PURE__ */ import_react31.default.createElement(import_system18.Box, __spreadValues(__spreadValues({
1048
+ as: "li",
1049
+ ref,
1050
+ __baseCSS: {
1051
+ "&:focus": {
1052
+ outline: 0
1053
+ }
1054
+ },
1055
+ css
1056
+ }, (0, import_utils4.mergeProps)(menuItemProps, focusProps)), stateProps), item.rendered);
1057
+ };
1058
+
1059
+ // src/Menu/Menu.tsx
1060
+ var Menu = (_a) => {
1061
+ var _b = _a, { variant, size } = _b, props = __objRest(_b, ["variant", "size"]);
1062
+ const _a2 = useMenuContext(), { triggerWidth } = _a2, menuContext = __objRest(_a2, ["triggerWidth"]);
1063
+ const ownProps = __spreadValues(__spreadValues({}, props), menuContext);
1064
+ const ref = (0, import_react32.useRef)(null);
1065
+ const state = (0, import_tree.useTreeState)(__spreadProps(__spreadValues({}, ownProps), { selectionMode: "none" }));
1066
+ const { menuProps } = (0, import_menu4.useMenu)(ownProps, state, ref);
1067
+ const styles = (0, import_system19.useComponentStyles)("Menu", { variant, size }, { parts: ["container", "item"] });
1068
+ return /* @__PURE__ */ import_react32.default.createElement(import_focus5.FocusScope, {
1069
+ restoreFocus: true
1070
+ }, /* @__PURE__ */ import_react32.default.createElement("div", null, /* @__PURE__ */ import_react32.default.createElement(import_overlays6.DismissButton, {
1071
+ onDismiss: ownProps.onClose
1072
+ }), /* @__PURE__ */ import_react32.default.createElement(import_system19.Box, __spreadValues({
1073
+ as: "ul",
1074
+ ref,
1075
+ style: { width: triggerWidth },
1076
+ __baseCSS: {
1077
+ listStyle: "none",
1078
+ p: 0,
1079
+ overflowWrap: "break-word"
1080
+ },
1081
+ css: styles.container
1082
+ }, menuProps), [...state.collection].map((item) => /* @__PURE__ */ import_react32.default.createElement(MenuItem, {
1083
+ key: item.key,
1084
+ item,
1085
+ state,
1086
+ onAction: props.onSelect,
1087
+ css: styles.item
1088
+ }))), /* @__PURE__ */ import_react32.default.createElement(import_overlays6.DismissButton, {
1089
+ onDismiss: ownProps.onClose
1090
+ })));
1091
+ };
1092
+ Menu.Trigger = MenuTrigger;
1093
+ Menu.Item = import_collections.Item;
1094
+
903
1095
  // src/Message/Message.tsx
904
- var import_react25 = __toESM(require("react"));
905
- var import_icons5 = require("@marigold/icons");
1096
+ var import_react33 = __toESM(require("react"));
1097
+ var import_icons2 = require("@marigold/icons");
1098
+ var import_system20 = require("@marigold/system");
906
1099
  var Message = (_a) => {
907
1100
  var _b = _a, {
908
1101
  messageTitle,
909
1102
  variant = "info",
910
- className,
1103
+ size,
911
1104
  children
912
1105
  } = _b, props = __objRest(_b, [
913
1106
  "messageTitle",
914
1107
  "variant",
915
- "className",
1108
+ "size",
916
1109
  "children"
917
1110
  ]);
918
- var icon = /* @__PURE__ */ import_react25.default.createElement(import_icons5.Info, null);
1111
+ const styles = (0, import_system20.useComponentStyles)("Message", {
1112
+ variant,
1113
+ size
1114
+ }, { parts: ["container", "icon", "title", "content"] });
1115
+ var icon = /* @__PURE__ */ import_react33.default.createElement(import_icons2.Info, null);
919
1116
  if (variant === "warning") {
920
- icon = /* @__PURE__ */ import_react25.default.createElement(import_icons5.Notification, null);
1117
+ icon = /* @__PURE__ */ import_react33.default.createElement(import_icons2.Notification, null);
921
1118
  }
922
1119
  if (variant === "error") {
923
- icon = /* @__PURE__ */ import_react25.default.createElement(import_icons5.Exclamation, null);
1120
+ icon = /* @__PURE__ */ import_react33.default.createElement(import_icons2.Exclamation, null);
924
1121
  }
925
- return /* @__PURE__ */ import_react25.default.createElement(import_system.Box, __spreadValues({
926
- display: "inline-block",
927
- variant: `message.${variant}`,
928
- className
929
- }, props), /* @__PURE__ */ import_react25.default.createElement(import_system.Box, {
930
- display: "flex",
931
- alignItems: "center",
932
- variant: "message.title"
933
- }, icon, /* @__PURE__ */ import_react25.default.createElement(Text, {
934
- as: "h4",
935
- variant: "headline4"
936
- }, messageTitle)), /* @__PURE__ */ import_react25.default.createElement(import_system.Box, {
937
- css: { color: "black" }
1122
+ return /* @__PURE__ */ import_react33.default.createElement(import_system.Box, __spreadValues({
1123
+ css: styles.container
1124
+ }, props), /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1125
+ __baseCSS: { display: "flex", alignItems: "center", gap: 4 }
1126
+ }, /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1127
+ role: "presentation",
1128
+ css: styles.icon
1129
+ }, icon), /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1130
+ css: styles.title
1131
+ }, messageTitle)), /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1132
+ css: styles.content
938
1133
  }, children));
939
1134
  };
940
1135
 
1136
+ // src/NumberField/NumberField.tsx
1137
+ var import_react37 = __toESM(require("react"));
1138
+ var import_focus6 = require("@react-aria/focus");
1139
+ var import_interactions5 = require("@react-aria/interactions");
1140
+ var import_i18n = require("@react-aria/i18n");
1141
+ var import_numberfield = require("@react-aria/numberfield");
1142
+ var import_utils6 = require("@react-aria/utils");
1143
+ var import_numberfield2 = require("@react-stately/numberfield");
1144
+ var import_system24 = require("@marigold/system");
1145
+
1146
+ // src/FieldBase/FieldBase.tsx
1147
+ var import_react35 = __toESM(require("react"));
1148
+ var import_system22 = require("@marigold/system");
1149
+
1150
+ // src/HelpText/HelpText.tsx
1151
+ var import_react34 = __toESM(require("react"));
1152
+ var import_icons3 = require("@marigold/icons");
1153
+ var import_system21 = require("@marigold/system");
1154
+ var HelpText = (_a) => {
1155
+ var _b = _a, {
1156
+ variant,
1157
+ size,
1158
+ disabled,
1159
+ description,
1160
+ descriptionProps,
1161
+ error,
1162
+ errorMessage,
1163
+ errorMessageProps
1164
+ } = _b, props = __objRest(_b, [
1165
+ "variant",
1166
+ "size",
1167
+ "disabled",
1168
+ "description",
1169
+ "descriptionProps",
1170
+ "error",
1171
+ "errorMessage",
1172
+ "errorMessageProps"
1173
+ ]);
1174
+ var _a2;
1175
+ const hasErrorMessage = errorMessage && error;
1176
+ const styles = (0, import_system21.useComponentStyles)("HelpText", { variant, size }, { parts: ["container", "icon"] });
1177
+ return /* @__PURE__ */ import_react34.default.createElement(import_system21.Box, __spreadProps(__spreadValues(__spreadValues({}, hasErrorMessage ? errorMessageProps : descriptionProps), props), {
1178
+ __baseCSS: { display: "flex", alignItems: "center", gap: 4 },
1179
+ css: styles.container
1180
+ }), hasErrorMessage ? /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, /* @__PURE__ */ import_react34.default.createElement(import_icons3.Exclamation, {
1181
+ role: "presentation",
1182
+ size: ((_a2 = styles == null ? void 0 : styles.icon) == null ? void 0 : _a2.size) || 16
1183
+ }), errorMessage) : /* @__PURE__ */ import_react34.default.createElement(import_react34.default.Fragment, null, description));
1184
+ };
1185
+
1186
+ // src/FieldBase/FieldBase.tsx
1187
+ var FieldBase = ({
1188
+ children,
1189
+ variant,
1190
+ size,
1191
+ width = "100%",
1192
+ disabled,
1193
+ required,
1194
+ label,
1195
+ labelProps,
1196
+ description,
1197
+ descriptionProps,
1198
+ error,
1199
+ errorMessage,
1200
+ errorMessageProps,
1201
+ stateProps
1202
+ }) => {
1203
+ const hasHelpText = !!description || errorMessage && error;
1204
+ return /* @__PURE__ */ import_react35.default.createElement(import_system22.Box, {
1205
+ css: { display: "flex", flexDirection: "column", width }
1206
+ }, label && /* @__PURE__ */ import_react35.default.createElement(Label, __spreadValues(__spreadValues({
1207
+ required,
1208
+ variant,
1209
+ size
1210
+ }, labelProps), stateProps), label), children, hasHelpText && /* @__PURE__ */ import_react35.default.createElement(HelpText, __spreadProps(__spreadValues({}, stateProps), {
1211
+ variant,
1212
+ size,
1213
+ disabled,
1214
+ description,
1215
+ descriptionProps,
1216
+ error,
1217
+ errorMessage,
1218
+ errorMessageProps
1219
+ })));
1220
+ };
1221
+
1222
+ // src/NumberField/StepButton.tsx
1223
+ var import_react36 = __toESM(require("react"));
1224
+ var import_button3 = require("@react-aria/button");
1225
+ var import_interactions4 = require("@react-aria/interactions");
1226
+ var import_utils5 = require("@react-aria/utils");
1227
+ var import_system23 = require("@marigold/system");
1228
+ var Plus = () => /* @__PURE__ */ import_react36.default.createElement(import_system23.Box, {
1229
+ as: "svg",
1230
+ __baseCSS: { width: 16, height: 16 },
1231
+ viewBox: "0 0 20 20",
1232
+ fill: "currentColor"
1233
+ }, /* @__PURE__ */ import_react36.default.createElement("path", {
1234
+ fillRule: "evenodd",
1235
+ clipRule: "evenodd",
1236
+ d: "M10 3a1 1 0 011 1v5h5a1 1 0 110 2h-5v5a1 1 0 11-2 0v-5H4a1 1 0 110-2h5V4a1 1 0 011-1z"
1237
+ }));
1238
+ var Minus = () => /* @__PURE__ */ import_react36.default.createElement(import_system23.Box, {
1239
+ as: "svg",
1240
+ __baseCSS: { width: 16, height: 16 },
1241
+ viewBox: "0 0 20 20",
1242
+ fill: "currentColor"
1243
+ }, /* @__PURE__ */ import_react36.default.createElement("path", {
1244
+ fillRule: "evenodd",
1245
+ clipRule: "evenodd",
1246
+ d: "M3 10a1 1 0 011-1h12a1 1 0 110 2H4a1 1 0 01-1-1z"
1247
+ }));
1248
+ var StepButton = (_a) => {
1249
+ var _b = _a, { direction, css } = _b, props = __objRest(_b, ["direction", "css"]);
1250
+ const ref = (0, import_react36.useRef)(null);
1251
+ const { buttonProps, isPressed } = (0, import_button3.useButton)(__spreadProps(__spreadValues({}, props), { elementType: "div" }), ref);
1252
+ const { hoverProps, isHovered } = (0, import_interactions4.useHover)(props);
1253
+ const stateProps = (0, import_system23.useStateProps)({
1254
+ active: isPressed,
1255
+ hover: isHovered,
1256
+ disabled: props.isDisabled
1257
+ });
1258
+ const Icon3 = direction === "up" ? Plus : Minus;
1259
+ return /* @__PURE__ */ import_react36.default.createElement(import_system23.Box, __spreadValues(__spreadValues({
1260
+ __baseCSS: {
1261
+ display: "flex",
1262
+ alignItems: "center",
1263
+ justifyContent: "center",
1264
+ cursor: props.isDisabled ? "not-allowed" : "pointer"
1265
+ },
1266
+ css
1267
+ }, (0, import_utils5.mergeProps)(buttonProps, hoverProps)), stateProps), /* @__PURE__ */ import_react36.default.createElement(Icon3, null));
1268
+ };
1269
+
1270
+ // src/NumberField/NumberField.tsx
1271
+ var NumberField = (0, import_react37.forwardRef)((_a, ref) => {
1272
+ var _b = _a, {
1273
+ variant,
1274
+ size,
1275
+ width,
1276
+ disabled,
1277
+ required,
1278
+ readOnly,
1279
+ error,
1280
+ hideStepper
1281
+ } = _b, rest = __objRest(_b, [
1282
+ "variant",
1283
+ "size",
1284
+ "width",
1285
+ "disabled",
1286
+ "required",
1287
+ "readOnly",
1288
+ "error",
1289
+ "hideStepper"
1290
+ ]);
1291
+ const props = __spreadValues({
1292
+ isDisabled: disabled,
1293
+ isRequired: required,
1294
+ isReadOnly: readOnly,
1295
+ validationState: error ? "invalid" : "valid"
1296
+ }, rest);
1297
+ const showStepper = !hideStepper;
1298
+ const { locale } = (0, import_i18n.useLocale)();
1299
+ const inputRef = (0, import_utils6.useObjectRef)(ref);
1300
+ const state = (0, import_numberfield2.useNumberFieldState)(__spreadProps(__spreadValues({}, props), { locale }));
1301
+ const {
1302
+ labelProps,
1303
+ groupProps,
1304
+ inputProps,
1305
+ descriptionProps,
1306
+ errorMessageProps,
1307
+ incrementButtonProps,
1308
+ decrementButtonProps
1309
+ } = (0, import_numberfield.useNumberField)(props, state, inputRef);
1310
+ const { hoverProps, isHovered } = (0, import_interactions5.useHover)({ isDisabled: disabled });
1311
+ const { focusProps, isFocused } = (0, import_focus6.useFocusRing)({
1312
+ within: true,
1313
+ isTextInput: true,
1314
+ autoFocus: props.autoFocus
1315
+ });
1316
+ const styles = (0, import_system24.useComponentStyles)("NumberField", { variant, size }, { parts: ["group", "stepper"] });
1317
+ const stateProps = (0, import_system24.useStateProps)({
1318
+ hover: isHovered,
1319
+ focus: isFocused,
1320
+ disabled,
1321
+ readOnly,
1322
+ error
1323
+ });
1324
+ return /* @__PURE__ */ import_react37.default.createElement(FieldBase, {
1325
+ label: props.label,
1326
+ labelProps,
1327
+ required,
1328
+ description: props.description,
1329
+ descriptionProps,
1330
+ error,
1331
+ errorMessage: props.errorMessage,
1332
+ errorMessageProps,
1333
+ stateProps,
1334
+ variant,
1335
+ size,
1336
+ width
1337
+ }, /* @__PURE__ */ import_react37.default.createElement(import_system24.Box, __spreadValues(__spreadValues({
1338
+ "data-group": true,
1339
+ __baseCSS: {
1340
+ display: "flex",
1341
+ alignItems: "stretch",
1342
+ "> input": {
1343
+ flexGrow: 1
1344
+ }
1345
+ },
1346
+ css: styles.group
1347
+ }, (0, import_utils6.mergeProps)(groupProps, focusProps, hoverProps)), stateProps), showStepper && /* @__PURE__ */ import_react37.default.createElement(StepButton, __spreadValues({
1348
+ direction: "down",
1349
+ css: styles.stepper
1350
+ }, decrementButtonProps)), /* @__PURE__ */ import_react37.default.createElement(Input, __spreadValues(__spreadValues({
1351
+ ref: inputRef,
1352
+ variant,
1353
+ size
1354
+ }, inputProps), stateProps)), showStepper && /* @__PURE__ */ import_react37.default.createElement(StepButton, __spreadValues({
1355
+ direction: "up",
1356
+ css: styles.stepper
1357
+ }, incrementButtonProps))));
1358
+ });
1359
+
941
1360
  // src/Provider/index.ts
942
- var import_system5 = require("@marigold/system");
1361
+ var import_system26 = require("@marigold/system");
943
1362
  var import_ssr = require("@react-aria/ssr");
944
1363
 
945
1364
  // src/Provider/MarigoldProvider.tsx
946
- var import_react26 = __toESM(require("react"));
947
- var import_overlays4 = require("@react-aria/overlays");
948
- var import_system4 = require("@marigold/system");
1365
+ var import_react38 = __toESM(require("react"));
1366
+ var import_overlays7 = require("@react-aria/overlays");
1367
+ var import_system25 = require("@marigold/system");
949
1368
  function MarigoldProvider({
950
1369
  theme,
951
1370
  children
952
1371
  }) {
953
- const outer = (0, import_system4.useTheme)();
954
- const isTopLevel = outer.theme === import_system4.__defaultTheme;
955
- return /* @__PURE__ */ import_react26.default.createElement(import_system4.ThemeProvider, {
1372
+ const outer = (0, import_system25.useTheme)();
1373
+ const isTopLevel = outer.theme === import_system25.__defaultTheme;
1374
+ return /* @__PURE__ */ import_react38.default.createElement(import_system25.ThemeProvider, {
956
1375
  theme
957
- }, isTopLevel ? /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, /* @__PURE__ */ import_react26.default.createElement(import_system4.Global, null), /* @__PURE__ */ import_react26.default.createElement(import_overlays4.OverlayProvider, null, children)) : children);
1376
+ }, isTopLevel ? /* @__PURE__ */ import_react38.default.createElement(import_react38.default.Fragment, null, /* @__PURE__ */ import_react38.default.createElement(import_system25.Global, null), /* @__PURE__ */ import_react38.default.createElement(import_overlays7.OverlayProvider, null, children)) : children);
958
1377
  }
959
1378
 
960
1379
  // src/Radio/Radio.tsx
961
- var import_react28 = __toESM(require("react"));
962
- var import_icons6 = require("@marigold/icons");
963
- var import_focus3 = require("@react-aria/focus");
964
- var import_visually_hidden3 = require("@react-aria/visually-hidden");
1380
+ var import_react41 = __toESM(require("react"));
1381
+ var import_interactions6 = require("@react-aria/interactions");
1382
+ var import_focus7 = require("@react-aria/focus");
1383
+ var import_radio3 = require("@react-aria/radio");
1384
+ var import_system28 = require("@marigold/system");
965
1385
 
966
- // src/Radio/RadioIcon.tsx
967
- var import_react27 = __toESM(require("react"));
968
- var import_system6 = require("@marigold/system");
969
- var RadioIcon = ({
970
- variant = "",
971
- checked = false,
972
- disabled = false,
973
- error = false
974
- }) => {
975
- const conditionalStates = disabled ? {
976
- disabled
977
- } : {
978
- checked,
1386
+ // src/Radio/Context.ts
1387
+ var import_react39 = require("react");
1388
+ var RadioGroupContext = (0, import_react39.createContext)(null);
1389
+ var useRadioGroupContext = () => (0, import_react39.useContext)(RadioGroupContext);
1390
+
1391
+ // src/Radio/RadioGroup.tsx
1392
+ var import_react40 = __toESM(require("react"));
1393
+ var import_radio = require("@react-aria/radio");
1394
+ var import_radio2 = require("@react-stately/radio");
1395
+ var import_system27 = require("@marigold/system");
1396
+ var RadioGroup = (_a) => {
1397
+ var _b = _a, {
1398
+ children,
1399
+ orientation = "vertical",
1400
+ size,
1401
+ variant,
1402
+ width,
1403
+ required,
1404
+ disabled,
1405
+ readOnly,
979
1406
  error
980
- };
981
- return /* @__PURE__ */ import_react27.default.createElement(import_system6.SVG, {
982
- width: "16",
983
- height: "32",
984
- viewBox: "0 0 16 32",
985
- fill: "none",
986
- "aria-hidden": "true"
987
- }, /* @__PURE__ */ import_react27.default.createElement(import_system.Box, {
988
- variant: (0, import_system6.conditional)(`radio.${variant}`, conditionalStates),
989
- as: "circle",
990
- cx: "8",
991
- cy: "16",
992
- r: "7.5"
993
- }), checked && /* @__PURE__ */ import_react27.default.createElement("circle", {
994
- fill: "white",
995
- cx: "8",
996
- cy: "16",
997
- r: "3"
998
- }));
1407
+ } = _b, rest = __objRest(_b, [
1408
+ "children",
1409
+ "orientation",
1410
+ "size",
1411
+ "variant",
1412
+ "width",
1413
+ "required",
1414
+ "disabled",
1415
+ "readOnly",
1416
+ "error"
1417
+ ]);
1418
+ const props = __spreadValues({
1419
+ isRequired: required,
1420
+ isDisabled: disabled,
1421
+ isReadOnly: readOnly,
1422
+ validationState: error ? "invalid" : "valid"
1423
+ }, rest);
1424
+ const state = (0, import_radio2.useRadioGroupState)(props);
1425
+ const { radioGroupProps, labelProps } = (0, import_radio.useRadioGroup)(props, state);
1426
+ const styles = (0, import_system27.useComponentStyles)("RadioGroup", { variant, size }, { parts: ["container", "group"] });
1427
+ return /* @__PURE__ */ import_react40.default.createElement(import_system27.Box, __spreadProps(__spreadValues({}, radioGroupProps), {
1428
+ css: styles.container
1429
+ }), props.label && /* @__PURE__ */ import_react40.default.createElement(Label, __spreadValues({
1430
+ as: "span",
1431
+ required
1432
+ }, labelProps), props.label), /* @__PURE__ */ import_react40.default.createElement(import_system27.Box, {
1433
+ role: "presentation",
1434
+ "data-orientation": orientation,
1435
+ __baseCSS: {
1436
+ display: "flex",
1437
+ flexDirection: orientation === "vertical" ? "column" : "row",
1438
+ alignItems: "start",
1439
+ gap: orientation === "vertical" ? "0.5ch" : "1.5ch"
1440
+ },
1441
+ css: styles.group
1442
+ }, /* @__PURE__ */ import_react40.default.createElement(RadioGroupContext.Provider, {
1443
+ value: __spreadValues({ variant, size, width, error }, state)
1444
+ }, children)));
999
1445
  };
1000
1446
 
1001
1447
  // src/Radio/Radio.tsx
1002
- var RadioInput = (_a) => {
1003
- var _b = _a, { error } = _b, props = __objRest(_b, ["error"]);
1004
- const { focusProps } = (0, import_focus3.useFocusRing)();
1005
- const _a2 = props, { children } = _a2, restProps = __objRest(_a2, ["children"]);
1006
- return /* @__PURE__ */ import_react28.default.createElement(import_system.Box, {
1007
- pr: "xsmall"
1008
- }, /* @__PURE__ */ import_react28.default.createElement(import_visually_hidden3.VisuallyHidden, null, /* @__PURE__ */ import_react28.default.createElement("input", __spreadValues(__spreadValues({
1009
- type: "radio",
1010
- disabled: props.disabled
1011
- }, focusProps), restProps))), /* @__PURE__ */ import_react28.default.createElement(RadioIcon, {
1012
- variant: props.variant,
1013
- disabled: props.disabled,
1014
- checked: props.checked,
1015
- error
1016
- }));
1448
+ var Dot = () => /* @__PURE__ */ import_react41.default.createElement("svg", {
1449
+ viewBox: "0 0 6 6"
1450
+ }, /* @__PURE__ */ import_react41.default.createElement("circle", {
1451
+ fill: "currentColor",
1452
+ cx: "3",
1453
+ cy: "3",
1454
+ r: "3"
1455
+ }));
1456
+ var Icon2 = (_a) => {
1457
+ var _b = _a, { checked, css } = _b, props = __objRest(_b, ["checked", "css"]);
1458
+ return /* @__PURE__ */ import_react41.default.createElement(import_system28.Box, __spreadValues({
1459
+ "aria-hidden": "true",
1460
+ __baseCSS: {
1461
+ width: 16,
1462
+ height: 16,
1463
+ bg: "#fff",
1464
+ border: "1px solid #000",
1465
+ borderRadius: "50%",
1466
+ display: "flex",
1467
+ alignItems: "center",
1468
+ justifyContent: "center",
1469
+ p: 4
1470
+ },
1471
+ css
1472
+ }, props), checked ? /* @__PURE__ */ import_react41.default.createElement(Dot, null) : null);
1017
1473
  };
1018
1474
  var Radio = (_a) => {
1019
- var _b = _a, {
1020
- required,
1021
- labelVariant = "inline",
1022
- errorMessage
1023
- } = _b, props = __objRest(_b, [
1024
- "required",
1025
- "labelVariant",
1026
- "errorMessage"
1475
+ var _b = _a, { width, disabled } = _b, props = __objRest(_b, ["width", "disabled"]);
1476
+ const _a2 = useRadioGroupContext(), {
1477
+ variant,
1478
+ size,
1479
+ error,
1480
+ width: groupWidth
1481
+ } = _a2, state = __objRest(_a2, [
1482
+ "variant",
1483
+ "size",
1484
+ "error",
1485
+ "width"
1027
1486
  ]);
1028
- return /* @__PURE__ */ import_react28.default.createElement(import_react28.default.Fragment, null, /* @__PURE__ */ import_react28.default.createElement(import_system.Box, {
1029
- as: Label,
1030
- htmlFor: props.id,
1031
- required,
1032
- variant: `label.${labelVariant}`,
1033
- css: props.disabled ? { color: "disabled", ":hover": { cursor: "not-allowed" } } : { color: "text", ":hover": { cursor: "pointer" } }
1034
- }, /* @__PURE__ */ import_react28.default.createElement(import_system.Box, __spreadValues({
1035
- as: RadioInput,
1036
- error: props.error
1037
- }, props)), props.children), props.error && errorMessage && /* @__PURE__ */ import_react28.default.createElement(ValidationMessage, null, /* @__PURE__ */ import_react28.default.createElement(import_icons6.Exclamation, {
1038
- size: 16
1039
- }), errorMessage));
1487
+ const ref = (0, import_react41.useRef)(null);
1488
+ const { inputProps } = (0, import_radio3.useRadio)(__spreadValues({ isDisabled: disabled }, props), state, ref);
1489
+ const styles = (0, import_system28.useComponentStyles)("Radio", { variant: variant || props.variant, size: size || props.size }, { parts: ["container", "label", "radio"] });
1490
+ const { hoverProps, isHovered } = (0, import_interactions6.useHover)({});
1491
+ const { isFocusVisible, focusProps } = (0, import_focus7.useFocusRing)();
1492
+ const stateProps = (0, import_system28.useStateProps)({
1493
+ hover: isHovered,
1494
+ focus: isFocusVisible,
1495
+ checked: inputProps.checked,
1496
+ disabled: inputProps.disabled,
1497
+ readOnly: props.readOnly,
1498
+ error
1499
+ });
1500
+ return /* @__PURE__ */ import_react41.default.createElement(import_system28.Box, __spreadValues(__spreadValues({
1501
+ as: "label",
1502
+ __baseCSS: {
1503
+ display: "flex",
1504
+ alignItems: "center",
1505
+ gap: "1ch",
1506
+ position: "relative",
1507
+ width: width || groupWidth || "100%"
1508
+ },
1509
+ css: styles.container
1510
+ }, hoverProps), stateProps), /* @__PURE__ */ import_react41.default.createElement(import_system28.Box, __spreadValues(__spreadValues({
1511
+ as: "input",
1512
+ ref,
1513
+ css: {
1514
+ position: "absolute",
1515
+ width: "100%",
1516
+ height: "100%",
1517
+ top: 0,
1518
+ left: 0,
1519
+ zIndex: 1,
1520
+ opacity: 1e-4,
1521
+ cursor: inputProps.disabled ? "not-allowed" : "pointer"
1522
+ }
1523
+ }, inputProps), focusProps)), /* @__PURE__ */ import_react41.default.createElement(Icon2, __spreadValues({
1524
+ checked: inputProps.checked,
1525
+ css: styles.radio
1526
+ }, stateProps)), /* @__PURE__ */ import_react41.default.createElement(import_system28.Box, __spreadValues({
1527
+ css: styles.label
1528
+ }, stateProps), props.children));
1040
1529
  };
1530
+ Radio.Group = RadioGroup;
1041
1531
 
1042
1532
  // src/Select/Select.tsx
1043
- var import_react33 = __toESM(require("react"));
1044
- var import_select = require("@react-stately/select");
1045
- var import_button3 = require("@react-aria/button");
1046
- var import_utils2 = require("@react-aria/utils");
1047
- var import_focus5 = require("@react-aria/focus");
1048
- var import_select2 = require("@react-aria/select");
1049
- var import_overlays6 = require("@react-stately/overlays");
1050
- var import_overlays7 = require("@react-aria/overlays");
1051
- var import_icons7 = require("@marigold/icons");
1533
+ var import_react46 = __toESM(require("react"));
1534
+ var import_button4 = require("@react-aria/button");
1535
+ var import_focus8 = require("@react-aria/focus");
1536
+ var import_i18n2 = require("@react-aria/i18n");
1537
+ var import_overlays8 = require("@react-aria/overlays");
1538
+ var import_select = require("@react-aria/select");
1539
+ var import_select2 = require("@react-stately/select");
1540
+ var import_collections2 = require("@react-stately/collections");
1541
+ var import_utils8 = require("@react-aria/utils");
1542
+ var import_system32 = require("@marigold/system");
1052
1543
 
1053
- // src/Select/ListBox.tsx
1054
- var import_react31 = __toESM(require("react"));
1544
+ // src/ListBox/ListBox.tsx
1545
+ var import_react45 = __toESM(require("react"));
1546
+ var import_utils7 = require("@react-aria/utils");
1547
+ var import_system31 = require("@marigold/system");
1055
1548
  var import_listbox3 = require("@react-aria/listbox");
1056
1549
 
1057
- // src/Select/Option.tsx
1058
- var import_react29 = __toESM(require("react"));
1550
+ // src/ListBox/Context.ts
1551
+ var import_react42 = require("react");
1552
+ var ListBoxContext = (0, import_react42.createContext)({});
1553
+ var useListBoxContext = () => (0, import_react42.useContext)(ListBoxContext);
1554
+
1555
+ // src/ListBox/ListBoxSection.tsx
1556
+ var import_react44 = __toESM(require("react"));
1557
+ var import_listbox2 = require("@react-aria/listbox");
1558
+ var import_system30 = require("@marigold/system");
1559
+
1560
+ // src/ListBox/ListBoxOption.tsx
1561
+ var import_react43 = __toESM(require("react"));
1059
1562
  var import_listbox = require("@react-aria/listbox");
1060
- var Option = ({ item, state }) => {
1061
- const ref = (0, import_react29.useRef)(null);
1062
- const [disabled, setDisabled] = (0, import_react29.useState)(false);
1063
- const { optionProps, isSelected } = (0, import_listbox.useOption)({
1563
+ var import_system29 = require("@marigold/system");
1564
+ var ListBoxOption = ({ item, state }) => {
1565
+ const ref = (0, import_react43.useRef)(null);
1566
+ const { optionProps, isSelected, isDisabled, isFocused } = (0, import_listbox.useOption)({
1064
1567
  key: item.key
1065
1568
  }, state, ref);
1066
- (0, import_react29.useEffect)(() => {
1067
- for (const key of state.disabledKeys.values()) {
1068
- if (key === item.key) {
1069
- setDisabled(true);
1070
- }
1071
- }
1072
- }, [state.disabledKeys, item.key]);
1073
- return /* @__PURE__ */ import_react29.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1074
- as: "li"
1075
- }, optionProps), {
1569
+ const { styles } = useListBoxContext();
1570
+ const stateProps = (0, import_system29.useStateProps)({
1571
+ selected: isSelected,
1572
+ disabled: isDisabled,
1573
+ focusVisible: isFocused
1574
+ });
1575
+ return /* @__PURE__ */ import_react43.default.createElement(import_system29.Box, __spreadValues(__spreadValues({
1576
+ as: "li",
1076
1577
  ref,
1077
- variant: isSelected ? "select.option.selected" : disabled ? "select.option.disabled" : "select.option"
1078
- }), item.rendered);
1578
+ css: styles.option
1579
+ }, optionProps), stateProps), item.rendered);
1079
1580
  };
1080
1581
 
1081
- // src/Select/ListBoxSection.tsx
1082
- var import_react30 = __toESM(require("react"));
1083
- var import_listbox2 = require("@react-aria/listbox");
1582
+ // src/ListBox/ListBoxSection.tsx
1084
1583
  var ListBoxSection = ({ section, state }) => {
1085
1584
  const { itemProps, headingProps, groupProps } = (0, import_listbox2.useListBoxSection)({
1086
1585
  heading: section.rendered,
1087
1586
  "aria-label": section["aria-label"]
1088
1587
  });
1089
- return /* @__PURE__ */ import_react30.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1090
- as: "li"
1091
- }, itemProps), {
1092
- css: {
1093
- cursor: "not-allowed"
1094
- }
1095
- }), section.rendered && /* @__PURE__ */ import_react30.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1096
- as: "span"
1097
- }, headingProps), {
1098
- variant: "select.section"
1099
- }), section.rendered), /* @__PURE__ */ import_react30.default.createElement(import_system.Box, __spreadValues({
1100
- as: "ul"
1101
- }, groupProps), [...section.childNodes].map((node) => /* @__PURE__ */ import_react30.default.createElement(Option, {
1588
+ const { styles } = useListBoxContext();
1589
+ return /* @__PURE__ */ import_react44.default.createElement(import_system30.Box, __spreadValues({
1590
+ as: "li",
1591
+ css: styles.section
1592
+ }, itemProps), section.rendered && /* @__PURE__ */ import_react44.default.createElement(import_system30.Box, __spreadValues({
1593
+ css: styles.sectionTitle
1594
+ }, headingProps), section.rendered), /* @__PURE__ */ import_react44.default.createElement(import_system30.Box, __spreadValues({
1595
+ as: "ul",
1596
+ __baseCSS: { listStyle: "none", p: 0 },
1597
+ css: styles.list
1598
+ }, groupProps), [...section.childNodes].map((node) => /* @__PURE__ */ import_react44.default.createElement(ListBoxOption, {
1102
1599
  key: node.key,
1103
1600
  item: node,
1104
1601
  state
1105
1602
  }))));
1106
1603
  };
1107
1604
 
1108
- // src/Select/ListBox.tsx
1109
- var ListBox = (props) => {
1110
- const ref = (0, import_react31.useRef)(null);
1111
- const { state, error } = props;
1112
- const { listBoxProps } = (0, import_listbox3.useListBox)(props, state, ref);
1113
- return /* @__PURE__ */ import_react31.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1605
+ // src/ListBox/ListBox.tsx
1606
+ var ListBox = (0, import_react45.forwardRef)((_a, ref) => {
1607
+ var _b = _a, { state, variant, size } = _b, props = __objRest(_b, ["state", "variant", "size"]);
1608
+ const innerRef = (0, import_utils7.useObjectRef)(ref);
1609
+ const { listBoxProps } = (0, import_listbox3.useListBox)(props, state, innerRef);
1610
+ const styles = (0, import_system31.useComponentStyles)("ListBox", { variant, size }, { parts: ["container", "list", "option", "section", "sectionTitle"] });
1611
+ return /* @__PURE__ */ import_react45.default.createElement(ListBoxContext.Provider, {
1612
+ value: { styles }
1613
+ }, /* @__PURE__ */ import_react45.default.createElement(import_system31.Box, {
1614
+ css: styles.container
1615
+ }, /* @__PURE__ */ import_react45.default.createElement(import_system31.Box, __spreadValues({
1114
1616
  as: "ul",
1115
- p: "none",
1116
- css: {
1117
- listStyle: "none"
1118
- }
1119
- }, listBoxProps), {
1120
- variant: error ? "select.listbox.error" : "select.listbox",
1121
- ref
1122
- }), [...state.collection].map((item) => item.type === "section" ? /* @__PURE__ */ import_react31.default.createElement(ListBoxSection, {
1617
+ ref: innerRef,
1618
+ __baseCSS: { listStyle: "none", p: 0 },
1619
+ css: styles.list
1620
+ }, listBoxProps), [...state.collection].map((item) => item.type === "section" ? /* @__PURE__ */ import_react45.default.createElement(ListBoxSection, {
1123
1621
  key: item.key,
1124
1622
  section: item,
1125
1623
  state
1126
- }) : /* @__PURE__ */ import_react31.default.createElement(Option, {
1624
+ }) : /* @__PURE__ */ import_react45.default.createElement(ListBoxOption, {
1127
1625
  key: item.key,
1128
1626
  item,
1129
1627
  state
1130
- })));
1131
- };
1132
-
1133
- // src/Select/Popover.tsx
1134
- var import_react32 = __toESM(require("react"));
1135
- var import_focus4 = require("@react-aria/focus");
1136
- var import_overlays5 = require("@react-aria/overlays");
1137
- var import_utils = require("@react-aria/utils");
1138
- var Popover = (0, import_react32.forwardRef)((_a, ref) => {
1139
- var _b = _a, { children, className, isOpen, onClose } = _b, otherProps = __objRest(_b, ["children", "className", "isOpen", "onClose"]);
1140
- const { overlayProps } = (0, import_overlays5.useOverlay)({
1141
- isOpen,
1142
- onClose,
1143
- shouldCloseOnBlur: true,
1144
- isDismissable: true
1145
- }, ref);
1146
- const { modalProps } = (0, import_overlays5.useModal)();
1147
- return /* @__PURE__ */ import_react32.default.createElement(import_overlays5.OverlayContainer, null, /* @__PURE__ */ import_react32.default.createElement(import_focus4.FocusScope, {
1148
- restoreFocus: true
1149
- }, /* @__PURE__ */ import_react32.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, (0, import_utils.mergeProps)(overlayProps, otherProps, modalProps)), {
1150
- className,
1151
- ref
1152
- }), children, /* @__PURE__ */ import_react32.default.createElement(import_overlays5.DismissButton, {
1153
- onDismiss: onClose
1154
- }))));
1628
+ })))));
1155
1629
  });
1156
1630
 
1631
+ // src/Select/intl.ts
1632
+ var messages = {
1633
+ "en-US": {
1634
+ placeholder: "Select an option\u2026"
1635
+ },
1636
+ "de-DE": {
1637
+ placeholder: "Option ausw\xE4hlen\u2026"
1638
+ }
1639
+ };
1640
+
1157
1641
  // src/Select/Select.tsx
1642
+ var Chevron = ({ css }) => /* @__PURE__ */ import_react46.default.createElement(import_system32.Box, {
1643
+ as: "svg",
1644
+ __baseCSS: { width: 16, height: 16 },
1645
+ css,
1646
+ fill: "none",
1647
+ viewBox: "0 0 24 24",
1648
+ stroke: "currentColor",
1649
+ strokeWidth: 2
1650
+ }, /* @__PURE__ */ import_react46.default.createElement("path", {
1651
+ strokeLinecap: "round",
1652
+ strokeLinejoin: "round",
1653
+ d: "M19 9l-7 7-7-7"
1654
+ }));
1158
1655
  var Select = (_a) => {
1159
1656
  var _b = _a, {
1160
- labelVariant = "above",
1161
- placeholder = "Select an option",
1657
+ variant,
1658
+ size,
1659
+ width,
1660
+ open,
1162
1661
  disabled,
1163
1662
  required,
1164
- error,
1165
- errorMessage,
1166
- width,
1167
- className
1168
- } = _b, props = __objRest(_b, [
1169
- "labelVariant",
1170
- "placeholder",
1663
+ error
1664
+ } = _b, rest = __objRest(_b, [
1665
+ "variant",
1666
+ "size",
1667
+ "width",
1668
+ "open",
1171
1669
  "disabled",
1172
1670
  "required",
1173
- "error",
1174
- "errorMessage",
1175
- "width",
1176
- "className"
1671
+ "error"
1177
1672
  ]);
1178
- const state = (0, import_select.useSelectState)(props);
1179
- const overlayTriggerState = (0, import_overlays6.useOverlayTriggerState)({});
1180
- const triggerRef = (0, import_react33.useRef)();
1181
- const overlayRef = (0, import_react33.useRef)();
1182
- const { overlayProps } = (0, import_overlays7.useOverlayTrigger)({ type: "listbox" }, overlayTriggerState, triggerRef);
1183
- const { overlayProps: positionProps } = (0, import_overlays7.useOverlayPosition)({
1184
- targetRef: triggerRef,
1673
+ const formatMessage = (0, import_i18n2.useMessageFormatter)(messages);
1674
+ const props = __spreadValues({
1675
+ isOpen: open,
1676
+ isDisabled: disabled,
1677
+ isRequired: required,
1678
+ validationState: error ? "invalid" : "valid",
1679
+ placeholder: rest.placeholder || formatMessage("placeholder")
1680
+ }, rest);
1681
+ const state = (0, import_select2.useSelectState)(props);
1682
+ const buttonRef = (0, import_react46.useRef)(null);
1683
+ const {
1684
+ labelProps,
1685
+ triggerProps,
1686
+ valueProps,
1687
+ menuProps,
1688
+ descriptionProps,
1689
+ errorMessageProps
1690
+ } = (0, import_select.useSelect)(props, state, buttonRef);
1691
+ const { buttonProps } = (0, import_button4.useButton)(__spreadValues({ isDisabled: disabled }, triggerProps), buttonRef);
1692
+ const { focusProps, isFocusVisible } = (0, import_focus8.useFocusRing)();
1693
+ const overlayRef = (0, import_react46.useRef)(null);
1694
+ const { overlayProps: positionProps } = (0, import_overlays8.useOverlayPosition)({
1695
+ targetRef: buttonRef,
1185
1696
  overlayRef,
1186
- placement: "bottom",
1187
- shouldFlip: false,
1188
1697
  isOpen: state.isOpen,
1189
- onClose: state.close
1698
+ placement: "bottom left"
1190
1699
  });
1191
- const { labelProps, triggerProps, valueProps, menuProps } = (0, import_select2.useSelect)(props, state, triggerRef);
1192
- const { buttonProps } = (0, import_button3.useButton)(triggerProps, triggerRef);
1193
- const { focusProps } = (0, import_focus5.useFocusRing)();
1194
- return /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1195
- position: "relative",
1196
- display: "inline-block",
1197
- width: width && width
1198
- }, props.label && /* @__PURE__ */ import_react33.default.createElement(import_system.Box, null, /* @__PURE__ */ import_react33.default.createElement(Label, __spreadProps(__spreadValues({}, labelProps), {
1199
- htmlFor: labelProps.id,
1200
- variant: labelVariant
1201
- }), required ? /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1202
- as: "span",
1203
- display: "inline-flex",
1204
- alignItems: "center"
1205
- }, props.label, /* @__PURE__ */ import_react33.default.createElement(import_icons7.Required, {
1206
- size: 16,
1207
- fill: "error"
1208
- })) : props.label)), /* @__PURE__ */ import_react33.default.createElement(import_select2.HiddenSelect, {
1700
+ const styles = (0, import_system32.useComponentStyles)("Select", { variant, size }, { parts: ["container", "button", "icon"] });
1701
+ const stateProps = (0, import_system32.useStateProps)({
1702
+ disabled,
1703
+ error,
1704
+ focusVisible: isFocusVisible,
1705
+ expanded: state.isOpen
1706
+ });
1707
+ return /* @__PURE__ */ import_react46.default.createElement(FieldBase, {
1708
+ variant,
1709
+ size,
1710
+ width,
1711
+ label: props.label,
1712
+ labelProps: __spreadValues({ as: "span" }, labelProps),
1713
+ description: props.description,
1714
+ descriptionProps,
1715
+ error,
1716
+ errorMessage: props.errorMessage,
1717
+ errorMessageProps,
1718
+ stateProps,
1719
+ disabled,
1720
+ required
1721
+ }, /* @__PURE__ */ import_react46.default.createElement(import_select.HiddenSelect, {
1209
1722
  state,
1210
- triggerRef,
1723
+ triggerRef: buttonRef,
1211
1724
  label: props.label,
1212
1725
  name: props.name,
1213
1726
  isDisabled: disabled
1214
- }), /* @__PURE__ */ import_react33.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1215
- as: "button"
1216
- }, (0, import_utils2.mergeProps)(buttonProps, focusProps)), {
1217
- ref: triggerRef,
1218
- variant: error && state.isOpen && !disabled ? "button.select.errorOpened" : error ? "button.select.error" : state.isOpen && !disabled ? "button.select.open" : "button.select",
1219
- disabled,
1220
- className
1221
- }), /* @__PURE__ */ import_react33.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1222
- as: "span"
1223
- }, valueProps), {
1224
- variant: disabled ? "select.disabled" : "select"
1225
- }), state.selectedItem ? state.selectedItem.rendered : placeholder), state.isOpen && !disabled ? /* @__PURE__ */ import_react33.default.createElement(import_icons7.ArrowUp, {
1226
- size: 16,
1227
- fill: "text"
1228
- }) : /* @__PURE__ */ import_react33.default.createElement(import_icons7.ArrowDown, {
1229
- size: 16,
1230
- fill: disabled ? "disabled" : "text"
1231
- })), state.isOpen && !disabled && /* @__PURE__ */ import_react33.default.createElement(import_system.Box, __spreadProps(__spreadValues(__spreadValues({
1232
- as: Popover
1233
- }, overlayProps), positionProps), {
1234
- css: {
1235
- width: triggerRef.current && triggerRef.current.offsetWidth + "px"
1727
+ }), /* @__PURE__ */ import_react46.default.createElement(import_system32.Box, __spreadValues(__spreadValues({
1728
+ as: "button",
1729
+ __baseCSS: {
1730
+ display: "flex",
1731
+ position: "relative",
1732
+ alignItems: "center",
1733
+ justifyContent: "space-between",
1734
+ width: "100%"
1236
1735
  },
1237
- ref: overlayRef,
1238
- isOpen: state.isOpen,
1239
- onClose: state.close
1240
- }), /* @__PURE__ */ import_react33.default.createElement(ListBox, __spreadProps(__spreadValues({
1241
- error
1242
- }, menuProps), {
1243
- state
1244
- }))), error && errorMessage && /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1245
- as: "span",
1246
- display: "inline-flex",
1247
- alignItems: "center"
1248
- }, /* @__PURE__ */ import_react33.default.createElement(import_system.Box, {
1249
- as: import_icons7.Exclamation,
1250
- size: 16,
1251
- css: { color: "error" }
1252
- }), /* @__PURE__ */ import_react33.default.createElement(ValidationMessage, null, errorMessage)));
1736
+ css: styles.button,
1737
+ ref: buttonRef
1738
+ }, (0, import_utils8.mergeProps)(buttonProps, focusProps)), stateProps), /* @__PURE__ */ import_react46.default.createElement(import_system32.Box, __spreadValues({
1739
+ css: {
1740
+ overflow: "hidden",
1741
+ whiteSpace: "nowrap"
1742
+ }
1743
+ }, valueProps), state.selectedItem ? state.selectedItem.rendered : props.placeholder), /* @__PURE__ */ import_react46.default.createElement(Chevron, {
1744
+ css: styles.icon
1745
+ })), /* @__PURE__ */ import_react46.default.createElement(Popover, __spreadValues({
1746
+ open: state.isOpen,
1747
+ onClose: state.close,
1748
+ dismissable: true,
1749
+ shouldCloseOnBlur: true,
1750
+ minWidth: buttonRef.current ? buttonRef.current.offsetWidth : void 0,
1751
+ ref: overlayRef
1752
+ }, positionProps), /* @__PURE__ */ import_react46.default.createElement(import_focus8.FocusScope, {
1753
+ restoreFocus: true
1754
+ }, /* @__PURE__ */ import_react46.default.createElement(import_overlays8.DismissButton, {
1755
+ onDismiss: state.close
1756
+ }), /* @__PURE__ */ import_react46.default.createElement(ListBox, __spreadValues({
1757
+ state,
1758
+ variant,
1759
+ size
1760
+ }, menuProps)), /* @__PURE__ */ import_react46.default.createElement(import_overlays8.DismissButton, {
1761
+ onDismiss: state.close
1762
+ }))));
1253
1763
  };
1764
+ Select.Option = import_collections2.Item;
1765
+ Select.Section = import_collections2.Section;
1254
1766
 
1255
1767
  // src/Slider/Slider.tsx
1256
- var import_react34 = __toESM(require("react"));
1257
- var Slider = (_a) => {
1258
- var _b = _a, { variant = "" } = _b, props = __objRest(_b, ["variant"]);
1259
- return /* @__PURE__ */ import_react34.default.createElement(import_system.Box, __spreadValues({
1768
+ var import_react48 = __toESM(require("react"));
1769
+ var import_slider2 = require("@react-aria/slider");
1770
+ var import_slider3 = require("@react-stately/slider");
1771
+ var import_i18n3 = require("@react-aria/i18n");
1772
+ var import_system34 = require("@marigold/system");
1773
+
1774
+ // src/Slider/Thumb.tsx
1775
+ var import_react47 = __toESM(require("react"));
1776
+ var import_slider = require("@react-aria/slider");
1777
+ var import_utils9 = require("@react-aria/utils");
1778
+ var import_system33 = require("@marigold/system");
1779
+
1780
+ // src/VisuallyHidden/VisuallyHidden.tsx
1781
+ var import_visually_hidden = require("@react-aria/visually-hidden");
1782
+
1783
+ // src/Slider/Thumb.tsx
1784
+ var import_focus9 = require("@react-aria/focus");
1785
+ var Thumb = (_a) => {
1786
+ var _b = _a, { state, trackRef, styles } = _b, props = __objRest(_b, ["state", "trackRef", "styles"]);
1787
+ const { disabled } = props;
1788
+ const inputRef = import_react47.default.useRef(null);
1789
+ const { isFocusVisible, focusProps, isFocused } = (0, import_focus9.useFocusRing)();
1790
+ const focused = isFocused || isFocusVisible || state.isThumbDragging(0);
1791
+ const stateProps = (0, import_system33.useStateProps)({
1792
+ focus: focused,
1793
+ disabled
1794
+ });
1795
+ const { thumbProps, inputProps } = (0, import_slider.useSliderThumb)({
1796
+ index: 0,
1797
+ trackRef,
1798
+ inputRef,
1799
+ isDisabled: disabled
1800
+ }, state);
1801
+ (0, import_react47.useEffect)(() => {
1802
+ state.setThumbEditable(0, !disabled);
1803
+ }, [disabled, state]);
1804
+ return /* @__PURE__ */ import_react47.default.createElement(import_system.Box, {
1805
+ __baseCSS: {
1806
+ position: "absolute",
1807
+ top: 16,
1808
+ transform: "translateX(-50%)",
1809
+ left: `${state.getThumbPercent(0) * 100}%`
1810
+ }
1811
+ }, /* @__PURE__ */ import_react47.default.createElement(import_system.Box, __spreadValues(__spreadProps(__spreadValues({}, thumbProps), {
1812
+ __baseCSS: styles
1813
+ }), stateProps), /* @__PURE__ */ import_react47.default.createElement(import_visually_hidden.VisuallyHidden, null, /* @__PURE__ */ import_react47.default.createElement(import_system.Box, __spreadValues({
1260
1814
  as: "input",
1261
1815
  type: "range",
1262
- css: { verticalAlign: "middle" },
1263
- variant: `slider.${variant}`
1264
- }, props));
1816
+ ref: inputRef
1817
+ }, (0, import_utils9.mergeProps)(inputProps, focusProps))))));
1818
+ };
1819
+
1820
+ // src/Slider/Slider.tsx
1821
+ var Slider = (_a) => {
1822
+ var _b = _a, {
1823
+ variant,
1824
+ size,
1825
+ width = "100%"
1826
+ } = _b, props = __objRest(_b, [
1827
+ "variant",
1828
+ "size",
1829
+ "width"
1830
+ ]);
1831
+ const { formatOptions } = props;
1832
+ const trackRef = (0, import_react48.useRef)(null);
1833
+ const numberFormatter = (0, import_i18n3.useNumberFormatter)(formatOptions);
1834
+ const state = (0, import_slider3.useSliderState)(__spreadProps(__spreadValues({}, props), { numberFormatter }));
1835
+ const { groupProps, trackProps, labelProps, outputProps } = (0, import_slider2.useSlider)(__spreadValues({
1836
+ label: props.children
1837
+ }, props), state, trackRef);
1838
+ const styles = (0, import_system34.useComponentStyles)("Slider", { variant, size }, { parts: ["track", "thumb", "label", "output"] });
1839
+ return /* @__PURE__ */ import_react48.default.createElement(import_system.Box, __spreadValues({
1840
+ __baseCSS: {
1841
+ display: "flex",
1842
+ flexDirection: "column",
1843
+ touchAction: "none",
1844
+ width
1845
+ }
1846
+ }, groupProps), /* @__PURE__ */ import_react48.default.createElement(import_system.Box, {
1847
+ __baseCSS: { display: "flex", alignSelf: "stretch" }
1848
+ }, props.children && /* @__PURE__ */ import_react48.default.createElement(import_system.Box, __spreadValues({
1849
+ as: "label",
1850
+ __baseCSS: styles.label
1851
+ }, labelProps), props.children), /* @__PURE__ */ import_react48.default.createElement(import_system.Box, __spreadProps(__spreadValues({
1852
+ as: "output"
1853
+ }, outputProps), {
1854
+ __baseCSS: { flex: "1 0 auto", textAlign: "end" },
1855
+ css: styles.output
1856
+ }), state.getThumbValueLabel(0))), /* @__PURE__ */ import_react48.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, trackProps), {
1857
+ ref: trackRef,
1858
+ __baseCSS: {
1859
+ position: "relative",
1860
+ height: 32,
1861
+ width: "100%",
1862
+ cursor: props.disabled ? "not-allowed" : "pointer"
1863
+ }
1864
+ }), /* @__PURE__ */ import_react48.default.createElement(import_system.Box, {
1865
+ __baseCSS: styles.track
1866
+ }), /* @__PURE__ */ import_react48.default.createElement(Thumb, {
1867
+ state,
1868
+ trackRef,
1869
+ disabled: props.disabled,
1870
+ styles: styles.thumb
1871
+ })));
1872
+ };
1873
+
1874
+ // src/Stack/Stack.tsx
1875
+ var import_react49 = __toESM(require("react"));
1876
+ var ALIGNMENT_X2 = {
1877
+ left: "flex-start",
1878
+ center: "center",
1879
+ right: "flex-end"
1880
+ };
1881
+ var ALIGNMENT_Y2 = {
1882
+ top: "flex-start",
1883
+ center: "center",
1884
+ bottom: "flex-end"
1885
+ };
1886
+ var Stack = (_a) => {
1887
+ var _b = _a, {
1888
+ children,
1889
+ space = "none",
1890
+ alignX = "left",
1891
+ alignY = "top",
1892
+ stretch = false
1893
+ } = _b, props = __objRest(_b, [
1894
+ "children",
1895
+ "space",
1896
+ "alignX",
1897
+ "alignY",
1898
+ "stretch"
1899
+ ]);
1900
+ return /* @__PURE__ */ import_react49.default.createElement(import_system.Box, __spreadValues({
1901
+ css: {
1902
+ display: "flex",
1903
+ flexDirection: "column",
1904
+ p: 0,
1905
+ gap: space,
1906
+ alignItems: ALIGNMENT_X2[alignX],
1907
+ justifyContent: ALIGNMENT_Y2[alignY],
1908
+ blockSize: stretch ? "100%" : "auto"
1909
+ }
1910
+ }, props), children);
1265
1911
  };
1266
1912
 
1267
1913
  // src/Switch/Switch.tsx
1268
- var import_react35 = __toESM(require("react"));
1269
- var import_focus6 = require("@react-aria/focus");
1914
+ var import_react50 = __toESM(require("react"));
1915
+ var import_focus10 = require("@react-aria/focus");
1270
1916
  var import_switch = require("@react-aria/switch");
1271
- var import_visually_hidden4 = require("@react-aria/visually-hidden");
1272
1917
  var import_toggle2 = require("@react-stately/toggle");
1273
- var import_system7 = require("@marigold/system");
1918
+ var import_system35 = require("@marigold/system");
1274
1919
  var Switch = (_a) => {
1275
1920
  var _b = _a, {
1276
- variant = "",
1277
- labelVariant = "above",
1278
- disabled
1279
- } = _b, props = __objRest(_b, [
1921
+ variant,
1922
+ size,
1923
+ width = "100%",
1924
+ checked,
1925
+ disabled,
1926
+ readOnly,
1927
+ defaultChecked
1928
+ } = _b, rest = __objRest(_b, [
1280
1929
  "variant",
1281
- "labelVariant",
1282
- "disabled"
1930
+ "size",
1931
+ "width",
1932
+ "checked",
1933
+ "disabled",
1934
+ "readOnly",
1935
+ "defaultChecked"
1283
1936
  ]);
1937
+ const ref = (0, import_react50.useRef)(null);
1938
+ const props = __spreadValues({
1939
+ isSelected: checked,
1940
+ isDisabled: disabled,
1941
+ isReadOnly: readOnly,
1942
+ defaultSelected: defaultChecked
1943
+ }, rest);
1284
1944
  const state = (0, import_toggle2.useToggleState)(props);
1285
- const ref = (0, import_react35.useRef)();
1286
1945
  const { inputProps } = (0, import_switch.useSwitch)(props, state, ref);
1287
- const { focusProps } = (0, import_focus6.useFocusRing)();
1288
- return /* @__PURE__ */ import_react35.default.createElement(import_system.Box, {
1289
- as: Label,
1290
- __baseCSS: {
1291
- userSelect: "none"
1292
- },
1293
- variant: labelVariant
1294
- }, props.children, /* @__PURE__ */ import_react35.default.createElement(import_visually_hidden4.VisuallyHidden, null, /* @__PURE__ */ import_react35.default.createElement("input", __spreadProps(__spreadValues(__spreadValues({}, inputProps), focusProps), {
1946
+ const { isFocusVisible, focusProps } = (0, import_focus10.useFocusRing)();
1947
+ const stateProps = (0, import_system35.useStateProps)({
1948
+ checked: state.isSelected,
1295
1949
  disabled,
1296
- ref
1297
- }))), /* @__PURE__ */ import_react35.default.createElement(import_system.Box, {
1298
- as: "svg",
1950
+ readOnly,
1951
+ focus: isFocusVisible
1952
+ });
1953
+ const styles = (0, import_system35.useComponentStyles)("Switch", { variant, size }, { parts: ["container", "label", "track", "thumb"] });
1954
+ return /* @__PURE__ */ import_react50.default.createElement(import_system.Box, {
1955
+ as: "label",
1299
1956
  __baseCSS: {
1300
- cursor: disabled ? "not-allowed" : "pointer",
1301
- width: 56,
1302
- height: 32
1957
+ display: "flex",
1958
+ alignItems: "center",
1959
+ justifyContent: "space-between",
1960
+ gap: "1ch",
1961
+ position: "relative",
1962
+ width
1303
1963
  },
1304
- "aria-hidden": "true"
1305
- }, /* @__PURE__ */ import_react35.default.createElement(import_system.Box, {
1306
- as: "rect",
1964
+ css: styles.container
1965
+ }, /* @__PURE__ */ import_react50.default.createElement(import_system.Box, __spreadValues(__spreadValues({
1966
+ as: "input",
1967
+ ref,
1968
+ css: {
1969
+ position: "absolute",
1970
+ width: "100%",
1971
+ height: "100%",
1972
+ top: 0,
1973
+ left: 0,
1974
+ zIndex: 1,
1975
+ opacity: 1e-4,
1976
+ cursor: inputProps.disabled ? "not-allowed" : "pointer"
1977
+ }
1978
+ }, inputProps), focusProps)), props.children && /* @__PURE__ */ import_react50.default.createElement(import_system.Box, {
1979
+ css: styles.label
1980
+ }, props.children), /* @__PURE__ */ import_react50.default.createElement(import_system.Box, __spreadValues({
1307
1981
  __baseCSS: {
1308
- x: 4,
1309
- y: 4,
1310
- rx: 12,
1982
+ position: "relative",
1311
1983
  width: 48,
1312
- height: 24
1984
+ height: 24,
1985
+ bg: "#dee2e6",
1986
+ borderRadius: 20
1313
1987
  },
1314
- variant: (0, import_system7.conditional)(`switch.${variant}`, {
1315
- checked: state.isSelected,
1316
- disabled
1317
- })
1318
- }), /* @__PURE__ */ import_react35.default.createElement(import_system.Box, {
1319
- as: "circle",
1988
+ css: styles.track
1989
+ }, stateProps), /* @__PURE__ */ import_react50.default.createElement(import_system.Box, __spreadValues({
1320
1990
  __baseCSS: {
1321
- boxShadow: "1px 1px 4px rgba(0, 0, 0, 0.25)",
1322
- cx: state.isSelected ? 40 : 16,
1323
- cy: 16,
1324
- r: 11,
1325
- fill: disabled ? "gray20" : "gray00"
1326
- }
1327
- })));
1991
+ display: "block",
1992
+ position: "absolute",
1993
+ top: 1,
1994
+ left: 0,
1995
+ willChange: "transform",
1996
+ transform: "translateX(1px)",
1997
+ transition: "all 0.1s cubic-bezier(.7, 0, .3, 1)",
1998
+ height: 22,
1999
+ width: 22,
2000
+ borderRadius: 9999,
2001
+ bg: "#fff",
2002
+ "&:checked": {
2003
+ transform: "translateX(calc(47px - 100%))"
2004
+ }
2005
+ },
2006
+ css: styles.thumb
2007
+ }, stateProps))));
1328
2008
  };
1329
2009
 
1330
- // src/Textarea/Textarea.tsx
1331
- var import_react36 = __toESM(require("react"));
1332
- var import_textfield2 = require("@react-aria/textfield");
1333
- var import_icons8 = require("@marigold/icons");
1334
- var Textarea = (_a) => {
2010
+ // src/Table/Table.tsx
2011
+ var import_react60 = __toESM(require("react"));
2012
+ var import_table9 = require("@react-aria/table");
2013
+ var import_table10 = require("@react-stately/table");
2014
+ var import_system41 = require("@marigold/system");
2015
+
2016
+ // src/Table/Context.tsx
2017
+ var import_react51 = require("react");
2018
+ var TableContext = (0, import_react51.createContext)({});
2019
+ var useTableContext = () => (0, import_react51.useContext)(TableContext);
2020
+
2021
+ // src/Table/TableBody.tsx
2022
+ var import_react52 = __toESM(require("react"));
2023
+ var import_table = require("@react-aria/table");
2024
+ var TableBody = ({ children }) => {
2025
+ const { rowGroupProps } = (0, import_table.useTableRowGroup)();
2026
+ return /* @__PURE__ */ import_react52.default.createElement("tbody", __spreadValues({}, rowGroupProps), children);
2027
+ };
2028
+
2029
+ // src/Table/TableCell.tsx
2030
+ var import_react53 = __toESM(require("react"));
2031
+ var import_table2 = require("@react-aria/table");
2032
+ var import_focus11 = require("@react-aria/focus");
2033
+ var import_utils10 = require("@react-aria/utils");
2034
+ var import_system36 = require("@marigold/system");
2035
+ var TableCell = ({ cell }) => {
2036
+ const ref = (0, import_react53.useRef)(null);
2037
+ const { state, styles } = useTableContext();
2038
+ const disabled = state.disabledKeys.has(cell.parentKey);
2039
+ const { gridCellProps } = (0, import_table2.useTableCell)({
2040
+ node: cell
2041
+ }, state, ref);
2042
+ const { focusProps, isFocusVisible } = (0, import_focus11.useFocusRing)();
2043
+ const stateProps = (0, import_system36.useStateProps)({ disabled, focusVisible: isFocusVisible });
2044
+ return /* @__PURE__ */ import_react53.default.createElement(import_system36.Box, __spreadValues(__spreadValues({
2045
+ as: "td",
2046
+ ref,
2047
+ css: styles.cell
2048
+ }, (0, import_utils10.mergeProps)(gridCellProps, focusProps)), stateProps), cell.rendered);
2049
+ };
2050
+
2051
+ // src/Table/TableCheckboxCell.tsx
2052
+ var import_react54 = __toESM(require("react"));
2053
+ var import_table3 = require("@react-aria/table");
2054
+ var import_focus12 = require("@react-aria/focus");
2055
+ var import_utils11 = require("@react-aria/utils");
2056
+ var import_system37 = require("@marigold/system");
2057
+
2058
+ // src/Table/utils.ts
2059
+ var mapCheckboxProps = (_a) => {
2060
+ var {
2061
+ checkboxProps: _b
2062
+ } = _a, _c = _b, {
2063
+ isIndeterminate,
2064
+ isSelected,
2065
+ isDisabled,
2066
+ defaultSelected
2067
+ } = _c, rest = __objRest(_c, [
2068
+ "isIndeterminate",
2069
+ "isSelected",
2070
+ "isDisabled",
2071
+ "defaultSelected"
2072
+ ]);
2073
+ const checkboxProps = __spreadValues({
2074
+ disabled: isDisabled,
2075
+ checked: isSelected,
2076
+ defaultChecked: defaultSelected,
2077
+ indeterminate: isIndeterminate
2078
+ }, rest);
2079
+ return { checkboxProps };
2080
+ };
2081
+
2082
+ // src/Table/TableCheckboxCell.tsx
2083
+ var TableCheckboxCell = ({ cell }) => {
2084
+ const ref = (0, import_react54.useRef)(null);
2085
+ const { state, styles } = useTableContext();
2086
+ const disabled = state.disabledKeys.has(cell.parentKey);
2087
+ const { gridCellProps } = (0, import_table3.useTableCell)({
2088
+ node: cell
2089
+ }, state, ref);
2090
+ const { checkboxProps } = mapCheckboxProps((0, import_table3.useTableSelectionCheckbox)({ key: cell.parentKey }, state));
2091
+ const { focusProps, isFocusVisible } = (0, import_focus12.useFocusRing)();
2092
+ const stateProps = (0, import_system37.useStateProps)({ disabled, focusVisible: isFocusVisible });
2093
+ return /* @__PURE__ */ import_react54.default.createElement(import_system37.Box, __spreadValues(__spreadValues({
2094
+ as: "td",
2095
+ ref,
2096
+ __baseCSS: {
2097
+ textAlign: "center",
2098
+ verticalAlign: "middle",
2099
+ lineHeight: 1
2100
+ },
2101
+ css: styles.cell
2102
+ }, (0, import_utils11.mergeProps)(gridCellProps, focusProps)), stateProps), /* @__PURE__ */ import_react54.default.createElement(Checkbox, __spreadValues({}, checkboxProps)));
2103
+ };
2104
+
2105
+ // src/Table/TableColumnHeader.tsx
2106
+ var import_react55 = __toESM(require("react"));
2107
+ var import_focus13 = require("@react-aria/focus");
2108
+ var import_interactions7 = require("@react-aria/interactions");
2109
+ var import_table4 = require("@react-aria/table");
2110
+ var import_utils13 = require("@react-aria/utils");
2111
+ var import_system38 = require("@marigold/system");
2112
+ var TableColumnHeader = ({ column }) => {
2113
+ const ref = (0, import_react55.useRef)(null);
2114
+ const { state, styles } = useTableContext();
2115
+ const { columnHeaderProps } = (0, import_table4.useTableColumnHeader)({
2116
+ node: column
2117
+ }, state, ref);
2118
+ const { hoverProps, isHovered } = (0, import_interactions7.useHover)({});
2119
+ const { focusProps, isFocusVisible } = (0, import_focus13.useFocusRing)();
2120
+ const stateProps = (0, import_system38.useStateProps)({
2121
+ hover: isHovered,
2122
+ focusVisible: isFocusVisible
2123
+ });
2124
+ return /* @__PURE__ */ import_react55.default.createElement(import_system38.Box, __spreadValues(__spreadValues({
2125
+ as: "th",
2126
+ colSpan: column.colspan,
2127
+ ref,
2128
+ css: styles.header
2129
+ }, (0, import_utils13.mergeProps)(columnHeaderProps, hoverProps, focusProps)), stateProps), column.rendered);
2130
+ };
2131
+
2132
+ // src/Table/TableHeader.tsx
2133
+ var import_react56 = __toESM(require("react"));
2134
+ var import_table5 = require("@react-aria/table");
2135
+ var TableHeader = ({ children }) => {
2136
+ const { rowGroupProps } = (0, import_table5.useTableRowGroup)();
2137
+ return /* @__PURE__ */ import_react56.default.createElement("thead", __spreadValues({}, rowGroupProps), children);
2138
+ };
2139
+
2140
+ // src/Table/TableHeaderRow.tsx
2141
+ var import_react57 = __toESM(require("react"));
2142
+ var import_table6 = require("@react-aria/table");
2143
+ var TableHeaderRow = ({ item, children }) => {
2144
+ const { state } = useTableContext();
2145
+ const ref = (0, import_react57.useRef)(null);
2146
+ const { rowProps } = (0, import_table6.useTableHeaderRow)({ node: item }, state, ref);
2147
+ return /* @__PURE__ */ import_react57.default.createElement("tr", __spreadProps(__spreadValues({}, rowProps), {
2148
+ ref
2149
+ }), children);
2150
+ };
2151
+
2152
+ // src/Table/TableRow.tsx
2153
+ var import_react58 = __toESM(require("react"));
2154
+ var import_focus14 = require("@react-aria/focus");
2155
+ var import_interactions8 = require("@react-aria/interactions");
2156
+ var import_table7 = require("@react-aria/table");
2157
+ var import_utils14 = require("@react-aria/utils");
2158
+ var import_system39 = require("@marigold/system");
2159
+ var TableRow = ({ children, row }) => {
2160
+ const ref = (0, import_react58.useRef)(null);
2161
+ const { state, styles } = useTableContext();
2162
+ const { rowProps, isPressed } = (0, import_table7.useTableRow)({
2163
+ node: row
2164
+ }, state, ref);
2165
+ const disabled = state.disabledKeys.has(row.key);
2166
+ const selected = state.selectionManager.isSelected(row.key);
2167
+ const { focusProps, isFocusVisible } = (0, import_focus14.useFocusRing)({ within: true });
2168
+ const { hoverProps, isHovered } = (0, import_interactions8.useHover)({ isDisabled: disabled });
2169
+ const stateProps = (0, import_system39.useStateProps)({
2170
+ disabled,
2171
+ selected,
2172
+ hover: isHovered,
2173
+ focusVisible: isFocusVisible,
2174
+ active: isPressed
2175
+ });
2176
+ return /* @__PURE__ */ import_react58.default.createElement(import_system39.Box, __spreadValues(__spreadValues({
2177
+ as: "tr",
2178
+ ref,
2179
+ css: styles.row
2180
+ }, (0, import_utils14.mergeProps)(rowProps, focusProps, hoverProps)), stateProps), children);
2181
+ };
2182
+
2183
+ // src/Table/TableSelectAllCell.tsx
2184
+ var import_react59 = __toESM(require("react"));
2185
+ var import_focus15 = require("@react-aria/focus");
2186
+ var import_interactions9 = require("@react-aria/interactions");
2187
+ var import_table8 = require("@react-aria/table");
2188
+ var import_utils15 = require("@react-aria/utils");
2189
+ var import_system40 = require("@marigold/system");
2190
+ var TableSelectAllCell = ({ column }) => {
2191
+ const ref = (0, import_react59.useRef)(null);
2192
+ const { state, styles } = useTableContext();
2193
+ const { columnHeaderProps } = (0, import_table8.useTableColumnHeader)({
2194
+ node: column
2195
+ }, state, ref);
2196
+ const { checkboxProps } = mapCheckboxProps((0, import_table8.useTableSelectAllCheckbox)(state));
2197
+ const { hoverProps, isHovered } = (0, import_interactions9.useHover)({});
2198
+ const { focusProps, isFocusVisible } = (0, import_focus15.useFocusRing)();
2199
+ const stateProps = (0, import_system40.useStateProps)({
2200
+ hover: isHovered,
2201
+ focusVisible: isFocusVisible
2202
+ });
2203
+ return /* @__PURE__ */ import_react59.default.createElement(import_system40.Box, __spreadValues(__spreadValues({
2204
+ as: "th",
2205
+ ref,
2206
+ __baseCSS: {
2207
+ textAlign: "center",
2208
+ verticalAlign: "middle",
2209
+ lineHeight: 1
2210
+ },
2211
+ css: styles.header
2212
+ }, (0, import_utils15.mergeProps)(columnHeaderProps, hoverProps, focusProps)), stateProps), /* @__PURE__ */ import_react59.default.createElement(Checkbox, __spreadValues({}, checkboxProps)));
2213
+ };
2214
+
2215
+ // src/Table/Table.tsx
2216
+ var Table = (_a) => {
2217
+ var _b = _a, { variant, size } = _b, props = __objRest(_b, ["variant", "size"]);
2218
+ const tableRef = (0, import_react60.useRef)(null);
2219
+ const state = (0, import_table10.useTableState)(__spreadProps(__spreadValues({}, props), {
2220
+ showSelectionCheckboxes: props.selectionMode === "multiple" && props.selectionBehavior !== "replace"
2221
+ }));
2222
+ const { gridProps } = (0, import_table9.useTable)(props, state, tableRef);
2223
+ const styles = (0, import_system41.useComponentStyles)("Table", { variant, size }, { parts: ["table", "header", "row", "cell"] });
2224
+ const { collection } = state;
2225
+ return /* @__PURE__ */ import_react60.default.createElement(TableContext.Provider, {
2226
+ value: { state, styles }
2227
+ }, /* @__PURE__ */ import_react60.default.createElement(import_system41.Box, __spreadValues({
2228
+ as: "table",
2229
+ ref: tableRef,
2230
+ css: styles.table
2231
+ }, gridProps), /* @__PURE__ */ import_react60.default.createElement(TableHeader, null, collection.headerRows.map((headerRow) => /* @__PURE__ */ import_react60.default.createElement(TableHeaderRow, {
2232
+ key: headerRow.key,
2233
+ item: headerRow
2234
+ }, [...headerRow.childNodes].map((column) => {
2235
+ var _a2;
2236
+ return ((_a2 = column.props) == null ? void 0 : _a2.isSelectionCell) ? /* @__PURE__ */ import_react60.default.createElement(TableSelectAllCell, {
2237
+ key: column.key,
2238
+ column
2239
+ }) : /* @__PURE__ */ import_react60.default.createElement(TableColumnHeader, {
2240
+ key: column.key,
2241
+ column
2242
+ });
2243
+ })))), /* @__PURE__ */ import_react60.default.createElement(TableBody, null, [...collection.body.childNodes].map((row) => /* @__PURE__ */ import_react60.default.createElement(TableRow, {
2244
+ key: row.key,
2245
+ row
2246
+ }, [...row.childNodes].map((cell) => {
2247
+ var _a2;
2248
+ return ((_a2 = cell.props) == null ? void 0 : _a2.isSelectionCell) ? /* @__PURE__ */ import_react60.default.createElement(TableCheckboxCell, {
2249
+ key: cell.key,
2250
+ cell
2251
+ }) : /* @__PURE__ */ import_react60.default.createElement(TableCell, {
2252
+ key: cell.key,
2253
+ cell
2254
+ });
2255
+ }))))));
2256
+ };
2257
+ Table.Body = import_table10.TableBody;
2258
+ Table.Cell = import_table10.Cell;
2259
+ Table.Column = import_table10.Column;
2260
+ Table.Header = import_table10.TableHeader;
2261
+ Table.Row = import_table10.Row;
2262
+
2263
+ // src/Text/Text.tsx
2264
+ var import_react61 = __toESM(require("react"));
2265
+ var import_system42 = require("@marigold/system");
2266
+ var import_system43 = require("@marigold/system");
2267
+ var Text = (_a) => {
1335
2268
  var _b = _a, {
1336
- variant = "",
1337
- htmlFor,
1338
- error,
1339
- errorMessage,
1340
- required,
2269
+ variant,
2270
+ size,
2271
+ align,
2272
+ color,
2273
+ fontSize,
2274
+ cursor,
2275
+ outline,
1341
2276
  children
1342
2277
  } = _b, props = __objRest(_b, [
1343
2278
  "variant",
1344
- "htmlFor",
1345
- "error",
1346
- "errorMessage",
1347
- "required",
2279
+ "size",
2280
+ "align",
2281
+ "color",
2282
+ "fontSize",
2283
+ "cursor",
2284
+ "outline",
1348
2285
  "children"
1349
2286
  ]);
1350
- const ref = (0, import_react36.useRef)(null);
1351
- const { labelProps, inputProps, errorMessageProps } = (0, import_textfield2.useTextField)(__spreadProps(__spreadValues({}, props), {
1352
- inputElementType: "textarea"
1353
- }), ref);
1354
- return /* @__PURE__ */ import_react36.default.createElement(import_system.Box, null, /* @__PURE__ */ import_react36.default.createElement(Label, __spreadValues({
1355
- htmlFor,
1356
- required
1357
- }, labelProps), props.label), /* @__PURE__ */ import_react36.default.createElement(import_system.Box, __spreadValues(__spreadProps(__spreadValues({
2287
+ const styles = (0, import_system42.useComponentStyles)("Text", {
2288
+ variant,
2289
+ size
2290
+ });
2291
+ return /* @__PURE__ */ import_react61.default.createElement(import_system43.Box, __spreadProps(__spreadValues({
2292
+ as: "p"
2293
+ }, props), {
2294
+ css: __spreadValues({ color, cursor, outline, fontSize, textAlign: align }, styles)
2295
+ }), children);
2296
+ };
2297
+
2298
+ // src/TextArea/TextArea.tsx
2299
+ var import_react62 = __toESM(require("react"));
2300
+ var import_textfield = require("@react-aria/textfield");
2301
+ var import_system44 = require("@marigold/system");
2302
+ var import_interactions10 = require("@react-aria/interactions");
2303
+ var import_focus16 = require("@react-aria/focus");
2304
+ var TextArea = (_a) => {
2305
+ var _b = _a, {
2306
+ variant,
2307
+ size,
2308
+ width,
2309
+ disabled,
2310
+ required,
2311
+ readOnly,
2312
+ error
2313
+ } = _b, props = __objRest(_b, [
2314
+ "variant",
2315
+ "size",
2316
+ "width",
2317
+ "disabled",
2318
+ "required",
2319
+ "readOnly",
2320
+ "error"
2321
+ ]);
2322
+ const { label, description, errorMessage } = props;
2323
+ const ref = (0, import_react62.useRef)(null);
2324
+ const { labelProps, inputProps, descriptionProps, errorMessageProps } = (0, import_textfield.useTextField)(__spreadValues({
2325
+ inputElementType: "textarea",
2326
+ isDisabled: disabled,
2327
+ isRequired: required,
2328
+ isReadOnly: readOnly,
2329
+ validationState: error ? "invalid" : "valid"
2330
+ }, props), ref);
2331
+ const { hoverProps, isHovered } = (0, import_interactions10.useHover)({});
2332
+ const { focusProps, isFocusVisible } = (0, import_focus16.useFocusRing)();
2333
+ const stateProps = (0, import_system44.useStateProps)({
2334
+ hover: isHovered,
2335
+ focus: isFocusVisible,
2336
+ disabled,
2337
+ readOnly,
2338
+ error
2339
+ });
2340
+ const styles = (0, import_system44.useComponentStyles)("TextArea", { variant, size });
2341
+ return /* @__PURE__ */ import_react62.default.createElement(FieldBase, {
2342
+ label,
2343
+ labelProps,
2344
+ required,
2345
+ description,
2346
+ descriptionProps,
2347
+ error,
2348
+ errorMessage,
2349
+ errorMessageProps,
2350
+ stateProps,
2351
+ variant,
2352
+ size,
2353
+ width
2354
+ }, /* @__PURE__ */ import_react62.default.createElement(import_system44.Box, __spreadValues(__spreadValues(__spreadValues(__spreadValues({
1358
2355
  as: "textarea",
1359
- variant: `textarea.${variant}`,
1360
- css: {
1361
- outlineColor: error && "error"
1362
- }
1363
- }, inputProps), {
2356
+ css: styles,
1364
2357
  ref
1365
- }), props)), error && errorMessage && /* @__PURE__ */ import_react36.default.createElement(ValidationMessage, __spreadValues({}, errorMessageProps), /* @__PURE__ */ import_react36.default.createElement(import_icons8.Exclamation, {
1366
- size: 16
1367
- }), errorMessage));
2358
+ }, inputProps), focusProps), hoverProps), stateProps)));
2359
+ };
2360
+
2361
+ // src/TextField/TextField.tsx
2362
+ var import_react63 = __toESM(require("react"));
2363
+ var import_interactions11 = require("@react-aria/interactions");
2364
+ var import_focus17 = require("@react-aria/focus");
2365
+ var import_textfield2 = require("@react-aria/textfield");
2366
+ var import_system45 = require("@marigold/system");
2367
+ var TextField = (_a) => {
2368
+ var _b = _a, {
2369
+ variant,
2370
+ size,
2371
+ width,
2372
+ disabled,
2373
+ required,
2374
+ readOnly,
2375
+ error
2376
+ } = _b, props = __objRest(_b, [
2377
+ "variant",
2378
+ "size",
2379
+ "width",
2380
+ "disabled",
2381
+ "required",
2382
+ "readOnly",
2383
+ "error"
2384
+ ]);
2385
+ const { label, description, errorMessage, autoFocus } = props;
2386
+ const ref = (0, import_react63.useRef)(null);
2387
+ const { labelProps, inputProps, descriptionProps, errorMessageProps } = (0, import_textfield2.useTextField)(__spreadValues({
2388
+ isDisabled: disabled,
2389
+ isRequired: required,
2390
+ isReadOnly: readOnly,
2391
+ validationState: error ? "invalid" : "valid"
2392
+ }, props), ref);
2393
+ const { hoverProps, isHovered } = (0, import_interactions11.useHover)({});
2394
+ const { focusProps, isFocusVisible } = (0, import_focus17.useFocusRing)({
2395
+ isTextInput: true,
2396
+ autoFocus
2397
+ });
2398
+ const stateProps = (0, import_system45.useStateProps)({
2399
+ hover: isHovered,
2400
+ focus: isFocusVisible,
2401
+ disabled,
2402
+ readOnly,
2403
+ error
2404
+ });
2405
+ return /* @__PURE__ */ import_react63.default.createElement(FieldBase, {
2406
+ label,
2407
+ labelProps,
2408
+ required,
2409
+ description,
2410
+ descriptionProps,
2411
+ error,
2412
+ errorMessage,
2413
+ errorMessageProps,
2414
+ stateProps,
2415
+ variant,
2416
+ size,
2417
+ width
2418
+ }, /* @__PURE__ */ import_react63.default.createElement(Input, __spreadValues(__spreadValues(__spreadValues(__spreadValues({
2419
+ ref,
2420
+ variant,
2421
+ size
2422
+ }, inputProps), focusProps), hoverProps), stateProps)));
1368
2423
  };
1369
2424
 
1370
2425
  // src/Tiles/Tiles.tsx
1371
- var import_react37 = __toESM(require("react"));
1372
- var Tiles = import_react37.default.forwardRef(function Tiles2(_a, ref) {
2426
+ var import_react64 = __toESM(require("react"));
2427
+ var Tiles = import_react64.default.forwardRef(function Tiles2(_a, ref) {
1373
2428
  var _b = _a, { space = "none", itemMinWidth = "250px", children } = _b, props = __objRest(_b, ["space", "itemMinWidth", "children"]);
1374
- return /* @__PURE__ */ import_react37.default.createElement(import_system.Box, __spreadValues({
2429
+ return /* @__PURE__ */ import_react64.default.createElement(import_system.Box, __spreadValues({
1375
2430
  ref,
1376
2431
  display: "grid",
1377
2432
  __baseCSS: {
@@ -1382,118 +2437,97 @@ var Tiles = import_react37.default.forwardRef(function Tiles2(_a, ref) {
1382
2437
  });
1383
2438
 
1384
2439
  // src/Tooltip/Tooltip.tsx
1385
- var import_react39 = __toESM(require("react"));
2440
+ var import_react67 = __toESM(require("react"));
1386
2441
  var import_tooltip3 = require("@react-aria/tooltip");
1387
- var import_utils3 = require("@react-aria/utils");
2442
+ var import_system46 = require("@marigold/system");
2443
+
2444
+ // src/Tooltip/Context.ts
2445
+ var import_react65 = require("react");
2446
+ var TooltipContext = (0, import_react65.createContext)({});
2447
+ var useTooltipContext = () => (0, import_react65.useContext)(TooltipContext);
1388
2448
 
1389
2449
  // src/Tooltip/TooltipTrigger.tsx
1390
- var import_react38 = __toESM(require("react"));
1391
- var import_focus7 = require("@react-aria/focus");
2450
+ var import_react66 = __toESM(require("react"));
2451
+ var import_focus18 = require("@react-aria/focus");
2452
+ var import_overlays9 = require("@react-aria/overlays");
1392
2453
  var import_tooltip = require("@react-aria/tooltip");
1393
2454
  var import_tooltip2 = require("@react-stately/tooltip");
1394
- var TooltipContext = import_react38.default.createContext({});
1395
2455
  var TooltipTrigger = (_a) => {
1396
- var _b = _a, { children } = _b, props = __objRest(_b, ["children"]);
1397
- const [trigger, tooltip] = import_react38.default.Children.toArray(children);
1398
- const state = (0, import_tooltip2.useTooltipTriggerState)(props);
1399
- const tooltipTriggerRef = (0, import_react38.useRef)();
1400
- const { triggerProps, tooltipProps } = (0, import_tooltip.useTooltipTrigger)({}, state, tooltipTriggerRef);
1401
- return /* @__PURE__ */ import_react38.default.createElement(import_focus7.FocusableProvider, __spreadProps(__spreadValues({}, triggerProps), {
1402
- ref: tooltipTriggerRef
1403
- }), trigger, state.isOpen && /* @__PURE__ */ import_react38.default.createElement(TooltipContext.Provider, {
1404
- value: __spreadValues({
1405
- state
1406
- }, tooltipProps)
1407
- }, tooltip));
1408
- };
1409
-
1410
- // src/Tooltip/Tooltip.tsx
1411
- var Tooltip = (_a) => {
1412
2456
  var _b = _a, {
1413
- variant = "",
2457
+ disabled,
2458
+ open,
2459
+ delay = 1e3,
2460
+ placement = "top",
1414
2461
  children
1415
- } = _b, props = __objRest(_b, [
1416
- "variant",
2462
+ } = _b, rest = __objRest(_b, [
2463
+ "disabled",
2464
+ "open",
2465
+ "delay",
2466
+ "placement",
1417
2467
  "children"
1418
2468
  ]);
1419
- const _a2 = (0, import_react39.useContext)(TooltipContext), { state } = _a2, tooltipProviderProps = __objRest(_a2, ["state"]);
1420
- const mergedProps = (0, import_utils3.mergeProps)(props, tooltipProviderProps);
1421
- const { tooltipProps } = (0, import_tooltip3.useTooltip)(mergedProps, state);
1422
- return /* @__PURE__ */ import_react39.default.createElement(import_system.Box, __spreadValues({
1423
- position: "relative"
1424
- }, tooltipProps), /* @__PURE__ */ import_react39.default.createElement(import_system.Box, __spreadValues({
1425
- position: "absolute",
1426
- variant: `tooltip.${variant}`
1427
- }, mergedProps), children));
1428
- };
1429
-
1430
- // src/Input/Input.tsx
1431
- var import_react40 = __toESM(require("react"));
1432
- var Input = (_a) => {
1433
- var _b = _a, {
1434
- variant = "",
1435
- type = "text"
1436
- } = _b, props = __objRest(_b, [
1437
- "variant",
1438
- "type"
1439
- ]);
1440
- return /* @__PURE__ */ import_react40.default.createElement(import_system.Box, __spreadProps(__spreadValues({}, props), {
1441
- as: "input",
1442
- type,
1443
- variant: `input.${variant}`
1444
- }));
2469
+ const [tooltipTrigger, tooltip] = import_react66.default.Children.toArray(children);
2470
+ const props = __spreadProps(__spreadValues({}, rest), {
2471
+ isDisabled: disabled,
2472
+ isOpen: open,
2473
+ delay,
2474
+ placement
2475
+ });
2476
+ const tooltipTriggerRef = (0, import_react66.useRef)(null);
2477
+ const overlayRef = (0, import_react66.useRef)(null);
2478
+ const state = (0, import_tooltip2.useTooltipTriggerState)(props);
2479
+ const { triggerProps, tooltipProps } = (0, import_tooltip.useTooltipTrigger)(props, state, tooltipTriggerRef);
2480
+ const {
2481
+ overlayProps: positionProps,
2482
+ placement: overlayPlacement,
2483
+ arrowProps
2484
+ } = (0, import_overlays9.useOverlayPosition)({
2485
+ placement: props.placement,
2486
+ targetRef: tooltipTriggerRef,
2487
+ offset: props.offset,
2488
+ crossOffset: props.crossOffset,
2489
+ isOpen: state.isOpen,
2490
+ overlayRef
2491
+ });
2492
+ return /* @__PURE__ */ import_react66.default.createElement(import_focus18.FocusableProvider, __spreadValues({
2493
+ ref: tooltipTriggerRef
2494
+ }, triggerProps), tooltipTrigger, /* @__PURE__ */ import_react66.default.createElement(TooltipContext.Provider, {
2495
+ value: __spreadValues(__spreadValues({
2496
+ state,
2497
+ overlayRef,
2498
+ arrowProps,
2499
+ placement: overlayPlacement
2500
+ }, tooltipProps), positionProps)
2501
+ }, /* @__PURE__ */ import_react66.default.createElement(Overlay, {
2502
+ open: state.isOpen
2503
+ }, tooltip)));
1445
2504
  };
1446
2505
 
1447
- // src/Container/Container.tsx
1448
- var import_react41 = __toESM(require("react"));
1449
- var import_tokens2 = require("@marigold/tokens");
1450
- var ALIGNMENT3 = {
1451
- left: "flex-start",
1452
- center: "center",
1453
- right: "flex-end"
1454
- };
1455
- var Container = (_a) => {
1456
- var _b = _a, {
1457
- contentType = "content",
1458
- size = "medium",
1459
- align = "left",
1460
- alignContainer = "left",
1461
- children
1462
- } = _b, props = __objRest(_b, [
1463
- "contentType",
1464
- "size",
1465
- "align",
1466
- "alignContainer",
1467
- "children"
1468
- ]);
1469
- const maxWidth = import_tokens2.size[contentType][size];
1470
- let gridTemplateColumns = `${maxWidth} 1fr 1fr`;
1471
- let gridColumn = 1;
1472
- if (alignContainer === "center") {
1473
- gridTemplateColumns = `1fr ${maxWidth} 1fr`;
1474
- gridColumn = 2;
1475
- }
1476
- if (alignContainer === "right") {
1477
- gridTemplateColumns = `1fr 1fr ${maxWidth}`;
1478
- gridColumn = 3;
1479
- }
1480
- return /* @__PURE__ */ import_react41.default.createElement(import_system.Box, __spreadValues({
1481
- display: "grid",
1482
- css: {
1483
- gridTemplateColumns,
1484
- placeItems: ALIGNMENT3[align],
1485
- "> *": {
1486
- gridColumn
1487
- }
1488
- }
1489
- }, props), children);
2506
+ // src/Tooltip/Tooltip.tsx
2507
+ var Tooltip = ({ children, variant, size }) => {
2508
+ const _a = useTooltipContext(), { arrowProps, state, overlayRef, placement } = _a, rest = __objRest(_a, ["arrowProps", "state", "overlayRef", "placement"]);
2509
+ const { tooltipProps } = (0, import_tooltip3.useTooltip)({}, state);
2510
+ const styles = (0, import_system46.useComponentStyles)("Tooltip", { variant, size }, { parts: ["container", "arrow"] });
2511
+ return /* @__PURE__ */ import_react67.default.createElement(import_system46.Box, __spreadProps(__spreadValues(__spreadValues({}, tooltipProps), rest), {
2512
+ ref: overlayRef,
2513
+ css: styles.container,
2514
+ "data-placement": placement
2515
+ }), /* @__PURE__ */ import_react67.default.createElement("div", null, children), /* @__PURE__ */ import_react67.default.createElement(import_system46.Box, __spreadProps(__spreadValues({}, arrowProps), {
2516
+ __baseCSS: {
2517
+ position: "absolute",
2518
+ height: 0,
2519
+ width: 0,
2520
+ borderStyle: "solid",
2521
+ borderLeftColor: "transparent",
2522
+ borderRightColor: "transparent",
2523
+ borderBottomColor: "transparent"
2524
+ },
2525
+ css: styles.arrow
2526
+ })));
1490
2527
  };
1491
-
1492
- // src/index.ts
1493
- var import_collections = require("@react-stately/collections");
2528
+ Tooltip.Trigger = TooltipTrigger;
1494
2529
  // Annotate the CommonJS export names for ESM import in node:
1495
2530
  0 && (module.exports = {
1496
- ActionGroup,
1497
2531
  Aside,
1498
2532
  Aspect,
1499
2533
  Badge,
@@ -1503,38 +2537,42 @@ var import_collections = require("@react-stately/collections");
1503
2537
  Card,
1504
2538
  Center,
1505
2539
  Checkbox,
2540
+ CheckboxGroup,
2541
+ CheckboxGroupContext,
1506
2542
  Columns,
1507
2543
  Container,
2544
+ Content,
1508
2545
  Dialog,
1509
2546
  Divider,
1510
- Field,
2547
+ Footer,
2548
+ Header,
2549
+ Headline,
1511
2550
  Image,
1512
2551
  Inline,
1513
2552
  Input,
1514
- Item,
1515
2553
  Label,
1516
- LabelBase,
1517
2554
  Link,
1518
2555
  MarigoldProvider,
1519
2556
  Menu,
1520
- MenuItem,
1521
2557
  Message,
2558
+ NumberField,
2559
+ Overlay,
2560
+ Popover,
1522
2561
  Radio,
1523
2562
  SSRProvider,
1524
- Section,
1525
2563
  Select,
1526
2564
  Slider,
1527
2565
  Stack,
1528
2566
  Switch,
2567
+ Table,
1529
2568
  Text,
1530
- Textarea,
2569
+ TextArea,
2570
+ TextField,
1531
2571
  ThemeProvider,
1532
2572
  Tiles,
1533
2573
  Tooltip,
1534
- TooltipContext,
1535
- TooltipTrigger,
1536
- ValidationMessage,
2574
+ Underlay,
1537
2575
  VisuallyHidden,
1538
- useDialogButtonProps,
2576
+ useCheckboxGroupContext,
1539
2577
  useTheme
1540
2578
  });