@epam/ai-dial-ui-kit 0.4.0-rc.5 → 0.4.0-rc.51

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 (68) hide show
  1. package/dist/dial-ui-kit.cjs.js +28 -28
  2. package/dist/dial-ui-kit.es.js +8941 -7854
  3. package/dist/index.css +2 -2
  4. package/dist/src/components/AutocompleteInput/AutocompleteInputValue.d.ts +2 -0
  5. package/dist/src/components/Breadcrumb/BreadcrumbItem.d.ts +2 -2
  6. package/dist/src/components/Breadcrumb/constants.d.ts +4 -1
  7. package/dist/src/components/Checkbox/Checkbox.d.ts +2 -2
  8. package/dist/src/components/CollapsibleSidebar/CollapsibleSidebar.d.ts +7 -3
  9. package/dist/src/components/FileManager/FileManager.d.ts +47 -14
  10. package/dist/src/components/FileManager/FileManagerContext.d.ts +56 -0
  11. package/dist/src/components/FileManager/FileManagerProvider.d.ts +17 -0
  12. package/dist/src/components/FileManager/components/FileManagerBulkActionsToolbar/FileManagerBulkActionsToolbar.d.ts +53 -0
  13. package/dist/src/components/FileManager/components/FileManagerBulkActionsToolbar/constants.d.ts +3 -0
  14. package/dist/src/components/FileManager/components/FileManagerItemIcon/FileManagerItemIcon.d.ts +46 -0
  15. package/dist/src/components/FileManager/components/FileManagerItemName/FileManagerItemName.d.ts +48 -0
  16. package/dist/src/components/FileManager/components/FileManagerItemNameInput/FileManagerItemNameInput.d.ts +65 -0
  17. package/dist/src/components/FileManager/components/FileManagerToolbar/DialFileManagerToolbar.d.ts +27 -24
  18. package/dist/src/components/FileManager/components/FoldersTree/FoldersTree.d.ts +23 -3
  19. package/dist/src/components/FileManager/constants.d.ts +1 -1
  20. package/dist/src/components/FileManager/hooks/__tests__/use-current-path.spec.d.ts +1 -0
  21. package/dist/src/components/FileManager/hooks/__tests__/use-file-clipboard.spec.d.ts +1 -0
  22. package/dist/src/components/FileManager/hooks/__tests__/use-show-hidden-files.spec.d.ts +1 -0
  23. package/dist/src/components/FileManager/hooks/use-collapse-tree.d.ts +9 -0
  24. package/dist/src/components/FileManager/hooks/use-current-path.d.ts +10 -0
  25. package/dist/src/components/FileManager/hooks/use-file-clipboard.d.ts +20 -0
  26. package/dist/src/components/FileManager/hooks/use-file-manager-context.d.ts +5 -0
  27. package/dist/src/components/FileManager/hooks/use-item-renaming.d.ts +13 -0
  28. package/dist/src/components/FileManager/hooks/use-show-hidden-files.d.ts +5 -0
  29. package/dist/src/components/FileManager/utils.d.ts +1 -0
  30. package/dist/src/components/Grid/Grid.d.ts +9 -1
  31. package/dist/src/components/Grid/comparators/base-column-comparator.spec.d.ts +1 -0
  32. package/dist/src/components/Grid/constants.d.ts +0 -1
  33. package/dist/src/components/Grid/renderers/DateCellRenderer.d.ts +32 -0
  34. package/dist/src/components/Grid/renderers/constants.d.ts +3 -0
  35. package/dist/src/components/Grid/renderers/utils.d.ts +2 -0
  36. package/dist/src/components/Grid/renderers/utils.spec.d.ts +1 -0
  37. package/dist/src/components/Input/Input.d.ts +4 -1
  38. package/dist/src/components/InputPopup/InputPopup.d.ts +6 -2
  39. package/dist/src/components/NoDataContent/NoDataContent.d.ts +3 -0
  40. package/dist/src/components/Search/Search.d.ts +2 -0
  41. package/dist/src/components/Select/MultiSelectTags.d.ts +2 -2
  42. package/dist/src/components/Select/Select.d.ts +7 -0
  43. package/dist/src/components/Select/constants.d.ts +1 -1
  44. package/dist/src/components/SelectField/SelectField.d.ts +5 -0
  45. package/dist/src/components/Steps/tests/utils.spec.d.ts +1 -0
  46. package/dist/src/components/Tab/Tab.d.ts +1 -4
  47. package/dist/src/components/Tabs/Tabs.d.ts +27 -14
  48. package/dist/src/components/Tag/Tag.d.ts +2 -2
  49. package/dist/src/components/Tooltip/Tooltip.d.ts +2 -2
  50. package/dist/src/components/Tooltip/TooltipContent.d.ts +5 -2
  51. package/dist/src/components/Tooltip/TooltipTrigger.d.ts +6 -4
  52. package/dist/src/hooks/use-editable-item.d.ts +64 -0
  53. package/dist/src/hooks/use-flexible-actions.d.ts +86 -0
  54. package/dist/src/hooks/use-is-mobile-screen.d.ts +15 -0
  55. package/dist/src/hooks/use-screen-type.d.ts +19 -0
  56. package/dist/src/index.d.ts +10 -4
  57. package/dist/src/models/dropdown.d.ts +2 -2
  58. package/dist/src/models/select.d.ts +1 -0
  59. package/dist/src/models/tab.d.ts +1 -0
  60. package/dist/src/types/file-manager.d.ts +13 -0
  61. package/dist/src/types/flexible-actions.d.ts +4 -0
  62. package/dist/src/types/item.d.ts +4 -0
  63. package/dist/src/types/screen.d.ts +6 -0
  64. package/dist/src/types/select.d.ts +8 -0
  65. package/dist/src/types/tab.d.ts +4 -0
  66. package/dist/src/utils/merge-classes.spec.d.ts +1 -0
  67. package/dist/src/utils/mobile.d.ts +35 -0
  68. package/package.json +8 -8
@@ -1,10 +1,12 @@
1
- import { HTMLProps } from 'react';
1
+ import { FC, HTMLProps } from 'react';
2
+ interface TooltipTriggerProps extends HTMLProps<HTMLElement> {
3
+ asChild?: boolean;
4
+ }
2
5
  /**
3
6
  * The trigger element for a tooltip that can be clicked or hovered
4
7
  *
5
8
  * @param children - The element that will trigger the tooltip
6
9
  * @param [asChild=false] - Whether to render as a child element instead of wrapping in a span
7
10
  */
8
- export declare const DialTooltipTrigger: import('react').ForwardRefExoticComponent<Omit<HTMLProps<HTMLElement> & {
9
- asChild?: boolean;
10
- }, "ref"> & import('react').RefAttributes<HTMLElement>>;
11
+ export declare const DialTooltipTrigger: FC<TooltipTriggerProps>;
12
+ export {};
@@ -0,0 +1,64 @@
1
+ export interface UseEditableItemOptions {
2
+ value: string;
3
+ isEditing: boolean;
4
+ onValidate?: (value: string) => string | null;
5
+ onSave?: (value: string) => void;
6
+ onCancel?: () => void;
7
+ restoreOnCancel?: boolean;
8
+ }
9
+ interface UseEditableItemResult {
10
+ inputRef: React.RefObject<HTMLInputElement | null>;
11
+ value: string;
12
+ onChange: (newValue?: string) => void;
13
+ invalid: boolean;
14
+ invalidMessage: string;
15
+ }
16
+ /**
17
+ * A React hook that manages the behavior of an inline-editable text input.
18
+ * It provides validation handling, cancel/restore logic, auto-focus behavior,
19
+ * keyboard shortcuts, and outside-click detection.
20
+ *
21
+ * @param {Object} options - Hook configuration options.
22
+ * @param {string} options.value - Initial value for the editable input.
23
+ * @param {boolean} options.isEditing - Whether the item is currently in edit mode.
24
+ * @param {(value: string) => string | null} [options.onValidate] - Optional validation function returning an error message or `null` if valid.
25
+ * @param {(value: string) => void} [options.onSave] - Callback invoked when saving a valid value.
26
+ * @param {() => void} [options.onCancel] - Callback invoked when canceling editing.
27
+ * @param {boolean} [options.restoreOnCancel=true] - Whether to restore the original value on cancel.
28
+ *
29
+ * @returns {Object} An object containing state and handlers for editable input.
30
+ * @returns {React.RefObject<HTMLInputElement>} return.inputRef - Ref to the editable input element.
31
+ * @returns {string} return.value - Current input value.
32
+ * @returns {(newValue?: string) => void} return.onChange - Change handler for the input value.
33
+ * @returns {boolean} return.invalid - Whether the current value is invalid.
34
+ * @returns {string} return.invalidMessage - Validation error message, if any.
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * const {
39
+ * inputRef,
40
+ * value,
41
+ * onChange,
42
+ * invalid,
43
+ * invalidMessage
44
+ * } = useEditableItem({
45
+ * value: 'example.txt',
46
+ * isEditing,
47
+ * onValidate: (v) => v.trim() ? null : 'Name cannot be empty',
48
+ * onSave: (v) => console.log('Saved', v),
49
+ * onCancel: () => console.log('Canceled'),
50
+ * });
51
+ *
52
+ * return (
53
+ * <input
54
+ * ref={inputRef}
55
+ * value={value}
56
+ * onChange={(e) => onChange(e.target.value)}
57
+ * aria-invalid={invalid}
58
+ * />
59
+ * {invalid && <span>{invalidMessage}</span>}
60
+ * );
61
+ * ```
62
+ */
63
+ export declare function useEditableItem({ value: initialValue, isEditing, restoreOnCancel, onValidate, onSave, onCancel, }: UseEditableItemOptions): UseEditableItemResult;
64
+ export {};
@@ -0,0 +1,86 @@
1
+ import { FlexibleActionsDirection } from '../types/flexible-actions';
2
+ interface UseFlexibleActionsOptions<T> {
3
+ actions: T[];
4
+ direction?: FlexibleActionsDirection;
5
+ moreButtonWidth?: number;
6
+ actionsGap?: number;
7
+ containerPadding?: number;
8
+ dependencies?: unknown[];
9
+ }
10
+ /**
11
+ * A responsive layout hook that automatically determines how many action buttons
12
+ * can fit within a container and moves overflowing ones into a hidden list (e.g. a dropdown).
13
+ *
14
+ * It measures each action's width and dynamically recalculates visible and hidden actions
15
+ * whenever the container resizes or dependencies change.
16
+ *
17
+ * This hook is reusable for toolbars or action strips that can have:
18
+ * - a **left fixed section** (e.g., selection info),
19
+ * - a **right fixed section** (e.g., metadata or pagination),
20
+ * - and a **flexible central section** where actions may overflow.
21
+ *
22
+ * @template T - Type of the action item. Each action must have a unique `key` property.
23
+ *
24
+ * @param {Object} options - Hook configuration options.
25
+ * @param {T[]} options.actions - Array of all available actions.
26
+ * @param {FlexibleActionsDirection} [options.direction=FlexibleActionsDirection.Normal] -
27
+ * Defines the fill direction:
28
+ * - `Normal`: Fills actions from left to right.
29
+ * - `Reverse`: Fills actions from right to left (useful when the "More" button is on the right).
30
+ * @param {number} [options.moreButtonWidth=BASE_ICON_SIZE] - Reserved width for the “more” or overflow button.
31
+ * @param {number} [options.actionsGap=8] - Horizontal gap (in pixels) between action buttons.
32
+ * @param {number} [options.containerPadding=8] - Horizontal padding (in pixels) inside the container.
33
+ * @param {unknown[]} [options.dependencies=[]] - Dependency array to trigger recalculation when external layout-affecting
34
+ * values (like screen size or visibility) change.
35
+ *
36
+ * @returns Result object containing the calculated visible and hidden actions and all relevant refs.
37
+ *
38
+ * @property {T[]} visibleActions - Actions that currently fit into the available width.
39
+ * @property {T[]} hiddenActions - Actions that do not fit and should be rendered inside a dropdown.
40
+ *
41
+ * @property {Object} refs - A set of refs used for layout measurement.
42
+ * @property {RefObject<HTMLDivElement>} refs.containerRef - Ref for the outer container. Must wrap the entire toolbar area.
43
+ * @property {RefObject<HTMLDivElement>} refs.measureRef - Ref for a hidden measurement container (used to measure action widths).
44
+ * @property {RefObject<HTMLDivElement>} refs.leftSectionRef - Ref for the left fixed section (optional).
45
+ * @property {RefObject<HTMLDivElement>} refs.rightSectionRef - Ref for the right fixed section (optional).
46
+ *
47
+ * @example
48
+ * // Example usage inside a toolbar component:
49
+ * const { visibleActions, hiddenActions, refs } = useFlexibleActions({
50
+ * actions,
51
+ * direction: FlexibleActionsDirection.Reverse,
52
+ * dependencies: [isMobile],
53
+ * });
54
+ *
55
+ * return (
56
+ * <>
57
+ * <div ref={refs.measureRef} className="invisible absolute top-0 left-0 flex gap-2">
58
+ * {actions.map(a => <ActionButton key={a.key} {...a} />)}
59
+ * </div>
60
+ *
61
+ * <div ref={refs.containerRef} className="flex justify-between items-center">
62
+ * <div ref={refs.leftSectionRef}>Left section</div>
63
+ *
64
+ * <div className="flex gap-2 items-center">
65
+ * {hiddenActions.length > 0 && <MoreMenu items={hiddenActions} />}
66
+ * {visibleActions.map(a => <ActionButton key={a.key} {...a} />)}
67
+ * </div>
68
+ *
69
+ * <div ref={refs.rightSectionRef}>Right section</div>
70
+ * </div>
71
+ * </>
72
+ * );
73
+ */
74
+ export declare function useFlexibleActions<T extends {
75
+ key: string;
76
+ }>({ actions, direction, moreButtonWidth, actionsGap, containerPadding, dependencies, }: UseFlexibleActionsOptions<T>): {
77
+ visibleActions: T[];
78
+ hiddenActions: T[];
79
+ refs: {
80
+ containerRef: import('react').RefObject<HTMLDivElement | null>;
81
+ measureRef: import('react').RefObject<HTMLDivElement | null>;
82
+ leftSectionRef: import('react').RefObject<HTMLDivElement | null>;
83
+ rightSectionRef: import('react').RefObject<HTMLDivElement | null>;
84
+ };
85
+ };
86
+ export {};
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A React hook that determines whether the current window size matches a mobile screen width.
3
+ *
4
+ * It initializes based on the current screen size using `isSmallScreen()` and updates its value
5
+ * whenever the window is resized.
6
+ *
7
+ * @returns {boolean} `true` if the viewport width matches the mobile breakpoint, otherwise `false`.
8
+ *
9
+ * @example
10
+ * const isMobile = useIsMobileScreen();
11
+ * if (isMobile) {
12
+ * console.log('Mobile layout active');
13
+ * }
14
+ */
15
+ export declare const useIsMobileScreen: () => boolean;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * A React hook that determines the current screen type based on the viewport width.
3
+ *
4
+ * It uses `getScreenType()` to categorize the screen as `Desktop`, `Tablet`, or `Mobile`,
5
+ * and automatically updates the value when the window is resized.
6
+ *
7
+ * This hook is useful for implementing responsive layouts that adapt
8
+ * their UI or behavior depending on screen type.
9
+ *
10
+ * @returns {ScreenType} The current screen type (`Desktop`, `Tablet`, `Mobile`, or `Undefined` for SSR).
11
+ *
12
+ * @example
13
+ * const screenType = useScreenType();
14
+ *
15
+ * if (screenType === ScreenType.Desktop) {
16
+ * console.log('Desktop layout active');
17
+ * }
18
+ */
19
+ export declare const useScreenType: () => import('../types/screen').ScreenType;
@@ -18,8 +18,8 @@ export { DialFormItem } from './components/FormItem/FormItem';
18
18
  export { DialSharedEntityIndicator } from './components/SharedEntityIndicator/SharedEntityIndicator';
19
19
  export { DialFileName } from './components/FileName/FileName';
20
20
  export { DialFolderName } from './components/FolderName/FolderName';
21
+ export { DialDateCellRenderer } from './components/Grid/renderers/DateCellRenderer';
21
22
  export { DialTabs } from './components/Tabs/Tabs';
22
- export { DialTab } from './components/Tab/Tab';
23
23
  export { DialBreadcrumb } from './components/Breadcrumb/Breadcrumb';
24
24
  export { DialBreadcrumbItem } from './components/Breadcrumb/BreadcrumbItem';
25
25
  export { DialButton } from './components/Button/Button';
@@ -56,14 +56,20 @@ export { ButtonVariant } from './types/button';
56
56
  export { RadioGroupOrientation } from './types/radio-group';
57
57
  export { PopupSize } from './types/popup';
58
58
  export { ConfirmationPopupVariant } from './types/confirmation-popup';
59
- export { DropdownType } from './types/dropdown';
59
+ export { DropdownType, DropdownTrigger, DropdownItemType, } from './types/dropdown';
60
60
  export { SearchSize } from './types/search';
61
61
  export { TagVariant } from './types/tag';
62
62
  export { TabOrientation } from './types/tab';
63
63
  export type { DialBreadcrumbPathItem } from './models/breadcrumb';
64
64
  export { FormItemOrientation } from './types/form-item';
65
- export { DialFileManagerTabs } from './types/file-manager';
65
+ export { SelectSize, SelectVariant } from './types/select';
66
+ export { DialFileManagerTabs, DialFileManagerActions, type DialCopiedItem, } from './types/file-manager';
67
+ export { FlexibleActionsDirection } from './types/flexible-actions';
68
+ export { DialItemType } from './types/item';
66
69
  export { useDialFileManagerTabs } from './components/FileManager/hooks/use-file-manager-tabs';
70
+ export { useEditableItem } from './hooks/use-editable-item';
71
+ export { FileManagerProvider } from './components/FileManager/FileManagerProvider';
72
+ export { useFileManagerContext } from './components/FileManager/hooks/use-file-manager-context';
67
73
  export { StepStatus } from './models/step';
68
74
  export type { Step } from './models/step';
69
75
  export type { RadioButtonWithContent } from './models/radio';
@@ -72,5 +78,5 @@ export type { TabModel } from './models/tab';
72
78
  export type { DropdownItem } from './models/dropdown';
73
79
  export type { DialModifiedEntity } from './models/base-entity';
74
80
  export type { DialFile } from './models/file';
75
- export type { DialFileNodeType, DialFilePermission, DialFileResourceType, } from './models/file';
81
+ export { DialFileNodeType, DialFilePermission, DialFileResourceType, } from './models/file';
76
82
  export { mergeClasses } from './utils/merge-classes';
@@ -1,5 +1,5 @@
1
1
  import { DropdownItemType } from '../types/dropdown';
2
- import { ReactNode } from 'react';
2
+ import { ReactNode, MouseEvent } from 'react';
3
3
  export interface DropdownItem {
4
4
  key: string;
5
5
  label?: ReactNode;
@@ -9,6 +9,6 @@ export interface DropdownItem {
9
9
  type?: DropdownItemType;
10
10
  onClick?: (info: {
11
11
  key: string;
12
- domEvent: React.MouseEvent<Element, MouseEvent>;
12
+ domEvent: MouseEvent<Element, MouseEvent>;
13
13
  }) => void;
14
14
  }
@@ -2,6 +2,7 @@ import { ReactNode } from 'react';
2
2
  export interface SelectOption {
3
3
  value: string;
4
4
  label: string;
5
+ description?: string;
5
6
  disabled?: boolean;
6
7
  icon?: ReactNode;
7
8
  }
@@ -2,4 +2,5 @@ export interface TabModel {
2
2
  id: string;
3
3
  name: string;
4
4
  invalid?: boolean;
5
+ disabled?: boolean;
5
6
  }
@@ -1,5 +1,18 @@
1
+ import { DialFileNodeType } from '../models/file';
1
2
  export declare enum DialFileManagerTabs {
2
3
  MyFiles = "my_files",
3
4
  Shared = "shared",
4
5
  Organization = "organization"
5
6
  }
7
+ export declare enum DialFileManagerActions {
8
+ Copy = "copy",
9
+ Cut = "cut",
10
+ Paste = "paste",
11
+ Rename = "rename"
12
+ }
13
+ export interface DialCopiedItem {
14
+ sourceUrl: string;
15
+ destinationUrl: string;
16
+ overwrite?: boolean;
17
+ nodeType: DialFileNodeType;
18
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum FlexibleActionsDirection {
2
+ Normal = "normal",
3
+ Reverse = "reverse"
4
+ }
@@ -0,0 +1,4 @@
1
+ export declare enum DialItemType {
2
+ File = "file",
3
+ Folder = "folder"
4
+ }
@@ -0,0 +1,6 @@
1
+ export declare enum ScreenType {
2
+ Undefined = "undefined",
3
+ Mobile = "mobile",
4
+ Tablet = "tablet",
5
+ Desktop = "desktop"
6
+ }
@@ -0,0 +1,8 @@
1
+ export declare enum SelectSize {
2
+ Sm = "sm",
3
+ Md = "md"
4
+ }
5
+ export declare enum SelectVariant {
6
+ Primary = "Primary",
7
+ Secondary = "Secondary"
8
+ }
@@ -2,3 +2,7 @@ export declare enum TabOrientation {
2
2
  Horizontal = "horizontal",
3
3
  Vertical = "vertical"
4
4
  }
5
+ export declare enum SmallScreenThreshold {
6
+ Mobile = "mobile",
7
+ Tablet = "tablet"
8
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -1,3 +1,4 @@
1
+ import { ScreenType } from '../types/screen';
1
2
  /**
2
3
  * Checks if the current viewport width is within the "medium" (tablet) screen range.
3
4
  *
@@ -12,3 +13,37 @@
12
13
  * }
13
14
  */
14
15
  export declare const isMediumScreen: () => boolean;
16
+ /**
17
+ * Checks if the current viewport width is within the "small" (mobile) screen range.
18
+ *
19
+ * Specifically, it returns `true` if the window width is less than 640 pixels.
20
+ * Safely handles server-side rendering by verifying that `window` is defined.
21
+ *
22
+ * @returns {boolean} `true` if the viewport width is less than 640px, otherwise `false`.
23
+ *
24
+ * @example
25
+ * if (isSmallScreen()) {
26
+ * console.log('Mobile screen detected');
27
+ * }
28
+ */
29
+ export declare const isSmallScreen: () => boolean;
30
+ /**
31
+ * Determines the current screen type based on the viewport width.
32
+ *
33
+ * Categorizes the screen into one of three types defined by `ScreenType`:
34
+ * - `ScreenType.Desktop` for widths **≥ 1024px**
35
+ * - `ScreenType.Tablet` for widths **between 640px and 1023px**
36
+ * - `ScreenType.Mobile` for widths **< 640px**
37
+ *
38
+ * If executed in a non-browser environment (where `window` is undefined),
39
+ * it returns `ScreenType.Undefined`.
40
+ *
41
+ * @returns {ScreenType} The detected screen type (`Desktop`, `Tablet`, `Mobile`, or `Undefined`).
42
+ *
43
+ * @example
44
+ * const screenType = getScreenType();
45
+ * if (screenType === ScreenType.Mobile) {
46
+ * console.log('Mobile layout activated');
47
+ * }
48
+ */
49
+ export declare const getScreenType: () => ScreenType;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epam/ai-dial-ui-kit",
3
- "version": "0.4.0-rc.5",
3
+ "version": "0.4.0-rc.51",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "description": "A modern UI kit for building AI DIAL interfaces with React",
@@ -77,10 +77,10 @@
77
77
  "@eslint/compat": "^1.3.1",
78
78
  "@eslint/eslintrc": "^3.3.1",
79
79
  "@eslint/js": "^9.31.0",
80
- "@storybook/addon-a11y": "^9.1.13",
81
- "@storybook/addon-docs": "^9.1.13",
82
- "@storybook/addon-vitest": "^9.1.13",
83
- "@storybook/react-vite": "^9.1.13",
80
+ "@storybook/addon-a11y": "^10.0.0",
81
+ "@storybook/addon-docs": "^10.0.0",
82
+ "@storybook/addon-vitest": "^10.0.0",
83
+ "@storybook/react-vite": "^10.0.0",
84
84
  "@testing-library/dom": "^10.4.0",
85
85
  "@testing-library/react": "^16.3.0",
86
86
  "@types/jsdom": "^21.1.7",
@@ -99,7 +99,7 @@
99
99
  "eslint-plugin-react": "7.37.5",
100
100
  "eslint-plugin-react-hooks": "^5.2.0",
101
101
  "eslint-plugin-react-refresh": "^0.4.20",
102
- "eslint-plugin-storybook": "^9.1.13",
102
+ "eslint-plugin-storybook": "^10.0.0",
103
103
  "eslint-plugin-tailwindcss": "^3.18.2",
104
104
  "globals": "^16.3.0",
105
105
  "husky": "^9.1.7",
@@ -110,8 +110,8 @@
110
110
  "prettier": "3.6.2",
111
111
  "sass": "^1.89.2",
112
112
  "sass-embedded": "^1.89.2",
113
- "storybook": "^9.1.13",
114
- "storybook-addon-pseudo-states": "^9.1.13",
113
+ "storybook": "^10.0.0",
114
+ "storybook-addon-pseudo-states": "^10.0.0",
115
115
  "tailwindcss": "^3.4.17",
116
116
  "typescript": "~5.8.3",
117
117
  "typescript-eslint": "^8.35.1",