diff --git a/.claude/skills/frontend-atomic-design/SKILL.md b/.claude/skills/frontend-atomic-design/SKILL.md index aaafd8e..dd2a708 100644 --- a/.claude/skills/frontend-atomic-design/SKILL.md +++ b/.claude/skills/frontend-atomic-design/SKILL.md @@ -5,7 +5,8 @@ description: Create modern, responsive frontend components and layouts using ato # Atomic Design Frontend System with Tailwind CSS -A comprehensive guide for building modern, responsive frontend applications using atomic design principles and Tailwind CSS. +A comprehensive guide for building modern, responsive frontend applications +using atomic design principles and Tailwind CSS. ## Core Principles @@ -14,20 +15,25 @@ A comprehensive guide for building modern, responsive frontend applications usin Atomic Design breaks UI into five distinct levels: #### **Atoms** -Smallest, indivisible UI elements that cannot be broken down without losing functionality. + +Smallest, indivisible UI elements that cannot be broken down without losing +functionality. + - Buttons, input fields, labels, icons, text styles - Color variables, spacing units, typography scales - Simple, pure, reusable building blocks ```jsx // Example: Button Atom - ``` #### **Molecules** + Groups of atoms bonded together, forming simple functional units. + - Search bars (input + button + icon) - Form fields (label + input + error message) - Card headers (avatar + title + subtitle) @@ -35,18 +41,16 @@ Groups of atoms bonded together, forming simple functional units. ```jsx // Example: Search Molecule -
- - +
+ +
``` #### **Organisms** + Complex functional units made of groups of molecules and/or atoms. + - Header/Navigation bars - Form sections (multiple form molecules) - Card layouts with multiple sections @@ -55,28 +59,33 @@ Complex functional units made of groups of molecules and/or atoms. ```jsx // Example: Product Card Organism -
- +
+
-

Product Name

-

Description

-
- $99 - +

Product Name

+

Description

+
+ $99 +
``` #### **Templates** -Page-level wireframes showing layout and component placement without final content. + +Page-level wireframes showing layout and component placement without final +content. + - Single-column layouts - Two-column layouts (sidebar + main) - Grid-based layouts - Hero + content sections #### **Pages** + Specific instances of templates populated with real content and data. + - Homepage with actual products - User profile with real user data - Dashboard with live metrics @@ -86,6 +95,7 @@ Specific instances of templates populated with real content and data. ## Design System Variables (Reusable Values) ### Color Palette + ```css /* Define in Tailwind config or use CSS variables */ Primary: #2563eb (blue-600) @@ -97,6 +107,7 @@ Neutral: #6b7280 (gray-500) ``` ### Typography Scale + ```css H1: 32px (2rem) - font-bold H2: 24px (1.5rem) - font-bold @@ -107,6 +118,7 @@ Tiny: 12px (0.75rem) - font-normal ``` ### Spacing Scale + ```css xs: 4px (0.25rem) sm: 8px (0.5rem) @@ -117,6 +129,7 @@ xl: 32px (2rem) ``` ### Border Radius + ```css Subtle: 4px (rounded-sm) Standard: 8px (rounded-lg) @@ -125,6 +138,7 @@ Full: 9999px (rounded-full) ``` ### Box Shadows + ```css Subtle: 0 1px 2px rgba(0,0,0,0.05) Soft: 0 4px 6px rgba(0,0,0,0.07) @@ -137,6 +151,7 @@ Strong: 0 20px 25px rgba(0,0,0,0.15) ## Responsive Design Strategy ### Breakpoints (Tailwind Default) + ``` Mobile: < 640px (sm) Tablet: 640px (md, lg) @@ -144,15 +159,17 @@ Desktop: 1024px+ (xl, 2xl) ``` ### Mobile-First Approach + 1. **Start with mobile styles** (default, no prefix) 2. **Layer tablet styles** (md: prefix) 3. **Layer desktop styles** (lg:, xl: prefix) ### Example: Responsive Layout + ```jsx // Mobile: 1 column, Tablet: 2 columns, Desktop: 3 columns -
- {items.map(item => ( +
+ {items.map((item) => ( ))}
@@ -161,39 +178,42 @@ Desktop: 1024px+ (xl, 2xl) ### Common Responsive Patterns **Responsive Typography** + ```jsx -

+

Responsive Heading

``` **Responsive Padding/Margins** + ```jsx -
- Content with responsive spacing -
+
Content with responsive spacing
``` **Responsive Grid** + ```jsx -
+
{/* Grid items */}
``` **Responsive Flexbox** + ```jsx -
+
Main content
``` **Responsive Images** + ```jsx -Responsive image ``` @@ -203,6 +223,7 @@ Desktop: 1024px+ (xl, 2xl) ## Modern Design Patterns ### 1. Consistency & Visual Hierarchy + - **Use consistent spacing**: Apply spacing scale uniformly - **Establish clear hierarchy**: Size, weight, color for emphasis - **Group related content**: Use whitespace to separate sections @@ -211,16 +232,15 @@ Desktop: 1024px+ (xl, 2xl) ```jsx
-

Section Title

+

Section Title

Description text

-
- {/* Related items with consistent spacing */} -
+
{/* Related items with consistent spacing */}
``` ### 2. Interactive Feedback + - **Hover states**: Subtle color/shadow changes - **Active states**: Indicate current selection - **Focus states**: Keyboard navigation support @@ -228,35 +248,26 @@ Desktop: 1024px+ (xl, 2xl) - **Transitions**: Smooth animations (200-300ms) ```jsx - ``` ### 3. Depth & Layering + - **Subtle shadows**: Create depth without heaviness - **Elevation levels**: Consistent shadow progression - **Overlays**: Semi-transparent backgrounds for modals - **Z-index strategy**: Clear layering hierarchy ```jsx -
+
Card content
``` ### 4. Color Usage + - **Primary action**: Most frequent call-to-action - **Secondary action**: Alternative actions - **Semantic colors**: Status indicators (success, warning, danger) @@ -264,16 +275,15 @@ Desktop: 1024px+ (xl, 2xl) - **Limited palette**: 3-5 colors maximum in most designs ### 5. Whitespace & Breathing Room + - Don't crowd elements - Use consistent gap values (gap-4, gap-6, gap-8) - Separate sections with vertical rhythm - Generous padding in cards and containers ```jsx -
-
- {/* Sections with good breathing room */} -
+
+
{/* Sections with good breathing room */}
``` @@ -282,6 +292,7 @@ Desktop: 1024px+ (xl, 2xl) ## Tailwind CSS Best Practices ### 1. Use Utility Classes Effectively + ```jsx // Good: Semantic, reusable, organized
@@ -452,8 +448,8 @@ export const ComponentName = ({ prop1, prop2, className = '' }) => { 6. **Touch targets**: Minimum 44x44px for interactive elements ```jsx -
- + {/* Login Form */} diff --git a/app/(main)/page.tsx b/app/(main)/page.tsx index b5f0978..7dba76b 100644 --- a/app/(main)/page.tsx +++ b/app/(main)/page.tsx @@ -1,10 +1,10 @@ "use client"; +import { SearchBar } from "@/components/molecules/search-bar"; import { CategorySidebar } from "@/components/organisms/navigation"; import { ProductGrid } from "@/components/organisms/product-grid"; -import { SearchBar } from "@/components/molecules/search-bar"; -import { useMenu } from "@/lib/menu-context"; import { MENU_CATEGORIES } from "@/lib/constants"; +import { useMenu } from "@/lib/menu-context"; import { useEffect, useState } from "react"; /** @@ -75,10 +75,7 @@ export default function Home() {
{/* ── Product grid (organism handles mobile category menu + grid) ── */} - +
); diff --git a/app/(main)/payment/page.tsx b/app/(main)/payment/page.tsx index 76ead1e..653c83e 100644 --- a/app/(main)/payment/page.tsx +++ b/app/(main)/payment/page.tsx @@ -48,10 +48,19 @@ export default function PaymentPage() { Tên sản phẩm - Giá tiền - Mô tả - Số lượng - + + Giá tiền + + + Mô tả + + + Số lượng + + Xóa @@ -75,7 +84,7 @@ export default function PaymentPage() {
diff --git a/components/molecules/cards/PaymentSummaryCard.tsx b/components/molecules/cards/PaymentSummaryCard.tsx index fb561ef..adc8505 100644 --- a/components/molecules/cards/PaymentSummaryCard.tsx +++ b/components/molecules/cards/PaymentSummaryCard.tsx @@ -13,14 +13,13 @@ export default function PaymentSummaryCard({ isCustomer = false, backHref, }: PaymentSummaryCardProps) { - - const [isReviewOpen, setIsReviewOpen] = useState(false); - const handlePayment = () => { + const [isReviewOpen, setIsReviewOpen] = useState(false); + const handlePayment = () => { // UI-only: open review modal after "payment" if (isCustomer) { - setIsReviewOpen(true); - } -}; + setIsReviewOpen(true); + } + }; return (
); diff --git a/components/organisms/analytics/PieChart.tsx b/components/organisms/analytics/PieChart.tsx index 726a7b3..e096084 100644 --- a/components/organisms/analytics/PieChart.tsx +++ b/components/organisms/analytics/PieChart.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useMemo } from "react"; +import { useMemo, useState } from "react"; export interface PieSlice { label: string; diff --git a/components/organisms/forms/LoginForm.tsx b/components/organisms/forms/LoginForm.tsx index b9eaddc..28606a8 100644 --- a/components/organisms/forms/LoginForm.tsx +++ b/components/organisms/forms/LoginForm.tsx @@ -1,10 +1,10 @@ +import Button from "@/components/atoms/buttons/Button"; import ErrorMessageLogin from "@/components/atoms/errors/ErrorMessageLogin"; import LoginInput from "@/components/atoms/inputs/LoginInput"; import { useAuth } from "@/lib/auth-context"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { FormEvent, useState } from "react"; -import Button from "@/components/atoms/buttons/Button"; export default function LoginForm() { const router = useRouter(); diff --git a/components/organisms/manager/ProductsTab.tsx b/components/organisms/manager/ProductsTab.tsx index 9d5c27c..12f7fbf 100644 --- a/components/organisms/manager/ProductsTab.tsx +++ b/components/organisms/manager/ProductsTab.tsx @@ -152,7 +152,10 @@ export default function ProductsTab() { ) : ( filtered.map((p) => ( - +

{p.name}

diff --git a/k8s.yaml b/k8s.yaml index 5ac12be..8d13018 100644 --- a/k8s.yaml +++ b/k8s.yaml @@ -16,7 +16,7 @@ spec: spec: containers: - name: frontend-container - image: git.demonkernel.io.vn/foodsurf/frontend:1.1.2 + image: git.demonkernel.io.vn/foodsurf/frontend:1.2.0 ports: - containerPort: 3000 resources: diff --git a/package-lock.json b/package-lock.json index 89ad516..a31d527 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "temp", - "version": "1.1.2", + "version": "1.2.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "temp", - "version": "1.1.2", + "version": "1.2.0", "dependencies": { "@tailwindcss/postcss": "^4.2.2", "@types/node": "^20.19.37", diff --git a/package.json b/package.json index 1bcd383..c8aeefb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "temp", - "version": "1.1.2", + "version": "1.2.0", "private": true, "scripts": { "dev": "next dev", @@ -30,7 +30,7 @@ "@types/react-dom": "^19.2.3", "eslint": "^9.39.4", "eslint-config-next": "16.1.7", - "prettier": "^3.8.2", + "prettier": "^3.8.3", "prettier-plugin-embed": "^0.5.1", "prettier-plugin-groovy": "^0.2.1", "prettier-plugin-tailwindcss": "^0.7.2", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ed158af..c31e1b4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,9 @@ importers: next: specifier: 16.1.7 version: 16.1.7(@babel/core@7.29.0)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) + nextjs: + specifier: ^0.0.3 + version: 0.0.3 react: specifier: 19.2.3 version: 19.2.3 @@ -47,7 +50,7 @@ importers: version: 13.1.5(semantic-release@25.0.3(typescript@5.9.3)) '@trivago/prettier-plugin-sort-imports': specifier: ^6.0.2 - version: 6.0.2(prettier@3.8.2) + version: 6.0.2(prettier@3.8.3) '@types/react-dom': specifier: ^19.2.3 version: 19.2.3(@types/react@19.2.14) @@ -58,17 +61,17 @@ importers: specifier: 16.1.7 version: 16.1.7(@typescript-eslint/parser@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) prettier: - specifier: ^3.8.2 - version: 3.8.2 + specifier: ^3.8.3 + version: 3.8.3 prettier-plugin-embed: specifier: ^0.5.1 version: 0.5.1 prettier-plugin-groovy: specifier: ^0.2.1 - version: 0.2.1(prettier@3.8.2) + version: 0.2.1(prettier@3.8.3) prettier-plugin-tailwindcss: specifier: ^0.7.2 - version: 0.7.2(@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.2))(prettier@3.8.2) + version: 0.7.2(@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3))(prettier@3.8.3) semantic-release: specifier: ^25.0.3 version: 25.0.3(typescript@5.9.3) @@ -171,11 +174,11 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@emnapi/core@1.9.2': - resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==} + '@emnapi/core@1.10.0': + resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==} - '@emnapi/runtime@1.9.2': - resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==} + '@emnapi/runtime@1.10.0': + resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==} '@emnapi/wasi-threads@1.2.1': resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==} @@ -1092,8 +1095,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - baseline-browser-mapping@2.10.18: - resolution: {integrity: sha512-VSnGQAOLtP5mib/DPyg2/t+Tlv65NTBz83BJBJvmLVHHuKJVaDOBvJJykiT5TR++em5nfAySPccDZDa4oSrn8A==} + baseline-browser-mapping@2.10.19: + resolution: {integrity: sha512-qCkNLi2sfBOn8XhZQ0FXsT1Ki/Yo5P90hrkRamVFRS7/KV9hpfA4HkoWNU152+8w0zPjnxo5psx5NL3PSGgv5g==} engines: {node: '>=6.0.0'} hasBin: true @@ -1171,8 +1174,8 @@ packages: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - caniuse-lite@1.0.30001787: - resolution: {integrity: sha512-mNcrMN9KeI68u7muanUpEejSLghOKlVhRqS/Za2IeyGllJ9I9otGpR9g3nsw7n4W378TE/LyIteA0+/FOZm4Kg==} + caniuse-lite@1.0.30001788: + resolution: {integrity: sha512-6q8HFp+lOQtcf7wBK+uEenxymVWkGKkjFpCvw5W25cmMwEDU45p1xQFBQv8JDlMMry7eNxyBaR+qxgmTUZkIRQ==} chalk@2.4.1: resolution: {integrity: sha512-ObN6h1v2fTJSmUXoS3nMQ92LbDK9be4TV+6G+omQlGJFdcUX5heKi1LZ1YnRMIgwTLEj3E24bT6tYni50rlCfQ==} @@ -1463,8 +1466,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - electron-to-chromium@1.5.336: - resolution: {integrity: sha512-AbH9q9J455r/nLmdNZes0G0ZKcRX73FicwowalLs6ijwOmCJSRRrLX63lcAlzy9ux3dWK1w1+1nsBJEWN11hcQ==} + electron-to-chromium@1.5.340: + resolution: {integrity: sha512-908qahOGocRMinT2nM3ajCEM99H4iPdv84eagPP3FfZy/1ZGeOy2CZYzjhms81ckOPCXPlW7LkY4XpxD8r1DrA==} emoji-regex@10.6.0: resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} @@ -1620,11 +1623,11 @@ packages: peerDependencies: eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9 - eslint-plugin-react-hooks@7.0.1: - resolution: {integrity: sha512-O0d0m04evaNzEPoSW+59Mezf8Qt0InfgGIBJnpC0h3NH/WjUAR7BIKUfysC6todmtiZ/A0oUVS8Gce0WhBrHsA==} + eslint-plugin-react-hooks@7.1.0: + resolution: {integrity: sha512-LDicyhrRFrIaheDYryeM2W8gWyZXnAs4zIr2WVPiOSeTmIu2RjR4x/9N0xLaRWZ+9hssBDGo3AadcohuzAvSvg==} engines: {node: '>=18'} peerDependencies: - eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0 || ^10.0.0 eslint-plugin-react@7.37.5: resolution: {integrity: sha512-Qteup0SqU15kdocexFNAJMvCJEfa2xUKNV4CC1xsVMrIIqEy3SQ/rqyxCWNzfrd3/ldy6HMlD2e0JDVpDg2qIA==} @@ -1889,8 +1892,8 @@ packages: resolution: {integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==} engines: {node: '>= 0.4'} - get-tsconfig@4.13.7: - resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} + get-tsconfig@4.14.0: + resolution: {integrity: sha512-yTb+8DXzDREzgvYmh6s9vHsSVCHeC0G3PI5bEXNBHtmshPnO+S5O7qgLEOn0I5QvMy6kpZN8K1NKGyilLb93wA==} git-log-parser@1.2.1: resolution: {integrity: sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==} @@ -2649,6 +2652,10 @@ packages: sass: optional: true + nextjs@0.0.3: + resolution: {integrity: sha512-mYbDUo4/sRAZ8TqK63PCpYnFiLg7BICG/ot9+guOrUKd4/Fo71ZmEQ41IZbH6nqbQvG7SXTBuofJXAIWfNho0w==} + engines: {node: '>=0.8.21'} + nocache@2.0.0: resolution: {integrity: sha512-YdKcy2x0dDwOh+8BEuHvA+mnOKAhmMQDgKBOCUGaLpewdmsRYguYZSom3yA+/OrE61O/q+NMQANnun65xpI1Hw==} @@ -2992,8 +2999,8 @@ packages: resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} engines: {node: ^10 || ^12 || >=14} - postcss@8.5.9: - resolution: {integrity: sha512-7a70Nsot+EMX9fFU3064K/kdHWZqGVY+BADLyXc8Dfv+mTLLVl6JzJpPaCZ2kQL9gIJvKXSLMHhqdRRjwQeFtw==} + postcss@8.5.10: + resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} engines: {node: ^10 || ^12 || >=14} prelude-ls@1.2.1: @@ -3064,8 +3071,8 @@ packages: prettier-plugin-svelte: optional: true - prettier@3.8.2: - resolution: {integrity: sha512-8c3mgTe0ASwWAJK+78dpviD+A8EqhndQPUBpNUIPt6+xWlIigCwfN01lWr9MAede4uqXGTEKeQWTvzb3vjia0Q==} + prettier@3.8.3: + resolution: {integrity: sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==} engines: {node: '>=14'} hasBin: true @@ -3634,8 +3641,8 @@ packages: undici-types@6.21.0: resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} - undici@6.24.1: - resolution: {integrity: sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==} + undici@6.25.0: + resolution: {integrity: sha512-ZgpWDC5gmNiuY9CnLVXEH8rl50xhRCuLNA97fAUnKi8RRuV4E6KG31pDTsLVUKnohJE0I3XDrTeEydAXRw47xg==} engines: {node: '>=18.17'} undici@7.25.0: @@ -3845,7 +3852,7 @@ snapshots: '@actions/http-client@4.0.0': dependencies: tunnel: 0.0.6 - undici: 6.24.1 + undici: 6.25.0 '@actions/io@3.0.2': {} @@ -3966,13 +3973,13 @@ snapshots: '@colors/colors@1.5.0': optional: true - '@emnapi/core@1.9.2': + '@emnapi/core@1.10.0': dependencies: '@emnapi/wasi-threads': 1.2.1 tslib: 2.8.1 optional: true - '@emnapi/runtime@1.9.2': + '@emnapi/runtime@1.10.0': dependencies: tslib: 2.8.1 optional: true @@ -4124,7 +4131,7 @@ snapshots: '@img/sharp-wasm32@0.34.5': dependencies: - '@emnapi/runtime': 1.9.2 + '@emnapi/runtime': 1.10.0 optional: true '@img/sharp-win32-arm64@0.34.5': @@ -4157,8 +4164,8 @@ snapshots: '@napi-rs/wasm-runtime@0.2.12': dependencies: - '@emnapi/core': 1.9.2 - '@emnapi/runtime': 1.9.2 + '@emnapi/core': 1.10.0 + '@emnapi/runtime': 1.10.0 '@tybys/wasm-util': 0.10.1 optional: true @@ -4468,10 +4475,10 @@ snapshots: '@alloc/quick-lru': 5.2.0 '@tailwindcss/node': 4.2.2 '@tailwindcss/oxide': 4.2.2 - postcss: 8.5.9 + postcss: 8.5.10 tailwindcss: 4.2.2 - '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.2)': + '@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3)': dependencies: '@babel/generator': 7.29.1 '@babel/parser': 7.29.2 @@ -4481,7 +4488,7 @@ snapshots: lodash-es: 4.18.1 minimatch: 9.0.9 parse-imports-exports: 0.2.4 - prettier: 3.8.2 + prettier: 3.8.3 transitivePeerDependencies: - supports-color @@ -4874,7 +4881,7 @@ snapshots: balanced-match@4.0.4: {} - baseline-browser-mapping@2.10.18: {} + baseline-browser-mapping@2.10.19: {} basic-auth@2.0.1: dependencies: @@ -4924,9 +4931,9 @@ snapshots: browserslist@4.28.2: dependencies: - baseline-browser-mapping: 2.10.18 - caniuse-lite: 1.0.30001787 - electron-to-chromium: 1.5.336 + baseline-browser-mapping: 2.10.19 + caniuse-lite: 1.0.30001788 + electron-to-chromium: 1.5.340 node-releases: 2.0.37 update-browserslist-db: 1.2.3(browserslist@4.28.2) @@ -4970,7 +4977,7 @@ snapshots: callsites@3.1.0: {} - caniuse-lite@1.0.30001787: {} + caniuse-lite@1.0.30001788: {} chalk@2.4.1: dependencies: @@ -5255,7 +5262,7 @@ snapshots: ee-first@1.1.1: {} - electron-to-chromium@1.5.336: {} + electron-to-chromium@1.5.340: {} emoji-regex@10.6.0: {} @@ -5411,7 +5418,7 @@ snapshots: eslint-plugin-import: 2.32.0(@typescript-eslint/parser@8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3))(eslint-import-resolver-typescript@3.10.1)(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-jsx-a11y: 6.10.2(eslint@9.39.4(jiti@2.6.1)) eslint-plugin-react: 7.37.5(eslint@9.39.4(jiti@2.6.1)) - eslint-plugin-react-hooks: 7.0.1(eslint@9.39.4(jiti@2.6.1)) + eslint-plugin-react-hooks: 7.1.0(eslint@9.39.4(jiti@2.6.1)) globals: 16.4.0 typescript-eslint: 8.58.2(eslint@9.39.4(jiti@2.6.1))(typescript@5.9.3) optionalDependencies: @@ -5435,7 +5442,7 @@ snapshots: '@nolyfill/is-core-module': 1.0.39 debug: 4.4.3 eslint: 9.39.4(jiti@2.6.1) - get-tsconfig: 4.13.7 + get-tsconfig: 4.14.0 is-bun-module: 2.0.0 stable-hash: 0.0.5 tinyglobby: 0.2.16 @@ -5504,7 +5511,7 @@ snapshots: safe-regex-test: 1.1.0 string.prototype.includes: 2.0.1 - eslint-plugin-react-hooks@7.0.1(eslint@9.39.4(jiti@2.6.1)): + eslint-plugin-react-hooks@7.1.0(eslint@9.39.4(jiti@2.6.1)): dependencies: '@babel/core': 7.29.0 '@babel/parser': 7.29.2 @@ -5882,7 +5889,7 @@ snapshots: es-errors: 1.3.0 get-intrinsic: 1.3.0 - get-tsconfig@4.13.7: + get-tsconfig@4.14.0: dependencies: resolve-pkg-maps: 1.0.0 @@ -6579,8 +6586,8 @@ snapshots: dependencies: '@next/env': 16.1.7 '@swc/helpers': 0.5.15 - baseline-browser-mapping: 2.10.18 - caniuse-lite: 1.0.30001787 + baseline-browser-mapping: 2.10.19 + caniuse-lite: 1.0.30001788 postcss: 8.4.31 react: 19.2.3 react-dom: 19.2.3(react@19.2.3) @@ -6599,6 +6606,8 @@ snapshots: - '@babel/core' - babel-plugin-macros + nextjs@0.0.3: {} + nocache@2.0.0: {} node-emoji@2.2.0: @@ -6862,7 +6871,7 @@ snapshots: picocolors: 1.1.1 source-map-js: 1.2.1 - postcss@8.5.9: + postcss@8.5.10: dependencies: nanoid: 3.3.11 picocolors: 1.1.1 @@ -6881,17 +6890,17 @@ snapshots: transitivePeerDependencies: - babel-plugin-macros - prettier-plugin-groovy@0.2.1(prettier@3.8.2): + prettier-plugin-groovy@0.2.1(prettier@3.8.3): dependencies: - prettier: 3.8.2 + prettier: 3.8.3 - prettier-plugin-tailwindcss@0.7.2(@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.2))(prettier@3.8.2): + prettier-plugin-tailwindcss@0.7.2(@trivago/prettier-plugin-sort-imports@6.0.2(prettier@3.8.3))(prettier@3.8.3): dependencies: - prettier: 3.8.2 + prettier: 3.8.3 optionalDependencies: - '@trivago/prettier-plugin-sort-imports': 6.0.2(prettier@3.8.2) + '@trivago/prettier-plugin-sort-imports': 6.0.2(prettier@3.8.3) - prettier@3.8.2: {} + prettier@3.8.3: {} pretty-ms@9.3.0: dependencies: @@ -7617,7 +7626,7 @@ snapshots: undici-types@6.21.0: {} - undici@6.24.1: {} + undici@6.25.0: {} undici@7.25.0: {}