@danske/sapphire-react-lab 0.88.1 → 0.90.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (145) hide show
  1. package/build/cjs/index.js +337 -3066
  2. package/build/cjs/index.js.map +1 -1
  3. package/build/esm/Accordion/index.js +1 -0
  4. package/build/esm/Accordion/index.js.map +1 -1
  5. package/build/esm/Accordion/src/Accordion.js +22 -11
  6. package/build/esm/Accordion/src/Accordion.js.map +1 -1
  7. package/build/esm/Accordion/src/AccordionContext.js +15 -0
  8. package/build/esm/Accordion/src/AccordionContext.js.map +1 -0
  9. package/build/esm/Accordion/src/AccordionHeading.js +1 -1
  10. package/build/esm/Accordion/src/AccordionHeading.js.map +1 -1
  11. package/build/esm/Accordion/src/AccordionItem.js +14 -6
  12. package/build/esm/Accordion/src/AccordionItem.js.map +1 -1
  13. package/build/esm/FileDropzone/src/FileDropzone.js +3 -4
  14. package/build/esm/FileDropzone/src/FileDropzone.js.map +1 -1
  15. package/build/esm/Filtering/src/FilterDropdown.js +9 -8
  16. package/build/esm/Filtering/src/FilterDropdown.js.map +1 -1
  17. package/build/esm/LabeledValue/src/LabeledValue.js +2 -2
  18. package/build/esm/LabeledValue/src/LabeledValue.js.map +1 -1
  19. package/build/esm/NumberField/src/NumberField.js +11 -11
  20. package/build/esm/NumberField/src/NumberField.js.map +1 -1
  21. package/build/esm/NumberField/src/StepperButton.js +1 -1
  22. package/build/esm/NumberField/src/StepperButton.js.map +1 -1
  23. package/build/esm/TagGroup/src/Tag.js +2 -2
  24. package/build/esm/TagGroup/src/Tag.js.map +1 -1
  25. package/build/esm/TagGroup/src/TagGroup.js.map +1 -1
  26. package/build/esm/index.js +1 -17
  27. package/build/esm/index.js.map +1 -1
  28. package/build/index.d.ts +50 -755
  29. package/package.json +5 -13
  30. package/build/esm/AlertDialog/src/AlertDialog.js +0 -75
  31. package/build/esm/AlertDialog/src/AlertDialog.js.map +0 -1
  32. package/build/esm/Avatar/src/Avatar.js +0 -76
  33. package/build/esm/Avatar/src/Avatar.js.map +0 -1
  34. package/build/esm/Calendar/i18n/da-DK.js +0 -9
  35. package/build/esm/Calendar/i18n/da-DK.js.map +0 -1
  36. package/build/esm/Calendar/i18n/de-DE.js +0 -9
  37. package/build/esm/Calendar/i18n/de-DE.js.map +0 -1
  38. package/build/esm/Calendar/i18n/en-US.js +0 -9
  39. package/build/esm/Calendar/i18n/en-US.js.map +0 -1
  40. package/build/esm/Calendar/i18n/fi-FI.js +0 -9
  41. package/build/esm/Calendar/i18n/fi-FI.js.map +0 -1
  42. package/build/esm/Calendar/i18n/index.js +0 -20
  43. package/build/esm/Calendar/i18n/index.js.map +0 -1
  44. package/build/esm/Calendar/i18n/nb-NO.js +0 -9
  45. package/build/esm/Calendar/i18n/nb-NO.js.map +0 -1
  46. package/build/esm/Calendar/i18n/pl-PL.js +0 -9
  47. package/build/esm/Calendar/i18n/pl-PL.js.map +0 -1
  48. package/build/esm/Calendar/i18n/sv-SE.js +0 -9
  49. package/build/esm/Calendar/i18n/sv-SE.js.map +0 -1
  50. package/build/esm/Calendar/src/Calendar.js +0 -121
  51. package/build/esm/Calendar/src/Calendar.js.map +0 -1
  52. package/build/esm/Calendar/src/CalendarButtons.js +0 -96
  53. package/build/esm/Calendar/src/CalendarButtons.js.map +0 -1
  54. package/build/esm/Calendar/src/CalendarDaysGrid.js +0 -169
  55. package/build/esm/Calendar/src/CalendarDaysGrid.js.map +0 -1
  56. package/build/esm/Calendar/src/CalendarHeader.js +0 -58
  57. package/build/esm/Calendar/src/CalendarHeader.js.map +0 -1
  58. package/build/esm/Calendar/src/CalendarMonthOrYearCell.js +0 -79
  59. package/build/esm/Calendar/src/CalendarMonthOrYearCell.js.map +0 -1
  60. package/build/esm/Calendar/src/CalendarMonthsGrid.js +0 -58
  61. package/build/esm/Calendar/src/CalendarMonthsGrid.js.map +0 -1
  62. package/build/esm/Calendar/src/CalendarPageAnimation.js +0 -67
  63. package/build/esm/Calendar/src/CalendarPageAnimation.js.map +0 -1
  64. package/build/esm/Calendar/src/CalendarYearsGrid.js +0 -52
  65. package/build/esm/Calendar/src/CalendarYearsGrid.js.map +0 -1
  66. package/build/esm/Calendar/src/RangeCalendar.js +0 -119
  67. package/build/esm/Calendar/src/RangeCalendar.js.map +0 -1
  68. package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js +0 -57
  69. package/build/esm/Calendar/src/useCustomDurationCalendarGrid.js.map +0 -1
  70. package/build/esm/Calendar/src/useRangeCalendarState.js +0 -57
  71. package/build/esm/Calendar/src/useRangeCalendarState.js.map +0 -1
  72. package/build/esm/Calendar/src/useSapphireCalendarState.js +0 -86
  73. package/build/esm/Calendar/src/useSapphireCalendarState.js.map +0 -1
  74. package/build/esm/Calendar/src/utils.js +0 -12
  75. package/build/esm/Calendar/src/utils.js.map +0 -1
  76. package/build/esm/DateField/i18n/da-DK.js +0 -7
  77. package/build/esm/DateField/i18n/da-DK.js.map +0 -1
  78. package/build/esm/DateField/i18n/de-DE.js +0 -7
  79. package/build/esm/DateField/i18n/de-DE.js.map +0 -1
  80. package/build/esm/DateField/i18n/en-US.js +0 -7
  81. package/build/esm/DateField/i18n/en-US.js.map +0 -1
  82. package/build/esm/DateField/i18n/fi-FI.js +0 -7
  83. package/build/esm/DateField/i18n/fi-FI.js.map +0 -1
  84. package/build/esm/DateField/i18n/index.js +0 -20
  85. package/build/esm/DateField/i18n/index.js.map +0 -1
  86. package/build/esm/DateField/i18n/nb-NO.js +0 -7
  87. package/build/esm/DateField/i18n/nb-NO.js.map +0 -1
  88. package/build/esm/DateField/i18n/pl-PL.js +0 -7
  89. package/build/esm/DateField/i18n/pl-PL.js.map +0 -1
  90. package/build/esm/DateField/i18n/sv-SE.js +0 -7
  91. package/build/esm/DateField/i18n/sv-SE.js.map +0 -1
  92. package/build/esm/DateField/src/DateField.js +0 -129
  93. package/build/esm/DateField/src/DateField.js.map +0 -1
  94. package/build/esm/DateField/src/DateFieldButton.js +0 -44
  95. package/build/esm/DateField/src/DateFieldButton.js.map +0 -1
  96. package/build/esm/DateField/src/DateInput.js +0 -81
  97. package/build/esm/DateField/src/DateInput.js.map +0 -1
  98. package/build/esm/DateField/src/DateRangeField.js +0 -154
  99. package/build/esm/DateField/src/DateRangeField.js.map +0 -1
  100. package/build/esm/DateField/src/DateRangeInput.js +0 -90
  101. package/build/esm/DateField/src/DateRangeInput.js.map +0 -1
  102. package/build/esm/DateField/src/DateSegment.js +0 -52
  103. package/build/esm/DateField/src/DateSegment.js.map +0 -1
  104. package/build/esm/DateField/src/helpers.js +0 -14
  105. package/build/esm/DateField/src/helpers.js.map +0 -1
  106. package/build/esm/DateField/src/useDateRangePickerState.js +0 -57
  107. package/build/esm/DateField/src/useDateRangePickerState.js.map +0 -1
  108. package/build/esm/DateField/src/utils/placeholders.js +0 -91
  109. package/build/esm/DateField/src/utils/placeholders.js.map +0 -1
  110. package/build/esm/DateField/src/utils/segments.js +0 -46
  111. package/build/esm/DateField/src/utils/segments.js.map +0 -1
  112. package/build/esm/FeedbackMessage/src/FeedbackMessage.js +0 -87
  113. package/build/esm/FeedbackMessage/src/FeedbackMessage.js.map +0 -1
  114. package/build/esm/Fieldset/src/Fieldset.js +0 -81
  115. package/build/esm/Fieldset/src/Fieldset.js.map +0 -1
  116. package/build/esm/NotificationBadge/src/NotificationBadge.js +0 -74
  117. package/build/esm/NotificationBadge/src/NotificationBadge.js.map +0 -1
  118. package/build/esm/SearchField/src/SearchField.js +0 -130
  119. package/build/esm/SearchField/src/SearchField.js.map +0 -1
  120. package/build/esm/SearchField/src/useComboBoxState.js +0 -42
  121. package/build/esm/SearchField/src/useComboBoxState.js.map +0 -1
  122. package/build/esm/Toast/src/Toast.js +0 -77
  123. package/build/esm/Toast/src/Toast.js.map +0 -1
  124. package/build/esm/Toast/src/ToastCloseButton.js +0 -50
  125. package/build/esm/Toast/src/ToastCloseButton.js.map +0 -1
  126. package/build/esm/Toast/src/ToastProvider.js +0 -60
  127. package/build/esm/Toast/src/ToastProvider.js.map +0 -1
  128. package/build/esm/Toast/src/ToastRegion.js +0 -66
  129. package/build/esm/Toast/src/ToastRegion.js.map +0 -1
  130. package/build/esm/Toast/src/context.js +0 -10
  131. package/build/esm/Toast/src/context.js.map +0 -1
  132. package/build/esm/Toast/src/useShowToast.js +0 -25
  133. package/build/esm/Toast/src/useShowToast.js.map +0 -1
  134. package/build/esm/ToggleButton/src/ToggleButton.js +0 -85
  135. package/build/esm/ToggleButton/src/ToggleButton.js.map +0 -1
  136. package/build/esm/Typography/index.js +0 -14
  137. package/build/esm/Typography/index.js.map +0 -1
  138. package/build/esm/Typography/src/Body.js +0 -66
  139. package/build/esm/Typography/src/Body.js.map +0 -1
  140. package/build/esm/Typography/src/Caption.js +0 -59
  141. package/build/esm/Typography/src/Caption.js.map +0 -1
  142. package/build/esm/Typography/src/Heading.js +0 -53
  143. package/build/esm/Typography/src/Heading.js.map +0 -1
  144. package/build/esm/Typography/src/Subheading.js +0 -63
  145. package/build/esm/Typography/src/Subheading.js.map +0 -1
@@ -1,42 +0,0 @@
1
- import { useComboBoxState as useComboBoxState$1 } from '@react-stately/combobox';
2
-
3
- var __defProp = Object.defineProperty;
4
- var __defProps = Object.defineProperties;
5
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
6
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
9
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
10
- var __spreadValues = (a, b) => {
11
- for (var prop in b || (b = {}))
12
- if (__hasOwnProp.call(b, prop))
13
- __defNormalProp(a, prop, b[prop]);
14
- if (__getOwnPropSymbols)
15
- for (var prop of __getOwnPropSymbols(b)) {
16
- if (__propIsEnum.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- }
19
- return a;
20
- };
21
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
22
- const useComboBoxState = (options) => {
23
- const state = useComboBoxState$1(__spreadProps(__spreadValues({}, options), {
24
- defaultFilter: (textValue, query) => {
25
- if (query.length > 0) {
26
- return options.defaultFilter ? options.defaultFilter(textValue, query) : textValue.toLowerCase().includes(query.toLowerCase());
27
- } else {
28
- return false;
29
- }
30
- }
31
- }));
32
- return __spreadProps(__spreadValues({}, state), {
33
- open: (focusStrategy, triggerMode) => {
34
- if (triggerMode !== "manual") {
35
- state.open(focusStrategy, triggerMode);
36
- }
37
- }
38
- });
39
- };
40
-
41
- export { useComboBoxState };
42
- //# sourceMappingURL=useComboBoxState.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useComboBoxState.js","sources":["../../../../src/SearchField/src/useComboBoxState.ts"],"sourcesContent":["import { useComboBoxState as originalUseComboBoxState } from '@react-stately/combobox';\n\n/**\n * A wrapper for `useComboBoxState` to make the combobox more like \"autocomplete\":\n *\n * 1) We don't want to allow opening the combobox \"manually\".\n * In react-aria terms \"manual\" opening means where the user explicitly\n * wants to open the popover.\n * In the autocomplete feature we don't want such behaviour because the\n * popover has the role of assisting typing, not \"selecting\" a value.\n *\n * 2) We don't want to show any options if the query is empty.\n *\n * More details here\n * https://github.com/adobe/react-spectrum/blob/main/packages/%40react-aria/combobox/src/useComboBox.ts\n */\nexport const useComboBoxState: typeof originalUseComboBoxState = (options) => {\n const state = originalUseComboBoxState({\n ...options,\n defaultFilter: (textValue, query) => {\n if (query.length > 0) {\n return options.defaultFilter\n ? options.defaultFilter(textValue, query)\n : textValue.toLowerCase().includes(query.toLowerCase());\n } else {\n return false;\n }\n },\n });\n return {\n ...state,\n open: (focusStrategy, triggerMode) => {\n if (triggerMode !== 'manual') {\n state.open(focusStrategy, triggerMode);\n }\n },\n };\n};\n"],"names":["originalUseComboBoxState"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAgBa,MAAA,gBAAA,GAAoD,CAAC,OAAY,KAAA;AAC5E,EAAM,MAAA,KAAA,GAAQA,kBAAyB,CAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EAClC,OADkC,CAAA,EAAA;AAAA,IAErC,aAAA,EAAe,CAAC,SAAA,EAAW,KAAU,KAAA;AACnC,MAAI,IAAA,KAAA,CAAM,SAAS,CAAG,EAAA;AACpB,QAAO,OAAA,OAAA,CAAQ,gBACX,OAAQ,CAAA,aAAA,CAAc,WAAW,KACjC,CAAA,GAAA,SAAA,CAAU,WAAc,EAAA,CAAA,QAAA,CAAS,KAAM,CAAA,WAAA,EAAA,CAAA,CAAA;AAAA,OACtC,MAAA;AACL,QAAO,OAAA,KAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA;AAIb,EAAA,OAAO,iCACF,KADE,CAAA,EAAA;AAAA,IAEL,IAAA,EAAM,CAAC,aAAA,EAAe,WAAgB,KAAA;AACpC,MAAA,IAAI,gBAAgB,QAAU,EAAA;AAC5B,QAAA,KAAA,CAAM,KAAK,aAAe,EAAA,WAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1,77 +0,0 @@
1
- import React, { useRef } from 'react';
2
- import clsx from 'clsx';
3
- import { useToast } from '@react-aria/toast';
4
- import { useSapphireStyleProps, Icon } from '@danske/sapphire-react';
5
- import styles from '@danske/sapphire-css/components/toast/toast.module.css';
6
- import { CheckMarkCircle } from '@danske/sapphire-icons/react';
7
- import { ToastCloseButton } from './ToastCloseButton.js';
8
-
9
- var __defProp = Object.defineProperty;
10
- var __defProps = Object.defineProperties;
11
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
12
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
13
- var __hasOwnProp = Object.prototype.hasOwnProperty;
14
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
15
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
16
- var __spreadValues = (a, b) => {
17
- for (var prop in b || (b = {}))
18
- if (__hasOwnProp.call(b, prop))
19
- __defNormalProp(a, prop, b[prop]);
20
- if (__getOwnPropSymbols)
21
- for (var prop of __getOwnPropSymbols(b)) {
22
- if (__propIsEnum.call(b, prop))
23
- __defNormalProp(a, prop, b[prop]);
24
- }
25
- return a;
26
- };
27
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
28
- var __objRest = (source, exclude) => {
29
- var target = {};
30
- for (var prop in source)
31
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
32
- target[prop] = source[prop];
33
- if (source != null && __getOwnPropSymbols)
34
- for (var prop of __getOwnPropSymbols(source)) {
35
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
36
- target[prop] = source[prop];
37
- }
38
- return target;
39
- };
40
- const Toast = (_a) => {
41
- var _b = _a, {
42
- state
43
- } = _b, props = __objRest(_b, [
44
- "state"
45
- ]);
46
- var _a2;
47
- const {
48
- styleProps: { style, className }
49
- } = useSapphireStyleProps(props);
50
- const ref = useRef(null);
51
- const { toastProps, titleProps, closeButtonProps } = useToast(props, state, ref);
52
- const content = props.toast.content;
53
- const icon = (_a2 = content.icon) != null ? _a2 : content.variant === "success" ? /* @__PURE__ */ React.createElement(CheckMarkCircle, null) : null;
54
- return /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, toastProps), {
55
- className: clsx(styles["sapphire-toast"], props.toast.animation ? styles[`sapphire-toast--${props.toast.animation}`] : {}, className),
56
- style,
57
- ref,
58
- onAnimationEnd: () => {
59
- if (props.toast.animation === "exiting") {
60
- state.remove(props.toast.key);
61
- }
62
- }
63
- }), /* @__PURE__ */ React.createElement("div", {
64
- className: clsx(styles["sapphire-toast__content"], {
65
- [styles["sapphire-toast__content--success"]]: content.variant === "success"
66
- })
67
- }, icon && /* @__PURE__ */ React.createElement(Icon, {
68
- size: "m"
69
- }, icon), /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, titleProps), {
70
- className: clsx({
71
- [styles["sapphire-toast__title--with-icon"]]: icon
72
- })
73
- }), content.content), /* @__PURE__ */ React.createElement(ToastCloseButton, __spreadValues({}, closeButtonProps))));
74
- };
75
-
76
- export { Toast };
77
- //# sourceMappingURL=Toast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Toast.js","sources":["../../../../src/Toast/src/Toast.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport clsx from 'clsx';\nimport { AriaToastProps, useToast } from '@react-aria/toast';\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n Icon,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { CheckMarkCircle } from '@danske/sapphire-icons/react';\nimport { ToastData } from './context';\nimport { ToastCloseButton } from './ToastCloseButton';\n\nexport type ToastProps<T extends ToastData> = AriaToastProps<T> &\n SapphireStyleProps & {\n state: ToastState<T>;\n };\n\nexport const Toast = <T extends ToastData>({\n state,\n ...props\n}: ToastProps<T>) => {\n const {\n styleProps: { style, className },\n } = useSapphireStyleProps(props);\n\n const ref = useRef(null);\n const { toastProps, titleProps, closeButtonProps } = useToast(\n props,\n state,\n ref\n );\n\n const content = props.toast.content;\n\n const icon =\n content.icon ??\n (content.variant === 'success' ? <CheckMarkCircle /> : null);\n\n return (\n <div\n {...toastProps}\n className={clsx(\n styles['sapphire-toast'],\n props.toast.animation\n ? styles[`sapphire-toast--${props.toast.animation}`]\n : {},\n className\n )}\n style={style}\n ref={ref}\n onAnimationEnd={() => {\n // Remove the toast when the exiting animation completes.\n if (props.toast.animation === 'exiting') {\n state.remove(props.toast.key);\n }\n }}\n >\n <div\n className={clsx(styles['sapphire-toast__content'], {\n [styles['sapphire-toast__content--success']]:\n content.variant === 'success',\n })}\n >\n {icon && <Icon size=\"m\">{icon}</Icon>}\n <div\n {...titleProps}\n className={clsx({\n [styles['sapphire-toast__title--with-icon']]: icon,\n })}\n >\n {content.content}\n </div>\n <ToastCloseButton {...closeButtonProps} />\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBa,MAAA,KAAA,GAAQ,CAAsB,EAGtB,KAAA;AAHsB,EACzC,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,KAAA;AAAA,GADyC,GAAA,EAAA,EAEtC,kBAFsC,EAEtC,EAAA;AAAA,IADH,OAAA;AAAA,GAAA,CAAA,CAAA;AArBF,EAAA,IAAA,GAAA,CAAA;AAwBE,EAAM,MAAA;AAAA,IACJ,UAAA,EAAY,EAAE,KAAO,EAAA,SAAA,EAAA;AAAA,GAAA,GACnB,qBAAsB,CAAA,KAAA,CAAA,CAAA;AAE1B,EAAA,MAAM,MAAM,MAAO,CAAA,IAAA,CAAA,CAAA;AACnB,EAAA,MAAM,EAAE,UAAY,EAAA,UAAA,EAAY,gBAAqB,EAAA,GAAA,QAAA,CACnD,OACA,KACA,EAAA,GAAA,CAAA,CAAA;AAGF,EAAM,MAAA,OAAA,GAAU,MAAM,KAAM,CAAA,OAAA,CAAA;AAE5B,EAAM,MAAA,IAAA,GACJ,eAAQ,IAAR,KAAA,IAAA,GAAA,GAAA,GACC,QAAQ,OAAY,KAAA,SAAA,mBAAa,KAAA,CAAA,aAAA,CAAA,eAAA,EAAD,IAAsB,CAAA,GAAA,IAAA,CAAA;AAEzD,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACM,UADN,CAAA,EAAA;AAAA,IAEE,SAAW,EAAA,IAAA,CACT,MAAO,CAAA,gBAAA,CAAA,EACP,KAAM,CAAA,KAAA,CAAM,SACR,GAAA,MAAA,CAAO,CAAmB,gBAAA,EAAA,KAAA,CAAM,KAAM,CAAA,SAAA,CAAA,CAAA,CAAA,GACtC,EACJ,EAAA,SAAA,CAAA;AAAA,IAEF,KAAA;AAAA,IACA,GAAA;AAAA,IACA,gBAAgB,MAAM;AAEpB,MAAI,IAAA,KAAA,CAAM,KAAM,CAAA,SAAA,KAAc,SAAW,EAAA;AACvC,QAAM,KAAA,CAAA,MAAA,CAAO,MAAM,KAAM,CAAA,GAAA,CAAA,CAAA;AAAA,OAAA;AAAA,KAAA;AAAA,GAAA,CAAA,sCAI5B,KAAD,EAAA;AAAA,IACE,SAAA,EAAW,IAAK,CAAA,MAAA,CAAO,yBAA4B,CAAA,EAAA;AAAA,MAChD,CAAA,MAAA,CAAO,kCACN,CAAA,GAAA,OAAA,CAAQ,OAAY,KAAA,SAAA;AAAA,KAAA,CAAA;AAAA,GAGvB,EAAA,IAAA,wCAAS,IAAD,EAAA;AAAA,IAAM,IAAK,EAAA,GAAA;AAAA,GAAA,EAAK,IACzB,CAAA,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACM,UADN,CAAA,EAAA;AAAA,IAEE,WAAW,IAAK,CAAA;AAAA,MAAA,CACb,OAAO,kCAAsC,CAAA,GAAA,IAAA;AAAA,KAAA,CAAA;AAAA,GAAA,CAAA,EAG/C,OAAQ,CAAA,OAAA,CAAA,kBAEV,KAAA,CAAA,aAAA,CAAA,gBAAA,EAAD,cAAsB,CAAA,EAAA,EAAA,gBAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1,50 +0,0 @@
1
- import React, { useRef } from 'react';
2
- import { useButton, Icon } from '@danske/sapphire-react';
3
- import { useHover } from '@react-aria/interactions';
4
- import { useFocusRing, FocusRing } from '@react-aria/focus';
5
- import { mergeProps } from '@react-aria/utils';
6
- import clsx from 'clsx';
7
- import styles from '@danske/sapphire-css/components/toast/toast.module.css';
8
- import { Close } from '@danske/sapphire-icons/react';
9
-
10
- var __defProp = Object.defineProperty;
11
- var __defProps = Object.defineProperties;
12
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
13
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
14
- var __hasOwnProp = Object.prototype.hasOwnProperty;
15
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
16
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
17
- var __spreadValues = (a, b) => {
18
- for (var prop in b || (b = {}))
19
- if (__hasOwnProp.call(b, prop))
20
- __defNormalProp(a, prop, b[prop]);
21
- if (__getOwnPropSymbols)
22
- for (var prop of __getOwnPropSymbols(b)) {
23
- if (__propIsEnum.call(b, prop))
24
- __defNormalProp(a, prop, b[prop]);
25
- }
26
- return a;
27
- };
28
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
29
- const ToastCloseButton = (props) => {
30
- const ref = useRef(null);
31
- const { buttonProps, isPressed } = useButton(props, ref);
32
- const { hoverProps, isHovered } = useHover({ isDisabled: props.isDisabled });
33
- const { focusProps, isFocusVisible } = useFocusRing();
34
- return /* @__PURE__ */ React.createElement(FocusRing, {
35
- focusRingClass: clsx(styles["is-focus"])
36
- }, /* @__PURE__ */ React.createElement("button", __spreadProps(__spreadValues({}, mergeProps(buttonProps, hoverProps, focusProps)), {
37
- "aria-label": "Close",
38
- ref,
39
- className: clsx(styles["sapphire-toast__close-button"], styles["js-focus"], styles["js-hover"], {
40
- [styles["is-active"]]: isPressed,
41
- [styles["is-hover"]]: isHovered,
42
- [styles["is-focus"]]: isFocusVisible
43
- })
44
- }), /* @__PURE__ */ React.createElement(Icon, {
45
- size: "s"
46
- }, /* @__PURE__ */ React.createElement(Close, null))));
47
- };
48
-
49
- export { ToastCloseButton };
50
- //# sourceMappingURL=ToastCloseButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastCloseButton.js","sources":["../../../../src/Toast/src/ToastCloseButton.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { AriaButtonProps } from '@react-aria/button';\nimport { Icon, useButton } from '@danske/sapphire-react';\nimport { useHover } from '@react-aria/interactions';\nimport { FocusRing, useFocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { Close } from '@danske/sapphire-icons/react';\n\n/**\n * @internal\n */\nexport const ToastCloseButton = (props: AriaButtonProps) => {\n const ref = useRef(null);\n const { buttonProps, isPressed } = useButton(props, ref);\n const { hoverProps, isHovered } = useHover({ isDisabled: props.isDisabled });\n const { focusProps, isFocusVisible } = useFocusRing();\n\n return (\n <FocusRing focusRingClass={clsx(styles['is-focus'])}>\n <button\n {...mergeProps(buttonProps, hoverProps, focusProps)}\n aria-label=\"Close\"\n ref={ref}\n className={clsx(\n styles['sapphire-toast__close-button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-focus']]: isFocusVisible,\n }\n )}\n >\n <Icon size=\"s\">\n <Close />\n </Icon>\n </button>\n </FocusRing>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAaa,MAAA,gBAAA,GAAmB,CAAC,KAA2B,KAAA;AAC1D,EAAA,MAAM,MAAM,MAAO,CAAA,IAAA,CAAA,CAAA;AACnB,EAAA,MAAM,EAAE,WAAA,EAAa,SAAc,EAAA,GAAA,SAAA,CAAU,KAAO,EAAA,GAAA,CAAA,CAAA;AACpD,EAAA,MAAM,EAAE,UAAY,EAAA,SAAA,EAAA,GAAc,QAAS,CAAA,EAAE,YAAY,KAAM,CAAA,UAAA,EAAA,CAAA,CAAA;AAC/D,EAAM,MAAA,EAAE,YAAY,cAAmB,EAAA,GAAA,YAAA,EAAA,CAAA;AAEvC,EAAA,2CACG,SAAD,EAAA;AAAA,IAAW,cAAA,EAAgB,KAAK,MAAO,CAAA,UAAA,CAAA,CAAA;AAAA,GAAA,sCACpC,QAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACM,UAAW,CAAA,WAAA,EAAa,YAAY,UAD1C,CAAA,CAAA,EAAA;AAAA,IAEE,YAAW,EAAA,OAAA;AAAA,IACX,GAAA;AAAA,IACA,WAAW,IACT,CAAA,MAAA,CAAO,iCACP,MAAO,CAAA,UAAA,CAAA,EACP,OAAO,UACP,CAAA,EAAA;AAAA,MAAA,CACG,OAAO,WAAe,CAAA,GAAA,SAAA;AAAA,MAAA,CACtB,OAAO,UAAc,CAAA,GAAA,SAAA;AAAA,MAAA,CACrB,OAAO,UAAc,CAAA,GAAA,cAAA;AAAA,KAAA,CAAA;AAAA,GAAA,CAAA,sCAIzB,IAAD,EAAA;AAAA,IAAM,IAAK,EAAA,GAAA;AAAA,GAAA,sCACR,KAAD,EAAA,IAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1,60 +0,0 @@
1
- import React from 'react';
2
- import { useThemeCheck } from '@danske/sapphire-react';
3
- import { useToastState } from '@react-stately/toast';
4
- import { ToastRegion } from './ToastRegion.js';
5
- import { ToastContext } from './context.js';
6
-
7
- var __defProp = Object.defineProperty;
8
- var __defProps = Object.defineProperties;
9
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
- var __spreadValues = (a, b) => {
15
- for (var prop in b || (b = {}))
16
- if (__hasOwnProp.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- if (__getOwnPropSymbols)
19
- for (var prop of __getOwnPropSymbols(b)) {
20
- if (__propIsEnum.call(b, prop))
21
- __defNormalProp(a, prop, b[prop]);
22
- }
23
- return a;
24
- };
25
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
- var __objRest = (source, exclude) => {
27
- var target = {};
28
- for (var prop in source)
29
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
- target[prop] = source[prop];
31
- if (source != null && __getOwnPropSymbols)
32
- for (var prop of __getOwnPropSymbols(source)) {
33
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
- target[prop] = source[prop];
35
- }
36
- return target;
37
- };
38
- const ToastProvider = (_a) => {
39
- var _b = _a, {
40
- children,
41
- placement = "bottom"
42
- } = _b, props = __objRest(_b, [
43
- "children",
44
- "placement"
45
- ]);
46
- useThemeCheck();
47
- const state = useToastState({
48
- maxVisibleToasts: 1,
49
- hasExitAnimation: true
50
- });
51
- return /* @__PURE__ */ React.createElement(ToastContext.Provider, {
52
- value: state
53
- }, children, state.visibleToasts.length > 0 && /* @__PURE__ */ React.createElement(ToastRegion, __spreadProps(__spreadValues({}, props), {
54
- state,
55
- placement
56
- })));
57
- };
58
-
59
- export { ToastProvider };
60
- //# sourceMappingURL=ToastProvider.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastProvider.js","sources":["../../../../src/Toast/src/ToastProvider.tsx"],"sourcesContent":["import React, { ReactNode } from 'react';\nimport { useThemeCheck } from '@danske/sapphire-react';\n\nimport { useToastState } from '@react-stately/toast';\nimport { ToastRegionProps, ToastRegion } from './ToastRegion';\nimport { ToastContext, ToastData } from './context';\n\nexport type ToastProviderProps = Omit<ToastRegionProps<ReactNode>, 'state'> & {\n children: React.ReactNode;\n};\n\n/**\n * Sapphire toast provider.\n * Render this at the root of your app.\n */\nexport const ToastProvider = ({\n children,\n placement = 'bottom',\n ...props\n}: ToastProviderProps) => {\n useThemeCheck();\n\n const state = useToastState<ToastData>({\n maxVisibleToasts: 1,\n hasExitAnimation: true,\n });\n\n return (\n <ToastContext.Provider value={state}>\n {children}\n {state.visibleToasts.length > 0 && (\n <ToastRegion {...props} state={state} placement={placement} />\n )}\n </ToastContext.Provider>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAea,MAAA,aAAA,GAAgB,CAAC,EAIJ,KAAA;AAJI,EAC5B,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,SAAY,GAAA,QAAA;AAAA,GAFgB,GAAA,EAAA,EAGzB,kBAHyB,EAGzB,EAAA;AAAA,IAFH,UAAA;AAAA,IACA,WAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,aAAA,EAAA,CAAA;AAEA,EAAA,MAAM,QAAQ,aAAyB,CAAA;AAAA,IACrC,gBAAkB,EAAA,CAAA;AAAA,IAClB,gBAAkB,EAAA,IAAA;AAAA,GAAA,CAAA,CAAA;AAGpB,EACE,uBAAA,KAAA,CAAA,aAAA,CAAC,aAAa,QAAd,EAAA;AAAA,IAAuB,KAAO,EAAA,KAAA;AAAA,GAC3B,EAAA,QAAA,EACA,MAAM,aAAc,CAAA,MAAA,GAAS,qBAC3B,KAAA,CAAA,aAAA,CAAA,WAAA,EAAD,iCAAiB,KAAjB,CAAA,EAAA;AAAA,IAAwB,KAAA;AAAA,IAAc,SAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1,66 +0,0 @@
1
- import React, { useRef } from 'react';
2
- import { useToastRegion } from '@react-aria/toast';
3
- import clsx from 'clsx';
4
- import { useThemeContext, SapphireOverlayContainer, ThemeRoot } from '@danske/sapphire-react';
5
- import styles from '@danske/sapphire-css/components/toast/toast.module.css';
6
- import { Toast } from './Toast.js';
7
-
8
- var __defProp = Object.defineProperty;
9
- var __defProps = Object.defineProperties;
10
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
11
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
12
- var __hasOwnProp = Object.prototype.hasOwnProperty;
13
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
14
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
15
- var __spreadValues = (a, b) => {
16
- for (var prop in b || (b = {}))
17
- if (__hasOwnProp.call(b, prop))
18
- __defNormalProp(a, prop, b[prop]);
19
- if (__getOwnPropSymbols)
20
- for (var prop of __getOwnPropSymbols(b)) {
21
- if (__propIsEnum.call(b, prop))
22
- __defNormalProp(a, prop, b[prop]);
23
- }
24
- return a;
25
- };
26
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
27
- var __objRest = (source, exclude) => {
28
- var target = {};
29
- for (var prop in source)
30
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
31
- target[prop] = source[prop];
32
- if (source != null && __getOwnPropSymbols)
33
- for (var prop of __getOwnPropSymbols(source)) {
34
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
35
- target[prop] = source[prop];
36
- }
37
- return target;
38
- };
39
- const ToastRegion = (_a) => {
40
- var _b = _a, {
41
- state,
42
- placement = "bottom"
43
- } = _b, props = __objRest(_b, [
44
- "state",
45
- "placement"
46
- ]);
47
- const ref = useRef(null);
48
- const { regionProps } = useToastRegion(props, state, ref);
49
- const { overlayZIndex = 100 } = useThemeContext();
50
- return /* @__PURE__ */ React.createElement(SapphireOverlayContainer, null, /* @__PURE__ */ React.createElement(ThemeRoot, {
51
- contrast: true
52
- }, /* @__PURE__ */ React.createElement("div", __spreadProps(__spreadValues({}, regionProps), {
53
- ref,
54
- className: clsx(styles["sapphire-toast-container"], styles[`sapphire-toast-container--${placement}`]),
55
- style: {
56
- zIndex: overlayZIndex + 200
57
- }
58
- }), state.visibleToasts.map((toast) => /* @__PURE__ */ React.createElement(Toast, __spreadProps(__spreadValues({}, props), {
59
- key: toast.key,
60
- toast,
61
- state
62
- }))))));
63
- };
64
-
65
- export { ToastRegion };
66
- //# sourceMappingURL=ToastRegion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToastRegion.js","sources":["../../../../src/Toast/src/ToastRegion.tsx"],"sourcesContent":["import React, { useRef } from 'react';\nimport { AriaToastRegionProps, useToastRegion } from '@react-aria/toast';\nimport clsx from 'clsx';\nimport {\n SapphireOverlayContainer,\n SapphireStyleProps,\n ThemeRoot,\n useThemeContext,\n} from '@danske/sapphire-react';\n\nimport styles from '@danske/sapphire-css/components/toast/toast.module.css';\nimport { ToastState } from '@react-stately/toast';\nimport { Toast } from './Toast';\nimport { ToastData } from './context';\n\ntype VerticalPlacement = 'top' | 'bottom';\ntype HorizontalPlacement = 'left' | 'right';\n\nexport type ToastRegionProps<T> = AriaToastRegionProps &\n SapphireStyleProps & {\n state: ToastState<T>;\n /**\n * Placement of the Toast notifications on the page.\n */\n placement?:\n | VerticalPlacement\n | `${VerticalPlacement}-${HorizontalPlacement}`;\n };\n\nexport const ToastRegion = <T extends ToastData>({\n state,\n placement = 'bottom',\n ...props\n}: ToastRegionProps<T>) => {\n const ref = useRef(null);\n const { regionProps } = useToastRegion(props, state, ref);\n const { overlayZIndex = 100 } = useThemeContext();\n\n return (\n <SapphireOverlayContainer>\n <ThemeRoot contrast>\n <div\n {...regionProps}\n ref={ref}\n className={clsx(\n styles['sapphire-toast-container'],\n styles[`sapphire-toast-container--${placement}`]\n )}\n style={\n {\n zIndex: overlayZIndex + 200,\n } /* above overlays from @danske/sapphire-react */\n }\n >\n {state.visibleToasts.map((toast) => (\n <Toast {...props} key={toast.key} toast={toast} state={state} />\n ))}\n </div>\n </ThemeRoot>\n </SapphireOverlayContainer>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6Ba,MAAA,WAAA,GAAc,CAAsB,EAItB,KAAA;AAJsB,EAC/C,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAA,KAAA;AAAA,IACA,SAAY,GAAA,QAAA;AAAA,GAFmC,GAAA,EAAA,EAG5C,kBAH4C,EAG5C,EAAA;AAAA,IAFH,OAAA;AAAA,IACA,WAAA;AAAA,GAAA,CAAA,CAAA;AAGA,EAAA,MAAM,MAAM,MAAO,CAAA,IAAA,CAAA,CAAA;AACnB,EAAA,MAAM,EAAE,WAAA,EAAA,GAAgB,cAAe,CAAA,KAAA,EAAO,KAAO,EAAA,GAAA,CAAA,CAAA;AACrD,EAAM,MAAA,EAAE,gBAAgB,GAAQ,EAAA,GAAA,eAAA,EAAA,CAAA;AAEhC,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,wBAAA,EAAD,IACE,kBAAA,KAAA,CAAA,aAAA,CAAC,SAAD,EAAA;AAAA,IAAW,QAAQ,EAAA,IAAA;AAAA,GACjB,kBAAA,KAAA,CAAA,aAAA,CAAC,KAAD,EAAA,aAAA,CAAA,cAAA,CAAA,EAAA,EACM,WADN,CAAA,EAAA;AAAA,IAEE,GAAA;AAAA,IACA,SAAW,EAAA,IAAA,CACT,MAAO,CAAA,0BAAA,CAAA,EACP,OAAO,CAA6B,0BAAA,EAAA,SAAA,CAAA,CAAA,CAAA,CAAA;AAAA,IAEtC,KACE,EAAA;AAAA,MACE,QAAQ,aAAgB,GAAA,GAAA;AAAA,KAAA;AAAA,GAI3B,CAAA,EAAA,KAAA,CAAM,cAAc,GAAI,CAAA,CAAC,0BACvB,KAAA,CAAA,aAAA,CAAA,KAAA,EAAD,iCAAW,KAAX,CAAA,EAAA;AAAA,IAAkB,KAAK,KAAM,CAAA,GAAA;AAAA,IAAK,KAAA;AAAA,IAAc,KAAA;AAAA,GAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA,CAAA;AAAA;;;;"}
@@ -1,10 +0,0 @@
1
- import React, { useContext } from 'react';
2
-
3
- const ToastContext = React.createContext(null);
4
- const useToastContext = () => {
5
- const context = useContext(ToastContext);
6
- return context;
7
- };
8
-
9
- export { ToastContext, useToastContext };
10
- //# sourceMappingURL=context.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context.js","sources":["../../../../src/Toast/src/context.ts"],"sourcesContent":["import React, { ReactNode, useContext } from 'react';\nimport { ToastState } from '@react-stately/toast';\n\nexport interface ToastData {\n content: ReactNode;\n variant: 'neutral' | 'success';\n icon?: React.ReactNode;\n}\n\nexport const ToastContext = React.createContext<ToastState<ToastData> | null>(\n null\n);\n\nexport const useToastContext = () => {\n const context = useContext(ToastContext);\n\n return context;\n};\n"],"names":[],"mappings":";;AASa,MAAA,YAAA,GAAe,MAAM,aAChC,CAAA,IAAA,EAAA;AAGK,MAAM,kBAAkB,MAAM;AACnC,EAAA,MAAM,UAAU,UAAW,CAAA,YAAA,CAAA,CAAA;AAE3B,EAAO,OAAA,OAAA,CAAA;AAAA;;;;"}
@@ -1,25 +0,0 @@
1
- import { useToastContext } from './context.js';
2
-
3
- const useShowToast = () => {
4
- const toastState = useToastContext();
5
- if (!toastState) {
6
- throw new Error('"useShowToast" should be used inside a <ToastProvider>.');
7
- }
8
- return (content, options) => {
9
- const {
10
- onClose,
11
- timeout = 3e3,
12
- variant = "neutral",
13
- icon
14
- } = options || {};
15
- const toastData = {
16
- content,
17
- variant,
18
- icon
19
- };
20
- toastState.add(toastData, { onClose, timeout });
21
- };
22
- };
23
-
24
- export { useShowToast };
25
- //# sourceMappingURL=useShowToast.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useShowToast.js","sources":["../../../../src/Toast/src/useShowToast.ts"],"sourcesContent":["import { ToastData, useToastContext } from './context';\nimport { ReactNode } from 'react';\n\nexport type ShowToastFn = (\n content: ReactNode,\n options?: ShowToastOptions\n) => void;\n\nexport interface ShowToastOptions {\n /**\n * Handler that is called when the toast is closed, either by the user\n * or after a timeout.\n */\n onClose?: () => void;\n /**\n * A timeout to automatically close the toast after, in milliseconds.\n * Note that if the toast is hovered or interacted with, the timeout is\n * paused.\n *\n * @default 3000\n */\n timeout?: number;\n variant?: 'neutral' | 'success';\n icon?: ReactNode;\n}\n\nexport const useShowToast = (): ShowToastFn => {\n const toastState = useToastContext();\n\n if (!toastState) {\n throw new Error('\"useShowToast\" should be used inside a <ToastProvider>.');\n }\n\n return (content, options) => {\n const {\n onClose,\n timeout = 3000,\n variant = 'neutral',\n icon,\n } = options || {};\n\n const toastData: ToastData = {\n content,\n variant,\n icon,\n };\n\n /*\n * NOTE:\n * There is an addition \"priority\" parameter to \".add\".\n * We don't use it now, but we should if we will have different types of\n * toast notifications with different priorities.\n */\n toastState.add(toastData, { onClose, timeout });\n };\n};\n"],"names":[],"mappings":";;AA0BO,MAAM,eAAe,MAAmB;AAC7C,EAAA,MAAM,UAAa,GAAA,eAAA,EAAA,CAAA;AAEnB,EAAA,IAAI,CAAC,UAAY,EAAA;AACf,IAAA,MAAM,IAAI,KAAM,CAAA,yDAAA,CAAA,CAAA;AAAA,GAAA;AAGlB,EAAO,OAAA,CAAC,SAAS,OAAY,KAAA;AAC3B,IAAM,MAAA;AAAA,MACJ,OAAA;AAAA,MACA,OAAU,GAAA,GAAA;AAAA,MACV,OAAU,GAAA,SAAA;AAAA,MACV,IAAA;AAAA,KAAA,GACE,OAAW,IAAA,EAAA,CAAA;AAEf,IAAA,MAAM,SAAuB,GAAA;AAAA,MAC3B,OAAA;AAAA,MACA,OAAA;AAAA,MACA,IAAA;AAAA,KAAA,CAAA;AASF,IAAW,UAAA,CAAA,GAAA,CAAI,SAAW,EAAA,EAAE,OAAS,EAAA,OAAA,EAAA,CAAA,CAAA;AAAA,GAAA,CAAA;AAAA;;;;"}
@@ -1,85 +0,0 @@
1
- import React from 'react';
2
- import { useFocusableRef } from '@react-spectrum/utils';
3
- import { FocusRing } from '@react-aria/focus';
4
- import { mergeProps } from '@react-aria/utils';
5
- import { useToggleButton } from '@react-aria/button';
6
- import { useHover } from '@react-aria/interactions';
7
- import { useToggleState } from '@react-stately/toggle';
8
- import clsx from 'clsx';
9
- import styles from '@danske/sapphire-css/components/button/button.module.css';
10
- import { useThemeCheck, useSapphireStyleProps, Icon, usePreventTouchEnd } from '@danske/sapphire-react';
11
-
12
- var __defProp = Object.defineProperty;
13
- var __defProps = Object.defineProperties;
14
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
15
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
16
- var __hasOwnProp = Object.prototype.hasOwnProperty;
17
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
18
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
19
- var __spreadValues = (a, b) => {
20
- for (var prop in b || (b = {}))
21
- if (__hasOwnProp.call(b, prop))
22
- __defNormalProp(a, prop, b[prop]);
23
- if (__getOwnPropSymbols)
24
- for (var prop of __getOwnPropSymbols(b)) {
25
- if (__propIsEnum.call(b, prop))
26
- __defNormalProp(a, prop, b[prop]);
27
- }
28
- return a;
29
- };
30
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
31
- var __objRest = (source, exclude) => {
32
- var target = {};
33
- for (var prop in source)
34
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
35
- target[prop] = source[prop];
36
- if (source != null && __getOwnPropSymbols)
37
- for (var prop of __getOwnPropSymbols(source)) {
38
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
39
- target[prop] = source[prop];
40
- }
41
- return target;
42
- };
43
- const ToggleButton = React.forwardRef(function Button(_a, ref) {
44
- var _b = _a, {
45
- iconAlign = "left",
46
- icon,
47
- size = "medium"
48
- } = _b, otherProps = __objRest(_b, [
49
- "iconAlign",
50
- "icon",
51
- "size"
52
- ]);
53
- useThemeCheck();
54
- const { autoFocus, isDisabled } = otherProps;
55
- const domRef = useFocusableRef(ref);
56
- const { hoverProps, isHovered } = useHover({ isDisabled });
57
- const { styleProps } = useSapphireStyleProps(otherProps);
58
- const iconWrapper = icon && /* @__PURE__ */ React.createElement("span", {
59
- className: clsx(styles["sapphire-button__icon"])
60
- }, /* @__PURE__ */ React.createElement(Icon, {
61
- size: size === "small" ? "s" : size === "medium" ? "m" : "l"
62
- }, icon));
63
- const state = useToggleState(otherProps);
64
- const { buttonProps, isPressed } = useToggleButton(otherProps, state, domRef);
65
- usePreventTouchEnd(domRef);
66
- return /* @__PURE__ */ React.createElement(FocusRing, {
67
- focusRingClass: clsx(styles["is-focus"]),
68
- autoFocus
69
- }, /* @__PURE__ */ React.createElement("button", __spreadProps(__spreadValues({}, mergeProps(buttonProps, hoverProps)), {
70
- ref: domRef,
71
- style: __spreadValues({}, styleProps.style),
72
- className: clsx(styles["sapphire-button"], styles["js-focus"], styles["js-hover"], {
73
- [styles["is-active"]]: isPressed,
74
- [styles["is-hover"]]: isHovered,
75
- [styles["is-disabled"]]: isDisabled,
76
- [styles["sapphire-button--small"]]: size === "small",
77
- [styles["sapphire-button--large"]]: size === "large",
78
- [styles["sapphire-button--with-left-icon"]]: icon && iconAlign === "left",
79
- [styles["sapphire-button--with-right-icon"]]: icon && iconAlign === "right"
80
- }, state.isSelected ? styles["sapphire-button--selected"] : styles["sapphire-button--unselected"], styleProps.className)
81
- }), iconAlign === "left" && iconWrapper, otherProps.children, iconAlign === "right" && iconWrapper));
82
- });
83
-
84
- export { ToggleButton };
85
- //# sourceMappingURL=ToggleButton.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"ToggleButton.js","sources":["../../../../src/ToggleButton/src/ToggleButton.tsx"],"sourcesContent":["import React from 'react';\nimport { useFocusableRef } from '@react-spectrum/utils';\nimport { FocusableRef, PressEvents } from '@react-types/shared';\nimport { FocusRing } from '@react-aria/focus';\nimport { mergeProps } from '@react-aria/utils';\nimport { AriaToggleButtonProps, useToggleButton } from '@react-aria/button';\nimport { useHover } from '@react-aria/interactions';\nimport { useToggleState } from '@react-stately/toggle';\nimport clsx from 'clsx';\n\nimport styles from '@danske/sapphire-css/components/button/button.module.css';\n\nimport {\n SapphireStyleProps,\n useSapphireStyleProps,\n useThemeCheck,\n usePreventTouchEnd,\n Icon,\n} from '@danske/sapphire-react';\n\nexport type SapphireToggleButtonProps = Omit<\n AriaToggleButtonProps<'button'>,\n 'elementType' | 'type'\n> &\n SapphireStyleProps &\n PressEvents & {\n /**\n * @default 'medium'\n */\n size?: 'large' | 'medium' | 'small';\n onChange?: (selected: boolean) => void;\n isSelected?: boolean;\n defaultSelected?: boolean;\n } & (ButtonWithIconProps | ButtonWithoutIconProps);\n\n// TODO: use ButtonWithIconProps and ButtonWithoutIconProps in core, when moved there\nexport interface ButtonWithIconProps {\n /**\n * The icon placed either before or after the `label`, based on `iconAlign` prop.\n * */\n icon: React.ReactNode;\n /**\n * The icon placement relative to the `label`.\n * */\n iconAlign?: 'left' | 'right';\n}\n\nexport interface ButtonWithoutIconProps {\n icon?: never;\n iconAlign?: never;\n}\n\n/**\n * A button with a toggleable `isSelected` state. By default, the selection is toggled when the\n * button is pressed, allowing user to switch between two states or modes.\n */\nexport const ToggleButton = React.forwardRef(function Button(\n {\n iconAlign = 'left',\n icon,\n size = 'medium',\n ...otherProps\n }: SapphireToggleButtonProps,\n ref: FocusableRef<HTMLButtonElement>\n) {\n useThemeCheck();\n\n const { autoFocus, isDisabled } = otherProps;\n const domRef = useFocusableRef<HTMLButtonElement>(ref);\n const { hoverProps, isHovered } = useHover({ isDisabled });\n const { styleProps } = useSapphireStyleProps(otherProps);\n\n const iconWrapper = icon && (\n <span className={clsx(styles['sapphire-button__icon'])}>\n <Icon size={size === 'small' ? 's' : size === 'medium' ? 'm' : 'l'}>\n {icon}\n </Icon>\n </span>\n );\n\n const state = useToggleState(otherProps);\n const { buttonProps, isPressed } = useToggleButton(otherProps, state, domRef);\n usePreventTouchEnd(domRef);\n\n return (\n <FocusRing focusRingClass={clsx(styles['is-focus'])} autoFocus={autoFocus}>\n <button\n {...mergeProps(buttonProps, hoverProps)}\n ref={domRef}\n style={{ ...styleProps.style }}\n className={clsx(\n styles['sapphire-button'],\n styles['js-focus'],\n styles['js-hover'],\n {\n [styles['is-active']]: isPressed,\n [styles['is-hover']]: isHovered,\n [styles['is-disabled']]: isDisabled,\n [styles['sapphire-button--small']]: size === 'small',\n [styles['sapphire-button--large']]: size === 'large',\n [styles['sapphire-button--with-left-icon']]:\n icon && iconAlign === 'left',\n [styles['sapphire-button--with-right-icon']]:\n icon && iconAlign === 'right',\n },\n state.isSelected\n ? styles['sapphire-button--selected']\n : styles['sapphire-button--unselected'],\n styleProps.className\n )}\n >\n {iconAlign === 'left' && iconWrapper}\n {otherProps.children}\n {iconAlign === 'right' && iconWrapper}\n </button>\n </FocusRing>\n );\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDO,MAAM,YAAe,GAAA,KAAA,CAAM,UAAW,CAAA,SAAA,MAAA,CAC3C,IAMA,GACA,EAAA;AAPA,EACE,IAAA,EAAA,GAAA,EAAA,EAAA;AAAA,IAAY,SAAA,GAAA,MAAA;AAAA,IACZ,IAAA;AAAA,IACA,IAAO,GAAA,QAAA;AAAA,GAHT,GAAA,EAAA,EAIK,uBAJL,EAIK,EAAA;AAAA,IAHH,WAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,GAAA,CAAA,CAAA;AAKF,EAAA,aAAA,EAAA,CAAA;AAEA,EAAM,MAAA,EAAE,WAAW,UAAe,EAAA,GAAA,UAAA,CAAA;AAClC,EAAA,MAAM,SAAS,eAAmC,CAAA,GAAA,CAAA,CAAA;AAClD,EAAA,MAAM,EAAE,UAAA,EAAY,SAAc,EAAA,GAAA,QAAA,CAAS,EAAE,UAAA,EAAA,CAAA,CAAA;AAC7C,EAAM,MAAA,EAAE,eAAe,qBAAsB,CAAA,UAAA,CAAA,CAAA;AAE7C,EAAM,MAAA,WAAA,GAAc,IAClB,oBAAA,KAAA,CAAA,aAAA,CAAC,MAAD,EAAA;AAAA,IAAM,SAAA,EAAW,KAAK,MAAO,CAAA,uBAAA,CAAA,CAAA;AAAA,GAAA,sCAC1B,IAAD,EAAA;AAAA,IAAM,MAAM,IAAS,KAAA,OAAA,GAAU,GAAM,GAAA,IAAA,KAAS,WAAW,GAAM,GAAA,GAAA;AAAA,GAC5D,EAAA,IAAA,CAAA,CAAA,CAAA;AAKP,EAAA,MAAM,QAAQ,cAAe,CAAA,UAAA,CAAA,CAAA;AAC7B,EAAA,MAAM,EAAE,WAAA,EAAa,SAAc,EAAA,GAAA,eAAA,CAAgB,YAAY,KAAO,EAAA,MAAA,CAAA,CAAA;AACtE,EAAmB,kBAAA,CAAA,MAAA,CAAA,CAAA;AAEnB,EAAA,2CACG,SAAD,EAAA;AAAA,IAAW,cAAA,EAAgB,KAAK,MAAO,CAAA,UAAA,CAAA,CAAA;AAAA,IAAc,SAAA;AAAA,GAAA,kBAClD,KAAA,CAAA,aAAA,CAAA,QAAA,EAAD,aACM,CAAA,cAAA,CAAA,EAAA,EAAA,UAAA,CAAW,aAAa,UAD9B,CAAA,CAAA,EAAA;AAAA,IAEE,GAAK,EAAA,MAAA;AAAA,IACL,KAAA,EAAO,mBAAK,UAAW,CAAA,KAAA,CAAA;AAAA,IACvB,WAAW,IACT,CAAA,MAAA,CAAO,oBACP,MAAO,CAAA,UAAA,CAAA,EACP,OAAO,UACP,CAAA,EAAA;AAAA,MAAA,CACG,OAAO,WAAe,CAAA,GAAA,SAAA;AAAA,MAAA,CACtB,OAAO,UAAc,CAAA,GAAA,SAAA;AAAA,MAAA,CACrB,OAAO,aAAiB,CAAA,GAAA,UAAA;AAAA,MACxB,CAAA,MAAA,CAAO,4BAA4B,IAAS,KAAA,OAAA;AAAA,MAC5C,CAAA,MAAA,CAAO,4BAA4B,IAAS,KAAA,OAAA;AAAA,MAC5C,CAAA,MAAA,CAAO,iCACN,CAAA,GAAA,IAAA,IAAQ,SAAc,KAAA,MAAA;AAAA,MACvB,CAAA,MAAA,CAAO,kCACN,CAAA,GAAA,IAAA,IAAQ,SAAc,KAAA,OAAA;AAAA,KAAA,EAE1B,MAAM,UACF,GAAA,MAAA,CAAO,2BACP,CAAA,GAAA,MAAA,CAAO,gCACX,UAAW,CAAA,SAAA,CAAA;AAAA,GAAA,CAAA,EAGZ,cAAc,MAAU,IAAA,WAAA,EACxB,UAAW,CAAA,QAAA,EACX,cAAc,OAAW,IAAA,WAAA,CAAA,CAAA,CAAA;AAAA,CAAA;;;;"}
@@ -1,14 +0,0 @@
1
- import { Heading } from './src/Heading.js';
2
- import { Subheading } from './src/Subheading.js';
3
- import { Body } from './src/Body.js';
4
- import { Caption } from './src/Caption.js';
5
-
6
- const Typography = {
7
- Heading,
8
- Subheading,
9
- Body,
10
- Caption
11
- };
12
-
13
- export { Typography };
14
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/Typography/index.ts"],"sourcesContent":["import { Heading, type TypographyHeadingProps } from './src/Heading';\nimport { Subheading, type TypographySubheadingProps } from './src/Subheading';\nimport { Body, type TypographyBodyProps } from './src/Body';\nimport { Caption, TypographyCaptionProps } from './src/Caption';\nimport { ComponentType } from 'react';\n\nexport const Typography: {\n Heading: ComponentType<TypographyHeadingProps>;\n Subheading: ComponentType<TypographySubheadingProps>;\n Body: ComponentType<TypographyBodyProps>;\n Caption: ComponentType<TypographyCaptionProps>;\n} = {\n Heading,\n Subheading,\n Body,\n Caption,\n};\n\nexport type {\n TypographyHeadingProps,\n TypographySubheadingProps,\n TypographyBodyProps,\n TypographyCaptionProps,\n};\n"],"names":[],"mappings":";;;;;AAMO,MAAM,UAKT,GAAA;AAAA,EACF,OAAA;AAAA,EACA,UAAA;AAAA,EACA,IAAA;AAAA,EACA,OAAA;AAAA;;;;"}
@@ -1,66 +0,0 @@
1
- import { filterDOMProps } from '@react-aria/utils';
2
- import React, { forwardRef } from 'react';
3
- import clsx from 'clsx';
4
- import styles from '@danske/sapphire-css/components/text/text.module.css';
5
- import { useThemeCheck, useTextStyleProps } from '@danske/sapphire-react';
6
-
7
- var __defProp = Object.defineProperty;
8
- var __defProps = Object.defineProperties;
9
- var __getOwnPropDescs = Object.getOwnPropertyDescriptors;
10
- var __getOwnPropSymbols = Object.getOwnPropertySymbols;
11
- var __hasOwnProp = Object.prototype.hasOwnProperty;
12
- var __propIsEnum = Object.prototype.propertyIsEnumerable;
13
- var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
14
- var __spreadValues = (a, b) => {
15
- for (var prop in b || (b = {}))
16
- if (__hasOwnProp.call(b, prop))
17
- __defNormalProp(a, prop, b[prop]);
18
- if (__getOwnPropSymbols)
19
- for (var prop of __getOwnPropSymbols(b)) {
20
- if (__propIsEnum.call(b, prop))
21
- __defNormalProp(a, prop, b[prop]);
22
- }
23
- return a;
24
- };
25
- var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
26
- var __objRest = (source, exclude) => {
27
- var target = {};
28
- for (var prop in source)
29
- if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
30
- target[prop] = source[prop];
31
- if (source != null && __getOwnPropSymbols)
32
- for (var prop of __getOwnPropSymbols(source)) {
33
- if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
34
- target[prop] = source[prop];
35
- }
36
- return target;
37
- };
38
- const Body = forwardRef(function Body2(props, ref) {
39
- useThemeCheck();
40
- const _a = props, {
41
- children,
42
- level = 1,
43
- elementType: CustomElement = "p",
44
- isUnderlined = false,
45
- isBold = false
46
- } = _a, otherProps = __objRest(_a, [
47
- "children",
48
- "level",
49
- "elementType",
50
- "isUnderlined",
51
- "isBold"
52
- ]);
53
- const { styleProps } = useTextStyleProps(otherProps);
54
- const levelClassName = `sapphire-text--body-${level}`;
55
- return /* @__PURE__ */ React.createElement(CustomElement, __spreadProps(__spreadValues(__spreadValues({}, filterDOMProps(props)), styleProps), {
56
- className: clsx(styleProps.className, styles["sapphire-text"], styles[levelClassName], {
57
- [styles["sapphire-text--strong"]]: isBold,
58
- [styles["sapphire-text--underlined"]]: isUnderlined
59
- }),
60
- style: styleProps.style,
61
- ref
62
- }), children);
63
- });
64
-
65
- export { Body };
66
- //# sourceMappingURL=Body.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Body.js","sources":["../../../../src/Typography/src/Body.tsx"],"sourcesContent":["import { DOMProps } from '@react-types/shared';\nimport { filterDOMProps } from '@react-aria/utils';\nimport React, { ElementType, forwardRef } from 'react';\nimport clsx from 'clsx';\nimport styles from '@danske/sapphire-css/components/text/text.module.css';\nimport {\n SapphireStyleProps,\n TextStyleProps,\n useTextStyleProps,\n useThemeCheck,\n} from '@danske/sapphire-react';\n\nexport interface TypographyBodyProps\n extends DOMProps,\n TextStyleProps,\n SapphireStyleProps {\n children: React.ReactNode;\n /**\n * The actual DOM element to render.\n * @default 'p'\n */\n elementType?: string;\n /**\n * Sets the level of the hierarchy of the text.\n * @default 1\n */\n level?: 1 | 2 | 3;\n /**\n * If text should be underlined.\n * @default false\n */\n isUnderlined?: boolean;\n\n /**\n * If text is bold.\n * @default false\n */\n isBold?: boolean;\n}\n\n/**\n * Body text. This is the most common text style. By default, it renders as a\n * paragraph (p), but you can render it as a span or something else.\n *\n * See:\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#text_content\n * https://developer.mozilla.org/en-US/docs/Web/HTML/Element#inline_text_semantics\n */\nexport const Body = forwardRef(function Body(\n props: TypographyBodyProps,\n ref: React.ForwardedRef<HTMLElement>\n) {\n useThemeCheck();\n\n const {\n children,\n level = 1,\n elementType: CustomElement = 'p' as ElementType,\n isUnderlined = false,\n isBold = false,\n ...otherProps\n } = props;\n const { styleProps } = useTextStyleProps(otherProps);\n const levelClassName = `sapphire-text--body-${level}` as const;\n\n return (\n <CustomElement\n {...filterDOMProps(props)}\n {...styleProps}\n className={clsx(\n styleProps.className,\n styles['sapphire-text'],\n styles[levelClassName],\n {\n [styles['sapphire-text--strong']]: isBold,\n [styles['sapphire-text--underlined']]: isUnderlined,\n }\n )}\n style={styleProps.style}\n ref={ref}\n >\n {children}\n </CustomElement>\n );\n});\n"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDO,MAAM,IAAO,GAAA,UAAA,CAAW,SAC7B,KAAA,CAAA,KAAA,EACA,GACA,EAAA;AACA,EAAA,aAAA,EAAA,CAAA;AAEA,EAAA,MAOI,EANF,GAAA,KAAA,EAAA;AAAA,IAAA,QAAA;AAAA,IACA,KAAQ,GAAA,CAAA;AAAA,IACR,aAAa,aAAgB,GAAA,GAAA;AAAA,IAC7B,YAAe,GAAA,KAAA;AAAA,IACf,MAAS,GAAA,KAAA;AAAA,GAEP,GAAA,EAAA,EADC,uBACD,EADC,EAAA;AAAA,IALH,UAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,cAAA;AAAA,IACA,QAAA;AAAA,GAAA,CAAA,CAAA;AAGF,EAAM,MAAA,EAAE,eAAe,iBAAkB,CAAA,UAAA,CAAA,CAAA;AACzC,EAAA,MAAM,iBAAiB,CAAuB,oBAAA,EAAA,KAAA,CAAA,CAAA,CAAA;AAE9C,EAAA,uBACG,KAAA,CAAA,aAAA,CAAA,aAAA,EAAD,aACM,CAAA,cAAA,CAAA,cAAA,CAAA,EAAA,EAAA,cAAA,CAAe,SACf,UAFN,CAAA,EAAA;AAAA,IAGE,WAAW,IACT,CAAA,UAAA,CAAW,WACX,MAAO,CAAA,eAAA,CAAA,EACP,OAAO,cACP,CAAA,EAAA;AAAA,MAAA,CACG,OAAO,uBAA2B,CAAA,GAAA,MAAA;AAAA,MAAA,CAClC,OAAO,2BAA+B,CAAA,GAAA,YAAA;AAAA,KAAA,CAAA;AAAA,IAG3C,OAAO,UAAW,CAAA,KAAA;AAAA,IAClB,GAAA;AAAA,GAEC,CAAA,EAAA,QAAA,CAAA,CAAA;AAAA,CAAA;;;;"}