;
-
-// eslint-disable-next-line @typescript-eslint/ban-types
-export type BoxComponent = (
- props: P & BoxProps,
-) => React.ReactNode | null;
-
-export const Box = forwardRef(function Box<
- E extends React.ElementType = React.ElementType,
->({ as, ...rest }: BoxProps, ref: React.Ref) {
- return createElement(as ?? "span", {
- ...rest,
- ref,
- });
-});
diff --git a/components/ui/Box/index.ts b/components/ui/Box/index.ts
deleted file mode 100644
index 2a063cc..0000000
--- a/components/ui/Box/index.ts
+++ /dev/null
@@ -1 +0,0 @@
-export * from "./Box";
diff --git a/components/ui/Button/Button.tsx b/components/ui/Button/Button.tsx
index 037ed4b..d7586d4 100644
--- a/components/ui/Button/Button.tsx
+++ b/components/ui/Button/Button.tsx
@@ -1,11 +1,11 @@
-import React, { forwardRef } from "react";
-import { Box, BoxComponent, BoxProps } from "../Box";
+import { ButtonHTMLAttributes, forwardRef, HTMLProps } from "react";
+import clsx from "clsx";
export type ButtonVariant = "primary" | "default" | "text";
-export type ButtonProps = {
+export type ButtonProps = {
variant?: ButtonVariant;
-} & BoxProps;
+} & ButtonHTMLAttributes;
const COLOR_MAP: Record = {
default: "border-gray-700",
@@ -14,16 +14,38 @@ const COLOR_MAP: Record = {
"border-primary-700 text-primary-700 hover:bg-primary-700 hover:bg-opacity-20 focus focus:bg-opacity-40",
};
-export const Button: BoxComponent = forwardRef(function Button(
- { as, className = "", variant = "default", ...rest },
- ref,
-) {
- return (
-
- );
-});
+export const Button = forwardRef(
+ function Button({ className = "", variant = "default", ...rest }, ref) {
+ return (
+
+ );
+ },
+);
+
+export type ButtonLinkProps = {
+ variant?: ButtonVariant;
+} & HTMLProps;
+
+export const ButtonLink = forwardRef(
+ function Button({ className = "", variant = "default", ...rest }, ref) {
+ return (
+
+ );
+ },
+);
diff --git a/components/ui/index.ts b/components/ui/index.ts
index a113a4a..150919b 100644
--- a/components/ui/index.ts
+++ b/components/ui/index.ts
@@ -1,5 +1,4 @@
export * from "./Alert";
-export * from "./Box";
export * from "./Button";
export * from "./Footer";
export * from "./Grid";
diff --git a/next-env.d.ts b/next-env.d.ts
index 4f11a03..a4a7b3f 100644
--- a/next-env.d.ts
+++ b/next-env.d.ts
@@ -2,4 +2,4 @@
///
// NOTE: This file should not be edited
-// see https://nextjs.org/docs/basic-features/typescript for more information.
+// see https://nextjs.org/docs/pages/building-your-application/configuring/typescript for more information.
diff --git a/package-lock.json b/package-lock.json
index 6012e5b..e377d9c 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -8,29 +8,29 @@
"name": "@thorbens/nihongosensei",
"version": "0.1.0",
"dependencies": {
- "@heroicons/react": "^2.1.3",
+ "@heroicons/react": "^2.1.5",
"@socialgouv/matomo-next": "^1.9.0",
"clsx": "^2.1.1",
"kuromoji": "^0.1.2",
- "mysql2": "3.10.0",
- "next": "^14.2.3",
+ "mysql2": "^3.11.3",
+ "next": "^14.2.12",
"react": "^18.3.1",
"react-dom": "18.3.1",
"react-paginate": "^8.2.0",
- "use-debounce": "^10.0.1"
+ "use-debounce": "^10.0.3"
},
"devDependencies": {
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^15.0.2",
- "@types/jest": "^29.5.11",
+ "@testing-library/jest-dom": "^6.5.0",
+ "@testing-library/react": "^15.0.7",
+ "@types/jest": "^29.5.13",
"@types/kuromoji": "^0.1.3",
- "@types/node": "^20.13.0",
- "@types/react": "^18.3.3",
+ "@types/node": "^20.16.5",
+ "@types/react": "^18.3.7",
"@types/react-dom": "^18.3.0",
"@types/react-paginate": "^7.1.4",
"@typescript-eslint/eslint-plugin": "^6.19.1",
"@typescript-eslint/parser": "^6.19.1",
- "autoprefixer": "^10.4.19",
+ "autoprefixer": "^10.4.20",
"eslint": "^8.56.0",
"eslint-config-next": "^14.2.2",
"eslint-config-prettier": "^9.1.0",
@@ -40,11 +40,11 @@
"husky": "^8.0.3",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
- "postcss": "^8.4.38",
- "prettier": "^3.3.0",
+ "postcss": "^8.4.47",
+ "prettier": "^3.3.3",
"prettier-plugin-organize-imports": "^3.2.4",
"pretty-quick": "^4.0.0",
- "tailwindcss": "^3.4.3",
+ "tailwindcss": "^3.4.12",
"typescript": "^5.4.5"
}
},
@@ -58,9 +58,9 @@
}
},
"node_modules/@adobe/css-tools": {
- "version": "4.3.3",
- "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.3.tgz",
- "integrity": "sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==",
+ "version": "4.4.0",
+ "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.4.0.tgz",
+ "integrity": "sha512-Ff9+ksdQQB3rMncgqDK78uLznstjyfIf2Arnh22pW8kBpLs6rpKDwgnZT46hin5Hl1WzazzK64DOrhSwYpS7bQ==",
"dev": true
},
"node_modules/@alloc/quick-lru": {
@@ -806,9 +806,9 @@
}
},
"node_modules/@heroicons/react": {
- "version": "2.1.3",
- "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.3.tgz",
- "integrity": "sha512-fEcPfo4oN345SoqdlCDdSa4ivjaKbk0jTd+oubcgNxnNgAfzysfwWfQUr+51wigiWHQQRiZNd1Ao0M5Y3M2EGg==",
+ "version": "2.1.5",
+ "resolved": "https://registry.npmjs.org/@heroicons/react/-/react-2.1.5.tgz",
+ "integrity": "sha512-FuzFN+BsHa+7OxbvAERtgBTNeZpUjgM/MIizfVkSCL2/edriN0Hx/DWRCR//aPYwO5QX/YlgLGXk+E3PcfZwjA==",
"peerDependencies": {
"react": ">= 16"
}
@@ -1489,9 +1489,9 @@
"dev": true
},
"node_modules/@next/env": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.3.tgz",
- "integrity": "sha512-W7fd7IbkfmeeY2gXrzJYDx8D2lWKbVoTIj1o1ScPHNzvp30s1AuoEFSdr39bC5sjxJaxTtq3OTCZboNp0lNWHA=="
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.12.tgz",
+ "integrity": "sha512-3fP29GIetdwVIfIRyLKM7KrvJaqepv+6pVodEbx0P5CaMLYBtx+7eEg8JYO5L9sveJO87z9eCReceZLi0hxO1Q=="
},
"node_modules/@next/eslint-plugin-next": {
"version": "14.2.2",
@@ -1549,9 +1549,9 @@
}
},
"node_modules/@next/swc-darwin-arm64": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.3.tgz",
- "integrity": "sha512-3pEYo/RaGqPP0YzwnlmPN2puaF2WMLM3apt5jLW2fFdXD9+pqcoTzRk+iZsf8ta7+quAe4Q6Ms0nR0SFGFdS1A==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.12.tgz",
+ "integrity": "sha512-crHJ9UoinXeFbHYNok6VZqjKnd8rTd7K3Z2zpyzF1ch7vVNKmhjv/V7EHxep3ILoN8JB9AdRn/EtVVyG9AkCXw==",
"cpu": [
"arm64"
],
@@ -1564,9 +1564,9 @@
}
},
"node_modules/@next/swc-darwin-x64": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.3.tgz",
- "integrity": "sha512-6adp7waE6P1TYFSXpY366xwsOnEXM+y1kgRpjSRVI2CBDOcbRjsJ67Z6EgKIqWIue52d2q/Mx8g9MszARj8IEA==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.12.tgz",
+ "integrity": "sha512-JbEaGbWq18BuNBO+lCtKfxl563Uw9oy2TodnN2ioX00u7V1uzrsSUcg3Ep9ce+P0Z9es+JmsvL2/rLphz+Frcw==",
"cpu": [
"x64"
],
@@ -1579,9 +1579,9 @@
}
},
"node_modules/@next/swc-linux-arm64-gnu": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.3.tgz",
- "integrity": "sha512-cuzCE/1G0ZSnTAHJPUT1rPgQx1w5tzSX7POXSLaS7w2nIUJUD+e25QoXD/hMfxbsT9rslEXugWypJMILBj/QsA==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.12.tgz",
+ "integrity": "sha512-qBy7OiXOqZrdp88QEl2H4fWalMGnSCrr1agT/AVDndlyw2YJQA89f3ttR/AkEIP9EkBXXeGl6cC72/EZT5r6rw==",
"cpu": [
"arm64"
],
@@ -1594,9 +1594,9 @@
}
},
"node_modules/@next/swc-linux-arm64-musl": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.3.tgz",
- "integrity": "sha512-0D4/oMM2Y9Ta3nGuCcQN8jjJjmDPYpHX9OJzqk42NZGJocU2MqhBq5tWkJrUQOQY9N+In9xOdymzapM09GeiZw==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.12.tgz",
+ "integrity": "sha512-EfD9L7o9biaQxjwP1uWXnk3vYZi64NVcKUN83hpVkKocB7ogJfyH2r7o1pPnMtir6gHZiGCeHKagJ0yrNSLNHw==",
"cpu": [
"arm64"
],
@@ -1609,9 +1609,9 @@
}
},
"node_modules/@next/swc-linux-x64-gnu": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.3.tgz",
- "integrity": "sha512-ENPiNnBNDInBLyUU5ii8PMQh+4XLr4pG51tOp6aJ9xqFQ2iRI6IH0Ds2yJkAzNV1CfyagcyzPfROMViS2wOZ9w==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.12.tgz",
+ "integrity": "sha512-iQ+n2pxklJew9IpE47hE/VgjmljlHqtcD5UhZVeHICTPbLyrgPehaKf2wLRNjYH75udroBNCgrSSVSVpAbNoYw==",
"cpu": [
"x64"
],
@@ -1624,9 +1624,9 @@
}
},
"node_modules/@next/swc-linux-x64-musl": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.3.tgz",
- "integrity": "sha512-BTAbq0LnCbF5MtoM7I/9UeUu/8ZBY0i8SFjUMCbPDOLv+un67e2JgyN4pmgfXBwy/I+RHu8q+k+MCkDN6P9ViQ==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.12.tgz",
+ "integrity": "sha512-rFkUkNwcQ0ODn7cxvcVdpHlcOpYxMeyMfkJuzaT74xjAa5v4fxP4xDk5OoYmPi8QNLDs3UgZPMSBmpBuv9zKWA==",
"cpu": [
"x64"
],
@@ -1639,9 +1639,9 @@
}
},
"node_modules/@next/swc-win32-arm64-msvc": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.3.tgz",
- "integrity": "sha512-AEHIw/dhAMLNFJFJIJIyOFDzrzI5bAjI9J26gbO5xhAKHYTZ9Or04BesFPXiAYXDNdrwTP2dQceYA4dL1geu8A==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.12.tgz",
+ "integrity": "sha512-PQFYUvwtHs/u0K85SG4sAdDXYIPXpETf9mcEjWc0R4JmjgMKSDwIU/qfZdavtP6MPNiMjuKGXHCtyhR/M5zo8g==",
"cpu": [
"arm64"
],
@@ -1654,9 +1654,9 @@
}
},
"node_modules/@next/swc-win32-ia32-msvc": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.3.tgz",
- "integrity": "sha512-vga40n1q6aYb0CLrM+eEmisfKCR45ixQYXuBXxOOmmoV8sYST9k7E3US32FsY+CkkF7NtzdcebiFT4CHuMSyZw==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.12.tgz",
+ "integrity": "sha512-FAj2hMlcbeCV546eU2tEv41dcJb4NeqFlSXU/xL/0ehXywHnNpaYajOUvn3P8wru5WyQe6cTZ8fvckj/2XN4Vw==",
"cpu": [
"ia32"
],
@@ -1669,9 +1669,9 @@
}
},
"node_modules/@next/swc-win32-x64-msvc": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.3.tgz",
- "integrity": "sha512-Q1/zm43RWynxrO7lW4ehciQVj+5ePBhOK+/K2P7pLFX3JaJ/IZVC69SHidrmZSOkqz7ECIOhhy7XhAFG4JYyHA==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.12.tgz",
+ "integrity": "sha512-yu8QvV53sBzoIVRHsxCHqeuS8jYq6Lrmdh0briivuh+Brsp6xjg80MAozUsBTAV9KNmY08KlX0KYTWz1lbPzEg==",
"cpu": [
"x64"
],
@@ -1836,48 +1836,23 @@
}
},
"node_modules/@testing-library/jest-dom": {
- "version": "6.4.2",
- "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.2.tgz",
- "integrity": "sha512-CzqH0AFymEMG48CpzXFriYYkOjk6ZGPCLMhW9e9jg3KMCn5OfJecF8GtGW7yGfR/IgCe3SX8BSwjdzI6BBbZLw==",
+ "version": "6.5.0",
+ "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.5.0.tgz",
+ "integrity": "sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==",
"dev": true,
"dependencies": {
- "@adobe/css-tools": "^4.3.2",
- "@babel/runtime": "^7.9.2",
+ "@adobe/css-tools": "^4.4.0",
"aria-query": "^5.0.0",
"chalk": "^3.0.0",
"css.escape": "^1.5.1",
"dom-accessibility-api": "^0.6.3",
- "lodash": "^4.17.15",
+ "lodash": "^4.17.21",
"redent": "^3.0.0"
},
"engines": {
"node": ">=14",
"npm": ">=6",
"yarn": ">=1"
- },
- "peerDependencies": {
- "@jest/globals": ">= 28",
- "@types/bun": "latest",
- "@types/jest": ">= 28",
- "jest": ">= 28",
- "vitest": ">= 0.32"
- },
- "peerDependenciesMeta": {
- "@jest/globals": {
- "optional": true
- },
- "@types/bun": {
- "optional": true
- },
- "@types/jest": {
- "optional": true
- },
- "jest": {
- "optional": true
- },
- "vitest": {
- "optional": true
- }
}
},
"node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": {
@@ -1887,9 +1862,9 @@
"dev": true
},
"node_modules/@testing-library/react": {
- "version": "15.0.2",
- "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-15.0.2.tgz",
- "integrity": "sha512-5mzIpuytB1ctpyywvyaY2TAAUQVCZIGqwiqFQf6u9lvj/SJQepGUzNV18Xpk+NLCaCE2j7CWrZE0tEf9xLZYiQ==",
+ "version": "15.0.7",
+ "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-15.0.7.tgz",
+ "integrity": "sha512-cg0RvEdD1TIhhkm1IeYMQxrzy0MtUNfa3minv4MjbgcYzJAZ7yD0i0lwoPOTPr+INtiXFezt2o8xMSnyHhEn2Q==",
"dev": true,
"dependencies": {
"@babel/runtime": "^7.12.5",
@@ -1900,8 +1875,14 @@
"node": ">=18"
},
"peerDependencies": {
+ "@types/react": "^18.0.0",
"react": "^18.0.0",
"react-dom": "^18.0.0"
+ },
+ "peerDependenciesMeta": {
+ "@types/react": {
+ "optional": true
+ }
}
},
"node_modules/@tootallnate/once": {
@@ -2000,9 +1981,9 @@
}
},
"node_modules/@types/jest": {
- "version": "29.5.11",
- "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.11.tgz",
- "integrity": "sha512-S2mHmYIVe13vrm6q4kN6fLYYAka15ALQki/vgDC3mIukEOx8WJlv0kQPM+d4w8Gp6u0uSdKND04IlTXBv0rwnQ==",
+ "version": "29.5.13",
+ "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz",
+ "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==",
"dev": true,
"dependencies": {
"expect": "^29.0.0",
@@ -2036,9 +2017,9 @@
}
},
"node_modules/@types/jest/node_modules/react-is": {
- "version": "18.2.0",
- "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
- "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==",
+ "version": "18.3.1",
+ "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz",
+ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==",
"dev": true
},
"node_modules/@types/jsdom": {
@@ -2074,12 +2055,12 @@
}
},
"node_modules/@types/node": {
- "version": "20.13.0",
- "resolved": "https://registry.npmjs.org/@types/node/-/node-20.13.0.tgz",
- "integrity": "sha512-FM6AOb3khNkNIXPnHFDYaHerSv8uN22C91z098AnGccVu+Pcdhi+pNUFDi0iLmPIsVE0JBD0KVS7mzUYt4nRzQ==",
+ "version": "20.16.5",
+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.5.tgz",
+ "integrity": "sha512-VwYCweNo3ERajwy0IUlqqcyZ8/A7Zwa9ZP3MnENWcB11AejO+tLy3pu850goUW2FC/IJMdZUfKpX/yxL1gymCA==",
"dev": true,
"dependencies": {
- "undici-types": "~5.26.4"
+ "undici-types": "~6.19.2"
}
},
"node_modules/@types/prop-types": {
@@ -2089,9 +2070,9 @@
"dev": true
},
"node_modules/@types/react": {
- "version": "18.3.3",
- "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.3.tgz",
- "integrity": "sha512-hti/R0pS0q1/xx+TsI73XIqk26eBsISZ2R0wUijXIngRK9R/e7Xw/cXVxQK7R5JjW+SV4zGcn5hXjudkN/pLIw==",
+ "version": "18.3.7",
+ "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.7.tgz",
+ "integrity": "sha512-KUnDCJF5+AiZd8owLIeVHqmW9yM4sqmDVf2JRJiBMFkGvkoZ4/WyV2lL4zVsoinmRS/W3FeEdZLEWFRofnT2FQ==",
"dev": true,
"dependencies": {
"@types/prop-types": "*",
@@ -2693,9 +2674,9 @@
"dev": true
},
"node_modules/autoprefixer": {
- "version": "10.4.19",
- "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",
- "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",
+ "version": "10.4.20",
+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz",
+ "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==",
"dev": true,
"funding": [
{
@@ -2712,11 +2693,11 @@
}
],
"dependencies": {
- "browserslist": "^4.23.0",
- "caniuse-lite": "^1.0.30001599",
+ "browserslist": "^4.23.3",
+ "caniuse-lite": "^1.0.30001646",
"fraction.js": "^4.3.7",
"normalize-range": "^0.1.2",
- "picocolors": "^1.0.0",
+ "picocolors": "^1.0.1",
"postcss-value-parser": "^4.2.0"
},
"bin": {
@@ -2741,6 +2722,14 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/aws-ssl-profiles": {
+ "version": "1.1.2",
+ "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz",
+ "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==",
+ "engines": {
+ "node": ">= 6.0.0"
+ }
+ },
"node_modules/axe-core": {
"version": "4.7.2",
"resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.7.2.tgz",
@@ -2950,9 +2939,9 @@
}
},
"node_modules/browserslist": {
- "version": "4.23.0",
- "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz",
- "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==",
+ "version": "4.23.3",
+ "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz",
+ "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==",
"dev": true,
"funding": [
{
@@ -2969,10 +2958,10 @@
}
],
"dependencies": {
- "caniuse-lite": "^1.0.30001587",
- "electron-to-chromium": "^1.4.668",
- "node-releases": "^2.0.14",
- "update-browserslist-db": "^1.0.13"
+ "caniuse-lite": "^1.0.30001646",
+ "electron-to-chromium": "^1.5.4",
+ "node-releases": "^2.0.18",
+ "update-browserslist-db": "^1.1.0"
},
"bin": {
"browserslist": "cli.js"
@@ -3063,9 +3052,9 @@
}
},
"node_modules/caniuse-lite": {
- "version": "1.0.30001611",
- "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001611.tgz",
- "integrity": "sha512-19NuN1/3PjA3QI8Eki55N8my4LzfkMCRLgCVfrl/slbSAchQfV0+GwjPrK3rq37As4UCLlM/DHajbKkAqbv92Q==",
+ "version": "1.0.30001662",
+ "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001662.tgz",
+ "integrity": "sha512-sgMUVwLmGseH8ZIrm1d51UbrhqMCH3jvS7gF/M6byuHOnKyLOBL7W8yz5V02OHwgLGA36o/AFhWzzh4uc5aqTA==",
"funding": [
{
"type": "opencollective",
@@ -3725,9 +3714,9 @@
"dev": true
},
"node_modules/electron-to-chromium": {
- "version": "1.4.744",
- "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.744.tgz",
- "integrity": "sha512-nAGcF0yeKKfrP13LMFr5U1eghfFSvFLg302VUFzWlcjPOnUYd52yU5x6PBYrujhNbc4jYmZFrGZFK+xasaEzVA==",
+ "version": "1.5.25",
+ "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.25.tgz",
+ "integrity": "sha512-kMb204zvK3PsSlgvvwzI3wBIcAw15tRkYk+NQdsjdDtcQWTp2RABbMQ9rUBy8KNEOM+/E6ep+XC3AykiWZld4g==",
"dev": true
},
"node_modules/emittery": {
@@ -3898,9 +3887,9 @@
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
+ "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
"dev": true,
"engines": {
"node": ">=6"
@@ -7212,6 +7201,20 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lru.min": {
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.0.tgz",
+ "integrity": "sha512-86xXMB6DiuKrTqkE/lRL0drlNh568awttBPJ7D66fzDHpy6NC5r3N+Ly/lKCS2zjmeGyvFDx670z0cD0PVBwGA==",
+ "engines": {
+ "bun": ">=1.0.0",
+ "deno": ">=1.30.0",
+ "node": ">=8.0.0"
+ },
+ "funding": {
+ "type": "github",
+ "url": "https://github.com/sponsors/wellwelwel"
+ }
+ },
"node_modules/lz-string": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz",
@@ -7358,15 +7361,16 @@
"dev": true
},
"node_modules/mysql2": {
- "version": "3.10.0",
- "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.10.0.tgz",
- "integrity": "sha512-qx0mfWYt1DpTPkw8mAcHW/OwqqyNqBLBHvY5IjN8+icIYTjt6znrgYJ+gxqNNRpVknb5Wc/gcCM4XjbCR0j5tw==",
+ "version": "3.11.3",
+ "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.11.3.tgz",
+ "integrity": "sha512-Qpu2ADfbKzyLdwC/5d4W7+5Yz7yBzCU05YWt5npWzACST37wJsB23wgOSo00qi043urkiRwXtEvJc9UnuLX/MQ==",
"dependencies": {
+ "aws-ssl-profiles": "^1.1.1",
"denque": "^2.1.0",
"generate-function": "^2.3.1",
"iconv-lite": "^0.6.3",
"long": "^5.2.1",
- "lru-cache": "^8.0.0",
+ "lru.min": "^1.0.0",
"named-placeholders": "^1.1.3",
"seq-queue": "^0.0.5",
"sqlstring": "^2.3.2"
@@ -7375,14 +7379,6 @@
"node": ">= 8.0"
}
},
- "node_modules/mysql2/node_modules/lru-cache": {
- "version": "8.0.5",
- "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-8.0.5.tgz",
- "integrity": "sha512-MhWWlVnuab1RG5/zMRRcVGXZLCXrZTgfwMikgzCegsPnG62yDQo5JnqKkrK4jO5iKqDAZGItAqN5CtKBCBWRUA==",
- "engines": {
- "node": ">=16.14"
- }
- },
"node_modules/mz": {
"version": "2.7.0",
"resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",
@@ -7437,11 +7433,11 @@
"dev": true
},
"node_modules/next": {
- "version": "14.2.3",
- "resolved": "https://registry.npmjs.org/next/-/next-14.2.3.tgz",
- "integrity": "sha512-dowFkFTR8v79NPJO4QsBUtxv0g9BrS/phluVpMAt2ku7H+cbcBJlopXjkWlwxrk/xGqMemr7JkGPGemPrLLX7A==",
+ "version": "14.2.12",
+ "resolved": "https://registry.npmjs.org/next/-/next-14.2.12.tgz",
+ "integrity": "sha512-cDOtUSIeoOvt1skKNihdExWMTybx3exnvbFbb9ecZDIxlvIbREQzt9A5Km3Zn3PfU+IFjyYGsHS+lN9VInAGKA==",
"dependencies": {
- "@next/env": "14.2.3",
+ "@next/env": "14.2.12",
"@swc/helpers": "0.5.5",
"busboy": "1.6.0",
"caniuse-lite": "^1.0.30001579",
@@ -7456,15 +7452,15 @@
"node": ">=18.17.0"
},
"optionalDependencies": {
- "@next/swc-darwin-arm64": "14.2.3",
- "@next/swc-darwin-x64": "14.2.3",
- "@next/swc-linux-arm64-gnu": "14.2.3",
- "@next/swc-linux-arm64-musl": "14.2.3",
- "@next/swc-linux-x64-gnu": "14.2.3",
- "@next/swc-linux-x64-musl": "14.2.3",
- "@next/swc-win32-arm64-msvc": "14.2.3",
- "@next/swc-win32-ia32-msvc": "14.2.3",
- "@next/swc-win32-x64-msvc": "14.2.3"
+ "@next/swc-darwin-arm64": "14.2.12",
+ "@next/swc-darwin-x64": "14.2.12",
+ "@next/swc-linux-arm64-gnu": "14.2.12",
+ "@next/swc-linux-arm64-musl": "14.2.12",
+ "@next/swc-linux-x64-gnu": "14.2.12",
+ "@next/swc-linux-x64-musl": "14.2.12",
+ "@next/swc-win32-arm64-msvc": "14.2.12",
+ "@next/swc-win32-ia32-msvc": "14.2.12",
+ "@next/swc-win32-x64-msvc": "14.2.12"
},
"peerDependencies": {
"@opentelemetry/api": "^1.1.0",
@@ -7519,9 +7515,9 @@
"dev": true
},
"node_modules/node-releases": {
- "version": "2.0.14",
- "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz",
- "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
+ "version": "2.0.18",
+ "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz",
+ "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
"dev": true
},
"node_modules/normalize-path": {
@@ -7894,9 +7890,9 @@
}
},
"node_modules/picocolors": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
- "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz",
+ "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw=="
},
"node_modules/picomatch": {
"version": "2.3.1",
@@ -7993,9 +7989,9 @@
}
},
"node_modules/postcss": {
- "version": "8.4.38",
- "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz",
- "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==",
+ "version": "8.4.47",
+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz",
+ "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==",
"dev": true,
"funding": [
{
@@ -8013,8 +8009,8 @@
],
"dependencies": {
"nanoid": "^3.3.7",
- "picocolors": "^1.0.0",
- "source-map-js": "^1.2.0"
+ "picocolors": "^1.1.0",
+ "source-map-js": "^1.2.1"
},
"engines": {
"node": "^10 || ^12 || >=14"
@@ -8133,9 +8129,9 @@
}
},
"node_modules/prettier": {
- "version": "3.3.0",
- "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.0.tgz",
- "integrity": "sha512-J9odKxERhCQ10OC2yb93583f6UnYutOeiV5i0zEDS7UGTdUt0u+y8erxl3lBKvwo/JHyyoEdXjwp4dke9oyZ/g==",
+ "version": "3.3.3",
+ "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
+ "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
"dev": true,
"bin": {
"prettier": "bin/prettier.cjs"
@@ -8749,9 +8745,9 @@
}
},
"node_modules/source-map-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz",
- "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==",
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz",
+ "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==",
"engines": {
"node": ">=0.10.0"
}
@@ -9105,9 +9101,9 @@
}
},
"node_modules/tailwindcss": {
- "version": "3.4.3",
- "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz",
- "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==",
+ "version": "3.4.12",
+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.12.tgz",
+ "integrity": "sha512-Htf/gHj2+soPb9UayUNci/Ja3d8pTmu9ONTfh4QY8r3MATTZOzmv6UYWF7ZwikEIC8okpfqmGqrmDehua8mF8w==",
"dev": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
@@ -9461,9 +9457,9 @@
}
},
"node_modules/undici-types": {
- "version": "5.26.5",
- "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
- "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==",
+ "version": "6.19.8",
+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
"dev": true
},
"node_modules/universalify": {
@@ -9485,9 +9481,9 @@
}
},
"node_modules/update-browserslist-db": {
- "version": "1.0.13",
- "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
- "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
+ "version": "1.1.0",
+ "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz",
+ "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==",
"dev": true,
"funding": [
{
@@ -9504,8 +9500,8 @@
}
],
"dependencies": {
- "escalade": "^3.1.1",
- "picocolors": "^1.0.0"
+ "escalade": "^3.1.2",
+ "picocolors": "^1.0.1"
},
"bin": {
"update-browserslist-db": "cli.js"
@@ -9534,14 +9530,14 @@
}
},
"node_modules/use-debounce": {
- "version": "10.0.1",
- "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.1.tgz",
- "integrity": "sha512-0uUXjOfm44e6z4LZ/woZvkM8FwV1wiuoB6xnrrOmeAEjRDDzTLQNRFtYHvqUsJdrz1X37j0rVGIVp144GLHGKg==",
+ "version": "10.0.3",
+ "resolved": "https://registry.npmjs.org/use-debounce/-/use-debounce-10.0.3.tgz",
+ "integrity": "sha512-DxQSI9ZKso689WM1mjgGU3ozcxU1TJElBJ3X6S4SMzMNcm2lVH0AHmyXB+K7ewjz2BSUKJTDqTcwtSMRfB89dg==",
"engines": {
"node": ">= 16.0.0"
},
"peerDependencies": {
- "react": ">=16.8.0"
+ "react": "*"
}
},
"node_modules/util-deprecate": {
diff --git a/package.json b/package.json
index 4ad553a..2863a58 100644
--- a/package.json
+++ b/package.json
@@ -12,29 +12,29 @@
"pre-commit": "pretty-quick --staged"
},
"dependencies": {
- "@heroicons/react": "^2.1.3",
+ "@heroicons/react": "^2.1.5",
"@socialgouv/matomo-next": "^1.9.0",
"clsx": "^2.1.1",
"kuromoji": "^0.1.2",
- "mysql2": "3.10.0",
- "next": "^14.2.3",
+ "mysql2": "^3.11.3",
+ "next": "^14.2.12",
"react": "^18.3.1",
"react-dom": "18.3.1",
"react-paginate": "^8.2.0",
- "use-debounce": "^10.0.1"
+ "use-debounce": "^10.0.3"
},
"devDependencies": {
- "@testing-library/jest-dom": "^6.4.2",
- "@testing-library/react": "^15.0.2",
- "@types/jest": "^29.5.11",
+ "@testing-library/jest-dom": "^6.5.0",
+ "@testing-library/react": "^15.0.7",
+ "@types/jest": "^29.5.13",
"@types/kuromoji": "^0.1.3",
- "@types/node": "^20.13.0",
- "@types/react": "^18.3.3",
+ "@types/node": "^20.16.5",
+ "@types/react": "^18.3.7",
"@types/react-dom": "^18.3.0",
"@types/react-paginate": "^7.1.4",
"@typescript-eslint/eslint-plugin": "^6.19.1",
"@typescript-eslint/parser": "^6.19.1",
- "autoprefixer": "^10.4.19",
+ "autoprefixer": "^10.4.20",
"eslint": "^8.56.0",
"eslint-config-next": "^14.2.2",
"eslint-config-prettier": "^9.1.0",
@@ -44,11 +44,11 @@
"husky": "^8.0.3",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
- "postcss": "^8.4.38",
- "prettier": "^3.3.0",
+ "postcss": "^8.4.47",
+ "prettier": "^3.3.3",
"prettier-plugin-organize-imports": "^3.2.4",
"pretty-quick": "^4.0.0",
- "tailwindcss": "^3.4.3",
+ "tailwindcss": "^3.4.12",
"typescript": "^5.4.5"
}
}