Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions .claude/skills/openbot-screen-layout/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ behind a list. Twelve screens render through `PageShell` today and seven build t
It does not cover where the data comes from — that is `openbot-data-access`, which owns queries,
mutations, and the pending/error/empty/rows branching. It does not cover the gallery components
under `components/gallery`, which a Bot draws inside a conversation rather than a person navigating
to. It does not cover the primitives under `components/ui`, which are shadcn files with their own
upstream.
to. It does not cover the primitives under `components/ui`, which are this repository's own design-system
primitives: they began as shadcn output, but there is no upstream to re-pull from, and they are
formatted and linted like the rest of the app.

## The Default

Expand Down
25 changes: 0 additions & 25 deletions app/components.json

This file was deleted.

38 changes: 19 additions & 19 deletions app/src/components/ui/bubble.tsx
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import * as React from "react"
import { mergeProps } from "@base-ui/react/merge-props"
import { useRender } from "@base-ui/react/use-render"
import { cva, type VariantProps } from "class-variance-authority"
import type * as React from "react";
import { mergeProps } from "@base-ui/react/merge-props";
import { useRender } from "@base-ui/react/use-render";
import { cva, type VariantProps } from "class-variance-authority";

import { cn } from "@/lib/utils"
import { cn } from "@/lib/utils";

function BubbleGroup({ className, ...props }: React.ComponentProps<"div">) {
return (
Expand All @@ -12,7 +12,7 @@ function BubbleGroup({ className, ...props }: React.ComponentProps<"div">) {
className={cn("flex min-w-0 flex-col gap-2", className)}
{...props}
/>
)
);
}

const bubbleVariants = cva(
Expand All @@ -39,8 +39,8 @@ const bubbleVariants = cva(
defaultVariants: {
variant: "default",
},
}
)
},
);

function Bubble({
variant = "default",
Expand All @@ -49,7 +49,7 @@ function Bubble({
...props
}: React.ComponentProps<"div"> &
VariantProps<typeof bubbleVariants> & {
align?: "start" | "end"
align?: "start" | "end";
}) {
return (
<div
Expand All @@ -59,7 +59,7 @@ function Bubble({
className={cn(bubbleVariants({ variant }), className)}
{...props}
/>
)
);
}

function BubbleContent({
Expand All @@ -73,16 +73,16 @@ function BubbleContent({
{
className: cn(
"w-fit max-w-full min-w-0 overflow-hidden rounded-xl border border-transparent px-3 py-2 text-sm leading-relaxed wrap-break-word group-data-[align=end]/bubble:self-end [button]:text-left [button,a]:transition-colors [button,a]:outline-none [button,a]:focus-visible:border-ring [button,a]:focus-visible:ring-3 [button,a]:focus-visible:ring-ring/50",
className
className,
),
},
props
props,
),
render,
state: {
slot: "bubble-content",
},
})
});
}

const bubbleReactionsVariants = cva(
Expand All @@ -102,17 +102,17 @@ const bubbleReactionsVariants = cva(
side: "bottom",
align: "end",
},
}
)
},
);

function BubbleReactions({
side = "bottom",
align = "end",
className,
...props
}: React.ComponentProps<"div"> & {
align?: "start" | "end"
side?: "top" | "bottom"
align?: "start" | "end";
side?: "top" | "bottom";
}) {
return (
<div
Expand All @@ -122,7 +122,7 @@ function BubbleReactions({
className={cn(bubbleReactionsVariants({ side, align }), className)}
{...props}
/>
)
);
}

export { BubbleGroup, Bubble, BubbleContent, BubbleReactions }
export { BubbleGroup, Bubble, BubbleContent, BubbleReactions };
14 changes: 7 additions & 7 deletions app/src/components/ui/button.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { Button as ButtonPrimitive } from "@base-ui/react/button"
import { cva, type VariantProps } from "class-variance-authority"
import { Button as ButtonPrimitive } from "@base-ui/react/button";
import { cva, type VariantProps } from "class-variance-authority";

import { cn } from "@/lib/utils"
import { cn } from "@/lib/utils";

const buttonVariants = cva(
"group/button inline-flex shrink-0 items-center justify-center rounded-lg border border-transparent bg-clip-padding text-sm font-medium whitespace-nowrap transition-[color,background-color,border-color,box-shadow,translate,opacity] duration-150 ease-out outline-none select-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 active:not-aria-[haspopup]:translate-y-px disabled:pointer-events-none disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
Expand Down Expand Up @@ -37,8 +37,8 @@ const buttonVariants = cva(
variant: "default",
size: "default",
},
}
)
},
);

function Button({
className,
Expand Down Expand Up @@ -72,7 +72,7 @@ function Button({
render={render}
{...props}
/>
)
);
}

export { Button, buttonVariants }
export { Button, buttonVariants };
Loading
Loading