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 (
+
+ )
+}
+
+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 (
+
+ Select {value}
+
+ Option 1
+ Option 2
+
+ Option 3
+ Option 4
+
+
+
+
+ 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 (
+
+ Select {value}
+
+ Option 1
+ Option 2
+
+ Option 3
+ Option 4
+
+
+
+
+ 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
+
+
+
+
+
+ Option 5
+
+
+
+
+ Option 6
+ Option 7
+
+
+
+ >
+)
+
+describe('Select', () => {
+ afterEach(() => {
+ vi.clearAllMocks()
+ })
+
+ it('should render', () => {
+ const { container } = render({children})
+ 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(
+
+ {children}
+
,
+ )
+ 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(
+
+ {children}
+ ,
+ )
+ 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(
+
+ {children}
+ ,
+ )
+ 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({children})
+ 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({children})
+ 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({children})
+ 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({children})
+ 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(
+
+ Select
+
+
+ Option 1
+
+
+ Option 2
+
+
+ ,
+ )
+ 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(
+
+ {children}
+ ,
+ )
+ 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({children})
+ 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({children})
+ 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({children})
+ 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({children})
+ 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({children})
+ 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(
+
+ {children}
+ ,
+ )
+ 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(
+
+ Select
+
+
+ Option 1
+
+
+ Option 2
+ Option 3
+
+ ,
+ )
+ 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(
+
+ Select
+
+ Option 1
+ Option 2
+
+ ,
+ )
+ 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(
+
+ Select
+
+
+ Option 1
+
+
+ Option 2
+ Option 3
+
+ ,
+ )
+ 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(
+
+ {children}
+ ,
+ )
+ 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(
+
+ Select
+
+
+ Option 1
+
+
+ Option 2
+ Option 3
+
+ ,
+ )
+ 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