diff --git a/apps/engine/src/env/server-env.ts b/apps/engine/src/env/server-env.ts
index 7387402f..8744171f 100644
--- a/apps/engine/src/env/server-env.ts
+++ b/apps/engine/src/env/server-env.ts
@@ -21,6 +21,8 @@ export const serverEnv = createEnv({
SENTRY_ORG: z.string().min(1).optional(),
SENTRY_PROJECT: z.string().min(1).optional(),
SENTRY_AUTH_TOKEN: z.string().min(1).optional(),
+ // Feature Flags
+ ENABLE_RELEASES_FLAG: z.coerce.boolean(),
},
experimental__runtimeEnv: process.env,
});
diff --git a/apps/engine/src/lib/flags.ts b/apps/engine/src/lib/flags.ts
new file mode 100644
index 00000000..7fea428b
--- /dev/null
+++ b/apps/engine/src/lib/flags.ts
@@ -0,0 +1,6 @@
+import { serverEnv } from '@/env/server-env';
+import { unstable_flag as flag } from '@vercel/flags/next';
+export const getShowReleasesFlag = flag({
+ key: 'releases-feature',
+ decide: () => serverEnv.ENABLE_RELEASES_FLAG,
+});
diff --git a/packages/api/src/queries/integrations.ts b/packages/api/src/queries/integrations.ts
index 27ac094d..e3950535 100644
--- a/packages/api/src/queries/integrations.ts
+++ b/packages/api/src/queries/integrations.ts
@@ -1,19 +1,18 @@
import { eq } from '@ds-project/database';
import type { DSContext } from '../types/context';
-import { AccountsToProjects, Integrations } from '@ds-project/database/schema';
+import {
+ AccountsToProjects,
+ Integrations,
+ integrationType,
+} from '@ds-project/database/schema';
export const selectGithubIntegration = async ({ ctx }: { ctx: DSContext }) => {
- const [queryResult] = await ctx.database
- .select({
- data: Integrations.data,
- })
- .from(Integrations)
- .leftJoin(
- AccountsToProjects,
- eq(AccountsToProjects.projectId, Integrations.projectId)
- )
- .where(eq(AccountsToProjects.accountId, ctx.account.id))
- .limit(1);
+ const queryResult = await ctx.database.query.Integrations.findFirst({
+ where: () => eq(Integrations.type, integrationType.Enum.github),
+ columns: {
+ data: true,
+ },
+ });
if (queryResult?.data?.type === 'github') {
return {
diff --git a/packages/components/package.json b/packages/components/package.json
index fc8f25da..a1628cb1 100644
--- a/packages/components/package.json
+++ b/packages/components/package.json
@@ -33,6 +33,7 @@
"prettier": "@ds-project/prettier",
"dependencies": {
"@hookform/resolvers": "^3.9.0",
+ "@radix-ui/react-accordion": "^1.2.0",
"@radix-ui/react-alert-dialog": "^1.1.1",
"@radix-ui/react-aspect-ratio": "^1.1.0",
"@radix-ui/react-avatar": "^1.1.0",
diff --git a/packages/components/src/accordion/accordion.tsx b/packages/components/src/accordion/accordion.tsx
new file mode 100644
index 00000000..a85a7118
--- /dev/null
+++ b/packages/components/src/accordion/accordion.tsx
@@ -0,0 +1,58 @@
+'use client';
+
+import * as React from 'react';
+import * as AccordionPrimitive from '@radix-ui/react-accordion';
+import { ChevronDown } from 'lucide-react';
+
+import { cn } from '@/utils';
+
+const Accordion = AccordionPrimitive.Root;
+
+const AccordionItem = React.forwardRef<
+ React.ElementRef
,
+ React.ComponentPropsWithoutRef
+>(({ className, ...props }, ref) => (
+
+));
+AccordionItem.displayName = 'AccordionItem';
+
+const AccordionTrigger = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ svg]:ds-rotate-180',
+ className
+ )}
+ {...props}
+ >
+ {children}
+
+
+
+));
+AccordionTrigger.displayName = AccordionPrimitive.Trigger.displayName;
+
+const AccordionContent = React.forwardRef<
+ React.ElementRef,
+ React.ComponentPropsWithoutRef
+>(({ className, children, ...props }, ref) => (
+
+ {children}
+
+));
+
+AccordionContent.displayName = AccordionPrimitive.Content.displayName;
+
+export { Accordion, AccordionItem, AccordionTrigger, AccordionContent };
diff --git a/packages/components/src/accordion/index.ts b/packages/components/src/accordion/index.ts
new file mode 100644
index 00000000..ce956fe2
--- /dev/null
+++ b/packages/components/src/accordion/index.ts
@@ -0,0 +1 @@
+export * from './accordion';
diff --git a/packages/components/src/globals.css b/packages/components/src/globals.css
index defbb74e..5b58394c 100644
--- a/packages/components/src/globals.css
+++ b/packages/components/src/globals.css
@@ -66,4 +66,9 @@
body {
@apply ds-bg-background ds-text-foreground;
}
+
+ a:not([class]),
+ a[class=''] {
+ @apply ds-underline ds-underline-offset-4 hover:ds-text-primary ds-text-muted-foreground;
+ }
}
diff --git a/packages/components/src/index.ts b/packages/components/src/index.ts
index 66d739f6..83f10e07 100644
--- a/packages/components/src/index.ts
+++ b/packages/components/src/index.ts
@@ -1,3 +1,4 @@
+export * from './accordion';
export * from './alert-dialog';
export * from './alert';
export * from './aspect-ratio';
diff --git a/packages/components/tailwind.config.cjs b/packages/components/tailwind.config.cjs
index e678eb04..5525a9c7 100644
--- a/packages/components/tailwind.config.cjs
+++ b/packages/components/tailwind.config.cjs
@@ -10,7 +10,7 @@ module.exports = {
prefix: 'ds-',
theme: {
container: {
- center: true,
+ center: 'true',
padding: '2rem',
screens: {
'2xl': '1400px',
@@ -59,16 +59,28 @@ module.exports = {
},
keyframes: {
'accordion-down': {
- from: { height: '0' },
- to: { height: 'var(--radix-accordion-content-height)' },
+ from: {
+ height: '0',
+ },
+ to: {
+ height: 'var(--radix-accordion-content-height)',
+ },
},
'accordion-up': {
- from: { height: 'var(--radix-accordion-content-height)' },
- to: { height: '0' },
+ from: {
+ height: 'var(--radix-accordion-content-height)',
+ },
+ to: {
+ height: '0',
+ },
},
'caret-blink': {
- '0%,70%,100%': { opacity: '1' },
- '20%,50%': { opacity: '0' },
+ '0%,70%,100%': {
+ opacity: '1',
+ },
+ '20%,50%': {
+ opacity: '0',
+ },
},
},
animation: {
diff --git a/packages/database/migrations/0000_windy_glorian.sql b/packages/database/migrations/0000_windy_glorian.sql
index 3ca307b1..ecf4c35b 100644
--- a/packages/database/migrations/0000_windy_glorian.sql
+++ b/packages/database/migrations/0000_windy_glorian.sql
@@ -141,7 +141,7 @@ USING (
private.current_account_id() = account_id
);
-CREATE POLICY "[BROWSER] - Enable SELECT"
+CREATE POLICY "Enable SELECT"
ON "public"."integrations"
AS PERMISSIVE
FOR SELECT
@@ -149,7 +149,7 @@ TO authenticated
USING (
project_id IN (SELECT project_id FROM private.get_user_project_ids())
AND
- auth.role() = 'browser-user'
+ auth.role() IN ('browser-user', 'api-user')
);
CREATE POLICY "[API] - Enable SELECT"
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d08845a6..0fd726f7 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -84,6 +84,15 @@ importers:
apps/engine:
dependencies:
+ '@dicebear/collection':
+ specifier: ^9.2.2
+ version: 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/converter':
+ specifier: ^9.2.2
+ version: 9.2.2
+ '@dicebear/core':
+ specifier: ^9.2.2
+ version: 9.2.2
'@ds-project/api':
specifier: workspace:*
version: link:../../packages/api
@@ -132,6 +141,9 @@ importers:
'@trpc/server':
specifier: 11.0.0-rc.482
version: 11.0.0-rc.482
+ '@vercel/flags':
+ specifier: ^2.6.0
+ version: 2.6.0(next@14.2.12(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@vercel/kv':
specifier: ^2.0.0
version: 2.0.0
@@ -457,6 +469,9 @@ importers:
'@hookform/resolvers':
specifier: ^3.9.0
version: 3.9.0(react-hook-form@7.52.2(react@18.3.1))
+ '@radix-ui/react-accordion':
+ specifier: ^1.2.0
+ version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.1
version: 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
@@ -1597,6 +1612,200 @@ packages:
resolution: {integrity: sha512-+5JddDqI6XjVJs0EqgLd+6B9ukjhHFEBesqPI/e0okqS+Ay7Gt3xsD0vMrZjVYfJcmRAprgJhdGBGJZjOZiQIA==}
engines: {node: '>=20'}
+ '@dicebear/adventurer-neutral@9.2.2':
+ resolution: {integrity: sha512-XVAjhUWjav6luTZ7txz8zVJU/H0DiUy4uU1Z7IO5MDO6kWvum+If1+0OUgEWYZwM+RDI7rt2CgVP910DyZGd1w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/adventurer@9.2.2':
+ resolution: {integrity: sha512-WjBXCP9EXbUul2zC3BS2/R3/4diw1uh/lU4jTEnujK1mhqwIwanFboIMzQsasNNL/xf+m3OHN7MUNJfHZ1fLZA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/avataaars-neutral@9.2.2':
+ resolution: {integrity: sha512-pRj16P27dFDBI3LtdiHUDwIXIGndHAbZf5AxaMkn6/+0X93mVQ/btVJDXyW0G96WCsyC88wKAWr6/KJotPxU6Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/avataaars@9.2.2':
+ resolution: {integrity: sha512-WqJPQEt0OhBybTpI0TqU1uD1pSk9M2+VPIwvBye/dXo46b+0jHGpftmxjQwk6tX8z0+mRko8pwV5n+cWht1/+w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-ears-neutral@9.2.2':
+ resolution: {integrity: sha512-IPHt8fi3dv9cyfBJBZ4s8T+PhFCrQvOCf91iRHBT3iOLNPdyZpI5GNLmGiV0XMAvIDP5NvA5+f6wdoBLhYhbDA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-ears@9.2.2':
+ resolution: {integrity: sha512-hz4UXdPq4qqZpu0YVvlqM4RDFhk5i0WgPcuwj/MOLlgTjuj63uHUhCQSk6ZiW1DQOs12qpwUBMGWVHxBRBas9g==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/big-smile@9.2.2':
+ resolution: {integrity: sha512-D4td0GL8or1nTNnXvZqkEXlzyqzGPWs3znOnm1HIohtFTeIwXm72Ob2lNDsaQJSJvXmVlwaQQ0CCTvyCl8Stjw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/bottts-neutral@9.2.2':
+ resolution: {integrity: sha512-lSgpqmSJtlnyxVuUgNdBwyzuA0O9xa5zRJtz7x2KyWbicXir5iYdX0MVMCkp1EDvlcxm9rGJsclktugOyakTlw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/bottts@9.2.2':
+ resolution: {integrity: sha512-wugFkzw8JNWV1nftq/Wp/vmQsLAXDxrMtRK3AoMODuUpSVoP3EHRUfKS043xggOsQFvoj0HZ7kadmhn0AMLf5A==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/collection@9.2.2':
+ resolution: {integrity: sha512-vZAmXhPWCK3sf8Fj9/QflFC6XOLroJOT5K1HdnzHaPboEvffUQideGCrrEamnJtlH0iF0ZDXh8gqmwy2fu+yHA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/converter@9.2.2':
+ resolution: {integrity: sha512-704MOowKUOGI88tOJIYFSkd2HXbkNtPdjMrPTx7j+7gAqImCBZ298KVUk0TCo36VCUfN0EtgngUuBZUxyPTadQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@dicebear/core@9.2.2':
+ resolution: {integrity: sha512-ROhgHG249dPtcXgBHcqPEsDeAPRPRD/9d+tZCjLYyueO+cXDlIA8dUlxpwIVcOuZFvCyW6RJtqo8BhNAi16pIQ==}
+ engines: {node: '>=18.0.0'}
+
+ '@dicebear/croodles-neutral@9.2.2':
+ resolution: {integrity: sha512-/4mNirxoQ+z1kHXnpDRbJ1JV1ZgXogeTeNp0MaFYxocCgHfJ7ckNM23EE1I7akoo9pqPxrKlaeNzGAjKHdS9vA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/croodles@9.2.2':
+ resolution: {integrity: sha512-OzvAXQWsOgMwL3Sl+lBxCubqSOWoBJpC78c4TKnNTS21rR63TtXUyVdLLzgKVN4YHRnvMgtPf8F/W9YAgIDK4w==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/dylan@9.2.2':
+ resolution: {integrity: sha512-s7e3XliC1YXP+Wykj+j5kwdOWFRXFzYHYk/PB4oZ1F3sJandXiG0HS4chaNu4EoP0yZgKyFMUVTGZx+o6tMaYg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/fun-emoji@9.2.2':
+ resolution: {integrity: sha512-M+rYTpB3lfwz18f+/i+ggNwNWUoEj58SJqXJ1wr7Jh/4E5uL+NmJg9JGwYNaVtGbCFrKAjSaILNUWGQSFgMfog==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/glass@9.2.2':
+ resolution: {integrity: sha512-imCMxcg+XScHYtQq2MUv1lCzhQSCUglMlPSezKEpXhTxgbgUpmGlSGVkOfmX5EEc7SQowKkF1W/1gNk6CXvBaQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/icons@9.2.2':
+ resolution: {integrity: sha512-Tqq2OVCdS7J02DNw58xwlgLGl40sWEckbqXT3qRvIF63FfVq+wQZBGuhuiyAURcSgvsc3h2oQeYFi9iXh7HTOA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/identicon@9.2.2':
+ resolution: {integrity: sha512-POVKFulIrcuZf3rdAgxYaSm2XUg/TJg3tg9zq9150reEGPpzWR7ijyJ03dzAADPzS3DExfdYVT9+z3JKwwJnTQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/initials@9.2.2':
+ resolution: {integrity: sha512-/xNnsEmsstWjmF77htAOuwOMhFlP6eBVXgcgFlTl/CCH/Oc6H7t0vwX1he8KLQBBzjGpvJcvIAn4Wh9rE4D5/A==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/lorelei-neutral@9.2.2':
+ resolution: {integrity: sha512-Eys9Os6nt2Xll7Mvu66CfRR2YggTopWcmFcRZ9pPdohS96kT0MsLI2iTcfZXQ51K8hvT3IbwoGc86W8n0cDxAQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/lorelei@9.2.2':
+ resolution: {integrity: sha512-koXqVr/vcWUPo00VP5H6Czsit+uF1tmwd2NK7Q/e34/9Sd1f4QLLxHjjBNm/iNjCI1+UNTOvZ2Qqu0N5eo7Flw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/micah@9.2.2':
+ resolution: {integrity: sha512-NCajcJV5yw8uMKiACp694w1T/UyYme2CUEzyTzWHgWnQ+drAuCcH8gpAoLWd67viNdQB/MTpNlaelUgTjmI4AQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/miniavs@9.2.2':
+ resolution: {integrity: sha512-vvkWXttdw+KHF3j+9qcUFzK+P0nbNnImGjvN48wwkPIh2h08WWFq0MnoOls4IHwUJC4GXBjWtiyVoCxz6hhtOA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/notionists-neutral@9.2.2':
+ resolution: {integrity: sha512-AhOzk+lz6kB4uxGun8AJhV+W1nttnMlxmxd+5KbQ/txCIziYIaeD3il44wsAGegEpGFvAZyMYtR/jjfHcem3TA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/notionists@9.2.2':
+ resolution: {integrity: sha512-Z9orRaHoj7Y9Ap4wEu8XOrFACsG1KbbBQUPV1R50uh6AHwsyNrm4cS84ICoGLvxgLNHHOae3YCjd8aMu2z19zg==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/open-peeps@9.2.2':
+ resolution: {integrity: sha512-6PeQDHYyjvKrGSl/gP+RE5dSYAQGKpcGnM65HorgyTIugZK7STo0W4hvEycedupZ3MCCEH8x/XyiChKM2sHXog==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/personas@9.2.2':
+ resolution: {integrity: sha512-705+ObNLC0w1fcgE/Utav+8bqO+Esu53TXegpX5j7trGEoIMf2bThqJGHuhknZ3+T2az3Wr89cGyOGlI0KLzLA==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/pixel-art-neutral@9.2.2':
+ resolution: {integrity: sha512-CdUY77H6Aj7dKLW3hdkv7tu0XQJArUjaWoXihQxlhl3oVYplWaoyu9omYy5pl8HTqs8YgVTGljjMXYoFuK0JUw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/pixel-art@9.2.2':
+ resolution: {integrity: sha512-BvbFdrpzQl04+Y9UsWP63YGug+ENGC7GMG88qbEFWxb/IqRavGa4H3D0T4Zl2PSLiw7f2Ctv98bsCQZ1PtCznQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/rings@9.2.2':
+ resolution: {integrity: sha512-eD1J1k364Arny+UlvGrk12HP/XGG6WxPSm4BarFqdJGSV45XOZlwqoi7FlcMr9r9yvE/nGL8OizbwMYusEEdjw==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/shapes@9.2.2':
+ resolution: {integrity: sha512-e741NNWBa7fg0BjomxXa0fFPME2XCIR0FA+VHdq9AD2taTGHEPsg5x1QJhCRdK6ww85yeu3V3ucpZXdSrHVw5Q==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
+ '@dicebear/thumbs@9.2.2':
+ resolution: {integrity: sha512-FkPLDNu7n5kThLSk7lR/0cz/NkUqgGdZGfLZv6fLkGNGtv6W+e2vZaO7HCXVwIgJ+II+kImN41zVIZ6Jlll7pQ==}
+ engines: {node: '>=18.0.0'}
+ peerDependencies:
+ '@dicebear/core': ^9.0.0
+
'@drizzle-team/brocli@0.10.1':
resolution: {integrity: sha512-AHy0vjc+n/4w/8Mif+w86qpppHuF3AyXbcWW+R/W7GNA3F5/p2nuhlkCJaTXSLZheB4l1rtHzOfr9A7NwoR/Zg==}
@@ -2647,6 +2856,9 @@ packages:
peerDependencies:
'@opentelemetry/api': ^1.1.0
+ '@photostructure/tz-lookup@11.0.0':
+ resolution: {integrity: sha512-QMV5/dWtY/MdVPXZs/EApqzyhnqDq1keYEqpS+Xj2uidyaqw2Nk/fWcsszdruIXjdqp1VoWNzsgrO6bUHU1mFw==}
+
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -2664,6 +2876,19 @@ packages:
'@radix-ui/primitive@1.1.0':
resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==}
+ '@radix-ui/react-accordion@1.2.0':
+ resolution: {integrity: sha512-HJOzSX8dQqtsp/3jVxCU3CXEONF7/2jlGAB28oX8TTw1Dz8JYbEI1UcL8355PuLBE41/IRRMvCw7VkiK/jcUOQ==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-alert-dialog@1.1.1':
resolution: {integrity: sha512-wmCoJwj7byuVuiLKqDLlX7ClSUU0vd9sdCeM+2Ls+uf13+cpSJoMgwysHq1SGVVkJj5Xn0XWi1NoRCdkMpr6Mw==}
peerDependencies:
@@ -2716,6 +2941,19 @@ packages:
'@types/react-dom':
optional: true
+ '@radix-ui/react-collapsible@1.1.0':
+ resolution: {integrity: sha512-zQY7Epa8sTL0mq4ajSJpjgn2YmCgyrG7RsQgLp3C0LQVkG7+Tf6Pv1CeNWZLyqMjhdPkBa5Lx7wYBeSu7uCSTA==}
+ peerDependencies:
+ '@types/react': '*'
+ '@types/react-dom': '*'
+ react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
'@radix-ui/react-collection@1.1.0':
resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==}
peerDependencies:
@@ -3127,6 +3365,82 @@ packages:
'@radix-ui/rect@1.1.0':
resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==}
+ '@resvg/resvg-js-android-arm-eabi@2.6.2':
+ resolution: {integrity: sha512-FrJibrAk6v29eabIPgcTUMPXiEz8ssrAk7TXxsiZzww9UTQ1Z5KAbFJs+Z0Ez+VZTYgnE5IQJqBcoSiMebtPHA==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [android]
+
+ '@resvg/resvg-js-android-arm64@2.6.2':
+ resolution: {integrity: sha512-VcOKezEhm2VqzXpcIJoITuvUS/fcjIw5NA/w3tjzWyzmvoCdd+QXIqy3FBGulWdClvp4g+IfUemigrkLThSjAQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [android]
+
+ '@resvg/resvg-js-darwin-arm64@2.6.2':
+ resolution: {integrity: sha512-nmok2LnAd6nLUKI16aEB9ydMC6Lidiiq2m1nEBDR1LaaP7FGs4AJ90qDraxX+CWlVuRlvNjyYJTNv8qFjtL9+A==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@resvg/resvg-js-darwin-x64@2.6.2':
+ resolution: {integrity: sha512-GInyZLjgWDfsVT6+SHxQVRwNzV0AuA1uqGsOAW+0th56J7Nh6bHHKXHBWzUrihxMetcFDmQMAX1tZ1fZDYSRsw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [darwin]
+
+ '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2':
+ resolution: {integrity: sha512-YIV3u/R9zJbpqTTNwTZM5/ocWetDKGsro0SWp70eGEM9eV2MerWyBRZnQIgzU3YBnSBQ1RcxRZvY/UxwESfZIw==}
+ engines: {node: '>= 10'}
+ cpu: [arm]
+ os: [linux]
+
+ '@resvg/resvg-js-linux-arm64-gnu@2.6.2':
+ resolution: {integrity: sha512-zc2BlJSim7YR4FZDQ8OUoJg5holYzdiYMeobb9pJuGDidGL9KZUv7SbiD4E8oZogtYY42UZEap7dqkkYuA91pg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@resvg/resvg-js-linux-arm64-musl@2.6.2':
+ resolution: {integrity: sha512-3h3dLPWNgSsD4lQBJPb4f+kvdOSJHa5PjTYVsWHxLUzH4IFTJUAnmuWpw4KqyQ3NA5QCyhw4TWgxk3jRkQxEKg==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [linux]
+
+ '@resvg/resvg-js-linux-x64-gnu@2.6.2':
+ resolution: {integrity: sha512-IVUe+ckIerA7xMZ50duAZzwf1U7khQe2E0QpUxu5MBJNao5RqC0zwV/Zm965vw6D3gGFUl7j4m+oJjubBVoftw==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@resvg/resvg-js-linux-x64-musl@2.6.2':
+ resolution: {integrity: sha512-UOf83vqTzoYQO9SZ0fPl2ZIFtNIz/Rr/y+7X8XRX1ZnBYsQ/tTb+cj9TE+KHOdmlTFBxhYzVkP2lRByCzqi4jQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [linux]
+
+ '@resvg/resvg-js-win32-arm64-msvc@2.6.2':
+ resolution: {integrity: sha512-7C/RSgCa+7vqZ7qAbItfiaAWhyRSoD4l4BQAbVDqRRsRgY+S+hgS3in0Rxr7IorKUpGE69X48q6/nOAuTJQxeQ==}
+ engines: {node: '>= 10'}
+ cpu: [arm64]
+ os: [win32]
+
+ '@resvg/resvg-js-win32-ia32-msvc@2.6.2':
+ resolution: {integrity: sha512-har4aPAlvjnLcil40AC77YDIk6loMawuJwFINEM7n0pZviwMkMvjb2W5ZirsNOZY4aDbo5tLx0wNMREp5Brk+w==}
+ engines: {node: '>= 10'}
+ cpu: [ia32]
+ os: [win32]
+
+ '@resvg/resvg-js-win32-x64-msvc@2.6.2':
+ resolution: {integrity: sha512-ZXtYhtUr5SSaBrUDq7DiyjOFJqBVL/dOBN7N/qmi/pO0IgiWW/f/ue3nbvu9joWE5aAKDoIzy/CxsY0suwGosQ==}
+ engines: {node: '>= 10'}
+ cpu: [x64]
+ os: [win32]
+
+ '@resvg/resvg-js@2.6.2':
+ resolution: {integrity: sha512-xBaJish5OeGmniDj9cW5PRa/PtmuVU3ziqrbr5xJj901ZDN4TosrVaNZpEiLZAxdfnhAe7uQ7QFWfjPe9d9K2Q==}
+ engines: {node: '>= 10'}
+
'@resvg/resvg-wasm@2.4.0':
resolution: {integrity: sha512-C7c51Nn4yTxXFKvgh2txJFNweaVcfUPQxwEUFw4aWsCmfiBDJsTSwviIF8EcwjQ6k8bPyMWCl1vw4BdxE569Cg==}
engines: {node: '>= 10'}
@@ -3760,6 +4074,9 @@ packages:
'@types/lodash@4.17.6':
resolution: {integrity: sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==}
+ '@types/luxon@3.4.2':
+ resolution: {integrity: sha512-TifLZlFudklWlMBfhubvgqTXRzLDI5pCbGa4P8a3wPyUQSW+1xQ5eDsreP9DWHX3tjq1ke96uYG/nwundroWcA==}
+
'@types/mdx@2.0.13':
resolution: {integrity: sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==}
@@ -4047,6 +4364,23 @@ packages:
'@upstash/redis@1.33.0':
resolution: {integrity: sha512-5WOilc7AE0ITAdE3NCyMwgOq1n3RHcqW0OfmbotiAyfA+QAEe1R7kXin8L/Yladgdc5lkA0GcYyewqKfAw53jQ==}
+ '@vercel/flags@2.6.0':
+ resolution: {integrity: sha512-GvLX0CK/OsIqq672OBvcCeu0k3tb3QdE0lRn1P5zulMQJIPTLlUDEH0y9TeAyC7TMWlpTTT5Bealqu0rmncyXQ==}
+ peerDependencies:
+ '@sveltejs/kit': '*'
+ next: '*'
+ react: '*'
+ react-dom: '*'
+ peerDependenciesMeta:
+ '@sveltejs/kit':
+ optional: true
+ next:
+ optional: true
+ react:
+ optional: true
+ react-dom:
+ optional: true
+
'@vercel/kv@2.0.0':
resolution: {integrity: sha512-zdVrhbzZBYo5d1Hfn4bKtqCeKf0FuzW8rSHauzQVMUgv1+1JOwof2mWcBuI+YMJy8s0G0oqAUfQ7HgUDzb8EbA==}
engines: {node: '>=14.6'}
@@ -4401,6 +4735,10 @@ packages:
base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
+ batch-cluster@13.0.0:
+ resolution: {integrity: sha512-EreW0Vi8TwovhYUHBXXRA5tthuU2ynGsZFlboyMJHCCUXYa2AjgwnE3ubBOJs2xJLcuXFJbi6c/8pH5+FVj8Og==}
+ engines: {node: '>=14'}
+
before-after-hook@3.0.2:
resolution: {integrity: sha512-Nik3Sc0ncrMK4UUdXQmAnRtzmNQTAAXmXIopizwZ1W1t8QmfJj+zL4OA2I7XPTPW5z5TDqv4hRo/JzouDJnX3A==}
@@ -5460,6 +5798,17 @@ packages:
resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
engines: {node: '>=16.17'}
+ exiftool-vendored.exe@12.96.0:
+ resolution: {integrity: sha512-pKPN9F/Evw2yyO5/+ml3spbXIqejzOxyF7jEnj8tLU2JPSmIlziPUZ75XIhcPbilX86jVKmuiso7FUDicOg8pQ==}
+ os: [win32]
+
+ exiftool-vendored.pl@12.96.0:
+ resolution: {integrity: sha512-v4nGnovAMBsTfOWhwAcOiRiq/8kuJOo3GUMHNpug7Mr4jLz3tmWEo7DdNyOYmpcvWbA6smOTG0SmwsrY8fsW+A==}
+ os: ['!win32']
+
+ exiftool-vendored@28.3.0:
+ resolution: {integrity: sha512-2DOSOvj5c1gkbKtubAnlGglxdYp9h55n0GxjK2nypVivoaCdgP/le3MOZRKgEUNObfJHmYHj4u/NnYVneu/gUw==}
+
express@4.19.2:
resolution: {integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==}
engines: {node: '>= 0.10.0'}
@@ -6117,6 +6466,9 @@ packages:
jju@1.4.0:
resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==}
+ jose@5.2.1:
+ resolution: {integrity: sha512-qiaQhtQRw6YrOaOj0v59h3R6hUY9NvxBmmnMfKemkqYmBB0tEc97NbLP7ix44VP5p9/0YHG8Vyhzuo5YBNwviA==}
+
joycon@3.1.1:
resolution: {integrity: sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==}
engines: {node: '>=10'}
@@ -6312,6 +6664,10 @@ packages:
peerDependencies:
react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ luxon@3.5.0:
+ resolution: {integrity: sha512-rh+Zjr6DNfUYR3bPwJEnuwDdqMbxZW7LOQfUN4B54+Cl+0o5zaU9RJ6bcidfDtC1cWCZXQ+nvX8bf6bAji37QQ==}
+ engines: {node: '>=12'}
+
lz-string@1.5.0:
resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==}
hasBin: true
@@ -7727,10 +8083,17 @@ packages:
resolution: {integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==}
engines: {node: '>=14.0.0'}
+ tmp-promise@3.0.3:
+ resolution: {integrity: sha512-RwM7MoPojPxsOBYnyd2hy0bxtIlVrihNs9pj5SUvY8Zz1sQcQG2tG1hSr8PDxfgEB8RNKDhqbIlroIarSNDNsQ==}
+
tmp@0.0.33:
resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==}
engines: {node: '>=0.6.0'}
+ tmp@0.2.3:
+ resolution: {integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==}
+ engines: {node: '>=14.14'}
+
to-fast-properties@2.0.0:
resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
engines: {node: '>=4'}
@@ -9239,6 +9602,171 @@ snapshots:
natural-compare-lite: 1.4.0
rgb-hex: 4.1.0
+ '@dicebear/adventurer-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/adventurer@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/avataaars-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/avataaars@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/big-ears-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/big-ears@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/big-smile@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/bottts-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/bottts@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/collection@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/adventurer': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/adventurer-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/avataaars': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/avataaars-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/big-ears': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/big-ears-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/big-smile': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/bottts': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/bottts-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/core': 9.2.2
+ '@dicebear/croodles': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/croodles-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/dylan': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/fun-emoji': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/glass': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/icons': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/identicon': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/initials': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/lorelei': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/lorelei-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/micah': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/miniavs': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/notionists': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/notionists-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/open-peeps': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/personas': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/pixel-art': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/pixel-art-neutral': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/rings': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/shapes': 9.2.2(@dicebear/core@9.2.2)
+ '@dicebear/thumbs': 9.2.2(@dicebear/core@9.2.2)
+
+ '@dicebear/converter@9.2.2':
+ dependencies:
+ '@resvg/resvg-js': 2.6.2
+ exiftool-vendored: 28.3.0
+ sharp: 0.33.5
+ tmp-promise: 3.0.3
+
+ '@dicebear/core@9.2.2':
+ dependencies:
+ '@types/json-schema': 7.0.15
+
+ '@dicebear/croodles-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/croodles@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/dylan@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/fun-emoji@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/glass@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/icons@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/identicon@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/initials@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/lorelei-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/lorelei@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/micah@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/miniavs@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/notionists-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/notionists@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/open-peeps@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/personas@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/pixel-art-neutral@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/pixel-art@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/rings@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/shapes@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
+ '@dicebear/thumbs@9.2.2(@dicebear/core@9.2.2)':
+ dependencies:
+ '@dicebear/core': 9.2.2
+
'@drizzle-team/brocli@0.10.1': {}
'@effect/schema@0.71.4(effect@3.7.0)':
@@ -10156,6 +10684,8 @@ snapshots:
'@opentelemetry/api': 1.9.0
'@opentelemetry/core': 1.26.0(@opentelemetry/api@1.9.0)
+ '@photostructure/tz-lookup@11.0.0': {}
+
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -10173,6 +10703,23 @@ snapshots:
'@radix-ui/primitive@1.1.0': {}
+ '@radix-ui/react-accordion@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-collapsible': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
+
'@radix-ui/react-alert-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/primitive': 1.1.0
@@ -10217,6 +10764,22 @@ snapshots:
'@types/react': 18.3.3
'@types/react-dom': 18.3.0
+ '@radix-ui/react-collapsible@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ '@radix-ui/primitive': 1.1.0
+ '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)
+ '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+ optionalDependencies:
+ '@types/react': 18.3.3
+ '@types/react-dom': 18.3.0
+
'@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
dependencies:
'@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1)
@@ -10660,6 +11223,57 @@ snapshots:
'@radix-ui/rect@1.1.0': {}
+ '@resvg/resvg-js-android-arm-eabi@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-android-arm64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-darwin-arm64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-darwin-x64@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm-gnueabihf@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm64-gnu@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-arm64-musl@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-x64-gnu@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-linux-x64-musl@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-arm64-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-ia32-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js-win32-x64-msvc@2.6.2':
+ optional: true
+
+ '@resvg/resvg-js@2.6.2':
+ optionalDependencies:
+ '@resvg/resvg-js-android-arm-eabi': 2.6.2
+ '@resvg/resvg-js-android-arm64': 2.6.2
+ '@resvg/resvg-js-darwin-arm64': 2.6.2
+ '@resvg/resvg-js-darwin-x64': 2.6.2
+ '@resvg/resvg-js-linux-arm-gnueabihf': 2.6.2
+ '@resvg/resvg-js-linux-arm64-gnu': 2.6.2
+ '@resvg/resvg-js-linux-arm64-musl': 2.6.2
+ '@resvg/resvg-js-linux-x64-gnu': 2.6.2
+ '@resvg/resvg-js-linux-x64-musl': 2.6.2
+ '@resvg/resvg-js-win32-arm64-msvc': 2.6.2
+ '@resvg/resvg-js-win32-ia32-msvc': 2.6.2
+ '@resvg/resvg-js-win32-x64-msvc': 2.6.2
+
'@resvg/resvg-wasm@2.4.0': {}
'@rollup/plugin-commonjs@26.0.1(rollup@3.29.4)':
@@ -11505,6 +12119,8 @@ snapshots:
'@types/lodash@4.17.6': {}
+ '@types/luxon@3.4.2': {}
+
'@types/mdx@2.0.13': {}
'@types/mime@1.3.5': {}
@@ -11903,6 +12519,14 @@ snapshots:
dependencies:
crypto-js: 4.2.0
+ '@vercel/flags@2.6.0(next@14.2.12(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)':
+ dependencies:
+ jose: 5.2.1
+ optionalDependencies:
+ next: 14.2.12(@opentelemetry/api@1.9.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(sass@1.77.8)
+ react: 18.3.1
+ react-dom: 18.3.1(react@18.3.1)
+
'@vercel/kv@2.0.0':
dependencies:
'@upstash/redis': 1.33.0
@@ -12408,6 +13032,8 @@ snapshots:
base64-js@1.5.1: {}
+ batch-cluster@13.0.0: {}
+
before-after-hook@3.0.2: {}
bin-links@4.0.4:
@@ -13692,6 +14318,23 @@ snapshots:
signal-exit: 4.1.0
strip-final-newline: 3.0.0
+ exiftool-vendored.exe@12.96.0:
+ optional: true
+
+ exiftool-vendored.pl@12.96.0:
+ optional: true
+
+ exiftool-vendored@28.3.0:
+ dependencies:
+ '@photostructure/tz-lookup': 11.0.0
+ '@types/luxon': 3.4.2
+ batch-cluster: 13.0.0
+ he: 1.2.0
+ luxon: 3.5.0
+ optionalDependencies:
+ exiftool-vendored.exe: 12.96.0
+ exiftool-vendored.pl: 12.96.0
+
express@4.19.2:
dependencies:
accepts: 1.3.8
@@ -14394,6 +15037,8 @@ snapshots:
jju@1.4.0: {}
+ jose@5.2.1: {}
+
joycon@3.1.1: {}
js-tokens@4.0.0: {}
@@ -14586,6 +15231,8 @@ snapshots:
dependencies:
react: 18.3.1
+ luxon@3.5.0: {}
+
lz-string@1.5.0: {}
magic-string@0.27.0:
@@ -16184,10 +16831,16 @@ snapshots:
tinyspy@2.2.1: {}
+ tmp-promise@3.0.3:
+ dependencies:
+ tmp: 0.2.3
+
tmp@0.0.33:
dependencies:
os-tmpdir: 1.0.2
+ tmp@0.2.3: {}
+
to-fast-properties@2.0.0: {}
to-regex-range@5.0.1: