@inera/ids-react 9.2.1 → 9.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.
Files changed (80) hide show
  1. package/components/accordion/accordion-base.d.ts +2 -1
  2. package/components/accordion/accordion-base.js +3 -4
  3. package/components/accordion/accordion.js +5 -2
  4. package/components/alert/alert-base.js +2 -2
  5. package/components/breadcrumbs/breadcrumbs.js +6 -1
  6. package/components/button/button.d.ts +1 -0
  7. package/components/button/button.js +2 -2
  8. package/components/button/control-button.d.ts +6 -0
  9. package/components/button/control-button.js +9 -0
  10. package/components/carousel/carousel.js +1 -1
  11. package/components/dialog/dialog-base.js +1 -1
  12. package/components/form/checkbox/checkbox-base.js +2 -3
  13. package/components/form/checkbox/checkbox-group-base.d.ts +2 -1
  14. package/components/form/checkbox/checkbox-group-base.js +3 -3
  15. package/components/form/checkbox/checkbox-group.d.ts +2 -1
  16. package/components/form/checkbox/checkbox-group.js +2 -2
  17. package/components/form/checkbox/checkbox.js +3 -4
  18. package/components/form/datepicker/datepicker.d.ts +3 -1
  19. package/components/form/datepicker/datepicker.js +142 -110
  20. package/components/form/form-hooks/useInputValidity.d.ts +1 -1
  21. package/components/form/form-hooks/useInputValidity.js +28 -12
  22. package/components/form/form-props/form-props.d.ts +1 -0
  23. package/components/form/input/input-base.d.ts +4 -2
  24. package/components/form/input/input-base.js +14 -9
  25. package/components/form/input/input.d.ts +3 -0
  26. package/components/form/input/input.js +1 -1
  27. package/components/form/radio/radio-base.js +1 -2
  28. package/components/form/radio/radio-group-base.d.ts +2 -1
  29. package/components/form/radio/radio-group-base.js +3 -3
  30. package/components/form/radio/radio-group.d.ts +2 -1
  31. package/components/form/radio/radio-group.js +2 -2
  32. package/components/form/range/range-base.d.ts +1 -1
  33. package/components/form/range/range-base.js +2 -2
  34. package/components/form/select/select-base.d.ts +3 -3
  35. package/components/form/select/select-base.js +3 -5
  36. package/components/form/select/select.d.ts +2 -2
  37. package/components/form/select/select.js +1 -1
  38. package/components/form/select-multiple/select-multiple-base.d.ts +1 -1
  39. package/components/form/select-multiple/select-multiple-base.js +2 -2
  40. package/components/form/textarea/textarea-base.d.ts +1 -1
  41. package/components/form/textarea/textarea-base.js +3 -5
  42. package/components/form/textarea/textarea.js +1 -1
  43. package/components/form/time/time-base.d.ts +1 -1
  44. package/components/form/time/time-base.js +2 -4
  45. package/components/form/time/time.js +4 -5
  46. package/components/header-1177/header-1177-region-picker-base.d.ts +3 -1
  47. package/components/header-1177/header-1177-region-picker-base.js +8 -3
  48. package/components/header-1177/header-1177-region-picker-mobile-base.d.ts +3 -1
  49. package/components/header-1177/header-1177-region-picker-mobile-base.js +8 -3
  50. package/components/header-1177/header-1177-region-picker-mobile.d.ts +2 -0
  51. package/components/header-1177/header-1177-region-picker.d.ts +2 -0
  52. package/components/header-1177-pro/header-1177-pro-region-picker-base.d.ts +3 -1
  53. package/components/header-1177-pro/header-1177-pro-region-picker-base.js +8 -3
  54. package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.d.ts +3 -1
  55. package/components/header-1177-pro/header-1177-pro-region-picker-mobile-base.js +8 -3
  56. package/components/header-1177-pro/header-1177-pro-region-picker-mobile.d.ts +3 -1
  57. package/components/header-1177-pro/header-1177-pro-region-picker-mobile.js +1 -1
  58. package/components/header-1177-pro/header-1177-pro-region-picker.d.ts +3 -1
  59. package/components/header-1177-pro/header-1177-pro-region-picker.js +1 -1
  60. package/components/popover/popover-content.js +1 -1
  61. package/components/popover/popover.d.ts +2 -1
  62. package/components/popover/popover.js +28 -14
  63. package/components/puff-list/puff-list-item-header.d.ts +1 -1
  64. package/components/puff-list/puff-list-item.d.ts +2 -1
  65. package/components/puff-list/puff-list-item.js +2 -2
  66. package/components/side-panel/side-panel-base.d.ts +1 -0
  67. package/components/side-panel/side-panel-base.js +4 -2
  68. package/components/side-panel/side-panel.d.ts +2 -1
  69. package/components/side-panel/side-panel.js +2 -2
  70. package/components/stepper/step-base.d.ts +1 -1
  71. package/components/stepper/step-base.js +1 -1
  72. package/components/stepper/step.d.ts +1 -1
  73. package/components/stepper/step.js +2 -11
  74. package/components/tag/tag.js +8 -2
  75. package/components/tooltip/tooltip-base.d.ts +1 -3
  76. package/components/tooltip/tooltip-base.js +14 -10
  77. package/components/tooltip/tooltip.js +1 -41
  78. package/index.d.ts +1 -0
  79. package/index.js +1 -0
  80. package/package.json +4 -3
@@ -3,7 +3,7 @@ import React, { forwardRef } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import '@inera/ids-design/components/side-panel/side-panel.css';
5
5
 
6
- const IDSSidePanelBase = forwardRef(({ visible = false, left = false, elevated = false, menu = false, footer = false, noScrollAreaFocus = false, footerDarkmodeToggle, size = "m", srLabel = "Sidopanel", onTogglePanel, onClosePanel, srClose, srOpen, client, headline, footerLinks, footerText, hamburgerRef, componentRef, className, children, ...props }, ref) => {
6
+ const IDSSidePanelBase = forwardRef(({ visible = false, left = false, elevated = false, menu = false, footer = false, noCloseButton = false, noScrollAreaFocus = false, footerDarkmodeToggle, size = "m", srLabel = "Sidopanel", onTogglePanel, onClosePanel, srClose, srOpen, client, headline, footerLinks, footerText, hamburgerRef, componentRef, className, children, ...props }, ref) => {
7
7
  const [ready, setReady] = React.useState(false);
8
8
  React.useEffect(() => {
9
9
  setReady(true);
@@ -30,7 +30,9 @@ const IDSSidePanelBase = forwardRef(({ visible = false, left = false, elevated =
30
30
  return null;
31
31
  };
32
32
  const renderContent = () => (jsxs("div", { className: "ids-side-panel__content", tabIndex: noScrollAreaFocus ? -1 : 0, children: [jsxs("div", { className: "ids-side-panel__inner", children: [headline, children] }), renderFooter()] }));
33
- return (jsx("div", { className: classNames, ref: ref, ...props, children: jsxs("div", { className: "ids-side-panel__panel", children: [jsx("div", { className: "ids-side-panel__actions", children: menu ? (jsx("button", { "aria-label": visible ? srClose : srOpen, className: "ids-side-panel__hamburger", "aria-expanded": visible, ...toggleHandler, ref: hamburgerRef, children: jsx("div", { className: "ids-hamburger", children: jsx("div", { className: "ids-hamburger__lines" }) }) })) : (jsx("button", { "aria-label": srClose, "aria-expanded": visible, className: "ids-side-panel__close-button", ...closeHandler })) }), renderContent()] }) }));
33
+ return (jsx("div", { className: classNames, ref: ref, ...props, children: jsxs("div", { className: clsx("ids-side-panel__panel", {
34
+ "ids-side-panel__panel--no-close-button": noCloseButton
35
+ }), children: [!noCloseButton && (jsx("div", { className: "ids-side-panel__actions", children: menu ? (jsx("button", { "aria-label": visible ? srClose : srOpen, className: "ids-side-panel__hamburger", "aria-expanded": visible, ...toggleHandler, ref: hamburgerRef, children: jsx("div", { className: "ids-hamburger", children: jsx("div", { className: "ids-hamburger__lines" }) }) })) : (jsx("button", { "aria-label": srClose, "aria-expanded": visible, className: "ids-side-panel__close-button", ...closeHandler })) })), renderContent()] }) }));
34
36
  });
35
37
  IDSSidePanelBase.displayName = "IDSSidePanelBase";
36
38
 
@@ -18,8 +18,9 @@ export interface IDSSidePanelProps extends React.HTMLAttributes<HTMLDivElement>
18
18
  footerLinks?: ReactNode;
19
19
  footerText?: ReactNode;
20
20
  noScrollAreaFocus?: boolean;
21
+ noCloseButton?: boolean;
21
22
  }
22
- export declare function IDSSidePanel({ show, menu, noScrollAreaFocus, srLabel, onVisibilityChange, srClose, srOpen, onOpen, onClose, className, children, ...props }: IDSSidePanelProps): import("react/jsx-runtime").JSX.Element;
23
+ export declare function IDSSidePanel({ show, menu, noScrollAreaFocus, noCloseButton, srLabel, onVisibilityChange, srClose, srOpen, onOpen, onClose, className, children, ...props }: IDSSidePanelProps): import("react/jsx-runtime").JSX.Element;
23
24
  export declare namespace IDSSidePanel {
24
25
  var displayName: string;
25
26
  }
@@ -4,7 +4,7 @@ import { useRef, useState, useEffect } from 'react';
4
4
  import { IDSSidePanelBase } from './side-panel-base.js';
5
5
  import { useEsc } from '../utils/hooks/useEsc.js';
6
6
 
7
- function IDSSidePanel({ show, menu = false, noScrollAreaFocus = false, srLabel = "Sidopanel", onVisibilityChange, srClose = "Stäng", srOpen = "Öppna", onOpen, onClose, className, children, ...props }) {
7
+ function IDSSidePanel({ show, menu = false, noScrollAreaFocus = false, noCloseButton = false, srLabel = "Sidopanel", onVisibilityChange, srClose = "Stäng", srOpen = "Öppna", onOpen, onClose, className, children, ...props }) {
8
8
  const componentRef = useRef(null);
9
9
  const hamburgerRef = useRef(null);
10
10
  const isControlled = show !== undefined;
@@ -96,7 +96,7 @@ function IDSSidePanel({ show, menu = false, noScrollAreaFocus = false, srLabel =
96
96
  document.body.style.overflow = ""; // cleanup on unmount
97
97
  };
98
98
  }, [visible]);
99
- return (jsx(IDSSidePanelBase, { ...props, ref: componentRef, client: true, menu: menu, className: className, srClose: srClose, srOpen: srOpen, noScrollAreaFocus: noScrollAreaFocus, visible: visible, onClosePanel: closePanel, onTogglePanel: togglePanel, hamburgerRef: hamburgerRef, children: children }));
99
+ return (jsx(IDSSidePanelBase, { ...props, ref: componentRef, client: true, menu: menu, className: className, srClose: srClose, srOpen: srOpen, noCloseButton: noCloseButton, noScrollAreaFocus: noScrollAreaFocus, visible: visible, onClosePanel: closePanel, onTogglePanel: togglePanel, hamburgerRef: hamburgerRef, children: children }));
100
100
  }
101
101
  IDSSidePanel.displayName = "IDSSidePanel";
102
102
 
@@ -12,4 +12,4 @@ export interface IDSStepBaseProps extends React.HTMLAttributes<HTMLDivElement> {
12
12
  onToggleStep?: (step: string, expanded: boolean) => void;
13
13
  client?: boolean;
14
14
  }
15
- export declare const IDSStepBase: React.ForwardRefExoticComponent<IDSStepBaseProps & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const IDSStepBase: React.ForwardRefExoticComponent<IDSStepBaseProps & React.RefAttributes<HTMLButtonElement>>;
@@ -23,7 +23,7 @@ const IDSStepBase = forwardRef(({ state = "", headline, label = "", stepNumber =
23
23
  onKeyDown: handleKeyPress
24
24
  }
25
25
  : {};
26
- return (jsxs("div", { className: clsx("ids-step", className), ...props, children: [jsx("div", { ref: ref, role: "button", tabIndex: disabled ? -1 : 0, className: clsx("ids-step__button", {
26
+ return (jsxs("div", { className: clsx("ids-step", className), ...props, children: [jsx("button", { ref: ref, type: "button", disabled: disabled, className: clsx("ids-step__button", {
27
27
  "ids-step__button--disabled": disabled
28
28
  }), "aria-expanded": expanded, ...toggleHandlers, children: jsxs("div", { className: "ids-step__button-inner", children: [jsx("div", { className: "ids-step__indicator-wrapper", children: jsx("div", { "aria-label": srIndicatorText || stepNumber, role: "img", className: `ids-step__indicator ids-step__indicator--${state}`, children: renderStepIndicator() }) }), jsxs("div", { className: "ids-step__button-text", children: [jsxs("div", { className: "ids-step__headline-label", children: [headline && jsx("div", { className: "ids-step__headline", children: headline }), label && jsx("div", { className: "ids-step__subtitle", children: label })] }), jsx("div", { className: clsx("ids-step__chevron", {
29
29
  "ids-step__chevron--expanded": expanded
@@ -12,4 +12,4 @@ export interface IDSStepProps extends React.HTMLAttributes<HTMLDivElement> {
12
12
  onExpanded?: () => void;
13
13
  onClosed?: () => void;
14
14
  }
15
- export declare const IDSStep: React.ForwardRefExoticComponent<IDSStepProps & React.RefAttributes<HTMLDivElement>>;
15
+ export declare const IDSStep: React.ForwardRefExoticComponent<IDSStepProps & React.RefAttributes<HTMLButtonElement>>;
@@ -1,22 +1,13 @@
1
1
  "use client";
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import React, { forwardRef, useState, useEffect } from 'react';
3
+ import { forwardRef, useState, useEffect } from 'react';
4
4
  import { IDSStepBase } from './step-base.js';
5
5
 
6
6
  const IDSStep = forwardRef(({ state = "", headline, label, stepNumber = "", srIndicatorText = "", expanded = false, disabled = false, onToggleStep, onExpanded, onClosed, className, ...props }, ref) => {
7
7
  const [isExpanded, setIsExpanded] = useState(expanded);
8
- const stepRef = React.useRef(null);
9
8
  useEffect(() => {
10
9
  setIsExpanded(expanded);
11
10
  }, [expanded]);
12
- // Merge forwarded + local ref
13
- const mergedRef = (node) => {
14
- stepRef.current = node;
15
- if (typeof ref === "function")
16
- ref(node);
17
- else if (ref)
18
- ref.current = node;
19
- };
20
11
  const handleToggleStep = () => {
21
12
  if (disabled)
22
13
  return;
@@ -27,7 +18,7 @@ const IDSStep = forwardRef(({ state = "", headline, label, stepNumber = "", srIn
27
18
  return next;
28
19
  });
29
20
  };
30
- return (jsx(IDSStepBase, { client: true, ref: mergedRef, state: state, headline: headline, label: label, stepNumber: stepNumber, srIndicatorText: srIndicatorText, expanded: isExpanded, disabled: disabled, onToggleStep: handleToggleStep, className: className, ...props }));
21
+ return (jsx(IDSStepBase, { client: true, ref: ref, state: state, headline: headline, label: label, stepNumber: stepNumber, srIndicatorText: srIndicatorText, expanded: isExpanded, disabled: disabled, onToggleStep: handleToggleStep, className: className, ...props }));
31
22
  });
32
23
  IDSStep.displayName = "IDSStep";
33
24
 
@@ -1,10 +1,16 @@
1
1
  import { jsx, jsxs } from 'react/jsx-runtime';
2
- import { forwardRef, memo } from 'react';
2
+ import { forwardRef, isValidElement, cloneElement, memo } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import '@inera/ids-design/components/tag/tag.css';
5
5
 
6
6
  const IDSTagMemo = forwardRef(({ clickable, closeButton, className, children, ...props }, ref) => {
7
- return (jsx("span", { ref: ref, ...props, className: clsx("ids-tag", { "ids-tag--clickable": clickable }, className), children: jsxs("div", { className: "ids-tag__content", children: [children, !!closeButton && jsx("span", { className: "ids-tag__close-btn", children: closeButton })] }) }));
7
+ // TODO remove ids-tag__close-btn and let the user supply a IDSControlButton in 10.0
8
+ const closeButtonElement = isValidElement(closeButton)
9
+ ? cloneElement(closeButton, {
10
+ className: clsx("ids-tag__close-btn", closeButton.props.className)
11
+ })
12
+ : closeButton;
13
+ return (jsx("span", { ref: ref, ...props, className: clsx("ids-tag", { "ids-tag--clickable": clickable }, className), children: jsxs("div", { className: "ids-tag__content", children: [children, !!closeButton && closeButtonElement] }) }));
8
14
  });
9
15
  IDSTagMemo.displayName = "IDSTag";
10
16
  const IDSTag = memo(IDSTagMemo);
@@ -7,12 +7,10 @@ export interface IDSTooltipBaseProps extends React.HTMLAttributes<HTMLSpanElemen
7
7
  translateX?: string;
8
8
  translateY?: string;
9
9
  trigger: ReactNode;
10
- triggerIsIcon?: boolean;
11
10
  triggerRef?: React.Ref<HTMLSpanElement>;
12
11
  tooltipContentRef?: React.Ref<HTMLSpanElement>;
13
- isHidden?: boolean;
14
12
  }
15
- export declare function IDSTooltipBase({ position, maxWidth, translateX, translateY, trigger, triggerIsIcon, triggerRef, tooltipContentRef, isHidden, className, children, ...props }: IDSTooltipBaseProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function IDSTooltipBase({ position, maxWidth, translateX, translateY, trigger, triggerRef, tooltipContentRef, className, children, ...props }: IDSTooltipBaseProps): import("react/jsx-runtime").JSX.Element;
16
14
  export declare namespace IDSTooltipBase {
17
15
  var displayName: string;
18
16
  }
@@ -1,18 +1,22 @@
1
1
  import { jsxs, jsx } from 'react/jsx-runtime';
2
- import { useId } from 'react';
2
+ import { useId, isValidElement, cloneElement } from 'react';
3
3
  import clsx from 'clsx';
4
4
  import '@inera/ids-design/components/tooltip/tooltip.css';
5
5
 
6
- function IDSTooltipBase({ position = "top", maxWidth = "20rem", translateX = position === "top" || position === "bottom" ? "-50%" : "0", translateY = position.includes("top") ? "-100%" : "100%", trigger, triggerIsIcon, triggerRef, tooltipContentRef, isHidden, className, children, ...props }) {
6
+ function IDSTooltipBase({ position = "top", maxWidth = "20rem", translateX = position === "top" || position === "bottom" ? "-50%" : "0", translateY = position.includes("top") ? "-100%" : "100%", trigger, triggerRef, tooltipContentRef, className, children, ...props }) {
7
7
  const tooltipId = `tooltip-${useId()}`;
8
- const ariaHandler = triggerIsIcon
9
- ? {
10
- "aria-labelledby": tooltipId
11
- }
12
- : {
13
- "aria-describedby": tooltipId
14
- };
15
- return (jsxs("span", { className: clsx("ids-tooltip", className), ...props, children: [jsx("span", { className: "ids-tooltip__trigger", ...ariaHandler, ref: triggerRef, children: trigger }), jsx("span", { className: clsx("ids-tooltip__content", `ids-tooltip__content--${position}`), ref: tooltipContentRef, role: "tooltip", hidden: isHidden, id: tooltipId, style: { transform: `translate(${translateX}, ${translateY})`, maxWidth }, children: children })] }));
8
+ const ariaHandler = {
9
+ "aria-describedby": tooltipId
10
+ };
11
+ const triggerElement = isValidElement(trigger)
12
+ ? (() => {
13
+ const element = trigger;
14
+ return cloneElement(element, {
15
+ "aria-describedby": clsx(element.props["aria-describedby"], tooltipId)
16
+ });
17
+ })()
18
+ : trigger;
19
+ return (jsxs("span", { className: clsx("ids-tooltip", className), ...props, children: [jsx("span", { className: "ids-tooltip__trigger", ...(!isValidElement(trigger) ? ariaHandler : {}), ref: triggerRef, children: triggerElement }), jsx("span", { className: clsx("ids-tooltip__content", `ids-tooltip__content--${position}`), ref: tooltipContentRef, role: "tooltip", id: tooltipId, style: { transform: `translate(${translateX}, ${translateY})`, maxWidth }, children: children })] }));
16
20
  }
17
21
  IDSTooltipBase.displayName = "IDSTooltipBase";
18
22
 
@@ -5,17 +5,9 @@ import { IDSTooltipBase } from './tooltip-base.js';
5
5
 
6
6
  function IDSTooltip({ position = "top", maxWidth, trigger, className, ...props }) {
7
7
  const [internalMaxWidth, setInternalMaxWidth] = useState(maxWidth);
8
- const [triggerIsIcon, setTriggerIsIcon] = useState(false);
9
- const [isVisible, setIsVisible] = useState(false);
10
8
  const tooltipContentRef = useRef(null);
11
9
  const triggerRef = useRef(null);
12
10
  const hasUpdatedMaxWidthRef = useRef(false);
13
- const getFirstFocusableContent = () => {
14
- const wrapper = triggerRef.current?.parentElement;
15
- if (!wrapper)
16
- return null;
17
- return wrapper.querySelector('ids-button button, button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');
18
- };
19
11
  const handleXOverflow = () => {
20
12
  const tooltipContent = tooltipContentRef.current;
21
13
  const trigger = triggerRef.current;
@@ -56,15 +48,6 @@ function IDSTooltip({ position = "top", maxWidth, trigger, className, ...props }
56
48
  document.activeElement?.blur();
57
49
  }
58
50
  };
59
- useEffect(() => {
60
- const tooltipContent = tooltipContentRef.current;
61
- if (!tooltipContent)
62
- return;
63
- const focusable = getFirstFocusableContent();
64
- if (focusable) {
65
- setTriggerIsIcon(!!triggerRef.current?.querySelector('[class^="ids-icon-"]'));
66
- }
67
- }, []);
68
51
  useEffect(() => {
69
52
  const tooltipContent = tooltipContentRef.current;
70
53
  if (!tooltipContent)
@@ -94,30 +77,7 @@ function IDSTooltip({ position = "top", maxWidth, trigger, className, ...props }
94
77
  triggerWrapper.removeEventListener("focusin", handleXOverflow);
95
78
  };
96
79
  }, [triggerRef]);
97
- const isTooltipVisible = () => {
98
- const tooltip = tooltipContentRef.current;
99
- if (!tooltip)
100
- return false;
101
- const style = getComputedStyle(tooltip);
102
- return style.visibility !== "hidden" && style.display !== "none" && style.opacity !== "0";
103
- };
104
- useEffect(() => {
105
- const triggerEl = triggerRef.current;
106
- if (!triggerEl)
107
- return;
108
- const updateVisibility = () => setIsVisible(isTooltipVisible());
109
- triggerEl.addEventListener("mouseenter", updateVisibility);
110
- triggerEl.addEventListener("mouseleave", updateVisibility);
111
- triggerEl.addEventListener("focusin", updateVisibility); // <-- replaces focus
112
- triggerEl.addEventListener("focusout", updateVisibility); // <-- replaces blur
113
- return () => {
114
- triggerEl.removeEventListener("mouseenter", updateVisibility);
115
- triggerEl.removeEventListener("mouseleave", updateVisibility);
116
- triggerEl.removeEventListener("focusin", updateVisibility);
117
- triggerEl.removeEventListener("focusout", updateVisibility);
118
- };
119
- }, [triggerRef.current]);
120
- return (jsx(IDSTooltipBase, { ...props, position: position, maxWidth: internalMaxWidth, trigger: trigger, triggerIsIcon: triggerIsIcon, className: className, triggerRef: triggerRef, isHidden: !isVisible, tooltipContentRef: tooltipContentRef }));
80
+ return (jsx(IDSTooltipBase, { ...props, position: position, maxWidth: internalMaxWidth, trigger: trigger, className: className, triggerRef: triggerRef, tooltipContentRef: tooltipContentRef }));
121
81
  }
122
82
  IDSTooltip.displayName = "IDSTooltip";
123
83
 
package/index.d.ts CHANGED
@@ -27,6 +27,7 @@ export * from "./components/form/toggle/toggle";
27
27
  export * from "./components/form/darkmode-toggle/darkmode-toggle";
28
28
  export * from "./components/form/spinner/spinner";
29
29
  export * from "./components/button/button";
30
+ export * from "./components/button/control-button";
30
31
  export * from "./components/button/button-group";
31
32
  export * from "./components/grid/container";
32
33
  export * from "./components/grid/row";
package/index.js CHANGED
@@ -27,6 +27,7 @@ export { IDSToggle } from './components/form/toggle/toggle.js';
27
27
  export { IDSDarkmodeToggle } from './components/form/darkmode-toggle/darkmode-toggle.js';
28
28
  export { IDSSpinner } from './components/form/spinner/spinner.js';
29
29
  export { IDSButton } from './components/button/button.js';
30
+ export { IDSControlButton } from './components/button/control-button.js';
30
31
  export { IDSButtonGroup } from './components/button/button-group.js';
31
32
  export { IDSContainer } from './components/grid/container.js';
32
33
  export { IDSRow } from './components/grid/row.js';
package/package.json CHANGED
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "name": "@inera/ids-react",
3
- "version": "9.2.1",
3
+ "version": "9.3.0",
4
4
  "type": "module",
5
5
  "peerDependencies": {
6
6
  "react": "*",
7
- "react-day-picker": "^9.11.3"
7
+ "react-day-picker": "^9.11.3",
8
+ "react-dom": "*"
8
9
  },
9
10
  "dependencies": {
10
- "@inera/ids-design": "9.2.x",
11
+ "@inera/ids-design": "9.3.x",
11
12
  "clsx": "*"
12
13
  },
13
14
  "types": "index.d.ts",