`, one track plays at a time, equalizer bars driven by play state) — biggest lift, biggest payoff.
diff --git a/docs/tool-ui-audit/design-review/03-tasks-catalog-chats.md b/docs/tool-ui-audit/design-review/03-tasks-catalog-chats.md
new file mode 100644
index 000000000..68906b298
--- /dev/null
+++ b/docs/tool-ui-audit/design-review/03-tasks-catalog-chats.md
@@ -0,0 +1,492 @@
+# Design Review — Tasks, Catalog & Chats tool responses
+
+Reviewer lens: senior product designer. Scope is the chat tool-response UI under
+`components/VercelChat/tools/{tasks,catalog,chats}` plus
+`components/shared/TasksSkeleton.tsx`. No component code was changed.
+
+Two lenses per component:
+- **A) Senior designer** — hierarchy, spacing, type, tone, and crucially MOTION
+ (list stagger, row hover, status-pill transitions, schedule pill, upload
+ progress, success confirmations) and how to make this feel like a crafted
+ product rather than generic AI tool output.
+- **B) Customer vs. higher-bar platforms** — Linear (tasks/scheduling), Notion,
+ Raycast, Vercel. What feels generic / lacks taste.
+
+Findings are `problem → proposed change → love/taste rationale`, prioritized
+P0/P1/P2.
+
+Shared building blocks reviewed for context: `shared/ToolCard.tsx`,
+`shared/ToolCardSkeleton.tsx`, `shared/toolCardTokens.ts`,
+`lib/tasks/parseCronToHuman.ts`, `lib/tasks/isRecurring.ts`. The card shell is
+genuinely good: one consistent radius/border/shadow, tonal icon chips, a single
+shared entrance motion (`opacity 0→1`, `y 6→0`, 0.28s, custom ease). The biggest
+systemic gaps are (1) the data model carries `next_run` / `last_run` that the UI
+never shows, and (2) almost no per-item motion — lists pop in as one block, rows
+have only color hover, status changes are instant.
+
+---
+
+## TASKS
+
+### Cross-cutting (applies to all task surfaces)
+
+- **P0 — `next_run`/`last_run` exist in the schema but are never rendered.**
+ `scheduled_actions` has `next_run` and `last_run` (`types/database.types.ts`
+ ~L2517–2519), yet `TaskCard` shows only the cron-as-human string. A scheduling
+ product lives or dies on "when does this actually fire next." → Add a "Next
+ run" line to `TaskCard` (relative + absolute on hover/title, e.g. "Next run in
+ 4h · Tue 3:00 PM"), and surface `last_run` in the details dialog. *Trust in a
+ scheduler comes from showing the next concrete moment, not just the rule.*
+
+- **P1 — No timezone anywhere.** Cron is rendered with `cronstrue` default
+ ("At 03:00 PM, only on Monday") with zero TZ context. A user in PT cannot tell
+ if "3 PM" is theirs or UTC. → Append the resolved zone ("3:00 PM PT") wherever
+ a time is shown. *Ambiguous times are the #1 way scheduling UIs lose trust.*
+
+- **P1 — `parseCronToHuman` failure is silent and ugly.** On a parse error it
+ `console.error`s (violates the repo's "No Production Logging" principle) and
+ returns the raw cron string, which then renders inside a "schedule" pill as
+ e.g. `0 3 * * 1` — looks broken to the user. → Drop the console.error; on
+ failure render a neutral "Custom schedule" label with the raw cron in a
+ tooltip. *Never show a user a regex where a sentence belongs.*
+
+---
+
+### `tasks/GetTasksSuccess.tsx`
+
+**A) Senior designer**
+- P1 — List has no stagger. `tasks.map` renders inside a static `divide-y`
+ container; all rows appear in the same frame as the card. → Wrap rows in a
+ framer-motion container with `staggerChildren: 0.04` and a small per-row
+ `y: 4 → 0`. Cap stagger (e.g. first 8 rows) so long lists don't feel slow.
+ *A gentle cascade reads as "assembled for you," not "dumped."*
+- P2 — `max-h-80` scroll has no affordance. The list silently clips with a hard
+ edge. → Add a top/bottom fade mask (`mask-image` linear-gradient) when
+ scrollable. *The fade is the difference between "list" and "scrollable list."*
+- P2 — Header count is duplicated: subtitle says "3 scheduled tasks" AND a `3`
+ pill sits in `trailing`. → Drop the pill, or drop the number from the subtitle
+ and keep the pill; don't say the same number twice. *Redundancy reads as a
+ template that nobody curated.*
+
+**B) vs. higher-bar platforms**
+- Linear's "My Issues" / scheduled views always lead with *when* and *status*,
+ not just a title + rule. This list is title-forward with the schedule demoted
+ to a muted pill — it reads like a generic "here are your rows" dump. → Promote
+ next-run; consider grouping ("Today / This week / Later") once next_run is
+ available. *Grouping by time is what makes a schedule feel like a calendar
+ rather than a table.*
+
+---
+
+### `tasks/TaskCard.tsx`
+
+**A) Senior designer**
+- P0 — Schedule legibility: the only schedule signal is one truncated muted
+ pill (`parseCronToHuman` inside a `text-xs text-muted-foreground` pill that
+ can `truncate`). For a recurring weekly task this can clip to "At 03:00 PM, on
+ Mon…". → Give schedule its own line (not a pill), full width, with recurrence
+ icon + human text + next-run; reserve pills for status only. *The single most
+ important fact about a task should not be the thing that truncates first.*
+- P1 — Status pill swaps to hover actions via `group-hover:hidden`. That's a
+ hard show/hide with no transition, and it means **status disappears the moment
+ you reach for an action** — you lose context exactly when acting. → Cross-fade
+ instead (status fades to ~0 opacity, actions fade in) OR keep status visible
+ and place actions to its left. *Information shouldn't vanish under the cursor;
+ taste is in the transition, not the toggle.*
+- P1 — The "Edit" pencil button (L116–121) has no `onClick` — it's a dead
+ control that looks actionable. The row is wrapped in `TaskDetailsDialog` so
+ clicking the row edits, but a labeled Edit button that does nothing is a trust
+ bug. → Either wire it or remove it. *A button that lies about being clickable
+ is the opposite of craft.*
+- P1 — No optimistic/transition state for pause & delete beyond text swap
+ ("Pause" → "Pausing…"). The card itself doesn't react. → On pause, animate the
+ status pill amber and dim the row; on delete, animate height/opacity collapse
+ (`AnimatePresence`) so the row physically leaves. *Satisfying confirmations
+ are spatial, not just textual.*
+- P2 — `rounded-xl` row inside a `rounded-2xl` card with `divide-y` produces
+ slightly awkward corners at the first/last row against the divider. → Use
+ consistent inner radius or remove row radius and rely on hover bg. *Nested
+ radii that don't nest cleanly is a classic "almost" detail.*
+- P2 — Artist avatar fallback is a generic `Clock` icon (`TaskArtistImage`),
+ identical to the recurrence/one-off icon used in the schedule pill — two
+ different meanings, one glyph. → Use initials or a music/person glyph for the
+ avatar fallback. *Reusing one icon for two concepts muddies the visual
+ language.*
+
+**B) vs. higher-bar platforms**
+- Linear rows: status as a colored state, assignee avatar, due/next as a
+ first-class right-aligned column, all aligned on a strict grid. Here the right
+ side is a single pill that *also* hosts hover actions, so alignment shifts on
+ hover. → Adopt a stable right rail: fixed-width status + next-run column,
+ actions in an overflow that doesn't reflow layout. *No-layout-shift-on-hover
+ is a hallmark of a loved interface.*
+- Notion/Linear use a real owner avatar; `ownerEmail` here is a raw email in a
+ muted pill (only in shared/admin contexts). → Avatar + name, email on hover.
+ *Raw emails in the UI read as a debug view.*
+
+---
+
+### `tasks/CreateTaskSuccess.tsx`
+
+**A) Senior designer**
+- P1 — "Created" doesn't *feel* created. It uses the same `ToolCard` entrance
+ as every other card; the only success signal is a green `Plus` chip + copy.
+ → Add a one-shot success flourish on mount: chip does a quick scale/`Check`
+ morph, or a brief emerald ring pulse on the card. *A creation moment deserves
+ a half-second of delight; that's where "crafted" lives.*
+- P1 — Icon mismatch: success tone but a `Plus` icon (means "add"), while the
+ message says "scheduled and ready to run." → Use `CalendarCheck` /
+ `CalendarClock` to tie the confirmation to *scheduling*. *The icon should
+ confirm the noun (a schedule), not the verb (add).*
+- P2 — Subtitle "Your task is scheduled and ready to run." is generic boilerplate
+ and the most valuable confirmation — *when it first runs* — is absent. → "First
+ run Tue at 3:00 PM PT · repeats weekly" using next_run. *Confirm the
+ consequence, not just the action.*
+
+**B) vs. higher-bar platforms**
+- Linear/Vercel post-action toasts are quiet but specific ("Scheduled for
+ Tue 3 PM"). This is a full card restating the task with generic praise copy.
+ → Lead with the concrete next-run; the card body (TaskCard) already repeats
+ details. *Specificity > congratulations.*
+
+---
+
+### `tasks/UpdateTaskSuccess.tsx`
+
+**A) Senior designer**
+- P1 — Indistinguishable from Create except tone (`info`/blue), icon (`Pencil`)
+ and copy ("changes have been saved"). No sense of *what* changed. → Show a
+ diff hint ("Schedule changed: weekly → daily" / "Renamed") when derivable, or
+ at minimum re-emphasize the new next-run. *"Saved" is table stakes; "here's
+ what changed" is the product.*
+- P2 — Same lack of a confirmation micro-moment as Create (shares ToolCard
+ entrance only). → A subtle blue ring pulse keyed to "update." *Distinct states
+ should feel distinct, not just be tinted differently.*
+
+**B) vs. higher-bar platforms**
+- Notion/Linear show edited-time + actor on update. There's no "updated just now"
+ timestamp here despite `updated_at` existing in the schema. → Surface "Updated
+ just now." *Temporal feedback makes edits feel real.*
+
+---
+
+### `tasks/DeleteTaskSuccess.tsx`
+
+**A) Senior designer**
+- P1 — Deletion is a `warning` (amber) tone showing the deleted task at
+ `opacity-70` with a "Deleted" badge — calm and correct, but there's no
+ *removal* motion, and (unlike pause/delete inside TaskCard) no undo. → Animate
+ the shown card with a strikethrough/desaturate settle on mount, and add an
+ "Undo" affordance (deletes are the one place users panic). *Undo is the single
+ most loved detail in any destructive flow.*
+- P2 — Copy "removed and will no longer run" is good and trustworthy; keep it.
+ Pair it with the now-cancelled next-run, struck through ("Was: Tue 3 PM").
+ *Showing the future you cancelled makes the deletion legible.*
+
+**B) vs. higher-bar platforms**
+- Linear/Gmail: destructive action → inline snackbar with timed Undo. This card
+ has none. *No-undo on delete is the clearest "no love here" tell.*
+
+---
+
+### `tasks/DeleteTaskSkeleton.tsx` & `shared/TasksSkeleton.tsx`
+
+**A) Senior designer**
+- P2 — Both are thin wrappers over `ToolCardSkeleton` (good reuse). But the
+ skeleton's pulse and the loaded card's entrance aren't choreographed — the
+ pulse stops, the card fades in from `y:6` again, so it double-animates. → Have
+ the loaded card mount with `noAnimation` when it replaces a skeleton, or share
+ a layoutId so it morphs. *Loading→loaded should be one continuous gesture, not
+ two separate animations.*
+- P2 — `DeleteTaskSkeleton` shows `rows={1}` of a generic avatar+two-line row;
+ for a delete, a single-line "removing…" with a subtle red-tinted chip would
+ set the right expectation. → Tint the skeleton chip per the pending action.
+ *Even the wait should hint at the outcome.*
+
+**B) vs. higher-bar platforms**
+- Linear/Vercel skeletons match the final layout's column widths exactly. The
+ task skeleton's generic 1/2 + 1/3 bars don't match TaskCard's title +
+ schedule-pill rhythm, so there's a small reflow on load. → Mirror real widths.
+ *Zero reflow on load is invisible craft people feel but can't name.*
+
+---
+
+### `tasks/TaskArtistImage.tsx`
+
+**A) Senior designer**
+- P2 — Image fade-in is nicely handled (`opacity` transition + pulse
+ placeholder). But there's no error fallback — a broken `imageUrl` leaves the
+ pulse forever (no `onError`). → Add `onError` → fall back to the Clock/initials
+ state. *A perpetual shimmer is worse than an honest placeholder.*
+- P2 — Fallback `Clock` collides semantically with the schedule icons (see
+ TaskCard). → Initials or person glyph. *One glyph, one meaning.*
+
+**B) vs. higher-bar platforms**
+- Linear/Notion avatars use a deterministic color from the name for fallbacks
+ (instant identity). A flat muted circle here is anonymous. → Hash name → tint.
+ *Colored initials make a list scannable at a glance.*
+
+---
+
+### `tasks/TaskError.tsx`
+
+**A) Senior designer**
+- P1 — The error dedupe logic exists because callers pass the same string into
+ `message`, `error`, and `title` (see Create/Update/Delete: all three are
+ literally "Failed to Create Task"). So the "error detail" is just the title
+ repeated → the user gets a title and a body that say the same thing with no
+ actual cause. → Pass the real error/cause as `error`; keep `title` short
+ ("Couldn't create task"). *An error with no cause is a dead end; the dedupe is
+ a band-aid over empty content.*
+- P2 — No retry. Failed create/update/delete just shows red text. → Offer a
+ "Try again" affordance. *Recovery in place is the difference between a tool and
+ a toy.*
+
+**B) vs. higher-bar platforms**
+- Vercel/Linear errors are specific + actionable ("Rate limited, retry in 30s").
+ This is generic. *Specific errors signal a team that sweats failure states.*
+
+---
+
+## CATALOG
+
+### `catalog/CatalogSongsResult.tsx` (orchestrator)
+
+**A) Senior designer**
+- P1 — The result is a bare `flex flex-col` stack of sub-cards, NOT wrapped in
+ `ToolCard`. So catalog import looks visually different from every other tool
+ response (no header chip, no entrance motion, different max-width `max-w-xl`).
+ → Wrap in `ToolCard` (icon `ListMusic`, title "Catalog import") for
+ consistency. *A tool that doesn't wear the system uniform reads as bolted-on.*
+- P1 — Upload progress (L84–90) is a flat `Progress` bar + "Uploading… 42%".
+ It's functional but joyless and the count of rows processed
+ (`uploadProgress.current/total`) is hidden behind a percentage. → Show
+ "Uploading 128 / 300 songs" with the bar, and animate the % with
+ `tabular-nums` already in place; on complete, morph bar → green check.
+ *Counting up real rows feels like work being done; a naked % feels like a
+ spinner.*
+- P2 — Order of operations is odd: status → summary → toggle → list → upload
+ button. The primary CTA (upload) sits at the *bottom* under a potentially long
+ list. → For the empty/initial state, lead with the upload affordance.
+ *Put the next action where the eye lands first.*
+
+**B) vs. higher-bar platforms**
+- A great CSV import (Linear/Notion/Airtable) shows a clear post-import
+ reconciliation: "300 rows · 280 added · 15 skipped · 5 duplicates." Here the
+ summary only has "Songs processed" + "Total in catalog" (see Summary below) —
+ inserted vs skipped vs matched is not represented. *Import without a
+ reconciliation summary is the biggest taste gap in this whole set.*
+
+---
+
+### `catalog/InsertCatalogSongsSummary.tsx`
+
+**A) Senior designer**
+- P0 — Only two stats: `total_added` ("Songs processed") and
+ `pagination.total_count` ("Total in catalog"). The brief explicitly wants
+ inserted / skipped / matched to feel like a clear data summary, and that
+ breakdown is absent. → Add chips/segments for Added, Skipped, Duplicates/
+ Matched with color coding (emerald/amber/muted) once the data is available.
+ *A summary that can't tell you what was skipped doesn't answer the user's real
+ question after an import.*
+- P1 — "Songs processed" is ambiguous (processed = added? attempted?). → Rename
+ to the precise verb ("Added to catalog"). *Vague stat labels erode confidence
+ in the numbers.*
+- P2 — Stat chips don't animate. A count-up (`0 → 300`) on mount would make the
+ summary land. → Animate the number. *Numbers that tick up feel earned.*
+
+**B) vs. higher-bar platforms**
+- Vercel deploy summaries and Linear import results use a tight stat strip with
+ semantic color. Two neutral grey chips here read generic. *Color is meaning;
+ all-grey stats waste the chance to communicate at a glance.*
+
+---
+
+### `catalog/InsertCatalogSongsStatus.tsx`
+
+**A) Senior designer**
+- P1 — Success/error pill is static; it appears with the card and never
+ transitions even though it represents the *outcome* of an async upload. → On
+ upload completion, animate the check drawing in (scale + a quick spring) so
+ success feels confirmed, not pre-rendered. *The check should arrive, not
+ already be there.*
+- P2 — Success copy fallback "Songs added to catalog" can show even when 0 were
+ added (status is driven by `hasError`, not by count). → Gate wording on count
+ ("No new songs — all already in catalog"). *A green check over "0 added" is a
+ small lie.*
+
+**B) vs. higher-bar platforms**
+- Raycast/Linear success states use restrained motion + precise copy. The error
+ fallback "Something went wrong adding songs" is the generic non-message users
+ hate. *Generic error copy is the tell.*
+
+---
+
+### `catalog/InsertCatalogSongsList.tsx`
+
+**A) Senior designer**
+- P1 — `ul` with `divide-y` renders all rows at once; newly inserted songs don't
+ stagger or highlight. → Stagger rows in; for a fresh import, briefly flash
+ newly-added rows (emerald left-border that fades). *"What did my upload add?"
+ answered visually beats a footer count.*
+- P2 — Footer "Showing N songs" duplicates the summary's processed count and
+ doesn't reflect filtering vs total well (it shows filtered count after the
+ Hide-incomplete toggle, with no "of M"). → "Showing 12 of 300 (288 hidden)."
+ *Filtered counts must always say what's hidden, or the toggle feels like data
+ loss.*
+
+**B) vs. higher-bar platforms**
+- Notion/Airtable always show "X of Y" under a filter. A bare "Showing 12 songs"
+ after toggling a filter makes users wonder where their rows went. *Honest
+ count math under filters is basic respect for the user's data.*
+
+---
+
+### `catalog/CatalogSongRow.tsx`
+
+**A) Senior designer**
+- P1 — Notes expand/collapse is instant (`isExpanded` swaps a `` in/out, no
+ height animation). → Animate height with `AnimatePresence`/`layout`. *A snap
+ open feels like a `display:none` toggle; a slide feels designed.*
+- P2 — Artwork is always the same `Disc3` placeholder (comment notes the table
+ has no cover art). Every row identical kills scannability. → Deterministic
+ color tint per song/artist behind the disc glyph. *Variation gives the eye
+ anchors in a long list.*
+- P2 — "No ISRC" amber chip is good (legible missing-data signal). But it sits
+ in the same row of pills as the interactive "Notes" button with identical
+ size/shape — a status and a control look alike. → Differentiate the control
+ (chevron, hover affordance) from the status pill. *Controls and labels should
+ never be confusable.*
+
+**B) vs. higher-bar platforms**
+- Linear/Notion rows reveal a hover action rail (open, copy ID). This row has no
+ hover affordance at all (the `ToolCardRow` hover bg exists but nothing to do).
+ → Add copy-ISRC / open-song on hover. *Hover affordances are what make a list
+ feel alive.*
+
+---
+
+### `catalog/CatalogSongsSkeleton.tsx`
+
+**A) Senior designer**
+- P2 — Label "Processing catalog songs…" (note: real ellipsis char, good) but
+ the 4 generic rows don't match `CatalogSongRow`'s layout (disc + title + pills
+ + footer). → Mirror the row anatomy incl. the pill area. *Skeleton fidelity is
+ what makes load feel instant.*
+
+**B) vs. higher-bar platforms**
+- Same reflow-on-load critique as TasksSkeleton. *Match the final layout exactly.*
+
+---
+
+### `catalog/HideMissingItemsToggle.tsx`
+
+**A) Senior designer**
+- P2 — Solid, clear (Filter icon + live "Hiding…/Showing…" label + Switch).
+ Minor: the descriptive text and the Label ("Hide incomplete") slightly compete
+ — two pieces of text about the same control. → Keep the live status text; make
+ the Label visually secondary or merge. *One control, one primary label.*
+- P2 — No count of what's hidden inline. → "Hide incomplete (288 hidden)."
+ *Tie the toggle to its consequence.*
+
+**B) vs. higher-bar platforms**
+- Good parity with Linear/Notion filter chrome. Closest-to-done component here.
+
+---
+
+### `catalog/CatalogCsvUploadButton.tsx`
+
+**A) Senior designer**
+- P1 — It's a dashed box with a button but no real drag-and-drop (only a hidden
+ file input + click). A dashed dropzone strongly signals "drop here" and then
+ doesn't accept drops. → Implement actual drag/drop with a dragover highlight,
+ or drop the dashed-dropzone styling and use a plain button. *A dropzone that
+ rejects drops is a broken promise the styling makes.*
+- P2 — Disabled state (no catalog) shows a destructive-red helper sentence but
+ the button just greys out — the *why* and the *fix* aren't connected. → Make
+ the message the primary affordance ("Select a catalog to enable upload"),
+ consider a link to do so. *Disabled controls must explain themselves.*
+- P2 — `redundant onClick + label htmlFor` both trigger the input (the label
+ wraps the button which also calls `inputRef.click()`), risking a double-open
+ on some browsers. → Pick one mechanism. *Two handlers for one action is a
+ latent bug and a code-smell reviewers notice.*
+
+**B) vs. higher-bar platforms**
+- Vercel/Linear import affordances support drag-drop + show accepted format and
+ a sample. Here the format hint is good (`isrc` code chip), drag-drop is the
+ gap. *Real drag-drop is expected table stakes for CSV import in 2026.*
+
+---
+
+## CHATS
+
+### `chats/GetChatsResult.tsx`
+
+**A) Senior designer**
+- P1 — Rows show only an icon + title + hover chevron. No timestamp even though
+ `updatedAt` is in the row type. A chat list with no "when" is hard to scan. →
+ Right-align a relative time ("2h ago"). *Recency is the primary sort key in any
+ chat list; hiding it wastes the data you already have.*
+- P1 — Every row leads with the same `MessageSquare` icon (also the header icon).
+ Visually monotonous; the icon carries no per-row information. → Drop the
+ per-row icon or replace with a recency dot / unread marker. *A column of
+ identical icons is decoration, not information.*
+- P2 — Hover chevron slide-in is a nice touch (the one bit of per-row motion in
+ the whole set). Keep it. But the list itself doesn't stagger in. → Add the
+ shared stagger. *Consistency: if tasks/catalog get stagger, chats should too.*
+
+**B) vs. higher-bar platforms**
+- Linear/Notion/Raycast list items: title + secondary line (preview/snippet) +
+ timestamp + subtle metadata. This is title-only — the thinnest possible row. →
+ Add a snippet (last message) line if available, plus time. *A single-line row
+ is the definition of generic list output.*
+
+---
+
+### `chats/GetChatsSkeleton.tsx`
+
+**A) Senior designer**
+- P2 — No `label` passed (unlike Tasks/Catalog skeletons which say what's
+ loading), so it shows a generic bar instead of "Loading chats". → Pass
+ `label="Loading chats"` for parity. *Tell the user what they're waiting for.*
+
+**B) vs. higher-bar platforms**
+- Fine as a generic skeleton; same match-final-widths note applies.
+
+---
+
+## TOP 8 — highest-leverage fixes
+
+1. **P0 — Surface `next_run` (and `last_run`) on tasks.** The scheduler's whole
+ value is "when does this fire next," and the data exists but is invisible.
+ Add Next-run to TaskCard + Create/Update/Delete confirmations and the details
+ dialog.
+
+2. **P0 — Make the catalog import a real reconciliation summary.** Add
+ Added / Skipped / Duplicates(matched) stat chips with semantic color;
+ "Songs processed" alone doesn't answer what happened to the upload.
+
+3. **P0 — Fix schedule legibility in TaskCard.** Move the human schedule out of
+ a single truncating muted pill onto its own line with recurrence icon +
+ next-run + timezone; never let the raw cron string leak into the UI.
+
+4. **P1 — Differentiate & add micro-moments to Create / Update / Delete.** A
+ green-ring/scale flourish on create, a "what changed" + updated-time on
+ update, and a removal animation + **Undo** on delete. Right now they differ
+ only by tint and copy.
+
+5. **P1 — Add per-item motion across all three domains.** Staggered list-in for
+ GetTasks / Chats / catalog list, animated notes expand, status-pill
+ cross-fade (not `group-hover:hidden`), and animated stat/count-ups.
+
+6. **P1 — Kill dead/false-promise controls.** The non-wired Edit pencil in
+ TaskCard, and the dashed "dropzone" that doesn't accept drops in
+ CatalogCsvUploadButton. Either implement or remove.
+
+7. **P1 — Fix error & count honesty.** TaskError currently dedupes a title
+ repeated three times (pass a real cause + retry); catalog success can show a
+ green check over "0 added"; filtered list count needs "X of Y (N hidden)".
+
+8. **P1 — Enrich the Chats row + show time.** Add `updatedAt` as a relative
+ timestamp, drop the repeated per-row MessageSquare icon, optionally add a
+ snippet line so it stops reading as one-line generic AI output.
diff --git a/docs/tool-ui-audit/design-review/04-artist-media-connectors.md b/docs/tool-ui-audit/design-review/04-artist-media-connectors.md
new file mode 100644
index 000000000..1d73d69db
--- /dev/null
+++ b/docs/tool-ui-audit/design-review/04-artist-media-connectors.md
@@ -0,0 +1,474 @@
+# Design Review — Artist / Media / Connectors Tool UI
+
+Reviewer: senior product designer. Scope: chat tool-response cards for artist & socials,
+media generation (image / video / txt), and connectors / monitoring (Composio, Pulse,
+YouTube revenue, sandbox, file update). No component code was changed.
+
+Two lenses per component:
+- **(A) Senior designer** — hierarchy, spacing, type, tone, motion/streaming, and how to
+ differentiate so it feels crafted, not a generic AI chip.
+- **(B) Customer vs. higher-bar platforms** — Midjourney / Higgsfield (media),
+ Stripe / Linear (connectors, revenue), Raycast / Vercel (polish).
+
+Priorities: **P0** = visible quality/trust gap worth doing first; **P1** = clear craft win;
+**P2** = polish/nice-to-have.
+
+---
+
+## Shared system context (baseline)
+
+The shared `ToolCard` / `ToolCardSkeleton` / `toolCardTokens` system is genuinely good: one
+radius/border/shadow language, tonal icon chips, a shared fade+rise entrance
+(`opacity 0→1, y 6→0, 0.28s`). That consistency is the foundation. The findings below are
+mostly about the places that either (a) bypass the system, (b) lean on `animate-pulse` as the
+only motion, or (c) miss a moment where a premium product would invest a custom touch.
+
+One system-wide note up front (applies to nearly every card): **the only loading motion in
+the entire surface is `animate-pulse`.** Pulse is the generic "AI chip" tell. A single shared
+shimmer/sweep keyframe (a diagonal highlight translating across skeletons) would lift every
+loading state at once. Treat this as a **P1 platform task** referenced throughout.
+
+---
+
+## ARTIST / SOCIALS
+
+### 1. CreateArtistToolCall.tsx
+**(A)** A bare `ToolCardSkeleton` with `rows={0}`, "Creating new artist…", Sparkles chip.
+- Problem: The loading card is `max-w-sm` but the resolved `GenericSuccess` is also `max-w-sm`
+ — good, no jump. But the loading copy promises "Creating" while the resolved card adds a
+ second async phase ("Setting up artist conversation…") that the skeleton doesn't foreshadow,
+ so the user sees two different "in-progress" framings back-to-back.
+ → Change: keep one continuous progress narrative ("Creating artist…" → "Setting up
+ conversation…" → "Ready") rather than skeleton then a new spinner inside success.
+ → Love rationale: a single story beat reads as one intentional moment, not two stitched states.
+- Problem: Sparkles chip uses default neutral tone; the resolved card is `success` (emerald).
+ Color shifts on resolve.
+ → Change: tint the loading chip with the same accent it will resolve to (or neutral both).
+ → Rationale: color continuity is what makes a transition feel like one object, not two cards. (P2)
+
+**(B)** Linear's optimistic create is instant and silent; here we have a two-phase spinner for a
+create that the user just initiated. Fine, but the "Setting up artist conversation…" phase has
+no progress signal — against a Vercel bar/step indicator it reads as "is it stuck?" **P1.**
+
+### 2. CreateArtistToolResult.tsx
+**(A)** Renders `GenericSuccess` with avatar + name + message; falls back to `ToolError`.
+- Problem: This is the birth of a brand-new artist — arguably the highest-emotion moment in the
+ app — and it renders the *generic* success card (`max-w-sm`, quiet by design). It looks
+ identical to "file updated."
+ → Change: give creation a bespoke celebratory card — larger avatar, the artist name as the
+ hero, a one-line "Added to your roster" with a subtle entrance scale/confetti-free shine on
+ the avatar ring.
+ → Rationale: first-run moments deserve a little ceremony; sameness here wastes the one time a
+ user actually cares. **P1.**
+- Problem: `isProcessing` message "Setting up artist conversation…" sits in the *subtitle* slot
+ with no spinner/affordance — static text that looks like a final state.
+ → Change: add an inline animated indicator (dots/bar) while `isProcessing`. (P1)
+
+**(B)** Midjourney/Linear treat "new entity created" as a confirmable, navigable object (click to
+open). Here there's no CTA to jump into the new artist. Add a "Open" / "Start chatting" action. **P1.**
+
+### 3. GetArtistSocialsResult.tsx
+**(A)** `ToolCard` accent tone, 2/3/4-col grid of `ArtistSocial` tiles, count pill, empty state.
+- Strong: subtitle "N platforms connected", trailing count pill, responsive grid. This is one of
+ the better cards.
+- Problem: count appears twice (subtitle "3 platforms connected" + trailing "3" pill) — redundant.
+ → Change: drop the numeric pill, or replace it with a meaningful aggregate (total followers).
+ → Rationale: every pixel should add information; a duplicated count reads as filler. (P2)
+- Problem: no sort signal — tiles render in array order, not by follower count or platform priority.
+ → Change: sort by followers desc (or a canonical platform order).
+ → Rationale: a curated order signals the product has a point of view. (P2)
+
+**(B)** vs. Linear/Stripe connection lists: solid. The missing taste touch is brand color — every
+tile is monochrome `text-foreground/70` (see #5). A roster dashboard from a higher-bar product
+would let platform identity through. **P1** (lives in ArtistSocial).
+
+### 4. GetArtistSocialsSkeleton.tsx
+**(A)** `ToolCardSkeleton` `rows={4}`, `max-w-xl`, Users icon.
+- Problem: the resolved result is a **grid of tiles**, but the skeleton is a **vertical list of
+ rows**. The loading shape doesn't match the resolved shape → layout jump on resolve, defeating
+ the skeleton's whole purpose.
+ → Change: make the skeleton render placeholder *tiles* in the same 2/3/4-col grid.
+ → Rationale: a skeleton that morphs into a different layout is worse than none — it breaks the
+ illusion of continuity. **P0.**
+- Apply the shared shimmer (P1) instead of pulse.
+
+**(B)** Vercel/Linear skeletons are pixel-congruent with their resolved content. This one isn't. **P0.**
+
+### 5. ArtistSocial.tsx
+**(A)** Per-platform tile: icon chip, platform name, display text, follower count, hover lift +
+external-link reveal.
+- Strong: hover `-translate-y-0.5` + shadow + icon reveal is a nice crafted micro-interaction.
+- Problem: all platform icons render in neutral `text-foreground/70` on `bg-muted`. Instagram,
+ YouTube, Spotify, TikTok all look identical and gray.
+ → Change: tint each chip with its brand color (YouTube red, Spotify green, etc.) at low opacity,
+ matching the tonal-chip pattern already in `toolCardTokens`.
+ → Rationale: brand recognition is instant and makes a roster feel alive vs. a gray spreadsheet. **P1.**
+- Problem: icon mapping is lossy — TikTok, Spotify, Apple all map to `Music2`; Threads → `Twitter`.
+ → Change: use proper brand glyphs (the app already imports brand-ish lucide icons elsewhere).
+ → Rationale: a designer notices when TikTok and Spotify share an icon. (P2)
+- Problem: follower count only shows when `> 0`; tiles with/without followers have different
+ heights → ragged grid.
+ → Change: reserve the follower line (show "—" or platform handle) for even tile heights.
+ → Rationale: an even baseline grid reads as designed. (P2)
+
+**(B)** vs. Linear's integration tiles: the hover lift is on par. Brand color + real glyphs is the
+gap. **P1.**
+
+### 6. ArtistSocialDisplayText.tsx
+**(A)** Pure logic component picking username / channel name / raw URL.
+- Problem: falls back to the *full raw profile_url* truncated — long URLs read as noise under the
+ platform name.
+ → Change: prefer a clean handle; if only URL exists, strip protocol + trailing path to a domain.
+ → Rationale: showing `https://…/channel/UC9bk…` looks like debug output, not a profile. (P2)
+
+**(B)** Minor; no platform comparison needed.
+
+### 7. ArtistHeroSection.tsx
+**(A)** 64px avatar, name, emerald success line, label + updated-at meta. Used inside
+UpdateArtistSocialsSuccess.
+- Strong: clean hierarchy, good use of meta row.
+- Problem: it duplicates the parent `ToolCard` header (which also shows artist name + success
+ subtitle). When nested in UpdateArtistSocialsSuccess you get the name twice and two success
+ confirmations stacked.
+ → Change: either the ToolCard header OR the hero owns identity, not both. (P1, see #10)
+- Problem: raw ` ` with no loading/blur state — avatar pops in.
+ → Change: add a muted placeholder / fade-in on load.
+ → Rationale: a popping avatar is the cheapest tell that no one polished the load path. (P2)
+
+**(B)** vs. a Stripe customer header: fine, but the doubled identity (with parent) is the kind of
+thing a Linear review would reject. **P1.**
+
+### 8. KnowledgeBaseSection.tsx
+**(A)** Uppercase section label with count, list of file rows with hover bg + external-link reveal.
+- Strong: consistent with the row pattern; tidy.
+- Problem: every item shows the same generic `FileText` icon regardless of `knowledge.type`.
+ → Change: map type → icon (pdf/doc/link/sheet).
+ → Rationale: typed icons let users scan by kind, not just read labels. (P2)
+- Problem: `key={index}` — not a bug visually, but reorder/animate later will glitch. (P2)
+
+**(B)** Fine for an internal KB list; no premium gap.
+
+### 9. UpdateArtistInfoSuccess.tsx
+**(A)** ToolCard success with avatar, instructions block, KB section, organization row.
+- Strong: good progressive disclosure (`hasBody` gates the body); empty-state collapses to a
+ compact confirmation.
+- Problem: the "Custom instructions" block can render an arbitrarily long paragraph fully expanded
+ inside a chat bubble — no clamp.
+ → Change: line-clamp to ~3 lines with "Show more".
+ → Rationale: a result card should summarize, not dump; respect the reading rhythm of chat. (P1)
+
+**(B)** vs. Linear's settings-saved toast: this is richer than needed, which is fine, but the
+unclamped instruction is the one untidy spot. **P1.**
+
+### 10. UpdateArtistSocialsSuccess.tsx
+**(A)** ToolCard + nested ArtistHeroSection + list of social rows.
+- Problem (compounding #7): ToolCard header says "Artist socials updated" + message; then
+ ArtistHeroSection repeats the artist name + the *same message* again with another check. Two
+ success confirmations, two checkmarks, message printed twice.
+ → Change: drop the message from the hero (pass none), or drop the hero and inline the avatar in
+ the ToolCard `media` slot.
+ → Rationale: one confirmation per action — repetition reads as a bug, not emphasis. **P0.**
+- Problem: each social row uses a generic `Globe` icon for *every* platform and shows the raw
+ `profile_url` as the title — inconsistent with the much nicer `ArtistSocial` tile component that
+ already exists.
+ → Change: reuse `ArtistSocial` (or its icon mapping) here instead of a bespoke `Globe` row.
+ → Rationale: two different visual languages for "a social link" in adjacent cards is exactly the
+ inconsistency the shared system was built to prevent. **P1 (DRY).**
+
+**(B)** vs. Stripe's "payment method updated": Stripe shows the *card brand* glyph, not a generic
+globe. Same principle. **P1.**
+
+---
+
+## MEDIA
+
+### 11. image/ImageResult.tsx
+**(A)** Rounded card, hover top/bottom gradient scrims, download button, `next/image` priority.
+- Strong: the gradient scrims + hover download is a tasteful gallery affordance.
+- Problem: **no blur-up / poster reveal.** The image just appears when loaded; the premium media
+ feel (Midjourney/Higgsfield) comes from a blurred placeholder resolving to sharp, or a soft
+ fade/scale-in.
+ → Change: add a blur-up (use `next/image` `placeholder="blur"` with a tiny base64, or a CSS
+ blur→clear transition) and a 200–300ms opacity/scale reveal on load.
+ → Rationale: the reveal *is* the product moment for generative media; without it the result
+ feels like a static asset, not something just conjured. **P0.**
+- Problem: no click-to-expand / lightbox. `cursor-pointer` is set but clicking does nothing.
+ → Change: open a full-res lightbox on click (the cursor already promises it).
+ → Rationale: a pointer cursor that does nothing is a broken promise. **P1.**
+- Problem: download button only visible on hover; on touch there's no hover.
+ → Change: persistent (or tap-revealed) action on touch. (P2)
+
+**(B)** vs. Midjourney/Higgsfield: those treat each generation as a hero with reveal animation,
+upscale/vary actions, and a lightbox. We have a plain framed image. The reveal (P0) and lightbox
+(P1) are the difference between "AI tool output" and "premium media canvas."
+
+### 12. image/ImageSkeleton.tsx
+**(A)** Header (Wand2 chip + "Generating image…") + square pulsing gradient placeholder with a
+faint ImageIcon.
+- Strong: aspect-correct (`aspect-square`) so no jump to the image — good.
+- Problem: the placeholder is a *static* `animate-pulse` gradient. Generation is the moment to
+ show craft.
+ → Change: a slow diagonal shimmer sweep across the placeholder (like a developing photo), and
+ ideally an indeterminate progress hint ("usually a few seconds" is there; pair with a thin
+ moving bar).
+ → Rationale: a developing-photo shimmer makes waiting feel like creation, not buffering. **P1.**
+- Problem: resolved `ImageResult` is `max-w-md` with `aspect: auto/contain`, but the skeleton
+ forces `aspect-square` — non-square results will jump.
+ → Change: if aspect ratio is known from the request, mirror it. (P2)
+
+**(B)** Midjourney's grid fills in progressively with a shimmer. This is close but the static
+gradient is the tell. **P1.**
+
+### 13. sora2/Sora2VideoResult.tsx
+**(A)** ToolCard accent, native ``, download button in trailing, error/empty states.
+- Strong: clean, file size + "Sora 2" subtitle, graceful video-error fallback.
+- Problem: **no poster frame.** `preload="metadata"` shows a black/empty `bg-black` box until
+ play. Premium video UIs show a poster/first-frame with a play overlay.
+ → Change: set a `poster` (thumbnail) and overlay a play affordance; fade video in on `canplay`.
+ → Rationale: a black rectangle is the least premium way to present a freshly generated video. **P0.**
+- Problem: download uses a raw `document.createElement("a")` with no loading/feedback (vs. the
+ image's `useImageDownloader` with `isDownloading`/`isReady`). Inconsistent and silent.
+ → Change: reuse a shared downloader hook with progress state.
+ → Rationale: two download patterns in adjacent media cards = inconsistency users feel as jank. **P1.**
+
+**(B)** vs. Higgsfield/Sora's own UI: poster + reveal + hover-scrub. We have a controls-only player.
+Poster + reveal (P0) closes most of the gap.
+
+### 14. sora2/Sora2VideoSkeleton.tsx
+**(A)** Header + `aspect-video` pulsing placeholder with a play glyph in a blurred pill.
+- Strong: aspect-correct, the backdrop-blur play pill is a nice touch — best of the skeletons.
+- Problem: copy "this can take a moment" but video gen can take *minutes*; no elapsed time or
+ progress, so long waits feel frozen.
+ → Change: add an elapsed timer and/or staged copy ("Rendering frames…", "Almost there…").
+ → Rationale: for multi-minute waits, a sign of life is the difference between trust and a reload. **P1.**
+- Shared shimmer instead of pulse (P1).
+
+**(B)** Runway/Higgsfield show progress % or stage during long renders. A static pulse for minutes
+is the weakest spot here. **P1.**
+
+### 15. ui/TxtFileResult.tsx
+**(A)** ToolCard info, fetches Arweave content into a scrollable mono block, download button.
+- Strong: animated `max-height` transition, mono code styling, scrollbar styling, error states.
+- Problem: fetches the *entire* file into chat with only a 200–400px scroll cap — large files dump
+ a wall of mono text into the conversation.
+ → Change: show a preview (first N lines) with "View full file" → expand/modal; lazy-fetch.
+ → Rationale: a chat result should be a glanceable summary, not the whole document inline. **P1.**
+- Problem: "Stored on Arweave" subtitle is jargon to non-technical users; transaction/explorer
+ fields exist in the type but aren't surfaced or explained.
+ → Change: friendlier framing ("Saved permanently • view file"); hide chain jargon or put it
+ behind a details affordance.
+ → Rationale: speak the user's language; "Arweave/tx hash" is plumbing, not value. (P2)
+- Problem: download = `window.open` (new tab), not a real download; mismatched with the Download
+ label/icon.
+ → Change: actual download, or relabel "Open". (P2)
+
+**(B)** vs. Vercel's file/log viewers: they preview + expand + copy. We dump + scroll. **P1.**
+
+---
+
+## CONNECTORS / MONITORING
+
+### 16. composio/ComposioAuthResult.tsx
+**(A)** Pure dispatcher (active → ConnectedState, initiated → ConnectPrompt, else null).
+- Problem: returns `null` on any malformed/unknown result — the tool ran but the user sees
+ *nothing*, with no explanation.
+ → Change: render a neutral fallback ("Couldn't read connection status") instead of silence.
+ → Rationale: silent nulls erode trust — a connect flow especially must never just vanish. **P1.**
+
+**(B)** Stripe Connect never shows nothing; there's always a status. **P1.**
+
+### 17. composio/ComposioConnectPrompt.tsx
+**(A)** Info ToolCard, explanatory line, full-width blue CTA, "link expires in 10 minutes" note,
+https-only safe redirect.
+- Strong: the safe-redirect guard + expiry note + emphasized ring is genuinely trustworthy. Good.
+- Problem: the CTA is hardcoded `bg-blue-600/bg-blue-700`, bypassing the design-token system
+ (`primary`, tonal `info`). It won't theme and is a one-off blue.
+ → Change: use the `Button` primitive / `primary` token (or `info` tone) for the CTA.
+ → Rationale: a bespoke hex CTA in a token-driven system is the seam where polish leaks. **P1.**
+- Problem: when `isUnsafe`, the button just dims to 60% with no message — user can't tell why it's
+ dead.
+ → Change: swap to an inline error ("This link looks invalid — please retry"). (P2)
+- Problem: copy says "enable this connector" / "Connect your X account" — slightly mechanical;
+ doesn't say *what access* or *why* (the trust ask).
+ → Change: one line on scope ("We'll read your Sheets to …"). (P2)
+
+**(B)** vs. Stripe/Linear OAuth: those state the scope and brand the provider. The plumbing here is
+safer than most, but the CTA token + scope copy are the taste gap. **P1.**
+
+### 18. composio/ComposioConnectedState.tsx
+**(A)** Success ToolCard "X connected" / "Ready to use" + restating sentence.
+- Problem: the body sentence ("Your X account is connected and ready to use.") just repeats the
+ title + subtitle — three ways of saying the same thing, no new info.
+ → Change: replace the body with something actionable (what you can now do, or a "Manage
+ connection" link), or drop the body entirely.
+ → Rationale: redundancy in a confirmation feels like filler, not polish. (P2)
+- Problem: no provider brand mark — generic check chip for every connector.
+ → Change: show the provider logo/glyph. (P2)
+
+**(B)** Linear's "Connected ✓" rows show the provider logo and a manage link. We show a green check
+three times. (P2)
+
+### 19. pulse/PulseToolResult.tsx
+**(A)** Success ToolCard, title links to /tasks?tab=pulses, a toggle row with loading skeleton.
+- Strong: live toggle inside the card with proper `isToggling`/`isInitialLoading` states — nicely
+ interactive, not just a static report.
+- Problem: tone is always `success` (emerald) even when Pulse is *off* — green signals "on/good"
+ but the actual state may be disabled.
+ → Change: tone should follow `active` (success when on, neutral when off).
+ → Rationale: color must tell the truth; green-while-off is a small lie users subconsciously
+ catch. **P1.**
+- Problem: only shows a single toggle — no preview of *what* the digest contains or when it sends.
+ → Change: add the send time / a one-line "what you'll get". (P2)
+
+**(B)** vs. Linear's notification settings: they preview cadence + content. We show a lone toggle.
+Functional, a touch thin. (P2)
+
+### 20. pulse/PulseToolSkeleton.tsx
+**(A)** Mirrors PulseToolResult anatomy (chip + two text lines + toggle row). Good congruence.
+- Problem: emerald chip presupposes the success tone; if the result resolves to neutral (off) the
+ chip color shifts. (P2)
+- Shared shimmer instead of pulse (P1).
+
+**(B)** Solid. Minor.
+
+### 21. youtube/YouTubeRevenueResult.tsx
+**(A)** ToolCard, monetized badge, stats grid, date range, daily bars, estimate disclaimer.
+- Strong: this is the most "dashboard-grade" card — good structure, honest "estimated" framing,
+ monetized state, sensible footer disclaimer.
+- Problem: channel shown as `channelId.slice(0,8)…` — a raw opaque ID, not a channel name.
+ → Change: resolve to channel title (+ avatar) if available; otherwise label it ("Channel ID").
+ → Rationale: a truncated ID is debug data; users think in channel names. **P1.**
+- Problem: no currency/locale indication beyond `formatCurrency` default; revenue analytics should
+ state the currency explicitly.
+ → Change: surface currency code near the total. (P2)
+
+**(B)** vs. Stripe's revenue cards: Stripe leads with a big animated headline number, a sparkline,
+and period-over-period delta. We have the headline + bars but **no trend/delta and no count-up
+animation** (see #22/#23). **P1.**
+
+### 22. youtube/YouTubeRevenueStats.tsx
+**(A)** Three stat tiles: total (emerald headline), best day, daily average. Tabular-nums, good.
+- Strong: `tabular-nums`, color-coded tile accents, clear hierarchy (total is `text-2xl`).
+- Problem: numbers render statically — a premium revenue card *counts up* the headline figure.
+ → Change: animate the total (and ideally each tile) with a count-up on mount (respecting
+ `prefers-reduced-motion`).
+ → Rationale: a number that ticks up makes revenue feel earned and alive — the single highest-ROI
+ motion in this whole audit. **P1.**
+- Problem: no period-over-period delta (▲ vs. prior 30 days) — the most useful glance metric is
+ absent.
+ → Change: add a delta chip on the total tile when prior-period data exists. (P1)
+- Problem: the three tiles use three *different* accent colors (emerald/blue/violet) for metrics
+ that aren't categorically different — reads slightly arbitrary.
+ → Change: make total the only colored tile; keep best/avg neutral, or use one consistent accent.
+ → Rationale: color should encode meaning; rainbow tiles dilute the headline. (P2)
+
+**(B)** Stripe/Linear analytics: count-up + delta + restrained color. We have layout but not the
+motion or the comparison. **P1.**
+
+### 23. youtube/YouTubeRevenueDaily.tsx
+**(A)** Last-7-day horizontal bars, label + bar + value rows, normalized to max.
+- Strong: clean, legible, value-aligned right with tabular-nums.
+- Problem: bars are **static** — no grow-in animation. The brief explicitly wants "subtle animated
+ bars."
+ → Change: animate each bar's width from 0→pct on mount with a small stagger (40–60ms) and easing;
+ respect reduced-motion.
+ → Rationale: staggered bars growing in is the signature "this chart was crafted" moment. **P1.**
+- Problem: bar fill is a flat `bg-emerald-500/25` — very low contrast, hard to read magnitude.
+ → Change: bump opacity / add a subtle gradient; consider highlighting the best day.
+ → Rationale: a chart you have to squint at isn't doing its job. (P2)
+- Problem: only 7 days shown though 30 are fetched — no sparkline/overview of the full range.
+ → Change: add a compact 30-day sparkline above the 7-day detail. (P2)
+
+**(B)** vs. Stripe's bar/area charts: animation + readable fills + full-range context. The static,
+faint bars are the clearest "lacks love" spot in the revenue feature. **P1.**
+
+### 24. youtube/YouTubeRevenueSkeleton.tsx
+**(A)** Faithfully mirrors the resolved card (header, 3 stat tiles, date row, 7 bars, footer).
+- Strong: **best-in-class congruence** — this is exactly how skeletons should be built; near-zero
+ layout jump. Use it as the reference for fixing #4.
+- Problem: shared shimmer over pulse (P1). (P2 here since structure is already excellent.)
+
+**(B)** On par with Vercel/Linear skeletons.
+
+### 25. youtube/YouTubeRevenueError.tsx
+**(A)** Thin wrapper over shared `ToolError`.
+- Problem: generic error message; revenue failures are usually *specific* (not monetized, channel
+ not connected, scope missing) — a flat error misses the chance to guide.
+ → Change: when the cause is known (e.g. not connected), render a connect CTA instead of a dead
+ error.
+ → Rationale: turning a failure into a next step is what trustworthy products do. **P1.**
+
+**(B)** Stripe errors are actionable ("Reconnect account"). Ours is a dead end. **P1.**
+
+### 26. sandbox/RunSandboxCommandResultWithPolling.tsx (+ RunDetails / RunOutput / RunLogsList)
+**(A)** Terminal-style polling skeleton (mono lines, amber "In progress" dot) → `RunDetails`
+(timeline, current step, result `pre`, activity log, run id).
+- Strong: the *skeleton* is well done — mono placeholder lines + amber pulse dot read as a real
+ terminal booting. Good non-technical header ("Executing in a secure sandbox").
+- Problem: **major visual discontinuity** — the polished `max-w-xl` ToolCard skeleton resolves into
+ `RunDetails`, which is a totally different layout (`p-6`, `gap-6`, `text-lg`, no card chrome,
+ full-width). The crafted terminal frame evaporates on completion.
+ → Change: wrap `RunDetails` (or a chat-specific variant) in the same ToolCard shell, or have the
+ skeleton mirror RunDetails. Right now loading ≠ result.
+ → Rationale: the skeleton promised a terminal; the result delivers a settings page. Continuity
+ is the whole point of the skeleton. **P0.**
+- Problem: the actual output/logs (`RunOutput` `pre`, `RunLogsList`) are muted gray mono on
+ `bg-muted/30` — *not* a real terminal look (no dark bg, no prompt, no monospace contrast). The
+ brief wants a "legible terminal." Currently it reads as quoted text.
+ → Change: render logs/output in a proper terminal surface (dark bg, light text, optional prompt
+ glyph, line numbers), with the existing auto-scroll.
+ → Rationale: a terminal that doesn't look like a terminal undersells the (impressive) fact that
+ real code just ran. **P1.**
+- Problem: logs stream via auto-scroll (good) but the *skeleton→RunDetails* swap means streaming
+ only starts after the card changes shape; no streamed feedback during the polling skeleton.
+ → Change: stream early log lines into the terminal skeleton itself. (P1)
+- Problem: non-technical framing is good in the skeleton but lost in RunDetails ("Activity Log",
+ raw run id, `taskIdentifier`) — jargon returns.
+ → Change: keep the human framing ("Here's what ran") in the result. (P2)
+
+**(B)** vs. Vercel's build logs / Raycast's script output: those are true dark terminals with
+streaming and a stable frame. Ours is a great skeleton that resolves into an un-themed details
+page. The skeleton→result discontinuity (P0) + non-terminal output styling (P1) are the gaps.
+
+### 27. files/UpdateFileResult.tsx
+**(A)** Success ToolCard, "Updated ", meta (Verified · size), "Saved" pill, mono path row
+(linked if safe), cache invalidation on mount.
+- Strong: safe-href guard, mono path, "Saved" pill, verified/size meta — tidy and trustworthy.
+- Problem: redundant success signaling — `tone="success"` chip + green "Saved" pill + the implicit
+ "Updated" title all say the same thing.
+ → Change: keep one strong success cue (the pill or the tone), simplify the rest. (P2)
+- Problem: no diff / "what changed" — for a file *update* the most useful thing (lines added/
+ removed, before/after) is absent.
+ → Change: surface a tiny change summary or "View changes" link when available.
+ → Rationale: "updated" without "what changed" makes the user re-open the file to trust it. **P1.**
+- Problem: the path row is `cursor-pointer` and linked, but visually it's just text + a faint
+ FileEdit icon — the affordance is weak.
+ → Change: add a trailing external-link/chevron + hover state to signal it opens. (P2)
+
+**(B)** vs. Linear/GitHub file edits: those show a diff or at least a changed-lines count. We show
+"Saved." Adding change context (P1) is the upgrade.
+
+---
+
+## Top 8 summary (do these first)
+
+1. **P0 — Image reveal (blur-up + fade/scale-in).** `ImageResult` shows generated media with zero
+ reveal; this is the core premium moment for any media product (Midjourney/Higgsfield). [#11]
+2. **P0 — Sora video poster + reveal.** Replace the black `bg-black` box with a poster frame, play
+ overlay, and fade-in on `canplay`; a black rectangle is the least premium video presentation. [#13]
+3. **P0 — Sandbox skeleton↔result continuity.** The crafted terminal skeleton resolves into an
+ un-themed `RunDetails` page; wrap the result in the same shell so loading == result. [#26]
+4. **P0 — Socials skeleton matches the grid.** `GetArtistSocialsSkeleton` is a row list but resolves
+ to a tile grid → layout jump; rebuild the skeleton as placeholder tiles. [#4]
+5. **P0 — Kill doubled confirmations in UpdateArtistSocialsSuccess.** ToolCard header + nested
+ ArtistHeroSection print the artist name, message, and checkmark twice. One confirmation per
+ action. [#10, #7]
+6. **P1 — Animate the revenue (count-up total + growing bars + delta).** The brief's
+ "beautiful stat card + animated bars"; today numbers and bars are static and faint, and there's
+ no period-over-period delta. [#22, #23]
+7. **P1 — Brand identity for socials + connectors.** Per-platform brand color/glyph in
+ `ArtistSocial` (and reuse it in UpdateArtistSocialsSuccess instead of a generic `Globe`);
+ provider logos in Composio states. Monochrome lists read as a gray spreadsheet. [#5, #10, #18]
+8. **P1 — Shared shimmer keyframe + trustworthy connect polish.** Replace `animate-pulse` across all
+ skeletons with one diagonal shimmer; move ComposioConnectPrompt's hardcoded blue CTA onto the
+ token/`Button` system and never render `null` (ComposioAuthResult) on unknown status. [system, #17, #16]
diff --git a/docs/tool-ui-audit/screenshots/gallery-dark.png b/docs/tool-ui-audit/screenshots/gallery-dark.png
new file mode 100644
index 000000000..3f938eeda
Binary files /dev/null and b/docs/tool-ui-audit/screenshots/gallery-dark.png differ
diff --git a/docs/tool-ui-audit/screenshots/gallery-light.png b/docs/tool-ui-audit/screenshots/gallery-light.png
new file mode 100644
index 000000000..c15abdf73
Binary files /dev/null and b/docs/tool-ui-audit/screenshots/gallery-light.png differ
diff --git a/docs/tool-ui-audit/states/REVIEW.md b/docs/tool-ui-audit/states/REVIEW.md
new file mode 100644
index 000000000..b6597a527
--- /dev/null
+++ b/docs/tool-ui-audit/states/REVIEW.md
@@ -0,0 +1,101 @@
+# Tool-response UI — design pass (review before merge)
+
+Screenshots of **every tool component, in every state**, captured in isolation from
+the real components via Storybook (real `globals.css`, real `.dark` toggle, no app
+chrome) using headless Chromium.
+
+- **Before:** [`./before/`](./before) · **After:** [`./after/`](./after)
+- Full design reasoning (two lenses per component — senior designer + customer vs.
+ higher-bar platforms): [`../design-review/`](../design-review)
+- Each screenshot file is named by its Storybook id, e.g.
+ `tool-states--you-tube-result.png`. Open the same filename in `before/` and
+ `after/` to compare.
+
+How to explore interactively: `pnpm storybook` → **Tool States** / **Chat Tools**.
+
+---
+
+## Headline: clarity for unknown / MCP / "technical" tools (the Bash problem)
+
+**Before:** a tool without bespoke UI (e.g. a shell/`Bash` tool) showed only its raw
+name + "Data processed". Fired repeatedly, it looked like the product was frozen or
+looping.
+**After (`tool-states--tool-card-repeated-calls`):** a `GenericToolCard` shows
+- a friendly name + a **plain-English explanation** ("Runs a command in a secure sandbox"),
+- the **exact input it ran this call** echoed (`git status`, `npm install`, `npm run build`),
+- a collapsible **Show output**, and a **Working → Done** state.
+- *Love / attention:* because each call echoes its distinct command, five repeated
+ calls read as five intentional steps — never a broken loop. Driven by a new
+ `summarizeToolInput` (pulls command/query/url/path/…) + a plain-English
+ `description` registry in `getToolInfo`.
+
+---
+
+## Per-component notes (improvement · motion · love)
+
+### Spotify
+- **Content card / albums / top tracks** — popularity now shows as a Spotify-green
+ meter, artist follower counts surfaced. *Motion:* grids cascade in
+ (`staggerChildren`). *Love:* hover lifts the card + nudges the art; the
+ artist-name-overwritten-with-year hack is gone (real `subtitle` prop).
+- **Album with tracks** — rows feel like a player: track number swaps to a green
+ Play on hover, per-track popularity micro-bar. *Motion:* a 3-bar **now-playing
+ equalizer** animates on the hovered row; rows cascade in *after* the hero settles.
+- **Hero / meta** — lighter scrim so the artwork's hue survives; calm middot meta
+ ("2023 · 12 songs · 48 min"); one true-Spotify-green action. *Love:* the cover does
+ a single graceful scale+fade "load the record."
+- **Search results** — discovery-feed staggering (sections top-down, cards L→R).
+
+### Web search
+- **Results** — staggered sources with **citation numbers**, favicon + first-letter
+ fallback. *Motion:* title nudges right and an arrow slides in on hover.
+- **Progress** — source count **counts up**; sources stream in one-by-one
+ (`AnimatePresence`). *Love:* reads as live discovery, not a spinner.
+- **Query pill / skeleton** — shimmer sweep instead of a flat pulse.
+
+### Chats
+- Relative timestamps ("2d ago"); per-row **deterministic first-letter avatars**
+ (hashed tint) replace the identical repeated icon; list staggers in.
+
+### Artist & socials
+- **Socials grid** — brand-colored platform chips (IG pink, YT red, Spotify green…).
+ *Motion:* tiles stagger in. **P0 fix:** the skeleton now mirrors the result *grid*
+ (was a row list → caused a layout jump).
+- **Update-socials confirmation** — **P0 fix:** the artist name/success/check printed
+ twice; now once. Rows reuse the brand-glyph treatment.
+
+### Tasks & automation
+- **Task card** — renders **Next run** (the scheduler's core trust signal); schedule
+ on its own line; raw cron never leaks (friendly fallback, no `console.error`); the
+ status pill **stays visible** when reaching for actions; dead Edit button removed.
+- **Create / Update / Delete** — now distinct: scheduled (emerald "land" pulse) vs.
+ updated (blue) vs. cancelled (desaturate + settle, shows the cancelled future).
+- **Get tasks** — staggered entrance. **Errors** — no longer echo the heading 3×.
+
+### Catalog
+- **Reconciliation summary** — Added / Already-in-catalog / Total, each **counts up**;
+ honest "No new songs" instead of a green check over "0 added"; real upload progress
+ ("Uploading 128 / 300"). **List** — "Showing X of Y (N hidden)"; notes expand
+ animates height; per-song color tint for scannability.
+
+### Media
+- **Image** — **blur-up reveal** (fade + scale + blur→0) like a developing photo;
+ hover gradient + download preserved.
+- **Sora video** — poster frame + play overlay + fade-in on `canplay` (was a black box);
+ skeleton shows staged copy + elapsed timer for long renders.
+
+### Revenue (YouTube)
+- Headline **counts up**; **period delta chip** (+38%); daily **bars grow in** with a
+ readable emerald gradient, best day highlighted; de-jargoned "Channel ID …"; a
+ guided "Connect YouTube" card for permission errors.
+
+### Connectors & monitoring
+- **Composio** — tokenized CTA (was hardcoded blue), provider glyphs, and **no silent
+ null** (always a sensible fallback card). **Pulse** — tone now follows real state
+ (emerald only when on). **Sandbox / file** — terminal shimmer; file path row gets a
+ hover open-affordance.
+
+### Cross-cutting motion
+- The ubiquitous flat `animate-pulse` was replaced with a **diagonal shimmer sweep**
+ across skeletons; cards share one tasteful entrance; success moments get a small
+ "land" micro-interaction. All motion respects `prefers-reduced-motion`.
diff --git a/docs/tool-ui-audit/states/after/chat-tools-design-system--card-tones.png b/docs/tool-ui-audit/states/after/chat-tools-design-system--card-tones.png
new file mode 100644
index 000000000..7021c9768
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-design-system--card-tones.png differ
diff --git a/docs/tool-ui-audit/states/after/chat-tools-design-system--empty.png b/docs/tool-ui-audit/states/after/chat-tools-design-system--empty.png
new file mode 100644
index 000000000..b2083fd8d
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-design-system--empty.png differ
diff --git a/docs/tool-ui-audit/states/after/chat-tools-design-system--error.png b/docs/tool-ui-audit/states/after/chat-tools-design-system--error.png
new file mode 100644
index 000000000..6d0d3dfe0
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-design-system--error.png differ
diff --git a/docs/tool-ui-audit/states/after/chat-tools-design-system--skeleton.png b/docs/tool-ui-audit/states/after/chat-tools-design-system--skeleton.png
new file mode 100644
index 000000000..aef20fc3e
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-design-system--skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/chat-tools-design-system--status-pill.png b/docs/tool-ui-audit/states/after/chat-tools-design-system--status-pill.png
new file mode 100644
index 000000000..0b8f4f9eb
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-design-system--status-pill.png differ
diff --git a/docs/tool-ui-audit/states/after/chat-tools-gallery--all-states.png b/docs/tool-ui-audit/states/after/chat-tools-gallery--all-states.png
new file mode 100644
index 000000000..2fe9d595d
Binary files /dev/null and b/docs/tool-ui-audit/states/after/chat-tools-gallery--all-states.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--artist-socials-empty.png b/docs/tool-ui-audit/states/after/tool-states--artist-socials-empty.png
new file mode 100644
index 000000000..d4a07b0d4
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--artist-socials-empty.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--artist-socials-result.png b/docs/tool-ui-audit/states/after/tool-states--artist-socials-result.png
new file mode 100644
index 000000000..827a28079
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--artist-socials-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--artist-socials-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--artist-socials-skeleton.png
new file mode 100644
index 000000000..77967d209
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--artist-socials-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--catalog-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--catalog-skeleton.png
new file mode 100644
index 000000000..acbe28e62
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--catalog-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--chats-empty.png b/docs/tool-ui-audit/states/after/tool-states--chats-empty.png
new file mode 100644
index 000000000..d7765c5d1
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--chats-empty.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--chats-result.png b/docs/tool-ui-audit/states/after/tool-states--chats-result.png
new file mode 100644
index 000000000..4e10afc89
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--chats-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--chats-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--chats-skeleton.png
new file mode 100644
index 000000000..926e8458e
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--chats-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--composio-connect.png b/docs/tool-ui-audit/states/after/tool-states--composio-connect.png
new file mode 100644
index 000000000..4c2fc56ca
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--composio-connect.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--composio-connected.png b/docs/tool-ui-audit/states/after/tool-states--composio-connected.png
new file mode 100644
index 000000000..232870dc8
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--composio-connected.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--generic-success-default.png b/docs/tool-ui-audit/states/after/tool-states--generic-success-default.png
new file mode 100644
index 000000000..d4a3a986b
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--generic-success-default.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--image-loading.png b/docs/tool-ui-audit/states/after/tool-states--image-loading.png
new file mode 100644
index 000000000..ab617f313
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--image-loading.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--image-result-story.png b/docs/tool-ui-audit/states/after/tool-states--image-result-story.png
new file mode 100644
index 000000000..3af100edc
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--image-result-story.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--search-empty.png b/docs/tool-ui-audit/states/after/tool-states--search-empty.png
new file mode 100644
index 000000000..2c5da57f1
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--search-empty.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--search-progress.png b/docs/tool-ui-audit/states/after/tool-states--search-progress.png
new file mode 100644
index 000000000..3af3f66d9
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--search-progress.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--search-result.png b/docs/tool-ui-audit/states/after/tool-states--search-result.png
new file mode 100644
index 000000000..0d41736ec
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--search-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--search-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--search-skeleton.png
new file mode 100644
index 000000000..2a6babfe2
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--search-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-albums-result.png b/docs/tool-ui-audit/states/after/tool-states--spotify-albums-result.png
new file mode 100644
index 000000000..0b6302c4a
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-albums-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-albums-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--spotify-albums-skeleton.png
new file mode 100644
index 000000000..487ce6480
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-albums-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-deep-research-skeleton-story.png b/docs/tool-ui-audit/states/after/tool-states--spotify-deep-research-skeleton-story.png
new file mode 100644
index 000000000..5642c8b79
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-deep-research-skeleton-story.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-search-result.png b/docs/tool-ui-audit/states/after/tool-states--spotify-search-result.png
new file mode 100644
index 000000000..33c10a054
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-search-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-result.png b/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-result.png
new file mode 100644
index 000000000..8d0a17e6f
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-skeleton.png
new file mode 100644
index 000000000..b966321b3
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--spotify-top-tracks-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--tool-card-command-loading.png b/docs/tool-ui-audit/states/after/tool-states--tool-card-command-loading.png
new file mode 100644
index 000000000..815e6d81a
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--tool-card-command-loading.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--tool-card-command-success.png b/docs/tool-ui-audit/states/after/tool-states--tool-card-command-success.png
new file mode 100644
index 000000000..6a97d102e
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--tool-card-command-success.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--tool-card-mcp-tool.png b/docs/tool-ui-audit/states/after/tool-states--tool-card-mcp-tool.png
new file mode 100644
index 000000000..a1e72a560
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--tool-card-mcp-tool.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--tool-card-repeated-calls.png b/docs/tool-ui-audit/states/after/tool-states--tool-card-repeated-calls.png
new file mode 100644
index 000000000..a6b2c0850
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--tool-card-repeated-calls.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--you-tube-error.png b/docs/tool-ui-audit/states/after/tool-states--you-tube-error.png
new file mode 100644
index 000000000..9ed1960df
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--you-tube-error.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--you-tube-result.png b/docs/tool-ui-audit/states/after/tool-states--you-tube-result.png
new file mode 100644
index 000000000..4e3af483c
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--you-tube-result.png differ
diff --git a/docs/tool-ui-audit/states/after/tool-states--you-tube-skeleton.png b/docs/tool-ui-audit/states/after/tool-states--you-tube-skeleton.png
new file mode 100644
index 000000000..2fd0e6853
Binary files /dev/null and b/docs/tool-ui-audit/states/after/tool-states--you-tube-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-design-system--card-tones.png b/docs/tool-ui-audit/states/before/chat-tools-design-system--card-tones.png
new file mode 100644
index 000000000..7021c9768
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-design-system--card-tones.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-design-system--empty.png b/docs/tool-ui-audit/states/before/chat-tools-design-system--empty.png
new file mode 100644
index 000000000..b2083fd8d
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-design-system--empty.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-design-system--error.png b/docs/tool-ui-audit/states/before/chat-tools-design-system--error.png
new file mode 100644
index 000000000..6d0d3dfe0
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-design-system--error.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-design-system--skeleton.png b/docs/tool-ui-audit/states/before/chat-tools-design-system--skeleton.png
new file mode 100644
index 000000000..0d693362e
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-design-system--skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-design-system--status-pill.png b/docs/tool-ui-audit/states/before/chat-tools-design-system--status-pill.png
new file mode 100644
index 000000000..80d30c6d8
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-design-system--status-pill.png differ
diff --git a/docs/tool-ui-audit/states/before/chat-tools-gallery--all-states.png b/docs/tool-ui-audit/states/before/chat-tools-gallery--all-states.png
new file mode 100644
index 000000000..98048a929
Binary files /dev/null and b/docs/tool-ui-audit/states/before/chat-tools-gallery--all-states.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--artist-socials-empty.png b/docs/tool-ui-audit/states/before/tool-states--artist-socials-empty.png
new file mode 100644
index 000000000..d4a07b0d4
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--artist-socials-empty.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--artist-socials-result.png b/docs/tool-ui-audit/states/before/tool-states--artist-socials-result.png
new file mode 100644
index 000000000..a6dfdbbcb
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--artist-socials-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--artist-socials-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--artist-socials-skeleton.png
new file mode 100644
index 000000000..6d24e23f1
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--artist-socials-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--catalog-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--catalog-skeleton.png
new file mode 100644
index 000000000..10d4f4d9c
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--catalog-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--chats-empty.png b/docs/tool-ui-audit/states/before/tool-states--chats-empty.png
new file mode 100644
index 000000000..d7765c5d1
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--chats-empty.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--chats-result.png b/docs/tool-ui-audit/states/before/tool-states--chats-result.png
new file mode 100644
index 000000000..f0ae9f1a0
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--chats-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--chats-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--chats-skeleton.png
new file mode 100644
index 000000000..5cc7b0e86
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--chats-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--composio-connect.png b/docs/tool-ui-audit/states/before/tool-states--composio-connect.png
new file mode 100644
index 000000000..293d417b1
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--composio-connect.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--composio-connected.png b/docs/tool-ui-audit/states/before/tool-states--composio-connected.png
new file mode 100644
index 000000000..92b05ced4
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--composio-connected.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--generic-success-default.png b/docs/tool-ui-audit/states/before/tool-states--generic-success-default.png
new file mode 100644
index 000000000..d4a3a986b
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--generic-success-default.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--image-loading.png b/docs/tool-ui-audit/states/before/tool-states--image-loading.png
new file mode 100644
index 000000000..2c22c153c
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--image-loading.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--image-result-story.png b/docs/tool-ui-audit/states/before/tool-states--image-result-story.png
new file mode 100644
index 000000000..04a557804
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--image-result-story.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--search-empty.png b/docs/tool-ui-audit/states/before/tool-states--search-empty.png
new file mode 100644
index 000000000..2c5da57f1
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--search-empty.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--search-progress.png b/docs/tool-ui-audit/states/before/tool-states--search-progress.png
new file mode 100644
index 000000000..660c0d219
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--search-progress.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--search-result.png b/docs/tool-ui-audit/states/before/tool-states--search-result.png
new file mode 100644
index 000000000..063f1f59f
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--search-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--search-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--search-skeleton.png
new file mode 100644
index 000000000..d0fd400fe
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--search-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-albums-result.png b/docs/tool-ui-audit/states/before/tool-states--spotify-albums-result.png
new file mode 100644
index 000000000..0b6302c4a
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-albums-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-albums-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--spotify-albums-skeleton.png
new file mode 100644
index 000000000..20120a1a6
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-albums-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-deep-research-skeleton-story.png b/docs/tool-ui-audit/states/before/tool-states--spotify-deep-research-skeleton-story.png
new file mode 100644
index 000000000..3d6e60a86
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-deep-research-skeleton-story.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-search-result.png b/docs/tool-ui-audit/states/before/tool-states--spotify-search-result.png
new file mode 100644
index 000000000..33c10a054
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-search-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-result.png b/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-result.png
new file mode 100644
index 000000000..26e6b32fa
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-skeleton.png
new file mode 100644
index 000000000..ace20185d
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--spotify-top-tracks-skeleton.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--you-tube-error.png b/docs/tool-ui-audit/states/before/tool-states--you-tube-error.png
new file mode 100644
index 000000000..c8f1b2776
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--you-tube-error.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--you-tube-result.png b/docs/tool-ui-audit/states/before/tool-states--you-tube-result.png
new file mode 100644
index 000000000..4c9b08ec9
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--you-tube-result.png differ
diff --git a/docs/tool-ui-audit/states/before/tool-states--you-tube-skeleton.png b/docs/tool-ui-audit/states/before/tool-states--you-tube-skeleton.png
new file mode 100644
index 000000000..2e60a7d4c
Binary files /dev/null and b/docs/tool-ui-audit/states/before/tool-states--you-tube-skeleton.png differ
diff --git a/docs/tool-ui-audit/tool-ui-audit.csv b/docs/tool-ui-audit/tool-ui-audit.csv
new file mode 100644
index 000000000..5eb07e2d8
--- /dev/null
+++ b/docs/tool-ui-audit/tool-ui-audit.csv
@@ -0,0 +1,88 @@
+tool,component,state,user_journey,expectation,old_reality,improvement,severity_fixed
+_global,MessageParts,error,"Any tool fails at runtime","A clear failure card the user can act on","output-error fell through to the loading skeleton and hung forever","Added output-error branch rendering shared ToolError with retry wired to reload()",High
+_global,ToolComponents,loading,"Any tool without a bespoke skeleton is running","A lively 'working' affordance","Static 'Using {tool}' chip with a tiny spinner","Animated ToolStatusPill with shimmer + present-tense running label",Medium
+_global,GenericSuccess,success,"Any tool without a bespoke result resolves","A tidy confirmation consistent with other cards","Tiny plain box, fixed 17rem width","Rebuilt on ToolCard (success tone), humanized name, optional avatar",Medium
+_global,getToolsInfo,loading,"Default tool running label","Readable present-tense status","Only had past-tense result message","Added runningLabel per tool family + humanized fallback",Low
+tasks,GetTasksSuccess,success,"User asks to see their scheduled tasks","A polished card listing tasks with schedule and status","Ad-hoc bordered box, green CheckCircle, inconsistent radius/colors","Migrated to ToolCard (info tone) with count badge and divided list",Medium
+tasks,GetTasksSuccess,empty,"User has no scheduled tasks","Friendly empty state inside the tasks card","Bare centered icon + 'No tasks found' text","Shared ToolEmpty with icon, title, and guidance",Medium
+tasks,CreateTaskSuccess,success,"User creates a scheduled task","Clear success confirmation with the new task summary","Custom box, double Calendar icons, mixed green text","ToolCard success tone (Plus), emphasized ring, task card body",Medium
+tasks,CreateTaskSuccess,error,"Task creation fails","A consistent, non-alarming error surface","Hardcoded red-tinted TaskError box","Routed through shared ToolError via TaskError",High
+tasks,UpdateTaskSuccess,success,"User edits a task","Confirmation that changes saved with task summary","Custom green box duplicating Create layout","ToolCard info tone (Pencil), emphasized, shared anatomy",Medium
+tasks,DeleteTaskSuccess,success,"User deletes a task","Calm confirmation of removal with the deleted task","Aggressive all-red box (red bg/border/text)","ToolCard warning tone (Trash2), tokenized colors",Medium
+tasks,DeleteTaskSuccess,error,"Task deletion fails","Consistent error surface","Hardcoded red error block with mono failure text","Shared TaskError/ToolError",High
+tasks,TaskCard,default,"User scans a task in a list","Readable title, schedule pill, status, tasteful hover","Plain row, raw cron text, absolute-positioned status, div-based actions","Avatar + title, schedule pill with Clock/Repeat, tonal status pills, accessible buttons",Medium
+tasks,TaskCard,deleted,"User views a deleted task","Visually de-emphasized with clear Deleted badge","Generic muted badge, opacity only","Destructive-tinted Deleted pill plus opacity",Low
+tasks,TaskArtistImage,loading,"Artist avatar is still loading","Smooth avatar load without pop-in","Image rendered with no load handling","Pulsing placeholder + fade-in on load, border ring",Low
+tasks,TaskError,error,"Any task tool fails","One consistent error design across tools","Standalone hardcoded red box","Delegates to shared ToolError, de-duped detail",High
+tasks,DeleteTaskSkeleton,loading,"Delete in flight","Skeleton matching the resolved delete card","Bespoke red pulsing markup, layout mismatch","ToolCardSkeleton mirroring the delete card",Medium
+tasks,TasksSkeleton,loading,"Tasks list loading","Skeleton resembling a list of task cards","Hardcoded slate skeleton not matching final card","ToolCardSkeleton with rows = numberOfTasks",Medium
+spotify_search,GetSpotifySearchToolResult,loaded,User searches Spotify and scans results,Branded card with grouped categories and counts,Bare divs with raw h2 labels and no shell,Wrapped in shared ToolCard with count pills and snap carousels,Medium
+spotify_search,GetSpotifySearchToolResult,empty,Search returns nothing,Clear "no results" message,Rendered an empty fragment (blank),Added ToolEmpty empty state,High
+spotify_search,SpotifyContentCard,loaded,User browses content tiles,Polished thumbnail tiles with hover,Card/CardContent wrappers; "No Image" text; squares for artists,Token-safe tiles; circular artist art; Music fallback; hover lift + focus ring,Medium
+spotify_artist_albums,GetSpotifyArtistAlbumsResult,loaded,User views an artist's discography,Branded album grid,Inline Spotify logo header; no shared shell,Migrated to ToolCard (Disc3) with release-count subtitle,Medium
+spotify_artist_albums,GetSpotifyArtistAlbumsResult,empty,Artist has no albums,Friendly empty state,Plain bordered "No albums found" div,Replaced with ToolEmpty,Medium
+spotify_artist_albums,GetSpotifyArtistAlbumsSkeleton,loading,User waits for albums,Skeleton matching final layout,Logo header + ad-hoc grid; layout jump on resolve,ToolCard loading skeleton mirroring result grid,Medium
+spotify_artist_top_tracks,SpotifyArtistTopTracksResult,loaded,User views top tracks,Branded track grid,Inline logo + green Badge; no shell,Migrated to ToolCard (TrendingUp) with "N most popular" subtitle,Medium
+spotify_artist_top_tracks,SpotifyArtistTopTracksResult,empty,No top tracks returned,Graceful empty state,Plain "Failed to get..." text div,ToolEmpty with null-guard,High
+spotify_artist_top_tracks,SpotifyArtistTopTracksSkeleton,loading,User waits for top tracks,Skeleton matching final card,Card-based grid not matching result; layout jump,ToolCard loading skeleton mirroring result,Medium
+spotify_album_with_tracks,GetSpotifyAlbumWithTracksResult,loaded,User explores an album + tracklist,Immersive but theme-safe album card,Hardcoded gray-900/black + white text; not dark-mode-token-safe,Token-safe rounded-2xl card; shared motion; muted hover rows,Medium
+spotify_album_with_tracks,GetSpotifyAlbumWithTracksResult,empty,Album has no tracks,Empty state,No guard (would render empty list),Added ToolEmpty guard,Medium
+spotify_album_with_tracks,SpotifyAlbumWithTracksHero,loaded,User sees album hero,Legible hero with art on all viewports,Cover hidden on mobile; raw bg-image; muted-fg text on dark,Responsive cover; gradient+blur backdrop; white-tinted meta,Medium
+spotify_album_with_tracks,SpotifyAlbumWithTracksMeta,loaded,User reads album metadata,Readable meta on dark hero,text-muted-foreground near-invisible on dark; Badge deps,Token-safe white/70 pills; release-year guard,Medium
+spotify_album_with_tracks,GetSpotifyAlbumWithTracksSkeleton,loading,User waits for album,Skeleton mirroring final card,Hardcoded gradient; bg-card placeholders; layout drift,Mirrors new card (hero + token track rows) with shared motion,Medium
+spotify_deep_research,SpotifyDeepResearchResult,loaded,User reviews deep-research socials,Consistent branded card,Delegated to a differently-styled socials component,Shared ToolCard (Mic2) reusing ArtistSocial tiles,Medium
+spotify_deep_research,SpotifyDeepResearchResult,error,Deep research fails,Clear failure surface,Generic destructive bar via delegate,Dedicated ToolError with retry copy,High
+spotify_deep_research,SpotifyDeepResearchResult,empty,Research finds no socials,Friendly empty state,Rendered nothing under header,Added ToolEmpty,Medium
+spotify_deep_research,SpotifyDeepResearchSkeleton,loading,User waits for deep research,Skeleton matching final card,Spinner-only socials skeleton (inconsistent),ToolCard loading skeleton grid,Low
+catalog,CatalogSongsSkeleton,loading,"User uploads a CSV and waits for songs to process","A loading card that previews the shape of the result","Single small spinner pill that didn't resemble the result, causing a layout jump on resolve","Shared ToolCardSkeleton with ListMusic icon, label and 4 placeholder rows mirroring the song list",Medium
+catalog,CatalogSongRow,resolved,"User scans imported songs for correctness","Scannable row with artwork, title, artist and key metadata","Cramped table cell row; ISRC tiny mono, notes toggled by clicking raw text","Card row with artwork placeholder, title/artist/album, ISRC + notes pills, accessible expandable notes",High
+catalog,CatalogSongRow,empty-field,"User reviews a song missing its ISRC","Missing critical metadata is visually flagged","Showed nothing distinct for missing ISRC","Amber 'No ISRC' pill highlights incomplete metadata",Medium
+catalog,InsertCatalogSongsList,resolved,"User views the full list of processed songs","A polished, consistent list surface","Raw HTML table with header row, hard borders, no design-system alignment","Tokenized rounded list container with divided rows and a footer count",Medium
+catalog,InsertCatalogSongsList,empty,"User filters with 'hide incomplete' and nothing matches","Clear empty state explaining why the list is blank","Returned null, leaving a confusing blank gap","ToolEmpty with FileMusic icon and explanatory copy",High
+catalog,InsertCatalogSongsSummary,resolved,"User wants a quick read on how many songs were added","At-a-glance stat chips","Plain numbers in a flat muted box","Icon stat chips (songs processed / total in catalog) with tabular numerals",Medium
+catalog,InsertCatalogSongsStatus,success,"User confirms the import succeeded","A reassuring, dark-mode-safe success indicator","Used hardcoded green-600 and bare layout, not tokenized","Tokenized emerald success pill with bordered container and truncation",Low
+catalog,InsertCatalogSongsStatus,error,"User sees that the import failed","A clear, non-alarming error indicator","Bare destructive text with no container or fallback message","Bordered destructive pill with icon and fallback message",Medium
+catalog,HideMissingItemsToggle,interactive,"User toggles visibility of incomplete songs","An obvious, well-grouped control","Loose inline text + switch with no container","Tokenized bar with Filter icon, clear state label and accessible switch",Low
+catalog,CatalogCsvUploadButton,idle,"User wants to add more songs via CSV","An inviting upload affordance","Plain bordered button with top divider","Dashed drop-zone styling with format hint; upload mechanism preserved",Low
+catalog,CatalogCsvUploadButton,no-catalog,"User tries to upload without a selected catalog","Clear blocking message and disabled action","Already disabled, but visually plain","Disabled button inside drop-zone with destructive guidance message",Low
+catalog,CatalogSongsResult,uploading,"User watches CSV upload progress","Visible, contextual progress feedback","Bare progress bar with a lone percentage","Tokenized card with progress bar and 'Uploading… %' label",Low
+chats,GetChatsResult,resolved,"User browses their existing chats to open one","Scannable list with clear affordance to open","Custom card; rows worked but off the shared system, generic green check header","ToolCard (MessageSquare, info tone), trailing count badge, hover rows with sliding chevron",Medium
+chats,GetChatsResult,empty,"User has no chats yet","Friendly empty state","Centered icon + text, but bespoke and inconsistent","Shared ToolEmpty inside ToolCard for consistency",Low
+chats,GetChatsSkeleton,loading,"User waits for chats to load","Loading state that matches the resolved card","Bespoke pulsing skeleton that diverged from final card layout","Shared ToolCardSkeleton (MessageSquare, 4 rows) matching the result",Medium
+files,UpdateFileResult,success,"User confirms a file edit was saved","Clear success confirmation with file name and details","Flat primary-tinted box with check icon; no path/preview link","Success ToolCard with 'Saved' pill, verified/size subtitle, tappable path row",Medium
+files,UpdateFileResult,error,"User sees that the file update failed","Consistent, retry-friendly error surface","Custom destructive box inconsistent with other tool errors","Delegates to shared ToolError for a unified failure surface",Medium
+create_new_artist,CreateArtistToolCall,loading,"User asks to create an artist and waits","A loading state that previews the incoming success card","Generic muted box with a circle + bars, unrelated to the result card","Shared ToolCardSkeleton with Sparkles chip + label, matches resolved card shape",Medium
+create_new_artist,CreateArtistToolResult,error,"Artist creation fails (no artist returned)","A consistent, calm error surface","Bespoke red box with a '!' bubble, off-design","Shared ToolError card with humanized title + message",Medium
+get_artist_socials,ArtistSocial,success,"User scans connected platforms","Each platform shows icon, handle, follower count, link out","Plain bordered box: platform name + tiny username only","Platform icon chip, handle, formatted follower count, hover lift + external-link cue",High
+get_artist_socials,GetArtistSocialsResult,success,"User reviews an artist's socials","Branded card header with count and a tidy grid","Generic bordered div, ad-hoc header, duplicate label","ToolCard (accent, Users, count badge) + clean responsive grid",High
+get_artist_socials,GetArtistSocialsResult,empty,"Artist has zero socials","Friendly empty explanation inside the card","Header rendered with an empty grid","ToolEmpty (Share2) with title + description",High
+get_artist_socials,GetArtistSocialsResult,error,"Socials lookup fails","Consistent error card","Flat destructive-tinted strip with raw text","Shared ToolError with retry-ready API",High
+get_artist_socials,GetArtistSocialsSkeleton,loading,"User waits for socials","Skeleton mirrors the resolved grid card","Spinner + mismatched placeholders, hardcoded text-white","Card-shaped skeleton mirroring header + 4 social cells",Medium
+update_account_info,UpdateArtistInfoSuccess,success,"User confirms profile edits saved","Concise success summary of what changed","Heavy gray-900 gradient hero, hardcoded white, oversized","Compact success ToolCard (avatar, name, instructions/knowledge/org body)",High
+update_artist_socials,UpdateArtistSocialsSuccess,success,"User confirms socials updated","Success card listing updated links","Gradient hero + hardcoded white rows, no empty state","Success ToolCard + hero header + link rows + count badge",High
+update_account_info,KnowledgeBaseSection,display,"User browses attached knowledge files","Readable, themeable file rows","Hardcoded text-white + hover:bg-white/10 (invisible in light mode)","Token-safe rows with hover-reveal external link",High
+search_web,SearchApiResult,success,"User reviews sources behind an answer","'Sources · N' card with rich rows","Plain text 'Reviewing sources · N' + title-only rows","ToolCard (info, Globe, count badge) + rich source rows",High
+search_web,SearchApiResult,empty,"Search returns nothing","Friendly empty state","Bare 'No search results found' line","ToolEmpty (Search) with guidance",Medium
+search_web,SearchResultItem,display,"User scans a single source","Favicon, domain, date, title link, snippet, clamp","Title + domain only on one line, no snippet/date","Favicon chip + domain + date, title (clamp-1), snippet (clamp-2), focus ring",High
+search_web,SearchWebProgress,loading,"User waits during a query","Elegant in-progress with the query","Plain 'Searching' text + basic pill","Loading ToolCard with pulsing chip, query pill, streamed rows",Medium
+search_web,SearchWebSkeleton,loading,"User waits for search to start","Skeleton mirrors the Sources result card","Single pill placeholder, unrelated to result shape","Card-shaped skeleton mirroring header + 3 source rows",Medium
+image,ImageResult,error,"User generates an image but it fails","A clear, on-brand failure message","Hardcoded red-50/red-600 panel, not dark-mode safe","Shared ToolError with destructive tone",High
+image,ImageSkeleton,loading,"User waits for an image","A card that previews the resolved layout","Bare muted square + spinner, no header","ToolCard-shaped shimmer with Wand2 chip + aspect placeholder",Medium
+sora2,Sora2VideoResult,success,"User plays generated video","Framed player with download + size","Loose stacked layout, off-card download button","ToolCard accent frame, aspect-video player, header download",Medium
+sora2,Sora2VideoResult,error,"Video retrieval fails","Consistent failure surface","Plain destructive text line","Shared ToolError card",High
+sora2,Sora2VideoResult,empty,"Success but no video URL","Clear no-preview state","Bare muted text","ToolEmpty with Film icon + message",Medium
+sora2,Sora2VideoSkeleton,loading,"User waits for video","Skeleton mirroring the player","Bare aspect-video pulse + spinner","ToolCard skeleton with play affordance",Medium
+composio,ComposioConnectPrompt,action,"User must connect a service","Prominent, trustworthy CTA card","Hardcoded green button + raw muted box","ToolCard info+emphasized, token CTA, arrow + expiry note",Medium
+composio,ComposioConnectedState,success,"Connection confirmed","Clear success state","Hardcoded green-50/green-800, not dark-safe","ToolCard success tone, dark-mode safe",Medium
+pulse,PulseToolResult,success,"User toggles daily Pulse","Status card with live toggle","Bespoke card, green CheckCircle, plain row","ToolCard success with Bell row; toggle preserved",Low
+pulse,PulseToolResult,error,"Pulse fetch fails","Consistent error surface","Hardcoded red-50/red-600 pill","Shared ToolError",High
+pulse,PulseToolSkeleton,loading,"User waits for Pulse state","Skeleton mirroring the card","Generic skeleton, off-anatomy","ToolCard-shaped skeleton matching result",Low
+youtube,YouTubeRevenueResult,success,"User reviews channel revenue","Award-winning stat card with breakdown","shadcn Card, emoji note, plain rows","ToolCard with stat chips, bar breakdown, monetized pill",Medium
+youtube,YouTubeRevenueResult,empty,"Success but no revenue data","Friendly empty state","Plain 'No revenue data' text","ToolEmpty with BarChart3 icon",Medium
+youtube,YouTubeRevenueError,error,"Revenue access denied/fails","Shared error look","Bespoke Card with AlertCircle","Delegates to shared ToolError; export kept",High
+youtube,YouTubeRevenueStats,success,"User scans key revenue metrics","Clean tone-tinted stat chips","Hardcoded green/blue/purple-50 blocks","Token-based chips, tabular-nums, empty-data guard",Medium
+youtube,YouTubeRevenueDaily,success,"User compares daily revenue","Visual at-a-glance comparison","Flat list of rows, no magnitude cue","Horizontal bars scaled to max revenue",Medium
+youtube,YouTubeRevenueSkeleton,loading,"User waits for revenue","Skeleton mirroring resolved card","Hardcoded colored blocks, mismatched layout","ToolCard skeleton mirroring chips + bars + footer",Medium
+sandbox,RunSandboxCommandResultWithPolling,loading,"User waits for sandbox command","Terminal-style in-progress state","Generic RunPageSkeleton, no status cue","ToolCard terminal skeleton with status pill; polling intact",Medium
+file,TxtFileResult,success,"User reads/downloads a TXT file","Card with mono viewer + download","shadcn Card, gray scrollbar literals","ToolCard info, header-trailing download, mono viewer",Low
+file,TxtFileResult,error,"Text file generation fails","Consistent error surface","Bespoke destructive Card","Shared ToolError",Medium
diff --git a/docs/tool-ui-audit/user-journeys.md b/docs/tool-ui-audit/user-journeys.md
new file mode 100644
index 000000000..c941205e4
--- /dev/null
+++ b/docs/tool-ui-audit/user-journeys.md
@@ -0,0 +1,162 @@
+# Chat Tool-Response UI — User Journeys & Audit
+
+> Owner: Frontend / Chat Experience
+> Status: living document — updated each design pass ("award-winning" loop)
+> Companion data: [`tool-ui-audit.csv`](./tool-ui-audit.csv) (the running spreadsheet)
+
+This document captures, for every chat **tool response** surfaced in the
+assistant message stream, the intended **user journey**, the **customer
+expectation**, the **prior reality** (what shipped before this pass), and the
+**target** ("award-winning") bar. The per-component, per-state tracking lives in
+the CSV spreadsheet next to this file.
+
+---
+
+## How tool responses render
+
+```
+MessageParts.tsx
+ └─ isToolOrDynamicToolUIPart(part)
+ ├─ state === "output-error" → getToolErrorComponent() ← NEW (was unhandled)
+ ├─ state !== "output-available" → getToolCallComponent() (loading / skeleton)
+ └─ state === "output-available" → getToolResultComponent() (result)
+```
+
+Every tool therefore has up to **four UI states** we must design:
+
+1. **Loading / call** — the tool is running (`input-streaming`, `input-available`).
+2. **Success** — `output-available` with data.
+3. **Empty** — `output-available` with zero results.
+4. **Error** — `output-error` (and in-component data guards).
+
+### The shared design system (this pass)
+
+To make the surface feel intentional rather than a patchwork, all tool cards now
+build on a small set of primitives in
+`components/VercelChat/tools/shared/`:
+
+| Primitive | Purpose |
+| --- | --- |
+| `ToolCard` | The single card shell: tinted icon chip header, title/subtitle, trailing slot, tonal accents, entrance motion. |
+| `ToolCardBody` / `ToolCardRow` | Consistent padded body + hoverable rows. |
+| `ToolCardSkeleton` | Loading shell that mirrors `ToolCard` anatomy (no layout jump). |
+| `ToolEmpty` | Friendly zero-results state used inside a card. |
+| `ToolError` | Unified failure state with optional retry. |
+| `ToolStatusPill` | Compact animated "tool is running" pill (default loading affordance). |
+| `toolCardTokens` | Shared tonal palette (`neutral/success/error/info/accent/warning`) + motion. |
+
+---
+
+## Cross-cutting findings (fixed this pass)
+
+| # | Finding | Severity | Resolution |
+| --- | --- | --- | --- |
+| X1 | **Error state never rendered.** `MessageParts` treated any non-`output-available` state as "loading", so a tool that hit `output-error` showed its loading skeleton **forever**. | High | Added `output-error` branch → `ToolError` with retry wired to `reload()`. |
+| X2 | **Inconsistent card language.** Tools mixed raw `div`s, `Card`, ad-hoc headers, three different "green check" patterns, varied radii/shadows/spacing. | High | Introduced `ToolCard` design system; migrated tools onto it. |
+| X3 | **Skeletons didn't match results**, causing layout jump on resolve. | Medium | `ToolCardSkeleton` mirrors `ToolCard`; per-tool skeletons aligned. |
+| X4 | **Weak default states.** Default loading = static "Using {tool}" chip; default success = tiny plain card; many tools had no empty state. | Medium | `ToolStatusPill` (animated) + redesigned `GenericSuccess` + `ToolEmpty`. |
+| X5 | **Hardcoded colors** (`red-50`, `text-red-600`, `white`) broke dark mode. | Medium | Standardized on design tokens + tonal palette. |
+
+---
+
+## User journeys by tool domain
+
+Each journey: **Trigger → Expectation → Reality (before) → Target (after)**.
+
+### 1. Music intelligence (Spotify)
+- **Tools:** `get_spotify_search`, `get_spotify_artist_albums`,
+ `get_spotify_artist_top_tracks`, `get_spotify_album`, `spotify_deep_research`.
+- **Journey:** A manager asks "how's this artist doing on Spotify?" and expects a
+ scannable, visual answer — artwork, track/album names, popularity, links back
+ to Spotify — not a wall of text.
+- **Expectation:** Rich media cards resembling a music app; clear loading;
+ graceful "no results".
+- **Reality (before):** Functional lists, inconsistent headers, some plain text,
+ skeletons that didn't match, brittle error fallbacks.
+- **Target:** Consistent music cards with artwork thumbnails, popularity/duration
+ meta, trailing counts, mirrored skeletons, `ToolEmpty`/`ToolError`.
+
+### 2. Tasks & automation
+- **Tools:** `get_tasks`, `create_task`, `update_task`, `delete_task`,
+ `get_task_run_status`, `prompt_sandbox`.
+- **Journey:** A user schedules recurring work and wants confidence it's set up,
+ when it runs next, and which artist it's for.
+- **Expectation:** Clear confirmations, readable schedules (cron → human), the
+ affected task summarized, obvious success/destructive cues.
+- **Reality (before):** Repeated "green check + Tasks" header, cron shown raw in
+ places, delete had a thin skeleton, no unified error.
+- **Target:** Task cards with schedule pills, artist avatars, tonal success
+ (create=success, delete=warning), mirrored skeletons.
+
+### 3. Catalog management
+- **Tools:** `select_catalog_songs`, `insert_catalog_songs`.
+- **Journey:** A user uploads/links a song catalog and wants to see what matched,
+ what was inserted, and what was skipped.
+- **Expectation:** Per-song rows with artwork + match status, summary stat chips
+ (inserted / skipped / total), a clear upload affordance.
+- **Reality (before):** Dense rows, status as plain text, summary counts not
+ emphasized.
+- **Target:** Song rows with artwork/placeholder + status pills, stat-chip
+ summary, styled upload button + toggle.
+
+### 4. Conversations
+- **Tool:** `get_chats`.
+- **Journey:** "Show my recent chats" → tap through to one.
+- **Expectation:** A tidy, tappable list with titles and clear navigation.
+- **Reality (before):** Decent card but bespoke; no shared language.
+- **Target:** `ToolCard` with count badge, hover rows + chevron, `ToolEmpty`.
+
+### 5. Artist profile & socials
+- **Tools:** `create_new_artist`, `get_artist_socials`, `update_account_info`,
+ `update_artist_socials`.
+- **Journey:** Onboard/curate an artist; confirm socials are linked.
+- **Expectation:** Avatar + name confirmations; socials as a clean platform grid
+ with handles/followers and links.
+- **Reality (before):** Mixed; socials list functional but plain; thin error text.
+- **Target:** Hero/avatar success cards; platform rows with icons + links;
+ shared error look.
+
+### 6. Web research
+- **Tool:** `search_web` (+ progress updates).
+- **Journey:** "Find recent press on X" → review sources, click through.
+- **Expectation:** A "Sources · N" list with domain/favicon, title, snippet,
+ date; visible in-progress state.
+- **Reality (before):** Plain "Reviewing sources · N" + simple items; basic
+ skeleton.
+- **Target:** Source rows with favicon/domain, line-clamped snippet, dates,
+ elegant progress with query pills, mirrored skeleton.
+
+### 7. Media generation
+- **Tools:** `generate_image`, `edit_image`, `retrieve_sora_2_video_content`,
+ `generate_txt_file`.
+- **Journey:** Generate an image/video/file and download it.
+- **Expectation:** A framed, downloadable asset with hover affordances; clear
+ loading; clear failure.
+- **Reality (before):** Image card good but error used `red-50/red-600`
+ (dark-mode unsafe); video lazy-loaded; txt file basic.
+- **Target:** Framed media with download, token-based error via `ToolError`,
+ aspect-correct skeletons.
+
+### 8. Connectors & monitoring
+- **Tools:** `COMPOSIO_MANAGE_CONNECTIONS`, `get_pulses`, `update_pulse`,
+ `get_youtube_revenue`.
+- **Journey:** Connect an integration / check a pulse / read YouTube revenue.
+- **Expectation:** Clear connect CTA, connected confirmation, and a revenue
+ **stat card** (headline figure + period + daily breakdown).
+- **Reality (before):** Composio result generic; YouTube revenue had a separate
+ error card with different styling.
+- **Target:** Connect/connected states on the shared system; revenue stat card
+ with stat chips + daily rows; unified error look.
+
+---
+
+## Award-winning checklist (applied per component)
+
+- [ ] Uses the shared `ToolCard` system (consistent radius, border, shadow, header anatomy).
+- [ ] All four states designed: loading, success, empty, error.
+- [ ] Skeleton mirrors the resolved layout (no jump).
+- [ ] Dark-mode safe (design tokens only; no hardcoded colors).
+- [ ] Content truncates / line-clamps gracefully; responsive widths.
+- [ ] Accessible: semantic structure, alt text, focusable links, keyboard-friendly.
+- [ ] Tasteful motion (entrance only; no distracting animation).
+- [ ] Real media (artwork/favicons/avatars) used where data provides it.
diff --git a/lib/getSocialPlatformByLink.tsx b/lib/getSocialPlatformByLink.tsx
index 1a31a95c2..b99111682 100644
--- a/lib/getSocialPlatformByLink.tsx
+++ b/lib/getSocialPlatformByLink.tsx
@@ -1,13 +1,29 @@
+/** Extract a lowercased hostname from a link that may omit its protocol. */
+const hostnameOf = (link: string): string => {
+ try {
+ const url = new URL(link.includes("://") ? link : `https://${link}`);
+ return url.hostname.toLowerCase();
+ } catch {
+ return link.toLowerCase();
+ }
+};
+
+/** True when `host` is exactly `domain` or a subdomain of it (boundary-safe). */
+const matches = (host: string, domain: string): boolean =>
+ host === domain || host.endsWith(`.${domain}`);
+
const getSocialPlatformByLink = (link: string) => {
if (!link) return "NONE";
- if (link.includes("x.com") || link.includes("twitter.com")) return "TWITTER";
- if (link.includes("instagram.com")) return "INSTAGRAM";
- if (link.includes("spotify.com")) return "SPOTIFY";
- if (link.includes("tiktok.com")) return "TIKTOK";
- if (link.includes("apple.com")) return "APPPLE";
- if (link.includes("youtube.")) return "YOUTUBE";
- if (link.includes("facebook.com")) return "FACEBOOK";
- if (link.includes("threads.net") || link.includes("threads.com")) return "THREADS";
+ const host = hostnameOf(link);
+ if (matches(host, "x.com") || matches(host, "twitter.com")) return "TWITTER";
+ if (matches(host, "instagram.com")) return "INSTAGRAM";
+ if (matches(host, "spotify.com")) return "SPOTIFY";
+ if (matches(host, "tiktok.com")) return "TIKTOK";
+ if (matches(host, "apple.com")) return "APPLE";
+ if (matches(host, "youtube.com") || matches(host, "youtu.be")) return "YOUTUBE";
+ if (matches(host, "facebook.com")) return "FACEBOOK";
+ if (matches(host, "threads.net") || matches(host, "threads.com"))
+ return "THREADS";
return "NONE";
};
diff --git a/lib/socials/getPlatformDisplayName.ts b/lib/socials/getPlatformDisplayName.ts
index 9efcd9a79..36c75e8b7 100644
--- a/lib/socials/getPlatformDisplayName.ts
+++ b/lib/socials/getPlatformDisplayName.ts
@@ -9,7 +9,7 @@ const getPlatformDisplayName = (platformType: string): string => {
TWITTER: "Twitter",
INSTAGRAM: "Instagram",
TIKTOK: "TikTok",
- APPPLE: "Apple Music",
+ APPLE: "Apple Music",
YOUTUBE: "YouTube",
FACEBOOK: "Facebook",
THREADS: "Threads",
diff --git a/lib/spotify/isSafeSpotifyUrl.ts b/lib/spotify/isSafeSpotifyUrl.ts
new file mode 100644
index 000000000..9fb686155
--- /dev/null
+++ b/lib/spotify/isSafeSpotifyUrl.ts
@@ -0,0 +1,16 @@
+/**
+ * Type guard that validates a value is a safe, HTTPS Spotify URL before it's
+ * used as a link href or for playback. Rejects non-https schemes and any host
+ * outside the spotify.com domain to prevent open-redirect / scheme abuse.
+ */
+export function isSafeSpotifyUrl(value?: string): value is string {
+ if (!value) return false;
+ try {
+ const url = new URL(value);
+ if (url.protocol !== "https:") return false;
+ const host = url.hostname;
+ return host === "open.spotify.com" || host.endsWith(".spotify.com");
+ } catch {
+ return false;
+ }
+}
diff --git a/lib/tools/getToolInfo.ts b/lib/tools/getToolInfo.ts
new file mode 100644
index 000000000..56703abb2
--- /dev/null
+++ b/lib/tools/getToolInfo.ts
@@ -0,0 +1,91 @@
+import { humanizeToolName } from "./humanizeToolName";
+
+interface ToolInfo {
+ /** Past-tense summary shown on the success card. */
+ message: string;
+ /** Present-tense label shown while the tool is running. */
+ runningLabel: string;
+ /**
+ * Plain-English, non-technical explanation of what this kind of tool does —
+ * shown as a subtitle so a non-technical user understands an unfamiliar
+ * (often MCP/automation) step instead of seeing a bare tool name.
+ */
+ description: string;
+}
+
+function getToolInfo(toolName: string): ToolInfo {
+ const name = toolName.toLowerCase();
+
+ if (name.includes("spotify")) {
+ return {
+ message: "Music data retrieved",
+ runningLabel: "Pulling Spotify data",
+ description: "Looks up music data on Spotify.",
+ };
+ } else if (
+ toolName === "get_artist_socials" ||
+ toolName === "create_new_artist"
+ ) {
+ return {
+ message: "Artist data processed",
+ runningLabel: "Working with artist data",
+ description: "Reads or updates this artist's profile.",
+ };
+ } else if (toolName === "contact_team") {
+ return {
+ message: "Team contacted",
+ runningLabel: "Contacting the team",
+ description: "Sends a message to the Recoup team.",
+ };
+ } else if (toolName === "search_web") {
+ return {
+ message: "Information retrieved",
+ runningLabel: "Searching the web",
+ description: "Searches the web for up-to-date information.",
+ };
+ } else if (name.startsWith("composio")) {
+ return {
+ message: "Connection managed",
+ runningLabel: "Managing connection",
+ description: "Manages a connected app or runs an action in it.",
+ };
+ } else if (
+ name.includes("bash") ||
+ name.includes("shell") ||
+ name.includes("command") ||
+ name.includes("sandbox") ||
+ name.includes("terminal")
+ ) {
+ return {
+ message: "Command finished",
+ runningLabel: "Running a command",
+ description: "Runs a command in a secure sandbox to do work for you.",
+ };
+ } else if (name.includes("email") || name.includes("send")) {
+ return {
+ message: "Message sent",
+ runningLabel: "Sending",
+ description: "Sends a message on your behalf.",
+ };
+ } else if (
+ name.startsWith("get") ||
+ name.startsWith("list") ||
+ name.startsWith("read") ||
+ name.startsWith("fetch") ||
+ name.includes("search")
+ ) {
+ return {
+ message: "Data retrieved",
+ runningLabel: `Looking up ${humanizeToolName(toolName).toLowerCase()}`,
+ description: "Looks up information to answer your request.",
+ };
+ }
+ // Default for any other tool — derive a readable label from the tool name.
+ return {
+ message: "Step complete",
+ runningLabel: `Running ${humanizeToolName(toolName)}`,
+ description: "Runs an automated step to complete your request.",
+ };
+}
+
+export default getToolInfo;
diff --git a/lib/tools/humanizeToolName.ts b/lib/tools/humanizeToolName.ts
new file mode 100644
index 000000000..0a7adab44
--- /dev/null
+++ b/lib/tools/humanizeToolName.ts
@@ -0,0 +1,19 @@
+/**
+ * Convert a raw tool name into a human-readable, title-cased label.
+ * Single source of truth shared by tool cards (ToolError, GenericSuccess) and
+ * getToolInfo so the same transform isn't reimplemented per call site.
+ *
+ * e.g. "COMPOSIO_MANAGE_CONNECTIONS" -> "Manage Connections"
+ * "get_spotify_album" -> "Get Spotify Album"
+ */
+export function humanizeToolName(name?: string): string {
+ if (!name) return "Action";
+ return name
+ .replace(/^COMPOSIO_/, "")
+ .replace(/[_-]+/g, " ")
+ .trim()
+ .toLowerCase()
+ .replace(/\b\w/g, (c) => c.toUpperCase());
+}
+
+export default humanizeToolName;
diff --git a/lib/tools/summarizeToolInput.ts b/lib/tools/summarizeToolInput.ts
new file mode 100644
index 000000000..f28045f8a
--- /dev/null
+++ b/lib/tools/summarizeToolInput.ts
@@ -0,0 +1,55 @@
+/**
+ * Turn a tool's raw input args into a short, human "what it's doing this call"
+ * string — e.g. a shell command, a search query, a URL, a file path.
+ *
+ * This is the key to making repeated calls of the same tool (e.g. a "Bash"
+ * tool firing five times) read as distinct, intentional steps rather than a
+ * frozen loop: each card echoes the specific thing it ran.
+ */
+
+// Ordered by how meaningful the value is as a one-line summary.
+const PREFERRED_KEYS = [
+ "command",
+ "cmd",
+ "script",
+ "query",
+ "q",
+ "search",
+ "search_query",
+ "prompt",
+ "url",
+ "href",
+ "link",
+ "path",
+ "file",
+ "file_path",
+ "filePath",
+ "filename",
+ "title",
+ "name",
+ "text",
+ "message",
+];
+
+export function summarizeToolInput(input: unknown): string | null {
+ if (!input || typeof input !== "object") {
+ return typeof input === "string" && input.trim() ? input.trim() : null;
+ }
+ const obj = input as Record;
+
+ for (const key of PREFERRED_KEYS) {
+ const value = obj[key];
+ if (typeof value === "string" && value.trim()) return value.trim();
+ if (typeof value === "number") return String(value);
+ }
+
+ // Fall back to the first short string value we can find.
+ for (const value of Object.values(obj)) {
+ if (typeof value === "string" && value.trim() && value.length <= 200) {
+ return value.trim();
+ }
+ }
+ return null;
+}
+
+export default summarizeToolInput;
diff --git a/lib/utils/getToolsInfo.ts b/lib/utils/getToolsInfo.ts
deleted file mode 100644
index 4b94cc9f7..000000000
--- a/lib/utils/getToolsInfo.ts
+++ /dev/null
@@ -1,55 +0,0 @@
-function getToolInfo(toolName: string): { message: string } {
- // Spotify related tools
- if (toolName.includes("spotify")) {
- return {
- message: "Music data retrieved",
- };
- }
- // Artist data tools
- else if (
- toolName === "get_artist_socials" ||
- toolName === "create_new_artist"
- ) {
- return {
- message: "Artist data processed",
- };
- }
- // Contact team
- else if (toolName === "contact_team") {
- return {
- message: "Team contacted",
- };
- }
- // Search Web
- else if (toolName === "search_web") {
- return {
- message: "Information retrieved",
- };
- }
- // Connector tools
- else if (toolName === "COMPOSIO_MANAGE_CONNECTIONS") {
- return {
- message: "Connection managed",
- };
- } else if (toolName === "COMPOSIO_SEARCH_TOOLS") {
- return {
- message: "Tools discovered",
- };
- } else if (toolName === "COMPOSIO_GET_TOOL_SCHEMAS") {
- return {
- message: "Tool details retrieved",
- };
- } else if (toolName === "COMPOSIO_MULTI_EXECUTE_TOOL") {
- return {
- message: "Action executed",
- };
- }
- // Default for any other tool
- else {
- return {
- message: "Data processed",
- };
- }
-}
-
-export default getToolInfo;
diff --git a/package.json b/package.json
index 6cdda3742..8611c4620 100644
--- a/package.json
+++ b/package.json
@@ -10,7 +10,9 @@
"format": "prettier --write app components providers types hooks lib && pnpm lint",
"test": "vitest run",
"test:watch": "vitest",
- "update-types": "npx supabase gen types typescript --project-id godremdqwajrwazhbrue --schema public > types/database.types.ts"
+ "update-types": "npx supabase gen types typescript --project-id godremdqwajrwazhbrue --schema public > types/database.types.ts",
+ "storybook": "storybook dev -p 6006",
+ "build-storybook": "storybook build"
},
"dependencies": {
"@ai-sdk/anthropic": "3.0.80",
@@ -114,6 +116,7 @@
"zod": "^3.25.0"
},
"devDependencies": {
+ "@storybook/nextjs-vite": "^10.4.6",
"@tailwindcss/postcss": "^4.1.17",
"@tailwindcss/typography": "0.5.0-alpha.3",
"@types/node": "^20",
@@ -129,8 +132,10 @@
"eslint-plugin-storybook": "^10.0.7",
"postcss": "^8",
"prettier": "3.3.3",
+ "storybook": "^10.4.6",
"tailwindcss": "^4.1.17",
"typescript": "^5",
+ "vite": "^8.0.16",
"vitest": "^4.0.8"
}
}
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index ba24f7fb3..0f700cee1 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -31,16 +31,16 @@ importers:
version: 2.5.4(bufferutil@4.0.9)(deepmerge@4.3.1)(dotenv@16.6.1)(encoding@0.1.13)(react@19.2.1)(utf-8-validate@5.0.10)(zod@3.25.76)
'@coinbase/cdp-sdk':
specifier: ^1.4.0
- version: 1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ version: 1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@coinbase/onchainkit':
specifier: ^0.38.8
- version: 0.38.19(@farcaster/miniapp-sdk@0.2.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ version: 0.38.19(@farcaster/miniapp-sdk@0.2.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
'@composio/core':
specifier: ^0.2.4
- version: 0.2.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ version: 0.2.6(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
'@composio/vercel':
specifier: ^0.2.16
- version: 0.2.18(@composio/core@0.2.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ai@6.0.165(zod@3.25.76))
+ version: 0.2.18(@composio/core@0.2.6(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ai@6.0.165(zod@3.25.76))
'@farcaster/frame-sdk':
specifier: ^0.0.44
version: 0.0.44(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
@@ -61,7 +61,7 @@ importers:
version: 1.24.3(zod@3.25.76)
'@privy-io/react-auth':
specifier: ^3.31.0
- version: 3.31.0(@solana-program/system@0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ version: 3.31.0(@solana-program/system@0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
'@radix-ui/react-alert-dialog':
specifier: ^1.1.15
version: 1.1.15(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
@@ -202,7 +202,7 @@ importers:
version: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
next-pwa:
specifier: ^5.6.0
- version: 5.6.0(@babel/core@7.28.5)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(webpack@5.103.0)
+ version: 5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.27.1)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(webpack@5.103.0(esbuild@0.27.1))
next-themes:
specifier: ^0.3.0
version: 0.3.0(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
@@ -211,7 +211,7 @@ importers:
version: 0.66.0(request@2.88.2)
openai:
specifier: ^4.67.3
- version: 4.104.0(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ version: 4.104.0(encoding@0.1.13)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
papaparse:
specifier: ^5.5.3
version: 5.5.3
@@ -298,14 +298,17 @@ importers:
version: 2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
wagmi:
specifier: ^2.15.4
- version: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ version: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
x402-mcp:
specifier: ^0.1.1
- version: 0.1.1(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(ai@6.0.165(zod@3.25.76))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ version: 0.1.1(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(ai@6.0.165(zod@3.25.76))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
zod:
specifier: ^3.25.0
version: 3.25.76
devDependencies:
+ '@storybook/nextjs-vite':
+ specifier: ^10.4.6
+ version: 10.4.6(@babel/core@7.28.5)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(esbuild@0.27.1)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))
'@tailwindcss/postcss':
specifier: ^4.1.17
version: 4.1.17
@@ -332,10 +335,10 @@ importers:
version: 15.5.13
'@vitest/browser-playwright':
specifier: ^4.0.8
- version: 4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
+ version: 4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
'@vitest/coverage-v8':
specifier: ^4.0.8
- version: 4.0.15(@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)
+ version: 4.0.15(@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)
eslint:
specifier: ^8
version: 8.57.1
@@ -344,22 +347,28 @@ importers:
version: 14.2.13(eslint@8.57.1)(typescript@5.9.3)
eslint-plugin-storybook:
specifier: ^10.0.7
- version: 10.1.4(eslint@8.57.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)
+ version: 10.1.4(eslint@8.57.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)
postcss:
specifier: ^8
version: 8.5.6
prettier:
specifier: 3.3.3
version: 3.3.3
+ storybook:
+ specifier: ^10.4.6
+ version: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
tailwindcss:
specifier: ^4.1.17
version: 4.1.17
typescript:
specifier: ^5
version: 5.9.3
+ vite:
+ specifier: ^8.0.16
+ version: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
vitest:
specifier: ^4.0.8
- version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
packages:
@@ -1158,15 +1167,39 @@ packages:
peerDependencies:
'@noble/ciphers': ^1.0.0
+ '@emnapi/core@1.10.0':
+ resolution: {integrity: sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==}
+
+ '@emnapi/core@1.11.0':
+ resolution: {integrity: sha512-l9Oo58x0HOP5znGzVhYW9U3e5wVuA4LAZU2AGezTmkhO1CgQRFDhDg4nneHsu/t3WniXg9QrG2nIXL/ZS8ln8Q==}
+
'@emnapi/core@1.7.1':
resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
+ '@emnapi/core@1.9.2':
+ resolution: {integrity: sha512-UC+ZhH3XtczQYfOlu3lNEkdW/p4dsJ1r/bP7H8+rhao3TTTMO1ATq/4DdIi23XuGoFY+Cz0JmCbdVl0hz9jZcA==}
+
+ '@emnapi/runtime@1.10.0':
+ resolution: {integrity: sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==}
+
+ '@emnapi/runtime@1.11.0':
+ resolution: {integrity: sha512-55coeOFKHv1ywEcUXJtWU5f+Jr/W5tZDvZig8DLKSwUN1JpROQ4rk/SNOQiFWmaR/VKF4zuFyW1B8JduOSv6Pg==}
+
'@emnapi/runtime@1.7.1':
resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+ '@emnapi/runtime@1.9.2':
+ resolution: {integrity: sha512-3U4+MIWHImeyu1wnmVygh5WlgfYDtyf0k8AbLhMFxOipihf6nrWC4syIm/SwEeec0mNSafiiNnMJwbza/Is6Lw==}
+
'@emnapi/wasi-threads@1.1.0':
resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+ '@emnapi/wasi-threads@1.2.1':
+ resolution: {integrity: sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==}
+
+ '@emnapi/wasi-threads@1.2.2':
+ resolution: {integrity: sha512-c95qOXkHdydNKhscBTebqEC1CVAZpyqOfVfBzQ1qgzyl3gfeldUjIggDbIZgDKsHLgnsM+igH7TJ/eAasaVuMA==}
+
'@emotion/is-prop-valid@1.2.2':
resolution: {integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==}
@@ -1688,89 +1721,105 @@ packages:
resolution: {integrity: sha512-excjX8DfsIcJ10x1Kzr4RcWe1edC9PquDRRPx3YVCvQv+U5p7Yin2s32ftzikXojb1PIFc/9Mt28/y+iRklkrw==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-arm@1.2.4':
resolution: {integrity: sha512-bFI7xcKFELdiNCVov8e44Ia4u2byA+l3XtsAj+Q8tfCwO6BQ8iDojYdvoPMqsKDkuoOo+X6HZA0s0q11ANMQ8A==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-ppc64@1.2.4':
resolution: {integrity: sha512-FMuvGijLDYG6lW+b/UvyilUWu5Ayu+3r2d1S8notiGCIyYU/76eig1UfMmkZ7vwgOrzKzlQbFSuQfgm7GYUPpA==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-riscv64@1.2.4':
resolution: {integrity: sha512-oVDbcR4zUC0ce82teubSm+x6ETixtKZBh/qbREIOcI3cULzDyb18Sr/Wcyx7NRQeQzOiHTNbZFF1UwPS2scyGA==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-s390x@1.2.4':
resolution: {integrity: sha512-qmp9VrzgPgMoGZyPvrQHqk02uyjA0/QrTO26Tqk6l4ZV0MPWIW6LTkqOIov+J1yEu7MbFQaDpwdwJKhbJvuRxQ==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linux-x64@1.2.4':
resolution: {integrity: sha512-tJxiiLsmHc9Ax1bz3oaOYBURTXGIRDODBqhveVHonrHJ9/+k89qbLl0bcJns+e4t4rvaNBxaEZsFtSfAdquPrw==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@img/sharp-libvips-linuxmusl-arm64@1.2.4':
resolution: {integrity: sha512-FVQHuwx1IIuNow9QAbYUzJ+En8KcVm9Lk5+uGUQJHaZmMECZmOlix9HnH7n1TRkXMS0pGxIJokIVB9SuqZGGXw==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@img/sharp-libvips-linuxmusl-x64@1.2.4':
resolution: {integrity: sha512-+LpyBk7L44ZIXwz/VYfglaX/okxezESc6UxDSoyo2Ks6Jxc4Y7sGjpgU9s4PMgqgjj1gZCylTieNamqA1MF7Dg==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@img/sharp-linux-arm64@0.34.5':
resolution: {integrity: sha512-bKQzaJRY/bkPOXyKx5EVup7qkaojECG6NLYswgktOZjaXecSAeCWiZwwiFf3/Y+O1HrauiE3FVsGxFg8c24rZg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-arm@0.34.5':
resolution: {integrity: sha512-9dLqsvwtg1uuXBGZKsxem9595+ujv0sJ6Vi8wcTANSFpwV/GONat5eCkzQo/1O6zRIkh0m/8+5BjrRr7jDUSZw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-ppc64@0.34.5':
resolution: {integrity: sha512-7zznwNaqW6YtsfrGGDA6BRkISKAAE1Jo0QdpNYXNMHu2+0dTrPflTLNkpc8l7MUP5M16ZJcUvysVWWrMefZquA==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-riscv64@0.34.5':
resolution: {integrity: sha512-51gJuLPTKa7piYPaVs8GmByo7/U7/7TZOq+cnXJIHZKavIRHAP77e3N2HEl3dgiqdD/w0yUfiJnII77PuDDFdw==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-s390x@0.34.5':
resolution: {integrity: sha512-nQtCk0PdKfho3eC5MrbQoigJ2gd1CgddUMkabUj+rBevs8tZ2cULOx46E7oyX+04WGfABgIwmMC0VqieTiR4jg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@img/sharp-linux-x64@0.34.5':
resolution: {integrity: sha512-MEzd8HPKxVxVenwAa+JRPwEC7QFjoPWuS5NZnBt6B3pu7EG2Ge0id1oLHZpPJdn3OQK+BQDiw9zStiHBTJQQQQ==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@img/sharp-linuxmusl-arm64@0.34.5':
resolution: {integrity: sha512-fprJR6GtRsMt6Kyfq44IsChVZeGN97gTD331weR1ex1c1rypDEABN6Tm2xa1wE6lYb5DdEnk03NZPqA7Id21yg==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@img/sharp-linuxmusl-x64@0.34.5':
resolution: {integrity: sha512-Jg8wNT1MUzIvhBFxViqrEhWDGzqymo3sV7z7ZsaWbZNDLXRJZoRGrjulp60YYtV4wfY8VIKcWidjojlLcWrd8Q==}
engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@img/sharp-wasm32@0.34.5':
resolution: {integrity: sha512-OdWTEiVkY2PHwqkbBI8frFxQQFekHaSSkUIJkwzclWZe64O1X4UlUjqqqLaPbUpMOQk6FBu/HtlGXNblIs0huw==}
@@ -1799,6 +1848,15 @@ packages:
resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==}
engines: {node: '>=12'}
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0':
+ resolution: {integrity: sha512-qvsTEwEFefhdirGOPnu9Wp6ChfIwy2dBCRuETU3uE+4cC+PFoxMSiiEhxk4lOluA34eARHA0OxqsEUYDqRMgeQ==}
+ peerDependencies:
+ typescript: '>= 4.3.x'
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
'@jridgewell/gen-mapping@0.3.13':
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
@@ -1935,6 +1993,15 @@ packages:
'@napi-rs/wasm-runtime@0.2.12':
resolution: {integrity: sha512-ZVWUcfwY4E/yPitQJl481FjFo3K22D6qF0DuFH6Y/nbnE11GY5uguDxZMGXPQ8WQ0128MXQD7TnfHyK4oWoIJQ==}
+ '@napi-rs/wasm-runtime@1.1.5':
+ resolution: {integrity: sha512-AWPoBRJ9tsnVhor4sjO7rkni+7p+2IAEFj6cx06UgP10jkQHqay/36uRV/bFkgrh18D9vb4cr8Q0Pthskgzy+Q==}
+ peerDependencies:
+ '@emnapi/core': ^1.7.1
+ '@emnapi/runtime': ^1.7.1
+
+ '@next/env@16.0.0':
+ resolution: {integrity: sha512-s5j2iFGp38QsG1LWRQaE2iUY3h1jc014/melHFfLdrsMJPqxqDQwWNwyQTcNoUSGZlCVZuM7t7JDMmSyRilsnA==}
+
'@next/env@16.0.10':
resolution: {integrity: sha512-8tuaQkyDVgeONQ1MeT9Mkk8pQmZapMKFh5B+OrFUlG3rVmYTXcXlBetBgTurKXGaIZvkoqRT9JL5K3phXcgang==}
@@ -1958,24 +2025,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@next/swc-linux-arm64-musl@16.0.10':
resolution: {integrity: sha512-llA+hiDTrYvyWI21Z0L1GiXwjQaanPVQQwru5peOgtooeJ8qx3tlqRV2P7uH2pKQaUfHxI/WVarvI5oYgGxaTw==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@next/swc-linux-x64-gnu@16.0.10':
resolution: {integrity: sha512-AK2q5H0+a9nsXbeZ3FZdMtbtu9jxW4R/NgzZ6+lrTm3d6Zb7jYrWcgjcpM1k8uuqlSy4xIyPR2YiuUr+wXsavA==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@next/swc-linux-x64-musl@16.0.10':
resolution: {integrity: sha512-1TDG9PDKivNw5550S111gsO4RGennLVl9cipPhtkXIFVwo31YZ73nEbLjNC8qG3SgTz/QZyYyaFYMeY4BKZR/g==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@next/swc-win32-arm64-msvc@16.0.10':
resolution: {integrity: sha512-aEZIS4Hh32xdJQbHz121pyuVZniSNoqDVx1yIr2hy+ZwJGipeqnMZBJHyMxv2tiuAXGx6/xpTcQJ6btIiBjgmg==}
@@ -2056,6 +2127,242 @@ packages:
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
+ '@oxc-parser/binding-android-arm-eabi@0.127.0':
+ resolution: {integrity: sha512-0LC7ye4hvqbIKxAzThzvswgHLFu2AURKzYLeSVvLdu2TBOYWQDmHnTqPLeA597BcUCxiLqLsS4CJ5uoI5WYWCQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-parser/binding-android-arm64@0.127.0':
+ resolution: {integrity: sha512-b5jtVTH6AU5CJXHNdj7Jj9IEiR9yVjjnwHzPJhGyHGPdcsZSzBCkS9GBbV33niRMvKthDwQRFRJfI4a+k4PvYg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-parser/binding-darwin-arm64@0.127.0':
+ resolution: {integrity: sha512-obCE8B7ISKkJidjlhv9xRGJPOSDG2Yu6PRga9Ruaz35uintHxbp1Ki/Yc71wx4rj3Edrm0a1kzG1TAwit0wFpg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-parser/binding-darwin-x64@0.127.0':
+ resolution: {integrity: sha512-JL6Xb5IwPQT8rUzlpsX7E+AgfcdNklXNPFp8pjCQQ5MQOQo5rtEB2ui+3Hgg9Sn7Y9Egj6YOLLiHhLpdAe12Aw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-parser/binding-freebsd-x64@0.127.0':
+ resolution: {integrity: sha512-SDQ/3MQFw58fqQz3Z1PhSKFF3JoCF4gmlNjziDm8X02tTahCw0qJbd7FGPDKw1i4VTBZene9JPyC3mHtSvi+wA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0':
+ resolution: {integrity: sha512-Av+D1MIqzV0YMGPT9we2SIZaMKD7Cxs4CvXSx/yxaWHewZjYEjScpOf5igc8IILASViw4WTnjlwUdI1KzVtDHQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.127.0':
+ resolution: {integrity: sha512-Cs2fdJ8cPpFdeebj6p4dag8A4+56hPvZ0AhQQzlaLswGz1tz7bXt1nETLeorrM9+AMcWFFkqxcXwDGfTVidY8g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.127.0':
+ resolution: {integrity: sha512-qdOfTcT6SY8gsJrrV92uyEUyjqMGPpIB5JZUG6QN5dukYd+7/j0kX6MwK1DgQj39jtUYixxPiaRUiEN1+0CXgQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-arm64-musl@0.127.0':
+ resolution: {integrity: sha512-EoTCZneNFU/P2qrpEM+RHmQwt+CvDkyGESG6qhr7KaegXLZwePfbrkCDfAk8/rhxbDUVGsZILX+2tqPzFtoFWA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.127.0':
+ resolution: {integrity: sha512-zALjmZYgxFLHjXeudcDF0xFGNydTAtkAeXAr2EuC17ywCyFxcmQra4w0BMde0Yi/re4Bi4iwEoEXtYN7l6eBLQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.127.0':
+ resolution: {integrity: sha512-fPP8M6zQLS7Jz7o9d5ArUSuAuSK3e+WCYVrCpdzeCOejidtZExJ9tjhDrAd3HEPqARBCPmdpqxESPFqy44vkBQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.127.0':
+ resolution: {integrity: sha512-7IcC4Ao02oGpfnjt+X/oF4U2mllo2qoSkw5xxiXNKL9MCTsTiAC6616beOuehdxGcnz1bRoPC1RQ2f1GQDdN+g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.127.0':
+ resolution: {integrity: sha512-pbXIhiNFHoqWeqDNLiJ9JkpHz1IM9k4DXa66x+1GTWMG7iLxtkXgE53iiuKSXwmk3zIYmaPVfBvgcAhS583K4Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-x64-gnu@0.127.0':
+ resolution: {integrity: sha512-MYCguB9RvBvlSd6gbuNI7QwiLoCCAlGnlRJFPrzLI6U1/9wkC/WK6LtBAUln55H1Ctqw45PWmqrobKoMhsYQzQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-parser/binding-linux-x64-musl@0.127.0':
+ resolution: {integrity: sha512-5eY0B/bxf1xIUxb4NOTvOI3KWtBQfPWYyKAzgcrCt0mDibSZygVpO1Pz8bkeiSZ5Jj9+M09dkggG3H8I5d0Uyg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-parser/binding-openharmony-arm64@0.127.0':
+ resolution: {integrity: sha512-Gld0ajrFTUXNtdw20fVBuTQx66FA75nIVg+//pPfR3sXkuABB4mTBhl3r9JNzrJpgW//qiwxf0nWXUWGJSL3UQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-parser/binding-wasm32-wasi@0.127.0':
+ resolution: {integrity: sha512-T6KVD7rhLzFlwGRXMnxUFfkCZD8FHnb968wVXW1mXzgRFc5RNXOBY2mPPDZ77x5Ln76ltLMgtPg0cOkU1NSrEQ==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.127.0':
+ resolution: {integrity: sha512-Ujvw4X+LD1CCGULcsQcvb4YNVoBGqt+JHgNNzGGaCImELiZLk477ifUH53gIbE7EKd933NdTi25JWEr9K2HwXw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.127.0':
+ resolution: {integrity: sha512-0cwxKO7KHQQQfo4Uf4B2SQrhgm+cJaP9OvFFhx52Tkg4bezsacu83GB2/In5bC415Ueeym+kXdnge/57rbSfTw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxc-parser/binding-win32-x64-msvc@0.127.0':
+ resolution: {integrity: sha512-rOrnSQSCbhI2kowr9XxE7m9a8oQXnBHjnS6j95LxxAnEZ0+Fz20WlRXG4ondQb+ejjt2KOsa65sE6++L6kUd+w==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@oxc-project/types@0.127.0':
+ resolution: {integrity: sha512-aIYXQBo4lCbO4z0R3FHeucQHpF46l2LbMdxRvqvuRuW2OxdnSkcng5B8+K12spgLDj93rtN3+J2Vac/TIO+ciQ==}
+
+ '@oxc-project/types@0.133.0':
+ resolution: {integrity: sha512-KzkdCd6Uxqnf6l3HOw1xfatAlUURA0g14cvBYFyJ5SaNOQbOUvBr9PKArcPcrNIeRsBdgcUzOGrhKveVpvOIGA==}
+
+ '@oxc-resolver/binding-android-arm-eabi@11.21.3':
+ resolution: {integrity: sha512-eNU11A2WNizh04v3uyaJCootrHIaS0B9aHYXvAvVnPNk4xYSjMUjHnhQ6dewPN2MRYDskV85d1N0Aw0WNWhcyg==}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-resolver/binding-android-arm64@11.21.3':
+ resolution: {integrity: sha512-8Q+ZjTLvn2dIcWsrmhdrEihm7q+ag/k+mkry7Z+t0QbbHaVxXQfvH9AewyVMh/WrpEKhQ3DDgx9fYbqeCpeOEw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-resolver/binding-darwin-arm64@11.21.3':
+ resolution: {integrity: sha512-wkh0qKZGHXVUDxFw3oA1TXnU2BDYY/r775oJflGeIr8uDPPoN2pk8gijQIzYRT6hoql/lg3+Tx/SaTn9e2/aGg==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-darwin-x64@11.21.3':
+ resolution: {integrity: sha512-HbNc23FAQYbuyDV2vBWMez4u4mrsm5RAkniGZAWqr6lYZ3N4beeqIb776jzwRl8qL2zRhHVXpUj97X0QgogVzg==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-freebsd-x64@11.21.3':
+ resolution: {integrity: sha512-K6xNsTUPEUdfrn0+kbMq5nOUB5w1C5pavPQngt4TM2FpN91lP0PBe2srSpamb4d69O7h86oAi/qWX/kZNRSjkw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
+ resolution: {integrity: sha512-VcFmOpcpWX1zoEy8M58tR2M9YxM+Z9RuQhqAx5q0CTmrruaP7Gveejg75hzd/5sg5nk9G3aLALEa3hE2FsmmTQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
+ resolution: {integrity: sha512-quVoxFLBy43hWaQbbDtQNRwAX5vX76mv7n64icAtQcJ3eNgVeblqmkupF/hAneNthdqSlnd1sTjb3aQSaDPaCQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
+ resolution: {integrity: sha512-X0AqNZgcD07Q4V3RDK18/vYOj/HQT/FnmEFGYS2jTWqY7JO13ryE3TEs3eAIgUJhBnNkpEaiXqz3VK8M7qQhWQ==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.21.3':
+ resolution: {integrity: sha512-YkaQnaKYdbuaXvRt5Qd0GpbihzVnyfR6z1SpYfIUC6RTu4NF7lDKPjVkYb+jRI2gedVO2rVpN35Y6akG6ud4Lw==}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
+ resolution: {integrity: sha512-gB9HwhrPiFqUzDeEq+y/CgAijz1YdI6BnXz5GaH2Pa9cWdutchlkGFAiAuGb/PjVQpiK6NFKzFuztxrweoit7A==}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
+ resolution: {integrity: sha512-zjDWBlYk8QGv0H8dsPUWqkfjYIIjG2TvspGkzXL0eImbgxtZorA/klKeHyolevoT3Kvbi+1iMr9Lhrh7jf54Og==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
+ resolution: {integrity: sha512-4UfsQvacV388y1zpXL7C1x1FNYaV52JtuNRiuzrfQA2z1z6ElVrsidkGsrvQ5EgeSq1Pj7kaKqrgGkvFuxJ/tw==}
+ cpu: [riscv64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
+ resolution: {integrity: sha512-b5uH+HKH0MP5mNBYaK75SKsJbw52URqrx2LavYdq6wb0l3ExAG5niYRP9DWUNHdKilpaBVM2bXk9HNWrH3ew7Q==}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.21.3':
+ resolution: {integrity: sha512-PjYlmilBpNRh2ntXNYAK3Am5w/nPfEpnU/96iNx7CI8EzAn12J4JRiec63wHJTH31nLoCNxBg/829pN+3CfG3Q==}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@oxc-resolver/binding-linux-x64-musl@11.21.3':
+ resolution: {integrity: sha512-QTBAb7JuHlZ7JUEyM8UiQi2f7m/L4swBhP2TNpYIDc9Wp/wRw1G/8sl6i13aIzQAXH7LKIm294LeOHd0lQR8zA==}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@oxc-resolver/binding-openharmony-arm64@11.21.3':
+ resolution: {integrity: sha512-4j1DFwjwv36ec9kds0jU/ucQ5Ha4ERO/H95BxR5JFf0kqUUAJ1kwII7XhTc1vZrkdJkvLGC9Q2MbpObpum8RBg==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-resolver/binding-wasm32-wasi@11.21.3':
+ resolution: {integrity: sha512-i8oluoel5kru/j1WNrjmQSiA3GQ7wvIYVR1IwIoZtKogAhya2iub+ZKIeSIkcJOrnzQ18Tzl/F+kL3fYOxZLvA==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
+ resolution: {integrity: sha512-M/8dw8dD6aOs+NlPJax401CZB9I7Aut84isQLgALGGwke4Afvw+/7yYhZb94yXf6t2sPLhQLmSmtSV+2FhsOWg==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.21.3':
+ resolution: {integrity: sha512-H7BCt/VnS9hnmMp42eGhZ99izSCRvlnWwy/N71K1/J8QoExwY4262Z8QiEkMDtduRJrztayDxETTckmUuAVL9Q==}
+ cpu: [x64]
+ os: [win32]
+
'@paulmillr/qr@0.2.1':
resolution: {integrity: sha512-IHnV6A+zxU7XwmKFinmYjUcwlyK9+xkG3/s9KcQhI9BjQKycrJ1JRO+FbNYPwZiPKW3je/DR0k7w8/gLa5eaxQ==}
deprecated: 'The package is now available as "qr": npm install qr'
@@ -2755,6 +3062,104 @@ packages:
'@reown/appkit@1.8.9':
resolution: {integrity: sha512-e3N2DAzf3Xv3jnoD8IsUo0/Yfwuhk7npwJBe1+9rDJIRwgPsyYcCLD4gKPDFC5IUIfOLqK7YtGOh9oPEUnIWpw==}
+ '@rolldown/binding-android-arm64@1.0.3':
+ resolution: {integrity: sha512-454rs7jHngixp/NMxd5srYD57OnzSlZ/eFTETjORQHLwJG1lRtmNOJcBerZlfu4GjKqeq8aCCIQrMdHyhI51Hw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [android]
+
+ '@rolldown/binding-darwin-arm64@1.0.3':
+ resolution: {integrity: sha512-PcAhP+ynjURNyy8SKGl5DQP94aGuB/7JrXJb/t7P+hanXvQVMWzUvRRhBAcg/lNRadBhoUPqSoP4xw5tR/KBEA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@rolldown/binding-darwin-x64@1.0.3':
+ resolution: {integrity: sha512-9YpfeUvSE2RS7wysJ81uOZkXJz7f7Q55H2Gvp3VEw/EsahqDtrphrZ0EwDLK5vvKOzaCrBsjF8JmnMLcUt78Gg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@rolldown/binding-freebsd-x64@1.0.3':
+ resolution: {integrity: sha512-yB1IlAsSNHncV6SCTL27/MVGR5htvQsoGxIv5KMGXALp+Ll1wYsn+x98M9MW7qa+NdSbvrrY7ANI4wLJ0n1e6g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
+ resolution: {integrity: sha512-Yi30IVAAfLUCy2MseFjbB1jAMDl1VMCAas5StnYp8da9+CKvMd2H2cbEjWcw5NPaPqzvYkVIaF1nNUG+b7u/sw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.3':
+ resolution: {integrity: sha512-jsO7R8To+AdlYgUmN5sHSCZbfhtMBkO0WUx8iORQnPcMMdgr7qM2DQmMwgabs3GhNztdmoKkMKQFHD6DTMCIQw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-arm64-musl@1.0.3':
+ resolution: {integrity: sha512-VWkUHwWriDciit80wleYwKILoR/KMvxh/IdwS/paX+ZgpuRpCrKLUdadJbc0NpBEiyhpYawsJ73j9aCvOH+f7Q==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.3':
+ resolution: {integrity: sha512-5f1laC0SlIR0yDbFCd8acUhvJIag6N3zC5P7oUPN6wX0aOma+uKJ0wBDH5aq7I1PVI2ttTlhJwzwRIBnLiSGEg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [ppc64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.3':
+ resolution: {integrity: sha512-Iq4ko0r4XsgbrF/LunNgHtAGLRRVE2kXonAXQ/MV0mC6jQpMOhW1SvtZja2EhC/kd05++bP78dsqBeIQyYJ6Yg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [s390x]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-gnu@1.0.3':
+ resolution: {integrity: sha512-B8m6tD5+/N5FeNQFbKlLA/2yVq9ycQP1SeedyEYYKWBNR3ZQbkvIUcNnDNM03lO1l5F2roiiFJGgvoLLyZXtSg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
+
+ '@rolldown/binding-linux-x64-musl@1.0.3':
+ resolution: {integrity: sha512-pSdpdUJHkuCxun9LE7jvgUB9qsRgaiyNNCX7m/AvHTcq67AiT/Yhoxvw5zPfhrM8k/BfP8ce/hMOpthKDpEUow==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
+
+ '@rolldown/binding-openharmony-arm64@1.0.3':
+ resolution: {integrity: sha512-OXXS3RKJgX2uLwM+gYyuH5omcH8fL1LJs96pZGgtetVCahON57+d4SJHzTgZiOjxgGkSnpXpOsWuPDGAKAigEg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@rolldown/binding-wasm32-wasi@1.0.3':
+ resolution: {integrity: sha512-JTtb8BWFynicNSoPrehsCzBtOKjZ6jhMiPFEmOiuXg1Fl8dn2KHQob+GuPSGR0dryQa1PQJbzjF3dqO/whhjLg==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [wasm32]
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.3':
+ resolution: {integrity: sha512-gEdFFEN70A/jxb2svrWsN3aDL7OUtmvlOy+6fa2jxG8K0wQ1ZbdeLGnidov6Yu5/733dI5ySfzFlQ/cb0bSz1g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [arm64]
+ os: [win32]
+
+ '@rolldown/binding-win32-x64-msvc@1.0.3':
+ resolution: {integrity: sha512-eXB7CHuaQdqmJcc3koCNtNPmT/bj2gc999kUFgBxG8Ac0NdgXc4rkCHhqrgrhN3zddvvvrgzj1e90SuSfmyIXA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ cpu: [x64]
+ os: [win32]
+
+ '@rolldown/pluginutils@1.0.1':
+ resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==}
+
'@rollup/plugin-babel@5.3.1':
resolution: {integrity: sha512-WFfdLWU/xVWKeRQnKmIAQULUI7Il0gZnBIH/ZFO069wYIfPu+8zrfp/KMW0atmELoRDq8FbiP3VCss9MhCut7Q==}
engines: {node: '>= 10.0.0'}
@@ -2783,6 +3188,15 @@ packages:
peerDependencies:
rollup: ^1.20.0||^2.0.0
+ '@rollup/pluginutils@5.4.0':
+ resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
'@rollup/rollup-android-arm-eabi@4.53.3':
resolution: {integrity: sha512-mRSi+4cBjrRLoaal2PnqH82Wqyb+d3HsPUN/W+WslCXsZsyHa9ZeQQX/pQsZaVIWDkPcpV6jJ+3KLbTbgnwv8w==}
cpu: [arm]
@@ -2817,56 +3231,67 @@ packages:
resolution: {integrity: sha512-k9oD15soC/Ln6d2Wv/JOFPzZXIAIFLp6B+i14KhxAfnq76ajt0EhYc5YPeX6W1xJkAdItcVT+JhKl1QZh44/qw==}
cpu: [arm]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm-musleabihf@4.53.3':
resolution: {integrity: sha512-vTNlKq+N6CK/8UktsrFuc+/7NlEYVxgaEgRXVUVK258Z5ymho29skzW1sutgYjqNnquGwVUObAaxae8rZ6YMhg==}
cpu: [arm]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-arm64-gnu@4.53.3':
resolution: {integrity: sha512-RGrFLWgMhSxRs/EWJMIFM1O5Mzuz3Xy3/mnxJp/5cVhZ2XoCAxJnmNsEyeMJtpK+wu0FJFWz+QF4mjCA7AUQ3w==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-arm64-musl@4.53.3':
resolution: {integrity: sha512-kASyvfBEWYPEwe0Qv4nfu6pNkITLTb32p4yTgzFCocHnJLAHs+9LjUu9ONIhvfT/5lv4YS5muBHyuV84epBo/A==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-loong64-gnu@4.53.3':
resolution: {integrity: sha512-JiuKcp2teLJwQ7vkJ95EwESWkNRFJD7TQgYmCnrPtlu50b4XvT5MOmurWNrCj3IFdyjBQ5p9vnrX4JM6I8OE7g==}
cpu: [loong64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-ppc64-gnu@4.53.3':
resolution: {integrity: sha512-EoGSa8nd6d3T7zLuqdojxC20oBfNT8nexBbB/rkxgKj5T5vhpAQKKnD+h3UkoMuTyXkP5jTjK/ccNRmQrPNDuw==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-gnu@4.53.3':
resolution: {integrity: sha512-4s+Wped2IHXHPnAEbIB0YWBv7SDohqxobiiPA1FIWZpX+w9o2i4LezzH/NkFUl8LRci/8udci6cLq+jJQlh+0g==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-riscv64-musl@4.53.3':
resolution: {integrity: sha512-68k2g7+0vs2u9CxDt5ktXTngsxOQkSEV/xBbwlqYcUrAVh6P9EgMZvFsnHy4SEiUl46Xf0IObWVbMvPrr2gw8A==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-linux-s390x-gnu@4.53.3':
resolution: {integrity: sha512-VYsFMpULAz87ZW6BVYw3I6sWesGpsP9OPcyKe8ofdg9LHxSbRMd7zrVrr5xi/3kMZtpWL/wC+UIJWJYVX5uTKg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-gnu@4.53.3':
resolution: {integrity: sha512-3EhFi1FU6YL8HTUJZ51imGJWEX//ajQPfqWLI3BQq4TlvHy4X0MOr5q3D2Zof/ka0d5FNdPwZXm3Yyib/UEd+w==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@rollup/rollup-linux-x64-musl@4.53.3':
resolution: {integrity: sha512-eoROhjcc6HbZCJr+tvVT8X4fW3/5g/WkGvvmwz/88sDtSJzO7r/blvoBDgISDiCjDRZmHpwud7h+6Q9JxFwq1Q==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@rollup/rollup-openharmony-arm64@4.53.3':
resolution: {integrity: sha512-OueLAWgrNSPGAdUdIjSWXw+u/02BRTcnfw9PN41D2vq/JSEPnJnVuBgw18VkN8wcd4fjUs+jFHVM4t9+kBSNLw==}
@@ -3615,14 +4040,96 @@ packages:
'@standard-schema/spec@1.1.0':
resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
+ '@storybook/builder-vite@10.4.6':
+ resolution: {integrity: sha512-BHBtD81HiXUiDQz/CaFynLtWmm7AFUQn8VnXuHipZ8KlnUANopa4yqdVuy/Gwz8ub254uFI5NMZsW/KlgWNgNg==}
+ peerDependencies:
+ storybook: ^10.4.6
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ '@storybook/csf-plugin@10.4.6':
+ resolution: {integrity: sha512-NILLxDqpA/JR/AazGWpsz+4fadJwRU4uhHephGtYpVOWnQA/DkJfKT6zpcJVq8+QA8A2zKMLX3GVKsXIrxjuDA==}
+ peerDependencies:
+ esbuild: '*'
+ rollup: '*'
+ storybook: ^10.4.6
+ vite: '*'
+ webpack: '*'
+ peerDependenciesMeta:
+ esbuild:
+ optional: true
+ rollup:
+ optional: true
+ vite:
+ optional: true
+ webpack:
+ optional: true
+
'@storybook/global@5.0.0':
resolution: {integrity: sha512-FcOqPAXACP0I3oJ/ws6/rrPT9WGhu915Cg8D02a9YxLo0DE9zI+a9A5gRGvmQ09fiWPukqI8ZAEoQEdWUKMQdQ==}
- '@storybook/icons@2.0.1':
- resolution: {integrity: sha512-/smVjw88yK3CKsiuR71vNgWQ9+NuY2L+e8X7IMrFjexjm6ZR8ULrV2DRkTA61aV6ryefslzHEGDInGpnNeIocg==}
+ '@storybook/icons@2.0.2':
+ resolution: {integrity: sha512-KZBCpXsshAIjczYNXR/rlxEtCUX/eAbpFNwKi8bcOomrLA4t/SyPz5RF+lVPO2oZBUE4sAkt43mfJUevQDSEEw==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
+ '@storybook/nextjs-vite@10.4.6':
+ resolution: {integrity: sha512-o8vkNqJPY0oq5qGAcwjiyZoZUsfhk7eIU1mjgtYbNoJhA1/NshU7pIaFSTfFjMRs1i43Df8hqS5JmyjP8r+bUg==}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ next: ^14.1.0 || ^15.0.0 || ^16.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.4.6
+ typescript: '*'
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ typescript:
+ optional: true
+
+ '@storybook/react-dom-shim@10.4.6':
+ resolution: {integrity: sha512-iGNmKzrq9vgl2PDrYAnZKI+yvac3Ym+lJXXuQaqlFRS23zA5MNm4EBX+rAG7WulqchoK6NaZ0KQOs2mAgEpTMg==}
peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.4.6
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+
+ '@storybook/react-vite@10.4.6':
+ resolution: {integrity: sha512-0arEQtybqGYXHbXpTot+Wv9YtG+V5Vp43QayXavPKQ20M8mpEzhyCPKd0EhqMGSC1Z1UEt0hm365WUBhI9LfKA==}
+ peerDependencies:
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.4.6
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ '@storybook/react@10.4.6':
+ resolution: {integrity: sha512-9Y7YecrVFe1/01KYjfOLxVqTg2Aq+IO6TEv6sC2U0PfD0AWCSCmQ91QqgBpN/XW4aFFWoiZNinyXMUlU8zxy2w==}
+ peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ '@types/react-dom': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
+ storybook: ^10.4.6
+ typescript: '>= 4.9.x'
+ peerDependenciesMeta:
+ '@types/react':
+ optional: true
+ '@types/react-dom':
+ optional: true
+ typescript:
+ optional: true
'@supabase/auth-js@2.86.2':
resolution: {integrity: sha512-7k8IAhgSnZuD9Zex2+ohHKY3aWGDd4ls0xlxMGl3/jPyHSSXrIYfmtJyUH0+DPd4B3psBqHC0Ev0/nZEHdW58w==}
@@ -3703,24 +4210,28 @@ packages:
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-arm64-musl@4.1.17':
resolution: {integrity: sha512-HvZLfGr42i5anKtIeQzxdkw/wPqIbpeZqe7vd3V9vI3RQxe3xU1fLjss0TjyhxWcBaipk7NYwSrwTwK1hJARMg==}
engines: {node: '>= 10'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-linux-x64-gnu@4.1.17':
resolution: {integrity: sha512-M3XZuORCGB7VPOEDH+nzpJ21XPvK5PyjlkSFkFziNHGLc5d6g3di2McAAblmaSUNl8IOmzYwLx9NsE7bplNkwQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@tailwindcss/oxide-linux-x64-musl@4.1.17':
resolution: {integrity: sha512-k7f+pf9eXLEey4pBlw+8dgfJHY4PZ5qOUFDyNf7SI6lHjQ9Zt7+NcscjpwdCEbYi6FI5c2KDTDWyf2iHcCSyyQ==}
engines: {node: '>= 10'}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@tailwindcss/oxide-wasm32-wasi@4.1.17':
resolution: {integrity: sha512-cEytGqSSoy7zK4JRWiTCx43FsKP/zGr0CsuMawhH67ONlH+T79VteQeJQRO/X7L0juEUA8ZyuYikcRBf0vsxhg==}
@@ -3792,9 +4303,24 @@ packages:
'@tybys/wasm-util@0.10.1':
resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+ '@tybys/wasm-util@0.10.2':
+ resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==}
+
'@types/aria-query@5.0.4':
resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==}
+ '@types/babel__core@7.20.5':
+ resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==}
+
+ '@types/babel__generator@7.27.0':
+ resolution: {integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==}
+
+ '@types/babel__template@7.4.4':
+ resolution: {integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==}
+
+ '@types/babel__traverse@7.28.0':
+ resolution: {integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==}
+
'@types/caseless@0.12.5':
resolution: {integrity: sha512-hWtVTC2q7hc7xZ/RLbxapMvDMgUnDvKvMOpKal4DrMyfGBUfB1oKaZlIRr6mJL+If3bAP6sV/QneGzF6tJjZDg==}
@@ -3906,6 +4432,9 @@ packages:
'@types/diff-match-patch@1.0.36':
resolution: {integrity: sha512-xFdR6tkm0MWvBfO8xXCSsinYxHcqkQUlcHeSpMC2ukzOb6lwQAfDmW+Qt0AvlGd8HpsS28qKsB+oPeJn9I39jg==}
+ '@types/doctrine@0.0.9':
+ resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==}
+
'@types/dom-to-image@2.6.7':
resolution: {integrity: sha512-me5VbCv+fcXozblWwG13krNBvuEOm6kA5xoa4RrjDJCNFOZSWR3/QLtOXimBHk1Fisq69Gx3JtOoXtg1N1tijg==}
@@ -4008,6 +4537,9 @@ packages:
'@types/resolve@1.17.1':
resolution: {integrity: sha512-yy7HuzQhj0dhGpD8RLXSZWEkLsV9ibvxvi6EiJ3bkqLAO1RGo0WbkWQiwpRlSFymTJRz0d3k5LM3kkx8ArDbLw==}
+ '@types/resolve@1.20.6':
+ resolution: {integrity: sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==}
+
'@types/stylis@4.2.5':
resolution: {integrity: sha512-1Xve+NMN7FWjY14vLoY5tL3BVEQ/n42YLwaqJIPYhotZ9uBHt87VceMwWQpzmdEt2TNXIorIFG+YeCUUW7RInw==}
@@ -4143,41 +4675,49 @@ packages:
resolution: {integrity: sha512-34gw7PjDGB9JgePJEmhEqBhWvCiiWCuXsL9hYphDF7crW7UgI05gyBAi6MF58uGcMOiOqSJ2ybEeCvHcq0BCmQ==}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-arm64-musl@1.11.1':
resolution: {integrity: sha512-RyMIx6Uf53hhOtJDIamSbTskA99sPHS96wxVE/bJtePJJtpdKGXO1wY90oRdXuYOGOTuqjT8ACccMc4K6QmT3w==}
cpu: [arm64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-linux-ppc64-gnu@1.11.1':
resolution: {integrity: sha512-D8Vae74A4/a+mZH0FbOkFJL9DSK2R6TFPC9M+jCWYia/q2einCubX10pecpDiTmkJVUH+y8K3BZClycD8nCShA==}
cpu: [ppc64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-gnu@1.11.1':
resolution: {integrity: sha512-frxL4OrzOWVVsOc96+V3aqTIQl1O2TjgExV4EKgRY09AJ9leZpEg8Ak9phadbuX0BA4k8U5qtvMSQQGGmaJqcQ==}
cpu: [riscv64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-riscv64-musl@1.11.1':
resolution: {integrity: sha512-mJ5vuDaIZ+l/acv01sHoXfpnyrNKOk/3aDoEdLO/Xtn9HuZlDD6jKxHlkN8ZhWyLJsRBxfv9GYM2utQ1SChKew==}
cpu: [riscv64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-linux-s390x-gnu@1.11.1':
resolution: {integrity: sha512-kELo8ebBVtb9sA7rMe1Cph4QHreByhaZ2QEADd9NzIQsYNQpt9UkM9iqr2lhGr5afh885d/cB5QeTXSbZHTYPg==}
cpu: [s390x]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-x64-gnu@1.11.1':
resolution: {integrity: sha512-C3ZAHugKgovV5YvAMsxhq0gtXuwESUKc5MhEtjBpLoHPLYM+iuwSj3lflFwK3DPm68660rZ7G8BMcwSro7hD5w==}
cpu: [x64]
os: [linux]
+ libc: [glibc]
'@unrs/resolver-binding-linux-x64-musl@1.11.1':
resolution: {integrity: sha512-rV0YSoyhK2nZ4vEswT/QwqzqQXw5I6CjoaYMOX0TqBlWhojUf8P94mvI7nuJTeaCkkds3QE4+zS8Ko+GdXuZtA==}
cpu: [x64]
os: [linux]
+ libc: [musl]
'@unrs/resolver-binding-wasm32-wasi@1.11.1':
resolution: {integrity: sha512-5u4RkfxJm+Ng7IWgkzi3qrFOvLvQYnPBmjmZQ8+szTK/b31fQCnleNl1GgEt7nIsZRIf5PLhPwT0WM+q45x/UQ==}
@@ -4508,6 +5048,9 @@ packages:
'@webassemblyjs/wast-printer@1.14.1':
resolution: {integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==}
+ '@webcontainer/env@1.1.1':
+ resolution: {integrity: sha512-6aN99yL695Hi9SuIk1oC88l9o0gmxL1nGWWQ/kNy81HigJ0FoaoTXpytCj6ItzgyCEwA9kF1wixsTuv5cjsgng==}
+
'@xtuc/ieee754@1.2.0':
resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==}
@@ -4859,6 +5402,10 @@ packages:
balanced-match@1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ balanced-match@4.0.4:
+ resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==}
+ engines: {node: 18 || 20 || >=22}
+
base-x@3.0.11:
resolution: {integrity: sha512-xz7wQ8xDhdyP7tQxwdteLYeFfS68tSMNCZ/Y37WJ4bhGfKPpqEIlmIyueQHqOyoPhE6xNUqjzRr8ra0eF9VRvA==}
@@ -4919,6 +5466,10 @@ packages:
brace-expansion@2.0.2:
resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==}
+ brace-expansion@5.0.6:
+ resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==}
+ engines: {node: 18 || 20 || >=22}
+
braces@3.0.3:
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
@@ -4951,6 +5502,10 @@ packages:
resolution: {integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==}
engines: {node: '>=6'}
+ bundle-name@4.1.0:
+ resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==}
+ engines: {node: '>=18'}
+
bytes@3.1.2:
resolution: {integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==}
engines: {node: '>= 0.8'}
@@ -5479,10 +6034,22 @@ packages:
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
engines: {node: '>=0.10.0'}
+ default-browser-id@5.0.1:
+ resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==}
+ engines: {node: '>=18'}
+
+ default-browser@5.5.0:
+ resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==}
+ engines: {node: '>=18'}
+
define-data-property@1.1.4:
resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==}
engines: {node: '>= 0.4'}
+ define-lazy-prop@3.0.0:
+ resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==}
+ engines: {node: '>=12'}
+
define-properties@1.2.1:
resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==}
engines: {node: '>= 0.4'}
@@ -5629,6 +6196,10 @@ packages:
resolution: {integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==}
engines: {node: '>= 4'}
+ empathic@2.0.1:
+ resolution: {integrity: sha512-YGRs8knHhKHVShLkFET/rWAU8kmHbOV5LwN938RHI0pljAJ1Gf6SzXsSmRaEzcXTtOOmVqJ5+WtQPL5uigY50Q==}
+ engines: {node: '>=14'}
+
encode-utf8@1.0.3:
resolution: {integrity: sha512-ucAnuBEhUK4boH2HjVYG5Q2mQyPorvv0u/ocS+zhdw0S8AlHYY+GOFhP1Gio5z4icpP2ivFSvhtFjQi8+T9ppw==}
@@ -5862,6 +6433,9 @@ packages:
estree-walker@1.0.1:
resolution: {integrity: sha512-1fMXF3YP4pZZVozF8j/ZLfvnR8NSIljt56UhbZ5PeeDmmGHpgpdwQt7ITlGvYaQukCvuBRMLEiKiYC+oeIg4cg==}
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
@@ -6263,6 +6837,10 @@ packages:
resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==}
hasBin: true
+ glob@13.0.6:
+ resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==}
+ engines: {node: 18 || 20 || >=22}
+
glob@7.2.3:
resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==}
deprecated: Glob versions prior to v9 are no longer supported
@@ -6283,6 +6861,9 @@ packages:
resolution: {integrity: sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==}
engines: {node: '>=0.10.0'}
+ globrex@0.1.2:
+ resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==}
+
google-auth-library@10.5.0:
resolution: {integrity: sha512-7ABviyMOlX5hIVD60YOfHw4/CxOfBhyduaYB+wbFWCWoni4N7SLcV46hrVRktuBbZjFC9ONyqamZITN7q3n32w==}
engines: {node: '>=18'}
@@ -6509,6 +7090,11 @@ packages:
resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==}
engines: {node: '>= 4'}
+ image-size@2.0.2:
+ resolution: {integrity: sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==}
+ engines: {node: '>=16.x'}
+ hasBin: true
+
import-fresh@3.3.1:
resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==}
engines: {node: '>=6'}
@@ -6619,6 +7205,11 @@ packages:
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
+ is-docker@3.0.0:
+ resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==}
+ engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ hasBin: true
+
is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
@@ -6645,6 +7236,11 @@ packages:
is-hexadecimal@2.0.1:
resolution: {integrity: sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==}
+ is-inside-container@1.0.0:
+ resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==}
+ engines: {node: '>=14.16'}
+ hasBin: true
+
is-map@2.0.3:
resolution: {integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==}
engines: {node: '>= 0.4'}
@@ -6749,6 +7345,10 @@ packages:
resolution: {integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==}
engines: {node: '>= 0.4'}
+ is-wsl@3.1.1:
+ resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==}
+ engines: {node: '>=16'}
+
isarray@1.0.0:
resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==}
@@ -6991,53 +7591,115 @@ packages:
cpu: [arm64]
os: [android]
+ lightningcss-android-arm64@1.32.0:
+ resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [android]
+
lightningcss-darwin-arm64@1.30.2:
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [darwin]
+ lightningcss-darwin-arm64@1.32.0:
+ resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [darwin]
+
lightningcss-darwin-x64@1.30.2:
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [darwin]
+ lightningcss-darwin-x64@1.32.0:
+ resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [darwin]
+
lightningcss-freebsd-x64@1.30.2:
resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [freebsd]
+ lightningcss-freebsd-x64@1.32.0:
+ resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [freebsd]
+
lightningcss-linux-arm-gnueabihf@1.30.2:
resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
engines: {node: '>= 12.0.0'}
cpu: [arm]
os: [linux]
- lightningcss-linux-arm64-gnu@1.30.2:
- resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm]
+ os: [linux]
+
+ lightningcss-linux-arm64-gnu@1.30.2:
+ resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-arm64-gnu@1.32.0:
+ resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [glibc]
lightningcss-linux-arm64-musl@1.30.2:
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
engines: {node: '>= 12.0.0'}
cpu: [arm64]
os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-arm64-musl@1.32.0:
+ resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [linux]
+ libc: [musl]
lightningcss-linux-x64-gnu@1.30.2:
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [glibc]
+
+ lightningcss-linux-x64-gnu@1.32.0:
+ resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [glibc]
lightningcss-linux-x64-musl@1.30.2:
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [linux]
+ libc: [musl]
+
+ lightningcss-linux-x64-musl@1.32.0:
+ resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [linux]
+ libc: [musl]
lightningcss-win32-arm64-msvc@1.30.2:
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
@@ -7045,16 +7707,32 @@ packages:
cpu: [arm64]
os: [win32]
+ lightningcss-win32-arm64-msvc@1.32.0:
+ resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [arm64]
+ os: [win32]
+
lightningcss-win32-x64-msvc@1.30.2:
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
engines: {node: '>= 12.0.0'}
cpu: [x64]
os: [win32]
+ lightningcss-win32-x64-msvc@1.32.0:
+ resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==}
+ engines: {node: '>= 12.0.0'}
+ cpu: [x64]
+ os: [win32]
+
lightningcss@1.30.2:
resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
engines: {node: '>= 12.0.0'}
+ lightningcss@1.32.0:
+ resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==}
+ engines: {node: '>= 12.0.0'}
+
lit-element@4.2.1:
resolution: {integrity: sha512-WGAWRGzirAgyphK2urmYOV72tlvnxw7YfyLDgQ+OZnM9vQQBQnumQ7jUJe6unEzwGU3ahFOjuz1iz1jjrpCPuw==}
@@ -7146,6 +7824,10 @@ packages:
lru-cache@10.4.3:
resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==}
+ lru-cache@11.5.1:
+ resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==}
+ engines: {node: 20 || >=22}
+
lru-cache@5.1.1:
resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==}
@@ -7430,6 +8112,10 @@ packages:
minimalistic-assert@1.0.1:
resolution: {integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==}
+ minimatch@10.2.5:
+ resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==}
+ engines: {node: 18 || 20 || >=22}
+
minimatch@3.1.2:
resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
@@ -7448,6 +8134,10 @@ packages:
resolution: {integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==}
engines: {node: '>=16 || 14 >=14.17'}
+ minipass@7.1.3:
+ resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==}
+ engines: {node: '>=16 || 14 >=14.17'}
+
mipd@0.0.7:
resolution: {integrity: sha512-aAPZPNDQ3uMTdKbuO2YmAw2TxLHO0moa4YKAyETM/DTj5FloZo+a+8tU+iv4GmW+sOxKLSRwcSFuczk+Cpt6fg==}
peerDependencies:
@@ -7459,6 +8149,9 @@ packages:
mlly@1.8.0:
resolution: {integrity: sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==}
+ module-alias@2.3.4:
+ resolution: {integrity: sha512-bOclZt8hkpuGgSSoG07PKmvzTizROilUTvLNyrMqvlC9snhs7y7GzjNWAVbISIOlhCP1T14rH1PDAV9iNyBq/w==}
+
motion-dom@11.18.1:
resolution: {integrity: sha512-g76KvA001z+atjfxczdRtw/RXOM3OMSdd1f4DL77qCTF/+avrRJiawSG4yDibEQ215sr9kpinSlX2pCTJ9zbhw==}
@@ -7506,6 +8199,11 @@ packages:
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ nanoid@3.3.15:
+ resolution: {integrity: sha512-y7Wygv/7mEOvxTuEQDB8StXdMRBWf1kR/tlhAzBRUFkB2jfcLOAxO/SHmOO2zgz1pVgK29/kyupn059/bCHdjA==}
+ engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
+ hasBin: true
+
napi-postinstall@0.3.4:
resolution: {integrity: sha512-PHI5f1O0EP5xJ9gQmFGMS6IZcrVvTjpXjz7Na41gTE7eE2hK11lg04CECCYEEjdc17EV4DO+fkGEtt7TpTaTiQ==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -7668,6 +8366,10 @@ packages:
oniguruma-to-es@4.3.4:
resolution: {integrity: sha512-3VhUGN3w2eYxnTzHn+ikMI+fp/96KoRSVK9/kMTcFqj1NRDh2IhQCKvYxDnWePKRXY/AqH+Fuiyb7VHSzBjHfA==}
+ open@10.2.0:
+ resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==}
+ engines: {node: '>=18'}
+
openai@4.104.0:
resolution: {integrity: sha512-p99EFNsA/yX6UhVO93f5kJsDRLAg+CTA2RBqdHK4RtK8u5IJw32Hyb2dTGKbnnFmnuoBv5r7Z2CURI9sGZpSuA==}
hasBin: true
@@ -7774,6 +8476,13 @@ packages:
typescript:
optional: true
+ oxc-parser@0.127.0:
+ resolution: {integrity: sha512-bkgD4qHlN7WxLdX8bLXdaU54TtQtAIg/ZBAfm0aje/mo3MRDo3P0hZSgr4U7O3xfX+fQmR5AP04JS/TGcZLcFA==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+
+ oxc-resolver@11.21.3:
+ resolution: {integrity: sha512-2Mx3fKQz7+xgrBONjsxOgCGtMHOn38/HxMzW1I5efwXB5a4lRN0Vp40gYUJFBWJslcrvwoofTrqoTnLbwTd3pA==}
+
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
@@ -7855,6 +8564,10 @@ packages:
resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==}
engines: {node: '>=16 || 14 >=14.18'}
+ path-scurry@2.0.2:
+ resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==}
+ engines: {node: 18 || 20 || >=22}
+
path-to-regexp@8.3.0:
resolution: {integrity: sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==}
@@ -7883,6 +8596,10 @@ packages:
resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==}
engines: {node: '>=12'}
+ picomatch@4.0.4:
+ resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==}
+ engines: {node: '>=12'}
+
pify@2.3.0:
resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
engines: {node: '>=0.10.0'}
@@ -8035,6 +8752,10 @@ packages:
resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.5.15:
+ resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==}
+ engines: {node: ^10 || ^12 || >=14}
+
postcss@8.5.6:
resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==}
engines: {node: ^10 || ^12 || >=14}
@@ -8175,6 +8896,15 @@ packages:
react: '>= 0.14.0'
react-dom: '>= 0.14.0'
+ react-docgen-typescript@2.4.0:
+ resolution: {integrity: sha512-ZtAp5XTO5HRzQctjPU0ybY0RRCQO19X/8fxn3w7y2VVTUbGHDKULPTL4ky3vB05euSgG5NpALhEhDPvQ56wvXg==}
+ peerDependencies:
+ typescript: '>= 4.3.x'
+
+ react-docgen@8.0.3:
+ resolution: {integrity: sha512-aEZ9qP+/M+58x2qgfSFEWH1BxLyHe5+qkLNJOZQb5iGS017jpbRnoKhNRrXPeA6RfBrZO5wZrT9DMC1UqE1f1w==}
+ engines: {node: ^20.9.0 || >=22}
+
react-dom@19.2.1:
resolution: {integrity: sha512-ibrK8llX2a4eOskq1mXKu/TGZj9qzomO+sNfO98M6d9zIPOEhlBkMkBUBLd1vgS0gQsLDBzA+8jJBVXDnfHmJg==}
peerDependencies:
@@ -8471,6 +9201,11 @@ packages:
robust-predicates@3.0.2:
resolution: {integrity: sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==}
+ rolldown@1.0.3:
+ resolution: {integrity: sha512-i00lAJ2ks1BYr7rjNjKC7BcqAS7nVfiT3QX1SI5aY+AFHblCmaUf9OE9dbdzDvW6dJxbi2ZCZiy9v3CcwOiX3g==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+
rollup-plugin-terser@7.0.2:
resolution: {integrity: sha512-w3iIaU4OxcF52UUXiZNsNeuXIMDvFrr+ZXK6bFZ0Q60qyVfq4uLptoS4bbq3paG3x216eQllFZX7zt6TIImguQ==}
deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
@@ -8497,6 +9232,10 @@ packages:
rpc-websockets@9.3.2:
resolution: {integrity: sha512-VuW2xJDnl1k8n8kjbdRSWawPRkwaVqUQNjE1TdeTawf0y0abGhtVJFTXCLfgpgGDBkO/Fj6kny8Dc/nvOW78MA==}
+ run-applescript@7.1.0:
+ resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==}
+ engines: {node: '>=18'}
+
run-parallel@1.2.0:
resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==}
@@ -8748,14 +9487,20 @@ packages:
resolution: {integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==}
engines: {node: '>= 0.4'}
- storybook@10.1.4:
- resolution: {integrity: sha512-FrBjm8I8O+pYEOPHcdW9xWwgXSZxte7lza9q2lN3jFN4vuW79m5j0OnTQeR8z9MmIbBTvkIpp3yMBebl53Yt5Q==}
+ storybook@10.4.6:
+ resolution: {integrity: sha512-6wkA6LxfDSSilloITsrFOJfsnw0mDUP2h8Ls+lRt8oRsudtz2RWFhLv+Toiwg6NW7hUpdTDc2hzR7DztJid6+A==}
hasBin: true
peerDependencies:
+ '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
prettier: ^2 || ^3
+ vite-plus: ^0.1.15
peerDependenciesMeta:
+ '@types/react':
+ optional: true
prettier:
optional: true
+ vite-plus:
+ optional: true
stream-chain@2.2.5:
resolution: {integrity: sha512-1TJmBx6aSWqZ4tx7aTpBDXK0/e2hhcNSTV8+CbFJtDjbb+I1mZ8lHit0Grw9GRT+6JbIrrDd8esncgBi8aBXGA==}
@@ -8839,6 +9584,10 @@ packages:
resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==}
engines: {node: '>=8'}
+ strip-indent@4.1.1:
+ resolution: {integrity: sha512-SlyRoSkdh1dYP0PzclLE7r0M9sgbFKKMFXpFRUMNuKhQSbC6VQIGzq3E0qsfvGJaUFJPGv6Ws1NZ/haTAjfbMA==}
+ engines: {node: '>=12'}
+
strip-json-comments@3.1.1:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
@@ -9007,6 +9756,10 @@ packages:
resolution: {integrity: sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==}
engines: {node: '>=12.0.0'}
+ tinyglobby@0.2.17:
+ resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==}
+ engines: {node: '>=12.0.0'}
+
tinyrainbow@2.0.0:
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
engines: {node: '>=14.0.0'}
@@ -9076,9 +9829,24 @@ packages:
resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==}
engines: {node: '>=6.10'}
+ tsconfck@3.1.6:
+ resolution: {integrity: sha512-ks6Vjr/jEw0P1gmOVwutM3B7fWxoWBL2KRDb1JfqGVawBmO5UsvmWOQFGHBPl5yxYz4eERr19E6L7NMv+Fej4w==}
+ engines: {node: ^18 || >=20}
+ deprecated: unmaintained
+ hasBin: true
+ peerDependencies:
+ typescript: ^5.0.0
+ peerDependenciesMeta:
+ typescript:
+ optional: true
+
tsconfig-paths@3.15.0:
resolution: {integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==}
+ tsconfig-paths@4.2.0:
+ resolution: {integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==}
+ engines: {node: '>=6'}
+
tslib@1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
@@ -9234,6 +10002,10 @@ packages:
resolution: {integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==}
engines: {node: '>= 0.8'}
+ unplugin@2.3.11:
+ resolution: {integrity: sha512-5uKD0nqiYVzlmCRs01Fhs2BdkEgBS3SAVP6ndrBsuK42iC2+JHyxM05Rm9G8+5mkmRtzMZGY8Ct5+mliZxU/Ww==}
+ engines: {node: '>=18.12.0'}
+
unrs-resolver@1.11.1:
resolution: {integrity: sha512-bSjt9pjaEBnNiGgc9rUiHGKv5l4/TGzDmYw3RhnkJGtLhbnnA/5qJj7x3dNDCRx/PJxu774LlH8lCOlB4hEfKg==}
@@ -9485,6 +10257,21 @@ packages:
typescript:
optional: true
+ vite-plugin-storybook-nextjs@3.3.0:
+ resolution: {integrity: sha512-46DqDN/2Jdst9HdnKaJctdkZJAzwatulgiapSOFOmnZhxwnHrrIFo222ylEWmvTi8W8k2xhj8vfuBbqkWgctiQ==}
+ peerDependencies:
+ next: ^14.1.0 || ^15.0.0 || ^16.0.0
+ storybook: ^0.0.0-0 || ^9.0.0 || ^10.0.0 || ^10.0.0-0 || ^10.1.0-0 || ^10.2.0-0 || ^10.3.0-0 || ^10.4.0-0 || ^10.5.0-0 || ^10.6.0-0
+ vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0
+
+ vite-tsconfig-paths@5.1.4:
+ resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==}
+ peerDependencies:
+ vite: '*'
+ peerDependenciesMeta:
+ vite:
+ optional: true
+
vite@7.2.6:
resolution: {integrity: sha512-tI2l/nFHC5rLh7+5+o7QjKjSR04ivXDF4jcgV0f/bTQ+OJiITy5S6gaynVsEM+7RqzufMnVbIon6Sr5x1SDYaQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -9525,6 +10312,49 @@ packages:
yaml:
optional: true
+ vite@8.0.16:
+ resolution: {integrity: sha512-h9bXPmJichP5fLmVQo3PyaGSDE2n3aPuomeAlVRm0JLmt4rY6zmPKd59HYI4LNW8oTK7tlTsuC7l/m7awx9Jcw==}
+ engines: {node: ^20.19.0 || >=22.12.0}
+ hasBin: true
+ peerDependencies:
+ '@types/node': ^20.19.0 || >=22.12.0
+ '@vitejs/devtools': ^0.1.18
+ esbuild: ^0.27.0 || ^0.28.0
+ jiti: '>=1.21.0'
+ less: ^4.0.0
+ sass: ^1.70.0
+ sass-embedded: ^1.70.0
+ stylus: '>=0.54.8'
+ sugarss: ^5.0.0
+ terser: ^5.16.0
+ tsx: ^4.8.1
+ yaml: ^2.4.2
+ peerDependenciesMeta:
+ '@types/node':
+ optional: true
+ '@vitejs/devtools':
+ optional: true
+ esbuild:
+ optional: true
+ jiti:
+ optional: true
+ less:
+ optional: true
+ sass:
+ optional: true
+ sass-embedded:
+ optional: true
+ stylus:
+ optional: true
+ sugarss:
+ optional: true
+ terser:
+ optional: true
+ tsx:
+ optional: true
+ yaml:
+ optional: true
+
vitest@4.0.15:
resolution: {integrity: sha512-n1RxDp8UJm6N0IbJLQo+yzLZ2sQCDyl1o0LeugbPWf8+8Fttp29GghsQBjYJVmWq3gBFfe9Hs1spR44vovn2wA==}
engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0}
@@ -9621,6 +10451,9 @@ packages:
resolution: {integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==}
engines: {node: '>=10.13.0'}
+ webpack-virtual-modules@0.6.2:
+ resolution: {integrity: sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==}
+
webpack@5.103.0:
resolution: {integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==}
engines: {node: '>=10.13.0'}
@@ -9814,6 +10647,10 @@ packages:
utf-8-validate:
optional: true
+ wsl-utils@0.1.0:
+ resolution: {integrity: sha512-h3Fbisa2nKGPxCpm89Hk33lBLsnaGBvctQopaBSOW/uIs6FTe1ATyAnKFJrzVs9vpGdsTe73WF3V4lIsk4Gacw==}
+ engines: {node: '>=18'}
+
x402-mcp@0.1.1:
resolution: {integrity: sha512-oQVpFsUE4HwCU5+c0e+nKI3afuNBoQKWG3mBBp/5MhFwzPESQI9dfhb8oAjVmRWx+AexRHmFBo04uyKMuIw5XQ==}
peerDependencies:
@@ -10856,9 +11693,9 @@ snapshots:
- utf-8-validate
- zod
- '@base-org/account@2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
+ '@base-org/account@2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
dependencies:
- '@coinbase/cdp-sdk': 1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@coinbase/cdp-sdk': 1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@noble/hashes': 1.4.0
clsx: 1.2.1
eventemitter3: 5.0.1
@@ -10953,11 +11790,11 @@ snapshots:
'@chevrotain/utils@11.0.3': {}
- '@coinbase/cdp-sdk@1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
+ '@coinbase/cdp-sdk@1.39.0(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
dependencies:
- '@solana-program/system': 0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
- '@solana-program/token': 0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
- '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana-program/system': 0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
+ '@solana-program/token': 0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))
+ '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana/web3.js': 1.98.4(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)
abitype: 1.0.6(typescript@5.9.3)(zod@3.25.76)
axios: 1.13.2
@@ -10976,7 +11813,7 @@ snapshots:
- utf-8-validate
- ws
- '@coinbase/onchainkit@0.38.19(@farcaster/miniapp-sdk@0.2.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
+ '@coinbase/onchainkit@0.38.19(@farcaster/miniapp-sdk@0.2.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
dependencies:
'@farcaster/frame-sdk': 0.1.12(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
'@farcaster/miniapp-wagmi-connector': 1.1.0(@farcaster/miniapp-sdk@0.2.1(bufferutil@4.0.9)(encoding@0.1.13)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
@@ -10990,7 +11827,7 @@ snapshots:
react-dom: 19.2.1(react@19.2.1)
tailwind-merge: 2.6.0
viem: 2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
- wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
transitivePeerDependencies:
- '@azure/app-configuration'
- '@azure/cosmos'
@@ -11073,13 +11910,13 @@ snapshots:
'@composio/client@0.1.0-alpha.40': {}
- '@composio/core@0.2.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
+ '@composio/core@0.2.6(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
dependencies:
'@composio/client': 0.1.0-alpha.40
'@composio/json-schema-to-zod': 0.1.19(zod@3.25.76)
'@types/json-schema': 7.0.15
chalk: 4.1.2
- openai: 5.23.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ openai: 5.23.2(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
pusher-js: 8.4.0
semver: 7.7.3
uuid: 13.0.0
@@ -11092,9 +11929,9 @@ snapshots:
dependencies:
zod: 3.25.76
- '@composio/vercel@0.2.18(@composio/core@0.2.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ai@6.0.165(zod@3.25.76))':
+ '@composio/vercel@0.2.18(@composio/core@0.2.6(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))(ai@6.0.165(zod@3.25.76))':
dependencies:
- '@composio/core': 0.2.6(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ '@composio/core': 0.2.6(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
ai: 6.0.165(zod@3.25.76)
'@crawlee/types@3.15.3':
@@ -11136,22 +11973,65 @@ snapshots:
dependencies:
'@noble/ciphers': 1.3.0
+ '@emnapi/core@1.10.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/core@1.11.0':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.2
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/core@1.7.1':
dependencies:
'@emnapi/wasi-threads': 1.1.0
tslib: 2.8.1
optional: true
+ '@emnapi/core@1.9.2':
+ dependencies:
+ '@emnapi/wasi-threads': 1.2.1
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.10.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.11.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/runtime@1.7.1':
dependencies:
tslib: 2.8.1
optional: true
+ '@emnapi/runtime@1.9.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emnapi/wasi-threads@1.1.0':
dependencies:
tslib: 2.8.1
optional: true
+ '@emnapi/wasi-threads@1.2.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.2.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@emotion/is-prop-valid@1.2.2':
dependencies:
'@emotion/memoize': 0.8.1
@@ -11664,6 +12544,14 @@ snapshots:
wrap-ansi: 8.1.0
wrap-ansi-cjs: wrap-ansi@7.0.0
+ '@joshwooding/vite-plugin-react-docgen-typescript@0.7.0(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))':
+ dependencies:
+ glob: 13.0.6
+ react-docgen-typescript: 2.4.0(typescript@5.9.3)
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ optionalDependencies:
+ typescript: 5.9.3
+
'@jridgewell/gen-mapping@0.3.13':
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
@@ -11921,6 +12809,29 @@ snapshots:
'@tybys/wasm-util': 0.10.1
optional: true
+ '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)':
+ dependencies:
+ '@emnapi/core': 1.11.0
+ '@emnapi/runtime': 1.11.0
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@napi-rs/wasm-runtime@1.1.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)':
+ dependencies:
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.9.2
+ '@tybys/wasm-util': 0.10.2
+ optional: true
+
+ '@next/env@16.0.0': {}
+
'@next/env@16.0.10': {}
'@next/eslint-plugin-next@14.2.13':
@@ -12003,6 +12914,135 @@ snapshots:
'@opentelemetry/api@1.9.0': {}
+ '@oxc-parser/binding-android-arm-eabi@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-android-arm64@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-arm64@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-darwin-x64@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-freebsd-x64@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-gnueabihf@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm-musleabihf@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-gnu@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-arm64-musl@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-ppc64-gnu@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-gnu@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-riscv64-musl@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-s390x-gnu@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-gnu@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-linux-x64-musl@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-openharmony-arm64@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-wasm32-wasi@0.127.0':
+ dependencies:
+ '@emnapi/core': 1.9.2
+ '@emnapi/runtime': 1.9.2
+ '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.9.2)(@emnapi/runtime@1.9.2)
+ optional: true
+
+ '@oxc-parser/binding-win32-arm64-msvc@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-ia32-msvc@0.127.0':
+ optional: true
+
+ '@oxc-parser/binding-win32-x64-msvc@0.127.0':
+ optional: true
+
+ '@oxc-project/types@0.127.0': {}
+
+ '@oxc-project/types@0.133.0': {}
+
+ '@oxc-resolver/binding-android-arm-eabi@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-android-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-x64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-freebsd-x64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-musl@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-openharmony-arm64@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-wasm32-wasi@11.21.3':
+ dependencies:
+ '@emnapi/core': 1.11.0
+ '@emnapi/runtime': 1.11.0
+ '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.11.0)(@emnapi/runtime@1.11.0)
+ optional: true
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.21.3':
+ optional: true
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.21.3':
+ optional: true
+
'@paulmillr/qr@0.2.1': {}
'@phosphor-icons/webcomponents@2.1.5':
@@ -12061,7 +13101,7 @@ snapshots:
'@privy-io/popup@0.0.4': {}
- '@privy-io/react-auth@3.31.0(@solana-program/system@0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
+ '@privy-io/react-auth@3.31.0(@solana-program/system@0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)))(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)':
dependencies:
'@base-org/account': 1.1.1(@types/react@18.3.27)(bufferutil@4.0.9)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(zod@3.25.76)
'@coinbase/wallet-sdk': 4.3.2
@@ -12103,7 +13143,7 @@ snapshots:
stylis: 4.3.6
tinycolor2: 1.6.0
viem: 2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
- x402: 0.7.3(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ x402: 0.7.3(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
zustand: 5.0.9(@types/react@18.3.27)(react@19.2.1)(use-sync-external-store@1.4.0(react@19.2.1))
optionalDependencies:
'@solana-program/system': 0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))
@@ -13232,12 +14272,65 @@ snapshots:
- utf-8-validate
- zod
- '@rollup/plugin-babel@5.3.1(@babel/core@7.28.5)(rollup@2.79.2)':
+ '@rolldown/binding-android-arm64@1.0.3':
+ optional: true
+
+ '@rolldown/binding-darwin-arm64@1.0.3':
+ optional: true
+
+ '@rolldown/binding-darwin-x64@1.0.3':
+ optional: true
+
+ '@rolldown/binding-freebsd-x64@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-arm-gnueabihf@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-gnu@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-arm64-musl@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-ppc64-gnu@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-s390x-gnu@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-x64-gnu@1.0.3':
+ optional: true
+
+ '@rolldown/binding-linux-x64-musl@1.0.3':
+ optional: true
+
+ '@rolldown/binding-openharmony-arm64@1.0.3':
+ optional: true
+
+ '@rolldown/binding-wasm32-wasi@1.0.3':
+ dependencies:
+ '@emnapi/core': 1.10.0
+ '@emnapi/runtime': 1.10.0
+ '@napi-rs/wasm-runtime': 1.1.5(@emnapi/core@1.10.0)(@emnapi/runtime@1.10.0)
+ optional: true
+
+ '@rolldown/binding-win32-arm64-msvc@1.0.3':
+ optional: true
+
+ '@rolldown/binding-win32-x64-msvc@1.0.3':
+ optional: true
+
+ '@rolldown/pluginutils@1.0.1': {}
+
+ '@rollup/plugin-babel@5.3.1(@babel/core@7.28.5)(@types/babel__core@7.20.5)(rollup@2.79.2)':
dependencies:
'@babel/core': 7.28.5
'@babel/helper-module-imports': 7.27.1
'@rollup/pluginutils': 3.1.0(rollup@2.79.2)
rollup: 2.79.2
+ optionalDependencies:
+ '@types/babel__core': 7.20.5
transitivePeerDependencies:
- supports-color
@@ -13264,6 +14357,14 @@ snapshots:
picomatch: 2.3.1
rollup: 2.79.2
+ '@rollup/pluginutils@5.4.0(rollup@2.79.2)':
+ dependencies:
+ '@types/estree': 1.0.8
+ estree-walker: 2.0.2
+ picomatch: 4.0.3
+ optionalDependencies:
+ rollup: 2.79.2
+
'@rollup/rollup-android-arm-eabi@4.53.3':
optional: true
@@ -13444,9 +14545,9 @@ snapshots:
dependencies:
'@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
- '@solana-program/system@0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))':
+ '@solana-program/system@0.8.1(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))':
dependencies:
- '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana-program/system@0.8.1(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))':
dependencies:
@@ -13458,9 +14559,9 @@ snapshots:
'@solana/kit': 5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10)
'@solana/sysvars': 5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
- '@solana-program/token@0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))':
+ '@solana-program/token@0.6.0(@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)))':
dependencies:
- '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/kit': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana-program/token@0.9.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))':
dependencies:
@@ -13714,7 +14815,7 @@ snapshots:
transitivePeerDependencies:
- fastestsmallesttextencoderdecoder
- '@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
+ '@solana/kit@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
dependencies:
'@solana/accounts': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
@@ -13728,11 +14829,11 @@ snapshots:
'@solana/rpc': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/rpc-parsed-types': 3.0.3(typescript@5.9.3)
'@solana/rpc-spec-types': 3.0.3(typescript@5.9.3)
- '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/signers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/sysvars': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
- '@solana/transaction-confirmation': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/transaction-confirmation': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
typescript: 5.9.3
@@ -13937,14 +15038,14 @@ snapshots:
transitivePeerDependencies:
- fastestsmallesttextencoderdecoder
- '@solana/rpc-subscriptions-channel-websocket@3.0.3(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
+ '@solana/rpc-subscriptions-channel-websocket@3.0.3(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
dependencies:
'@solana/errors': 3.0.3(typescript@5.9.3)
'@solana/functional': 3.0.3(typescript@5.9.3)
'@solana/rpc-subscriptions-spec': 3.0.3(typescript@5.9.3)
'@solana/subscribable': 3.0.3(typescript@5.9.3)
typescript: 5.9.3
- ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
'@solana/rpc-subscriptions-channel-websocket@5.5.1(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)':
dependencies:
@@ -13976,7 +15077,7 @@ snapshots:
optionalDependencies:
typescript: 5.9.3
- '@solana/rpc-subscriptions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
+ '@solana/rpc-subscriptions@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
dependencies:
'@solana/errors': 3.0.3(typescript@5.9.3)
'@solana/fast-stable-stringify': 3.0.3(typescript@5.9.3)
@@ -13984,7 +15085,7 @@ snapshots:
'@solana/promises': 3.0.3(typescript@5.9.3)
'@solana/rpc-spec-types': 3.0.3(typescript@5.9.3)
'@solana/rpc-subscriptions-api': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
- '@solana/rpc-subscriptions-channel-websocket': 3.0.3(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/rpc-subscriptions-channel-websocket': 3.0.3(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana/rpc-subscriptions-spec': 3.0.3(typescript@5.9.3)
'@solana/rpc-transformers': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
@@ -14172,7 +15273,7 @@ snapshots:
transitivePeerDependencies:
- fastestsmallesttextencoderdecoder
- '@solana/transaction-confirmation@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
+ '@solana/transaction-confirmation@3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))':
dependencies:
'@solana/addresses': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/codecs-strings': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
@@ -14180,7 +15281,7 @@ snapshots:
'@solana/keys': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/promises': 3.0.3(typescript@5.9.3)
'@solana/rpc': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
- '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ '@solana/rpc-subscriptions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
'@solana/rpc-types': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/transaction-messages': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
'@solana/transactions': 3.0.3(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)
@@ -14308,12 +15409,106 @@ snapshots:
'@standard-schema/spec@1.1.0': {}
+ '@storybook/builder-vite@10.4.6(esbuild@0.27.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))':
+ dependencies:
+ '@storybook/csf-plugin': 10.4.6(esbuild@0.27.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ ts-dedent: 2.2.0
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - esbuild
+ - rollup
+ - webpack
+
+ '@storybook/csf-plugin@10.4.6(esbuild@0.27.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))':
+ dependencies:
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ unplugin: 2.3.11
+ optionalDependencies:
+ esbuild: 0.27.1
+ rollup: 2.79.2
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ webpack: 5.103.0(esbuild@0.27.1)
+
'@storybook/global@5.0.0': {}
- '@storybook/icons@2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ '@storybook/icons@2.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)':
+ dependencies:
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+
+ '@storybook/nextjs-vite@10.4.6(@babel/core@7.28.5)(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(esbuild@0.27.1)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))':
+ dependencies:
+ '@storybook/builder-vite': 10.4.6(esbuild@0.27.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))
+ '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)
+ '@storybook/react-vite': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(esbuild@0.27.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))
+ next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ styled-jsx: 5.1.6(@babel/core@7.28.5)(react@19.2.1)
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ vite-plugin-storybook-nextjs: 3.3.0(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))
+ optionalDependencies:
+ '@types/react': 18.3.27
+ '@types/react-dom': 18.3.7(@types/react@18.3.27)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - '@babel/core'
+ - babel-plugin-macros
+ - esbuild
+ - rollup
+ - supports-color
+ - webpack
+
+ '@storybook/react-dom-shim@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))':
+ dependencies:
+ react: 19.2.1
+ react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ '@types/react': 18.3.27
+ '@types/react-dom': 18.3.7(@types/react@18.3.27)
+
+ '@storybook/react-vite@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(esbuild@0.27.1)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))':
+ dependencies:
+ '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))
+ '@rollup/pluginutils': 5.4.0(rollup@2.79.2)
+ '@storybook/builder-vite': 10.4.6(esbuild@0.27.1)(rollup@2.79.2)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(webpack@5.103.0(esbuild@0.27.1))
+ '@storybook/react': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)
+ empathic: 2.0.1
+ magic-string: 0.30.21
+ react: 19.2.1
+ react-docgen: 8.0.3
+ react-dom: 19.2.1(react@19.2.1)
+ resolve: 1.22.11
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ tsconfig-paths: 4.2.0
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - '@types/react'
+ - '@types/react-dom'
+ - esbuild
+ - rollup
+ - supports-color
+ - typescript
+ - webpack
+
+ '@storybook/react@10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)':
dependencies:
+ '@storybook/global': 5.0.0
+ '@storybook/react-dom-shim': 10.4.6(@types/react-dom@18.3.7(@types/react@18.3.27))(@types/react@18.3.27)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))
react: 19.2.1
+ react-docgen: 8.0.3
+ react-docgen-typescript: 2.4.0(typescript@5.9.3)
react-dom: 19.2.1(react@19.2.1)
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ optionalDependencies:
+ '@types/react': 18.3.27
+ '@types/react-dom': 18.3.7(@types/react@18.3.27)
+ typescript: 5.9.3
+ transitivePeerDependencies:
+ - supports-color
'@supabase/auth-js@2.86.2':
dependencies:
@@ -14496,8 +15691,34 @@ snapshots:
tslib: 2.8.1
optional: true
+ '@tybys/wasm-util@0.10.2':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/aria-query@5.0.4': {}
+ '@types/babel__core@7.20.5':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+ '@types/babel__generator': 7.27.0
+ '@types/babel__template': 7.4.4
+ '@types/babel__traverse': 7.28.0
+
+ '@types/babel__generator@7.27.0':
+ dependencies:
+ '@babel/types': 7.28.5
+
+ '@types/babel__template@7.4.4':
+ dependencies:
+ '@babel/parser': 7.28.5
+ '@babel/types': 7.28.5
+
+ '@types/babel__traverse@7.28.0':
+ dependencies:
+ '@babel/types': 7.28.5
+
'@types/caseless@0.12.5': {}
'@types/chai@5.2.3':
@@ -14634,6 +15855,8 @@ snapshots:
'@types/diff-match-patch@1.0.36': {}
+ '@types/doctrine@0.0.9': {}
+
'@types/dom-to-image@2.6.7': {}
'@types/eslint-scope@3.7.7':
@@ -14748,6 +15971,8 @@ snapshots:
dependencies:
'@types/node': 20.19.25
+ '@types/resolve@1.20.6': {}
+
'@types/stylis@4.2.5': {}
'@types/tough-cookie@4.0.5': {}
@@ -14944,29 +16169,29 @@ snapshots:
'@vercel/oidc@3.1.0': {}
- '@vitest/browser-playwright@4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)':
+ '@vitest/browser-playwright@4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)':
dependencies:
- '@vitest/browser': 4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
- '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))
+ '@vitest/browser': 4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
+ '@vitest/mocker': 4.0.15(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))
playwright: 1.57.0
tinyrainbow: 3.0.3
- vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
transitivePeerDependencies:
- bufferutil
- msw
- utf-8-validate
- vite
- '@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)':
+ '@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)':
dependencies:
- '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))
+ '@vitest/mocker': 4.0.15(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))
'@vitest/utils': 4.0.15
magic-string: 0.30.21
pixelmatch: 7.1.0
pngjs: 7.0.0
sirv: 3.0.2
tinyrainbow: 3.0.3
- vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- bufferutil
@@ -14974,7 +16199,7 @@ snapshots:
- utf-8-validate
- vite
- '@vitest/coverage-v8@4.0.15(@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)':
+ '@vitest/coverage-v8@4.0.15(@vitest/browser@4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15))(vitest@4.0.15)':
dependencies:
'@bcoe/v8-coverage': 1.0.2
'@vitest/utils': 4.0.15
@@ -14987,9 +16212,9 @@ snapshots:
obug: 2.1.1
std-env: 3.10.0
tinyrainbow: 3.0.3
- vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
optionalDependencies:
- '@vitest/browser': 4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
+ '@vitest/browser': 4.0.15(bufferutil@4.0.9)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
transitivePeerDependencies:
- supports-color
@@ -15010,13 +16235,21 @@ snapshots:
chai: 6.2.1
tinyrainbow: 3.0.3
- '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))':
+ '@vitest/mocker@4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2))':
+ dependencies:
+ '@vitest/spy': 4.0.15
+ estree-walker: 3.0.3
+ magic-string: 0.30.21
+ optionalDependencies:
+ vite: 7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
+
+ '@vitest/mocker@4.0.15(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))':
dependencies:
'@vitest/spy': 4.0.15
estree-walker: 3.0.3
magic-string: 0.30.21
optionalDependencies:
- vite: 7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
'@vitest/pretty-format@3.2.4':
dependencies:
@@ -15054,9 +16287,9 @@ snapshots:
'@vitest/pretty-format': 4.0.15
tinyrainbow: 3.0.3
- '@wagmi/connectors@6.2.0(34c7fdd01b715715548043cbba06572f)':
+ '@wagmi/connectors@6.2.0(bc46f6da8a96e0d70b8ac0d4e44dc163)':
dependencies:
- '@base-org/account': 2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ '@base-org/account': 2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
'@coinbase/wallet-sdk': 4.3.6(@types/react@18.3.27)(bufferutil@4.0.9)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(zod@3.25.76)
'@gemini-wallet/core': 0.3.2(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
'@metamask/sdk': 0.33.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)
@@ -15065,7 +16298,7 @@ snapshots:
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
'@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
cbw-sdk: '@coinbase/wallet-sdk@3.9.3'
- porto: 0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))
+ porto: 0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))
viem: 2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
optionalDependencies:
typescript: 5.9.3
@@ -15108,9 +16341,9 @@ snapshots:
- ws
- zod
- '@wagmi/connectors@6.2.0(48148c372af62fb1ae03215f20f3a3bb)':
+ '@wagmi/connectors@6.2.0(c7be2db096d4f0464beda2d85418e281)':
dependencies:
- '@base-org/account': 2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ '@base-org/account': 2.4.0(@types/react@18.3.27)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
'@coinbase/wallet-sdk': 4.3.6(@types/react@18.3.27)(bufferutil@4.0.9)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(utf-8-validate@5.0.10)(zod@3.25.76)
'@gemini-wallet/core': 0.3.2(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
'@metamask/sdk': 0.33.1(bufferutil@4.0.9)(encoding@0.1.13)(utf-8-validate@5.0.10)
@@ -15119,7 +16352,7 @@ snapshots:
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
'@walletconnect/ethereum-provider': 2.21.1(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
cbw-sdk: '@coinbase/wallet-sdk@3.9.3'
- porto: 0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))
+ porto: 0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76))
viem: 2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
optionalDependencies:
typescript: 5.9.3
@@ -16255,6 +17488,8 @@ snapshots:
'@webassemblyjs/ast': 1.14.1
'@xtuc/long': 4.2.2
+ '@webcontainer/env@1.1.1': {}
+
'@xtuc/ieee754@1.2.0': {}
'@xtuc/long@4.2.2': {}
@@ -16595,14 +17830,14 @@ snapshots:
axobject-query@4.1.0: {}
- babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.103.0):
+ babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1)):
dependencies:
'@babel/core': 7.28.5
find-cache-dir: 3.3.2
loader-utils: 2.0.4
make-dir: 3.1.0
schema-utils: 2.7.1
- webpack: 5.103.0
+ webpack: 5.103.0(esbuild@0.27.1)
babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5):
dependencies:
@@ -16632,6 +17867,8 @@ snapshots:
balanced-match@1.0.2: {}
+ balanced-match@4.0.4: {}
+
base-x@3.0.11:
dependencies:
safe-buffer: 5.2.1
@@ -16698,6 +17935,10 @@ snapshots:
dependencies:
balanced-match: 1.0.2
+ brace-expansion@5.0.6:
+ dependencies:
+ balanced-match: 4.0.4
+
braces@3.0.3:
dependencies:
fill-range: 7.1.1
@@ -16733,6 +17974,10 @@ snapshots:
builtin-modules@3.3.0: {}
+ bundle-name@4.1.0:
+ dependencies:
+ run-applescript: 7.1.0
+
bytes@3.1.2: {}
call-bind-apply-helpers@1.0.2:
@@ -16839,10 +18084,10 @@ snapshots:
classnames@2.5.1: {}
- clean-webpack-plugin@4.0.0(webpack@5.103.0):
+ clean-webpack-plugin@4.0.0(webpack@5.103.0(esbuild@0.27.1)):
dependencies:
del: 4.1.1
- webpack: 5.103.0
+ webpack: 5.103.0(esbuild@0.27.1)
client-only@0.0.1: {}
@@ -17228,12 +18473,21 @@ snapshots:
deepmerge@4.3.1: {}
+ default-browser-id@5.0.1: {}
+
+ default-browser@5.5.0:
+ dependencies:
+ bundle-name: 4.1.0
+ default-browser-id: 5.0.1
+
define-data-property@1.1.4:
dependencies:
es-define-property: 1.0.1
es-errors: 1.3.0
gopd: 1.2.0
+ define-lazy-prop@3.0.0: {}
+
define-properties@1.2.1:
dependencies:
define-data-property: 1.1.4
@@ -17371,6 +18625,8 @@ snapshots:
emojis-list@3.0.0: {}
+ empathic@2.0.1: {}
+
encode-utf8@1.0.3: {}
encodeurl@2.0.0: {}
@@ -17712,11 +18968,11 @@ snapshots:
string.prototype.matchall: 4.0.12
string.prototype.repeat: 1.0.0
- eslint-plugin-storybook@10.1.4(eslint@8.57.1)(storybook@10.1.4(@testing-library/dom@10.4.1)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3):
+ eslint-plugin-storybook@10.1.4(eslint@8.57.1)(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3):
dependencies:
'@typescript-eslint/utils': 8.48.1(eslint@8.57.1)(typescript@5.9.3)
eslint: 8.57.1
- storybook: 10.1.4(@testing-library/dom@10.4.1)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
transitivePeerDependencies:
- supports-color
- typescript
@@ -17802,6 +19058,8 @@ snapshots:
estree-walker@1.0.1: {}
+ estree-walker@2.0.2: {}
+
estree-walker@3.0.3:
dependencies:
'@types/estree': 1.0.8
@@ -17962,6 +19220,10 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
+ fdir@6.5.0(picomatch@4.0.4):
+ optionalDependencies:
+ picomatch: 4.0.4
+
fetch-blob@3.2.0:
dependencies:
node-domexception: 1.0.0
@@ -18246,6 +19508,12 @@ snapshots:
package-json-from-dist: 1.0.1
path-scurry: 1.11.1
+ glob@13.0.6:
+ dependencies:
+ minimatch: 10.2.5
+ minipass: 7.1.3
+ path-scurry: 2.0.2
+
glob@7.2.3:
dependencies:
fs.realpath: 1.0.0
@@ -18281,6 +19549,8 @@ snapshots:
pify: 2.3.0
pinkie-promise: 2.0.1
+ globrex@0.1.2: {}
+
google-auth-library@10.5.0:
dependencies:
base64-js: 1.5.1
@@ -18620,6 +19890,8 @@ snapshots:
ignore@7.0.5: {}
+ image-size@2.0.2: {}
+
import-fresh@3.3.1:
dependencies:
parent-module: 1.0.1
@@ -18729,6 +20001,8 @@ snapshots:
is-decimal@2.0.1: {}
+ is-docker@3.0.0: {}
+
is-extglob@2.1.1: {}
is-finalizationregistry@1.1.1:
@@ -18753,6 +20027,10 @@ snapshots:
is-hexadecimal@2.0.1: {}
+ is-inside-container@1.0.0:
+ dependencies:
+ is-docker: 3.0.0
+
is-map@2.0.3: {}
is-module@1.0.0: {}
@@ -18835,6 +20113,10 @@ snapshots:
call-bound: 1.0.4
get-intrinsic: 1.3.0
+ is-wsl@3.1.1:
+ dependencies:
+ is-inside-container: 1.0.0
+
isarray@1.0.0: {}
isarray@2.0.5: {}
@@ -19118,36 +20400,69 @@ snapshots:
lightningcss-android-arm64@1.30.2:
optional: true
+ lightningcss-android-arm64@1.32.0:
+ optional: true
+
lightningcss-darwin-arm64@1.30.2:
optional: true
+ lightningcss-darwin-arm64@1.32.0:
+ optional: true
+
lightningcss-darwin-x64@1.30.2:
optional: true
+ lightningcss-darwin-x64@1.32.0:
+ optional: true
+
lightningcss-freebsd-x64@1.30.2:
optional: true
+ lightningcss-freebsd-x64@1.32.0:
+ optional: true
+
lightningcss-linux-arm-gnueabihf@1.30.2:
optional: true
+ lightningcss-linux-arm-gnueabihf@1.32.0:
+ optional: true
+
lightningcss-linux-arm64-gnu@1.30.2:
optional: true
+ lightningcss-linux-arm64-gnu@1.32.0:
+ optional: true
+
lightningcss-linux-arm64-musl@1.30.2:
optional: true
+ lightningcss-linux-arm64-musl@1.32.0:
+ optional: true
+
lightningcss-linux-x64-gnu@1.30.2:
optional: true
+ lightningcss-linux-x64-gnu@1.32.0:
+ optional: true
+
lightningcss-linux-x64-musl@1.30.2:
optional: true
+ lightningcss-linux-x64-musl@1.32.0:
+ optional: true
+
lightningcss-win32-arm64-msvc@1.30.2:
optional: true
+ lightningcss-win32-arm64-msvc@1.32.0:
+ optional: true
+
lightningcss-win32-x64-msvc@1.30.2:
optional: true
+ lightningcss-win32-x64-msvc@1.32.0:
+ optional: true
+
lightningcss@1.30.2:
dependencies:
detect-libc: 2.1.2
@@ -19164,6 +20479,22 @@ snapshots:
lightningcss-win32-arm64-msvc: 1.30.2
lightningcss-win32-x64-msvc: 1.30.2
+ lightningcss@1.32.0:
+ dependencies:
+ detect-libc: 2.1.2
+ optionalDependencies:
+ lightningcss-android-arm64: 1.32.0
+ lightningcss-darwin-arm64: 1.32.0
+ lightningcss-darwin-x64: 1.32.0
+ lightningcss-freebsd-x64: 1.32.0
+ lightningcss-linux-arm-gnueabihf: 1.32.0
+ lightningcss-linux-arm64-gnu: 1.32.0
+ lightningcss-linux-arm64-musl: 1.32.0
+ lightningcss-linux-x64-gnu: 1.32.0
+ lightningcss-linux-x64-musl: 1.32.0
+ lightningcss-win32-arm64-msvc: 1.32.0
+ lightningcss-win32-x64-msvc: 1.32.0
+
lit-element@4.2.1:
dependencies:
'@lit-labs/ssr-dom-shim': 1.4.0
@@ -19243,6 +20574,8 @@ snapshots:
lru-cache@10.4.3: {}
+ lru-cache@11.5.1: {}
+
lru-cache@5.1.1:
dependencies:
yallist: 3.1.1
@@ -19763,6 +21096,10 @@ snapshots:
minimalistic-assert@1.0.1: {}
+ minimatch@10.2.5:
+ dependencies:
+ brace-expansion: 5.0.6
+
minimatch@3.1.2:
dependencies:
brace-expansion: 1.1.12
@@ -19779,6 +21116,8 @@ snapshots:
minipass@7.1.2: {}
+ minipass@7.1.3: {}
+
mipd@0.0.7(typescript@5.9.3):
optionalDependencies:
typescript: 5.9.3
@@ -19790,6 +21129,8 @@ snapshots:
pkg-types: 1.3.1
ufo: 1.6.1
+ module-alias@2.3.4: {}
+
motion-dom@11.18.1:
dependencies:
motion-utils: 11.18.1
@@ -19823,6 +21164,8 @@ snapshots:
nanoid@3.3.11: {}
+ nanoid@3.3.15: {}
+
napi-postinstall@0.3.4: {}
natural-compare@1.4.0: {}
@@ -19831,14 +21174,14 @@ snapshots:
neo-async@2.6.2: {}
- next-pwa@5.6.0(@babel/core@7.28.5)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(webpack@5.103.0):
+ next-pwa@5.6.0(@babel/core@7.28.5)(@types/babel__core@7.20.5)(esbuild@0.27.1)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(webpack@5.103.0(esbuild@0.27.1)):
dependencies:
- babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0)
- clean-webpack-plugin: 4.0.0(webpack@5.103.0)
+ babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0(esbuild@0.27.1))
+ clean-webpack-plugin: 4.0.0(webpack@5.103.0(esbuild@0.27.1))
globby: 11.1.0
next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
- terser-webpack-plugin: 5.3.15(webpack@5.103.0)
- workbox-webpack-plugin: 6.6.0(webpack@5.103.0)
+ terser-webpack-plugin: 5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1))
+ workbox-webpack-plugin: 6.6.0(@types/babel__core@7.20.5)(webpack@5.103.0(esbuild@0.27.1))
workbox-window: 6.6.0
transitivePeerDependencies:
- '@babel/core'
@@ -20006,7 +21349,14 @@ snapshots:
regex: 6.0.1
regex-recursion: 6.0.2
- openai@4.104.0(encoding@0.1.13)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
+ open@10.2.0:
+ dependencies:
+ default-browser: 5.5.0
+ define-lazy-prop: 3.0.0
+ is-inside-container: 1.0.0
+ wsl-utils: 0.1.0
+
+ openai@4.104.0(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
dependencies:
'@types/node': 18.19.130
'@types/node-fetch': 2.6.13
@@ -20016,12 +21366,12 @@ snapshots:
formdata-node: 4.4.1
node-fetch: 2.7.0(encoding@0.1.13)
optionalDependencies:
- ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- encoding
- openai@4.104.0(encoding@0.1.13)(ws@8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
+ openai@4.104.0(encoding@0.1.13)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
dependencies:
'@types/node': 18.19.130
'@types/node-fetch': 2.6.13
@@ -20031,14 +21381,14 @@ snapshots:
formdata-node: 4.4.1
node-fetch: 2.7.0(encoding@0.1.13)
optionalDependencies:
- ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
zod: 3.25.76
transitivePeerDependencies:
- encoding
- openai@5.23.2(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
+ openai@5.23.2(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
optionalDependencies:
- ws: 8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
zod: 3.25.76
openapi-fetch@0.13.8:
@@ -20217,6 +21567,53 @@ snapshots:
transitivePeerDependencies:
- zod
+ oxc-parser@0.127.0:
+ dependencies:
+ '@oxc-project/types': 0.127.0
+ optionalDependencies:
+ '@oxc-parser/binding-android-arm-eabi': 0.127.0
+ '@oxc-parser/binding-android-arm64': 0.127.0
+ '@oxc-parser/binding-darwin-arm64': 0.127.0
+ '@oxc-parser/binding-darwin-x64': 0.127.0
+ '@oxc-parser/binding-freebsd-x64': 0.127.0
+ '@oxc-parser/binding-linux-arm-gnueabihf': 0.127.0
+ '@oxc-parser/binding-linux-arm-musleabihf': 0.127.0
+ '@oxc-parser/binding-linux-arm64-gnu': 0.127.0
+ '@oxc-parser/binding-linux-arm64-musl': 0.127.0
+ '@oxc-parser/binding-linux-ppc64-gnu': 0.127.0
+ '@oxc-parser/binding-linux-riscv64-gnu': 0.127.0
+ '@oxc-parser/binding-linux-riscv64-musl': 0.127.0
+ '@oxc-parser/binding-linux-s390x-gnu': 0.127.0
+ '@oxc-parser/binding-linux-x64-gnu': 0.127.0
+ '@oxc-parser/binding-linux-x64-musl': 0.127.0
+ '@oxc-parser/binding-openharmony-arm64': 0.127.0
+ '@oxc-parser/binding-wasm32-wasi': 0.127.0
+ '@oxc-parser/binding-win32-arm64-msvc': 0.127.0
+ '@oxc-parser/binding-win32-ia32-msvc': 0.127.0
+ '@oxc-parser/binding-win32-x64-msvc': 0.127.0
+
+ oxc-resolver@11.21.3:
+ optionalDependencies:
+ '@oxc-resolver/binding-android-arm-eabi': 11.21.3
+ '@oxc-resolver/binding-android-arm64': 11.21.3
+ '@oxc-resolver/binding-darwin-arm64': 11.21.3
+ '@oxc-resolver/binding-darwin-x64': 11.21.3
+ '@oxc-resolver/binding-freebsd-x64': 11.21.3
+ '@oxc-resolver/binding-linux-arm-gnueabihf': 11.21.3
+ '@oxc-resolver/binding-linux-arm-musleabihf': 11.21.3
+ '@oxc-resolver/binding-linux-arm64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-arm64-musl': 11.21.3
+ '@oxc-resolver/binding-linux-ppc64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-riscv64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-riscv64-musl': 11.21.3
+ '@oxc-resolver/binding-linux-s390x-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-x64-gnu': 11.21.3
+ '@oxc-resolver/binding-linux-x64-musl': 11.21.3
+ '@oxc-resolver/binding-openharmony-arm64': 11.21.3
+ '@oxc-resolver/binding-wasm32-wasi': 11.21.3
+ '@oxc-resolver/binding-win32-arm64-msvc': 11.21.3
+ '@oxc-resolver/binding-win32-x64-msvc': 11.21.3
+
p-limit@2.3.0:
dependencies:
p-try: 2.2.0
@@ -20294,6 +21691,11 @@ snapshots:
lru-cache: 10.4.3
minipass: 7.1.2
+ path-scurry@2.0.2:
+ dependencies:
+ lru-cache: 11.5.1
+ minipass: 7.1.3
+
path-to-regexp@8.3.0: {}
path-type@4.0.0: {}
@@ -20310,6 +21712,8 @@ snapshots:
picomatch@4.0.3: {}
+ picomatch@4.0.4: {}
+
pify@2.3.0: {}
pify@3.0.0: {}
@@ -20458,7 +21862,7 @@ snapshots:
pony-cause@2.1.11: {}
- porto@0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)):
+ porto@0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)):
dependencies:
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
hono: 4.10.7
@@ -20472,13 +21876,13 @@ snapshots:
'@tanstack/react-query': 5.90.12(react@19.2.1)
react: 19.2.1
typescript: 5.9.3
- wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
transitivePeerDependencies:
- '@types/react'
- immer
- use-sync-external-store
- porto@0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)):
+ porto@0.2.35(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@wagmi/core@2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)))(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)):
dependencies:
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
hono: 4.10.7
@@ -20492,7 +21896,7 @@ snapshots:
'@tanstack/react-query': 5.90.12(react@19.2.1)
react: 19.2.1
typescript: 5.9.3
- wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
transitivePeerDependencies:
- '@types/react'
- immer
@@ -20514,6 +21918,12 @@ snapshots:
picocolors: 1.1.1
source-map-js: 1.2.1
+ postcss@8.5.15:
+ dependencies:
+ nanoid: 3.3.15
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
postcss@8.5.6:
dependencies:
nanoid: 3.3.11
@@ -20649,6 +22059,25 @@ snapshots:
react-dom: 19.2.1(react@19.2.1)
ua-parser-js: 1.0.41
+ react-docgen-typescript@2.4.0(typescript@5.9.3):
+ dependencies:
+ typescript: 5.9.3
+
+ react-docgen@8.0.3:
+ dependencies:
+ '@babel/core': 7.28.5
+ '@babel/traverse': 7.28.5
+ '@babel/types': 7.28.5
+ '@types/babel__core': 7.20.5
+ '@types/babel__traverse': 7.28.0
+ '@types/doctrine': 0.0.9
+ '@types/resolve': 1.20.6
+ doctrine: 3.0.0
+ resolve: 1.22.11
+ strip-indent: 4.1.1
+ transitivePeerDependencies:
+ - supports-color
+
react-dom@19.2.1(react@19.2.1):
dependencies:
react: 19.2.1
@@ -21034,6 +22463,27 @@ snapshots:
robust-predicates@3.0.2: {}
+ rolldown@1.0.3:
+ dependencies:
+ '@oxc-project/types': 0.133.0
+ '@rolldown/pluginutils': 1.0.1
+ optionalDependencies:
+ '@rolldown/binding-android-arm64': 1.0.3
+ '@rolldown/binding-darwin-arm64': 1.0.3
+ '@rolldown/binding-darwin-x64': 1.0.3
+ '@rolldown/binding-freebsd-x64': 1.0.3
+ '@rolldown/binding-linux-arm-gnueabihf': 1.0.3
+ '@rolldown/binding-linux-arm64-gnu': 1.0.3
+ '@rolldown/binding-linux-arm64-musl': 1.0.3
+ '@rolldown/binding-linux-ppc64-gnu': 1.0.3
+ '@rolldown/binding-linux-s390x-gnu': 1.0.3
+ '@rolldown/binding-linux-x64-gnu': 1.0.3
+ '@rolldown/binding-linux-x64-musl': 1.0.3
+ '@rolldown/binding-openharmony-arm64': 1.0.3
+ '@rolldown/binding-wasm32-wasi': 1.0.3
+ '@rolldown/binding-win32-arm64-msvc': 1.0.3
+ '@rolldown/binding-win32-x64-msvc': 1.0.3
+
rollup-plugin-terser@7.0.2(rollup@2.79.2):
dependencies:
'@babel/code-frame': 7.27.1
@@ -21099,11 +22549,13 @@ snapshots:
buffer: 6.0.3
eventemitter3: 5.0.1
uuid: 8.3.2
- ws: 8.18.3(bufferutil@4.0.9)(utf-8-validate@5.0.10)
+ ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
optionalDependencies:
bufferutil: 4.0.9
utf-8-validate: 5.0.10
+ run-applescript@7.1.0: {}
+
run-parallel@1.2.0:
dependencies:
queue-microtask: 1.2.3
@@ -21415,20 +22867,25 @@ snapshots:
es-errors: 1.3.0
internal-slot: 1.1.0
- storybook@10.1.4(@testing-library/dom@10.4.1)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10):
+ storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10):
dependencies:
'@storybook/global': 5.0.0
- '@storybook/icons': 2.0.1(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ '@storybook/icons': 2.0.2(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
'@testing-library/jest-dom': 6.9.1
'@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.1)
'@vitest/expect': 3.2.4
'@vitest/spy': 3.2.4
+ '@webcontainer/env': 1.1.1
esbuild: 0.27.1
+ open: 10.2.0
+ oxc-parser: 0.127.0
+ oxc-resolver: 11.21.3
recast: 0.23.11
semver: 7.7.3
use-sync-external-store: 1.6.0(react@19.2.1)
ws: 8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)
optionalDependencies:
+ '@types/react': 18.3.27
prettier: 3.3.3
transitivePeerDependencies:
- '@testing-library/dom'
@@ -21575,6 +23032,8 @@ snapshots:
dependencies:
min-indent: 1.0.1
+ strip-indent@4.1.1: {}
+
strip-json-comments@3.1.1: {}
strip-json-comments@5.0.3: {}
@@ -21671,14 +23130,16 @@ snapshots:
type-fest: 0.16.0
unique-string: 2.0.0
- terser-webpack-plugin@5.3.15(webpack@5.103.0):
+ terser-webpack-plugin@5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1)):
dependencies:
'@jridgewell/trace-mapping': 0.3.31
jest-worker: 27.5.1
schema-utils: 4.3.3
serialize-javascript: 6.0.2
terser: 5.44.1
- webpack: 5.103.0
+ webpack: 5.103.0(esbuild@0.27.1)
+ optionalDependencies:
+ esbuild: 0.27.1
terser@5.44.1:
dependencies:
@@ -21718,6 +23179,11 @@ snapshots:
fdir: 6.5.0(picomatch@4.0.3)
picomatch: 4.0.3
+ tinyglobby@0.2.17:
+ dependencies:
+ fdir: 6.5.0(picomatch@4.0.4)
+ picomatch: 4.0.4
+
tinyrainbow@2.0.0: {}
tinyrainbow@3.0.3: {}
@@ -21776,6 +23242,10 @@ snapshots:
ts-dedent@2.2.0: {}
+ tsconfck@3.1.6(typescript@5.9.3):
+ optionalDependencies:
+ typescript: 5.9.3
+
tsconfig-paths@3.15.0:
dependencies:
'@types/json5': 0.0.29
@@ -21783,6 +23253,12 @@ snapshots:
minimist: 1.2.8
strip-bom: 3.0.0
+ tsconfig-paths@4.2.0:
+ dependencies:
+ json5: 2.2.3
+ minimist: 1.2.8
+ strip-bom: 3.0.0
+
tslib@1.14.1: {}
tslib@2.6.2: {}
@@ -21956,6 +23432,13 @@ snapshots:
unpipe@1.0.0: {}
+ unplugin@2.3.11:
+ dependencies:
+ '@jridgewell/remapping': 2.3.5
+ acorn: 8.15.0
+ picomatch: 4.0.3
+ webpack-virtual-modules: 0.6.2
+
unrs-resolver@1.11.1:
dependencies:
napi-postinstall: 0.3.4
@@ -22231,7 +23714,33 @@ snapshots:
- utf-8-validate
- zod
- vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2):
+ vite-plugin-storybook-nextjs@3.3.0(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(storybook@10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10))(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)):
+ dependencies:
+ '@next/env': 16.0.0
+ image-size: 2.0.2
+ magic-string: 0.30.21
+ module-alias: 2.3.4
+ next: 16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)
+ storybook: 10.4.6(@testing-library/dom@10.4.1)(@types/react@18.3.27)(bufferutil@4.0.9)(prettier@3.3.3)(react-dom@19.2.1(react@19.2.1))(react@19.2.1)(utf-8-validate@5.0.10)
+ ts-dedent: 2.2.0
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ vite-tsconfig-paths: 5.1.4(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite-tsconfig-paths@5.1.4(typescript@5.9.3)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)):
+ dependencies:
+ debug: 4.4.3
+ globrex: 0.1.2
+ tsconfck: 3.1.6(typescript@5.9.3)
+ optionalDependencies:
+ vite: 8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2)
+ transitivePeerDependencies:
+ - supports-color
+ - typescript
+
+ vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2):
dependencies:
esbuild: 0.25.12
fdir: 6.5.0(picomatch@4.0.3)
@@ -22243,14 +23752,29 @@ snapshots:
'@types/node': 20.19.25
fsevents: 2.3.3
jiti: 2.6.1
- lightningcss: 1.30.2
+ lightningcss: 1.32.0
+ terser: 5.44.1
+ yaml: 2.8.2
+
+ vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2):
+ dependencies:
+ lightningcss: 1.32.0
+ picomatch: 4.0.4
+ postcss: 8.5.15
+ rolldown: 1.0.3
+ tinyglobby: 0.2.17
+ optionalDependencies:
+ '@types/node': 20.19.25
+ esbuild: 0.27.1
+ fsevents: 2.3.3
+ jiti: 2.6.1
terser: 5.44.1
yaml: 2.8.2
- vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2):
+ vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@20.19.25)(@vitest/browser-playwright@4.0.15)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2):
dependencies:
'@vitest/expect': 4.0.15
- '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))
+ '@vitest/mocker': 4.0.15(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2))
'@vitest/pretty-format': 4.0.15
'@vitest/runner': 4.0.15
'@vitest/snapshot': 4.0.15
@@ -22267,12 +23791,12 @@ snapshots:
tinyexec: 1.0.2
tinyglobby: 0.2.15
tinyrainbow: 3.0.3
- vite: 7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2)
+ vite: 7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.32.0)(terser@5.44.1)(yaml@2.8.2)
why-is-node-running: 2.3.0
optionalDependencies:
'@opentelemetry/api': 1.9.0
'@types/node': 20.19.25
- '@vitest/browser-playwright': 4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@7.2.6(@types/node@20.19.25)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
+ '@vitest/browser-playwright': 4.0.15(bufferutil@4.0.9)(playwright@1.57.0)(utf-8-validate@5.0.10)(vite@8.0.16(@types/node@20.19.25)(esbuild@0.27.1)(jiti@2.6.1)(terser@5.44.1)(yaml@2.8.2))(vitest@4.0.15)
transitivePeerDependencies:
- jiti
- less
@@ -22303,10 +23827,10 @@ snapshots:
vscode-uri@3.0.8: {}
- wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
+ wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
dependencies:
'@tanstack/react-query': 5.90.12(react@19.2.1)
- '@wagmi/connectors': 6.2.0(34c7fdd01b715715548043cbba06572f)
+ '@wagmi/connectors': 6.2.0(bc46f6da8a96e0d70b8ac0d4e44dc163)
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
react: 19.2.1
use-sync-external-store: 1.4.0(react@19.2.1)
@@ -22349,10 +23873,10 @@ snapshots:
- ws
- zod
- wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
+ wagmi@2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76):
dependencies:
'@tanstack/react-query': 5.90.12(react@19.2.1)
- '@wagmi/connectors': 6.2.0(48148c372af62fb1ae03215f20f3a3bb)
+ '@wagmi/connectors': 6.2.0(c7be2db096d4f0464beda2d85418e281)
'@wagmi/core': 2.22.1(@tanstack/query-core@5.90.12)(@types/react@18.3.27)(react@19.2.1)(typescript@5.9.3)(use-sync-external-store@1.4.0(react@19.2.1))(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))
react: 19.2.1
use-sync-external-store: 1.4.0(react@19.2.1)
@@ -22419,7 +23943,9 @@ snapshots:
webpack-sources@3.3.3: {}
- webpack@5.103.0:
+ webpack-virtual-modules@0.6.2: {}
+
+ webpack@5.103.0(esbuild@0.27.1):
dependencies:
'@types/eslint-scope': 3.7.7
'@types/estree': 1.0.8
@@ -22443,7 +23969,7 @@ snapshots:
neo-async: 2.6.2
schema-utils: 4.3.3
tapable: 2.3.0
- terser-webpack-plugin: 5.3.15(webpack@5.103.0)
+ terser-webpack-plugin: 5.3.15(esbuild@0.27.1)(webpack@5.103.0(esbuild@0.27.1))
watchpack: 2.4.4
webpack-sources: 3.3.3
transitivePeerDependencies:
@@ -22525,13 +24051,13 @@ snapshots:
dependencies:
workbox-core: 6.6.0
- workbox-build@6.6.0:
+ workbox-build@6.6.0(@types/babel__core@7.20.5):
dependencies:
'@apideck/better-ajv-errors': 0.3.6(ajv@8.17.1)
'@babel/core': 7.28.5
'@babel/preset-env': 7.28.5(@babel/core@7.28.5)
'@babel/runtime': 7.28.4
- '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.5)(rollup@2.79.2)
+ '@rollup/plugin-babel': 5.3.1(@babel/core@7.28.5)(@types/babel__core@7.20.5)(rollup@2.79.2)
'@rollup/plugin-node-resolve': 11.2.1(rollup@2.79.2)
'@rollup/plugin-replace': 2.4.2(rollup@2.79.2)
'@surma/rollup-plugin-off-main-thread': 2.2.3
@@ -22624,14 +24150,14 @@ snapshots:
workbox-sw@6.6.0: {}
- workbox-webpack-plugin@6.6.0(webpack@5.103.0):
+ workbox-webpack-plugin@6.6.0(@types/babel__core@7.20.5)(webpack@5.103.0(esbuild@0.27.1)):
dependencies:
fast-json-stable-stringify: 2.1.0
pretty-bytes: 5.6.0
upath: 1.2.0
- webpack: 5.103.0
+ webpack: 5.103.0(esbuild@0.27.1)
webpack-sources: 1.4.3
- workbox-build: 6.6.0
+ workbox-build: 6.6.0(@types/babel__core@7.20.5)
transitivePeerDependencies:
- '@types/babel__core'
- supports-color
@@ -22691,13 +24217,17 @@ snapshots:
bufferutil: 4.0.9
utf-8-validate: 5.0.10
- x402-mcp@0.1.1(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(ai@6.0.165(zod@3.25.76))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
+ wsl-utils@0.1.0:
+ dependencies:
+ is-wsl: 3.1.1
+
+ x402-mcp@0.1.1(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(ai@6.0.165(zod@3.25.76))(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
dependencies:
'@modelcontextprotocol/sdk': 1.24.3(zod@3.25.76)
ai: 6.0.165(zod@3.25.76)
mcp-handler: 1.0.4(@modelcontextprotocol/sdk@1.24.3(zod@3.25.76))(next@16.0.10(@babel/core@7.28.5)(@opentelemetry/api@1.9.0)(react-dom@19.2.1(react@19.2.1))(react@19.2.1))
viem: 2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
- x402: 0.5.3(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
+ x402: 0.5.3(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))
zod: 3.25.76
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -22739,10 +24269,10 @@ snapshots:
- utf-8-validate
- ws
- x402@0.5.3(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
+ x402@0.5.3(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
dependencies:
viem: 2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
- wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.41.2(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
zod: 3.25.76
transitivePeerDependencies:
- '@azure/app-configuration'
@@ -22782,7 +24312,7 @@ snapshots:
- utf-8-validate
- ws
- x402@0.7.3(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
+ x402@0.7.3(@solana/sysvars@5.5.1(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3))(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10)):
dependencies:
'@scure/base': 1.2.6
'@solana-program/compute-budget': 0.11.0(@solana/kit@5.5.1(bufferutil@4.0.9)(fastestsmallesttextencoderdecoder@1.0.22)(typescript@5.9.3)(utf-8-validate@5.0.10))
@@ -22795,7 +24325,7 @@ snapshots:
'@wallet-standard/base': 1.1.0
'@wallet-standard/features': 1.1.0
viem: 2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76)
- wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.18.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
+ wagmi: 2.19.5(@tanstack/query-core@5.90.12)(@tanstack/react-query@5.90.12(react@19.2.1))(@types/react@18.3.27)(@vercel/blob@2.3.2)(bufferutil@4.0.9)(encoding@0.1.13)(fastestsmallesttextencoderdecoder@1.0.22)(react@19.2.1)(typescript@5.9.3)(utf-8-validate@5.0.10)(viem@2.52.0(bufferutil@4.0.9)(typescript@5.9.3)(utf-8-validate@5.0.10)(zod@3.25.76))(ws@8.21.0(bufferutil@4.0.9)(utf-8-validate@5.0.10))(zod@3.25.76)
zod: 3.25.76
transitivePeerDependencies:
- '@azure/app-configuration'