@itcase/ui 1.3.20 → 1.3.21

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.
@@ -0,0 +1,60 @@
1
+ 'use strict';
2
+
3
+ var jsxRuntime = require('react/jsx-runtime');
4
+ var React = require('react');
5
+ var clsx = require('clsx');
6
+ var UIContext = require('../context/UIContext.js');
7
+ var useDeviceTargetClassGenerator = require('../hooks/useDeviceTargetClassGenerator.js');
8
+ var useStyles = require('../hooks/useStyles.js');
9
+ require('../hooks/useMediaQueries.js');
10
+ require('react-responsive');
11
+ require('../../tslib.es6-CCZ3TN_7.js');
12
+ require('lodash/camelCase');
13
+ require('lodash/castArray');
14
+ require('lodash/maxBy');
15
+ require('lodash/upperFirst');
16
+ require('../hooks/styleAttributes.js');
17
+
18
+ var heroTitleAppearance = {
19
+ dev: {
20
+ textColor: 'surfaceTextPrimary',
21
+ },
22
+ };
23
+
24
+ var heroTitleConfig = {
25
+ appearance: heroTitleAppearance,
26
+ setAppearance: function (newComponent) {
27
+ heroTitleConfig.appearance = newComponent;
28
+ },
29
+ };
30
+ function HeroTitle(props) {
31
+ var children = props.children, after = props.after, afterWrapper = props.afterWrapper, appearance = props.appearance, before = props.before, beforeWrapper = props.beforeWrapper, className = props.className, dataTour = props.dataTour, mode = props.mode, _a = props.size, size = _a === undefined ? 'h3' : _a, sizeDesktop = props.sizeDesktop, sizeMobile = props.sizeMobile, sizeTablet = props.sizeTablet, _b = props.tag, tag = _b === undefined ? 'span' : _b, text = props.text, textWrap = props.textWrap, onClick = props.onClick;
32
+ var _c = UIContext.useUserDeviceContext(), isMobile = _c.isMobile, isTablet = _c.isTablet, isDesktop = _c.isDesktop;
33
+ // @ts-expect-error
34
+ var appearanceConfig = heroTitleConfig.appearance && heroTitleConfig.appearance[appearance];
35
+ var classGenerator = useDeviceTargetClassGenerator.useDeviceTargetClassGenerator(props, appearanceConfig);
36
+ var directionClass = classGenerator.directionClass, fillClass = classGenerator.fillClass, heightClass = classGenerator.heightClass, svgFillClass = classGenerator.svgFillClass, svgFillHoverClass = classGenerator.svgFillHoverClass, textAlignClass = classGenerator.textAlignClass, textColorActiveClass = classGenerator.textColorActiveClass, textColorClass = classGenerator.textColorClass, textColorGradientClass = classGenerator.textColorGradientClass, textColorHoverClass = classGenerator.textColorHoverClass, textStyleClass = classGenerator.textStyleClass, textTruncateClass = classGenerator.textTruncateClass, textWeightClass = classGenerator.textWeightClass, typeClass = classGenerator.typeClass, widthClass = classGenerator.widthClass, wrapperDirectionClass = classGenerator.wrapperDirectionClass;
37
+ // @ts-expect-error
38
+ var _d = useStyles.useStyles(props), heroTitleStyles = _d.styles, heroTitleWrapperStyles = _d.wrapper;
39
+ // Element type (h1, h2, ..., h6)
40
+ var Tag = React.useMemo(function () {
41
+ if (tag) {
42
+ return tag;
43
+ }
44
+ if (isMobile && sizeMobile) {
45
+ return sizeMobile;
46
+ }
47
+ if (isTablet && sizeTablet) {
48
+ return sizeTablet;
49
+ }
50
+ if (isDesktop && sizeDesktop) {
51
+ return sizeDesktop;
52
+ }
53
+ return size ? size : 'span';
54
+ }, [isMobile, isTablet, isDesktop]);
55
+ return (jsxRuntime.jsxs(Tag, { className: clsx(className, 'heroTitle', fillClass && "fill_".concat(fillClass), svgFillClass && "svg_fill_".concat(svgFillClass), svgFillHoverClass && "svg_fill_hover_".concat(svgFillHoverClass), widthClass && "width_".concat(widthClass), heightClass && "height_".concat(heightClass), size && "hero-title_size_".concat(size), mode && "hero-title_mode_".concat(mode), directionClass && "hero-title_direction_".concat(directionClass), 'text', textColorClass && "text-color_".concat(textColorClass), textColorActiveClass && "text-color_active_".concat(textColorActiveClass), textColorHoverClass && "text-color_hover_".concat(textColorHoverClass), typeClass && "hero-title_type_".concat(typeClass), textColorGradientClass && "text-gradient_".concat(textColorGradientClass), textStyleClass && "text-style_".concat(textStyleClass), textWeightClass && "text-weight_".concat(textWeightClass), textWrap && "word-wrap_".concat(textWrap)), "data-tour": dataTour, style: heroTitleStyles, onClick: onClick, children: [before, jsxRuntime.jsxs("span", { className: clsx(textAlignClass && "text-align_".concat(textAlignClass), wrapperDirectionClass && "hero-title-direction_".concat(wrapperDirectionClass), 'hero-title__wrapper', textTruncateClass && "text-truncate_".concat(textTruncateClass)), style: heroTitleWrapperStyles, children: [beforeWrapper, children || text, afterWrapper] }), after] }));
56
+ }
57
+
58
+ exports.HeroTitle = HeroTitle;
59
+ exports.heroTitleAppearance = heroTitleAppearance;
60
+ exports.heroTitleConfig = heroTitleConfig;
@@ -0,0 +1,56 @@
1
+ import { jsxs } from 'react/jsx-runtime';
2
+ import { useMemo } from 'react';
3
+ import clsx from 'clsx';
4
+ import { useUserDeviceContext } from '../context/UIContext.js';
5
+ import { useDeviceTargetClassGenerator } from '../hooks/useDeviceTargetClassGenerator.js';
6
+ import { useStyles } from '../hooks/useStyles.js';
7
+ import '../hooks/useMediaQueries.js';
8
+ import 'react-responsive';
9
+ import '../tslib.es6-5FtW-kfi.js';
10
+ import 'lodash/camelCase';
11
+ import 'lodash/castArray';
12
+ import 'lodash/maxBy';
13
+ import 'lodash/upperFirst';
14
+ import '../hooks/styleAttributes.js';
15
+
16
+ var heroTitleAppearance = {
17
+ dev: {
18
+ textColor: 'surfaceTextPrimary',
19
+ },
20
+ };
21
+
22
+ var heroTitleConfig = {
23
+ appearance: heroTitleAppearance,
24
+ setAppearance: function (newComponent) {
25
+ heroTitleConfig.appearance = newComponent;
26
+ },
27
+ };
28
+ function HeroTitle(props) {
29
+ var children = props.children, after = props.after, afterWrapper = props.afterWrapper, appearance = props.appearance, before = props.before, beforeWrapper = props.beforeWrapper, className = props.className, dataTour = props.dataTour, mode = props.mode, _a = props.size, size = _a === undefined ? 'h3' : _a, sizeDesktop = props.sizeDesktop, sizeMobile = props.sizeMobile, sizeTablet = props.sizeTablet, _b = props.tag, tag = _b === undefined ? 'span' : _b, text = props.text, textWrap = props.textWrap, onClick = props.onClick;
30
+ var _c = useUserDeviceContext(), isMobile = _c.isMobile, isTablet = _c.isTablet, isDesktop = _c.isDesktop;
31
+ // @ts-expect-error
32
+ var appearanceConfig = heroTitleConfig.appearance && heroTitleConfig.appearance[appearance];
33
+ var classGenerator = useDeviceTargetClassGenerator(props, appearanceConfig);
34
+ var directionClass = classGenerator.directionClass, fillClass = classGenerator.fillClass, heightClass = classGenerator.heightClass, svgFillClass = classGenerator.svgFillClass, svgFillHoverClass = classGenerator.svgFillHoverClass, textAlignClass = classGenerator.textAlignClass, textColorActiveClass = classGenerator.textColorActiveClass, textColorClass = classGenerator.textColorClass, textColorGradientClass = classGenerator.textColorGradientClass, textColorHoverClass = classGenerator.textColorHoverClass, textStyleClass = classGenerator.textStyleClass, textTruncateClass = classGenerator.textTruncateClass, textWeightClass = classGenerator.textWeightClass, typeClass = classGenerator.typeClass, widthClass = classGenerator.widthClass, wrapperDirectionClass = classGenerator.wrapperDirectionClass;
35
+ // @ts-expect-error
36
+ var _d = useStyles(props), heroTitleStyles = _d.styles, heroTitleWrapperStyles = _d.wrapper;
37
+ // Element type (h1, h2, ..., h6)
38
+ var Tag = useMemo(function () {
39
+ if (tag) {
40
+ return tag;
41
+ }
42
+ if (isMobile && sizeMobile) {
43
+ return sizeMobile;
44
+ }
45
+ if (isTablet && sizeTablet) {
46
+ return sizeTablet;
47
+ }
48
+ if (isDesktop && sizeDesktop) {
49
+ return sizeDesktop;
50
+ }
51
+ return size ? size : 'span';
52
+ }, [isMobile, isTablet, isDesktop]);
53
+ return (jsxs(Tag, { className: clsx(className, 'heroTitle', fillClass && "fill_".concat(fillClass), svgFillClass && "svg_fill_".concat(svgFillClass), svgFillHoverClass && "svg_fill_hover_".concat(svgFillHoverClass), widthClass && "width_".concat(widthClass), heightClass && "height_".concat(heightClass), size && "hero-title_size_".concat(size), mode && "hero-title_mode_".concat(mode), directionClass && "hero-title_direction_".concat(directionClass), 'text', textColorClass && "text-color_".concat(textColorClass), textColorActiveClass && "text-color_active_".concat(textColorActiveClass), textColorHoverClass && "text-color_hover_".concat(textColorHoverClass), typeClass && "hero-title_type_".concat(typeClass), textColorGradientClass && "text-gradient_".concat(textColorGradientClass), textStyleClass && "text-style_".concat(textStyleClass), textWeightClass && "text-weight_".concat(textWeightClass), textWrap && "word-wrap_".concat(textWrap)), "data-tour": dataTour, style: heroTitleStyles, onClick: onClick, children: [before, jsxs("span", { className: clsx(textAlignClass && "text-align_".concat(textAlignClass), wrapperDirectionClass && "hero-title-direction_".concat(wrapperDirectionClass), 'hero-title__wrapper', textTruncateClass && "text-truncate_".concat(textTruncateClass)), style: heroTitleWrapperStyles, children: [beforeWrapper, children || text, afterWrapper] }), after] }));
54
+ }
55
+
56
+ export { HeroTitle, heroTitleAppearance, heroTitleConfig };
@@ -0,0 +1,59 @@
1
+ .hero-title {
2
+ &__wrapper {
3
+ display: inline-block;
4
+ }
5
+ }
6
+ .hero-title {
7
+ &&_mode {
8
+ &_skeleton {
9
+ color: transparent;
10
+ background-image: linear-gradient(
11
+ 90deg,
12
+ var(--color-surface-secondary),
13
+ var(--color-surface-tertiary),
14
+ var(--color-surface-secondary)
15
+ );
16
+ background-size: 200%;
17
+ border-radius: 6px;
18
+ animation: hero-title-skeleton 3s infinite linear;
19
+ }
20
+ }
21
+ }
22
+ @keyframes hero-title-skeleton {
23
+ 0% {
24
+ background-position: 200%;
25
+ }
26
+ 100% {
27
+ background-position: -200%;
28
+ }
29
+ }
30
+ .hero-title_size {
31
+ @each $size in h1, h2, h3, h4, h5, h6 {
32
+ &_$(size) {
33
+ padding: 0;
34
+ margin: 0;
35
+ @mixin hero_$(size);
36
+ }
37
+ }
38
+ }
39
+ .hero-title {
40
+ &&_type {
41
+ @each $type in accent, primary, secondary, tertiary, surface, success, error {
42
+ &_$(type) {
43
+ color: var(--color-$(type)-text-$(type));
44
+ }
45
+ }
46
+ }
47
+ }
48
+ .hero-title_direction {
49
+ &_horizontal {
50
+ display: flex;
51
+ flex-direction: row;
52
+ align-items: flex-start;
53
+ }
54
+ &_vertical {
55
+ display: flex;
56
+ flex-direction: column;
57
+ align-items: flex-start;
58
+ }
59
+ }
@@ -40,6 +40,48 @@
40
40
  var(--typography-h6-font, system-ui);
41
41
  }
42
42
 
43
+ @define-mixin hero_h1 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
44
+ @mixin font $weight, var(--typography-hero1-min, 32px), var(--typography-hero1-max, 38px),
45
+ $minLetterSpacing, var(--typography-hero1-min-line-height, 64px),
46
+ var(--typography-hero1-max-line-height, 80px), $maxLetterSpacing,
47
+ var(--typography-hero1-font, system-ui);
48
+ }
49
+
50
+ @define-mixin hero_h2 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
51
+ @mixin font $weight, var(--typography-hero2-min, 26px), var(--typography-hero2-max, 32px),
52
+ $minLetterSpacing, var(--typography-hero2-min-line-height, 46px),
53
+ var(--typography-hero2-max-line-height, 58px), $maxLetterSpacing,
54
+ var(--typography-hero2-font, system-ui);
55
+ }
56
+
57
+ @define-mixin hero_h3 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
58
+ @mixin font $weight, var(--typography-hero3-min, 18px), var(--typography-hero3-max, 24px),
59
+ $minLetterSpacing, var(--typography-hero3-min-line-height, 32px),
60
+ var(--typography-hero3-max-line-height, 40px), $maxLetterSpacing,
61
+ var(--typography-hero3-font, system-ui);
62
+ }
63
+
64
+ @define-mixin hero_h4 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
65
+ @mixin font $weight, var(--typography-hero4-min, 16px), var(--typography-hero4-max, 18px),
66
+ $minLetterSpacing, var(--typography-hero4-min-line-height, 24px),
67
+ var(--typography-hero4-max-line-height, 30px), $maxLetterSpacing,
68
+ var(--typography-hero4-font, system-ui);
69
+ }
70
+
71
+ @define-mixin hero_h5 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
72
+ @mixin font $weight, var(--typography-hero5-min, 14px), var(--typography-hero5-max, 16px),
73
+ $minLetterSpacing, var(--typography-hero5-min-line-height, 18px),
74
+ var(--typography-hero5-max-line-height, 26px), $maxLetterSpacing,
75
+ var(--typography-hero5-font, system-ui);
76
+ }
77
+
78
+ @define-mixin h6 $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
79
+ @mixin font $weight, var(--typography-hero6-min, 12px), var(--typography-hero6-max, 18px),
80
+ $minLetterSpacing, var(--typography-hero6-min-line-height, 16px),
81
+ var(--typography-hero6-max-line-height, 24px), $maxLetterSpacing,
82
+ var(--typography-hero6-font, system-ui);
83
+ }
84
+
43
85
  @define-mixin p $weight: normal, $minLetterSpacing: 0, $maxLetterSpacing: 0 {
44
86
  @mixin font $weight, var(--typography-p-min, 16px), var(--typography-p-max, 24px),
45
87
  $minLetterSpacing, var(--typography-p-min-line-height, 24px),
@@ -0,0 +1,31 @@
1
+ import { Canvas, Meta } from '@storybook/blocks'
2
+
3
+ import * as HeroTitleStories from './HeroTitle.stories.tsx'
4
+
5
+ <Meta of={HeroTitleStories} />
6
+
7
+ # Size
8
+
9
+ ## SizeH1
10
+
11
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH1} />
12
+
13
+ ## SizeH2
14
+
15
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH2} />
16
+
17
+ ## SizeH3
18
+
19
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH3} />
20
+
21
+ ## SizeH4
22
+
23
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH4} />
24
+
25
+ ## SizeH5
26
+
27
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH5} />
28
+
29
+ ## SizeH6
30
+
31
+ <Canvas sourceState="shown" of={HeroTitleStories.SizeH6} />
@@ -0,0 +1,2 @@
1
+ import { tAppearance } from './HeroTitle.interface';
2
+ export declare const heroTitleAppearance: tAppearance;
@@ -0,0 +1,4 @@
1
+ import type { iHeroTitleConfig, iHeroTitleProps } from './HeroTitle.interface';
2
+ declare const heroTitleConfig: iHeroTitleConfig;
3
+ declare function HeroTitle(props: iHeroTitleProps): import("react/jsx-runtime").JSX.Element;
4
+ export { HeroTitle, heroTitleConfig };
@@ -0,0 +1,53 @@
1
+ import { CSSProperties, ElementType, ReactNode } from 'react';
2
+ import { tFillProps, tSvgFillProps, tTextAlignProps, tTextColorActiveProps, tTextColorHoverProps, tTextColorProps, tTextGradientProps, tTextStyleProps, tTextWeightProps, tTextWrapProps, tHeroTitleSizeProps } from 'types';
3
+ import { tAppearanceKeysDefault } from 'types/componentProps/appearanceKeys';
4
+ import { iStyleAttributes } from '../../hooks/styleAttributes.interface';
5
+ interface iHeroTitleThemeColor {
6
+ [key: number | string | symbol]: any;
7
+ fill?: tFillProps;
8
+ size?: tHeroTitleSizeProps;
9
+ sizeDesktop?: tHeroTitleSizeProps;
10
+ sizeMobile?: tHeroTitleSizeProps;
11
+ sizeTablet?: tHeroTitleSizeProps;
12
+ svgFill?: tSvgFillProps;
13
+ svgFillHover?: tSvgFillProps;
14
+ textColor?: tTextColorProps;
15
+ textColorActive?: tTextColorActiveProps;
16
+ textColorHover?: tTextColorHoverProps;
17
+ textGradient?: tTextGradientProps;
18
+ textStyle?: tTextStyleProps;
19
+ textWeight?: tTextWeightProps;
20
+ textWrap?: tTextWrapProps;
21
+ weight?: tTextWeightProps;
22
+ }
23
+ type tAppearanceKeys = tAppearanceKeysDefault & {};
24
+ export type tAppearance = {
25
+ [key in tAppearanceKeys]: iHeroTitleThemeColor;
26
+ };
27
+ export interface iHeroTitleConfig {
28
+ [key: number | string | symbol]: any;
29
+ appearance: tAppearance | undefined;
30
+ setAppearance: (newComponent: tAppearance) => void;
31
+ }
32
+ export interface iHeroTitleProps extends iHeroTitleThemeColor, iStyleAttributes {
33
+ [key: number | string | symbol]: any;
34
+ after?: any;
35
+ afterWrapper?: any;
36
+ appearance?: tAppearanceKeys;
37
+ before?: any;
38
+ beforeWrapper?: any;
39
+ children: ReactNode;
40
+ className?: string;
41
+ dataTour?: string;
42
+ direction?: string;
43
+ directionWrapper?: string;
44
+ mode?: string;
45
+ style?: CSSProperties;
46
+ tag?: ElementType;
47
+ text?: string;
48
+ textAlign?: tTextAlignProps;
49
+ textTruncate?: string;
50
+ type?: string;
51
+ onClick?: () => void;
52
+ }
53
+ export {};
@@ -0,0 +1,2 @@
1
+ export { HeroTitle, heroTitleConfig } from './HeroTitle';
2
+ export { heroTitleAppearance } from './HeroTitle.appearance';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@itcase/ui",
3
- "version": "1.3.20",
3
+ "version": "1.3.21",
4
4
  "description": "UI components (Modal, Loader, Popup, etc)",
5
5
  "keywords": [
6
6
  "Modal",
@@ -87,10 +87,10 @@
87
87
  "dependencies": {
88
88
  "@emotion/is-prop-valid": "^1.3.1",
89
89
  "@itcase/common": "^1.2.17",
90
- "@itcase/icons": "^1.0.18",
90
+ "@itcase/icons": "^1.0.19",
91
91
  "clsx": "^2.1.1",
92
92
  "date-fns": "^4.1.0",
93
- "framer-motion": "^12.0.5",
93
+ "framer-motion": "^12.0.6",
94
94
  "js-cookie": "^3.0.5",
95
95
  "lodash": "^4.17.21",
96
96
  "rc-slider": "^11.1.8",
@@ -103,7 +103,7 @@
103
103
  "react-modal-sheet": "^4.0.1",
104
104
  "react-modern-drawer": "^1.4.0",
105
105
  "react-otp-input": "^3.1.1",
106
- "react-paginate": "^8.2.0",
106
+ "react-paginate": "^8.3.0",
107
107
  "react-responsive": "^10.0.0",
108
108
  "react-scroll": "^1.9.0",
109
109
  "react-scrollbars-custom": "^4.1.1",
@@ -119,7 +119,7 @@
119
119
  "@babel/preset-react": "^7.26.3",
120
120
  "@commitlint/cli": "^19.6.1",
121
121
  "@commitlint/config-conventional": "^19.6.0",
122
- "@itcase/icons": "^1.0.18",
122
+ "@itcase/icons": "^1.0.19",
123
123
  "@itcase/lint": "^1.0.36",
124
124
  "@lehoczky/postcss-fluid": "^1.0.3",
125
125
  "@rollup/plugin-babel": "^6.0.4",
@@ -132,16 +132,16 @@
132
132
  "@semantic-release/changelog": "^6.0.3",
133
133
  "@semantic-release/git": "^10.0.1",
134
134
  "@semantic-release/release-notes-generator": "14.0.3",
135
- "@storybook/addon-essentials": "^8.5.1",
136
- "@storybook/addon-interactions": "^8.5.1",
135
+ "@storybook/addon-essentials": "^8.5.2",
136
+ "@storybook/addon-interactions": "^8.5.2",
137
137
  "@storybook/addon-styling-webpack": "^1.0.1",
138
- "@storybook/addon-themes": "^8.5.1",
138
+ "@storybook/addon-themes": "^8.5.2",
139
139
  "@storybook/addon-webpack5-compiler-swc": "^2.0.0",
140
- "@storybook/blocks": "^8.5.1",
141
- "@storybook/react": "^8.5.1",
142
- "@storybook/react-webpack5": "^8.5.1",
140
+ "@storybook/blocks": "^8.5.2",
141
+ "@storybook/react": "^8.5.2",
142
+ "@storybook/react-webpack5": "^8.5.2",
143
143
  "@types/js-cookie": "^3.0.6",
144
- "@types/lodash": "^4.17.14",
144
+ "@types/lodash": "^4.17.15",
145
145
  "@types/react": "^19",
146
146
  "@types/react-datepicker": "^7.0.0",
147
147
  "@types/react-dom": "^19.0.2",
@@ -155,7 +155,7 @@
155
155
  "eslint": "9.19.0",
156
156
  "husky": "^9.1.7",
157
157
  "lint-staged": "^15.4.3",
158
- "npm": "^11.0.0",
158
+ "npm": "^11.1.0",
159
159
  "postcss": "^8.5.1",
160
160
  "postcss-aspect-ratio-polyfill": "^2.0.0",
161
161
  "postcss-cli": "^11.0.0",
@@ -178,14 +178,14 @@
178
178
  "postcss-pxtorem": "^6.1.0",
179
179
  "postcss-sort-media-queries": "^5.2.0",
180
180
  "prettier": "^3.4.2",
181
- "rollup": "^4.32.0",
181
+ "rollup": "^4.32.1",
182
182
  "rollup-plugin-copy": "^3.5.0",
183
183
  "rollup-plugin-dts": "^6.1.1",
184
184
  "rollup-plugin-peer-deps-external": "^2.2.4",
185
185
  "rollup-preserve-directives": "^1.1.3",
186
186
  "semantic-release": "^24.2.1",
187
- "storybook": "^8.5.1",
188
- "stylelint": "^16.14.0",
187
+ "storybook": "^8.5.2",
188
+ "stylelint": "^16.14.1",
189
189
  "typescript": "^5.7.3"
190
190
  }
191
191
  }