@marigold/components 3.0.6 → 4.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  export { useAsyncList, useListData } from '@react-stately/data';
2
- import { ThemeExtension, ThemeComponentProps, ResponsiveStyleValue, ThemeExtensionsWithParts, CSSObject, BoxOwnProps, StateAttrProps, Theme as Theme$1, ThemeProviderProps, GlobalProps, SVGProps } from '@marigold/system';
2
+ import { ThemeExtension, ThemeComponentProps, ResponsiveStyleValue, ThemeExtensionsWithParts, StateAttrProps, CSSObject, BoxOwnProps, Theme as Theme$1, ThemeProviderProps, GlobalProps, SVGProps } from '@marigold/system';
3
3
  export { Box, BoxOwnProps, BoxProps, StyleProps, ThemeProvider, useTheme } from '@marigold/system';
4
- import React, { ReactNode, HTMLAttributes, Key, LabelHTMLAttributes, ForwardRefExoticComponent, RefAttributes, ReactElement } from 'react';
4
+ import React, { ReactNode, HTMLAttributes, LabelHTMLAttributes, Key, ForwardRefExoticComponent, RefAttributes, ReactElement } from 'react';
5
5
  import { ComponentProps, PolymorphicPropsWithRef, PolymorphicComponentWithRef, NonZeroPercentage } from '@marigold/types';
6
6
  import * as _react_types_shared from '@react-types/shared';
7
7
  import { PressEvents, CollectionElement } from '@react-types/shared';
@@ -148,6 +148,35 @@ interface DividerProps extends SeparatorProps {
148
148
  }
149
149
  declare const Divider: ({ variant, ...props }: DividerProps) => JSX.Element;
150
150
 
151
+ interface LabelThemeExtension extends ThemeExtension<'Label'> {
152
+ }
153
+ interface LabelProps extends ComponentProps<'label'> {
154
+ as?: 'label' | 'span';
155
+ variant?: string;
156
+ size?: string;
157
+ required?: boolean;
158
+ }
159
+ declare const Label: ({ as, required, children, variant, size, ...props }: LabelProps) => JSX.Element;
160
+
161
+ interface FieldBaseProps {
162
+ children?: ReactNode;
163
+ variant?: string;
164
+ size?: string;
165
+ width?: string;
166
+ disabled?: boolean;
167
+ required?: boolean;
168
+ label?: ReactNode;
169
+ labelProps?: LabelHTMLAttributes<HTMLLabelElement> & Pick<LabelProps, 'as'>;
170
+ description?: ReactNode;
171
+ descriptionProps?: HTMLAttributes<HTMLElement>;
172
+ error?: boolean;
173
+ errorMessage?: ReactNode;
174
+ errorMessageProps?: HTMLAttributes<HTMLElement>;
175
+ stateProps?: StateAttrProps;
176
+ }
177
+ interface FieldThemeExtension extends ThemeExtension<'Field'> {
178
+ }
179
+
151
180
  interface FooterThemeExtension extends ThemeExtension<'Footer'> {
152
181
  }
153
182
  interface FooterProps extends ThemeComponentProps, ComponentProps<'footer'> {
@@ -197,16 +226,6 @@ interface InputProps extends Omit<React.ComponentPropsWithRef<'input'>, 'size'>,
197
226
  }
198
227
  declare const Input: React.ForwardRefExoticComponent<InputOwnProps & React.RefAttributes<HTMLInputElement>>;
199
228
 
200
- interface LabelThemeExtension extends ThemeExtension<'Label'> {
201
- }
202
- interface LabelProps extends ComponentProps<'label'> {
203
- as?: 'label' | 'span';
204
- variant?: string;
205
- size?: string;
206
- required?: boolean;
207
- }
208
- declare const Label: ({ as, required, children, variant, size, ...props }: LabelProps) => JSX.Element;
209
-
210
229
  interface LinkThemeExtension extends ThemeExtension<'Link'> {
211
230
  }
212
231
  interface LinkOwnProps extends PressEvents, BoxOwnProps {
@@ -278,23 +297,6 @@ interface MessageProps extends ComponentProps<'div'> {
278
297
  }
279
298
  declare const Message: ({ messageTitle, variant, size, children, ...props }: MessageProps) => JSX.Element;
280
299
 
281
- interface FieldBaseProps {
282
- children?: ReactNode;
283
- variant?: string;
284
- size?: string;
285
- width?: string;
286
- disabled?: boolean;
287
- required?: boolean;
288
- label?: ReactNode;
289
- labelProps?: LabelHTMLAttributes<HTMLLabelElement> & Pick<LabelProps, 'as'>;
290
- description?: ReactNode;
291
- descriptionProps?: HTMLAttributes<HTMLElement>;
292
- error?: boolean;
293
- errorMessage?: ReactNode;
294
- errorMessageProps?: HTMLAttributes<HTMLElement>;
295
- stateProps?: StateAttrProps;
296
- }
297
-
298
300
  interface NumberFieldThemeExtension extends ThemeExtensionsWithParts<'NumberField', ['group', 'stepper']> {
299
301
  }
300
302
  /**
@@ -468,10 +470,11 @@ interface TextProps extends ThemeComponentProps, ComponentProps<'p'>, Omit<BoxOw
468
470
  color?: string;
469
471
  cursor?: string;
470
472
  fontSize?: string;
473
+ fontWeight?: string;
471
474
  outline?: string;
472
475
  children?: React.ReactNode;
473
476
  }
474
- declare const Text: ({ variant, size, align, color, fontSize, cursor, outline, children, ...props }: TextProps) => JSX.Element;
477
+ declare const Text: ({ variant, size, align, color, fontSize, fontWeight, cursor, outline, children, ...props }: TextProps) => JSX.Element;
475
478
 
476
479
  interface TextAreaThemeExtension extends ThemeExtension<'TextArea'> {
477
480
  }
@@ -507,7 +510,7 @@ declare const Tooltip: {
507
510
  Trigger: ({ disabled, open, delay, placement, children, ...rest }: TooltipTriggerProps) => JSX.Element;
508
511
  };
509
512
 
510
- interface ComponentStyles extends BadgeThemeExtension, ButtonThemeExtension, CardThemeExtension, CheckboxThemeExtension, CheckboxGroupThemeExtension, BodyThemeExtension, DialogThemeExtension, DividerThemeExtension, FooterThemeExtension, HeaderThemeExtension, HeadlineThemeExtension, HelpTextThemeExtension, ImageThemeExtension, InputThemeExtension, LabelThemeExtension, LinkThemeExtension, ListThemeExtension, ListBoxThemeExtension, MenuThemeExtension, MessageThemeExtension, NumberFieldThemeExtension, RadioThemeExtension, RadioGroupThemeExtension, SelectThemeExtension, SliderThemeExtension, SwitchThemeExtension, TableThemeExtension, TextThemeExtension, TextAreaThemeExtension, TooltipThemeExtension, UnderlayThemeExtension {
513
+ interface ComponentStyles extends BadgeThemeExtension, ButtonThemeExtension, CardThemeExtension, CheckboxThemeExtension, CheckboxGroupThemeExtension, BodyThemeExtension, DialogThemeExtension, DividerThemeExtension, FieldThemeExtension, FooterThemeExtension, HeaderThemeExtension, HeadlineThemeExtension, HelpTextThemeExtension, ImageThemeExtension, InputThemeExtension, LabelThemeExtension, LinkThemeExtension, ListThemeExtension, ListBoxThemeExtension, MenuThemeExtension, MessageThemeExtension, NumberFieldThemeExtension, RadioThemeExtension, RadioGroupThemeExtension, SelectThemeExtension, SliderThemeExtension, SwitchThemeExtension, TableThemeExtension, TextThemeExtension, TextAreaThemeExtension, TooltipThemeExtension, UnderlayThemeExtension {
511
514
  }
512
515
  interface Theme extends Theme$1 {
513
516
  components: ComponentStyles;
@@ -640,11 +643,12 @@ declare const TextField: React.ForwardRefExoticComponent<TextFieldProps & React.
640
643
 
641
644
  interface TilesProps {
642
645
  children: ReactNode;
646
+ tilesWidth: string;
643
647
  space?: ResponsiveStyleValue<string>;
644
- itemMinWidth?: ResponsiveStyleValue<string>;
645
- gridAutoRows?: boolean;
648
+ stretch?: boolean;
649
+ equalHeight?: boolean;
646
650
  }
647
- declare const Tiles: React.ForwardRefExoticComponent<TilesProps & React.RefAttributes<HTMLDivElement>>;
651
+ declare const Tiles: ({ space, stretch, equalHeight, tilesWidth, children, ...props }: TilesProps) => JSX.Element;
648
652
 
649
653
  declare const XLoader: React.ForwardRefExoticComponent<SVGProps & React.RefAttributes<SVGElement>>;
650
654
 
package/dist/index.js CHANGED
@@ -346,7 +346,6 @@ var Label = ({
346
346
  ...props,
347
347
  as,
348
348
  "aria-required": required,
349
- __baseCSS: { display: "flex", alignItems: "center", gap: 4 },
350
349
  css: styles
351
350
  }, children, required && /* @__PURE__ */ import_react9.default.createElement(import_icons.Required, {
352
351
  role: "presentation",
@@ -424,6 +423,7 @@ var IndeterminateMark = () => /* @__PURE__ */ import_react11.default.createEleme
424
423
  var Icon = ({ css, checked, indeterminate, ...props }) => /* @__PURE__ */ import_react11.default.createElement(import_system8.Box, {
425
424
  "aria-hidden": "true",
426
425
  __baseCSS: {
426
+ flex: "0 0 16px",
427
427
  width: 16,
428
428
  height: 16,
429
429
  bg: "#fff",
@@ -572,7 +572,7 @@ var Columns = ({
572
572
  css: {
573
573
  flexGrow: columns[idx]
574
574
  }
575
- }, (0, import_react12.isValidElement)(child) ? (0, import_react12.cloneElement)(child) : null)));
575
+ }, (0, import_react12.isValidElement)(child) ? (0, import_react12.cloneElement)(child) : child)));
576
576
  };
577
577
 
578
578
  // src/Container/Container.tsx
@@ -652,7 +652,7 @@ var Headline = ({
652
652
  }) => {
653
653
  const styles = (0, import_system10.useComponentStyles)("Headline", {
654
654
  variant,
655
- size: size ?? `level-${level}`
655
+ size: size != null ? size : `level-${level}`
656
656
  });
657
657
  return /* @__PURE__ */ import_react15.default.createElement(import_system10.Box, {
658
658
  as: `h${level}`,
@@ -1103,14 +1103,14 @@ var MenuTrigger = ({ disabled, children }) => {
1103
1103
  const { overlayProps: positionProps } = (0, import_overlays5.useOverlayPosition)({
1104
1104
  targetRef: menuTriggerRef,
1105
1105
  overlayRef,
1106
- isOpen: state.isOpen
1106
+ isOpen: state.isOpen,
1107
+ placement: "bottom left"
1107
1108
  });
1108
1109
  const menuContext = {
1109
1110
  ...menuProps,
1110
1111
  open: state.isOpen,
1111
1112
  onClose: state.close,
1112
- autoFocus: state.focusStrategy,
1113
- triggerWidth: menuTriggerRef.current ? menuTriggerRef.current.offsetWidth : void 0
1113
+ autoFocus: state.focusStrategy
1114
1114
  };
1115
1115
  return /* @__PURE__ */ import_react33.default.createElement(MenuContext.Provider, {
1116
1116
  value: menuContext
@@ -1124,6 +1124,7 @@ var MenuTrigger = ({ disabled, children }) => {
1124
1124
  dismissable: true,
1125
1125
  shouldCloseOnBlur: true,
1126
1126
  ref: overlayRef,
1127
+ minWidth: menuTriggerRef.current ? menuTriggerRef.current.offsetWidth : void 0,
1127
1128
  ...positionProps
1128
1129
  }, menu));
1129
1130
  };
@@ -1166,7 +1167,7 @@ var MenuItem = ({ item, state, onAction, css }) => {
1166
1167
 
1167
1168
  // src/Menu/Menu.tsx
1168
1169
  var Menu = ({ variant, size, ...props }) => {
1169
- const { triggerWidth, ...menuContext } = useMenuContext();
1170
+ const menuContext = useMenuContext();
1170
1171
  const ownProps = { ...props, ...menuContext };
1171
1172
  const ref = (0, import_react35.useRef)(null);
1172
1173
  const state = (0, import_tree.useTreeState)({ ...ownProps, selectionMode: "none" });
@@ -1183,7 +1184,6 @@ var Menu = ({ variant, size, ...props }) => {
1183
1184
  }), /* @__PURE__ */ import_react35.default.createElement(import_system22.Box, {
1184
1185
  as: "ul",
1185
1186
  ref,
1186
- style: { width: triggerWidth },
1187
1187
  __baseCSS: {
1188
1188
  listStyle: "none",
1189
1189
  p: 0,
@@ -1234,9 +1234,10 @@ var Message = ({
1234
1234
  css: styles.container,
1235
1235
  ...props
1236
1236
  }, /* @__PURE__ */ import_react36.default.createElement(import_system.Box, {
1237
- __baseCSS: { display: "flex", alignItems: "center", gap: 4 }
1237
+ __baseCSS: { display: "flex", alignItems: "top", gap: 4 }
1238
1238
  }, /* @__PURE__ */ import_react36.default.createElement(import_system.Box, {
1239
1239
  role: "presentation",
1240
+ __baseCSS: { flex: "0 0 16px" },
1240
1241
  css: styles.icon
1241
1242
  }, icon), /* @__PURE__ */ import_react36.default.createElement(import_system.Box, {
1242
1243
  css: styles.title
@@ -1310,15 +1311,17 @@ var FieldBase = ({
1310
1311
  stateProps
1311
1312
  }) => {
1312
1313
  const hasHelpText = !!description || errorMessage && error;
1314
+ const style = (0, import_system25.useComponentStyles)("Field", { variant, size });
1313
1315
  return /* @__PURE__ */ import_react38.default.createElement(import_system25.Box, {
1314
- css: { display: "flex", flexDirection: "column", width }
1316
+ __baseCSS: { width },
1317
+ css: style
1315
1318
  }, label && /* @__PURE__ */ import_react38.default.createElement(Label, {
1316
1319
  required,
1317
1320
  variant,
1318
1321
  size,
1319
1322
  ...labelProps,
1320
1323
  ...stateProps
1321
- }, label), children, hasHelpText && /* @__PURE__ */ import_react38.default.createElement(HelpText, {
1324
+ }, label), /* @__PURE__ */ import_react38.default.createElement("div", null, children, hasHelpText && /* @__PURE__ */ import_react38.default.createElement(HelpText, {
1322
1325
  ...stateProps,
1323
1326
  variant,
1324
1327
  size,
@@ -1328,7 +1331,7 @@ var FieldBase = ({
1328
1331
  error,
1329
1332
  errorMessage,
1330
1333
  errorMessageProps
1331
- }));
1334
+ })));
1332
1335
  };
1333
1336
 
1334
1337
  // src/NumberField/StepButton.tsx
@@ -2152,7 +2155,8 @@ var Switch = (0, import_react54.forwardRef)(
2152
2155
  width: 48,
2153
2156
  height: 24,
2154
2157
  bg: "#dee2e6",
2155
- borderRadius: 20
2158
+ borderRadius: 20,
2159
+ flex: "0 0 48px"
2156
2160
  },
2157
2161
  css: styles.track,
2158
2162
  ...stateProps
@@ -2531,6 +2535,7 @@ var Text = ({
2531
2535
  align,
2532
2536
  color,
2533
2537
  fontSize,
2538
+ fontWeight,
2534
2539
  cursor,
2535
2540
  outline,
2536
2541
  children,
@@ -2543,7 +2548,10 @@ var Text = ({
2543
2548
  return /* @__PURE__ */ import_react65.default.createElement(import_system47.Box, {
2544
2549
  as: "p",
2545
2550
  ...props,
2546
- css: [styles, { color, cursor, outline, fontSize, textAlign: align }]
2551
+ css: [
2552
+ styles,
2553
+ { color, cursor, outline, fontSize, fontWeight, textAlign: align }
2554
+ ]
2547
2555
  }, children);
2548
2556
  };
2549
2557
 
@@ -2675,29 +2683,36 @@ var TextField = (0, import_react67.forwardRef)(
2675
2683
 
2676
2684
  // src/Tiles/Tiles.tsx
2677
2685
  var import_react68 = __toESM(require("react"));
2678
- var Tiles = import_react68.default.forwardRef(
2679
- ({
2680
- space = "none",
2681
- itemMinWidth = "250px",
2682
- gridAutoRows,
2683
- children,
2684
- ...props
2685
- }, ref) => /* @__PURE__ */ import_react68.default.createElement(import_system.Box, {
2686
- ref,
2687
- display: "grid",
2688
- __baseCSS: {
2686
+ var import_system50 = require("@marigold/system");
2687
+ var Tiles = ({
2688
+ space = "none",
2689
+ stretch = false,
2690
+ equalHeight = false,
2691
+ tilesWidth,
2692
+ children,
2693
+ ...props
2694
+ }) => {
2695
+ const { css } = (0, import_system50.useTheme)();
2696
+ const { width } = css({ width: tilesWidth });
2697
+ let column = `min(${typeof width === "number" ? `${width}px` : width}, 100%)`;
2698
+ if (stretch) {
2699
+ column = `minmax(${column}, 1fr)`;
2700
+ }
2701
+ return /* @__PURE__ */ import_react68.default.createElement(import_system.Box, {
2702
+ ...props,
2703
+ css: {
2704
+ display: "grid",
2689
2705
  gap: space,
2690
- gridTemplateColumns: `repeat(auto-fit, minmax(min(${itemMinWidth}, 100%), 1fr))`,
2691
- gridAutoRows: gridAutoRows ? "1fr" : "none"
2692
- },
2693
- ...props
2694
- }, children)
2695
- );
2706
+ gridTemplateColumns: `repeat(auto-fit, ${column})`,
2707
+ gridAutoRows: equalHeight ? "1fr" : void 0
2708
+ }
2709
+ }, children);
2710
+ };
2696
2711
 
2697
2712
  // src/Tooltip/Tooltip.tsx
2698
2713
  var import_react71 = __toESM(require("react"));
2699
2714
  var import_tooltip3 = require("@react-aria/tooltip");
2700
- var import_system50 = require("@marigold/system");
2715
+ var import_system51 = require("@marigold/system");
2701
2716
 
2702
2717
  // src/Tooltip/Context.ts
2703
2718
  var import_react69 = require("react");
@@ -2767,18 +2782,18 @@ var TooltipTrigger = ({
2767
2782
  var Tooltip = ({ children, variant, size }) => {
2768
2783
  const { arrowProps, state, overlayRef, placement, ...rest } = useTooltipContext();
2769
2784
  const { tooltipProps } = (0, import_tooltip3.useTooltip)({}, state);
2770
- const styles = (0, import_system50.useComponentStyles)(
2785
+ const styles = (0, import_system51.useComponentStyles)(
2771
2786
  "Tooltip",
2772
2787
  { variant, size },
2773
2788
  { parts: ["container", "arrow"] }
2774
2789
  );
2775
- return /* @__PURE__ */ import_react71.default.createElement(import_system50.Box, {
2790
+ return /* @__PURE__ */ import_react71.default.createElement(import_system51.Box, {
2776
2791
  ...tooltipProps,
2777
2792
  ...rest,
2778
2793
  ref: overlayRef,
2779
2794
  css: styles.container,
2780
2795
  "data-placement": placement
2781
- }, /* @__PURE__ */ import_react71.default.createElement("div", null, children), /* @__PURE__ */ import_react71.default.createElement(import_system50.Box, {
2796
+ }, /* @__PURE__ */ import_react71.default.createElement("div", null, children), /* @__PURE__ */ import_react71.default.createElement(import_system51.Box, {
2782
2797
  ...arrowProps,
2783
2798
  __baseCSS: {
2784
2799
  position: "absolute",
@@ -2795,9 +2810,9 @@ var Tooltip = ({ children, variant, size }) => {
2795
2810
  Tooltip.Trigger = TooltipTrigger;
2796
2811
 
2797
2812
  // src/XLoader/XLoader.tsx
2798
- var import_system51 = require("@marigold/system");
2813
+ var import_system52 = require("@marigold/system");
2799
2814
  var import_react72 = __toESM(require("react"));
2800
- var XLoader = (0, import_react72.forwardRef)((props, ref) => /* @__PURE__ */ import_react72.default.createElement(import_system51.SVG, {
2815
+ var XLoader = (0, import_react72.forwardRef)((props, ref) => /* @__PURE__ */ import_react72.default.createElement(import_system52.SVG, {
2801
2816
  id: "XLoader",
2802
2817
  xmlns: "http://www.w3.org/2000/svg",
2803
2818
  size: 150,
@@ -2814,7 +2829,7 @@ var XLoader = (0, import_react72.forwardRef)((props, ref) => /* @__PURE__ */ imp
2814
2829
  attributeName: "opacity",
2815
2830
  attributeType: "XML",
2816
2831
  values: "1; .01; 1; 1; 1;",
2817
- begin: "1.1s",
2832
+ begin: "1.0s",
2818
2833
  dur: "2.5s",
2819
2834
  repeatCount: "indefinite"
2820
2835
  })), /* @__PURE__ */ import_react72.default.createElement("path", {
@@ -2843,7 +2858,7 @@ var XLoader = (0, import_react72.forwardRef)((props, ref) => /* @__PURE__ */ imp
2843
2858
  }, /* @__PURE__ */ import_react72.default.createElement("animate", {
2844
2859
  attributeName: "opacity",
2845
2860
  attributeType: "XML",
2846
- values: "1; .01; 1; 1;",
2861
+ values: "1; .01; 1; 1; 1;",
2847
2862
  begin: "0.7s",
2848
2863
  dur: "2.5s",
2849
2864
  repeatCount: "indefinite"
@@ -2914,7 +2929,7 @@ var XLoader = (0, import_react72.forwardRef)((props, ref) => /* @__PURE__ */ imp
2914
2929
  attributeName: "opacity",
2915
2930
  attributeType: "XML",
2916
2931
  values: "1; .01; 1; 1; 1;",
2917
- begin: "0.1s",
2932
+ begin: "0.0s",
2918
2933
  dur: "2.5s",
2919
2934
  repeatCount: "indefinite"
2920
2935
  }))));
package/dist/index.mjs CHANGED
@@ -281,7 +281,6 @@ var Label = ({
281
281
  ...props,
282
282
  as,
283
283
  "aria-required": required,
284
- __baseCSS: { display: "flex", alignItems: "center", gap: 4 },
285
284
  css: styles
286
285
  }, children, required && /* @__PURE__ */ React9.createElement(Required, {
287
286
  role: "presentation",
@@ -359,6 +358,7 @@ var IndeterminateMark = () => /* @__PURE__ */ React11.createElement("svg", {
359
358
  var Icon = ({ css, checked, indeterminate, ...props }) => /* @__PURE__ */ React11.createElement(Box7, {
360
359
  "aria-hidden": "true",
361
360
  __baseCSS: {
361
+ flex: "0 0 16px",
362
362
  width: 16,
363
363
  height: 16,
364
364
  bg: "#fff",
@@ -511,7 +511,7 @@ var Columns = ({
511
511
  css: {
512
512
  flexGrow: columns[idx]
513
513
  }
514
- }, isValidElement(child) ? cloneElement(child) : null)));
514
+ }, isValidElement(child) ? cloneElement(child) : child)));
515
515
  };
516
516
 
517
517
  // src/Container/Container.tsx
@@ -599,7 +599,7 @@ var Headline = ({
599
599
  }) => {
600
600
  const styles = useComponentStyles9("Headline", {
601
601
  variant,
602
- size: size ?? `level-${level}`
602
+ size: size != null ? size : `level-${level}`
603
603
  });
604
604
  return /* @__PURE__ */ React15.createElement(Box8, {
605
605
  as: `h${level}`,
@@ -1058,14 +1058,14 @@ var MenuTrigger = ({ disabled, children }) => {
1058
1058
  const { overlayProps: positionProps } = useOverlayPosition({
1059
1059
  targetRef: menuTriggerRef,
1060
1060
  overlayRef,
1061
- isOpen: state.isOpen
1061
+ isOpen: state.isOpen,
1062
+ placement: "bottom left"
1062
1063
  });
1063
1064
  const menuContext = {
1064
1065
  ...menuProps,
1065
1066
  open: state.isOpen,
1066
1067
  onClose: state.close,
1067
- autoFocus: state.focusStrategy,
1068
- triggerWidth: menuTriggerRef.current ? menuTriggerRef.current.offsetWidth : void 0
1068
+ autoFocus: state.focusStrategy
1069
1069
  };
1070
1070
  return /* @__PURE__ */ React30.createElement(MenuContext.Provider, {
1071
1071
  value: menuContext
@@ -1079,6 +1079,7 @@ var MenuTrigger = ({ disabled, children }) => {
1079
1079
  dismissable: true,
1080
1080
  shouldCloseOnBlur: true,
1081
1081
  ref: overlayRef,
1082
+ minWidth: menuTriggerRef.current ? menuTriggerRef.current.offsetWidth : void 0,
1082
1083
  ...positionProps
1083
1084
  }, menu));
1084
1085
  };
@@ -1121,7 +1122,7 @@ var MenuItem = ({ item, state, onAction, css }) => {
1121
1122
 
1122
1123
  // src/Menu/Menu.tsx
1123
1124
  var Menu = ({ variant, size, ...props }) => {
1124
- const { triggerWidth, ...menuContext } = useMenuContext();
1125
+ const menuContext = useMenuContext();
1125
1126
  const ownProps = { ...props, ...menuContext };
1126
1127
  const ref = useRef6(null);
1127
1128
  const state = useTreeState({ ...ownProps, selectionMode: "none" });
@@ -1138,7 +1139,6 @@ var Menu = ({ variant, size, ...props }) => {
1138
1139
  }), /* @__PURE__ */ React32.createElement(Box17, {
1139
1140
  as: "ul",
1140
1141
  ref,
1141
- style: { width: triggerWidth },
1142
1142
  __baseCSS: {
1143
1143
  listStyle: "none",
1144
1144
  p: 0,
@@ -1189,9 +1189,10 @@ var Message = ({
1189
1189
  css: styles.container,
1190
1190
  ...props
1191
1191
  }, /* @__PURE__ */ React33.createElement(Box, {
1192
- __baseCSS: { display: "flex", alignItems: "center", gap: 4 }
1192
+ __baseCSS: { display: "flex", alignItems: "top", gap: 4 }
1193
1193
  }, /* @__PURE__ */ React33.createElement(Box, {
1194
1194
  role: "presentation",
1195
+ __baseCSS: { flex: "0 0 16px" },
1195
1196
  css: styles.icon
1196
1197
  }, icon), /* @__PURE__ */ React33.createElement(Box, {
1197
1198
  css: styles.title
@@ -1210,13 +1211,16 @@ import { mergeProps as mergeProps6, useObjectRef as useObjectRef5 } from "@react
1210
1211
  import { useNumberFieldState } from "@react-stately/numberfield";
1211
1212
  import {
1212
1213
  Box as Box21,
1213
- useComponentStyles as useComponentStyles21,
1214
+ useComponentStyles as useComponentStyles22,
1214
1215
  useStateProps as useStateProps5
1215
1216
  } from "@marigold/system";
1216
1217
 
1217
1218
  // src/FieldBase/FieldBase.tsx
1218
1219
  import React35 from "react";
1219
- import { Box as Box19 } from "@marigold/system";
1220
+ import {
1221
+ Box as Box19,
1222
+ useComponentStyles as useComponentStyles21
1223
+ } from "@marigold/system";
1220
1224
 
1221
1225
  // src/HelpText/HelpText.tsx
1222
1226
  import React34 from "react";
@@ -1272,15 +1276,17 @@ var FieldBase = ({
1272
1276
  stateProps
1273
1277
  }) => {
1274
1278
  const hasHelpText = !!description || errorMessage && error;
1279
+ const style = useComponentStyles21("Field", { variant, size });
1275
1280
  return /* @__PURE__ */ React35.createElement(Box19, {
1276
- css: { display: "flex", flexDirection: "column", width }
1281
+ __baseCSS: { width },
1282
+ css: style
1277
1283
  }, label && /* @__PURE__ */ React35.createElement(Label, {
1278
1284
  required,
1279
1285
  variant,
1280
1286
  size,
1281
1287
  ...labelProps,
1282
1288
  ...stateProps
1283
- }, label), children, hasHelpText && /* @__PURE__ */ React35.createElement(HelpText, {
1289
+ }, label), /* @__PURE__ */ React35.createElement("div", null, children, hasHelpText && /* @__PURE__ */ React35.createElement(HelpText, {
1284
1290
  ...stateProps,
1285
1291
  variant,
1286
1292
  size,
@@ -1290,7 +1296,7 @@ var FieldBase = ({
1290
1296
  error,
1291
1297
  errorMessage,
1292
1298
  errorMessageProps
1293
- }));
1299
+ })));
1294
1300
  };
1295
1301
 
1296
1302
  // src/NumberField/StepButton.tsx
@@ -1384,7 +1390,7 @@ var NumberField = forwardRef7(
1384
1390
  isTextInput: true,
1385
1391
  autoFocus: props.autoFocus
1386
1392
  });
1387
- const styles = useComponentStyles21(
1393
+ const styles = useComponentStyles22(
1388
1394
  "NumberField",
1389
1395
  { variant, size },
1390
1396
  { parts: ["group", "stepper"] }
@@ -1486,7 +1492,7 @@ import { useRadio } from "@react-aria/radio";
1486
1492
  import { useObjectRef as useObjectRef6 } from "@react-aria/utils";
1487
1493
  import {
1488
1494
  Box as Box23,
1489
- useComponentStyles as useComponentStyles23,
1495
+ useComponentStyles as useComponentStyles24,
1490
1496
  useStateProps as useStateProps6
1491
1497
  } from "@marigold/system";
1492
1498
 
@@ -1503,7 +1509,7 @@ import { useRadioGroup } from "@react-aria/radio";
1503
1509
  import { useRadioGroupState } from "@react-stately/radio";
1504
1510
  import {
1505
1511
  Box as Box22,
1506
- useComponentStyles as useComponentStyles22
1512
+ useComponentStyles as useComponentStyles23
1507
1513
  } from "@marigold/system";
1508
1514
  var RadioGroup = ({
1509
1515
  children,
@@ -1526,7 +1532,7 @@ var RadioGroup = ({
1526
1532
  };
1527
1533
  const state = useRadioGroupState(props);
1528
1534
  const { radioGroupProps, labelProps } = useRadioGroup(props, state);
1529
- const styles = useComponentStyles22(
1535
+ const styles = useComponentStyles23(
1530
1536
  "RadioGroup",
1531
1537
  { variant, size },
1532
1538
  { parts: ["container", "group"] }
@@ -1593,7 +1599,7 @@ var Radio = forwardRef8(
1593
1599
  state,
1594
1600
  inputRef
1595
1601
  );
1596
- const styles = useComponentStyles23(
1602
+ const styles = useComponentStyles24(
1597
1603
  "Radio",
1598
1604
  { variant: variant || props.variant, size: size || props.size },
1599
1605
  { parts: ["container", "label", "radio"] }
@@ -1662,7 +1668,7 @@ import { Item as Item2, Section } from "@react-stately/collections";
1662
1668
  import { mergeProps as mergeProps7, useObjectRef as useObjectRef8 } from "@react-aria/utils";
1663
1669
  import {
1664
1670
  Box as Box27,
1665
- useComponentStyles as useComponentStyles25,
1671
+ useComponentStyles as useComponentStyles26,
1666
1672
  useStateProps as useStateProps8
1667
1673
  } from "@marigold/system";
1668
1674
 
@@ -1671,7 +1677,7 @@ import React43, { forwardRef as forwardRef9 } from "react";
1671
1677
  import { useObjectRef as useObjectRef7 } from "@react-aria/utils";
1672
1678
  import {
1673
1679
  Box as Box26,
1674
- useComponentStyles as useComponentStyles24
1680
+ useComponentStyles as useComponentStyles25
1675
1681
  } from "@marigold/system";
1676
1682
  import { useListBox } from "@react-aria/listbox";
1677
1683
 
@@ -1744,7 +1750,7 @@ var ListBox = forwardRef9(
1744
1750
  ({ state, variant, size, ...props }, ref) => {
1745
1751
  const innerRef = useObjectRef7(ref);
1746
1752
  const { listBoxProps } = useListBox(props, state, innerRef);
1747
- const styles = useComponentStyles24(
1753
+ const styles = useComponentStyles25(
1748
1754
  "ListBox",
1749
1755
  { variant, size },
1750
1756
  { parts: ["container", "list", "option", "section", "sectionTitle"] }
@@ -1829,7 +1835,7 @@ var Select = forwardRef10(
1829
1835
  isOpen: state.isOpen,
1830
1836
  placement: "bottom left"
1831
1837
  });
1832
- const styles = useComponentStyles25(
1838
+ const styles = useComponentStyles26(
1833
1839
  "Select",
1834
1840
  { variant, size },
1835
1841
  { parts: ["container", "button", "icon"] }
@@ -1912,7 +1918,7 @@ import { useSlider } from "@react-aria/slider";
1912
1918
  import { useSliderState } from "@react-stately/slider";
1913
1919
  import { useNumberFormatter } from "@react-aria/i18n";
1914
1920
  import { useObjectRef as useObjectRef9 } from "@react-aria/utils";
1915
- import { useComponentStyles as useComponentStyles26 } from "@marigold/system";
1921
+ import { useComponentStyles as useComponentStyles27 } from "@marigold/system";
1916
1922
 
1917
1923
  // src/Slider/Thumb.tsx
1918
1924
  import React45, { useEffect } from "react";
@@ -1974,7 +1980,7 @@ var Slider = forwardRef11(
1974
1980
  state,
1975
1981
  trackRef
1976
1982
  );
1977
- const styles = useComponentStyles26(
1983
+ const styles = useComponentStyles27(
1978
1984
  "Slider",
1979
1985
  { variant, size },
1980
1986
  { parts: ["track", "thumb", "label", "output"] }
@@ -2071,7 +2077,7 @@ import { useSwitch } from "@react-aria/switch";
2071
2077
  import { useObjectRef as useObjectRef10 } from "@react-aria/utils";
2072
2078
  import { useToggleState as useToggleState2 } from "@react-stately/toggle";
2073
2079
  import {
2074
- useComponentStyles as useComponentStyles27,
2080
+ useComponentStyles as useComponentStyles28,
2075
2081
  useStateProps as useStateProps10
2076
2082
  } from "@marigold/system";
2077
2083
  var Switch = forwardRef12(
@@ -2102,7 +2108,7 @@ var Switch = forwardRef12(
2102
2108
  readOnly,
2103
2109
  focus: isFocusVisible
2104
2110
  });
2105
- const styles = useComponentStyles27(
2111
+ const styles = useComponentStyles28(
2106
2112
  "Switch",
2107
2113
  { variant, size },
2108
2114
  { parts: ["container", "label", "track", "thumb"] }
@@ -2141,7 +2147,8 @@ var Switch = forwardRef12(
2141
2147
  width: 48,
2142
2148
  height: 24,
2143
2149
  bg: "#dee2e6",
2144
- borderRadius: 20
2150
+ borderRadius: 20,
2151
+ flex: "0 0 48px"
2145
2152
  },
2146
2153
  css: styles.track,
2147
2154
  ...stateProps
@@ -2181,7 +2188,7 @@ import {
2181
2188
  } from "@react-stately/table";
2182
2189
  import {
2183
2190
  Box as Box34,
2184
- useComponentStyles as useComponentStyles28
2191
+ useComponentStyles as useComponentStyles29
2185
2192
  } from "@marigold/system";
2186
2193
 
2187
2194
  // src/Table/Context.tsx
@@ -2467,7 +2474,7 @@ var Table = ({
2467
2474
  showSelectionCheckboxes: selectionMode === "multiple" && props.selectionBehavior !== "replace"
2468
2475
  });
2469
2476
  const { gridProps } = useTable(props, state, tableRef);
2470
- const styles = useComponentStyles28(
2477
+ const styles = useComponentStyles29(
2471
2478
  "Table",
2472
2479
  { variant, size },
2473
2480
  { parts: ["table", "header", "row", "cell"] }
@@ -2526,7 +2533,7 @@ Table.Row = Row;
2526
2533
  // src/Text/Text.tsx
2527
2534
  import React59 from "react";
2528
2535
  import {
2529
- useComponentStyles as useComponentStyles29
2536
+ useComponentStyles as useComponentStyles30
2530
2537
  } from "@marigold/system";
2531
2538
  import { Box as Box35 } from "@marigold/system";
2532
2539
  var Text = ({
@@ -2535,19 +2542,23 @@ var Text = ({
2535
2542
  align,
2536
2543
  color,
2537
2544
  fontSize,
2545
+ fontWeight,
2538
2546
  cursor,
2539
2547
  outline,
2540
2548
  children,
2541
2549
  ...props
2542
2550
  }) => {
2543
- const styles = useComponentStyles29("Text", {
2551
+ const styles = useComponentStyles30("Text", {
2544
2552
  variant,
2545
2553
  size
2546
2554
  });
2547
2555
  return /* @__PURE__ */ React59.createElement(Box35, {
2548
2556
  as: "p",
2549
2557
  ...props,
2550
- css: [styles, { color, cursor, outline, fontSize, textAlign: align }]
2558
+ css: [
2559
+ styles,
2560
+ { color, cursor, outline, fontSize, fontWeight, textAlign: align }
2561
+ ]
2551
2562
  }, children);
2552
2563
  };
2553
2564
 
@@ -2559,7 +2570,7 @@ import { useTextField } from "@react-aria/textfield";
2559
2570
  import { useObjectRef as useObjectRef11 } from "@react-aria/utils";
2560
2571
  import {
2561
2572
  Box as Box36,
2562
- useComponentStyles as useComponentStyles30,
2573
+ useComponentStyles as useComponentStyles31,
2563
2574
  useStateProps as useStateProps16
2564
2575
  } from "@marigold/system";
2565
2576
  var TextArea = forwardRef13(
@@ -2596,7 +2607,7 @@ var TextArea = forwardRef13(
2596
2607
  readOnly,
2597
2608
  error
2598
2609
  });
2599
- const styles = useComponentStyles30("TextArea", { variant, size });
2610
+ const styles = useComponentStyles31("TextArea", { variant, size });
2600
2611
  return /* @__PURE__ */ React60.createElement(FieldBase, {
2601
2612
  label,
2602
2613
  labelProps,
@@ -2683,31 +2694,38 @@ var TextField = forwardRef14(
2683
2694
 
2684
2695
  // src/Tiles/Tiles.tsx
2685
2696
  import React62 from "react";
2686
- var Tiles = React62.forwardRef(
2687
- ({
2688
- space = "none",
2689
- itemMinWidth = "250px",
2690
- gridAutoRows,
2691
- children,
2692
- ...props
2693
- }, ref) => /* @__PURE__ */ React62.createElement(Box, {
2694
- ref,
2695
- display: "grid",
2696
- __baseCSS: {
2697
+ import { useTheme as useTheme3 } from "@marigold/system";
2698
+ var Tiles = ({
2699
+ space = "none",
2700
+ stretch = false,
2701
+ equalHeight = false,
2702
+ tilesWidth,
2703
+ children,
2704
+ ...props
2705
+ }) => {
2706
+ const { css } = useTheme3();
2707
+ const { width } = css({ width: tilesWidth });
2708
+ let column = `min(${typeof width === "number" ? `${width}px` : width}, 100%)`;
2709
+ if (stretch) {
2710
+ column = `minmax(${column}, 1fr)`;
2711
+ }
2712
+ return /* @__PURE__ */ React62.createElement(Box, {
2713
+ ...props,
2714
+ css: {
2715
+ display: "grid",
2697
2716
  gap: space,
2698
- gridTemplateColumns: `repeat(auto-fit, minmax(min(${itemMinWidth}, 100%), 1fr))`,
2699
- gridAutoRows: gridAutoRows ? "1fr" : "none"
2700
- },
2701
- ...props
2702
- }, children)
2703
- );
2717
+ gridTemplateColumns: `repeat(auto-fit, ${column})`,
2718
+ gridAutoRows: equalHeight ? "1fr" : void 0
2719
+ }
2720
+ }, children);
2721
+ };
2704
2722
 
2705
2723
  // src/Tooltip/Tooltip.tsx
2706
2724
  import React64 from "react";
2707
2725
  import { useTooltip } from "@react-aria/tooltip";
2708
2726
  import {
2709
2727
  Box as Box37,
2710
- useComponentStyles as useComponentStyles31
2728
+ useComponentStyles as useComponentStyles32
2711
2729
  } from "@marigold/system";
2712
2730
 
2713
2731
  // src/Tooltip/Context.ts
@@ -2778,7 +2796,7 @@ var TooltipTrigger = ({
2778
2796
  var Tooltip = ({ children, variant, size }) => {
2779
2797
  const { arrowProps, state, overlayRef, placement, ...rest } = useTooltipContext();
2780
2798
  const { tooltipProps } = useTooltip({}, state);
2781
- const styles = useComponentStyles31(
2799
+ const styles = useComponentStyles32(
2782
2800
  "Tooltip",
2783
2801
  { variant, size },
2784
2802
  { parts: ["container", "arrow"] }
@@ -2825,7 +2843,7 @@ var XLoader = forwardRef15((props, ref) => /* @__PURE__ */ React65.createElement
2825
2843
  attributeName: "opacity",
2826
2844
  attributeType: "XML",
2827
2845
  values: "1; .01; 1; 1; 1;",
2828
- begin: "1.1s",
2846
+ begin: "1.0s",
2829
2847
  dur: "2.5s",
2830
2848
  repeatCount: "indefinite"
2831
2849
  })), /* @__PURE__ */ React65.createElement("path", {
@@ -2854,7 +2872,7 @@ var XLoader = forwardRef15((props, ref) => /* @__PURE__ */ React65.createElement
2854
2872
  }, /* @__PURE__ */ React65.createElement("animate", {
2855
2873
  attributeName: "opacity",
2856
2874
  attributeType: "XML",
2857
- values: "1; .01; 1; 1;",
2875
+ values: "1; .01; 1; 1; 1;",
2858
2876
  begin: "0.7s",
2859
2877
  dur: "2.5s",
2860
2878
  repeatCount: "indefinite"
@@ -2925,7 +2943,7 @@ var XLoader = forwardRef15((props, ref) => /* @__PURE__ */ React65.createElement
2925
2943
  attributeName: "opacity",
2926
2944
  attributeType: "XML",
2927
2945
  values: "1; .01; 1; 1; 1;",
2928
- begin: "0.1s",
2946
+ begin: "0.0s",
2929
2947
  dur: "2.5s",
2930
2948
  repeatCount: "indefinite"
2931
2949
  }))));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marigold/components",
3
- "version": "3.0.6",
3
+ "version": "4.1.0",
4
4
  "description": "Components for the Marigold Design System",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -23,52 +23,52 @@
23
23
  "directory": "packages/components"
24
24
  },
25
25
  "dependencies": {
26
- "@marigold/icons": "1.1.6",
27
- "@marigold/system": "3.0.6",
26
+ "@marigold/icons": "1.1.8",
27
+ "@marigold/system": "4.1.0",
28
28
  "@marigold/tokens": "3.1.0",
29
- "@marigold/types": "0.5.4",
30
- "@react-aria/button": "3.6.2",
31
- "@react-aria/checkbox": "3.6.0",
32
- "@react-aria/dialog": "3.4.0",
33
- "@react-aria/focus": "3.9.0",
34
- "@react-aria/i18n": "3.6.1",
35
- "@react-aria/interactions": "3.12.0",
36
- "@react-aria/link": "3.3.4",
37
- "@react-aria/listbox": "3.7.0",
38
- "@react-aria/menu": "3.6.2",
39
- "@react-aria/numberfield": "3.3.2",
40
- "@react-aria/overlays": "3.11.0",
41
- "@react-aria/radio": "3.4.0",
42
- "@react-aria/select": "3.8.2",
43
- "@react-aria/separator": "3.2.4",
44
- "@react-aria/slider": "3.2.2",
45
- "@react-aria/ssr": "3.3.0",
46
- "@react-aria/switch": "3.2.4",
47
- "@react-aria/table": "3.5.0",
48
- "@react-aria/textfield": "3.7.2",
49
- "@react-aria/tooltip": "3.3.2",
50
- "@react-aria/utils": "3.14.0",
51
- "@react-aria/visually-hidden": "3.5.0",
52
- "@react-stately/checkbox": "3.3.0",
53
- "@react-stately/collections": "3.4.4",
29
+ "@marigold/types": "0.5.6",
30
+ "@react-aria/button": "3.6.3",
31
+ "@react-aria/checkbox": "3.7.0",
32
+ "@react-aria/dialog": "3.4.1",
33
+ "@react-aria/focus": "3.10.0",
34
+ "@react-aria/i18n": "3.6.2",
35
+ "@react-aria/interactions": "3.13.0",
36
+ "@react-aria/link": "3.3.5",
37
+ "@react-aria/listbox": "3.7.1",
38
+ "@react-aria/menu": "3.7.0",
39
+ "@react-aria/numberfield": "3.3.3",
40
+ "@react-aria/overlays": "3.12.0",
41
+ "@react-aria/radio": "3.4.1",
42
+ "@react-aria/select": "3.8.3",
43
+ "@react-aria/separator": "3.2.5",
44
+ "@react-aria/slider": "3.2.3",
45
+ "@react-aria/ssr": "3.4.0",
46
+ "@react-aria/switch": "3.3.0",
47
+ "@react-aria/table": "3.6.0",
48
+ "@react-aria/textfield": "3.8.0",
49
+ "@react-aria/tooltip": "3.3.3",
50
+ "@react-aria/utils": "3.14.1",
51
+ "@react-aria/visually-hidden": "3.6.0",
52
+ "@react-stately/checkbox": "3.3.1",
53
+ "@react-stately/collections": "3.5.0",
54
54
  "@react-stately/data": "^3.6.0",
55
- "@react-stately/list": "3.5.4",
56
- "@react-stately/menu": "3.4.2",
57
- "@react-stately/numberfield": "3.2.2",
58
- "@react-stately/overlays": "3.4.2",
59
- "@react-stately/radio": "3.6.0",
60
- "@react-stately/select": "3.3.2",
61
- "@react-stately/slider": "3.2.2",
62
- "@react-stately/table": "3.5.0",
63
- "@react-stately/toggle": "3.4.2",
64
- "@react-stately/tooltip": "3.2.2",
65
- "@react-stately/tree": "3.3.4",
66
- "@react-types/checkbox": "3.4.0",
67
- "@react-types/dialog": "3.4.4",
68
- "@react-types/numberfield": "3.3.4",
69
- "@react-types/radio": "3.3.0",
70
- "@react-types/shared": "3.15.0",
71
- "@react-types/tooltip": "3.2.4",
55
+ "@react-stately/list": "3.6.0",
56
+ "@react-stately/menu": "3.4.3",
57
+ "@react-stately/numberfield": "3.3.0",
58
+ "@react-stately/overlays": "3.4.3",
59
+ "@react-stately/radio": "3.6.1",
60
+ "@react-stately/select": "3.3.3",
61
+ "@react-stately/slider": "3.2.3",
62
+ "@react-stately/table": "3.6.0",
63
+ "@react-stately/toggle": "3.4.3",
64
+ "@react-stately/tooltip": "3.2.3",
65
+ "@react-stately/tree": "3.4.0",
66
+ "@react-types/checkbox": "3.4.1",
67
+ "@react-types/dialog": "3.4.5",
68
+ "@react-types/numberfield": "3.3.5",
69
+ "@react-types/radio": "3.3.1",
70
+ "@react-types/shared": "3.16.0",
71
+ "@react-types/tooltip": "3.2.5",
72
72
  "deepmerge": "^4.2.2",
73
73
  "react-is": "18.2.0"
74
74
  },
@@ -80,7 +80,7 @@
80
80
  "@marigold/tsconfig": "0.3.0",
81
81
  "react": "18.2.0",
82
82
  "react-dom": "18.2.0",
83
- "tsup": "6.3.0"
83
+ "tsup": "6.4.0"
84
84
  },
85
85
  "scripts": {
86
86
  "build": "tsup src/index.ts",