Compare commits
15 commits
Author | SHA1 | Date | |
---|---|---|---|
872cfe363f | |||
168fcaa731 | |||
be00d68a68 | |||
984646dfbc | |||
ac7d0d35a6 | |||
010c7885dd | |||
a4d33bf1d0 | |||
92acd8a32b | |||
583368c1ba | |||
30b0df062f | |||
7260985de3 | |||
de1a80aed8 | |||
664c6cf283 | |||
142ac33e28 | |||
c014b77f9b |
5 changed files with 205 additions and 146 deletions
2
.github/workflows/tests.yml
vendored
2
.github/workflows/tests.yml
vendored
|
@ -10,7 +10,7 @@ jobs:
|
|||
name: Tests
|
||||
runs-on: docker
|
||||
container:
|
||||
image: cypress/browsers:latest@sha256:9daea41366dfd1b72496bf3e8295eda215a6990c2dbe4f9ff4b8ba47342864fb
|
||||
image: cypress/browsers:latest@sha256:95587c1ce688ce6f59934cc234a753a32a1782ca1c7959707a7d2332e69f6f63
|
||||
options: --user 1001
|
||||
steps:
|
||||
- name: Checkout
|
||||
|
|
|
@ -73,15 +73,15 @@
|
|||
"devDependencies": {
|
||||
"@eslint/eslintrc": "3.3.1",
|
||||
"@tailwindcss/postcss": "4.1.11",
|
||||
"@types/node": "22.15.34",
|
||||
"@types/node": "22.16.0",
|
||||
"@types/react": "19.1.8",
|
||||
"@types/react-big-calendar": "1.16.2",
|
||||
"@types/react-dom": "19.1.6",
|
||||
"@types/swagger-ui-react": "5.18.0",
|
||||
"@types/webpack-env": "1.18.8",
|
||||
"cypress": "14.5.0",
|
||||
"cypress": "14.5.1",
|
||||
"dotenv-cli": "8.0.0",
|
||||
"eslint": "9.30.0",
|
||||
"eslint": "9.30.1",
|
||||
"eslint-config-next": "15.3.4",
|
||||
"eslint-config-prettier": "10.1.5",
|
||||
"orval": "7.10.0",
|
||||
|
|
|
@ -25,14 +25,6 @@ export const BlockedSlotsSchema = zod
|
|||
created_at: zod.date(),
|
||||
updated_at: zod.date(),
|
||||
})
|
||||
.refine(
|
||||
(data) => {
|
||||
return new Date(data.start_time) < new Date(data.end_time);
|
||||
},
|
||||
{
|
||||
message: 'Start time must be before end time',
|
||||
},
|
||||
)
|
||||
.openapi('BlockedSlotsSchema', {
|
||||
description: 'Blocked time slot in the user calendar',
|
||||
});
|
||||
|
@ -47,11 +39,37 @@ export const BlockedSlotResponseSchema = zod.object({
|
|||
blocked_slot: BlockedSlotsSchema,
|
||||
});
|
||||
|
||||
export const createBlockedSlotSchema = BlockedSlotsSchema.omit({
|
||||
id: true,
|
||||
created_at: true,
|
||||
updated_at: true,
|
||||
});
|
||||
export const createBlockedSlotSchema = zod
|
||||
.object({
|
||||
start_time: eventStartTimeSchema,
|
||||
end_time: eventEndTimeSchema,
|
||||
reason: zod.string().nullish(),
|
||||
})
|
||||
.refine(
|
||||
(data) => {
|
||||
return new Date(data.start_time) < new Date(data.end_time);
|
||||
},
|
||||
{
|
||||
message: 'Start time must be before end time',
|
||||
path: ['end_time'],
|
||||
},
|
||||
);
|
||||
|
||||
export const createBlockedSlotClientSchema = zod
|
||||
.object({
|
||||
start_time: zod.iso.datetime({ local: true }),
|
||||
end_time: zod.iso.datetime({ local: true }),
|
||||
reason: zod.string().nullish(),
|
||||
})
|
||||
.refine(
|
||||
(data) => {
|
||||
return new Date(data.start_time) < new Date(data.end_time);
|
||||
},
|
||||
{
|
||||
message: 'Start time must be before end time',
|
||||
path: ['end_time'],
|
||||
},
|
||||
);
|
||||
|
||||
export const updateBlockedSlotSchema = zod.object({
|
||||
start_time: eventStartTimeSchema.optional(),
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
import useZodForm from '@/lib/hooks/useZodForm';
|
||||
import {
|
||||
updateBlockedSlotSchema,
|
||||
createBlockedSlotSchema,
|
||||
createBlockedSlotClientSchema,
|
||||
} from '@/app/api/blocked_slots/validation';
|
||||
import {
|
||||
useGetApiBlockedSlotsSlotID,
|
||||
|
@ -40,12 +40,7 @@ export default function BlockedSlotForm({
|
|||
handleSubmit: handleCreateSubmit,
|
||||
formState: formStateCreate,
|
||||
reset: resetCreate,
|
||||
} = useZodForm(
|
||||
createBlockedSlotSchema.extend({
|
||||
start_time: eventStartTimeSchema.or(zod.iso.datetime({ local: true })),
|
||||
end_time: eventStartTimeSchema.or(zod.iso.datetime({ local: true })),
|
||||
}),
|
||||
);
|
||||
} = useZodForm(createBlockedSlotClientSchema);
|
||||
|
||||
const {
|
||||
register: registerUpdate,
|
||||
|
@ -145,100 +140,146 @@ export default function BlockedSlotForm({
|
|||
});
|
||||
});
|
||||
|
||||
return (
|
||||
<div className='flex items-center justify-center h-full'>
|
||||
<Card className='w-[max(80%, 500px)] max-w-screen p-0 gap-0 max-xl:w-[95%] mx-auto'>
|
||||
<CardHeader className='p-0 m-0 gap-0 px-6'>
|
||||
<div className='h-full mt-0 ml-2 mb-16 flex items-center justify-between max-sm:grid max-sm:grid-row-start:auto max-sm:mb-6 max-sm:mt-10 max-sm:ml-0'>
|
||||
<div className='w-[100px] max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<Logo colorType='monochrome' logoType='submark' width={50} />
|
||||
if (existingBlockedSlotId)
|
||||
return (
|
||||
<div className='flex items-center justify-center h-full'>
|
||||
<Card className='w-[max(80%, 500px)] max-w-screen p-0 gap-0 max-xl:w-[95%] mx-auto'>
|
||||
<CardHeader className='p-0 m-0 gap-0 px-6'>
|
||||
<div className='h-full mt-0 ml-2 mb-16 flex items-center justify-between max-sm:grid max-sm:grid-row-start:auto max-sm:mb-6 max-sm:mt-10 max-sm:ml-0'>
|
||||
<div className='w-[100px] max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<Logo colorType='monochrome' logoType='submark' width={50} />
|
||||
</div>
|
||||
<div className='items-center ml-auto mr-auto max-sm:mb-6 max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<h1 className='text-center'>{'Update Blocker'}</h1>
|
||||
</div>
|
||||
<div className='w-0 sm:w-[100px]'></div>
|
||||
</div>
|
||||
<div className='items-center ml-auto mr-auto max-sm:mb-6 max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<h1 className='text-center'>
|
||||
{existingBlockedSlotId ? 'Update Blocker' : 'Create Blocker'}
|
||||
</h1>
|
||||
</div>
|
||||
<div className='w-0 sm:w-[100px]'></div>
|
||||
</div>
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<form
|
||||
onSubmit={existingBlockedSlotId ? onUpdateSubmit : onCreateSubmit}
|
||||
>
|
||||
<div className='grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3'>
|
||||
<LabeledInput
|
||||
label='Start Time'
|
||||
type='datetime-local'
|
||||
id='start_time'
|
||||
{...(existingBlockedSlotId
|
||||
? registerUpdate('start_time')
|
||||
: registerCreate('start_time'))}
|
||||
error={
|
||||
formStateCreate.errors.start_time?.message ||
|
||||
formStateUpdate.errors.start_time?.message
|
||||
}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='End Time'
|
||||
type='datetime-local'
|
||||
id='end_time'
|
||||
{...(existingBlockedSlotId
|
||||
? registerUpdate('end_time')
|
||||
: registerCreate('end_time'))}
|
||||
error={
|
||||
formStateCreate.errors.end_time?.message ||
|
||||
formStateUpdate.errors.end_time?.message
|
||||
}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='Reason'
|
||||
type='text'
|
||||
id='reason'
|
||||
{...(existingBlockedSlotId
|
||||
? registerUpdate('reason')
|
||||
: registerCreate('reason'))}
|
||||
error={
|
||||
formStateCreate.errors.reason?.message ||
|
||||
formStateUpdate.errors.reason?.message
|
||||
}
|
||||
placeholder='Optional reason for blocking this slot'
|
||||
/>
|
||||
</div>
|
||||
<div className='flex justify-end gap-2 p-4'>
|
||||
<Button
|
||||
type='submit'
|
||||
variant='primary'
|
||||
disabled={
|
||||
formStateCreate.isSubmitting || formStateUpdate.isSubmitting
|
||||
}
|
||||
>
|
||||
{existingBlockedSlotId ? 'Update Blocker' : 'Create Blocker'}
|
||||
</Button>
|
||||
{existingBlockedSlotId && (
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<form onSubmit={onUpdateSubmit}>
|
||||
<div className='grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3'>
|
||||
<LabeledInput
|
||||
label='Start Time'
|
||||
type='datetime-local'
|
||||
id='start_time'
|
||||
{...registerUpdate('start_time')}
|
||||
error={formStateUpdate.errors.start_time?.message}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='End Time'
|
||||
type='datetime-local'
|
||||
id='end_time'
|
||||
{...registerUpdate('end_time')}
|
||||
error={formStateUpdate.errors.end_time?.message}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='Reason'
|
||||
type='text'
|
||||
id='reason'
|
||||
{...registerUpdate('reason')}
|
||||
error={formStateUpdate.errors.reason?.message}
|
||||
placeholder='Optional reason for blocking this slot'
|
||||
/>
|
||||
</div>
|
||||
<div className='flex justify-end gap-2 p-4'>
|
||||
<Button
|
||||
type='button'
|
||||
variant='destructive'
|
||||
onClick={onDeleteSubmit}
|
||||
type='submit'
|
||||
variant='primary'
|
||||
disabled={formStateUpdate.isSubmitting}
|
||||
>
|
||||
Delete Blocker
|
||||
{'Update Blocker'}
|
||||
</Button>
|
||||
{existingBlockedSlotId && (
|
||||
<Button
|
||||
type='button'
|
||||
variant='destructive'
|
||||
onClick={onDeleteSubmit}
|
||||
>
|
||||
Delete Blocker
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
{formStateUpdate.errors.root && (
|
||||
<p className='text-red-500 text-sm mt-1'>
|
||||
{formStateUpdate.errors.root.message}
|
||||
</p>
|
||||
)}
|
||||
</form>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
else
|
||||
return (
|
||||
<div className='flex items-center justify-center h-full'>
|
||||
<Card className='w-[max(80%, 500px)] max-w-screen p-0 gap-0 max-xl:w-[95%] mx-auto'>
|
||||
<CardHeader className='p-0 m-0 gap-0 px-6'>
|
||||
<div className='h-full mt-0 ml-2 mb-16 flex items-center justify-between max-sm:grid max-sm:grid-row-start:auto max-sm:mb-6 max-sm:mt-10 max-sm:ml-0'>
|
||||
<div className='w-[100px] max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<Logo colorType='monochrome' logoType='submark' width={50} />
|
||||
</div>
|
||||
<div className='items-center ml-auto mr-auto max-sm:mb-6 max-sm:w-full max-sm:flex max-sm:justify-center'>
|
||||
<h1 className='text-center'>{'Create Blocker'}</h1>
|
||||
</div>
|
||||
<div className='w-0 sm:w-[100px]'></div>
|
||||
</div>
|
||||
{formStateCreate.errors.root && (
|
||||
<p className='text-red-500 text-sm mt-1'>
|
||||
{formStateCreate.errors.root.message}
|
||||
</p>
|
||||
)}
|
||||
{formStateUpdate.errors.root && (
|
||||
<p className='text-red-500 text-sm mt-1'>
|
||||
{formStateUpdate.errors.root.message}
|
||||
</p>
|
||||
)}
|
||||
</form>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
</CardHeader>
|
||||
<CardContent>
|
||||
<form onSubmit={onCreateSubmit}>
|
||||
<div className='grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3'>
|
||||
<LabeledInput
|
||||
label='Start Time'
|
||||
type='datetime-local'
|
||||
id='start_time'
|
||||
{...registerCreate('start_time')}
|
||||
error={formStateCreate.errors.start_time?.message}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='End Time'
|
||||
type='datetime-local'
|
||||
id='end_time'
|
||||
{...registerCreate('end_time')}
|
||||
error={formStateCreate.errors.end_time?.message}
|
||||
required
|
||||
/>
|
||||
<LabeledInput
|
||||
label='Reason'
|
||||
type='text'
|
||||
id='reason'
|
||||
{...registerCreate('reason')}
|
||||
error={formStateCreate.errors.reason?.message}
|
||||
placeholder='Optional reason for blocking this slot'
|
||||
/>
|
||||
</div>
|
||||
<div className='flex justify-end gap-2 p-4'>
|
||||
<Button
|
||||
type='submit'
|
||||
variant='primary'
|
||||
disabled={formStateCreate.isSubmitting}
|
||||
>
|
||||
{'Create Blocker'}
|
||||
</Button>
|
||||
{existingBlockedSlotId && (
|
||||
<Button
|
||||
type='button'
|
||||
variant='destructive'
|
||||
onClick={onDeleteSubmit}
|
||||
>
|
||||
Delete Blocker
|
||||
</Button>
|
||||
)}
|
||||
</div>
|
||||
{formStateCreate.errors.root && (
|
||||
<p className='text-red-500 text-sm mt-1'>
|
||||
{formStateCreate.errors.root.message}
|
||||
</p>
|
||||
)}
|
||||
</form>
|
||||
</CardContent>
|
||||
</Card>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
|
64
yarn.lock
64
yarn.lock
|
@ -489,10 +489,10 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@eslint/js@npm:9.30.0":
|
||||
version: 9.30.0
|
||||
resolution: "@eslint/js@npm:9.30.0"
|
||||
checksum: 10c0/aec2df7f4e4e884d693dc27dbf4713c1a48afa327bfadac25ebd0e61a2797ce906f2f2a9be0d7d922acb68ccd68cc88779737811f9769eb4933d1f5e574c469e
|
||||
"@eslint/js@npm:9.30.1":
|
||||
version: 9.30.1
|
||||
resolution: "@eslint/js@npm:9.30.1"
|
||||
checksum: 10c0/17fc382a0deafdb1cadac1269d9c2f2464f025bde6e4d12fc4f4775eb9886b41340d4650b72e85a53423644fdc89bf59c987a852f27379ad25feecf2c5bbc1c9
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -3387,12 +3387,12 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"@types/node@npm:22.15.34":
|
||||
version: 22.15.34
|
||||
resolution: "@types/node@npm:22.15.34"
|
||||
"@types/node@npm:22.16.0":
|
||||
version: 22.16.0
|
||||
resolution: "@types/node@npm:22.16.0"
|
||||
dependencies:
|
||||
undici-types: "npm:~6.21.0"
|
||||
checksum: 10c0/fb6a6b36daaa1b484aaba3d33b4d1e7b37ea993e29f20b7a676affa76ed6ff6acd2ded4d5003469bc8dbc815b3d224533b4560896037ef6d5b5d552721ab7d57
|
||||
checksum: 10c0/6219b521062f6c38d4d85ebd25807bd7f2bc703a5acba24e2c6716938d9d6cefd6fafd7b5156f61580eb58a0d82e8921751b778655675389631d813e5f261c03
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -4786,9 +4786,9 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"cypress@npm:14.5.0":
|
||||
version: 14.5.0
|
||||
resolution: "cypress@npm:14.5.0"
|
||||
"cypress@npm:14.5.1":
|
||||
version: 14.5.1
|
||||
resolution: "cypress@npm:14.5.1"
|
||||
dependencies:
|
||||
"@cypress/request": "npm:^3.0.8"
|
||||
"@cypress/xvfb": "npm:^1.2.4"
|
||||
|
@ -4836,7 +4836,7 @@ __metadata:
|
|||
yauzl: "npm:^2.10.0"
|
||||
bin:
|
||||
cypress: bin/cypress
|
||||
checksum: 10c0/b76b05c029625357fbc34f22b632c55f9f981f86c3a568a88ea3d8982b8299e4bd4275e966b2ec767f9a989c6e9059fb03a4a8086048b4e990079b1cab19ba11
|
||||
checksum: 10c0/23c87cafcd2fe949af1b3297cc4c9c8f8d741f5dfa8119ff54b387227dba8dc0dbcfb2d160c4df5d4f281374524753598f3501f0fdf0b1ea66c5b8047484c0d2
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -5676,9 +5676,9 @@ __metadata:
|
|||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
"eslint@npm:9.30.0":
|
||||
version: 9.30.0
|
||||
resolution: "eslint@npm:9.30.0"
|
||||
"eslint@npm:9.30.1":
|
||||
version: 9.30.1
|
||||
resolution: "eslint@npm:9.30.1"
|
||||
dependencies:
|
||||
"@eslint-community/eslint-utils": "npm:^4.2.0"
|
||||
"@eslint-community/regexpp": "npm:^4.12.1"
|
||||
|
@ -5686,7 +5686,7 @@ __metadata:
|
|||
"@eslint/config-helpers": "npm:^0.3.0"
|
||||
"@eslint/core": "npm:^0.14.0"
|
||||
"@eslint/eslintrc": "npm:^3.3.1"
|
||||
"@eslint/js": "npm:9.30.0"
|
||||
"@eslint/js": "npm:9.30.1"
|
||||
"@eslint/plugin-kit": "npm:^0.3.1"
|
||||
"@humanfs/node": "npm:^0.16.6"
|
||||
"@humanwhocodes/module-importer": "npm:^1.0.1"
|
||||
|
@ -5722,7 +5722,7 @@ __metadata:
|
|||
optional: true
|
||||
bin:
|
||||
eslint: bin/eslint.js
|
||||
checksum: 10c0/ebc4b17cfd96f308ebaeb12dfab133a551eb03200c80109ecf663fbeb9af83c4eb3c143407c1b04522d23b5f5844fe9a629b00d409adfc460c1aadf5108da86a
|
||||
checksum: 10c0/5a5867078e03ea56a1b6d1ee1548659abc38a6d5136c7ef94e21c5dbeb28e3ed50b15d2e0da25fce85600f6cf7ea7715eae650c41e8ae826c34490e9ec73d5d6
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -7717,7 +7717,7 @@ __metadata:
|
|||
"@radix-ui/react-tooltip": "npm:^1.2.7"
|
||||
"@tailwindcss/postcss": "npm:4.1.11"
|
||||
"@tanstack/react-query": "npm:^5.80.7"
|
||||
"@types/node": "npm:22.15.34"
|
||||
"@types/node": "npm:22.16.0"
|
||||
"@types/react": "npm:19.1.8"
|
||||
"@types/react-big-calendar": "npm:1.16.2"
|
||||
"@types/react-dom": "npm:19.1.6"
|
||||
|
@ -7727,10 +7727,10 @@ __metadata:
|
|||
class-variance-authority: "npm:^0.7.1"
|
||||
clsx: "npm:^2.1.1"
|
||||
cmdk: "npm:^1.1.1"
|
||||
cypress: "npm:14.5.0"
|
||||
cypress: "npm:14.5.1"
|
||||
date-fns: "npm:^4.1.0"
|
||||
dotenv-cli: "npm:8.0.0"
|
||||
eslint: "npm:9.30.0"
|
||||
eslint: "npm:9.30.1"
|
||||
eslint-config-next: "npm:15.3.4"
|
||||
eslint-config-prettier: "npm:10.1.5"
|
||||
lucide-react: "npm:^0.525.0"
|
||||
|
@ -8988,15 +8988,15 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"react-day-picker@npm:^9.7.0":
|
||||
version: 9.7.0
|
||||
resolution: "react-day-picker@npm:9.7.0"
|
||||
version: 9.8.0
|
||||
resolution: "react-day-picker@npm:9.8.0"
|
||||
dependencies:
|
||||
"@date-fns/tz": "npm:1.2.0"
|
||||
date-fns: "npm:4.1.0"
|
||||
date-fns-jalali: "npm:4.1.0-0"
|
||||
peerDependencies:
|
||||
react: ">=16.8.0"
|
||||
checksum: 10c0/c08c45a53aebceda1c938d2e4c95eb1702dcf149715e3457739f8930dce19a3be5780e5bad12dcc9d244d50b7e0efb226c336d81c1c062f616cf422e6a3804a6
|
||||
checksum: 10c0/910dfbc59e9fece7f5365a2a23ed497e07f227a733289e8141b858b6ce482087df6b01f2ba4f9f7e452ebc3465af0e227f192708a673396221865df07e5ab2ac
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -9035,11 +9035,11 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"react-hook-form@npm:^7.56.4":
|
||||
version: 7.59.0
|
||||
resolution: "react-hook-form@npm:7.59.0"
|
||||
version: 7.60.0
|
||||
resolution: "react-hook-form@npm:7.60.0"
|
||||
peerDependencies:
|
||||
react: ^16.8.0 || ^17 || ^18 || ^19
|
||||
checksum: 10c0/6be30ce65121f4be0f491c2929142e2d9a390a8802f58fb7a41ab978ab8daa6fcd2c442258dbd1b053e6864a83c8f4b1d83de9c95f0efdf5c2120d3c21bd838e
|
||||
checksum: 10c0/eb8518d42a074d9e115d4b414bac18ae72708b2d047a9453dcc7588b00df300b32cebf6ecb7f2c8aa534808b3dc54bde4124af95c1e432b6691f9aba07c93b11
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -10214,8 +10214,8 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"swagger-ui-react@npm:^5.24.1":
|
||||
version: 5.25.3
|
||||
resolution: "swagger-ui-react@npm:5.25.3"
|
||||
version: 5.26.0
|
||||
resolution: "swagger-ui-react@npm:5.26.0"
|
||||
dependencies:
|
||||
"@babel/runtime-corejs3": "npm:^7.27.1"
|
||||
"@scarf/scarf": "npm:=1.4.0"
|
||||
|
@ -10253,7 +10253,7 @@ __metadata:
|
|||
peerDependencies:
|
||||
react: ">=16.8.0 <19"
|
||||
react-dom: ">=16.8.0 <19"
|
||||
checksum: 10c0/9d6542d0d1bd2533e87853d4deef5507d30b35941c697d50c763428533a88cbd9c2e3abe1af5946e35aa7fa3568dc14b9da4363f09bdf6d8023e0699efceb5cf
|
||||
checksum: 10c0/4ce665f46171d724050435db86ce046d5a7777b5601d4ae6b418245e1fc9792591d6cb54fc583c074855f9890ff5b0e986b0a5601f47b79cfc8377dee8a3e3cc
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
||||
|
@ -11314,8 +11314,8 @@ __metadata:
|
|||
linkType: hard
|
||||
|
||||
"zod@npm:^3.25.60":
|
||||
version: 3.25.67
|
||||
resolution: "zod@npm:3.25.67"
|
||||
checksum: 10c0/80a0cab3033272c4ab9312198081f0c4ea88e9673c059aa36dc32024906363729db54bdb78f3dc9d5529bd1601f74974d5a56c0a23e40c6f04a9270c9ff22336
|
||||
version: 3.25.74
|
||||
resolution: "zod@npm:3.25.74"
|
||||
checksum: 10c0/59e38b046ac333b5bd1ba325a83b6798721227cbfb1e69dfc7159bd7824b904241ab923026edb714fafefec3624265ae374a70aee9a5a45b365bd31781ffa105
|
||||
languageName: node
|
||||
linkType: hard
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue