@marigold/components 7.2.0 → 7.3.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.mts CHANGED
@@ -10,6 +10,7 @@ export { ThemeProvider, useTheme } from '@marigold/system';
10
10
  import { NonZeroPercentage, HtmlProps, DistributiveOmit } from '@marigold/types';
11
11
  import RAC, { ValidationResult, Key, DateValue, TagListProps } from 'react-aria-components';
12
12
  export { Form, FormProps } from 'react-aria-components';
13
+ export { I18nProvider } from '@react-aria/i18n';
13
14
  import { AriaTableProps } from '@react-aria/table';
14
15
  import { TableStateProps, RowProps as RowProps$1, TableBody, Cell, TableHeader, ColumnProps as ColumnProps$1 } from '@react-stately/table';
15
16
  export { VisuallyHidden } from '@react-aria/visually-hidden';
@@ -101,6 +102,7 @@ interface AutocompleteProps extends Omit<RAC.ComboBoxProps<object>, RemovedProps
101
102
  defaultValue?: RAC.ComboBoxProps<object>['defaultInputValue'];
102
103
  value?: RAC.ComboBoxProps<object>['inputValue'];
103
104
  onChange?: RAC.ComboBoxProps<object>['onInputChange'];
105
+ onClear?: () => void;
104
106
  disabled?: RAC.ComboBoxProps<object>['isDisabled'];
105
107
  required?: RAC.ComboBoxProps<object>['isRequired'];
106
108
  error?: RAC.ComboBoxProps<object>['isInvalid'];
package/dist/index.d.ts CHANGED
@@ -10,6 +10,7 @@ export { ThemeProvider, useTheme } from '@marigold/system';
10
10
  import { NonZeroPercentage, HtmlProps, DistributiveOmit } from '@marigold/types';
11
11
  import RAC, { ValidationResult, Key, DateValue, TagListProps } from 'react-aria-components';
12
12
  export { Form, FormProps } from 'react-aria-components';
13
+ export { I18nProvider } from '@react-aria/i18n';
13
14
  import { AriaTableProps } from '@react-aria/table';
14
15
  import { TableStateProps, RowProps as RowProps$1, TableBody, Cell, TableHeader, ColumnProps as ColumnProps$1 } from '@react-stately/table';
15
16
  export { VisuallyHidden } from '@react-aria/visually-hidden';
@@ -101,6 +102,7 @@ interface AutocompleteProps extends Omit<RAC.ComboBoxProps<object>, RemovedProps
101
102
  defaultValue?: RAC.ComboBoxProps<object>['defaultInputValue'];
102
103
  value?: RAC.ComboBoxProps<object>['inputValue'];
103
104
  onChange?: RAC.ComboBoxProps<object>['onInputChange'];
105
+ onClear?: () => void;
104
106
  disabled?: RAC.ComboBoxProps<object>['isDisabled'];
105
107
  required?: RAC.ComboBoxProps<object>['isRequired'];
106
108
  error?: RAC.ComboBoxProps<object>['isInvalid'];
package/dist/index.js CHANGED
@@ -60,6 +60,7 @@ __export(src_exports, {
60
60
  Form: () => import_react_aria_components20.Form,
61
61
  Header: () => _Header,
62
62
  Headline: () => _Headline,
63
+ I18nProvider: () => import_i18n.I18nProvider,
63
64
  Image: () => Image,
64
65
  Inline: () => Inline,
65
66
  Input: () => _Input,
@@ -320,7 +321,15 @@ var Accordion = ({ children, ...props }) => {
320
321
  selectionMode: "single",
321
322
  ...ownProps
322
323
  });
323
- const { accordionProps } = (0, import_accordion.useAccordion)({ ...ownProps }, state, ref);
324
+ const { accordionProps } = (0, import_accordion.useAccordion)(
325
+ /**
326
+ * Disable "cmd+a" (open all) hotkey for now, since it will not work
327
+ * with forms inside the accordion. (see DSTSUP-22)
328
+ */
329
+ { ...ownProps, disallowSelectAll: true },
330
+ state,
331
+ ref
332
+ );
324
333
  delete accordionProps.onKeyDownCapture;
325
334
  return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { ...accordionProps, ref, children: [...state.collection].map((item) => /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
326
335
  AccordionItem,
@@ -674,6 +683,7 @@ var import_system14 = require("@marigold/system");
674
683
 
675
684
  // src/Provider/index.ts
676
685
  var import_system13 = require("@marigold/system");
686
+ var import_i18n = require("@react-aria/i18n");
677
687
 
678
688
  // src/Provider/MarigoldProvider.tsx
679
689
  var import_overlays = require("@react-aria/overlays");
@@ -738,7 +748,7 @@ var _Popover = (0, import_react12.forwardRef)(
738
748
  component: "Popover",
739
749
  variant: placement,
740
750
  // Make Popover as wide as trigger element
741
- className: "w-[--trigger-width]"
751
+ className: "min-w-[--trigger-width]"
742
752
  });
743
753
  const isSmallScreen = (0, import_system15.useSmallScreen)();
744
754
  const portal = usePortalContainer();
@@ -807,13 +817,20 @@ var _Button = (0, import_react13.forwardRef)(
807
817
 
808
818
  // src/Autocomplete/ClearButton.tsx
809
819
  var import_jsx_runtime19 = require("react/jsx-runtime");
810
- var AutocompleteClearButton = ({ className }) => {
820
+ var AutocompleteClearButton = ({
821
+ className,
822
+ onClear
823
+ }) => {
811
824
  let state = import_react14.default.useContext(import_react_aria_components10.ComboBoxStateContext);
812
825
  return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
813
826
  _Button,
814
827
  {
815
828
  "aria-label": "Clear",
816
- onPress: () => state == null ? void 0 : state.setInputValue(""),
829
+ "data-testid": "clear-button",
830
+ onPress: () => {
831
+ state == null ? void 0 : state.setInputValue("");
832
+ onClear == null ? void 0 : onClear();
833
+ },
817
834
  variant: "icon",
818
835
  className: (0, import_system17.cn)(
819
836
  "cursor-pointer appearance-none border-none p-0 pr-1",
@@ -836,14 +853,14 @@ var AutocompleteClearButton = ({ className }) => {
836
853
 
837
854
  // src/Autocomplete/Autocomplete.tsx
838
855
  var import_jsx_runtime20 = require("react/jsx-runtime");
839
- var SearchInput = ({ onSubmit, ref }) => {
856
+ var SearchInput = ({ onSubmit, onClear, ref }) => {
840
857
  const state = import_react16.default.useContext(import_react_aria_components11.ComboBoxStateContext);
841
858
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
842
859
  _Input,
843
860
  {
844
861
  ref,
845
862
  icon: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SearchIcon, {}),
846
- action: (state == null ? void 0 : state.inputValue) !== "" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AutocompleteClearButton, {}) : void 0,
863
+ action: (state == null ? void 0 : state.inputValue) !== "" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AutocompleteClearButton, { onClear }) : void 0,
847
864
  onKeyDown: (e) => {
848
865
  if (e.key === "Enter" || e.key === "Escape") {
849
866
  e.preventDefault();
@@ -875,6 +892,7 @@ var _Autocomplete = (0, import_react15.forwardRef)(
875
892
  defaultValue,
876
893
  value,
877
894
  onChange,
895
+ onClear,
878
896
  onSubmit,
879
897
  disabled,
880
898
  error,
@@ -895,7 +913,7 @@ var _Autocomplete = (0, import_react15.forwardRef)(
895
913
  ...rest
896
914
  };
897
915
  return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_jsx_runtime20.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(FieldBase, { as: import_react_aria_components11.ComboBox, ...props, children: [
898
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SearchInput, { onSubmit, ref }),
916
+ /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SearchInput, { onSubmit, onClear, ref }),
899
917
  /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(_Popover, { children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(_ListBox, { children }) })
900
918
  ] }) });
901
919
  }
@@ -1283,9 +1301,9 @@ var _Headline = ({
1283
1301
  ...props,
1284
1302
  className: (0, import_system27.cn)(classNames2, "text-[--color]", import_system27.textAlign[align]),
1285
1303
  style: (0, import_system27.createVar)({
1286
- color: color && theme.colors && (0, import_system27.get)(
1287
- theme.colors,
1288
- color.replace("-", "."),
1304
+ color: color && (0, import_system27.getColor)(
1305
+ theme,
1306
+ color,
1289
1307
  color
1290
1308
  /* fallback */
1291
1309
  )
@@ -1528,7 +1546,7 @@ var _DateSegment = ({ segment, ...props }) => {
1528
1546
  children: isPlaceholder && (placeholder == null ? void 0 : placeholder.toUpperCase())
1529
1547
  }
1530
1548
  ),
1531
- /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: isPlaceholder ? "" : (segment.type === "month" || segment.type === "day") && Number(segment.text) < 10 ? "0" + segment.text : text })
1549
+ /* @__PURE__ */ (0, import_jsx_runtime40.jsx)("span", { children: isPlaceholder ? "" : segment.type === "month" || segment.type === "day" ? segment.text.padStart(2, "0") : text })
1532
1550
  ] })
1533
1551
  }
1534
1552
  );
@@ -1602,14 +1620,14 @@ var import_date = require("@internationalized/date");
1602
1620
  var import_react24 = require("react");
1603
1621
  var import_react_aria_components25 = require("react-aria-components");
1604
1622
  var import_calendar = require("@react-aria/calendar");
1605
- var import_i18n = require("@react-aria/i18n");
1623
+ var import_i18n2 = require("@react-aria/i18n");
1606
1624
  var import_system36 = require("@marigold/system");
1607
1625
  var import_jsx_runtime43 = require("react/jsx-runtime");
1608
1626
  function CalendarGridHeader(props) {
1609
1627
  const state = (0, import_react24.useContext)(import_react_aria_components25.CalendarStateContext);
1610
1628
  const { headerProps } = (0, import_calendar.useCalendarGrid)(props, state);
1611
- const { locale } = (0, import_i18n.useLocale)();
1612
- const dayFormatter = (0, import_i18n.useDateFormatter)({
1629
+ const { locale } = (0, import_i18n2.useLocale)();
1630
+ const dayFormatter = (0, import_i18n2.useDateFormatter)({
1613
1631
  weekday: "short",
1614
1632
  timeZone: state.timeZone
1615
1633
  });
@@ -1651,10 +1669,10 @@ var import_icons = require("@marigold/icons");
1651
1669
  var import_system38 = require("@marigold/system");
1652
1670
 
1653
1671
  // src/Calendar/useFormattedMonths.tsx
1654
- var import_i18n2 = require("@react-aria/i18n");
1672
+ var import_i18n3 = require("@react-aria/i18n");
1655
1673
  function useFormattedMonths(timeZone, focusedDate) {
1656
1674
  let months = [];
1657
- let formatter = (0, import_i18n2.useDateFormatter)({
1675
+ let formatter = (0, import_i18n3.useDateFormatter)({
1658
1676
  month: "long",
1659
1677
  timeZone
1660
1678
  });
@@ -1777,12 +1795,12 @@ var MonthListBox_default = MonthListBox;
1777
1795
  // src/Calendar/YearListBox.tsx
1778
1796
  var import_react27 = require("react");
1779
1797
  var import_react_aria_components30 = require("react-aria-components");
1780
- var import_i18n3 = require("@react-aria/i18n");
1798
+ var import_i18n4 = require("@react-aria/i18n");
1781
1799
  var import_jsx_runtime48 = require("react/jsx-runtime");
1782
1800
  var YearListBox = ({ setSelectedDropdown }) => {
1783
1801
  const state = (0, import_react27.useContext)(import_react_aria_components30.CalendarStateContext);
1784
1802
  const years = [];
1785
- let formatter = (0, import_i18n3.useDateFormatter)({
1803
+ let formatter = (0, import_i18n4.useDateFormatter)({
1786
1804
  year: "numeric",
1787
1805
  timeZone: state.timeZone
1788
1806
  });
@@ -1868,7 +1886,7 @@ var _Calendar = ({
1868
1886
  import_react_aria_components31.Calendar,
1869
1887
  {
1870
1888
  className: (0, import_system40.cn)(
1871
- "flex min-h-[350px] w-[360px] flex-col rounded-sm p-4 shadow-[0_4px_4px_rgba(165,165,165,0.25)]",
1889
+ "flex min-h-[350px] w-[360px] flex-col rounded-sm p-4",
1872
1890
  classNames2.calendar
1873
1891
  ),
1874
1892
  ...props,
@@ -3065,9 +3083,9 @@ var Text2 = ({
3065
3083
  fontSize && import_system66.textSize[fontSize]
3066
3084
  ),
3067
3085
  style: (0, import_system66.createVar)({
3068
- color: color && theme.colors && (0, import_system66.get)(
3069
- theme.colors,
3070
- color.replace("-", "."),
3086
+ color: color && (0, import_system66.getColor)(
3087
+ theme,
3088
+ color,
3071
3089
  color
3072
3090
  /* fallback */
3073
3091
  )
@@ -3560,6 +3578,7 @@ _Tabs.Item = _Tab;
3560
3578
  Form,
3561
3579
  Header,
3562
3580
  Headline,
3581
+ I18nProvider,
3563
3582
  Image,
3564
3583
  Inline,
3565
3584
  Input,
package/dist/index.mjs CHANGED
@@ -219,7 +219,15 @@ var Accordion = ({ children, ...props }) => {
219
219
  selectionMode: "single",
220
220
  ...ownProps
221
221
  });
222
- const { accordionProps } = useAccordion({ ...ownProps }, state, ref);
222
+ const { accordionProps } = useAccordion(
223
+ /**
224
+ * Disable "cmd+a" (open all) hotkey for now, since it will not work
225
+ * with forms inside the accordion. (see DSTSUP-22)
226
+ */
227
+ { ...ownProps, disallowSelectAll: true },
228
+ state,
229
+ ref
230
+ );
223
231
  delete accordionProps.onKeyDownCapture;
224
232
  return /* @__PURE__ */ jsx4("div", { ...accordionProps, ref, children: [...state.collection].map((item) => /* @__PURE__ */ jsx4(
225
233
  AccordionItem,
@@ -577,6 +585,7 @@ import { cn as cn10, useClassNames as useClassNames7 } from "@marigold/system";
577
585
 
578
586
  // src/Provider/index.ts
579
587
  import { useTheme as useTheme2, ThemeProvider as ThemeProvider2 } from "@marigold/system";
588
+ import { I18nProvider } from "@react-aria/i18n";
580
589
 
581
590
  // src/Provider/MarigoldProvider.tsx
582
591
  import { OverlayProvider } from "@react-aria/overlays";
@@ -645,7 +654,7 @@ var _Popover = forwardRef6(
645
654
  component: "Popover",
646
655
  variant: placement,
647
656
  // Make Popover as wide as trigger element
648
- className: "w-[--trigger-width]"
657
+ className: "min-w-[--trigger-width]"
649
658
  });
650
659
  const isSmallScreen = useSmallScreen();
651
660
  const portal = usePortalContainer();
@@ -714,13 +723,20 @@ var _Button = forwardRef7(
714
723
 
715
724
  // src/Autocomplete/ClearButton.tsx
716
725
  import { jsx as jsx19 } from "react/jsx-runtime";
717
- var AutocompleteClearButton = ({ className }) => {
726
+ var AutocompleteClearButton = ({
727
+ className,
728
+ onClear
729
+ }) => {
718
730
  let state = React.useContext(ComboBoxStateContext);
719
731
  return /* @__PURE__ */ jsx19(
720
732
  _Button,
721
733
  {
722
734
  "aria-label": "Clear",
723
- onPress: () => state == null ? void 0 : state.setInputValue(""),
735
+ "data-testid": "clear-button",
736
+ onPress: () => {
737
+ state == null ? void 0 : state.setInputValue("");
738
+ onClear == null ? void 0 : onClear();
739
+ },
724
740
  variant: "icon",
725
741
  className: cn13(
726
742
  "cursor-pointer appearance-none border-none p-0 pr-1",
@@ -743,14 +759,14 @@ var AutocompleteClearButton = ({ className }) => {
743
759
 
744
760
  // src/Autocomplete/Autocomplete.tsx
745
761
  import { Fragment as Fragment2, jsx as jsx20, jsxs as jsxs8 } from "react/jsx-runtime";
746
- var SearchInput = ({ onSubmit, ref }) => {
762
+ var SearchInput = ({ onSubmit, onClear, ref }) => {
747
763
  const state = React2.useContext(ComboBoxStateContext2);
748
764
  return /* @__PURE__ */ jsx20(
749
765
  _Input,
750
766
  {
751
767
  ref,
752
768
  icon: /* @__PURE__ */ jsx20(SearchIcon, {}),
753
- action: (state == null ? void 0 : state.inputValue) !== "" ? /* @__PURE__ */ jsx20(AutocompleteClearButton, {}) : void 0,
769
+ action: (state == null ? void 0 : state.inputValue) !== "" ? /* @__PURE__ */ jsx20(AutocompleteClearButton, { onClear }) : void 0,
754
770
  onKeyDown: (e) => {
755
771
  if (e.key === "Enter" || e.key === "Escape") {
756
772
  e.preventDefault();
@@ -782,6 +798,7 @@ var _Autocomplete = forwardRef8(
782
798
  defaultValue,
783
799
  value,
784
800
  onChange,
801
+ onClear,
785
802
  onSubmit,
786
803
  disabled,
787
804
  error,
@@ -802,7 +819,7 @@ var _Autocomplete = forwardRef8(
802
819
  ...rest
803
820
  };
804
821
  return /* @__PURE__ */ jsx20(Fragment2, { children: /* @__PURE__ */ jsxs8(FieldBase, { as: ComboBox, ...props, children: [
805
- /* @__PURE__ */ jsx20(SearchInput, { onSubmit, ref }),
822
+ /* @__PURE__ */ jsx20(SearchInput, { onSubmit, onClear, ref }),
806
823
  /* @__PURE__ */ jsx20(_Popover, { children: /* @__PURE__ */ jsx20(_ListBox, { children }) })
807
824
  ] }) });
808
825
  }
@@ -1186,7 +1203,7 @@ import { Heading } from "react-aria-components";
1186
1203
  import {
1187
1204
  cn as cn20,
1188
1205
  createVar as createVar8,
1189
- get,
1206
+ getColor,
1190
1207
  textAlign,
1191
1208
  useClassNames as useClassNames15,
1192
1209
  useTheme as useTheme3
@@ -1214,9 +1231,9 @@ var _Headline = ({
1214
1231
  ...props,
1215
1232
  className: cn20(classNames2, "text-[--color]", textAlign[align]),
1216
1233
  style: createVar8({
1217
- color: color && theme.colors && get(
1218
- theme.colors,
1219
- color.replace("-", "."),
1234
+ color: color && getColor(
1235
+ theme,
1236
+ color,
1220
1237
  color
1221
1238
  /* fallback */
1222
1239
  )
@@ -1468,7 +1485,7 @@ var _DateSegment = ({ segment, ...props }) => {
1468
1485
  children: isPlaceholder && (placeholder == null ? void 0 : placeholder.toUpperCase())
1469
1486
  }
1470
1487
  ),
1471
- /* @__PURE__ */ jsx40("span", { children: isPlaceholder ? "" : (segment.type === "month" || segment.type === "day") && Number(segment.text) < 10 ? "0" + segment.text : text })
1488
+ /* @__PURE__ */ jsx40("span", { children: isPlaceholder ? "" : segment.type === "month" || segment.type === "day" ? segment.text.padStart(2, "0") : text })
1472
1489
  ] })
1473
1490
  }
1474
1491
  );
@@ -1816,7 +1833,7 @@ var _Calendar = ({
1816
1833
  Calendar,
1817
1834
  {
1818
1835
  className: cn28(
1819
- "flex min-h-[350px] w-[360px] flex-col rounded-sm p-4 shadow-[0_4px_4px_rgba(165,165,165,0.25)]",
1836
+ "flex min-h-[350px] w-[360px] flex-col rounded-sm p-4",
1820
1837
  classNames2.calendar
1821
1838
  ),
1822
1839
  ...props,
@@ -3026,7 +3043,7 @@ import {
3026
3043
  createVar as createVar10,
3027
3044
  cursorStyle,
3028
3045
  fontWeight,
3029
- get as get2,
3046
+ getColor as getColor2,
3030
3047
  textAlign as textAlign2,
3031
3048
  textSize,
3032
3049
  textStyle,
@@ -3066,9 +3083,9 @@ var Text2 = ({
3066
3083
  fontSize && textSize[fontSize]
3067
3084
  ),
3068
3085
  style: createVar10({
3069
- color: color && theme.colors && get2(
3070
- theme.colors,
3071
- color.replace("-", "."),
3086
+ color: color && getColor2(
3087
+ theme,
3088
+ color,
3072
3089
  color
3073
3090
  /* fallback */
3074
3091
  )
@@ -3560,6 +3577,7 @@ export {
3560
3577
  Form,
3561
3578
  _Header as Header,
3562
3579
  _Headline as Headline,
3580
+ I18nProvider,
3563
3581
  Image,
3564
3582
  Inline,
3565
3583
  _Input as Input,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@marigold/components",
3
- "version": "7.2.0",
3
+ "version": "7.3.0",
4
4
  "description": "Components for the Marigold Design System",
5
5
  "license": "MIT",
6
6
  "keywords": [
@@ -42,8 +42,8 @@
42
42
  "@react-types/shared": "3.22.0",
43
43
  "@react-types/table": "3.9.2",
44
44
  "react-aria-components": "1.0.1",
45
- "@marigold/icons": "1.2.34",
46
- "@marigold/system": "7.2.0",
45
+ "@marigold/icons": "1.2.35",
46
+ "@marigold/system": "7.3.0",
47
47
  "@marigold/types": "1.1.0"
48
48
  },
49
49
  "peerDependencies": {