Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
113 commits
Select commit Hold shift + click to select a range
7014d32
port shadcn toggle component and docs into solid-ui dev
joeygrable94 Aug 9, 2026
73dac7c
port shadcn toggle-group component and docs into solid-ui dev
joeygrable94 Aug 10, 2026
8384779
feat: skeleton
joeygrable94 Aug 10, 2026
3d63765
feat: tabs
joeygrable94 Aug 11, 2026
ff46dda
Merge branch 'feature/tabs' into feature/all-components
joeygrable94 Aug 11, 2026
b730d78
Merge branch 'feature/toggle' into feature/all-components
joeygrable94 Aug 11, 2026
81cf69a
feat: separator
joeygrable94 Aug 11, 2026
33e32a5
Merge branch 'feature/separator' into feature/all-components
joeygrable94 Aug 11, 2026
972a1aa
feat: item
joeygrable94 Aug 11, 2026
2cdc5d3
Merge branch 'feature/item' into feature/all-components
joeygrable94 Aug 11, 2026
d222713
feat: spinner
joeygrable94 Aug 11, 2026
18c9831
Merge branch 'feature/spinner' into feature/all-components
joeygrable94 Aug 11, 2026
cad2543
feat: hover-card
joeygrable94 Aug 11, 2026
e30c38e
Merge branch 'feature/hover-card' into feature/all-components
joeygrable94 Aug 11, 2026
66f5ed4
feat: kbd
joeygrable94 Aug 11, 2026
4546070
Merge branch 'feature/kbd' into feature/all-components
joeygrable94 Aug 11, 2026
82cf9ed
feat: empty
joeygrable94 Aug 12, 2026
e465af9
Merge branch 'feature/kbd' into feature/empty
joeygrable94 Aug 12, 2026
45cfa65
Merge branch 'feature/empty' into feature/spinner
joeygrable94 Aug 12, 2026
43afed6
Merge branch 'feature/spinner' into feature/all-components
joeygrable94 Aug 12, 2026
2d78aaa
feat: input
joeygrable94 Aug 12, 2026
2cb935c
Merge branch 'feature/spinner' into feature/input
joeygrable94 Aug 12, 2026
f444e3f
Merge branch 'feature/input' into feature/all-components
joeygrable94 Aug 12, 2026
9b10ff6
feat: input-otp
joeygrable94 Aug 12, 2026
3e89d7b
Merge branch 'feature/input' into feature/all-components
joeygrable94 Aug 12, 2026
0ba4085
feat: popover
joeygrable94 Aug 12, 2026
90c0ebd
Merge branch 'feature/popover' into feature/all-components
joeygrable94 Aug 12, 2026
29fbfaa
feat: progress
joeygrable94 Aug 12, 2026
fd1c71e
Merge branch 'feature/progress' into feature/all-components
joeygrable94 Aug 12, 2026
d6c2d9d
feat: progress
joeygrable94 Aug 12, 2026
bf2e36b
Merge branch 'feature/progress' into feature/all-components
joeygrable94 Aug 12, 2026
3eafff1
feat: pagination
joeygrable94 Aug 12, 2026
53b09bd
Merge branch 'feature/pagination' into feature/all-components
joeygrable94 Aug 12, 2026
5b7b56f
feat: drawer
joeygrable94 Aug 12, 2026
f7436e3
Merge branch 'feature/drawer' into feature/all-components
joeygrable94 Aug 12, 2026
5718b0c
fix: badge polymorphic error
joeygrable94 Aug 12, 2026
6ffe623
Merge branch 'feature/badge' into feature/drawer
joeygrable94 Aug 12, 2026
b756ef8
Merge branch 'feature/badge' into feature/all-components
joeygrable94 Aug 12, 2026
e7e6ecb
Merge branch 'feature/drawer' into feature/all-components
joeygrable94 Aug 12, 2026
743b486
feat: table
joeygrable94 Aug 12, 2026
1f278c1
Merge branch 'feature/table' into feature/all-components
joeygrable94 Aug 12, 2026
11291e6
feat: menubar
joeygrable94 Aug 13, 2026
410f15c
Merge branch 'feature/menubar' into feature/all-components
joeygrable94 Aug 13, 2026
ba6dd53
fix: package-lock
joeygrable94 Aug 13, 2026
ffc7dbc
feat: navigation-menu (wip)
joeygrable94 Aug 13, 2026
436a906
Merge branch 'feature/nav-menu' into feature/all-components
joeygrable94 Aug 13, 2026
6864872
feat: native-select
joeygrable94 Aug 13, 2026
114c560
Merge branch 'feature/native-select' into feature/all-components
joeygrable94 Aug 13, 2026
da7cdbf
feat: sheet
joeygrable94 Aug 13, 2026
d66b423
Merge branch 'feature/sheet' into feature/all-components
joeygrable94 Aug 13, 2026
3ac55f3
fix: sheet example registryDependencies
joeygrable94 Aug 13, 2026
c184002
Merge branch 'feature/sheet' into feature/all-components
joeygrable94 Aug 13, 2026
9be6f8b
feat: textarea
joeygrable94 Aug 13, 2026
e16424d
Merge branch 'feature/textarea' into feature/all-components
joeygrable94 Aug 13, 2026
d99ee3d
feat: toast
joeygrable94 Aug 14, 2026
f62eca0
Merge branch 'feature/toast' into feature/all-components
joeygrable94 Aug 14, 2026
e94dbae
Merge branch 'feature/badge' into feature/combobox
joeygrable94 Aug 14, 2026
184df00
feat: combobox
joeygrable94 Aug 15, 2026
df86aa4
Merge branch 'feature/combobox' into feature/all-components
joeygrable94 Aug 15, 2026
ec496ec
feat: tooltip
joeygrable94 Aug 15, 2026
26e0951
Merge branch 'feature/tooltip' into feature/all-components
joeygrable94 Aug 15, 2026
a314b8b
feat: resizable
joeygrable94 Aug 16, 2026
7f9ebf3
Merge branch 'feature/resizable' into feature/all-components
joeygrable94 Aug 16, 2026
9a665e4
feat: scroll-area
joeygrable94 Aug 17, 2026
9d317c6
Merge branch 'feature/scroll-area' into feature/all-components
joeygrable94 Aug 17, 2026
c283810
feat: calendar
joeygrable94 Aug 17, 2026
7831c2c
Merge branch 'feature/calendar' into feature/all-components
joeygrable94 Aug 17, 2026
4a6a0e1
added docs page for calendar date-picker component examples
joeygrable94 Aug 17, 2026
9a33ac2
Merge branch 'feature/calendar' into feature/all-components
joeygrable94 Aug 17, 2026
50d497f
Merge branch 'feature/sheet' into feature/sidebar
joeygrable94 Aug 18, 2026
4a96bb5
Merge branch 'feature/skeleton' into feature/sidebar
joeygrable94 Aug 18, 2026
4bd5f34
Merge branch 'feature/tooltip' into feature/sidebar
joeygrable94 Aug 18, 2026
e8a3116
- merge stash
joeygrable94 Aug 18, 2026
be1de81
Merge branch 'feature/kbd' into feature/sidebar
joeygrable94 Aug 18, 2026
b55ec5c
feat: sidebar (WIP)
joeygrable94 Aug 18, 2026
293f522
feat: sidebar (WIP)
joeygrable94 Aug 18, 2026
65ac2d8
feat: marker
joeygrable94 Aug 18, 2026
3d69349
Merge branch 'feature/marker' into feature/all-components
joeygrable94 Aug 18, 2026
ab387d0
feat: attachment
joeygrable94 Aug 18, 2026
454a17c
Merge branch 'feature/attachment' into feature/all-components
joeygrable94 Aug 18, 2026
ebd3eb8
Merge branch 'feature/popover' into feature/bubble
joeygrable94 Aug 18, 2026
89bcf41
feat: bubble
joeygrable94 Aug 18, 2026
dcbcf84
Merge branch 'feature/attachment' into feature/message
joeygrable94 Aug 18, 2026
74261ca
Merge branch 'feature/marker' into feature/message
joeygrable94 Aug 18, 2026
524a914
feat: message
joeygrable94 Aug 18, 2026
ca94a0a
Merge branch 'feature/message' into feature/all-components
joeygrable94 Aug 18, 2026
3bd7b6b
fix: deduped registry items
joeygrable94 Aug 18, 2026
14907d0
feat: chart
joeygrable94 Aug 18, 2026
f0ea38a
Merge branch 'feature/chart' into feature/all-components
joeygrable94 Aug 18, 2026
dc64c34
Merge branch 'feature/hover-card' into feature/message-scroller
joeygrable94 Aug 19, 2026
23669ac
Merge branch 'feature/empty' into feature/message-scroller
joeygrable94 Aug 19, 2026
54c6740
Merge branch 'feature/toggle' into feature/message-scroller
joeygrable94 Aug 19, 2026
a622659
feat: message-scroller
joeygrable94 Aug 19, 2026
ebf3194
feat: message-scroller
joeygrable94 Aug 19, 2026
7d4c15b
Merge branch 'feature/message-scroller' into feature/all-components
joeygrable94 Aug 19, 2026
4a8dc29
fix: sidebar styles, updated component preview
joeygrable94 Aug 19, 2026
caf3db2
Merge branch 'feature/sidebar' into feature/all-components
joeygrable94 Aug 19, 2026
dd268f1
feat: scrollable
joeygrable94 Aug 19, 2026
6e9ea30
Merge branch 'feature/command' into feature/all-components
joeygrable94 Aug 19, 2026
77dd454
- fix tabs trigger outline on mdx-components
joeygrable94 Aug 19, 2026
d26d398
fix: styles on bubble demos
joeygrable94 Aug 19, 2026
24ea78f
Merge branch 'feature/bubble' into feature/all-components
joeygrable94 Aug 19, 2026
e0591f7
fix: combobox invalid styles
joeygrable94 Aug 19, 2026
8bf8fa1
Merge branch 'feature/combobox' into feature/all-components
joeygrable94 Aug 19, 2026
05ca9bf
fix: input, input-group, and input-otp styles
joeygrable94 Aug 19, 2026
b0788f0
Merge branch 'feature/input' into feature/combobox
joeygrable94 Aug 19, 2026
511c8e9
Merge branch 'feature/combobox' into feature/all-components
joeygrable94 Aug 19, 2026
5009e3d
fix: navigation-menu styles
joeygrable94 Aug 19, 2026
3254bfc
Merge branch 'feature/nav-menu' into feature/all-components
joeygrable94 Aug 19, 2026
2fd394a
merge tooltip to questionnaire
joeygrable94 Aug 19, 2026
edcf2d5
Merge branch 'feature/native-select' into feature/questionnaire
joeygrable94 Aug 19, 2026
6007308
feat: questionnaire
joeygrable94 Aug 19, 2026
5acdd6d
Merge branch 'feature/questionnaire' into feature/all-components
joeygrable94 Aug 19, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
8 changes: 8 additions & 0 deletions apps/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,9 @@
"dependencies": {
"@corvu/calendar": "^0.1.2",
"@corvu/drawer": "^0.2.4",
"@corvu/otp-field": "^0.1.4",
"@corvu/resizable": "^0.2.5",
"@date-fns/tz": "^1.5.0",
"@fontsource-variable/geist": "^5.2.8",
"@fontsource-variable/geist-mono": "^5.2.7",
"@kobalte/core": "^0.13.11",
Expand All @@ -26,12 +29,17 @@
"chokidar": "^5.0.0",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"date-fns": "^4.4.0",
"cmdk-solid": "^1.1.2",
"embla-carousel": "^8.6.0",
"embla-carousel-autoplay": "^8.6.0",
"embla-carousel-solid": "^8.6.0",
"input-otp": "^1.4.2",
"lucide-solid": "^0.575.0",
"rimraf": "^6.0.1",
"solid-js": "^1.9.9",
"solid-sonner": "^0.3.1",
"solid-recharts": "^1.0.1",
"tailwind-merge": "^3.3.1",
"vinxi": "^0.5.7",
"zod": "^4.1.12"
Expand Down
Binary file added apps/docs/public/sidebar-structure.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
163 changes: 140 additions & 23 deletions apps/docs/src/components/component-preview.tsx
Original file line number Diff line number Diff line change
@@ -1,34 +1,151 @@
import { type ComponentProps, createMemo, splitProps } from "solid-js"
import {
type ComponentProps,
children,
createMemo,
createSignal,
type ParentProps,
Show,
Suspense,
splitProps,
} from "solid-js";
import { Dynamic } from "solid-js/web";
import { cn } from "~/lib/utils";
import { getDocsExample } from "~/lib/docs-examples";
import { Button } from "~/registry/ui/button";
import { Tabs } from "~/registry/ui/tabs";

import { Index } from "~/registry/__index__"
type ComponentPreviewProps = ParentProps<{
name: string;
align?: "center" | "start" | "end";
class?: string;
previewClass?: string;
hideCode?: boolean;
/**
* Contain full-app demos (e.g. sidebar) whose components use
* `position: fixed` inside the preview frame. `contain-layout` turns the
* preview into the containing block of fixed descendants so they stop
* escaping to the page viewport, and the data-slot overrides size the
* sidebar primitives to the frame instead of the viewport.
*/
contained?: boolean;
}>;

export function ComponentPreview(props: ComponentProps<"div"> & { name: string }) {
const [local, others] = splitProps(props, ["name"])
export function ComponentPreview(props: ComponentPreviewProps) {
const [local, others] = splitProps(props, [
"name",
"align",
"class",
"previewClass",
"hideCode",
"contained",
"children",
]);
const [expanded, setExpanded] = createSignal(false);
const source = children(() => local.children);
const example = createMemo(() => getDocsExample(local.name));

const Preview = createMemo(() => {
const Component = Index[local.name]?.component

if (!Component) {
return (
<p class="text-muted-foreground text-sm">
Component{" "}
<code class="relative rounded bg-muted px-[0.3rem] py-[0.2rem] font-mono text-sm">
{local.name}
</code>{" "}
not found in registry.
</p>
)
}
return (
<div
data-slot="component-preview"
data-not-typeset
class={cn(
"group relative mt-4 mb-12 flex flex-col overflow-hidden rounded-2xl border",
local.class,
)}
{...others}
>
<div
data-slot="preview"
data-align={local.align ?? "center"}
class={cn(
"preview relative flex min-h-72 w-full justify-center p-10 data-[align=center]:items-center data-[align=end]:items-end data-[align=start]:items-start",
local.contained && [
"overflow-hidden contain-layout",
"[&_[data-slot=sidebar-container]]:h-full",
"[&_[data-slot=sidebar-wrapper]]:h-full [&_[data-slot=sidebar-wrapper]]:min-h-0",
],
local.previewClass,
)}
>
<Show
when={example()}
fallback={
<p class="text-muted-foreground text-sm">
Preview <code>{local.name}</code> was not found.
</p>
}
>
{(Example) => (
<Suspense>
<Dynamic component={Example()} />
</Suspense>
)}
</Show>
</div>

return <Component />
})
<Show when={!local.hideCode}>
<div
data-slot="component-preview-source"
data-expanded={expanded()}
class="relative overflow-hidden border-t bg-neutral-100 dark:bg-zinc-900 [&_.expressive-code]:mx-0 [&_.expressive-code]:mt-0 [&_.expressive-code_.frame_pre]:rounded-none"
>
<div
class={cn(
"relative",
expanded()
? "max-h-72 overflow-auto"
: "max-h-[108px] overflow-hidden",
)}
>
{source()}
</div>
<Show when={!expanded()}>
<div class="pointer-events-none absolute inset-x-0 bottom-0 h-20 bg-linear-to-t from-neutral-100 via-neutral-100/80 to-transparent dark:from-zinc-900 dark:via-zinc-900/80" />
</Show>
<Show when={!expanded()}>
<div class="absolute inset-0 flex items-center justify-center pb-4">
<Button
type="button"
size="sm"
variant="outline"
class="relative z-10 rounded-lg bg-background shadow-none"
onClick={() => setExpanded(true)}
>
View Code
</Button>
</div>
</Show>
</div>
</Show>
</div>
);
}

export function ComponentSource(props: ParentProps<{ class?: string }>) {
const [local, others] = splitProps(props, ["class", "children"]);
return (
<div
class="preview flex min-h-[450px] w-full items-center justify-center rounded-lg border p-10"
data-slot="component-source"
data-not-typeset
class={cn("relative mt-6 [&_.expressive-code]:mt-0", local.class)}
{...others}
>
<Preview />
{local.children}
</div>
)
);
}

export function CodeTabs(props: ComponentProps<typeof Tabs>) {
const [local, others] = splitProps(props, ["class"]);
return (
<Tabs
data-not-typeset
defaultValue="cli"
class={cn(
"relative mt-6 w-full gap-2 [&>[data-slot=tabs-list]]:gap-6 [&>[data-slot=tabs-list]]:p-0 [&>[data-slot=tabs-list]>[data-slot=tabs-trigger]]:rounded-none [&>[data-slot=tabs-list]>[data-slot=tabs-trigger]]:px-0 [&>[data-slot=tabs-list]>[data-slot=tabs-trigger]]:py-1",
local.class,
)}
{...others}
/>
);
}
2 changes: 1 addition & 1 deletion apps/docs/src/components/docs-layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export function DocsLayout(props: ParentProps) {

return (
<div class="container-wrapper flex flex-1 flex-col px-2">
<SidebarProvider class="3xl:fixed:container min-h-min flex-1 items-start 3xl:fixed:px-3 px-0 [--sidebar-width:220px] [--top-spacing:0] lg:grid lg:grid-cols-[var(--sidebar-width)_minmax(0,1fr)] lg:[--sidebar-width:240px] lg:[--top-spacing:calc(var(--spacing)*4)]">
<SidebarProvider class="min-h-min flex-1 items-start px-0 has-data-[variant=inset]:bg-transparent [--sidebar-width:--spacing(72)] [--toc-width:--spacing(64)] [--top-spacing:0] lg:grid lg:grid-cols-[var(--sidebar-width)_minmax(0,1fr)] lg:[--top-spacing:--spacing(4)] 3xl:fixed:container 3xl:fixed:px-3">
<MainNavigation />
<div class="size-full">
<div class="flex items-stretch text-[1.05rem] sm:text-[15px] xl:w-full" data-slot="docs">
Expand Down
Loading