From ac053fe498b2d46f16b51a1c0a032ca4cbfd5e4d Mon Sep 17 00:00:00 2001 From: Baptiste Arnaud Date: Fri, 20 Mar 2026 16:29:11 +0100 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Centralize=20EmojisList=20?= =?UTF-8?q?and=20EmojiOrImageIcon=20in=20UI=20package?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Move emoji data and searchable grid to @typebot.io/ui, switch builder to shared EmojiOrImageIcon, drop duplicate builder emoji assets. --- apps/builder/package.json | 5 +- .../components/EditableEmojiOrImageIcon.tsx | 3 +- .../src/components/EmojiOrImageIcon.1.tsx | 0 .../emoji/EmojiSearchableList.tsx | 194 ++------------- .../components/TypebotsDropdown.tsx | 2 +- .../components/CollaborationList.tsx | 2 +- .../dashboard/components/DashboardHeader.tsx | 2 +- .../editor/components/TypebotHeader.tsx | 2 +- .../UnauthenticatedTypebotHeader.tsx | 2 +- .../folders/components/TypebotButton.tsx | 2 +- .../components/TypebotButtonOverlay.tsx | 2 +- .../components/WorkspaceDropdown.tsx | 2 +- .../components/WorkspaceSettingsDialog.tsx | 2 +- .../components/WorkspaceSettingsForm.tsx | 2 +- .../pages/typebots/[typebotId]/duplicate.tsx | 4 +- apps/builder/tsconfig.json | 1 - bun.lock | 222 ++++++++++++++---- packages/ui/package.json | 1 + .../ui/src/components/EmojiOrImageIcon.tsx | 21 +- packages/ui/src/components/EmojisList.tsx | 163 +++++++++++++ .../ui/src/components}/emoji/emojiList.json | 0 packages/ui/tsconfig.lib.json | 7 +- 22 files changed, 391 insertions(+), 250 deletions(-) delete mode 100644 apps/builder/src/components/EmojiOrImageIcon.1.tsx create mode 100644 packages/ui/src/components/EmojisList.tsx rename {apps/builder/src/components/ImageUploadContent => packages/ui/src/components}/emoji/emojiList.json (100%) diff --git a/apps/builder/package.json b/apps/builder/package.json index 40294e440..4ea0c5a3e 100644 --- a/apps/builder/package.json +++ b/apps/builder/package.json @@ -43,7 +43,7 @@ "@orpc/client": "^1.13.4", "@orpc/openapi": "^1.13.4", "@orpc/otel": "^1.13.4", - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@orpc/tanstack-query": "^1.13.4", "@orpc/zod": "^1.13.4", "@paralleldrive/cuid2": "^2.2.1", @@ -96,8 +96,7 @@ "date-fns-tz": "^2.0.0", "deep-object-diff": "^1.1.9", "dequal": "^2.0.3", - "emojilib": "^3.0.10", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "google-auth-library": "^10.1.0", "immer": "^10.0.2", "ioredis": "^5.4.1", diff --git a/apps/builder/src/components/EditableEmojiOrImageIcon.tsx b/apps/builder/src/components/EditableEmojiOrImageIcon.tsx index e553811ba..313b764de 100644 --- a/apps/builder/src/components/EditableEmojiOrImageIcon.tsx +++ b/apps/builder/src/components/EditableEmojiOrImageIcon.tsx @@ -4,7 +4,6 @@ import { Popover } from "@typebot.io/ui/components/Popover"; import { Tooltip } from "@typebot.io/ui/components/Tooltip"; import { useOpenControls } from "@typebot.io/ui/hooks/useOpenControls"; import { cx } from "@typebot.io/ui/lib/cva"; -import type { JSX } from "react"; import type { FilePathUploadProps } from "@/features/upload/api/generateUploadUrl"; import { ImageUploadContent } from "./ImageUploadContent"; @@ -13,7 +12,7 @@ type Props = { icon?: string | null; onChangeIcon: (icon: string) => void; size?: "sm" | "md" | "lg"; - defaultIcon: (props: React.SVGProps) => JSX.Element; + defaultIcon: React.ReactNode; }; export const EditableEmojiOrImageIcon = ({ diff --git a/apps/builder/src/components/EmojiOrImageIcon.1.tsx b/apps/builder/src/components/EmojiOrImageIcon.1.tsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/apps/builder/src/components/ImageUploadContent/emoji/EmojiSearchableList.tsx b/apps/builder/src/components/ImageUploadContent/emoji/EmojiSearchableList.tsx index 901d28cc5..35ede3521 100644 --- a/apps/builder/src/components/ImageUploadContent/emoji/EmojiSearchableList.tsx +++ b/apps/builder/src/components/ImageUploadContent/emoji/EmojiSearchableList.tsx @@ -1,21 +1,7 @@ -import { useTranslate } from "@tolgee/react"; -import { Button } from "@typebot.io/ui/components/Button"; +import { EmojisList } from "@typebot.io/ui/components/EmojisList"; import { Input } from "@typebot.io/ui/components/Input"; -import emojiTagsData from "emojilib"; import type { ChangeEvent } from "react"; -import { useEffect, useRef, useState } from "react"; -import emojis from "./emojiList.json"; - -const emojiTags = emojiTagsData as Record; - -const people = emojis["Smileys & Emotion"].concat(emojis["People & Body"]); -const nature = emojis["Animals & Nature"]; -const food = emojis["Food & Drink"]; -const activities = emojis.Activities; -const travel = emojis["Travel & Places"]; -const objects = emojis.Objects; -const symbols = emojis.Symbols; -const flags = emojis.Flags; +import { useEffect, useState } from "react"; const localStorageRecentEmojisKey = "recentEmojis"; @@ -24,20 +10,8 @@ export const EmojiSearchableList = ({ }: { onEmojiSelected: (emoji: string) => void; }) => { - const scrollContainer = useRef(null); - const bottomElement = useRef(null); - const [isSearching, setIsSearching] = useState(false); - const [filteredPeople, setFilteredPeople] = useState(people); - const [filteredAnimals, setFilteredAnimals] = useState(nature); - const [filteredFood, setFilteredFood] = useState(food); - const [filteredTravel, setFilteredTravel] = useState(travel); - const [filteredActivities, setFilteredActivities] = useState(activities); - const [filteredObjects, setFilteredObjects] = useState(objects); - const [filteredSymbols, setFilteredSymbols] = useState(symbols); - const [filteredFlags, setFilteredFlags] = useState(flags); - const [totalDisplayedCategories, setTotalDisplayedCategories] = useState(1); - const [recentEmojis, setRecentEmojis] = useState([]); - const { t } = useTranslate(); + const [searchQuery, setSearchQuery] = useState(""); + const [recentEmojis, setRecentEmojis] = useState([]); useEffect(() => { const recentIconNames = localStorage.getItem(localStorageRecentEmojisKey); @@ -45,50 +19,8 @@ export const EmojiSearchableList = ({ setRecentEmojis(JSON.parse(recentIconNames)); }, []); - useEffect(() => { - if (!bottomElement.current) return; - const observer = new IntersectionObserver(handleObserver, { - root: scrollContainer.current, - }); - if (bottomElement.current) observer.observe(bottomElement.current); - return () => { - observer.disconnect(); - }; - }, []); - - const handleObserver = (entities: IntersectionObserverEntry[]) => { - const target = entities[0]; - if (target.isIntersecting) setTotalDisplayedCategories((c) => c + 1); - }; - - const handleSearchChange = async (e: ChangeEvent) => { - const searchValue = e.target.value; - if (searchValue.length <= 2 && isSearching) return resetEmojiList(); - setIsSearching(true); - setTotalDisplayedCategories(8); - const byTag = (emoji: string) => - emojiTags[emoji].find((tag) => tag.includes(searchValue)); - setFilteredPeople(people.filter(byTag)); - setFilteredAnimals(nature.filter(byTag)); - setFilteredFood(food.filter(byTag)); - setFilteredTravel(travel.filter(byTag)); - setFilteredActivities(activities.filter(byTag)); - setFilteredObjects(objects.filter(byTag)); - setFilteredSymbols(symbols.filter(byTag)); - setFilteredFlags(flags.filter(byTag)); - }; - - const resetEmojiList = () => { - setTotalDisplayedCategories(1); - setIsSearching(false); - setFilteredPeople(people); - setFilteredAnimals(nature); - setFilteredFood(food); - setFilteredTravel(travel); - setFilteredActivities(activities); - setFilteredObjects(objects); - setFilteredSymbols(symbols); - setFilteredFlags(flags); + const handleSearchChange = (e: ChangeEvent) => { + setSearchQuery(e.target.value); }; const selectEmoji = (emoji: string) => { @@ -96,118 +28,24 @@ export const EmojiSearchableList = ({ localStorageRecentEmojisKey, JSON.stringify([...new Set([emoji, ...recentEmojis].slice(0, 30))]), ); + setRecentEmojis((previous) => + [...new Set([emoji, ...previous])].slice(0, 30), + ); onEmojiSelected(emoji); }; return (
-
- {recentEmojis.length > 0 && ( -
-

- {t("emojiList.categories.recent.label")} -

- -
- )} - {filteredPeople.length > 0 && ( -
-

- {t("emojiList.categories.people.label")} -

- -
- )} - {filteredAnimals.length > 0 && totalDisplayedCategories >= 2 && ( -
-

- {t("emojiList.categories.animalsAndNature.label")} -

- -
- )} - {filteredFood.length > 0 && totalDisplayedCategories >= 3 && ( -
-

- {t("emojiList.categories.foodAndDrink.label")} -

- -
- )} - {filteredTravel.length > 0 && totalDisplayedCategories >= 4 && ( -
-

- {t("emojiList.categories.travelAndPlaces.label")} -

- -
- )} - {filteredActivities.length > 0 && totalDisplayedCategories >= 5 && ( -
-

- {t("emojiList.categories.activities.label")} -

- -
- )} - {filteredObjects.length > 0 && totalDisplayedCategories >= 6 && ( -
-

- {t("emojiList.categories.objects.label")} -

- -
- )} - {filteredSymbols.length > 0 && totalDisplayedCategories >= 7 && ( -
-

- {t("emojiList.categories.symbols.label")} -

- -
- )} - {filteredFlags.length > 0 && totalDisplayedCategories >= 8 && ( -
-

- {t("emojiList.categories.flags.label")} -

- -
- )} -
-
-
- ); -}; - -const EmojiGrid = ({ - emojis, - onEmojiClick, -}: { - emojis: string[]; - onEmojiClick: (emoji: string) => void; -}) => { - const handleClick = (emoji: string) => () => onEmojiClick(emoji); - return ( -
- {emojis.map((emoji) => ( - - ))} +
); }; diff --git a/apps/builder/src/features/blocks/logic/typebotLink/components/TypebotsDropdown.tsx b/apps/builder/src/features/blocks/logic/typebotLink/components/TypebotsDropdown.tsx index c427f6921..0a276f7c4 100644 --- a/apps/builder/src/features/blocks/logic/typebotLink/components/TypebotsDropdown.tsx +++ b/apps/builder/src/features/blocks/logic/typebotLink/components/TypebotsDropdown.tsx @@ -50,7 +50,7 @@ export const TypebotsDropdown = ({ } /> ), label: typebot.name, diff --git a/apps/builder/src/features/collaboration/components/CollaborationList.tsx b/apps/builder/src/features/collaboration/components/CollaborationList.tsx index 90b3f06ee..30e719749 100644 --- a/apps/builder/src/features/collaboration/components/CollaborationList.tsx +++ b/apps/builder/src/features/collaboration/components/CollaborationList.tsx @@ -189,7 +189,7 @@ export const CollaborationList = () => { } />

Everyone at {workspace.name}

diff --git a/apps/builder/src/features/dashboard/components/DashboardHeader.tsx b/apps/builder/src/features/dashboard/components/DashboardHeader.tsx index a47a0cff6..64d38c566 100644 --- a/apps/builder/src/features/dashboard/components/DashboardHeader.tsx +++ b/apps/builder/src/features/dashboard/components/DashboardHeader.tsx @@ -41,7 +41,7 @@ export const DashboardHeader = () => { } />
diff --git a/apps/builder/src/features/editor/components/TypebotHeader.tsx b/apps/builder/src/features/editor/components/TypebotHeader.tsx index 0b5ecb054..a4ebe66f0 100644 --- a/apps/builder/src/features/editor/components/TypebotHeader.tsx +++ b/apps/builder/src/features/editor/components/TypebotHeader.tsx @@ -173,7 +173,7 @@ const LeftElements = ({ }} icon={typebot?.icon} onChangeIcon={handleChangeIcon} - defaultIcon={LayoutBottomIcon} + defaultIcon={} /> )} { } /> )}

diff --git a/apps/builder/src/features/folders/components/TypebotButton.tsx b/apps/builder/src/features/folders/components/TypebotButton.tsx index c6d958229..fa1fff81f 100644 --- a/apps/builder/src/features/folders/components/TypebotButton.tsx +++ b/apps/builder/src/features/folders/components/TypebotButton.tsx @@ -192,7 +192,7 @@ const TypebotButton = ({ } />

{typebot.name} diff --git a/apps/builder/src/features/folders/components/TypebotButtonOverlay.tsx b/apps/builder/src/features/folders/components/TypebotButtonOverlay.tsx index 388f0d39c..6f52565a0 100644 --- a/apps/builder/src/features/folders/components/TypebotButtonOverlay.tsx +++ b/apps/builder/src/features/folders/components/TypebotButtonOverlay.tsx @@ -23,7 +23,7 @@ export const TypebotButtonOverlay = ({ typebot, className, style }: Props) => { } />

{typebot.name}

diff --git a/apps/builder/src/features/workspace/components/WorkspaceDropdown.tsx b/apps/builder/src/features/workspace/components/WorkspaceDropdown.tsx index 6b56e4e5c..ce130631c 100644 --- a/apps/builder/src/features/workspace/components/WorkspaceDropdown.tsx +++ b/apps/builder/src/features/workspace/components/WorkspaceDropdown.tsx @@ -54,7 +54,7 @@ export const WorkspaceDropdown = ({
} className="size-4.5 text-xl" />

{workspace.name}

diff --git a/apps/builder/src/features/workspace/components/WorkspaceSettingsDialog.tsx b/apps/builder/src/features/workspace/components/WorkspaceSettingsDialog.tsx index 29c8d3daa..55e7056f5 100644 --- a/apps/builder/src/features/workspace/components/WorkspaceSettingsDialog.tsx +++ b/apps/builder/src/features/workspace/components/WorkspaceSettingsDialog.tsx @@ -102,7 +102,7 @@ export const WorkspaceSettingsDialog = ({ } /> {t("workspace.settings.modal.menu.settings.label")} diff --git a/apps/builder/src/features/workspace/components/WorkspaceSettingsForm.tsx b/apps/builder/src/features/workspace/components/WorkspaceSettingsForm.tsx index cbbca0de8..7e339b7c2 100644 --- a/apps/builder/src/features/workspace/components/WorkspaceSettingsForm.tsx +++ b/apps/builder/src/features/workspace/components/WorkspaceSettingsForm.tsx @@ -40,7 +40,7 @@ export const WorkspaceSettingsForm = ({ onClose }: { onClose: () => void }) => { icon={workspace.icon} onChangeIcon={handleChangeIcon} size="lg" - defaultIcon={HardDriveIcon} + defaultIcon={} /> )} diff --git a/apps/builder/src/pages/typebots/[typebotId]/duplicate.tsx b/apps/builder/src/pages/typebots/[typebotId]/duplicate.tsx index 493a85ec2..3fa74d55d 100644 --- a/apps/builder/src/pages/typebots/[typebotId]/duplicate.tsx +++ b/apps/builder/src/pages/typebots/[typebotId]/duplicate.tsx @@ -1,6 +1,6 @@ import { useMutation } from "@tanstack/react-query"; -import { EmojiOrImageIcon } from "@typebot.io/ui/components/EmojiOrImageIcon"; import { Button } from "@typebot.io/ui/components/Button"; +import { EmojiOrImageIcon } from "@typebot.io/ui/components/EmojiOrImageIcon"; import { Label } from "@typebot.io/ui/components/Label"; import { Radio, RadioGroup } from "@typebot.io/ui/components/RadioGroup"; import { HardDriveIcon } from "@typebot.io/ui/icons/HardDriveIcon"; @@ -52,7 +52,7 @@ const Page = () => { } /> {workspace.name} diff --git a/apps/builder/tsconfig.json b/apps/builder/tsconfig.json index 2b771c64f..73f1e6b90 100644 --- a/apps/builder/tsconfig.json +++ b/apps/builder/tsconfig.json @@ -31,7 +31,6 @@ "src/**/*.tsx", ".next/types/**/*.ts", "../../packages/auth/src/next-auth.d.ts", - "src/components/ImageUploadContent/emoji/emojiList.json", "src/i18n/*.json" ], "exclude": [ diff --git a/bun.lock b/bun.lock index c41007c29..dc54dcfdc 100644 --- a/bun.lock +++ b/bun.lock @@ -39,7 +39,7 @@ "@orpc/client": "^1.13.4", "@orpc/openapi": "^1.13.4", "@orpc/otel": "^1.13.4", - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@orpc/tanstack-query": "^1.13.4", "@orpc/zod": "^1.13.4", "@paralleldrive/cuid2": "^2.2.1", @@ -92,8 +92,7 @@ "date-fns-tz": "^2.0.0", "deep-object-diff": "^1.1.9", "dequal": "^2.0.3", - "effect": "4.0.0-beta.30", - "emojilib": "^3.0.10", + "effect": "4.0.0-beta.35", "google-auth-library": "^10.1.0", "immer": "^10.0.2", "ioredis": "^5.4.1", @@ -218,7 +217,7 @@ "dependencies": { "@orpc/openapi": "^1.13.4", "@orpc/otel": "^1.13.4", - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@orpc/zod": "^1.13.4", "@paralleldrive/cuid2": "^2.2.1", "@planetscale/database": "^1.8.0", @@ -294,7 +293,7 @@ "@typebot.io/telemetry": "workspace:*", "@typebot.io/typebot": "workspace:*", "@typebot.io/user": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", }, "devDependencies": { "@types/bun": "^1.3.9", @@ -324,7 +323,7 @@ "@typebot.io/telemetry": "workspace:*", "@typebot.io/user": "workspace:*", "@upstash/ratelimit": "^0.4.3", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "next-auth": "^5.0.0-beta.30", }, }, @@ -332,7 +331,7 @@ "name": "@typebot.io/billing", "version": "0.0.1", "dependencies": { - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@typebot.io/env": "workspace:*", "@typebot.io/lib": "workspace:*", "@typebot.io/prisma": "workspace:*", @@ -386,7 +385,7 @@ "name": "@typebot.io/file-input-block", "version": "0.0.1", "dependencies": { - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@typebot.io/blocks-core": "workspace:*", "@typebot.io/blocks-inputs": "workspace:*", "@typebot.io/blocks-logic": "workspace:*", @@ -433,7 +432,7 @@ "name": "@typebot.io/webhook-block", "version": "0.0.1", "dependencies": { - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@typebot.io/blocks-logic": "workspace:*", "@typebot.io/chat-session": "workspace:*", "@typebot.io/config": "workspace:*", @@ -452,7 +451,7 @@ "name": "@typebot.io/bot-engine", "version": "0.0.1", "dependencies": { - "@orpc/server": "^1.13.4", + "@orpc/server": "^1.13.9", "@paralleldrive/cuid2": "^2.2.1", "@planetscale/database": "^1.8.0", "@sentry/nextjs": "^10.43.0", @@ -551,7 +550,7 @@ "name": "@typebot.io/config", "version": "0.0.1", "dependencies": { - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", }, "devDependencies": { "@testcontainers/postgresql": "^11.13.0", @@ -587,7 +586,7 @@ "@typebot.io/env": "workspace:*", "@typebot.io/lib": "workspace:*", "@typebot.io/prisma": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "nodemailer": "^7.0.6", "react": "^19.2.4", "react-dom": "^19.2.4", @@ -988,7 +987,7 @@ "dependencies": { "@paralleldrive/cuid2": "^2.2.1", "@sentry/nextjs": "^10.43.0", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "ioredis": "^5.4.1", "ky": "^1.2.4", "minio": "7.1.3", @@ -1048,7 +1047,7 @@ "@prisma/adapter-planetscale": "^7.4.0", "@prisma/client": "^7.4.0", "@prisma/extension-read-replicas": "^0.5.0", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "prisma": "^7.4.0", }, "devDependencies": { @@ -1085,7 +1084,7 @@ "@typebot.io/telemetry": "workspace:*", "@typebot.io/typebot": "workspace:*", "@typebot.io/variables": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "papaparse": "^5.4.1", "zod": "^4.3.5", }, @@ -1179,15 +1178,24 @@ "name": "@typebot.io/shared-core", "version": "0.0.1", "dependencies": { - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", }, }, - "packages/shared-primitives": { - "name": "@typebot.io/shared-primitives", + "packages/spaces": { + "name": "@typebot.io/spaces", "version": "0.0.1", "dependencies": { + "@orpc/server": "^1.13.9", + "@tanstack/react-form": "^1.28.5", + "@typebot.io/config": "workspace:*", + "@typebot.io/prisma": "workspace:*", "@typebot.io/shared-core": "workspace:*", - "effect": "4.0.0-beta.30", + "@typebot.io/ui": "workspace:*", + "@typebot.io/workspaces": "workspace:*", + "effect": "4.0.0-beta.35", + }, + "devDependencies": { + "@effect/vitest": "4.0.0-beta.35", }, }, "packages/telemetry": { @@ -1209,7 +1217,7 @@ "@typebot.io/lib": "workspace:*", "@typebot.io/prisma": "workspace:*", "cookie": "^1.0.2", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "ky": "^1.2.4", "posthog-node": "^5.8.2", "zod": "^4.3.5", @@ -1242,12 +1250,11 @@ "@typebot.io/schemas": "workspace:*", "@typebot.io/settings": "workspace:*", "@typebot.io/shared-core": "workspace:*", - "@typebot.io/shared-primitives": "workspace:*", "@typebot.io/theme": "workspace:*", "@typebot.io/user": "workspace:*", "@typebot.io/variables": "workspace:*", "@typebot.io/workspaces": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "zod": "^4.3.5", }, }, @@ -1257,6 +1264,7 @@ "dependencies": { "@base-ui/react": "1.2.0", "class-variance-authority": "^0.7.1", + "emojilib": "^3.0.10", "input-otp": "^1.4.2", "next": "^16.1.6", "react": "^19.2.4", @@ -1276,7 +1284,7 @@ "@typebot.io/lib": "workspace:*", "@typebot.io/prisma": "workspace:*", "@typebot.io/telemetry": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "zod": "^4.3.5", }, }, @@ -1331,11 +1339,11 @@ "@typebot.io/prisma": "workspace:*", "@typebot.io/shared-core": "workspace:*", "@typebot.io/user": "workspace:*", - "effect": "4.0.0-beta.30", + "effect": "4.0.0-beta.35", "zod": "^4.3.5", }, "devDependencies": { - "@effect/vitest": "4.0.0-beta.30", + "@effect/vitest": "4.0.0-beta.35", "vitest": "^4.0.18", }, }, @@ -1824,7 +1832,7 @@ "@effect/sql-pg": ["@effect/sql-pg@4.0.0-beta.30", "", { "dependencies": { "pg": "^8.18.0", "pg-connection-string": "2.11.0", "pg-cursor": "^2.17.0", "pg-pool": "^3.11.0", "pg-types": "^4.1.0" }, "peerDependencies": { "effect": "^4.0.0-beta.30" } }, "sha512-LYaWEVjMvsWTrbnK4mGMoYm3Pr+yKXJCJvJaOAIwl0SCcLx40hGpy/wDLA31jbUjeOpRPSFeS0k4c2RuecChsQ=="], - "@effect/vitest": ["@effect/vitest@4.0.0-beta.30", "", { "peerDependencies": { "effect": "^4.0.0-beta.30", "vitest": "^3.0.0 || ^4.0.0" } }, "sha512-2RjNnPd1zHBuYkJNiWmhCmKUsKanO2dCBGmHhP2aBnvj5hbvI76p4JkalFMqTnHmbEKFaqgeGWfx+TS974uxgA=="], + "@effect/vitest": ["@effect/vitest@4.0.0-beta.35", "", { "peerDependencies": { "effect": "^4.0.0-beta.35", "vitest": "^3.0.0 || ^4.0.0" } }, "sha512-wdt6j7yNL8cYXSyi1QWch4UPpjB0C7QBzStmdMSmIzAZ3ZVAUcyQkdfg/hnUJt6NPZMdjVmbI7m93ml5Mqqnhw=="], "@electric-sql/pglite": ["@electric-sql/pglite@0.3.15", "", {}, "sha512-Cj++n1Mekf9ETfdc16TlDi+cDDQF0W7EcbyRHYOAeZdsAe8M/FJg18itDTSwyHfar2WIezawM9o0EKaRGVKygQ=="], @@ -2446,11 +2454,11 @@ "@opentelemetry/sql-common": ["@opentelemetry/sql-common@0.41.2", "", { "dependencies": { "@opentelemetry/core": "^2.0.0" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0" } }, "sha512-4mhWm3Z8z+i508zQJ7r6Xi7y4mmoJpdvH0fZPFRkWrdp5fq7hhZ2HhYokEOLkfqSMgPR4Z9EyB3DBkbKGOqZiQ=="], - "@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + "@orpc/client": ["@orpc/client@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9", "@orpc/standard-server-fetch": "1.13.9", "@orpc/standard-server-peer": "1.13.9" } }, "sha512-RmD2HDgmGgF6zgHHdybE4zH6QJoHjC+/C3n56yLf+fmWbiZtwnOUETgGCroY6S8aK2fpy6hJ3wZaJUjfWVuGHg=="], - "@orpc/contract": ["@orpc/contract@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/shared": "1.13.4", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A=="], + "@orpc/contract": ["@orpc/contract@1.13.9", "", { "dependencies": { "@orpc/client": "1.13.9", "@orpc/shared": "1.13.9", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-0zxMyF82pxE8DwHzarCsCtOHQK96PE23qubMMBkxkP0XTtLJ7f8aYhrG8F16pNApypmTHiRlQlqNX8VXNViMqQ=="], - "@orpc/interop": ["@orpc/interop@1.13.4", "", {}, "sha512-h8HWMSTSUYTtfN9ytGJD/MLMgWaUJOg8Z1Bq7fycnj74DVib0NLGIItoCquJkSzgZ7Otc+s1l0/2NPOViTyl9Q=="], + "@orpc/interop": ["@orpc/interop@1.13.9", "", {}, "sha512-9ulQSO/aUq1yP5CIqBxhqnPKQE7cDMPo+PFUTfYgIwjuV0mFgyMjopSw4YsNxLnbXBaDbn3WNx7rPQKhCTAV1Q=="], "@orpc/json-schema": ["@orpc/json-schema@1.13.4", "", { "dependencies": { "@orpc/contract": "1.13.4", "@orpc/interop": "1.13.4", "@orpc/openapi": "1.13.4", "@orpc/server": "1.13.4", "@orpc/shared": "1.13.4", "json-schema-typed": "^8.0.2" } }, "sha512-DLeWC06kG+ZSLpjcYDEVRFNW0my3ipOd0bOsoXD8vR7X8HXa+GL3CPT8G5KwufL2q0w01AP4nnZFF9Z+Ejp93Q=="], @@ -2460,21 +2468,21 @@ "@orpc/otel": ["@orpc/otel@1.13.7", "", { "dependencies": { "@orpc/shared": "1.13.7" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0", "@opentelemetry/instrumentation": ">=0.203.0" } }, "sha512-YXkZx5Cltrj337zOUrS084a5nGnWUyyO6QgHV71yaE4sIH1k+1g33S7wBn7FGWt9WgEN5tBFh2GST6KEn0RW8g=="], - "@orpc/server": ["@orpc/server@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/contract": "1.13.4", "@orpc/interop": "1.13.4", "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-aws-lambda": "1.13.4", "@orpc/standard-server-fastify": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4", "@orpc/standard-server-peer": "1.13.4", "cookie": "^1.1.1" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-noGqSP53KpH+2UvCpIoOCMPn5LY5UIB674ijzSZ2LYHT0EUNGpOgYd5Rab09VUAaG2NejwJc9VvWztFW3Op08w=="], + "@orpc/server": ["@orpc/server@1.13.9", "", { "dependencies": { "@orpc/client": "1.13.9", "@orpc/contract": "1.13.9", "@orpc/interop": "1.13.9", "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9", "@orpc/standard-server-aws-lambda": "1.13.9", "@orpc/standard-server-fastify": "1.13.9", "@orpc/standard-server-fetch": "1.13.9", "@orpc/standard-server-node": "1.13.9", "@orpc/standard-server-peer": "1.13.9", "cookie": "^1.1.1" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-twTEtkmPzt7mIfO1CRbHjA5S9LBTrQa3mzmBKfYDZyfECk79a5iwhIIeZJUPPMiMVtT+lFflE/W1PSauqyttUg=="], - "@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + "@orpc/shared": ["@orpc/shared@1.13.9", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.4.4" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-gpMY2e9jDsSyikh4DjBCO2Cs0wGj2I6xo2juIcmogYK5ecsTGO/U5huIftQn+2NUMk1cItwmykJBwc4pqHWVHw=="], - "@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + "@orpc/standard-server": ["@orpc/standard-server@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9" } }, "sha512-dwsky7CScgOaDBa7CBF85aPGk/3UoB4fJjitVghb/sZD0Nt+CGIeiPHMsjEgxw5rJwgawMWLI5KxFH9euAJlWw=="], - "@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4" } }, "sha512-iTJK6DiwLufVZtflLAxx5GCNQLo3NhNuQQgVtFavpx5xgCTuRb1dKNjHAoVCkF2lyqUFxv4AON2ZOSvuCCCzpw=="], + "@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9", "@orpc/standard-server-fetch": "1.13.9", "@orpc/standard-server-node": "1.13.9" } }, "sha512-dVy3LNc8qe13F2LTblMoZ/waJBBW9XTF08S7Hl3VZ3K/1yiaJDW6Ukadh0floZEPXuEivRMTcNIzWqBY1rWLPA=="], - "@orpc/standard-server-fastify": ["@orpc/standard-server-fastify@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-node": "1.13.4" }, "peerDependencies": { "fastify": ">=5.6.1" }, "optionalPeers": ["fastify"] }, "sha512-+E40iAD2IY/Vgg7FAE9aM2kQOL73LwJikkMiiD8G08kAEp1By9N7W5ejxXYiRcTVRF0j9vgvNSwhf4aSJmxp8g=="], + "@orpc/standard-server-fastify": ["@orpc/standard-server-fastify@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9", "@orpc/standard-server-node": "1.13.9" }, "peerDependencies": { "fastify": ">=5.6.1" }, "optionalPeers": ["fastify"] }, "sha512-GM9/B4Zu52P6Shh/1dMqTQwRncjjzIu70/f0Lk1/peL1J0sJFa8ScUy/P7nYlKy9WS6agjH6yPzwBUS6XEmuPA=="], - "@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + "@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9" } }, "sha512-/dJmHO+EVONyvmX3CFZkRjlRHeBfq0+6nnpFIVueGo4fNUbtQc+qurKEtpQqPxL/b7GSehskNH21XKLE0IE0gQ=="], - "@orpc/standard-server-node": ["@orpc/standard-server-node@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4" } }, "sha512-4sVTsoI1xBmKEqmcxPRGKqf/Egbtr83Lg8yLiUrt5YdjOAYENiahWyU51itL21VPdAdMFDoDdUC9aCpikyQCaw=="], + "@orpc/standard-server-node": ["@orpc/standard-server-node@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9", "@orpc/standard-server-fetch": "1.13.9" } }, "sha512-Ea8YT05kh47FzGBsaaUihYvTDxSSQoa1F2QKgCFz6mbSfX04bJZyWxdBAyLZ4BLousdItDdvzWon6066HuUaRw=="], - "@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + "@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.9", "", { "dependencies": { "@orpc/shared": "1.13.9", "@orpc/standard-server": "1.13.9" } }, "sha512-r8hSykxNIKwXSMuLYWBxQx1c3DU8b6nU8V76DZhtwC5g1SLYIzw+dzT/EgHplOfmsFeyodiEDXXX1k/twRLuzw=="], "@orpc/tanstack-query": ["@orpc/tanstack-query@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" }, "peerDependencies": { "@orpc/client": "1.13.4", "@tanstack/query-core": ">=5.80.2" } }, "sha512-gCL/kh3kf6OUGKfXxSoOZpcX1jNYzxGfo/PkLQKX7ui4xiTbfWw3sCDF30sNS4I7yAOnBwDwJ3N2xzfkTftOBg=="], @@ -3164,10 +3172,18 @@ "@tailwindcss/vite": ["@tailwindcss/vite@4.1.16", "", { "dependencies": { "@tailwindcss/node": "4.1.16", "@tailwindcss/oxide": "4.1.16", "tailwindcss": "4.1.16" }, "peerDependencies": { "vite": "^5.2.0 || ^6 || ^7" } }, "sha512-bbguNBcDxsRmi9nnlWJxhfDWamY3lmcyACHcdO1crxfzuLpOhHLLtEIN/nCbbAtj5rchUgQD17QVAKi1f7IsKg=="], + "@tanstack/devtools-event-client": ["@tanstack/devtools-event-client@0.4.3", "", { "bin": { "intent": "bin/intent.js" } }, "sha512-OZI6QyULw0FI0wjgmeYzCIfbgPsOEzwJtCpa69XrfLMtNXLGnz3d/dIabk7frg0TmHo+Ah49w5I4KC7Tufwsvw=="], + + "@tanstack/form-core": ["@tanstack/form-core@1.28.5", "", { "dependencies": { "@tanstack/devtools-event-client": "^0.4.1", "@tanstack/pacer-lite": "^0.1.1", "@tanstack/store": "^0.9.1" } }, "sha512-8lYnduHHfP6uaXF9+2OLnh3Fo27tH4TdtekWLG2b/Bp26ynbrWG6L4qhBgEb7VcvTpJw/RjvJF/JyFhZkG3pfQ=="], + "@tanstack/history": ["@tanstack/history@1.161.6", "", {}, "sha512-NaOGLRrddszbQj9upGat6HG/4TKvXLvu+osAIgfxPYA+eIvYKv8GKDJOrY2D3/U9MRnKfMWD7bU4jeD4xmqyIg=="], + "@tanstack/pacer-lite": ["@tanstack/pacer-lite@0.1.1", "", {}, "sha512-y/xtNPNt/YeyoVxE/JCx+T7yjEzpezmbb+toK8DDD1P4m7Kzs5YR956+7OKexG3f8aXgC3rLZl7b1V+yNUSy5w=="], + "@tanstack/query-core": ["@tanstack/query-core@5.80.6", "", {}, "sha512-nl7YxT/TAU+VTf+e2zTkObGTyY8YZBMnbgeA1ee66lIVqzKlYursAII6z5t0e6rXgwUMJSV4dshBTNacNpZHbQ=="], + "@tanstack/react-form": ["@tanstack/react-form@1.28.5", "", { "dependencies": { "@tanstack/form-core": "1.28.5", "@tanstack/react-store": "^0.9.1" }, "peerDependencies": { "react": "^17.0.0 || ^18.0.0 || ^19.0.0" } }, "sha512-CL8IeWkeXnEEDsHt5wBuIOZvSYrKiLRtsC9ca0LzfJJ22SYCma9cBmh1UX1EBX0o3gH2U21PmUf+y5f9OJNoEQ=="], + "@tanstack/react-query": ["@tanstack/react-query@5.80.6", "", { "dependencies": { "@tanstack/query-core": "5.80.6" }, "peerDependencies": { "react": "^18 || ^19" } }, "sha512-izX+5CnkpON3NQGcEm3/d7LfFQNo9ZpFtX2QsINgCYK9LT2VCIdi8D3bMaMSNhrAJCznRoAkFic76uvLroALBw=="], "@tanstack/react-router": ["@tanstack/react-router@1.167.4", "", { "dependencies": { "@tanstack/history": "1.161.6", "@tanstack/react-store": "^0.9.1", "@tanstack/router-core": "1.167.4", "isbot": "^5.1.22", "tiny-invariant": "^1.3.3", "tiny-warning": "^1.0.3" }, "peerDependencies": { "react": ">=18.0.0 || >=19.0.0", "react-dom": ">=18.0.0 || >=19.0.0" } }, "sha512-VpbZh382zX3WF4+X2Z+EUyd8eJhJyjg9C6ByYwrVZiWbhgbMK4+zQQIG2+lCAlIlDi7SV8fDcGL09NA8Z2kpGQ=="], @@ -3338,7 +3354,7 @@ "@typebot.io/shared-core": ["@typebot.io/shared-core@workspace:packages/shared-core"], - "@typebot.io/shared-primitives": ["@typebot.io/shared-primitives@workspace:packages/shared-primitives"], + "@typebot.io/spaces": ["@typebot.io/spaces@workspace:packages/spaces"], "@typebot.io/telemetry": ["@typebot.io/telemetry@workspace:packages/telemetry"], @@ -4252,7 +4268,7 @@ "cross-spawn": ["cross-spawn@7.0.6", "", { "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", "which": "^2.0.1" } }, "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA=="], - "crossws": ["crossws@0.3.5", "", { "dependencies": { "uncrypto": "^0.1.3" } }, "sha512-ojKiDvcmByhwa8YYqbQI/hg7MEU0NC03+pSdEq4ZUnZR9xXpwk7E43SMNGkn+JxJGPFtNvQ48+vV2p+P1ml5PA=="], + "crossws": ["crossws@0.4.4", "", { "peerDependencies": { "srvx": ">=0.7.1" }, "optionalPeers": ["srvx"] }, "sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg=="], "css-color-keywords": ["css-color-keywords@1.0.0", "", {}, "sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg=="], @@ -4444,7 +4460,7 @@ "ee-first": ["ee-first@1.1.1", "", {}, "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="], - "effect": ["effect@4.0.0-beta.30", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.5.3", "find-my-way-ts": "^0.1.6", "ini": "^6.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^1.11.8", "multipasta": "^0.2.7", "toml": "^3.0.0", "uuid": "^13.0.0", "yaml": "^2.8.2" } }, "sha512-ZQoOPu9yyqdHhoSv6TXTvCOPNd2zjAdHPofGupHjpXSHJ2TiOZtZGSJJ35ewcms/Aip6eOX7tLy5Cpoxb0M87g=="], + "effect": ["effect@4.0.0-beta.35", "", { "dependencies": { "@standard-schema/spec": "^1.1.0", "fast-check": "^4.5.3", "find-my-way-ts": "^0.1.6", "ini": "^6.0.0", "kubernetes-types": "^1.30.0", "msgpackr": "^1.11.8", "multipasta": "^0.2.7", "toml": "^3.0.0", "uuid": "^13.0.0", "yaml": "^2.8.2" } }, "sha512-64j8dgJmoEMeq6Y3WLYcZIRqPZ5E/lqnULCf6QW5te3hQ/sa13UodWLGwBEviEqBoq72U8lArhVX+T7ntzhJGQ=="], "ejs": ["ejs@3.1.10", "", { "dependencies": { "jake": "^10.8.5" }, "bin": { "ejs": "bin/cli.js" } }, "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA=="], @@ -6712,7 +6728,7 @@ "type-check": ["type-check@0.4.0", "", { "dependencies": { "prelude-ls": "^1.2.1" } }, "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew=="], - "type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + "type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="], "type-is": ["type-is@1.6.18", "", { "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" } }, "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g=="], @@ -7712,8 +7728,46 @@ "@opentelemetry/sql-common/@opentelemetry/core": ["@opentelemetry/core@2.2.0", "", { "dependencies": { "@opentelemetry/semantic-conventions": "^1.29.0" }, "peerDependencies": { "@opentelemetry/api": ">=1.0.0 <1.10.0" } }, "sha512-FuabnnUm8LflnieVxs6eP7Z383hgQU4W1e3KJS6aOG3RxWxcHyBxH8fDMHNgu/gFx/M2jvTOW/4/PHhLz6bjWw=="], + "@orpc/json-schema/@orpc/contract": ["@orpc/contract@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/shared": "1.13.4", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A=="], + + "@orpc/json-schema/@orpc/interop": ["@orpc/interop@1.13.4", "", {}, "sha512-h8HWMSTSUYTtfN9ytGJD/MLMgWaUJOg8Z1Bq7fycnj74DVib0NLGIItoCquJkSzgZ7Otc+s1l0/2NPOViTyl9Q=="], + + "@orpc/json-schema/@orpc/server": ["@orpc/server@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/contract": "1.13.4", "@orpc/interop": "1.13.4", "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-aws-lambda": "1.13.4", "@orpc/standard-server-fastify": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4", "@orpc/standard-server-peer": "1.13.4", "cookie": "^1.1.1" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-noGqSP53KpH+2UvCpIoOCMPn5LY5UIB674ijzSZ2LYHT0EUNGpOgYd5Rab09VUAaG2NejwJc9VvWztFW3Op08w=="], + + "@orpc/json-schema/@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + + "@orpc/openapi/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/openapi/@orpc/contract": ["@orpc/contract@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/shared": "1.13.4", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A=="], + + "@orpc/openapi/@orpc/interop": ["@orpc/interop@1.13.4", "", {}, "sha512-h8HWMSTSUYTtfN9ytGJD/MLMgWaUJOg8Z1Bq7fycnj74DVib0NLGIItoCquJkSzgZ7Otc+s1l0/2NPOViTyl9Q=="], + + "@orpc/openapi/@orpc/server": ["@orpc/server@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/contract": "1.13.4", "@orpc/interop": "1.13.4", "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-aws-lambda": "1.13.4", "@orpc/standard-server-fastify": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4", "@orpc/standard-server-peer": "1.13.4", "cookie": "^1.1.1" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-noGqSP53KpH+2UvCpIoOCMPn5LY5UIB674ijzSZ2LYHT0EUNGpOgYd5Rab09VUAaG2NejwJc9VvWztFW3Op08w=="], + + "@orpc/openapi/@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + + "@orpc/openapi/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/openapi-client/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/openapi-client/@orpc/contract": ["@orpc/contract@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/shared": "1.13.4", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A=="], + + "@orpc/openapi-client/@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + + "@orpc/openapi-client/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + "@orpc/otel/@orpc/shared": ["@orpc/shared@1.13.7", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.4.4" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-yP0oDIC98sZHqSTmr4SUXJo4RNw9yias1GYVJTiVTXrRUEdniafkLrSkOrOHgrILP3w93sKiE69V3+/T0TNSOQ=="], + "@orpc/tanstack-query/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/tanstack-query/@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + + "@orpc/zod/@orpc/contract": ["@orpc/contract@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/shared": "1.13.4", "@standard-schema/spec": "^1.1.0", "openapi-types": "^12.1.3" } }, "sha512-TIxyaF67uOlihCRcasjHZxguZpbqfNK7aMrDLnhoufmQBE4OKvguNzmrOFHgsuM0OXoopX0Nuhun1ccaxKP10A=="], + + "@orpc/zod/@orpc/server": ["@orpc/server@1.13.4", "", { "dependencies": { "@orpc/client": "1.13.4", "@orpc/contract": "1.13.4", "@orpc/interop": "1.13.4", "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-aws-lambda": "1.13.4", "@orpc/standard-server-fastify": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4", "@orpc/standard-server-peer": "1.13.4", "cookie": "^1.1.1" }, "peerDependencies": { "crossws": ">=0.3.4", "ws": ">=8.18.1" }, "optionalPeers": ["crossws", "ws"] }, "sha512-noGqSP53KpH+2UvCpIoOCMPn5LY5UIB674ijzSZ2LYHT0EUNGpOgYd5Rab09VUAaG2NejwJc9VvWztFW3Op08w=="], + + "@orpc/zod/@orpc/shared": ["@orpc/shared@1.13.4", "", { "dependencies": { "radash": "^12.1.1", "type-fest": "^5.3.1" }, "peerDependencies": { "@opentelemetry/api": ">=1.9.0" }, "optionalPeers": ["@opentelemetry/api"] }, "sha512-TYt9rLG/BUkNQBeQ6C1tEiHS/Seb8OojHgj9GlvqyjHJhMZx5qjsIyTW6RqLPZJ4U2vgK6x4Her36+tlFCKJug=="], + "@parcel/watcher/detect-libc": ["detect-libc@1.0.3", "", { "bin": { "detect-libc": "./bin/detect-libc.js" } }, "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg=="], "@platejs/markdown/marked": ["marked@15.0.12", "", { "bin": { "marked": "bin/marked.js" } }, "sha512-8dD6FusOQSrpv9Z1rdNMdlSgQOIP880DHqnohobOmYLElGEqAL/JvxvuxZO16r4HtjTlfPRDC1hbvxC9dPN2nA=="], @@ -8132,8 +8186,6 @@ "engine.io-client/ws": ["ws@8.18.3", "", { "peerDependencies": { "bufferutil": "^4.0.1", "utf-8-validate": ">=5.0.2" }, "optionalPeers": ["bufferutil", "utf-8-validate"] }, "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg=="], - "env-runner/crossws": ["crossws@0.4.4", "", { "peerDependencies": { "srvx": ">=0.7.1" }, "optionalPeers": ["srvx"] }, "sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg=="], - "esbuild-plugin-solid/@babel/core": ["@babel/core@7.28.3", "", { "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.27.1", "@babel/generator": "^7.28.3", "@babel/helper-compilation-targets": "^7.27.2", "@babel/helper-module-transforms": "^7.28.3", "@babel/helpers": "^7.28.3", "@babel/parser": "^7.28.3", "@babel/template": "^7.27.2", "@babel/traverse": "^7.28.3", "@babel/types": "^7.28.2", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", "json5": "^2.2.3", "semver": "^6.3.1" } }, "sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ=="], "escodegen/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], @@ -8432,8 +8484,6 @@ "nextjs-cors/next": ["next@15.3.0", "", { "dependencies": { "@next/env": "15.3.0", "@swc/counter": "0.1.3", "@swc/helpers": "0.5.15", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", "postcss": "8.4.31", "styled-jsx": "5.1.6" }, "optionalDependencies": { "@next/swc-darwin-arm64": "15.3.0", "@next/swc-darwin-x64": "15.3.0", "@next/swc-linux-arm64-gnu": "15.3.0", "@next/swc-linux-arm64-musl": "15.3.0", "@next/swc-linux-x64-gnu": "15.3.0", "@next/swc-linux-x64-musl": "15.3.0", "@next/swc-win32-arm64-msvc": "15.3.0", "@next/swc-win32-x64-msvc": "15.3.0", "sharp": "^0.34.1" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", "@playwright/test": "^1.41.2", "babel-plugin-react-compiler": "*", "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", "sass": "^1.3.0" }, "optionalPeers": ["@opentelemetry/api", "@playwright/test", "babel-plugin-react-compiler", "sass"], "bin": { "next": "dist/bin/next" } }, "sha512-k0MgP6BsK8cZ73wRjMazl2y2UcXj49ZXLDEgx6BikWuby/CN+nh81qFFI16edgd7xYpe/jj2OZEIwCoqnzz0bQ=="], - "nitro/crossws": ["crossws@0.4.4", "", { "peerDependencies": { "srvx": ">=0.7.1" }, "optionalPeers": ["srvx"] }, "sha512-w6c4OdpRNnudVmcgr7brb/+/HmYjMQvYToO/oTrprTwxRUiom3LYWU1PMWuD006okbUWpII1Ea9/+kwpUfmyRg=="], - "nuqs/@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], "nx/dotenv": ["dotenv@16.4.5", "", {}, "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="], @@ -8580,8 +8630,6 @@ "send/statuses": ["statuses@2.0.1", "", {}, "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ=="], - "serialize-error/type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="], - "serve-index/debug": ["debug@2.6.9", "", { "dependencies": { "ms": "2.0.0" } }, "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA=="], "serve-index/http-errors": ["http-errors@1.8.1", "", { "dependencies": { "depd": "~1.1.2", "inherits": "2.0.4", "setprototypeof": "1.2.0", "statuses": ">= 1.5.0 < 2", "toidentifier": "1.0.1" } }, "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g=="], @@ -9582,7 +9630,73 @@ "@opentelemetry/sql-common/@opentelemetry/core/@opentelemetry/semantic-conventions": ["@opentelemetry/semantic-conventions@1.38.0", "", {}, "sha512-kocjix+/sSggfJhwXqClZ3i9Y/MI0fp7b+g7kCRm6psy2dsf8uApTRclwG18h8Avm7C9+fnt+O36PspJ/OzoWg=="], - "@orpc/otel/@orpc/shared/type-fest": ["type-fest@5.4.4", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-JnTrzGu+zPV3aXIUhnyWJj4z/wigMsdYajGLIYakqyOW1nPllzXEJee0QQbHj+CTIQtXGlAjuK0UY+2xTyjVAw=="], + "@orpc/json-schema/@orpc/contract/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/json-schema/@orpc/server/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4" } }, "sha512-iTJK6DiwLufVZtflLAxx5GCNQLo3NhNuQQgVtFavpx5xgCTuRb1dKNjHAoVCkF2lyqUFxv4AON2ZOSvuCCCzpw=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server-fastify": ["@orpc/standard-server-fastify@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-node": "1.13.4" }, "peerDependencies": { "fastify": ">=5.6.1" }, "optionalPeers": ["fastify"] }, "sha512-+E40iAD2IY/Vgg7FAE9aM2kQOL73LwJikkMiiD8G08kAEp1By9N7W5ejxXYiRcTVRF0j9vgvNSwhf4aSJmxp8g=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server-node": ["@orpc/standard-server-node@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4" } }, "sha512-4sVTsoI1xBmKEqmcxPRGKqf/Egbtr83Lg8yLiUrt5YdjOAYENiahWyU51itL21VPdAdMFDoDdUC9aCpikyQCaw=="], + + "@orpc/json-schema/@orpc/server/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/json-schema/@orpc/shared/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + + "@orpc/openapi-client/@orpc/client/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/openapi-client/@orpc/client/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/openapi-client/@orpc/shared/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + + "@orpc/openapi/@orpc/client/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/openapi/@orpc/client/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/openapi/@orpc/server/@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4" } }, "sha512-iTJK6DiwLufVZtflLAxx5GCNQLo3NhNuQQgVtFavpx5xgCTuRb1dKNjHAoVCkF2lyqUFxv4AON2ZOSvuCCCzpw=="], + + "@orpc/openapi/@orpc/server/@orpc/standard-server-fastify": ["@orpc/standard-server-fastify@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-node": "1.13.4" }, "peerDependencies": { "fastify": ">=5.6.1" }, "optionalPeers": ["fastify"] }, "sha512-+E40iAD2IY/Vgg7FAE9aM2kQOL73LwJikkMiiD8G08kAEp1By9N7W5ejxXYiRcTVRF0j9vgvNSwhf4aSJmxp8g=="], + + "@orpc/openapi/@orpc/server/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/openapi/@orpc/server/@orpc/standard-server-node": ["@orpc/standard-server-node@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4" } }, "sha512-4sVTsoI1xBmKEqmcxPRGKqf/Egbtr83Lg8yLiUrt5YdjOAYENiahWyU51itL21VPdAdMFDoDdUC9aCpikyQCaw=="], + + "@orpc/openapi/@orpc/server/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/openapi/@orpc/shared/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + + "@orpc/tanstack-query/@orpc/client/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/tanstack-query/@orpc/client/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/tanstack-query/@orpc/client/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/tanstack-query/@orpc/shared/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], + + "@orpc/zod/@orpc/contract/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/zod/@orpc/server/@orpc/client": ["@orpc/client@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-peer": "1.13.4" } }, "sha512-s13GPMeoooJc5Th2EaYT5HMFtWG8S03DUVytYfJv8pIhP87RYKl94w52A36denH6r/B4LaAgBeC9nTAOslK+Og=="], + + "@orpc/zod/@orpc/server/@orpc/interop": ["@orpc/interop@1.13.4", "", {}, "sha512-h8HWMSTSUYTtfN9ytGJD/MLMgWaUJOg8Z1Bq7fycnj74DVib0NLGIItoCquJkSzgZ7Otc+s1l0/2NPOViTyl9Q=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server-aws-lambda": ["@orpc/standard-server-aws-lambda@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4", "@orpc/standard-server-node": "1.13.4" } }, "sha512-iTJK6DiwLufVZtflLAxx5GCNQLo3NhNuQQgVtFavpx5xgCTuRb1dKNjHAoVCkF2lyqUFxv4AON2ZOSvuCCCzpw=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server-fastify": ["@orpc/standard-server-fastify@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-node": "1.13.4" }, "peerDependencies": { "fastify": ">=5.6.1" }, "optionalPeers": ["fastify"] }, "sha512-+E40iAD2IY/Vgg7FAE9aM2kQOL73LwJikkMiiD8G08kAEp1By9N7W5ejxXYiRcTVRF0j9vgvNSwhf4aSJmxp8g=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server-node": ["@orpc/standard-server-node@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4", "@orpc/standard-server-fetch": "1.13.4" } }, "sha512-4sVTsoI1xBmKEqmcxPRGKqf/Egbtr83Lg8yLiUrt5YdjOAYENiahWyU51itL21VPdAdMFDoDdUC9aCpikyQCaw=="], + + "@orpc/zod/@orpc/server/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/zod/@orpc/shared/type-fest": ["type-fest@5.3.1", "", { "dependencies": { "tagged-tag": "^1.0.0" } }, "sha512-VCn+LMHbd4t6sF3wfU/+HKT63C9OoyrSIf4b+vtWHpt2U7/4InZG467YDNMFMR70DdHjAdpPWmw2lzRdg0Xqqg=="], "@prisma/config/effect/@standard-schema/spec": ["@standard-schema/spec@1.0.0", "", {}, "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA=="], @@ -10852,6 +10966,18 @@ "@nx/vite/vite/postcss/nanoid": ["nanoid@3.3.11", "", { "bin": { "nanoid": "bin/nanoid.cjs" } }, "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w=="], + "@orpc/json-schema/@orpc/contract/@orpc/client/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/json-schema/@orpc/contract/@orpc/client/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/json-schema/@orpc/contract/@orpc/client/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + + "@orpc/zod/@orpc/contract/@orpc/client/@orpc/standard-server": ["@orpc/standard-server@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4" } }, "sha512-ZOzgfVp6XUg+wVYw+gqesfRfGPtQbnBIrIiSnFMtZF+6ncmFJeF2Shc4RI2Guqc0Qz25juy8Ogo4tX3YqysOcg=="], + + "@orpc/zod/@orpc/contract/@orpc/client/@orpc/standard-server-fetch": ["@orpc/standard-server-fetch@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-/zmKwnuxfAXbppJpgr1CMnQX3ptPlYcDzLz1TaVzz9VG/Xg58Ov3YhabS2Oi1utLVhy5t4kaCppUducAvoKN+A=="], + + "@orpc/zod/@orpc/contract/@orpc/client/@orpc/standard-server-peer": ["@orpc/standard-server-peer@1.13.4", "", { "dependencies": { "@orpc/shared": "1.13.4", "@orpc/standard-server": "1.13.4" } }, "sha512-UfqnTLqevjCKUk4cmImOG8cQUwANpV1dp9e9u2O1ki6BRBsg/zlXFg6G2N6wP0zr9ayIiO1d2qJdH55yl/1BNw=="], + "@prisma/config/effect/fast-check/pure-rand": ["pure-rand@6.1.0", "", {}, "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA=="], "@react-email/preview-server/@babel/core/@babel/types/@babel/helper-validator-identifier": ["@babel/helper-validator-identifier@7.28.5", "", {}, "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q=="], diff --git a/packages/ui/package.json b/packages/ui/package.json index ff0292653..355f97542 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -26,6 +26,7 @@ "dependencies": { "@base-ui/react": "1.2.0", "class-variance-authority": "^0.7.1", + "emojilib": "^3.0.10", "input-otp": "^1.4.2", "next": "^16.1.6", "react": "^19.2.4", diff --git a/packages/ui/src/components/EmojiOrImageIcon.tsx b/packages/ui/src/components/EmojiOrImageIcon.tsx index 519714462..862a8e204 100644 --- a/packages/ui/src/components/EmojiOrImageIcon.tsx +++ b/packages/ui/src/components/EmojiOrImageIcon.tsx @@ -3,14 +3,19 @@ import { cx } from "../lib/cva"; type Props = { icon?: string | null; className?: string; - defaultIcon: (props: React.SVGProps) => React.ReactNode; + defaultIcon: React.ReactNode; }; export const EmojiOrImageIcon = ({ icon, className, defaultIcon }: Props) => { if (icon) { if (isImageSource(icon)) { return ( - + { } return ( - - {defaultIcon({ className: "size-full" })} + + {defaultIcon} ); }; -const isImageSource = (icon: string) => icon.startsWith("http") || isSvgSource(icon); +const isImageSource = (icon: string) => + icon.startsWith("http") || isSvgSource(icon); const isSvgSource = (icon: string) => icon.startsWith("data:image/svg+xml") || icon.includes(".svg"); diff --git a/packages/ui/src/components/EmojisList.tsx b/packages/ui/src/components/EmojisList.tsx new file mode 100644 index 000000000..3e9f2b34c --- /dev/null +++ b/packages/ui/src/components/EmojisList.tsx @@ -0,0 +1,163 @@ +import emojiTagsData from "emojilib"; +import { useMemo } from "react"; +import { Button } from "./Button"; +import emojis from "./emoji/emojiList.json"; + +const emojiTags = emojiTagsData as Record; + +const people = emojis["Smileys & Emotion"].concat(emojis["People & Body"]); +const nature = emojis["Animals & Nature"]; +const food = emojis["Food & Drink"]; +const activities = emojis.Activities; +const travel = emojis["Travel & Places"]; +const objects = emojis.Objects; +const symbols = emojis.Symbols; +const flags = emojis.Flags; + +export const EmojisList = ({ + searchQuery, + recentEmojis, + onEmojiClick, +}: { + searchQuery: string; + recentEmojis?: string[]; + onEmojiClick: (emoji: string) => void; +}) => { + const filteredGroups = useMemo(() => { + const byTag = (emoji: string) => + emojiTags[emoji].find((tag) => tag.includes(searchQuery)); + return { + people: people.filter(byTag), + animals: nature.filter(byTag), + food: food.filter(byTag), + travel: travel.filter(byTag), + activities: activities.filter(byTag), + objects: objects.filter(byTag), + symbols: symbols.filter(byTag), + flags: flags.filter(byTag), + }; + }, [searchQuery]); + + return ( +
+ {recentEmojis && recentEmojis.length > 0 && ( +
+

+ RECENT +

+ +
+ )} + {filteredGroups.people.length > 0 && ( +
+

+ PEOPLE +

+ +
+ )} + {filteredGroups.animals.length > 0 && ( +
+

+ ANIMALS & NATURE +

+ +
+ )} + {filteredGroups.food.length > 0 && ( +
+

+ FOOD & DRINK +

+ +
+ )} + {filteredGroups.travel.length > 0 && ( +
+

+ TRAVEL & PLACES +

+ +
+ )} + {filteredGroups.activities.length > 0 && ( +
+

+ ACTIVITIES +

+ +
+ )} + {filteredGroups.objects.length > 0 && ( +
+

+ OBJECTS +

+ +
+ )} + {filteredGroups.symbols.length > 0 && ( +
+

+ SYMBOLS +

+ +
+ )} + {filteredGroups.flags.length > 0 && ( +
+

+ FLAGS +

+ +
+ )} +
+ ); +}; + +const EmojiGrid = ({ + emojis: emojiList, + onEmojiClick, +}: { + emojis: string[]; + onEmojiClick: (emoji: string) => void; +}) => { + const handleClick = (emoji: string) => () => onEmojiClick(emoji); + return ( +
+ {emojiList.map((emoji) => ( + + ))} +
+ ); +}; diff --git a/apps/builder/src/components/ImageUploadContent/emoji/emojiList.json b/packages/ui/src/components/emoji/emojiList.json similarity index 100% rename from apps/builder/src/components/ImageUploadContent/emoji/emojiList.json rename to packages/ui/src/components/emoji/emojiList.json diff --git a/packages/ui/tsconfig.lib.json b/packages/ui/tsconfig.lib.json index 11330320d..bc0cd067e 100644 --- a/packages/ui/tsconfig.lib.json +++ b/packages/ui/tsconfig.lib.json @@ -2,11 +2,16 @@ "extends": "../../tsconfig.base.json", "compilerOptions": { "baseUrl": ".", + "resolveJsonModule": true, "rootDir": "src", "outDir": "dist", "tsBuildInfoFile": "dist/tsconfig.lib.tsbuildinfo", "lib": ["dom", "ESNext"] }, - "include": ["src/**/*.ts", "src/**/*.tsx"], + "include": [ + "src/**/*.ts", + "src/**/*.tsx", + "src/components/emoji/emojiList.json" + ], "references": [] }