@autoguru/overdrive 4.45.1 → 4.45.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.
@@ -1,5 +1,4 @@
1
- import * as React from 'react';
2
- import { ElementType, ReactElement, ReactNode } from 'react';
1
+ import React, { type ElementType, type ReactElement, type ReactNode } from 'react';
3
2
  export interface TabProps {
4
3
  children?: ReactNode;
5
4
  id?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/Tab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGN,WAAW,EAGX,YAAY,EACZ,SAAS,EAET,MAAM,OAAO,CAAC;AAWf,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,GAAG,iFAsFf,CAAC;AAIF,eAAe,GAAG,CAAC"}
1
+ {"version":3,"file":"Tab.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/Tab.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAGb,KAAK,WAAW,EAGhB,KAAK,YAAY,EACjB,KAAK,SAAS,EAGd,MAAM,OAAO,CAAC;AAWf,MAAM,WAAW,QAAQ;IACxB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,EAAE,CAAC,EAAE,WAAW,GAAG,YAAY,CAAC;IAChC,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,GAAG,iFAyGf,CAAC;AAIF,eAAe,GAAG,CAAC"}
@@ -2,8 +2,7 @@
2
2
 
3
3
  import { invariant } from '@autoguru/utilities';
4
4
  import clsx from 'clsx';
5
- import * as React from 'react';
6
- import { cloneElement, createElement, forwardRef, isValidElement, useContext } from 'react';
5
+ import React, { cloneElement, createElement, forwardRef, isValidElement, useContext, useCallback } from 'react';
7
6
  import { elementStyles } from "../../styles/index.js";
8
7
  import { textStyles } from "../../styles/typography.js";
9
8
  import { inline } from "../Flex/flex.js";
@@ -26,6 +25,19 @@ export const Tab = /*#__PURE__*/forwardRef(({
26
25
  } = tabsContext;
27
26
  const isActive = tabsContext.activeIndex === tabListContext;
28
27
  const controlsId = typeof incomingId === 'string' ? incomingId : `${tabsContext.id}-${tabListContext}-tab`;
28
+ const setRef = useCallback(el => {
29
+ if (tabListContext != null) {
30
+ var _ref;
31
+ // Register or unregister this tab element in the TabsContext registry
32
+ tabsContext.registerTab(tabListContext, (_ref = el) !== null && _ref !== void 0 ? _ref : null);
33
+ }
34
+ // Forward the ref to consumers
35
+ if (typeof ref === 'function') {
36
+ ref(el);
37
+ } else if (ref && 'current' in ref) {
38
+ ref.current = el;
39
+ }
40
+ }, [tabsContext, tabListContext, ref]);
29
41
  const props = {
30
42
  className: clsx(elementStyles({
31
43
  as: typeof Component === 'string' ? Component : 'button',
@@ -49,7 +61,7 @@ export const Tab = /*#__PURE__*/forwardRef(({
49
61
  var _tabsContext$onChange;
50
62
  return (_tabsContext$onChange = tabsContext.onChange) === null || _tabsContext$onChange === void 0 ? void 0 : _tabsContext$onChange.call(tabsContext, tabListContext);
51
63
  },
52
- ref
64
+ ref: setRef
53
65
  };
54
66
  const child = /*#__PURE__*/_jsxs("div", {
55
67
  className: inline({
@@ -1 +1 @@
1
- {"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAEb,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAYf,MAAM,WAAW,YAAY;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAOD,eAAO,MAAM,cAAc,8BAAqC,CAAC;AAEjE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,YAAY,CA+InD,CAAC"}
1
+ {"version":3,"file":"TabList.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabList.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAEb,KAAK,iBAAiB,EAGtB,KAAK,SAAS,EAMd,MAAM,OAAO,CAAC;AAYf,MAAM,WAAW,YAAY;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AASD,eAAO,MAAM,cAAc,8BAAqC,CAAC;AAEjE,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC,YAAY,CAwLnD,CAAC"}
@@ -16,6 +16,11 @@ const defaultEnglish = {
16
16
  next: 'scroll tabs right',
17
17
  prev: 'scroll tabs left'
18
18
  };
19
+ const handledKeys = new Set(['ArrowRight', 'ArrowLeft', 'Home', 'End']);
20
+ const keyMovement = {
21
+ ArrowRight: 1,
22
+ ArrowLeft: -1
23
+ };
19
24
  export const TabListContext = /*#__PURE__*/createContext(null);
20
25
  export const TabList = ({
21
26
  children,
@@ -35,7 +40,9 @@ export const TabList = ({
35
40
  const tabsContext = useContext(TabsContext);
36
41
  !(tabsContext !== null) ? process.env.NODE_ENV !== "production" ? invariant(false, 'This tablist isnt nested beneath <Tabs />') : invariant(false) : void 0;
37
42
  const {
38
- appearance
43
+ appearance,
44
+ activeIndex,
45
+ onChange
39
46
  } = tabsContext;
40
47
  const [displayScroll, setDisplayScroll] = useState({
41
48
  start: false,
@@ -69,6 +76,34 @@ export const TabList = ({
69
76
  };
70
77
  const handleStartButton = () => scrollToItem(-wrapperRef.current.clientWidth);
71
78
  const handleEndButton = () => scrollToItem(wrapperRef.current.clientWidth);
79
+ const handleKeyDown = useCallback(event => {
80
+ const key = event.key;
81
+ const tabListRef = innerRef.current;
82
+ if (!tabListRef || !handledKeys.has(key)) return;
83
+ event.preventDefault();
84
+ const tabCount = tabsContext.getTabCount();
85
+ if (tabCount === 0) return;
86
+ let nextIndex = activeIndex !== null && activeIndex !== void 0 ? activeIndex : 0;
87
+ if (key in keyMovement) {
88
+ nextIndex = ((activeIndex !== null && activeIndex !== void 0 ? activeIndex : 0) + keyMovement[key] + tabCount) % tabCount;
89
+ } else if (key === 'Home') {
90
+ nextIndex = 0;
91
+ } else if (key === 'End') {
92
+ nextIndex = tabCount - 1;
93
+ }
94
+ if (nextIndex !== activeIndex) {
95
+ onChange === null || onChange === void 0 ? void 0 : onChange(nextIndex);
96
+ // Focus and scroll after the frame to allow DOM updates to flush
97
+ requestAnimationFrame(() => {
98
+ const el = tabsContext.getTab(nextIndex);
99
+ el === null || el === void 0 ? void 0 : el.focus();
100
+ el === null || el === void 0 ? void 0 : el.scrollIntoView({
101
+ block: 'nearest',
102
+ inline: 'nearest'
103
+ });
104
+ });
105
+ }
106
+ }, [activeIndex, onChange, tabsContext]);
72
107
  useEffect(() => {
73
108
  const win = ownerWindow(wrapperRef.current);
74
109
  const handleResize = () => {
@@ -113,6 +148,7 @@ export const TabList = ({
113
148
  width: "full",
114
149
  role: "tablist",
115
150
  "aria-orientation": "horizontal",
151
+ onKeyDown: handleKeyDown,
116
152
  className: textStyles({
117
153
  noWrap: true
118
154
  }),
@@ -1,5 +1,4 @@
1
- import type { FunctionComponent } from 'react';
2
- import { ReactNode } from 'react';
1
+ import { type FunctionComponent, type ReactNode } from 'react';
3
2
  export declare const TabPane: FunctionComponent<{
4
3
  id?: string;
5
4
  children?: ReactNode;
@@ -1 +1 @@
1
- {"version":3,"file":"TabPane.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabPane.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAE/C,OAAO,EAAE,SAAS,EAAc,MAAM,OAAO,CAAC;AAQ9C,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,CA+BA,CAAC"}
1
+ {"version":3,"file":"TabPane.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabPane.tsx"],"names":[],"mappings":"AACA,OAAc,EACb,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAEd,MAAM,OAAO,CAAC;AAQf,eAAO,MAAM,OAAO,EAAE,iBAAiB,CAAC;IACvC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB,CA+BA,CAAC"}
@@ -1,8 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { invariant } from '@autoguru/utilities';
4
- import * as React from 'react';
5
- import { useContext } from 'react';
4
+ import React, { useContext } from 'react';
6
5
  import { Box } from "../Box/Box.js";
7
6
  import * as styles from "./TabPane.css.js";
8
7
  import { TabPanesContext } from "./TabPanes.js";
@@ -1,6 +1,4 @@
1
- import type { ComponentProps, FunctionComponent } from 'react';
2
- import * as React from 'react';
3
- import { ReactNode } from 'react';
1
+ import React, { type ComponentProps, type FunctionComponent, type ReactNode } from 'react';
4
2
  import { Box } from '../Box/Box';
5
3
  interface TabPanesContextValue {
6
4
  paneIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"TabPanes.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabPanes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA2B,SAAS,EAAE,MAAM,OAAO,CAAC;AAG3D,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAIjC,UAAU,oBAAoB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,4CAAmD,CAAC;AAEhF,UAAU,aACT,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;IACxE,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAuBrD,CAAC"}
1
+ {"version":3,"file":"TabPanes.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/TabPanes.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEb,KAAK,cAAc,EAEnB,KAAK,iBAAiB,EACtB,KAAK,SAAS,EACd,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,GAAG,EAAE,MAAM,YAAY,CAAC;AAIjC,UAAU,oBAAoB;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,OAAO,CAAC;CACxB;AAED,eAAO,MAAM,eAAe,4CAAmD,CAAC;AAEhF,UAAU,aACT,SAAQ,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,EAAE,YAAY,GAAG,eAAe,CAAC;IACxE,mDAAmD;IACnD,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CAAC,aAAa,CAuBrD,CAAC"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import * as React from 'react';
4
- import { Children, createContext } from 'react';
3
+ import React, { Children, createContext } from 'react';
5
4
  import flattenChildren from 'react-keyed-flatten-children';
6
5
  import { Box } from "../Box/Box.js";
7
6
  import * as styles from "./TabPanes.css.js";
@@ -1,12 +1,13 @@
1
- import type { FunctionComponent } from 'react';
2
- import * as React from 'react';
3
- import { ReactNode } from 'react';
1
+ import React, { type FunctionComponent, type ReactNode } from 'react';
4
2
  import type { TabAppearance } from './Tab.css';
5
3
  interface TabsContextValue {
6
4
  id?: string;
7
5
  activeIndex: number;
8
6
  appearance: TabAppearance;
9
7
  onChange?: (index: number) => void;
8
+ registerTab: (index: number, el: HTMLElement | null) => void;
9
+ getTab: (index: number) => HTMLElement | undefined;
10
+ getTabCount: () => number;
10
11
  }
11
12
  export declare const TabsContext: React.Context<TabsContextValue | null>;
12
13
  export interface TabsProps {
@@ -1 +1 @@
1
- {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC/C,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAiB,SAAS,EAAW,MAAM,OAAO,CAAC;AAI1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,gBAAgB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,WAAW,wCAA+C,CAAC;AAExE,MAAM,WAAW,SAAS;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,IAAI,EAAE,iBAAiB,CAAC,SAAS,CA6B7C,CAAC"}
1
+ {"version":3,"file":"Tabs.d.ts","sourceRoot":"","sources":["../../../lib/components/Tabs/Tabs.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAEb,KAAK,iBAAiB,EACtB,KAAK,SAAS,EAId,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE/C,UAAU,gBAAgB;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,aAAa,CAAC;IAC1B,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAC;IAC7D,MAAM,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,WAAW,GAAG,SAAS,CAAC;IACnD,WAAW,EAAE,MAAM,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,WAAW,wCAA+C,CAAC;AAExE,MAAM,WAAW,SAAS;IACzB,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,eAAO,MAAM,IAAI,EAAE,iBAAiB,CAAC,SAAS,CAuD7C,CAAC"}
@@ -1,7 +1,6 @@
1
1
  "use strict";
2
2
 
3
- import * as React from 'react';
4
- import { createContext, useMemo } from 'react';
3
+ import React, { createContext, useCallback, useMemo, useRef } from 'react';
5
4
  import { useId, useUncontrolledState } from "../../utils/index.js";
6
5
  import { jsx as _jsx } from "react/jsx-runtime";
7
6
  export const TabsContext = /*#__PURE__*/createContext(null);
@@ -14,13 +13,24 @@ export const Tabs = ({
14
13
  }) => {
15
14
  const [activeState, setActiveState] = useUncontrolledState(active, onChange);
16
15
  const id = useId(incomingId !== null && incomingId !== void 0 ? incomingId : undefined);
16
+
17
+ // Registry for tab DOM elements
18
+ const tabRefs = useRef(new Map());
19
+ const registerTab = useCallback((index, el) => {
20
+ if (el) tabRefs.current.set(index, el);else tabRefs.current.delete(index);
21
+ }, []);
22
+ const getTab = useCallback(index => tabRefs.current.get(index), []);
23
+ const getTabCount = useCallback(() => tabRefs.current.size, []);
17
24
  return /*#__PURE__*/_jsx(TabsContext.Provider, {
18
25
  value: useMemo(() => ({
19
26
  id,
20
27
  activeIndex: activeState,
21
28
  appearance,
22
- onChange: setActiveState
23
- }), [id, activeState, appearance, setActiveState]),
29
+ onChange: setActiveState,
30
+ registerTab,
31
+ getTab,
32
+ getTabCount
33
+ }), [id, activeState, appearance, setActiveState, registerTab, getTab, getTabCount]),
24
34
  children: children
25
35
  });
26
36
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@autoguru/overdrive",
3
- "version": "4.45.1",
3
+ "version": "4.45.2",
4
4
  "description": "Overdrive is a product component library, and design system for AutoGuru.",
5
5
  "types": "dist/index.d.ts",
6
6
  "main": "dist/index.js",
@@ -79,28 +79,28 @@
79
79
  "@babel/preset-react": "7.27.1",
80
80
  "@babel/preset-typescript": "7.27.1",
81
81
  "@babel/runtime-corejs3": "7.28.3",
82
- "@changesets/cli": "2.29.5",
83
- "@chromatic-com/storybook": "4.1.0",
82
+ "@changesets/cli": "2.29.6",
83
+ "@chromatic-com/storybook": "4.1.1",
84
84
  "@internationalized/date": "3.8.2",
85
85
  "@octokit/rest": "22.0.0",
86
86
  "@popperjs/core": "2.11.8",
87
87
  "@react-stately/toggle": "3.8.5",
88
- "@storybook/addon-a11y": "9.1.0",
89
- "@storybook/addon-docs": "9.1.0",
90
- "@storybook/addon-links": "9.1.0",
91
- "@storybook/addon-onboarding": "9.1.0",
92
- "@storybook/addon-vitest": "9.1.0",
93
- "@storybook/react-vite": "9.1.0",
94
- "@testing-library/dom": "^10.4.0",
95
- "@testing-library/jest-dom": "6.7.0",
88
+ "@storybook/addon-a11y": "9.1.3",
89
+ "@storybook/addon-docs": "9.1.3",
90
+ "@storybook/addon-links": "9.1.3",
91
+ "@storybook/addon-onboarding": "9.1.3",
92
+ "@storybook/addon-vitest": "9.1.3",
93
+ "@storybook/react-vite": "9.1.3",
94
+ "@testing-library/dom": "^10.4.1",
95
+ "@testing-library/jest-dom": "6.8.0",
96
96
  "@testing-library/react": "16.3.0",
97
97
  "@testing-library/react-hooks": "8.0.1",
98
98
  "@testing-library/user-event": "14.6.1",
99
- "@types/node": "24.2.1",
100
- "@types/react": "19.1.10",
101
- "@types/react-dom": "19.1.7",
99
+ "@types/node": "24.3.0",
100
+ "@types/react": "19.1.12",
101
+ "@types/react-dom": "19.1.9",
102
102
  "@types/webpack-env": "1.18.8",
103
- "@typescript-eslint/utils": "8.39.1",
103
+ "@typescript-eslint/utils": "8.41.0",
104
104
  "@vanilla-extract/babel-plugin": "1.2.0",
105
105
  "@vanilla-extract/css": "1.17.4",
106
106
  "@vanilla-extract/dynamic": "2.1.5",
@@ -110,29 +110,29 @@
110
110
  "@vanilla-extract/webpack-plugin": "2.3.22",
111
111
  "@vitest/browser": "3.2.4",
112
112
  "@vitest/coverage-v8": "3.2.4",
113
- "@vitest/eslint-plugin": "1.3.4",
113
+ "@vitest/eslint-plugin": "1.3.5",
114
114
  "babel-plugin-add-import-extension": "1.6.0",
115
115
  "babel-plugin-dev-expression": "0.2.3",
116
116
  "babel-plugin-macros": "3.1.0",
117
- "browserslist-config-autoguru": "2.5.0",
118
- "chromatic": "13.1.3",
117
+ "browserslist-config-autoguru": "2.5.1",
118
+ "chromatic": "13.1.4",
119
119
  "clsx": "2.1.1",
120
120
  "colord": "2.9.3",
121
- "concurrently": "9.2.0",
122
- "core-js": "3.45.0",
121
+ "concurrently": "9.2.1",
122
+ "core-js": "3.45.1",
123
123
  "csstype": "3.1.3",
124
124
  "deepmerge": "4.3.1",
125
- "es-toolkit": "1.39.9",
126
- "eslint": "9.33.0",
127
- "eslint-plugin-storybook": "9.1.2",
125
+ "es-toolkit": "1.39.10",
126
+ "eslint": "9.34.0",
127
+ "eslint-plugin-storybook": "9.1.3",
128
128
  "husky": "9.1.7",
129
129
  "intersection-observer": "0.12.2",
130
130
  "jsdom": "26.1.0",
131
131
  "lint-staged": "16.1.5",
132
- "magic-string": "0.30.17",
132
+ "magic-string": "0.30.18",
133
133
  "mini-css-extract-plugin": "2.9.4",
134
134
  "mockdate": "3.0.5",
135
- "playwright": "1.54.2",
135
+ "playwright": "1.55.0",
136
136
  "plop": "4.0.1",
137
137
  "postcss": "8.5.6",
138
138
  "prettier": "3.6.2",
@@ -148,13 +148,13 @@
148
148
  "react-stately": "3.39.0",
149
149
  "react-swipeable": "7.0.2",
150
150
  "rollup-plugin-visualizer": "6.0.3",
151
- "storybook": "9.1.0",
151
+ "storybook": "9.1.3",
152
152
  "storybook-addon-tag-badges": "2.0.2",
153
153
  "typescript": "5.9.2",
154
154
  "url-loader": "4.1.1",
155
- "vite": "7.1.2",
155
+ "vite": "7.1.3",
156
156
  "vitest": "3.2.4",
157
- "webpack": "5.101.2"
157
+ "webpack": "5.101.3"
158
158
  },
159
159
  "peerDependencies": {
160
160
  "@autoguru/icons": ">=1.8.8",
@@ -178,7 +178,7 @@
178
178
  },
179
179
  "volta": {
180
180
  "node": "22.18.0",
181
- "yarn": "4.9.2"
181
+ "yarn": "4.9.4"
182
182
  },
183
- "packageManager": "yarn@4.9.2"
183
+ "packageManager": "yarn@4.9.4"
184
184
  }