velloo 0.4.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +29 -7
- package/canvas/assets/index-CnyI3aig.js +29 -0
- package/canvas/assets/index-GNLd0pCG.css +2 -0
- package/canvas/assets/lucide-all-CH8LmVh0.js +1 -0
- package/canvas/index.html +2 -2
- package/{chunk-91pajfnm.js → chunk-08mjtg1e.js} +1 -1
- package/{chunk-m1wp8cpt.js → chunk-1gkeepkm.js} +1 -1
- package/{chunk-2dm4x17z.js → chunk-1td6z6ey.js} +1 -1
- package/{chunk-ykdx12na.js → chunk-2ba6edh8.js} +1 -1
- package/chunk-2q561dec.js +2 -0
- package/chunk-2web93qz.js +2 -0
- package/{chunk-py6sjyzk.js → chunk-3trkmgfr.js} +1 -1
- package/chunk-52m26hh4.js +3 -0
- package/{chunk-7xffbj5h.js → chunk-56vfy0db.js} +1 -1
- package/{chunk-8t5phg0s.js → chunk-56z5xd5b.js} +1 -1
- package/{chunk-xbhxzdat.js → chunk-63y5gdzw.js} +1 -1
- package/{chunk-t9ygewjx.js → chunk-6813v926.js} +257 -3
- package/{chunk-cejmmx3r.js → chunk-69qb8p8s.js} +2 -2
- package/chunk-6k05kqnc.js +3 -0
- package/chunk-74yxy75r.js +3 -0
- package/{chunk-7a45tn73.js → chunk-8cj4swpr.js} +5 -5
- package/chunk-8grzf8q1.js +2 -0
- package/chunk-8vam2893.js +3 -0
- package/{chunk-dj1pp4e3.js → chunk-8vgpffn7.js} +1 -1
- package/{chunk-j5axqyan.js → chunk-96qhpth5.js} +1 -1
- package/chunk-ab8fga32.js +22 -0
- package/chunk-azeqkms7.js +6 -0
- package/{chunk-2y9nnzpr.js → chunk-bc7pkjcn.js} +1 -1
- package/{chunk-7gtvstne.js → chunk-c4spp880.js} +1 -1
- package/{chunk-a9mgvspm.js → chunk-chtv0yj6.js} +211 -110
- package/{chunk-r9ekd92e.js → chunk-dar6wbf2.js} +1 -1
- package/{chunk-aa3str7g.js → chunk-e2btp1wd.js} +1 -1
- package/{chunk-hsrg23gd.js → chunk-eqjtq673.js} +1 -1
- package/chunk-esb7n55g.js +244 -0
- package/chunk-ey65err5.js +5 -0
- package/{chunk-r03aywsb.js → chunk-ff0jfn0v.js} +1 -1
- package/chunk-ff2vt7cz.js +12 -0
- package/chunk-g185gx8a.js +2 -0
- package/{chunk-km3z2czq.js → chunk-h85hv05d.js} +1 -1
- package/{chunk-db7mf114.js → chunk-hf4adxe0.js} +9 -7
- package/{chunk-6zr596r2.js → chunk-hjc5eg5c.js} +1 -1
- package/{chunk-b4jy4hcd.js → chunk-hsfpbjpc.js} +1 -1
- package/{chunk-ph94nrc8.js → chunk-jsvkqae2.js} +1 -1
- package/{chunk-rfrbnw8r.js → chunk-k423dkjz.js} +1 -1
- package/chunk-mfch0b0t.js +3 -0
- package/chunk-nbbnb5e9.js +3 -0
- package/{chunk-tr49kraa.js → chunk-nx09zqgs.js} +1 -1
- package/chunk-p93x4pn2.js +3 -0
- package/{chunk-k3dpwjx4.js → chunk-pxaxgkaq.js} +1 -1
- package/chunk-qwccndcd.js +5 -0
- package/{chunk-vjrn10xr.js → chunk-rjjc9vam.js} +2 -2
- package/{chunk-npsg7btt.js → chunk-rk238m15.js} +1 -1
- package/chunk-t2x3mztc.js +2 -0
- package/chunk-t6qr2ay9.js +3 -0
- package/chunk-ta84ehgg.js +2 -0
- package/chunk-tac2wvc7.js +2 -0
- package/chunk-tbd6wn3q.js +6 -0
- package/chunk-v6c3h9ft.js +3 -0
- package/chunk-w2naqxqt.js +2 -0
- package/chunk-wfhv9jg4.js +2 -0
- package/chunk-wnj432fw.js +3 -0
- package/chunk-x02z2ccm.js +2 -0
- package/{chunk-b58pnj20.js → chunk-xtwx2p9g.js} +1 -1
- package/chunk-yfvc8d2g.js +716 -0
- package/chunk-z73q4dq9.js +2 -0
- package/{chunk-yfttm20w.js → chunk-ztsckexy.js} +2 -2
- package/cli.js +1 -1
- package/package.json +3 -1
- package/pkgs/helpers/src/descriptors.ts +1 -0
- package/pkgs/helpers/src/index.ts +7 -4
- package/pkgs/helpers/src/lowering.ts +0 -24
- package/pkgs/helpers/src/primitive-classes.tsx +43 -0
- package/pkgs/provider-antd/src/intro.ts +3 -3
- package/pkgs/provider-antd/src/manifest.ts +478 -57
- package/pkgs/provider-antd/src/registry.ts +8 -5
- package/pkgs/provider-antd/src/render-pass.ts +10 -4
- package/pkgs/provider-antd/src/reset-css.d.ts +5 -0
- package/pkgs/provider-antd/src/theme.ts +54 -11
- package/pkgs/provider-chakra/src/manifest.ts +5 -1
- package/pkgs/provider-html/src/index.ts +68 -0
- package/pkgs/provider-html/src/registry.ts +121 -0
- package/pkgs/provider-html/src/version.ts +1 -0
- package/pkgs/provider-mui/src/index.ts +4 -2
- package/pkgs/provider-mui/src/manifest.ts +10 -1
- package/pkgs/provider-mui/src/render-pass.ts +15 -1
- package/pkgs/provider-mui/src/theme.ts +10 -4
- package/pkgs/provider-none/src/components-inline.tsx +12 -3
- package/pkgs/provider-none/src/components.tsx +26 -53
- package/pkgs/provider-none/src/manifest.ts +2 -0
- package/pkgs/schema/src/annotation.ts +6 -3
- package/pkgs/schema/src/comment.ts +10 -1
- package/pkgs/schema/src/config.ts +33 -1
- package/pkgs/schema/src/css-declarations.ts +41 -0
- package/pkgs/schema/src/index.ts +16 -1
- package/pkgs/schema/src/node-identity.ts +92 -0
- package/pkgs/schema/src/node.ts +13 -4
- package/pkgs/schema/src/theme.ts +46 -1
- package/pkgs/schema/src/typeset.ts +24 -17
- package/pkgs/shadcn-snapshot/dist/manifest.json +1 -0
- package/pkgs/shadcn-snapshot/src/components/ui/alert.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/aspect-ratio.tsx +2 -3
- package/pkgs/shadcn-snapshot/src/components/ui/attachment.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/avatar.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/badge.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/breadcrumb.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/bubble.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/button-group.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/button.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/card.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/carousel.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/chart.tsx +1 -1
- package/pkgs/shadcn-snapshot/src/components/ui/direction.tsx +2 -3
- package/pkgs/shadcn-snapshot/src/components/ui/empty.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/field.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/input-group.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/item.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/kbd.tsx +2 -3
- package/pkgs/shadcn-snapshot/src/components/ui/label.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/marker.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/message.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/native-select.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/navigation-menu.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/pagination.tsx +3 -4
- package/pkgs/shadcn-snapshot/src/components/ui/progress.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/radio-group.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/scroll-area.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/separator.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/skeleton.tsx +2 -3
- package/pkgs/shadcn-snapshot/src/components/ui/spinner.tsx +2 -3
- package/pkgs/shadcn-snapshot/src/components/ui/table.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/tabs.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/components/ui/toggle.tsx +2 -4
- package/pkgs/shadcn-snapshot/src/shadcn-tailwind.css +1 -1
- package/pkgs/shadcn-snapshot/src/tailwind-entry.css +1 -1
- package/plugins/claude/velloo/agents/velloo-design-reviewer.md +56 -13
- package/plugins/claude/velloo/agents/velloo-designer.md +4 -1
- package/skills/velloo-setup/SKILL.md +19 -55
- package/canvas/assets/index-B1OD0Yz5.css +0 -2
- package/canvas/assets/index-BWYFx2Rr.js +0 -29
- package/canvas/assets/lucide-all-Bcm80WFX.js +0 -1
- package/chunk-00t0bz7x.js +0 -244
- package/chunk-0446t32z.js +0 -2
- package/chunk-0zen7bzb.js +0 -3
- package/chunk-2h24va0j.js +0 -2
- package/chunk-2jbhv7vh.js +0 -3
- package/chunk-5ywkk7d6.js +0 -2
- package/chunk-b7famda5.js +0 -3
- package/chunk-cvn689d5.js +0 -3
- package/chunk-e6nhc3ay.js +0 -6
- package/chunk-f5g45xed.js +0 -2
- package/chunk-fjbzk4sw.js +0 -3
- package/chunk-hv52a6hf.js +0 -2
- package/chunk-jep31ffe.js +0 -2
- package/chunk-jwzhhhzn.js +0 -3
- package/chunk-mcymwefw.js +0 -5
- package/chunk-n0kx20s2.js +0 -2
- package/chunk-nwf2kn41.js +0 -26
- package/chunk-phz993p3.js +0 -2
- package/chunk-qan5dnjt.js +0 -688
- package/chunk-r5d0jsnd.js +0 -5
- package/chunk-shac6bat.js +0 -6
- package/chunk-t4zvcece.js +0 -10
- package/chunk-tarws372.js +0 -2
- package/chunk-yghypth2.js +0 -2
- package/chunk-zqtz23xk.js +0 -3
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/empty).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
6
|
-
|
|
7
5
|
import { cn } from "../../lib/utils.ts";
|
|
8
6
|
|
|
9
7
|
function Empty({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/field).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
8
7
|
import { useMemo } from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
9
|
+
|
|
11
10
|
import { Label } from "./label.tsx";
|
|
12
11
|
import { Separator } from "./separator.tsx";
|
|
13
12
|
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/input-group).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
9
|
+
|
|
11
10
|
import { Button } from "./button.tsx";
|
|
12
11
|
import { Input } from "./input.tsx";
|
|
13
12
|
import { Textarea } from "./textarea.tsx";
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/item).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
7
6
|
import { Slot } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
9
|
+
|
|
11
10
|
import { Separator } from "./separator.tsx";
|
|
12
11
|
|
|
13
12
|
function ItemGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/kbd).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
import { cn } from "../../lib/utils.ts";
|
|
6
5
|
|
|
7
6
|
function Kbd({ className, ...props }: React.ComponentProps<"kbd">) {
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/label).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { Label as LabelPrimitive } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
function Label({ className, ...props }: React.ComponentProps<typeof LabelPrimitive.Root>) {
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/marker).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
7
6
|
import { Slot } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
const markerVariants = cva(
|
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/message).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
import type * as React from "react";
|
|
6
|
-
|
|
7
5
|
import { cn } from "../../lib/utils.ts";
|
|
8
6
|
|
|
9
7
|
function MessageGroup({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/native-select).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { ChevronDownIcon } from "lucide-react";
|
|
7
6
|
import type * as React from "react";
|
|
8
|
-
|
|
9
7
|
import { cn } from "../../lib/utils.ts";
|
|
10
8
|
|
|
11
9
|
type NativeSelectProps = Omit<React.ComponentProps<"select">, "size"> & {
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/navigation-menu).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { cva } from "class-variance-authority";
|
|
7
6
|
import { ChevronDownIcon } from "lucide-react";
|
|
8
7
|
import { NavigationMenu as NavigationMenuPrimitive } from "radix-ui";
|
|
9
8
|
import type * as React from "react";
|
|
10
|
-
|
|
11
9
|
import { cn } from "../../lib/utils.ts";
|
|
12
10
|
|
|
13
11
|
function NavigationMenu({
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/pagination).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
|
|
7
6
|
import type * as React from "react";
|
|
8
|
-
|
|
9
7
|
import { cn } from "../../lib/utils.ts";
|
|
8
|
+
|
|
10
9
|
import { Button } from "./button.tsx";
|
|
11
10
|
|
|
12
11
|
function Pagination({ className, ...props }: React.ComponentProps<"nav">) {
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/progress).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { Progress as ProgressPrimitive } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
function Progress({
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/radio-group).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { RadioGroup as RadioGroupPrimitive } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
function RadioGroup({
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/scroll-area).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { ScrollArea as ScrollAreaPrimitive } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
function ScrollArea({
|
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/separator).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { Separator as SeparatorPrimitive } from "radix-ui";
|
|
8
7
|
import type * as React from "react";
|
|
9
|
-
|
|
10
8
|
import { cn } from "../../lib/utils.ts";
|
|
11
9
|
|
|
12
10
|
function Separator({
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/skeleton).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
import { cn } from "../../lib/utils.ts";
|
|
6
5
|
|
|
7
6
|
function Skeleton({ className, ...props }: React.ComponentProps<"div">) {
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/spinner).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
|
|
6
5
|
import { Loader2Icon } from "lucide-react";
|
|
7
6
|
import { cn } from "../../lib/utils.ts";
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/table).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import type * as React from "react";
|
|
8
|
-
|
|
9
7
|
import { cn } from "../../lib/utils.ts";
|
|
10
8
|
|
|
11
9
|
function Table({ className, ...props }: React.ComponentProps<"table">) {
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/tabs).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
8
7
|
import { Tabs as TabsPrimitive } from "radix-ui";
|
|
9
8
|
import type * as React from "react";
|
|
10
|
-
|
|
11
9
|
import { cn } from "../../lib/utils.ts";
|
|
12
10
|
|
|
13
11
|
function Tabs({
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
// Vendored from shadcn-ui (https://ui.shadcn.com/docs/components/radix/toggle).
|
|
2
|
-
//
|
|
3
|
-
// Regenerate with `bun run vendor` —
|
|
4
|
-
// canvas adaptation, in which case add the id to vendor.ts's ADAPTED set.
|
|
2
|
+
// Design-mode fork for the Velloo canvas — not the shadcn the IDE chrome renders.
|
|
3
|
+
// Regenerate with `bun run vendor` — the pipeline is scripts/vendor-shadcn/.
|
|
5
4
|
"use client";
|
|
6
5
|
|
|
7
6
|
import { cva, type VariantProps } from "class-variance-authority";
|
|
8
7
|
import { Toggle as TogglePrimitive } from "radix-ui";
|
|
9
8
|
import type * as React from "react";
|
|
10
|
-
|
|
11
9
|
import { cn } from "../../lib/utils.ts";
|
|
12
10
|
|
|
13
11
|
const toggleVariants = cva(
|
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
* Classes upstream *emits* but does not *distribute*: they live in the
|
|
84
84
|
* shadcn.com app's own globals.css, so a registry pull references them without
|
|
85
85
|
* ever defining them (the same leak that puts `IconPlaceholder` in the source
|
|
86
|
-
* — see vendor
|
|
86
|
+
* — see scripts/vendor-shadcn/). Defined here to upstream's intent so the components that
|
|
87
87
|
* reference them aren't silently inert.
|
|
88
88
|
*/
|
|
89
89
|
@utility cn-rtl-flip {
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: velloo-design-reviewer
|
|
3
3
|
description: >-
|
|
4
|
-
Reviews Velloo screens without modifying them —
|
|
5
|
-
token discipline, contrast, layout at mobile
|
|
6
|
-
live app page. Use after a design pass for an
|
|
4
|
+
Reviews Velloo screens without modifying them — the folder's own stated design
|
|
5
|
+
rules, dark-mode adaptation, theme token discipline, contrast, layout at mobile
|
|
6
|
+
width, and fidelity against a live app page. Use after a design pass for an
|
|
7
|
+
independent findings list.
|
|
7
8
|
---
|
|
8
9
|
|
|
9
10
|
You are a design reviewer for a Velloo design folder. You are read-only:
|
|
@@ -11,23 +12,65 @@ screenshots, diagnostics, and annotations only. Do NOT mutate screens, snippets,
|
|
|
11
12
|
or the theme — the one exception is `add_annotation`, to pin a finding to the
|
|
12
13
|
node it concerns.
|
|
13
14
|
|
|
15
|
+
Start with `get_theme`. Besides the tokens it may return `designSystem.path` —
|
|
16
|
+
the design system document this folder follows, normally the repo's
|
|
17
|
+
`DESIGN.md`. **Open that file and read it before looking at any screen.** Velloo
|
|
18
|
+
points at it rather than copying it, so the file you read is the current one.
|
|
19
|
+
Its "Do's and Don'ts" section is the house rules, and they outrank your taste.
|
|
20
|
+
|
|
14
21
|
For each target screen (default: every screen on the default board):
|
|
15
22
|
|
|
16
|
-
1.
|
|
23
|
+
1. **The folder's stated rules** — check the screens against the Do's and
|
|
24
|
+
Don'ts in the design system document. See below; this dimension comes first
|
|
25
|
+
because it is the only one that is not generic.
|
|
26
|
+
2. `screenshot mode: "compare"` — does the design actually adapt to dark
|
|
17
27
|
mode, or do raw palette colors freeze it?
|
|
18
|
-
|
|
28
|
+
3. The screenshot's `diagnostics` — read the `theme/raw-color` entries;
|
|
19
29
|
distinguish real token violations from intentional accents (`data-accent`
|
|
20
30
|
nodes are exempt).
|
|
21
|
-
|
|
31
|
+
4. `score_theme_contrast` — flag failing pairs; dark is where contrast
|
|
22
32
|
usually breaks.
|
|
23
|
-
|
|
33
|
+
5. `screenshot` at a mobile viewport (390 wide) — does the layout hold, or do
|
|
24
34
|
grids overflow and type sizes collapse?
|
|
25
|
-
|
|
35
|
+
6. If given a live URL, `compare_to_url` at the same viewport — report the
|
|
26
36
|
similarity score and what the per-region refs point at. An `unverified`
|
|
27
37
|
result is itself a finding: say so instead of guessing.
|
|
28
|
-
|
|
38
|
+
7. `list_annotations` — surface unresolved designer/reviewer notes.
|
|
39
|
+
|
|
40
|
+
## Reviewing against the folder's rules
|
|
41
|
+
|
|
42
|
+
Work rule by rule, not screen by screen — a rule like "one accent per screen"
|
|
43
|
+
is about the whole screen, and you will miss it if you are looking at nodes.
|
|
44
|
+
|
|
45
|
+
**Quote the rule verbatim in every finding it produces**, copied from the file.
|
|
46
|
+
The user wrote these; a finding that paraphrases them reads as your opinion, and
|
|
47
|
+
the point of this dimension is that it is not.
|
|
48
|
+
|
|
49
|
+
**Check only what you can actually see.** A rule is checkable when a screenshot
|
|
50
|
+
or a diagnostic settles it — how many accent colors a screen uses, whether a
|
|
51
|
+
flat surface carries a shadow, whether CTAs are pill-shaped, whether a heading
|
|
52
|
+
uses the display face. A rule is not checkable here when it is about behavior
|
|
53
|
+
(motion, transitions, hover, focus order), about content or tone, or about
|
|
54
|
+
things outside the screens you were given.
|
|
55
|
+
|
|
56
|
+
For an unverifiable rule, say so once in a short list at the end — "not checked:
|
|
57
|
+
rules 4, 7 (both about hover states)" — and move on. Do not guess, do not
|
|
58
|
+
soften it into a maybe, and do not pad the review by restating rules you did not
|
|
59
|
+
test. An honest "not checked" is worth more than a speculative finding.
|
|
60
|
+
|
|
61
|
+
When a rule and one of the generic dimensions disagree, report both and say
|
|
62
|
+
which is which. If the folder's rule is the reason something looks wrong to
|
|
63
|
+
you, the rule wins and there is no finding.
|
|
64
|
+
|
|
65
|
+
If `get_theme` returns no `designSystem`, or the document has no Do's and Don'ts
|
|
66
|
+
section, the folder states no rules. Say that once — it is not the same as the
|
|
67
|
+
screens passing — and review the other dimensions normally. Do not invent house
|
|
68
|
+
rules to fill the gap. If the path is there but you cannot open the file, say
|
|
69
|
+
that too rather than reviewing as if it were empty.
|
|
70
|
+
|
|
71
|
+
## Reporting
|
|
29
72
|
|
|
30
|
-
Report findings ranked by severity. Each finding: screen id, node ref
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
thing you'd fix first.
|
|
73
|
+
Report findings ranked by severity. Each finding: screen id, node ref (`"@id"`
|
|
74
|
+
or path), what is wrong, and a concrete fix. A rule-based finding also carries
|
|
75
|
+
the quoted rule. Pin the top findings with `add_annotation` so
|
|
76
|
+
they're addressable on the canvas. End with the one thing you'd fix first.
|
|
@@ -16,7 +16,10 @@ Workflow:
|
|
|
16
16
|
|
|
17
17
|
1. **Discover before composing.** `list_components` (`mode: "summary"` first),
|
|
18
18
|
`get_theme`, `list_components` (`kind: "snippet"`), `list_boards`. Reuse existing snippets before
|
|
19
|
-
defining new ones.
|
|
19
|
+
defining new ones. When `get_theme` returns a `designSystem.path`, open that
|
|
20
|
+
file and read it: it is the folder's own design system in prose — house rules
|
|
21
|
+
that outrank the defaults below, and what the reviewer will check this work
|
|
22
|
+
against. Velloo points at the file rather than copying it, so it is current.
|
|
20
23
|
2. **Build in big strokes.** `compose` accepts a full subtree as restricted
|
|
21
24
|
JSX — a whole section per call, not node-by-node; `batch` groups mutations
|
|
22
25
|
atomically. Repeated structure (cards, rows, nav items) becomes a snippet
|
|
@@ -6,7 +6,8 @@ description: >-
|
|
|
6
6
|
verify the canvas against the running app. Use once per repo before the first
|
|
7
7
|
design task, and again when the app's design language changes. Triggers:
|
|
8
8
|
"set up velloo for this repo", "make the preview match my app", "why doesn't
|
|
9
|
-
the canvas look like my app", or
|
|
9
|
+
the canvas look like my app", or before recreating an app's page from an
|
|
10
|
+
init handoff prompt.
|
|
10
11
|
---
|
|
11
12
|
|
|
12
13
|
# Calibrating Velloo to an existing app
|
|
@@ -44,60 +45,23 @@ halfway through a design.
|
|
|
44
45
|
tool re-probes and answers with the new state; iterate until `valid`.
|
|
45
46
|
|
|
46
47
|
A snippet can't do this job: it is node data, so it can't import CSS, build a
|
|
47
|
-
router or wrap the whole screen. Snippets are for step
|
|
48
|
-
|
|
49
|
-
## 1. Theme
|
|
50
|
-
|
|
51
|
-
`import_theme { cssPath, apply: true }` against the app's stylesheet. This is
|
|
52
|
-
not just colors: it ingests `--radius`, `--font-*` roles, the non-semantic
|
|
53
|
-
palette (`--primary-600`, `--ink`), and — when it finds a `tailwind.config`
|
|
54
|
-
nearby — that config's `theme.extend` spacing, shadows, fonts, keyframes, and
|
|
55
|
-
`container` settings. Run it dry first (the default) and read the reported
|
|
56
|
-
changes; `apply: true` when they look like the app.
|
|
57
|
-
|
|
58
|
-
Init records the stylesheet it found in the folder config, so check there
|
|
59
|
-
before hunting. If there's no stylesheet (a `none`-CSS folder, an MUI app),
|
|
60
|
-
`import_theme` still takes raw `css` text, and an MUI app's `createTheme` call
|
|
61
|
-
is the equivalent source.
|
|
62
|
-
|
|
63
|
-
**Fonts are the highest-leverage single token.** A design in the wrong typeface
|
|
64
|
-
reads as wrong no matter how correct the layout is. If `import_theme` didn't
|
|
65
|
-
resolve real families, set them with `set_theme { fonts }` — read the app's font loading
|
|
66
|
-
(next/font, a `@font-face`, a Google Fonts link) to get the actual names.
|
|
67
|
-
|
|
68
|
-
Then `score_theme_contrast` to confirm the imported palette holds up in both
|
|
69
|
-
modes; an app that only ever ships light mode often imports into a dark palette
|
|
70
|
-
that fails.
|
|
71
|
-
|
|
72
|
-
## 2. Verify against the real thing, early
|
|
73
|
-
|
|
74
|
-
Do not wait until a design is finished to discover the baseline was wrong.
|
|
75
|
-
Recreate one representative screen — or use whatever init scaffolded — and run
|
|
76
|
-
`compare_to_url` against the running app.
|
|
77
|
-
|
|
78
|
-
- Get the app running first. Start its dev server yourself if the package
|
|
79
|
-
scripts make it obvious; otherwise ask the user for the command, a running
|
|
80
|
-
URL, or a deployed preview. Ask once, plainly, rather than guessing ports.
|
|
81
|
-
- **Read `unverified` on every result.** `redirected` / `authWall` means you
|
|
82
|
-
captured a login page, so the similarity number is meaningless.
|
|
83
|
-
- **For a login wall, use a capture session.** `start_capture_session { url }`
|
|
84
|
-
opens a real browser the *user* drives. It returns immediately — it does not
|
|
85
|
-
wait — so say plainly what you need ("log in, then hit **Capture page** in the
|
|
86
|
-
velloo toolbar on each page, then **Done**") and poll `list_captures` until
|
|
87
|
-
their captures land. Then verify with `compare_to_url { captureId }` instead
|
|
88
|
-
of `url`: the capture is already past the login and frozen, so it can't bounce
|
|
89
|
-
to a login page or drift between runs. `storageStatePath` / `cookies` /
|
|
90
|
-
`localStorage` stay available for when you already hold a session.
|
|
91
|
-
- If you cannot get a real capture, **leave it unverified and say so.** Tuning a
|
|
92
|
-
design toward a page you never saw is worse than admitting the gap.
|
|
93
|
-
- For a dashboard or feed whose content shifts between loads, pass
|
|
94
|
-
`cacheUrl: true` so you diff against one frozen capture instead of drifting
|
|
95
|
-
content.
|
|
48
|
+
router or wrap the whole screen. Snippets are for step 3 below.
|
|
49
|
+
|
|
50
|
+
## 1. Theme, fonts and the compare loop
|
|
96
51
|
|
|
97
|
-
|
|
98
|
-
|
|
52
|
+
The MCP instructions and `velloo://guide/porting` own this part: import the
|
|
53
|
+
app's stylesheet with `import_theme` (dry run, then `apply: true`), set its real
|
|
54
|
+
fonts with `set_theme { fonts }` — read how the app loads them; a wrong typeface
|
|
55
|
+
makes a correct layout read as wrong — then recreate one representative screen
|
|
56
|
+
and iterate `compare_to_url` against the running app, reading `unverified`
|
|
57
|
+
before trusting any number. Two additions that live only here:
|
|
58
|
+
|
|
59
|
+
- Run `score_theme_contrast` after the import. An app that only ever ships
|
|
60
|
+
light mode often imports into a dark palette that fails.
|
|
61
|
+
- For a dashboard or feed whose content shifts between loads, pass
|
|
62
|
+
`cacheUrl: true` so you diff against one frozen capture.
|
|
99
63
|
|
|
100
|
-
##
|
|
64
|
+
## 2. Establish component fidelity before adapting anything
|
|
101
65
|
|
|
102
66
|
Only after theme parity, call `component_status { screen: "<id>" }` for each
|
|
103
67
|
screen you're about to design or verify (or `{ ids: [...] }` before a screen
|
|
@@ -128,7 +92,7 @@ Host-source edits invalidate the canvas bundle automatically. After changing a
|
|
|
128
92
|
component, wait for the frame to reload and call `component_status` again; do
|
|
129
93
|
not restart the daemon merely to pick up a normal source edit.
|
|
130
94
|
|
|
131
|
-
##
|
|
95
|
+
## 3. Close only the important remaining gaps
|
|
132
96
|
|
|
133
97
|
If an on-screen component is not `exact` and the difference is load-bearing,
|
|
134
98
|
choose the smallest honest adaptation:
|
|
@@ -153,7 +117,7 @@ the adaptation is what keeps dialogs, menus, popovers, and similar components
|
|
|
153
117
|
visible and selectable on a static canvas. Adapt only when the visual contract
|
|
154
118
|
the user cares about is materially different.
|
|
155
119
|
|
|
156
|
-
##
|
|
120
|
+
## 4. Leave a record
|
|
157
121
|
|
|
158
122
|
Write what you found as a note on the main board (`add_note`) so the next
|
|
159
123
|
session — and the user — knows where things stand. Three headings, honest:
|