diff --git a/.changeset/great-sheep-do.md b/.changeset/great-sheep-do.md new file mode 100644 index 00000000..a994bc93 --- /dev/null +++ b/.changeset/great-sheep-do.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/components": patch +--- + +Add Select component diff --git a/.changeset/metal-socks-walk.md b/.changeset/metal-socks-walk.md new file mode 100644 index 00000000..a994bc93 --- /dev/null +++ b/.changeset/metal-socks-walk.md @@ -0,0 +1,5 @@ +--- +"@devup-ui/components": patch +--- + +Add Select component diff --git a/packages/components/devup.json b/packages/components/devup.json index 7d9385b9..40781c5d 100644 --- a/packages/components/devup.json +++ b/packages/components/devup.json @@ -1,569 +1,584 @@ { - "theme": { - "colors": { - "light": { - "primary": "#674DC7", - "primaryHover": "#4D38AE", - "primaryActive": "#312395", - "primaryBg": "#F4F3FA", - "secondary": "#E3E0F2", - "link": "#7C8EE1", - "text": "#272727", - "background": "#F5F5F5", - "containerBackground": "#FFFFFF", - "border": "#E4E4E4", - "success": "#2CA353", - "warning": "#FF9800", - "error": "#D52B2E", - "info": "#2196F3", - "white": "#FFFFFF", - "black": "#000000", - "title": "#1A1A1A", - "caption": "#787878", - "black50": "#00000080", - "placeHolder": "#9D9D9D", - "base50": "#FFFFFF80", - "footerBackground": "#2F313B", - "footerAward": "#EAEAED", - "footerBody": "#FFFFFF", - "footerTitle": "#F2F2F2", - "footerCaption": "#CACACA", - "white10": "#FFFFFF1A", - "base": "#FFFFFF", - "negativeBase": "#000000", - "inputPlaceholder": "#A9A8AB", - "inputBg": "#FFFFFF", - "inputIcon": "#C3C2C8", - "inputDisabledBg": "#F0F0F3", - "inputDisabledText": "#D6D7DE", - "inputCaption": "#9B9BA6", - "negative20": "#00000033", - "negative10": "#0000001A", - "toggleBg": "#E4E4E4", - "primary50": "#614FC480", - "primary20": "#614FC433", - "tableSearch": "#FFED8A", - "black5": "#0000000D", - "filterBg": "#EFEEF2", - "footerLink": "#B7B5C0", - "familysiteBg": "#828389", - "familysiteTxt": "#272727", - "familyHover": "#A0A1A5", - "footerNavTitle": "#98989D", - "snackBg": "#29292CCC", - "snackLink": "#B2B0EF", - "containerHover": "#EEEEEE", - "kakoBg": "#FFE232", - "kakaoHover": "#F0C81A", - "textFixed": "#272727", - "primaryFocus": "#9385D3", - "containerPush": "#DADAE1", - "selectDisabled": "#C4C5D1", - "selectBoxBg": "#00000012", - "iconBold": "#8D8C9A", - "borderBold": "#BCBCBC", - "gnbBg": "#FFFFFFCC" - }, - "dark": { - "primary": "#8163E1", - "primaryHover": "#A290E7", - "primaryActive": "#BEB3ED", - "primaryBg": "#F4F3FA0D", - "secondary": "#272331", - "link": "#006BFF", - "text": "#F6F6F6", - "background": "#000000", - "containerBackground": "#1E1E1E", - "border": "#434343", - "success": "#4CAF50", - "warning": "#FF9800", - "error": "#FF5B5E", - "info": "#2196F3", - "white": "#FFFFFF", - "black": "#000000", - "title": "#FAFAFA", - "caption": "#787878", - "black50": "#00000080", - "placeHolder": "#9D9D9D", - "base50": "#00000080", - "footerBackground": "#D8D8D8", - "footerAward": "#3D3D3D", - "footerBody": "#404040", - "footerTitle": "#1F1F1F", - "footerCaption": "#7D7D7D", - "white10": "#0000001A", - "base": "#000000", - "negativeBase": "#FFFFFF", - "inputPlaceholder": "#CBCBCB", - "inputBg": "#2E2E2E", - "inputIcon": "#696A6F", - "inputDisabledBg": "#414244", - "inputDisabledText": "#373737", - "inputCaption": "#C3C2C8", - "negative20": "#FFFFFF66", - "negative10": "#FFFFFF1A", - "toggleBg": "#383838", - "primary50": "#7D6DD880", - "primary20": "#7D6DD833", - "tableSearch": "#B55100", - "black5": "#0000000D", - "filterBg": "#4B494F", - "footerLink": "#5E6063", - "familysiteBg": "#B0B0B0", - "familysiteTxt": "#272727", - "familyHover": "#94969E", - "footerNavTitle": "#747276", - "snackBg": "#29292CCC", - "snackLink": "#7C8EE1", - "containerHover": "#3A3A3A", - "kakoBg": "#FFE232", - "kakaoHover": "#FFE232", - "textFixed": "#272727", - "primaryFocus": "#927CE4", - "containerPush": "#606066", - "selectDisabled": "#45464D", - "selectBoxBg": "#FFFFFF12", - "iconBold": "#666577", - "borderBold": "#535353", - "gnbBg": "#000000CC" - } - }, - "typography": { - "buttonM": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "0px" + "theme": { + "colors": { + "light": { + "primary": "#674DC7", + "primaryHover": "#4D38AE", + "primaryActive": "#312395", + "primaryBg": "#F4F3FA", + "secondary": "#E3E0F2", + "link": "#7C8EE1", + "text": "#272727", + "background": "#F5F5F5", + "containerBackground": "#FFFFFF", + "border": "#E4E4E4", + "success": "#2CA353", + "warning": "#FF9800", + "error": "#D52B2E", + "info": "#2196F3", + "white": "#FFFFFF", + "black": "#000000", + "title": "#1A1A1A", + "caption": "#787878", + "black50": "#00000080", + "placeHolder": "#9D9D9D", + "base50": "#FFFFFF80", + "footerBackground": "#2F313B", + "footerAward": "#EAEAED", + "footerBody": "#FFFFFF", + "footerTitle": "#F2F2F2", + "footerCaption": "#CACACA", + "white10": "#FFFFFF1A", + "base": "#FFFFFF", + "negativeBase": "#000000", + "inputPlaceholder": "#A9A8AB", + "inputBg": "#FFFFFF", + "inputIcon": "#C3C2C8", + "inputDisabledBg": "#F0F0F3", + "inputDisabledText": "#D6D7DE", + "inputCaption": "#9B9BA6", + "negative20": "#00000033", + "negative10": "#0000001A", + "toggleBg": "#E4E4E4", + "primary50": "#614FC480", + "primary20": "#614FC433", + "tableSearch": "#FFED8A", + "black5": "#0000000D", + "filterBg": "#EFEEF2", + "footerLink": "#B7B5C0", + "familysiteBg": "#828389", + "familysiteTxt": "#272727", + "familyHover": "#A0A1A5", + "footerNavTitle": "#98989D", + "snackBg": "#29292CCC", + "snackLink": "#B2B0EF", + "containerHover": "#EEEEEE", + "kakoBg": "#FFE232", + "kakaoHover": "#F0C81A", + "textFixed": "#272727", + "primaryFocus": "#9385D3", + "containerPush": "#DADAE1", + "selectDisabled": "#C4C5D1", + "selectBoxBg": "#00000012", + "iconBold": "#8D8C9A", + "borderBold": "#BCBCBC", + "gnbBg": "#FFFFFFCC" + }, + "dark": { + "primary": "#8163E1", + "primaryHover": "#A290E7", + "primaryActive": "#BEB3ED", + "primaryBg": "#F4F3FA0D", + "secondary": "#272331", + "link": "#006BFF", + "text": "#F6F6F6", + "background": "#202020", + "containerBackground": "#1E1E1E", + "border": "#434343", + "success": "#4CAF50", + "warning": "#FF9800", + "error": "#FF5B5E", + "info": "#2196F3", + "white": "#FFFFFF", + "black": "#000000", + "title": "#FAFAFA", + "caption": "#787878", + "black50": "#00000080", + "placeHolder": "#9D9D9D", + "base50": "#00000080", + "footerBackground": "#D8D8D8", + "footerAward": "#3D3D3D", + "footerBody": "#404040", + "footerTitle": "#1F1F1F", + "footerCaption": "#7D7D7D", + "white10": "#0000001A", + "base": "#000000", + "negativeBase": "#FFFFFF", + "inputPlaceholder": "#CBCBCB", + "inputBg": "#2E2E2E", + "inputIcon": "#696A6F", + "inputDisabledBg": "#414244", + "inputDisabledText": "#373737", + "inputCaption": "#C3C2C8", + "negative20": "#FFFFFF66", + "negative10": "#FFFFFF1A", + "toggleBg": "#383838", + "primary50": "#7D6DD880", + "primary20": "#7D6DD833", + "tableSearch": "#B55100", + "black5": "#0000000D", + "filterBg": "#4B494F", + "footerLink": "#5E6063", + "familysiteBg": "#B0B0B0", + "familysiteTxt": "#272727", + "familyHover": "#94969E", + "footerNavTitle": "#747276", + "snackBg": "#29292CCC", + "snackLink": "#7C8EE1", + "containerHover": "#3A3A3A", + "kakoBg": "#FFE232", + "kakaoHover": "#FFE232", + "textFixed": "#272727", + "primaryFocus": "#927CE4", + "containerPush": "#606066", + "selectDisabled": "#45464D", + "selectBoxBg": "#FFFFFF12", + "iconBold": "#666577", + "borderBold": "#535353", + "gnbBg": "#000000CC" + } }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "18px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" + "typography": { + "buttonM": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "0px" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "18px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "inputBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "buttonS": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "0px" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "buttonxs": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.03em" + }, + null + ], + "inputPlaceholder": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "13px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "inputText": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.03em" + }, + null + ], + "inlineLabelL": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "16px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "18px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + null + ], + "inlineLabelS": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "12px", + "lineHeight": 1.3, + "letterSpacing": "-0.03em" + }, + "body": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "16px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null + ], + "inputPhBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "13px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "uploadButton": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + "pagination": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "paginationSelected": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 900, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "langMenu": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "langButton": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ], + "tableTitle": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "16px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "footerL": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerM": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "13px", + "lineHeight": "18px", + "letterSpacing": "-0.01em" + }, + "footerMsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "13px", + "lineHeight": "18px", + "letterSpacing": "-0.01em" + }, + "footerS": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "12px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerxl": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerSsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "12px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerxs": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 300, + "fontSize": "10px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "footerXSsemibold": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "10px", + "lineHeight": "18px", + "letterSpacing": "-0.02em" + }, + "footerNav": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "15px", + "lineHeight": 1.3, + "letterSpacing": "-0.02em" + }, + "footerList": { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 500, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + "subMenu": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "16px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null + ], + "tableText": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 400, + "fontSize": "15px", + "lineHeight": 1.4, + "letterSpacing": "-0.01em" + }, + null + ], + "tableTextBold": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "14px", + "lineHeight": "24px", + "letterSpacing": "-0.01em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 600, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.01em" + }, + null + ], + "resetButton": [ + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "14px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null, + null, + null, + { + "fontFamily": "Pretendard", + "fontStyle": "normal", + "fontWeight": 700, + "fontSize": "15px", + "lineHeight": 1.2, + "letterSpacing": "-0.02em" + }, + null + ] } - ], - "inputBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - } - ], - "buttonS": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "0px" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - } - ], - "buttonxs": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.03em" - } - ], - "inputPlaceholder": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "13px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - } - ], - "inputText": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.03em" - } - ], - "inlineLabelL": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "16px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "18px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - } - ], - "inlineLabelS": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "12px", - "lineHeight": 1.3, - "letterSpacing": "-0.03em" - }, - "body": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "16px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - } - ], - "inputPhBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "13px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - } - ], - "uploadButton": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - "pagination": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "paginationSelected": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 900, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "langMenu": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "langButton": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - } - ], - "tableTitle": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "16px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - } - ], - "footerL": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerM": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "13px", - "lineHeight": "18px", - "letterSpacing": "-0.01em" - }, - "footerMsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "13px", - "lineHeight": "18px", - "letterSpacing": "-0.01em" - }, - "footerS": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "12px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerxl": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerSsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "12px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerxs": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 300, - "fontSize": "10px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "footerXSsemibold": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "10px", - "lineHeight": "18px", - "letterSpacing": "-0.02em" - }, - "footerNav": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "15px", - "lineHeight": 1.3, - "letterSpacing": "-0.02em" - }, - "footerList": { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 500, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - "subMenu": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "16px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - } - ], - "tableText": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 400, - "fontSize": "15px", - "lineHeight": 1.4, - "letterSpacing": "-0.01em" - } - ], - "tableTextBold": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "14px", - "lineHeight": "24px", - "letterSpacing": "-0.01em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 600, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.01em" - } - ], - "resetButton": [ - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "14px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - }, - null, - null, - null, - { - "fontFamily": "Pretendard", - "fontStyle": "normal", - "fontWeight": 700, - "fontSize": "15px", - "lineHeight": 1.2, - "letterSpacing": "-0.02em" - } - ] } - } } \ No newline at end of file diff --git a/packages/components/src/components/Input/__tests__/__snapshots__/index.browser.test.tsx.snap b/packages/components/src/components/Input/__tests__/__snapshots__/index.browser.test.tsx.snap index 3d41e2db..69300a8e 100644 --- a/packages/components/src/components/Input/__tests__/__snapshots__/index.browser.test.tsx.snap +++ b/packages/components/src/components/Input/__tests__/__snapshots__/index.browser.test.tsx.snap @@ -3,7 +3,7 @@ exports[`Controlled Input > should render with value 1`] = `
should render with value 1`] = ` exports[`Input > should have typography when typography is provided 1`] = `
should have typography when typography is provided 1`] = ` exports[`Input > should not have padding right when allowClear is false 1`] = `
should not have padding right when allowClear is false 1`] = ` exports[`Input > should not show clear button when value is empty 1`] = `
should not show clear button when value is empty 1`] = ` exports[`Input > should pass className prop to error message component 1`] = `
should pass className prop to error message component 1`] = ` exports[`Input > should pass className prop to icon component 1`] = `
should pass props to ClearButton component 1`] = ` exports[`Input > should render disabled icon style when disabled is true 1`] = `
should render disabled icon style when disabled is true 1`] = ` exports[`Input > should render error style when error is true 1`] = `
should render error style when error is true 1`] = ` exports[`Input > should render with allowClear prop 1`] = `
should render with allowClear prop 1`] = ` exports[`Input > should render with default props 1`] = `
should render with default props 1`] = ` exports[`Input > should render with disabled prop 1`] = `
should render with disabled prop 1`] = ` exports[`Input > should show clear button when value is not empty 1`] = `
*': { boxSizing: 'border-box' } }} + selectors={{ '&, & *': { boxSizing: 'border-box' } }} > {icon && (
) { + return ( + + + + ) +} diff --git a/packages/components/src/components/Select/IconCheck.tsx b/packages/components/src/components/Select/IconCheck.tsx new file mode 100644 index 00000000..fd2e2395 --- /dev/null +++ b/packages/components/src/components/Select/IconCheck.tsx @@ -0,0 +1,22 @@ +import { ComponentProps } from 'react' + +export function IconCheck({ ...props }: ComponentProps<'svg'>) { + return ( + + + + ) +} diff --git a/packages/components/src/components/Select/Select.stories.tsx b/packages/components/src/components/Select/Select.stories.tsx new file mode 100644 index 00000000..7f6e0064 --- /dev/null +++ b/packages/components/src/components/Select/Select.stories.tsx @@ -0,0 +1,202 @@ +import { css, Flex } from '@devup-ui/react' +import { Meta, StoryObj } from '@storybook/react-vite' +import { ComponentProps, useState } from 'react' + +import { + Select, + SelectContainer, + SelectDivider, + SelectOption, + SelectTrigger, +} from '.' +import { IconArrow } from './IconArrow' + +export type Story = StoryObj + +// More on how to set up stories at: https://storybook.js.org/docs/writing-stories#default-export +const meta: Meta = { + title: 'Devfive/Select', + component: Select, + decorators: [ + (Story) => ( +
+ +
+ ), + ], +} + +export const DefaultStory: Story = { + args: { + colors: {}, + }, + render: (args) => , +} + +export const ControlledRadioStory: Story = { + args: {}, + render: () => , +} + +export const ControlledCheckboxStory: Story = { + args: {}, + render: () => , +} + +export default meta + +function DefaultComponent( + props: Omit, 'children'>, +) { + return ( + + + + + Option 5 + + + + + Option 6 + Option 7 + + + + + ) +} + +function ControlledCheckbox() { + const [value, setValue] = useState([]) + const handleChange = (nextValue: string) => { + if (value.includes(nextValue)) { + setValue(value.filter((v) => v !== nextValue)) + } else { + setValue([...value, nextValue]) + } + } + + const [subValue, setSubValue] = useState([]) + const handleSubChange = (nextValue: string) => { + if (subValue.includes(nextValue)) { + setSubValue(subValue.filter((v) => v !== nextValue)) + } else { + setSubValue([...subValue, nextValue]) + } + } + + return ( + + + + + Option 5 + + + + + Option 6 + Option 7 + + + + + ) +} + +function ControlledRadio() { + const [value, setValue] = useState('') + const handleChange = (value: string) => { + setValue(value) + } + const [subValue, setSubValue] = useState('') + const handleSubChange = (value: string) => { + setSubValue(value) + } + return ( + + + + + Option 5 + + + + + { + if (value) { + setSubValue(value) + } + }} + value="Option 6" + > + Option 6 + + { + if (value) { + setSubValue(value) + } + }} + value="Option 7" + > + Option 7 + + + + + + ) +} diff --git a/packages/components/src/components/Select/__tests__/__snapshots__/index.browser.test.tsx.snap b/packages/components/src/components/Select/__tests__/__snapshots__/index.browser.test.tsx.snap new file mode 100644 index 00000000..312b759e --- /dev/null +++ b/packages/components/src/components/Select/__tests__/__snapshots__/index.browser.test.tsx.snap @@ -0,0 +1,26 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`Select > should render 1`] = ` +
+
+ +
+
+`; diff --git a/packages/components/src/components/Select/__tests__/index.browser.test.tsx b/packages/components/src/components/Select/__tests__/index.browser.test.tsx new file mode 100644 index 00000000..48b28e19 --- /dev/null +++ b/packages/components/src/components/Select/__tests__/index.browser.test.tsx @@ -0,0 +1,355 @@ +import { css, Flex } from '@devup-ui/react' +import { fireEvent, render } from '@testing-library/react' +import { describe, expect, it } from 'vitest' + +import { + Select, + SelectContainer, + SelectDivider, + SelectOption, + SelectTrigger, +} from '..' +import { IconArrow } from '../IconArrow' + +const children = ( + <> + Select + + + Option 1 + + Option 2 + + Option 3 + + Option 4 + + + + +) + +describe('Select', () => { + afterEach(() => { + vi.clearAllMocks() + }) + + it('should render', () => { + const { container } = render() + expect(container).toMatchSnapshot() + }) + + it('should throw error when used outside of Select context', () => { + expect(() => { + render() + }).toThrow() + }) + + it('should close select when clicking outside', () => { + const { container } = render( +
+ +
, + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + const containerElement = container.querySelector( + '[data-testid="container"]', + ) + fireEvent.click(selectToggle!) + expect(selectToggle).toHaveAttribute('aria-expanded', 'true') + fireEvent.click(containerElement!) + expect(selectToggle).toHaveAttribute('aria-expanded', 'false') + }) + + it('should call onOpenChange function when it is provided', () => { + const onOpenChange = vi.fn() + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + expect(onOpenChange).toHaveBeenCalledWith(true) + }) + + it('should call onValueChange function when it is provided', () => { + const onValueChange = vi.fn() + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + fireEvent.click(option2!) + expect(onValueChange).toHaveBeenCalledWith('Option 2') + }) + + it('should do nothing when onValueChange is not provided and type is default', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + fireEvent.click(option2!) + fireEvent.click(selectToggle!) + const option2_2 = container.querySelector('[data-value="Option 2"]') + expect(option2_2?.querySelector('svg')).toBeNull() + }) + + it('should select option when type is radio and the option should have a check', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + fireEvent.click(option2!) + fireEvent.click(selectToggle!) + const option2_2 = container.querySelector('[data-value="Option 2"]') + expect(option2_2?.querySelector('svg')).toBeInTheDocument() + }) + + it('should have multiple check marks when type is checkbox and multiple options are selected', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + const option3 = container.querySelector('[data-value="Option 3"]') + expect(option2).toBeInTheDocument() + expect(option3).toBeInTheDocument() + fireEvent.click(option2!) + fireEvent.click(option3!) + expect(option2?.querySelector('svg')).toBeInTheDocument() + expect(option3?.querySelector('svg')).toBeInTheDocument() + }) + + it('should not have a check mark when type is checkbox and the option is not selected', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + fireEvent.click(option2!) + fireEvent.click(option2!) + expect(option2?.querySelector('svg')).toBeNull() + }) + + it('should call onClick function when it is provided to SelectOption', () => { + const onClick = vi.fn() + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + fireEvent.click(option2!) + expect(onClick).toHaveBeenCalledWith('Option 2', expect.any(Object)) + }) + + it('should have a check mark when type is radio and defaultValue is provided', () => { + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toBeInTheDocument() + expect(option2?.querySelector('svg')).toBeInTheDocument() + }) + + it('should not have a check mark when type is radio and defaultValue is not provided', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const selectContainer = container.querySelector( + '[aria-label="Select container"]', + ) + expect(selectContainer).toBeInTheDocument() + expect(selectContainer?.querySelectorAll('svg')).toHaveLength(1) + }) + + it('should have 10px gap in an option when type is checkbox', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toHaveClass('gap-0-10px--1') + }) + + it('should have 6px gap in an option when type is radio', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toHaveClass('gap-0-6px--1') + }) + + it('should have 0 gap in an option when type is default', () => { + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).toHaveClass('gap-0-0--1') + }) + + it('should have undefined gap when type is not right', () => { + // @ts-expect-error - test for wrong type + const { container } = render() + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2).not.toHaveClass('gap-0-0--1') + }) + + it('should add styleVars to the container when colors are provided', () => { + const { container } = render( + , + ) + const select = container.querySelector('[data-testid="select"]') + expect(select).toHaveStyle({ + '--primary': 'red', + '--border': 'blue', + '--inputBackground': 'green', + '--base10': 'yellow', + '--title': 'purple', + }) + }) + + it('should show confirm button when type is checkbox and showConfirmButton is true', () => { + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const confirmButton = container.querySelector( + '[aria-label="Select confirm button"]', + ) + expect(confirmButton).toBeInTheDocument() + }) + + it('should close select when clicking confirm button', () => { + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const confirmButton = container.querySelector( + '[aria-label="Select confirm button"]', + ) + fireEvent.click(confirmButton!) + expect(selectToggle).toHaveAttribute('aria-expanded', 'false') + }) + + it('should not show confirm button when type is checkbox and showConfirmButton is false', () => { + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const confirmButton = container.querySelector( + '[aria-label="Select confirm button"]', + ) + expect(confirmButton).not.toBeInTheDocument() + }) + + it('should render IconCheck when type is checkbox and the option is selected', () => { + const { container } = render( + , + ) + const selectToggle = container.querySelector('[aria-label="Select toggle"]') + fireEvent.click(selectToggle!) + const option2 = container.querySelector('[data-value="Option 2"]') + expect(option2?.querySelector('svg')).toBeInTheDocument() + }) + + it('should not check the option when type is checkbox and the option is not selected', () => { + const { container } = render( + , + ) + const svg = container.querySelector('svg') + expect(svg).not.toBeInTheDocument() + }) +}) diff --git a/packages/components/src/components/Select/index.tsx b/packages/components/src/components/Select/index.tsx new file mode 100644 index 00000000..0390aaa3 --- /dev/null +++ b/packages/components/src/components/Select/index.tsx @@ -0,0 +1,393 @@ +'use client' + +import { Box, css, DevupThemeTypography, Flex, VStack } from '@devup-ui/react' +import clsx from 'clsx' +import { + Children, + ComponentProps, + createContext, + JSX, + JSXElementConstructor, + ReactElement, + useContext, + useEffect, + useRef, + useState, +} from 'react' + +import { Button } from '../Button' +import { IconCheck } from './IconCheck' + +type SelectType = 'default' | 'radio' | 'checkbox' +type SelectValue = T extends 'radio' ? string : string[] + +const SelectContext = createContext<{ + open: boolean + setOpen: (open: boolean) => void + value: SelectValue + setValue: (value: string) => void + type: SelectType +} | null>(null) + +export const useSelect = () => { + const context = useContext(SelectContext) + if (!context) { + throw new Error('useSelect must be used within a Select') + } + return context +} + +interface SelectProps extends ComponentProps<'div'> { + defaultValue?: SelectValue + value?: SelectValue + onValueChange?: (value: string) => void + defaultOpen?: boolean + open?: boolean + onOpenChange?: (open: boolean) => void + children: React.ReactNode + type?: SelectType + colors?: { + primary?: string + border?: string + inputBackground?: string + base10?: string + title?: string + selectDisabled?: string + primaryBg?: string + } + typography?: keyof DevupThemeTypography +} + +export function Select({ + type = 'default', + children, + defaultValue, + value: valueProp, + onValueChange, + defaultOpen, + open: openProp, + onOpenChange, + colors, + typography, + ...props +}: SelectProps) { + const ref = useRef(null) + const [open, setOpen] = useState(defaultOpen ?? false) + const [value, setValue] = useState>( + defaultValue ?? (type === 'checkbox' ? [] : ''), + ) + + useEffect(() => { + const handleOutsideClick = (e: MouseEvent) => { + if (ref.current && ref.current.contains(e.target as Node)) return + setOpen(false) + } + document.addEventListener('click', handleOutsideClick) + return () => document.removeEventListener('click', handleOutsideClick) + }, [open, setOpen]) + + const handleOpenChange = (open: boolean) => { + onOpenChange?.(open) + setOpen(open) + } + + const handleValueChange = (nextValue: string) => { + onValueChange?.(nextValue) + + if (type === 'default') return + if (type === 'radio') { + setValue(nextValue) + return + } + if (Array.isArray(value) && value.includes(nextValue)) { + setValue(value.filter((v) => v !== nextValue)) + } else { + setValue([...value, nextValue]) + } + } + + return ( + + + {children} + + + ) +} + +interface SelectTriggerProps extends ComponentProps { + asChild?: boolean +} +export function SelectTrigger({ + className, + children, + asChild, + ...props +}: SelectTriggerProps) { + const { open, setOpen } = useSelect() + const handleClick = () => { + setOpen(!open) + } + + if (asChild) { + const element = Children.only(children) as ReactElement< + ComponentProps> + > + const Comp = element.type + return ( + + ) + } + + return ( + + ) +} + +interface SelectContainerProps extends ComponentProps<'div'> { + showConfirmButton?: boolean +} +export function SelectContainer({ + children, + showConfirmButton, + ...props +}: SelectContainerProps) { + const { open, setOpen, type } = useSelect() + + if (!open) return null + return ( + + {children} + {showConfirmButton && type === 'checkbox' && ( + + + + )} + + ) +} + +interface SelectOptionProps extends Omit, 'onClick'> { + onClick?: ( + value: string | undefined, + e?: React.MouseEvent, + ) => void + disabled?: boolean + value?: string + showCheck?: boolean +} + +export function SelectOption({ + disabled, + onClick, + children, + value, + showCheck = true, + ...props +}: SelectOptionProps) { + const { setOpen, setValue, value: selectedValue, type } = useSelect() + + const handleClose = () => { + if (type === 'checkbox') return + setOpen(false) + } + + const handleClick = ( + value: string | undefined, + e: React.MouseEvent, + ) => { + if (onClick) { + onClick(value, e) + return + } + if (typeof value === 'string') setValue(value) + handleClose() + } + + const isSelected = { + default: false, + radio: selectedValue === value, + checkbox: + Array.isArray(selectedValue) && value && selectedValue.includes(value), + }[type] + + const changesOnHover = !disabled && !(type === 'radio' && isSelected) + + return ( + handleClick(value, e)} + px="10px" + styleOrder={1} + transition="background-color 0.1s ease-in-out" + {...props} + > + {showCheck && + { + checkbox: ( + + {isSelected && ( + + )} + + ), + radio: ( + <> + {isSelected && ( + + + + )} + + ), + default: null, + }[type]} + {children} + + ) +} + +export function SelectDivider({ ...props }: ComponentProps<'div'>) { + return ( + + ) +} diff --git a/packages/components/src/components/Stepper/index.tsx b/packages/components/src/components/Stepper/index.tsx index f7f427bf..bcfb81d7 100644 --- a/packages/components/src/components/Stepper/index.tsx +++ b/packages/components/src/components/Stepper/index.tsx @@ -77,9 +77,6 @@ function StepperDecreaseButton({ ...props }: ComponentProps) { p: '0', boxSize: '28px', borderRadius: '4px', - selectors: { - '&>div>div': {}, - }, })} disabled={disabled} onClick={() => setValue(value - 1)} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5ce6e410..485029cd 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -25,22 +25,22 @@ importers: version: 16.3.0(@testing-library/dom@10.4.1)(@types/react-dom@19.1.7(@types/react@19.1.9))(@types/react@19.1.9)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) '@types/node': specifier: ^24.2.0 - version: 24.2.0 + version: 24.2.1 '@vitest/coverage-v8': specifier: ^3.2.4 - version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1)) + version: 3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1)) eslint: specifier: ^9.32.0 - version: 9.32.0(jiti@2.5.1) + version: 9.33.0(jiti@2.5.1) eslint-plugin-devup: specifier: ^2.0.5 - version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + version: 2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) happy-dom: specifier: ^18.0.1 version: 18.0.1 vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) apps/landing: dependencies: @@ -98,7 +98,7 @@ importers: version: 3.1.2 '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -138,7 +138,7 @@ importers: version: link:../../packages/next-plugin '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -191,7 +191,7 @@ importers: version: link:../../packages/vite-plugin '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -200,13 +200,13 @@ importers: version: 19.1.7(@types/react@19.1.9) '@vitejs/plugin-react': specifier: ^5.0.0 - version: 5.0.0(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 5.0.0(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) apps/vite-lib: dependencies: @@ -222,22 +222,22 @@ importers: version: link:../../packages/vite-plugin '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 '@vitejs/plugin-react': specifier: ^5.0.0 - version: 5.0.0(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 5.0.0(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) typescript: specifier: ^5 version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) benchmark/next-chakra-ui: dependencies: @@ -265,7 +265,7 @@ importers: devDependencies: '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -296,7 +296,7 @@ importers: version: link:../../packages/next-plugin '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -327,7 +327,7 @@ importers: version: 1.3.3(@babel/core@7.28.0)(@types/react@19.1.9)(next@15.4.6(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1))(react@19.1.1)(webpack@5.101.0) '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -367,7 +367,7 @@ importers: devDependencies: '@types/node': specifier: ^24 - version: 24.2.0 + version: 24.2.1 '@types/react': specifier: ^19 version: 19.1.9 @@ -400,37 +400,37 @@ importers: version: link:../vite-plugin '@storybook/addon-docs': specifier: ^9.1.1 - version: 9.1.1(@types/react@19.1.9)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) + version: 9.1.1(@types/react@19.1.9)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) '@storybook/addon-onboarding': specifier: ^9.1.1 - version: 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) + version: 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) '@storybook/react-vite': specifier: ^9.1.1 - version: 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) '@types/react': specifier: ^19.1.9 version: 19.1.9 eslint-plugin-storybook: specifier: ^9.1.1 - version: 9.1.1(eslint@9.32.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2) + version: 9.1.1(eslint@9.33.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2) rollup-plugin-preserve-directives: specifier: ^0.4.0 version: 0.4.0(rollup@4.46.2) storybook: specifier: ^9.1.1 - version: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) typescript: specifier: ^5.9.2 version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) packages/next-plugin: dependencies: @@ -439,7 +439,7 @@ importers: version: link:../webpack-plugin browserslist: specifier: latest - version: 4.25.1 + version: 4.25.2 next: specifier: ^15.4 version: 15.4.6(@babel/core@7.28.0)(react-dom@19.1.1(react@19.1.1))(react@19.1.1) @@ -452,13 +452,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) packages/react: dependencies: @@ -480,10 +480,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) packages/reset-css: dependencies: @@ -499,10 +499,10 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) packages/rsbuild-plugin: dependencies: @@ -518,13 +518,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) packages/vite-plugin: dependencies: @@ -533,14 +533,14 @@ importers: version: link:../../bindings/devup-ui-wasm vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) devDependencies: typescript: specifier: ^5.9.2 version: 5.9.2 vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) packages/webpack-plugin: dependencies: @@ -556,13 +556,13 @@ importers: version: 5.9.2 vite: specifier: ^6 - version: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + version: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) vite-plugin-dts: specifier: ^4.5.4 - version: 4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + version: 4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) vitest: specifier: ^3.2.4 - version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + version: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) packages: @@ -1583,8 +1583,8 @@ packages: resolution: {integrity: sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@eslint/js@9.32.0': - resolution: {integrity: sha512-BBpRFZK3eX6uMLKz8WxFOBIFFcGFJ/g8XuwjTHCqHROSIsopI+ddn/d5Cfh36+7+e5edVS8dbSHnBNhrLEX0zg==} + '@eslint/js@9.33.0': + resolution: {integrity: sha512-5K1/mKhWaMfreBGJTwval43JJmkip0RmM+3+IuqupeSKNC/Th2Kc7ucaq5ovTSra/OOKB9c58CGSz3QMVbWt0A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@eslint/object-schema@2.1.6': @@ -1970,8 +1970,8 @@ packages: '@types/react': optional: true - '@napi-rs/wasm-runtime@1.0.2': - resolution: {integrity: sha512-4pSAVWEyZMgE9q+SYkHK+UhYRo4o7P+NYZSsuuhU0wKNzV09ujaxerrbzgv6zyLoWIggJb8ql/KRzv0H9WuAZQ==} + '@napi-rs/wasm-runtime@1.0.3': + resolution: {integrity: sha512-rZxtMsLwjdXkMUGC3WwsPwLNVqVqnTJT6MNIB6e+5fhMcSCPP0AOsNWuMQ5mdCq6HNjs/ZeWAEchpqeprqBD2Q==} '@next/env@15.4.6': resolution: {integrity: sha512-yHDKVTcHrZy/8TWhj0B23ylKv5ypocuCwey9ZqPyv4rPdUdRzpGCkSi03t04KBPyU96kxVtUqx6O3nE1kpxASQ==} @@ -2450,11 +2450,11 @@ packages: '@types/node@12.20.55': resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} - '@types/node@20.19.9': - resolution: {integrity: sha512-cuVNgarYWZqxRJDQHEB58GEONhOK79QVR/qYx4S7kcUObQvUwvFnYxJuuHUKm2aieN9X3yZB4LZsuYNU1Qphsw==} + '@types/node@20.19.10': + resolution: {integrity: sha512-iAFpG6DokED3roLSP0K+ybeDdIX6Bc0Vd3mLW5uDqThPWtNos3E+EqOM11mPQHKzfWHqEBuLjIlsBQQ8CsISmQ==} - '@types/node@24.2.0': - resolution: {integrity: sha512-3xyG3pMCq3oYCNg7/ZP+E1ooTaGB4cG8JWRsqqOYQdbWNY4zbaV0Ennrd7stjiJEFZCaybcIgpTjJWHRfBSIDw==} + '@types/node@24.2.1': + resolution: {integrity: sha512-DRh5K+ka5eJic8CjH7td8QpYEV6Zo10gfRkjHCO3weqZHWDtAaSTFtl4+VMqOJ4N5jcuhZ9/l+yy8rVgw7BQeQ==} '@types/parse-json@4.0.2': resolution: {integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==} @@ -2602,14 +2602,14 @@ packages: '@vitest/utils@3.2.4': resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} - '@volar/language-core@2.4.22': - resolution: {integrity: sha512-gp4M7Di5KgNyIyO903wTClYBavRt6UyFNpc5LWfyZr1lBsTUY+QrVZfmbNF2aCyfklBOVk9YC4p+zkwoyT7ECg==} + '@volar/language-core@2.4.23': + resolution: {integrity: sha512-hEEd5ET/oSmBC6pi1j6NaNYRWoAiDhINbT8rmwtINugR39loROSlufGdYMF9TaKGfz+ViGs1Idi3mAhnuPcoGQ==} - '@volar/source-map@2.4.22': - resolution: {integrity: sha512-L2nVr/1vei0xKRgO2tYVXtJYd09HTRjaZi418e85Q+QdbbqA8h7bBjfNyPPSsjnrOO4l4kaAo78c8SQUAdHvgA==} + '@volar/source-map@2.4.23': + resolution: {integrity: sha512-Z1Uc8IB57Lm6k7q6KIDu/p+JWtf3xsXJqAX/5r18hYOTpJyBn0KXUR8oTJ4WFYOcDzWC9n3IflGgHowx6U6z9Q==} - '@volar/typescript@2.4.22': - resolution: {integrity: sha512-6ZczlJW1/GWTrNnkmZxJp4qyBt/SGVlcTuCWpI5zLrdPdCZsj66Aff9ZsfFaT3TyjG8zVYgBMYPuCm/eRkpcpQ==} + '@volar/typescript@2.4.23': + resolution: {integrity: sha512-lAB5zJghWxVPqfcStmAP1ZqQacMpe90UrP5RJ3arDyrhy4aCUQqmxPPLB2PWDKugvylmO41ljK7vZ+t6INMTag==} '@vue/compiler-core@3.5.18': resolution: {integrity: sha512-3slwjQrrV1TO8MoXgy3aynDQ7lslj5UqDxuHnrzHtpON5CBinhWjJETciPngpin/T3OuW3tXUf86tEurusnztw==} @@ -3105,8 +3105,8 @@ packages: engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true - browserslist@4.25.1: - resolution: {integrity: sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==} + browserslist@4.25.2: + resolution: {integrity: sha512-0si2SJK3ooGzIawRu61ZdPCO1IncZwS8IzuX73sPZsXW6EQ/w/DAfPyKI8l1ETTCr2MnvqWitmlCUxgdul45jA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} hasBin: true @@ -3133,8 +3133,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001733: - resolution: {integrity: sha512-e4QKw/O2Kavj2VQTKZWrwzkt3IxOmIlU6ajRb6LP64LHpBo1J67k2Hi4Vu/TgJWsNtynurfS0uK3MaUTCPfu5Q==} + caniuse-lite@1.0.30001734: + resolution: {integrity: sha512-uhE1Ye5vgqju6OI71HTQqcBCZrvHugk0MjLak7Q+HfoBgoq5Bi+5YnwjP4fjDgrtYr/l8MVRBvzz9dPD4KyK0A==} ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -3518,8 +3518,8 @@ packages: resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - eslint@9.32.0: - resolution: {integrity: sha512-LSehfdpgMeWcTZkWZVIJl+tkZ2nuSkyyB9C27MZqFWXuph7DvaowgcTvKqxvpLW1JZIk8PN7hFY3Rj9LQ7m7lg==} + eslint@9.33.0: + resolution: {integrity: sha512-TS9bTNIryDzStCpJN93aC5VRSW3uTx9sClUn4B87pwiCaJh220otoI0X8mJKr+VcPtniMdN8GKjlwgWGUv5ZKA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} hasBin: true peerDependencies: @@ -5665,7 +5665,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.0 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.25.1 + browserslist: 4.25.2 lru-cache: 5.1.1 semver: 6.3.1 @@ -6759,9 +6759,9 @@ snapshots: '@esbuild/win32-x64@0.25.8': optional: true - '@eslint-community/eslint-utils@4.7.0(eslint@9.32.0(jiti@2.5.1))': + '@eslint-community/eslint-utils@4.7.0(eslint@9.33.0(jiti@2.5.1))': dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.1': {} @@ -6794,7 +6794,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/js@9.32.0': {} + '@eslint/js@9.33.0': {} '@eslint/object-schema@2.1.6': {} @@ -6938,12 +6938,12 @@ snapshots: '@istanbuljs/schema@0.1.3': {} - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: glob: 10.4.5 magic-string: 0.30.17 react-docgen-typescript: 2.4.0(typescript@5.9.2) - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) optionalDependencies: typescript: 5.9.2 @@ -7109,23 +7109,23 @@ snapshots: '@types/react': 19.1.9 react: 19.1.1 - '@microsoft/api-extractor-model@7.30.7(@types/node@24.2.0)': + '@microsoft/api-extractor-model@7.30.7(@types/node@24.2.1)': dependencies: '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.14.0(@types/node@24.2.0) + '@rushstack/node-core-library': 5.14.0(@types/node@24.2.1) transitivePeerDependencies: - '@types/node' - '@microsoft/api-extractor@7.52.10(@types/node@24.2.0)': + '@microsoft/api-extractor@7.52.10(@types/node@24.2.1)': dependencies: - '@microsoft/api-extractor-model': 7.30.7(@types/node@24.2.0) + '@microsoft/api-extractor-model': 7.30.7(@types/node@24.2.1) '@microsoft/tsdoc': 0.15.1 '@microsoft/tsdoc-config': 0.17.1 - '@rushstack/node-core-library': 5.14.0(@types/node@24.2.0) + '@rushstack/node-core-library': 5.14.0(@types/node@24.2.1) '@rushstack/rig-package': 0.5.3 - '@rushstack/terminal': 0.15.4(@types/node@24.2.0) - '@rushstack/ts-command-line': 5.0.2(@types/node@24.2.0) + '@rushstack/terminal': 0.15.4(@types/node@24.2.1) + '@rushstack/ts-command-line': 5.0.2(@types/node@24.2.1) lodash: 4.17.21 minimatch: 10.0.3 resolve: 1.22.10 @@ -7248,7 +7248,7 @@ snapshots: optionalDependencies: '@types/react': 19.1.9 - '@napi-rs/wasm-runtime@1.0.2': + '@napi-rs/wasm-runtime@1.0.3': dependencies: '@emnapi/core': 1.4.5 '@emnapi/runtime': 1.4.5 @@ -7415,7 +7415,7 @@ snapshots: '@rspack/binding-wasm32-wasi@1.4.11': dependencies: - '@napi-rs/wasm-runtime': 1.0.2 + '@napi-rs/wasm-runtime': 1.0.3 optional: true '@rspack/binding-win32-arm64-msvc@1.4.11': @@ -7456,7 +7456,7 @@ snapshots: html-entities: 2.6.0 react-refresh: 0.17.0 - '@rushstack/node-core-library@5.14.0(@types/node@24.2.0)': + '@rushstack/node-core-library@5.14.0(@types/node@24.2.1)': dependencies: ajv: 8.13.0 ajv-draft-04: 1.0.0(ajv@8.13.0) @@ -7467,56 +7467,56 @@ snapshots: resolve: 1.22.10 semver: 7.5.4 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 '@rushstack/rig-package@0.5.3': dependencies: resolve: 1.22.10 strip-json-comments: 3.1.1 - '@rushstack/terminal@0.15.4(@types/node@24.2.0)': + '@rushstack/terminal@0.15.4(@types/node@24.2.1)': dependencies: - '@rushstack/node-core-library': 5.14.0(@types/node@24.2.0) + '@rushstack/node-core-library': 5.14.0(@types/node@24.2.1) supports-color: 8.1.1 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 - '@rushstack/ts-command-line@5.0.2(@types/node@24.2.0)': + '@rushstack/ts-command-line@5.0.2(@types/node@24.2.1)': dependencies: - '@rushstack/terminal': 0.15.4(@types/node@24.2.0) + '@rushstack/terminal': 0.15.4(@types/node@24.2.1) '@types/argparse': 1.0.38 argparse: 1.0.10 string-argv: 0.3.2 transitivePeerDependencies: - '@types/node' - '@storybook/addon-docs@9.1.1(@types/react@19.1.9)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))': + '@storybook/addon-docs@9.1.1(@types/react@19.1.9)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@19.1.9)(react@19.1.1) - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) + '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) '@storybook/icons': 1.4.0(react-dom@19.1.1(react@19.1.1))(react@19.1.1) - '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) + '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-onboarding@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))': + '@storybook/addon-onboarding@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) - '@storybook/builder-vite@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))': + '@storybook/builder-vite@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: - '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + '@storybook/csf-plugin': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) ts-dedent: 2.2.0 - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) - '@storybook/csf-plugin@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))': + '@storybook/csf-plugin@9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))': dependencies: - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -7526,39 +7526,39 @@ snapshots: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - '@storybook/react-dom-shim@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))': + '@storybook/react-dom-shim@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))': dependencies: react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) - '@storybook/react-vite@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))': + '@storybook/react-vite@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(rollup@4.46.2)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - '@storybook/builder-vite': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) - '@storybook/react': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2) + '@storybook/builder-vite': 9.1.1(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) + '@storybook/react': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2) find-up: 7.0.0 magic-string: 0.30.17 react: 19.1.1 react-docgen: 8.0.0 react-dom: 19.1.1(react@19.1.1) resolve: 1.22.10 - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) tsconfig-paths: 4.2.0 - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)': + '@storybook/react@9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))) + '@storybook/react-dom-shim': 9.1.1(react-dom@19.1.1(react@19.1.1))(react@19.1.1)(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))) react: 19.1.1 react-dom: 19.1.1(react@19.1.1) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) optionalDependencies: typescript: 5.9.2 @@ -7570,10 +7570,10 @@ snapshots: dependencies: tslib: 2.8.1 - '@tanstack/eslint-plugin-query@5.83.1(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@tanstack/eslint-plugin-query@5.83.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.5.1) transitivePeerDependencies: - supports-color - typescript @@ -7700,11 +7700,11 @@ snapshots: '@types/node@12.20.55': {} - '@types/node@20.19.9': + '@types/node@20.19.10': dependencies: undici-types: 6.21.0 - '@types/node@24.2.0': + '@types/node@24.2.1': dependencies: undici-types: 7.10.0 @@ -7738,7 +7738,7 @@ snapshots: '@types/webpack@5.28.5': dependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 tapable: 2.2.2 webpack: 5.101.0 transitivePeerDependencies: @@ -7749,15 +7749,15 @@ snapshots: '@types/whatwg-mimetype@3.0.2': {} - '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@eslint-community/regexpp': 4.12.1 - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/scope-manager': 8.39.0 - '@typescript-eslint/type-utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/type-utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) graphemer: 1.4.0 ignore: 7.0.5 natural-compare: 1.4.0 @@ -7766,14 +7766,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) '@typescript-eslint/visitor-keys': 8.39.0 debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -7796,13 +7796,13 @@ snapshots: dependencies: typescript: 5.9.2 - '@typescript-eslint/type-utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/type-utils@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) debug: 4.4.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) ts-api-utils: 2.1.0(typescript@5.9.2) typescript: 5.9.2 transitivePeerDependencies: @@ -7826,13 +7826,13 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2)': + '@typescript-eslint/utils@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2)': dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) '@typescript-eslint/scope-manager': 8.39.0 '@typescript-eslint/types': 8.39.0 '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -7844,7 +7844,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitejs/plugin-react@5.0.0(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))': + '@vitejs/plugin-react@5.0.0(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx-self': 7.27.1(@babel/core@7.28.0) @@ -7852,11 +7852,11 @@ snapshots: '@rolldown/pluginutils': 1.0.0-beta.30 '@types/babel__core': 7.20.5 react-refresh: 0.17.0 - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) transitivePeerDependencies: - supports-color - '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1))': + '@vitest/coverage-v8@3.2.4(vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: '@ampproject/remapping': 2.3.0 '@bcoe/v8-coverage': 1.0.2 @@ -7871,7 +7871,7 @@ snapshots: std-env: 3.9.0 test-exclude: 7.0.1 tinyrainbow: 2.0.0 - vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) + vitest: 3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1) transitivePeerDependencies: - supports-color @@ -7883,13 +7883,13 @@ snapshots: chai: 5.2.1 tinyrainbow: 2.0.0 - '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1))': + '@vitest/mocker@3.2.4(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.17 optionalDependencies: - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) '@vitest/pretty-format@3.2.4': dependencies: @@ -7917,15 +7917,15 @@ snapshots: loupe: 3.2.0 tinyrainbow: 2.0.0 - '@volar/language-core@2.4.22': + '@volar/language-core@2.4.23': dependencies: - '@volar/source-map': 2.4.22 + '@volar/source-map': 2.4.23 - '@volar/source-map@2.4.22': {} + '@volar/source-map@2.4.23': {} - '@volar/typescript@2.4.22': + '@volar/typescript@2.4.23': dependencies: - '@volar/language-core': 2.4.22 + '@volar/language-core': 2.4.23 path-browserify: 1.0.1 vscode-uri: 3.1.0 @@ -7949,7 +7949,7 @@ snapshots: '@vue/language-core@2.2.0(typescript@5.9.2)': dependencies: - '@volar/language-core': 2.4.22 + '@volar/language-core': 2.4.23 '@vue/compiler-dom': 3.5.18 '@vue/compiler-vue2': 2.7.16 '@vue/shared': 3.5.18 @@ -8771,17 +8771,17 @@ snapshots: browserslist@4.21.5: dependencies: - caniuse-lite: 1.0.30001733 + caniuse-lite: 1.0.30001734 electron-to-chromium: 1.5.199 node-releases: 2.0.19 update-browserslist-db: 1.1.3(browserslist@4.21.5) - browserslist@4.25.1: + browserslist@4.25.2: dependencies: - caniuse-lite: 1.0.30001733 + caniuse-lite: 1.0.30001734 electron-to-chromium: 1.5.199 node-releases: 2.0.19 - update-browserslist-db: 1.1.3(browserslist@4.25.1) + update-browserslist-db: 1.1.3(browserslist@4.25.2) buffer-from@1.1.2: {} @@ -8806,7 +8806,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001733: {} + caniuse-lite@1.0.30001734: {} ccount@2.0.1: {} @@ -8893,7 +8893,7 @@ snapshots: core-js-compat@3.45.0: dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 core-js@3.45.0: {} @@ -9211,44 +9211,44 @@ snapshots: escape-string-regexp@5.0.0: {} - eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)): + eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) - eslint-plugin-devup@2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2): + eslint-plugin-devup@2.0.5(@types/eslint@9.6.1)(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@eslint/js': 9.32.0 - '@tanstack/eslint-plugin-query': 5.83.1(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) - eslint-config-prettier: 10.1.8(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2) - eslint-plugin-react: 7.37.5(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-react-hooks: 5.2.0(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-simple-import-sort: 12.1.1(eslint@9.32.0(jiti@2.5.1)) - eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)) + '@eslint/js': 9.33.0 + '@tanstack/eslint-plugin-query': 5.83.1(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.5.1) + eslint-config-prettier: 10.1.8(eslint@9.33.0(jiti@2.5.1)) + eslint-plugin-prettier: 5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2) + eslint-plugin-react: 7.37.5(eslint@9.33.0(jiti@2.5.1)) + eslint-plugin-react-hooks: 5.2.0(eslint@9.33.0(jiti@2.5.1)) + eslint-plugin-simple-import-sort: 12.1.1(eslint@9.33.0(jiti@2.5.1)) + eslint-plugin-unused-imports: 4.1.4(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)) prettier: 3.6.2 - typescript-eslint: 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + typescript-eslint: 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) transitivePeerDependencies: - '@types/eslint' - '@typescript-eslint/eslint-plugin' - supports-color - typescript - eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.32.0(jiti@2.5.1)))(eslint@9.32.0(jiti@2.5.1))(prettier@3.6.2): + eslint-plugin-prettier@5.5.4(@types/eslint@9.6.1)(eslint-config-prettier@10.1.8(eslint@9.33.0(jiti@2.5.1)))(eslint@9.33.0(jiti@2.5.1))(prettier@3.6.2): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) prettier: 3.6.2 prettier-linter-helpers: 1.0.0 synckit: 0.11.11 optionalDependencies: '@types/eslint': 9.6.1 - eslint-config-prettier: 10.1.8(eslint@9.32.0(jiti@2.5.1)) + eslint-config-prettier: 10.1.8(eslint@9.33.0(jiti@2.5.1)) - eslint-plugin-react-hooks@5.2.0(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-react-hooks@5.2.0(eslint@9.33.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) - eslint-plugin-react@7.37.5(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-react@7.37.5(eslint@9.33.0(jiti@2.5.1)): dependencies: array-includes: 3.1.9 array.prototype.findlast: 1.2.5 @@ -9256,7 +9256,7 @@ snapshots: array.prototype.tosorted: 1.1.4 doctrine: 2.1.0 es-iterator-helpers: 1.2.1 - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) estraverse: 5.3.0 hasown: 2.0.2 jsx-ast-utils: 3.3.5 @@ -9270,24 +9270,24 @@ snapshots: string.prototype.matchall: 4.0.12 string.prototype.repeat: 1.0.0 - eslint-plugin-simple-import-sort@12.1.1(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-simple-import-sort@12.1.1(eslint@9.33.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) - eslint-plugin-storybook@9.1.1(eslint@9.32.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2): + eslint-plugin-storybook@9.1.1(eslint@9.33.0(jiti@2.5.1))(storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)))(typescript@5.9.2): dependencies: - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) - storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.5.1) + storybook: 9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) transitivePeerDependencies: - supports-color - typescript - eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1)): + eslint-plugin-unused-imports@4.1.4(@typescript-eslint/eslint-plugin@8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1)): dependencies: - eslint: 9.32.0(jiti@2.5.1) + eslint: 9.33.0(jiti@2.5.1) optionalDependencies: - '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) eslint-scope@5.1.1: dependencies: @@ -9303,15 +9303,15 @@ snapshots: eslint-visitor-keys@4.2.1: {} - eslint@9.32.0(jiti@2.5.1): + eslint@9.33.0(jiti@2.5.1): dependencies: - '@eslint-community/eslint-utils': 4.7.0(eslint@9.32.0(jiti@2.5.1)) + '@eslint-community/eslint-utils': 4.7.0(eslint@9.33.0(jiti@2.5.1)) '@eslint-community/regexpp': 4.12.1 '@eslint/config-array': 0.21.0 '@eslint/config-helpers': 0.3.1 '@eslint/core': 0.15.2 '@eslint/eslintrc': 3.3.1 - '@eslint/js': 9.32.0 + '@eslint/js': 9.33.0 '@eslint/plugin-kit': 0.3.5 '@humanfs/node': 0.16.6 '@humanwhocodes/module-importer': 1.0.1 @@ -9404,7 +9404,7 @@ snapshots: eval@0.1.8: dependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 require-like: 0.1.2 events@3.3.0: {} @@ -9621,7 +9621,7 @@ snapshots: happy-dom@18.0.1: dependencies: - '@types/node': 20.19.9 + '@types/node': 20.19.10 '@types/whatwg-mimetype': 3.0.2 whatwg-mimetype: 3.0.0 @@ -9943,7 +9943,7 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 merge-stream: 2.0.0 supports-color: 8.1.1 @@ -10579,7 +10579,7 @@ snapshots: dependencies: '@next/env': 15.4.6 '@swc/helpers': 0.5.15 - caniuse-lite: 1.0.30001733 + caniuse-lite: 1.0.30001734 postcss: 8.4.31 react: 19.1.1 react-dom: 19.1.1(react@19.1.1) @@ -11306,13 +11306,13 @@ snapshots: es-errors: 1.3.0 internal-slot: 1.1.0 - storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)): + storybook@9.1.1(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.6.4 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.8 @@ -11561,13 +11561,13 @@ snapshots: possible-typed-array-names: 1.1.0 reflect.getprototypeof: 1.0.10 - typescript-eslint@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2): + typescript-eslint@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2): dependencies: - '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - '@typescript-eslint/parser': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/eslint-plugin': 8.39.0(@typescript-eslint/parser@8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2))(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + '@typescript-eslint/parser': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) '@typescript-eslint/typescript-estree': 8.39.0(typescript@5.9.2) - '@typescript-eslint/utils': 8.39.0(eslint@9.32.0(jiti@2.5.1))(typescript@5.9.2) - eslint: 9.32.0(jiti@2.5.1) + '@typescript-eslint/utils': 8.39.0(eslint@9.33.0(jiti@2.5.1))(typescript@5.9.2) + eslint: 9.33.0(jiti@2.5.1) typescript: 5.9.2 transitivePeerDependencies: - supports-color @@ -11654,9 +11654,9 @@ snapshots: escalade: 3.2.0 picocolors: 1.1.1 - update-browserslist-db@1.1.3(browserslist@4.25.1): + update-browserslist-db@1.1.3(browserslist@4.25.2): dependencies: - browserslist: 4.25.1 + browserslist: 4.25.2 escalade: 3.2.0 picocolors: 1.1.1 @@ -11676,13 +11676,13 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite-node@3.2.4(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1): + vite-node@3.2.4(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1): dependencies: cac: 6.7.14 debug: 4.4.1 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) transitivePeerDependencies: - '@types/node' - jiti @@ -11697,11 +11697,11 @@ snapshots: - tsx - yaml - vite-plugin-dts@4.5.4(@types/node@24.2.0)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)): + vite-plugin-dts@4.5.4(@types/node@24.2.1)(rollup@4.46.2)(typescript@5.9.2)(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)): dependencies: - '@microsoft/api-extractor': 7.52.10(@types/node@24.2.0) + '@microsoft/api-extractor': 7.52.10(@types/node@24.2.1) '@rollup/pluginutils': 5.2.0(rollup@4.46.2) - '@volar/typescript': 2.4.22 + '@volar/typescript': 2.4.23 '@vue/language-core': 2.2.0(typescript@5.9.2) compare-versions: 6.1.1 debug: 4.4.1 @@ -11710,13 +11710,13 @@ snapshots: magic-string: 0.30.17 typescript: 5.9.2 optionalDependencies: - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) transitivePeerDependencies: - '@types/node' - rollup - supports-color - vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1): + vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1): dependencies: esbuild: 0.25.8 fdir: 6.4.6(picomatch@4.0.3) @@ -11725,16 +11725,16 @@ snapshots: rollup: 4.46.2 tinyglobby: 0.2.14 optionalDependencies: - '@types/node': 24.2.0 + '@types/node': 24.2.1 fsevents: 2.3.3 jiti: 2.5.1 terser: 5.43.1 - vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.0)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1): + vitest@3.2.4(@types/debug@4.1.12)(@types/node@24.2.1)(happy-dom@18.0.1)(jiti@2.5.1)(terser@5.43.1): dependencies: '@types/chai': 5.2.2 '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1)) + '@vitest/mocker': 3.2.4(vite@6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1)) '@vitest/pretty-format': 3.2.4 '@vitest/runner': 3.2.4 '@vitest/snapshot': 3.2.4 @@ -11752,12 +11752,12 @@ snapshots: tinyglobby: 0.2.14 tinypool: 1.1.1 tinyrainbow: 2.0.0 - vite: 6.3.5(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) - vite-node: 3.2.4(@types/node@24.2.0)(jiti@2.5.1)(terser@5.43.1) + vite: 6.3.5(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) + vite-node: 3.2.4(@types/node@24.2.1)(jiti@2.5.1)(terser@5.43.1) why-is-node-running: 2.3.0 optionalDependencies: '@types/debug': 4.1.12 - '@types/node': 24.2.0 + '@types/node': 24.2.1 happy-dom: 18.0.1 transitivePeerDependencies: - jiti @@ -11794,7 +11794,7 @@ snapshots: '@webassemblyjs/wasm-parser': 1.14.1 acorn: 8.15.0 acorn-import-phases: 1.0.4(acorn@8.15.0) - browserslist: 4.25.1 + browserslist: 4.25.2 chrome-trace-event: 1.0.4 enhanced-resolve: 5.18.3 es-module-lexer: 1.7.0