Compare commits

...

8 Commits

Author SHA1 Message Date
Renovate Bot
78b8b887ee Update dependency react to v19.1.0
Some checks failed
Build Nginx-based docker image / build-static-assets (push) Failing after 9s
Add copyright notice / copyright_notice (pull_request) Failing after 19s
Check usage of free licenses / build-static-assets (pull_request) Failing after 12s
Playwright Tests / test (pull_request) Failing after 5s
2025-06-13 02:07:07 +00:00
a74ef0c8b6 Merge pull request 'Add a link to the invitation in the invitation card' (#262) from invitation-link into main
All checks were successful
Check usage of free licenses / build-static-assets (push) Successful in 59s
Playwright Tests / test (push) Successful in 6m35s
Build Nginx-based docker image / build-static-assets (push) Successful in 7m18s
Reviewed-on: #262
2025-06-12 21:08:05 +00:00
87cf2d3bb2 Merge pull request 'Display a basic invitation form on invites page' (#279) from invitation-form into main
Some checks failed
Check usage of free licenses / build-static-assets (push) Successful in 1m57s
Playwright Tests / test (push) Has been cancelled
Build Nginx-based docker image / build-static-assets (push) Has been cancelled
Reviewed-on: #279
2025-06-12 21:04:34 +00:00
5c1f8b0dbe Update the path of the invitation
All checks were successful
Playwright Tests / test (pull_request) Has been skipped
Check usage of free licenses / build-static-assets (pull_request) Successful in 57s
Add copyright notice / copyright_notice (pull_request) Successful in 1m15s
Build Nginx-based docker image / build-static-assets (push) Successful in 11m23s
2025-06-12 22:56:37 +02:00
24e60231d0 Display a basic invitation form on invites page
All checks were successful
Check usage of free licenses / build-static-assets (pull_request) Successful in 22s
Add copyright notice / copyright_notice (pull_request) Successful in 26s
Build Nginx-based docker image / build-static-assets (push) Successful in 4m22s
Playwright Tests / test (pull_request) Successful in 9m39s
2025-06-12 22:54:25 +02:00
943da9c7e8 Merge pull request 'Store the current slug when accessing the website directly' (#278) from fix/slug-website into main
All checks were successful
Check usage of free licenses / build-static-assets (push) Successful in 37s
Playwright Tests / test (push) Successful in 4m2s
Build Nginx-based docker image / build-static-assets (push) Successful in 4m23s
Reviewed-on: #278
2025-06-12 17:11:22 +00:00
cc698102f2 Store the current slug when accessing the website directly
All checks were successful
Check usage of free licenses / build-static-assets (pull_request) Successful in 30s
Add copyright notice / copyright_notice (pull_request) Successful in 58s
Build Nginx-based docker image / build-static-assets (push) Successful in 2m58s
Playwright Tests / test (pull_request) Successful in 4m25s
2025-06-12 19:06:23 +02:00
87bd3fac4b Add a link to the invitation in the invitation card
All checks were successful
Playwright Tests / test (pull_request) Has been skipped
Check usage of free licenses / build-static-assets (pull_request) Successful in 38s
Add copyright notice / copyright_notice (pull_request) Successful in 39s
Build Nginx-based docker image / build-static-assets (push) Successful in 2m20s
2025-06-02 00:08:42 +02:00
7 changed files with 196 additions and 63 deletions

View File

@ -0,0 +1,119 @@
/* Copyright (C) 2024-2025 LibreWeddingPlanner contributors*/
'use client'
import { AbstractApi } from "@/app/api/abstract-api";
import { Invitation, InvitationSerializer } from "@/app/lib/invitation";
import { useParams } from "next/navigation";
import { useEffect, useState } from "react";
import { FloatLabel } from "primereact/floatlabel";
import { Dropdown } from "primereact/dropdown";
import { Guest, GuestSerializer, GuestStatus } from "@/app/lib/guest";
import { Button } from "primereact/button";
type FormResponse = {
attendance: GuestStatus;
};
function GuestForm({ guest, idx }: { guest: Guest, idx: number }) {
const [response, setResponse] = useState<FormResponse>({
attendance: guest.status!
});
const [pendingChanges, setPendingChanges] = useState(false);
const [sending, setSending] = useState(false);
console.log('GuestForm response', response.attendance);
const attendanceOptions: { name: string, code: GuestStatus }[] = [
{
name: 'Attending',
code: 'confirmed'
},
{
name: 'Declined',
code: 'declined'
},
{
name: 'Tentative',
code: 'tentative'
}
];
const api = new AbstractApi<Guest>();
const serializer = new GuestSerializer();
const submitForm = () => {
setSending(true);
setPendingChanges(false);
api.update(serializer, {
id: guest.id!,
status: response.attendance,
}, () => setSending(false));
}
return (
<div
key={guest.id}
className={`px-2 py-6 flex flex-col items-center ${idx !== 0 ? 'border-t border-gray-300' : ''}`}
>
<h2 className="m-2 text-xl font-semibold">{guest.name}</h2>
<Dropdown
value={response.attendance}
options={attendanceOptions}
optionLabel="name"
optionValue="code"
className="rounded-md w-full max-w-xs border border-gray-300"
checkmark={true}
highlightOnSelect={false}
onChange={(e) => {
setPendingChanges(true);
setResponse({ ...response, attendance: e.value })
}}
/>
<Button
label="Save"
icon="pi pi-save"
loading={sending}
onClick={submitForm}
disabled={!pendingChanges || sending}
className="mt-4 max-w-xs"
/>
</div>
)
}
export default function Page() {
const params = useParams<{ slug: string, id: string }>()
const [invitation, setInvitation] = useState<Invitation>();
useEffect(() => {
localStorage.setItem('slug', params.slug);
const api = new AbstractApi<Invitation>();
const serializer = new InvitationSerializer();
api.get(serializer, params.id, (invitation: Invitation) => {
setInvitation(invitation);
});
}, []);
return (
<div className="flex flex-col items-center">
<h1 className="text-2xl font-bold mb-4">Invitation</h1>
{invitation ? (
<div>
<p>We have reserved {invitation.guests.length} seats in your honor. Please, confirm attendance submitting the following form:</p>
{invitation.guests.map((guest, idx) => (
<GuestForm key={guest.id} guest={guest} idx={idx} />
))}
</div>
) : (
<p>Loading...</p>
)}
</div>
);
}

View File

@ -29,7 +29,7 @@ export default function Layout({ children }: { children: React.ReactNode }) {
<div className="max-w-4xl w-full h-full bg-[#f9f9f7] shadow-lg">
<div
className="max-w-4xl lg:m-6 m-3 lg:px-6 px-3 py-24 border-2 border-[#d3d3d1] rounded-xl text-[#958971] flex justify-center"
className="max-w-4xl lg:m-6 m-3 lg:px-6 px-3 lg:py-24 py-2 border-2 border-[#d3d3d1] rounded-xl text-[#958971] flex justify-center"
style={{ height: 'calc(100% - 3rem)' }}
>
{children}

View File

@ -6,8 +6,16 @@ import { AbstractApi } from '@/app/api/abstract-api';
import { Website, WebsiteSerializer } from '@/app/lib/website';
import { useState, useEffect } from 'react';
import DOMPurify from "dompurify";
import { useParams } from 'next/navigation';
export default function Page() {
const params = useParams<{ slug: string }>()
useEffect(() => {
if (typeof window !== 'undefined') {
localStorage.setItem('slug', params.slug);
}
}, []);
const [websiteContent, setWebsiteContent] = useState<string>("");

View File

@ -49,6 +49,7 @@ export class AbstractApi<T extends Entity> implements Api<T> {
body: serializable.toJson(object),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-CSRF-TOKEN': getCsrfToken(),
}
}).then(callback)
@ -61,6 +62,7 @@ export class AbstractApi<T extends Entity> implements Api<T> {
body: serializable.toJson(object),
headers: {
'Content-Type': 'application/json',
'Accept': 'application/json',
'X-CSRF-TOKEN': getCsrfToken(),
}
})

View File

@ -5,8 +5,9 @@
import { AbstractApi } from "@/app/api/abstract-api";
import { Guest } from "@/app/lib/guest";
import { Invitation, InvitationSerializer } from "@/app/lib/invitation";
import { getSlug } from "@/app/lib/utils";
import { draggable, dropTargetForElements } from '@atlaskit/pragmatic-drag-and-drop/element/adapter';
import { TrashIcon } from "@heroicons/react/24/outline";
import { LinkIcon, TrashIcon } from "@heroicons/react/24/outline";
import { useEffect, useRef } from "react";
import { useState } from "react";
@ -24,6 +25,8 @@ function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: {
const api = new AbstractApi<Invitation>();
const serializer = new InvitationSerializer();
const iconClassName = "w-5 h-5 text-white absolute top-2 opacity-0 group-hover:opacity-100 cursor-pointer";
useEffect(() => {
if (ref.current) {
return dropTargetForElements({
@ -53,8 +56,14 @@ function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: {
className="relative flex items-center justify-center w-full bg-green-800 border border-green-900 group"
style={{ aspectRatio: "1.618 / 1" }}
>
<LinkIcon
className={`${iconClassName} right-8`}
onClick={() => {
navigator.clipboard.writeText(`https://${window.location.host}/${getSlug()}/site/invitation/${invitation.id}`);
}}
/>
<TrashIcon
className="w-5 h-5 text-white absolute top-2 right-2 opacity-0 group-hover:opacity-100 cursor-pointer"
className={`${iconClassName} right-2`}
onClick={() => {
if (window.confirm("Are you sure you want to delete this invitation?")) {
api.destroy(serializer, invitation, () => {
@ -64,6 +73,7 @@ function InvitationCard({ invitation, allGuests, onGuestAdded, onDestroy }: {
}}
/>
{guests.length === 0 ? (
<p className="text-center text-yellow-500 text-lg italic">
(empty invitation)

View File

@ -21,7 +21,7 @@
"postcss": "8.5.4",
"primeicons": "^7.0.0",
"primereact": "^10.8.2",
"react": "19.0.0-rc-f38c22b244-20240704",
"react": "19.1.0",
"react-dom": "19.0.0-rc-f38c22b244-20240704",
"tailwindcss": "3.4.17",
"typescript": "5.8.3",
@ -33,7 +33,7 @@
"@playwright/test": "^1.52.0",
"@types/bcrypt": "^5.0.2",
"@types/node": "22.15.30",
"@types/react": "18.3.23",
"@types/react": "19.1.8",
"@types/react-dom": "18.3.7",
"wait-on": "^8.0.3"
},

110
pnpm-lock.yaml generated
View File

@ -13,7 +13,7 @@ importers:
version: 1.7.2
'@heroicons/react':
specifier: ^2.1.4
version: 2.2.0(react@19.0.0-rc-f38c22b244-20240704)
version: 2.2.0(react@19.1.0)
'@tailwindcss/forms':
specifier: ^0.5.7
version: 0.5.10(tailwindcss@3.4.17)
@ -22,7 +22,7 @@ importers:
version: 2.14.0
'@tiptap/react':
specifier: ^2.14.0
version: 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
version: 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)
'@tiptap/starter-kit':
specifier: ^2.14.0
version: 2.14.0
@ -40,10 +40,10 @@ importers:
version: 3.2.6
next:
specifier: 15.3.3
version: 15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
version: 15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)
next-auth:
specifier: 5.0.0-beta.28
version: 5.0.0-beta.28(next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
version: 5.0.0-beta.28(next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0))(react@19.1.0)
postcss:
specifier: 8.5.4
version: 8.5.4
@ -52,13 +52,13 @@ importers:
version: 7.0.0
primereact:
specifier: ^10.8.2
version: 10.9.5(@types/react@18.3.23)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
version: 10.9.5(@types/react@19.1.8)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)
react:
specifier: 19.0.0-rc-f38c22b244-20240704
version: 19.0.0-rc-f38c22b244-20240704
specifier: 19.1.0
version: 19.1.0
react-dom:
specifier: 19.0.0-rc-f38c22b244-20240704
version: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
version: 19.0.0-rc-f38c22b244-20240704(react@19.1.0)
tailwindcss:
specifier: 3.4.17
version: 3.4.17
@ -67,7 +67,7 @@ importers:
version: 5.8.3
use-debounce:
specifier: ^10.0.1
version: 10.0.4(react@19.0.0-rc-f38c22b244-20240704)
version: 10.0.4(react@19.1.0)
uuid:
specifier: 11.1.0
version: 11.1.0
@ -85,11 +85,11 @@ importers:
specifier: 22.15.30
version: 22.15.30
'@types/react':
specifier: 18.3.23
version: 18.3.23
specifier: 19.1.8
version: 19.1.8
'@types/react-dom':
specifier: 18.3.7
version: 18.3.7(@types/react@18.3.23)
version: 18.3.7(@types/react@19.1.8)
wait-on:
specifier: ^8.0.3
version: 8.0.3
@ -518,9 +518,6 @@ packages:
'@types/node@22.15.30':
resolution: {integrity: sha512-6Q7lr06bEHdlfplU6YRbgG1SFBdlsfNC4/lX+SkhiTs0cpJkOElmWls8PxDFv4yY/xKb8Y6SO0OmSX4wgqTZbA==}
'@types/prop-types@15.7.12':
resolution: {integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==}
'@types/react-dom@18.3.7':
resolution: {integrity: sha512-MEe3UeoENYVFXzoXEWsvcpg6ZvlrFNlOQ7EOsvhI3CfAXwzPfO8Qwuxd40nepsYKqyyVQnTdEfv68q91yLcKrQ==}
peerDependencies:
@ -531,8 +528,8 @@ packages:
peerDependencies:
'@types/react': '*'
'@types/react@18.3.23':
resolution: {integrity: sha512-/LDXMQh55EzZQ0uVAZmKKhfENivEvWz6E+EYzh+/MCjMhNsotd+ZHhBGIjFDTi6+fz0OhQQQLbTgdQIxxCsC0w==}
'@types/react@19.1.8':
resolution: {integrity: sha512-AwAfQ2Wa5bCx9WP8nZL2uMZWod7J7/JSplxbTmBQ5ms6QpqNYm672H0Vu9ZVKVngQ+ii4R/byguVEUZQyeg44g==}
'@types/trusted-types@2.0.7':
resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==}
@ -1323,8 +1320,8 @@ packages:
react: '>=16.6.0'
react-dom: '>=16.6.0'
react@19.0.0-rc-f38c22b244-20240704:
resolution: {integrity: sha512-OP8O6Oc1rdR9IdIKJRKaL1PYd4eGkn6f88VqiygWyyG4P4RmPPix5pp7MatqSt9TnBOcVT+lBMGoVxRgUFeudQ==}
react@19.1.0:
resolution: {integrity: sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==}
engines: {node: '>=0.10.0'}
read-cache@1.0.0:
@ -1596,9 +1593,9 @@ snapshots:
dependencies:
'@hapi/hoek': 9.3.0
'@heroicons/react@2.2.0(react@19.0.0-rc-f38c22b244-20240704)':
'@heroicons/react@2.2.0(react@19.1.0)':
dependencies:
react: 19.0.0-rc-f38c22b244-20240704
react: 19.1.0
'@img/sharp-darwin-arm64@0.34.1':
optionalDependencies:
@ -1907,7 +1904,7 @@ snapshots:
prosemirror-transform: 1.10.4
prosemirror-view: 1.40.0
'@tiptap/react@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)':
'@tiptap/react@2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)':
dependencies:
'@tiptap/core': 2.14.0(@tiptap/pm@2.14.0)
'@tiptap/extension-bubble-menu': 2.14.0(@tiptap/core@2.14.0(@tiptap/pm@2.14.0))(@tiptap/pm@2.14.0)
@ -1915,9 +1912,9 @@ snapshots:
'@tiptap/pm': 2.14.0
'@types/use-sync-external-store': 0.0.6
fast-deep-equal: 3.1.3
react: 19.0.0-rc-f38c22b244-20240704
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
use-sync-external-store: 1.5.0(react@19.0.0-rc-f38c22b244-20240704)
react: 19.1.0
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.1.0)
use-sync-external-store: 1.5.0(react@19.1.0)
'@tiptap/starter-kit@2.14.0':
dependencies:
@ -1960,19 +1957,16 @@ snapshots:
dependencies:
undici-types: 6.21.0
'@types/prop-types@15.7.12': {}
'@types/react-dom@18.3.7(@types/react@18.3.23)':
'@types/react-dom@18.3.7(@types/react@19.1.8)':
dependencies:
'@types/react': 18.3.23
'@types/react': 19.1.8
'@types/react-transition-group@4.4.12(@types/react@18.3.23)':
'@types/react-transition-group@4.4.12(@types/react@19.1.8)':
dependencies:
'@types/react': 18.3.23
'@types/react': 19.1.8
'@types/react@18.3.23':
'@types/react@19.1.8':
dependencies:
'@types/prop-types': 15.7.12
csstype: 3.1.3
'@types/trusted-types@2.0.7':
@ -2461,13 +2455,13 @@ snapshots:
nanoid@3.3.8: {}
next-auth@5.0.0-beta.28(next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
next-auth@5.0.0-beta.28(next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0))(react@19.1.0):
dependencies:
'@auth/core': 0.39.1
next: 15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
react: 19.0.0-rc-f38c22b244-20240704
next: 15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)
react: 19.1.0
next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
next@15.3.3(@playwright/test@1.52.0)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0):
dependencies:
'@next/env': 15.3.3
'@swc/counter': 0.1.3
@ -2475,9 +2469,9 @@ snapshots:
busboy: 1.6.0
caniuse-lite: 1.0.30001702
postcss: 8.4.31
react: 19.0.0-rc-f38c22b244-20240704
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
styled-jsx: 5.1.6(react@19.0.0-rc-f38c22b244-20240704)
react: 19.1.0
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.1.0)
styled-jsx: 5.1.6(react@19.1.0)
optionalDependencies:
'@next/swc-darwin-arm64': 15.3.3
'@next/swc-darwin-x64': 15.3.3
@ -2606,14 +2600,14 @@ snapshots:
primeicons@7.0.0: {}
primereact@10.9.5(@types/react@18.3.23)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
primereact@10.9.5(@types/react@19.1.8)(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0):
dependencies:
'@types/react-transition-group': 4.4.12(@types/react@18.3.23)
react: 19.0.0-rc-f38c22b244-20240704
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
react-transition-group: 4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704)
'@types/react-transition-group': 4.4.12(@types/react@19.1.8)
react: 19.1.0
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.1.0)
react-transition-group: 4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0)
optionalDependencies:
'@types/react': 18.3.23
'@types/react': 19.1.8
prop-types@15.8.1:
dependencies:
@ -2732,23 +2726,23 @@ snapshots:
raf-schd@4.0.3: {}
react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704):
react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0):
dependencies:
react: 19.0.0-rc-f38c22b244-20240704
react: 19.1.0
scheduler: 0.25.0-rc-f38c22b244-20240704
react-is@16.13.1: {}
react-transition-group@4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704))(react@19.0.0-rc-f38c22b244-20240704):
react-transition-group@4.4.5(react-dom@19.0.0-rc-f38c22b244-20240704(react@19.1.0))(react@19.1.0):
dependencies:
'@babel/runtime': 7.27.6
dom-helpers: 5.2.1
loose-envify: 1.4.0
prop-types: 15.8.1
react: 19.0.0-rc-f38c22b244-20240704
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.0.0-rc-f38c22b244-20240704)
react: 19.1.0
react-dom: 19.0.0-rc-f38c22b244-20240704(react@19.1.0)
react@19.0.0-rc-f38c22b244-20240704: {}
react@19.1.0: {}
read-cache@1.0.0:
dependencies:
@ -2870,10 +2864,10 @@ snapshots:
dependencies:
ansi-regex: 6.0.1
styled-jsx@5.1.6(react@19.0.0-rc-f38c22b244-20240704):
styled-jsx@5.1.6(react@19.1.0):
dependencies:
client-only: 0.0.1
react: 19.0.0-rc-f38c22b244-20240704
react: 19.1.0
sucrase@3.35.0:
dependencies:
@ -2957,13 +2951,13 @@ snapshots:
escalade: 3.2.0
picocolors: 1.1.1
use-debounce@10.0.4(react@19.0.0-rc-f38c22b244-20240704):
use-debounce@10.0.4(react@19.1.0):
dependencies:
react: 19.0.0-rc-f38c22b244-20240704
react: 19.1.0
use-sync-external-store@1.5.0(react@19.0.0-rc-f38c22b244-20240704):
use-sync-external-store@1.5.0(react@19.1.0):
dependencies:
react: 19.0.0-rc-f38c22b244-20240704
react: 19.1.0
util-deprecate@1.0.2: {}