love-ui 1.0.0 → 1.0.2
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 +9 -9
- package/dist/index.cjs +1 -1
- package/dist/index.js +1 -1
- package/license.md +1 -1
- package/package.json +3 -1
- package/packages/love-ui/package.json +29 -0
- package/packages/patterns/avatar/square/avatar-square-1.tsx +2 -2
- package/packages/patterns/avatar/square/avatar-square-4.tsx +2 -2
- package/packages/patterns/avatar/square/avatar-square-5.tsx +2 -2
- package/packages/patterns/avatar/square/avatar-square-6.tsx +2 -2
- package/packages/patterns/avatar/square/avatar-square-7.tsx +2 -2
- package/packages/patterns/avatar/standard/avatar-standard-1.tsx +2 -2
- package/packages/patterns/avatar/standard/avatar-standard-4.tsx +2 -2
- package/packages/patterns/avatar/standard/avatar-standard-5.tsx +2 -2
- package/packages/patterns/avatar/standard/avatar-standard-6.tsx +2 -2
- package/packages/patterns/avatar/standard/avatar-standard-7.tsx +2 -2
- package/packages/patterns/combobox/rich-content/combobox-rich-content-1.tsx +3 -3
- package/packages/patterns/combobox/rich-content/combobox-rich-content-4.tsx +3 -3
- package/packages/patterns/dropdown-menu/profile/dropdown-menu-profile-1.tsx +4 -4
- package/packages/patterns/dropdown-menu/profile/dropdown-menu-profile-2.tsx +6 -6
- package/packages/patterns/dropdown-menu/profile/dropdown-menu-profile-3.tsx +7 -7
- package/packages/patterns/dropdown-menu/profile/dropdown-menu-profile-4.tsx +6 -6
- package/packages/patterns/dropdown-menu/profile/dropdown-menu-profile-5.tsx +4 -4
- package/packages/patterns/hover-card/profile/hover-card-profile-1.tsx +3 -3
- package/packages/patterns/hover-card/profile/hover-card-profile-2.tsx +3 -3
- package/packages/patterns/hover-card/profile/hover-card-profile-3.tsx +4 -4
- package/packages/patterns/hover-card/profile/hover-card-profile-4.tsx +4 -4
- package/packages/patterns/hover-card/profile/hover-card-profile-5.tsx +3 -3
- package/packages/patterns/input/validation/input-validation-2.tsx +1 -1
- package/packages/patterns/item/interactive/item-interactive-2.tsx +2 -2
- package/packages/patterns/item/layout/item-layout-2.tsx +2 -2
- package/packages/patterns/item/media/item-media-2.tsx +2 -2
- package/packages/patterns/scroll-area/layout/scroll-area-layout-3.tsx +6 -6
- package/packages/patterns/table/standard/table-standard-2.tsx +2 -2
package/README.md
CHANGED
|
@@ -7,12 +7,12 @@
|
|
|
7
7
|
<img src="https://img.shields.io/github/license/loveconnor/love-ui" alt="License" />
|
|
8
8
|
</div>
|
|
9
9
|
|
|
10
|
-
[Explore the full documentation and component gallery →](https://www.
|
|
10
|
+
[Explore the full documentation and component gallery →](https://www.loveui-docs.vercel.app)
|
|
11
11
|
|
|
12
12
|
## Table of Contents
|
|
13
13
|
- [What is LoveUI?](#what-is-loveui)
|
|
14
14
|
- [Highlights](#highlights)
|
|
15
|
-
- [
|
|
15
|
+
- [Base Components, Features, Sections & Snippets](#base-components-features-sections--snippets)
|
|
16
16
|
- [Component Catalog](#component-catalog)
|
|
17
17
|
- [How It Works](#how-it-works)
|
|
18
18
|
- [Getting Started](#getting-started)
|
|
@@ -40,11 +40,11 @@ The library blends headless primitives, fully wired feature components, reusable
|
|
|
40
40
|
- **Tooling included:** A shared `@repo/typescript-config`, a `turbo`-powered monorepo, and docs you can run locally keep contributions and customization smooth.
|
|
41
41
|
- **MIT licensed & community driven:** Transparent codebase, open contribution process, and a rapidly growing set of components.
|
|
42
42
|
|
|
43
|
-
##
|
|
44
|
-
- **
|
|
45
|
-
- **
|
|
46
|
-
- **
|
|
47
|
-
- **
|
|
43
|
+
## Base Components, Features, Sections & Snippets
|
|
44
|
+
- **Base Components** live in the `loveui` package. They are foundational UI pieces (Button, Input, Switch, Dialog, etc.) that mirror shadcn/ui ergonomics while staying unstyled enough to serve as building blocks for your own components.
|
|
45
|
+
- **Features** are installable, production-ready experiences (e.g., Gantt, Kanban, QR Code). Each ships with its logic, accessibility wiring, and Tailwind styling so you can drop it into production immediately.
|
|
46
|
+
- **Sections** are pre-built page slices such as pricing, onboarding, and dashboards. They compose multiple features into opinionated experiences so you can scaffold pages in minutes.
|
|
47
|
+
- **Snippets** live in `@repo/patterns` and provide smaller interaction recipes (input groups, form controls, command menus) built on shadcn/ui primitives. Use them as references or copy/paste snippets when designing your own system.
|
|
48
48
|
|
|
49
49
|
## Component Catalog
|
|
50
50
|
Install any component with `npx loveui add <name>` (multiple names supported). Each entry below installs into `@/components/love-ui/<name>` with demo-ready examples.
|
|
@@ -99,7 +99,7 @@ Support packages:
|
|
|
99
99
|
- `@repo/typescript-config` — shared TS configs for packages and apps.
|
|
100
100
|
|
|
101
101
|
## How It Works
|
|
102
|
-
- The `loveui` npm package exposes a CLI (`npx loveui add ...`) that wraps the shadcn/ui generator and fetches blueprints hosted on [
|
|
102
|
+
- The `loveui` npm package exposes a CLI (`npx loveui add ...`) that wraps the shadcn/ui generator and fetches blueprints hosted on [loveui-docs.vercel.app](https://www.loveui-docs.vercel.app).
|
|
103
103
|
- Each blueprint expands into React + TypeScript + Tailwind source files inside your project. You are free to refactor, rename, or theme them like native code.
|
|
104
104
|
- Components share tokens, utilities, and patterns so installs stay consistent. Optional dependencies are declared per component so your bundle only includes what you use.
|
|
105
105
|
- The monorepo powering the library uses Next.js + Turborepo, making it easy to run the docs or contribute new components.
|
|
@@ -193,7 +193,7 @@ LoveUI exposes an MCP server so AI coding assistants can browse the component ca
|
|
|
193
193
|
"args": [
|
|
194
194
|
"-y",
|
|
195
195
|
"mcp-remote",
|
|
196
|
-
"https://www.
|
|
196
|
+
"https://www.loveui-docs.vercel.app/api/mcp/mcp"
|
|
197
197
|
]
|
|
198
198
|
}
|
|
199
199
|
}
|
package/dist/index.cjs
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
"use strict";var t=require("child_process"),o=process.argv.slice(2);(o.length<2||o[0]!=="add")&&(console.log("Usage: npx loveui add [...packages]"),process.exit(1));var r=o.slice(1);for(let e of r){if(!e.trim())continue;console.log(`Adding ${e} component...`);let n
|
|
2
|
+
"use strict"; var t = require("child_process"), o = process.argv.slice(2); (o.length < 2 || o[0] !== "add") && (console.log("Usage: npx loveui add [...packages]"), process.exit(1)); var r = o.slice(1); for (let e of r) { if (!e.trim()) continue; console.log(`Adding ${e} component...`); let n = `npx -y shadcn@latest add ${(e === "ai" ? new URL("all.json", "https://registry.ai-sdk.dev/") : new URL(`r/${e}.json`, "https://loveui-docs.vercel.app")).toString()}`, s = (0, t.spawnSync)(n, { stdio: "inherit", shell: !0 }); s.error ? (console.error(`Failed to add ${e}:`, s.error.message), process.exit(1)) : s.status !== 0 && (console.error(`Command failed with exit code ${s.status}`), process.exit(1)) }
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import{spawnSync as n}from"child_process";var o=process.argv.slice(2);(o.length<2||o[0]!=="add")&&(console.log("Usage: npx loveui add [...packages]"),process.exit(1));var r=o.slice(1);for(let e of r){if(!e.trim())continue;console.log(`Adding ${e} component...`);let t
|
|
2
|
+
import { spawnSync as n } from "child_process"; var o = process.argv.slice(2); (o.length < 2 || o[0] !== "add") && (console.log("Usage: npx loveui add [...packages]"), process.exit(1)); var r = o.slice(1); for (let e of r) { if (!e.trim()) continue; console.log(`Adding ${e} component...`); let t = `npx -y shadcn@latest add ${(e === "ai" ? new URL("all.json", "https://registry.ai-sdk.dev/") : new URL(`r/${e}.json`, "https://loveui-docs.vercel.app")).toString()}`, s = n(t, { stdio: "inherit", shell: !0 }); s.error ? (console.error(`Failed to add ${e}:`, s.error.message), process.exit(1)) : s.status !== 0 && (console.error(`Command failed with exit code ${s.status}`), process.exit(1)) }
|
package/license.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
Copyright (c) 2023 — Present
|
|
1
|
+
Copyright (c) 2023 — Present Connor Love
|
|
2
2
|
|
|
3
3
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
4
4
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "love-ui",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"bin": {
|
|
5
5
|
"loveui": "dist/index.js",
|
|
6
6
|
"love-ui": "dist/index.js"
|
|
@@ -37,6 +37,8 @@
|
|
|
37
37
|
"@auto-it/first-time-contributor": "^11.3.0",
|
|
38
38
|
"@biomejs/biome": "2.2.5",
|
|
39
39
|
"@types/node": "^24.7.2",
|
|
40
|
+
"@types/react": "^19.2.2",
|
|
41
|
+
"@types/react-dom": "^19.2.1",
|
|
40
42
|
"turbo": "^2.5.8",
|
|
41
43
|
"typescript": "^5.9.3",
|
|
42
44
|
"ultracite": "^5.6.2"
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "loveui",
|
|
3
|
+
"version": "1.0.2",
|
|
4
|
+
"private": true,
|
|
5
|
+
"main": "./index.ts",
|
|
6
|
+
"types": "./index.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"import": "./index.ts",
|
|
10
|
+
"require": "./index.ts"
|
|
11
|
+
},
|
|
12
|
+
"./components/*": "./components/*"
|
|
13
|
+
},
|
|
14
|
+
"peerDependencies": {
|
|
15
|
+
"react": "^18.0.0 || ^19.0.0",
|
|
16
|
+
"react-dom": "^18.0.0 || ^19.0.0"
|
|
17
|
+
},
|
|
18
|
+
"dependencies": {
|
|
19
|
+
"@headlessui/react": "^2.1.8",
|
|
20
|
+
"clsx": "^2.1.1",
|
|
21
|
+
"lucide-react": "^0.545.0",
|
|
22
|
+
"motion": "^12.23.24"
|
|
23
|
+
},
|
|
24
|
+
"devDependencies": {
|
|
25
|
+
"@types/react": "^19.2.2",
|
|
26
|
+
"@types/react-dom": "^19.2.1"
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
@@ -5,8 +5,8 @@ export const title = "Avatar";
|
|
|
5
5
|
const Example = () => (
|
|
6
6
|
<Avatar className="rounded-lg">
|
|
7
7
|
<AvatarImage
|
|
8
|
-
alt="@
|
|
9
|
-
src="https://github.com/
|
|
8
|
+
alt="@loveconnor"
|
|
9
|
+
src="https://github.com/loveconnor.png"
|
|
10
10
|
/>
|
|
11
11
|
<AvatarFallback className="rounded-lg">HB</AvatarFallback>
|
|
12
12
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar className="rounded-lg">
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback className="rounded-lg">HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar className="rounded-lg">
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback className="rounded-lg">HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -7,8 +7,8 @@ const Example = () => (
|
|
|
7
7
|
<div className="relative w-fit">
|
|
8
8
|
<Avatar className="rounded-lg">
|
|
9
9
|
<AvatarImage
|
|
10
|
-
alt="@
|
|
11
|
-
src="https://github.com/
|
|
10
|
+
alt="@loveconnor"
|
|
11
|
+
src="https://github.com/loveconnor.png"
|
|
12
12
|
/>
|
|
13
13
|
<AvatarFallback className="rounded-lg">HB</AvatarFallback>
|
|
14
14
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar className="rounded-lg">
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback className="rounded-lg">HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -5,8 +5,8 @@ export const title = "Avatar";
|
|
|
5
5
|
const Example = () => (
|
|
6
6
|
<Avatar>
|
|
7
7
|
<AvatarImage
|
|
8
|
-
alt="@
|
|
9
|
-
src="https://github.com/
|
|
8
|
+
alt="@loveconnor"
|
|
9
|
+
src="https://github.com/loveconnor.png"
|
|
10
10
|
/>
|
|
11
11
|
<AvatarFallback>HB</AvatarFallback>
|
|
12
12
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar>
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback>HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar>
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback>HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -7,8 +7,8 @@ const Example = () => (
|
|
|
7
7
|
<div className="relative w-fit">
|
|
8
8
|
<Avatar>
|
|
9
9
|
<AvatarImage
|
|
10
|
-
alt="@
|
|
11
|
-
src="https://github.com/
|
|
10
|
+
alt="@loveconnor"
|
|
11
|
+
src="https://github.com/loveconnor.png"
|
|
12
12
|
/>
|
|
13
13
|
<AvatarFallback>HB</AvatarFallback>
|
|
14
14
|
</Avatar>
|
|
@@ -6,8 +6,8 @@ const Example = () => (
|
|
|
6
6
|
<div className="relative w-fit">
|
|
7
7
|
<Avatar>
|
|
8
8
|
<AvatarImage
|
|
9
|
-
alt="@
|
|
10
|
-
src="https://github.com/
|
|
9
|
+
alt="@loveconnor"
|
|
10
|
+
src="https://github.com/loveconnor.png"
|
|
11
11
|
/>
|
|
12
12
|
<AvatarFallback>HB</AvatarFallback>
|
|
13
13
|
</Avatar>
|
|
@@ -23,9 +23,9 @@ export const title = "Items with Avatars";
|
|
|
23
23
|
|
|
24
24
|
const users = [
|
|
25
25
|
{
|
|
26
|
-
value: "
|
|
27
|
-
label: "
|
|
28
|
-
avatar: "https://github.com/
|
|
26
|
+
value: "loveconnor",
|
|
27
|
+
label: "Connor Love",
|
|
28
|
+
avatar: "https://github.com/loveconnor.png",
|
|
29
29
|
},
|
|
30
30
|
{
|
|
31
31
|
value: "shadcn",
|
|
@@ -23,11 +23,11 @@ export const title = "Items with Metadata";
|
|
|
23
23
|
|
|
24
24
|
const members = [
|
|
25
25
|
{
|
|
26
|
-
value: "
|
|
27
|
-
name: "
|
|
26
|
+
value: "loveconnor",
|
|
27
|
+
name: "Connor Love",
|
|
28
28
|
email: "hayden@vercel.com",
|
|
29
29
|
role: "Design Engineer",
|
|
30
|
-
avatar: "https://github.com/
|
|
30
|
+
avatar: "https://github.com/loveconnor.png",
|
|
31
31
|
},
|
|
32
32
|
{
|
|
33
33
|
value: "shadcn",
|
|
@@ -20,8 +20,8 @@ const Example = () => (
|
|
|
20
20
|
<Button className="relative h-10 w-10 rounded-full" variant="ghost">
|
|
21
21
|
<Avatar>
|
|
22
22
|
<AvatarImage
|
|
23
|
-
alt="@
|
|
24
|
-
src="https://github.com/
|
|
23
|
+
alt="@loveconnor"
|
|
24
|
+
src="https://github.com/loveconnor.png"
|
|
25
25
|
/>
|
|
26
26
|
<AvatarFallback>HB</AvatarFallback>
|
|
27
27
|
</Avatar>
|
|
@@ -30,9 +30,9 @@ const Example = () => (
|
|
|
30
30
|
<DropdownMenuContent align="end" className="w-56">
|
|
31
31
|
<DropdownMenuLabel className="font-normal">
|
|
32
32
|
<div className="flex flex-col space-y-1">
|
|
33
|
-
<p className="font-medium text-sm leading-none">
|
|
33
|
+
<p className="font-medium text-sm leading-none">Connor Love</p>
|
|
34
34
|
<p className="text-muted-foreground text-xs leading-none">
|
|
35
|
-
hello@
|
|
35
|
+
hello@loveconnor.com
|
|
36
36
|
</p>
|
|
37
37
|
</div>
|
|
38
38
|
</DropdownMenuLabel>
|
|
@@ -21,8 +21,8 @@ const Example = () => (
|
|
|
21
21
|
<Button className="relative h-10 w-10 rounded-full" variant="ghost">
|
|
22
22
|
<Avatar>
|
|
23
23
|
<AvatarImage
|
|
24
|
-
alt="@
|
|
25
|
-
src="https://github.com/
|
|
24
|
+
alt="@loveconnor"
|
|
25
|
+
src="https://github.com/loveconnor.png"
|
|
26
26
|
/>
|
|
27
27
|
<AvatarFallback>HB</AvatarFallback>
|
|
28
28
|
</Avatar>
|
|
@@ -34,15 +34,15 @@ const Example = () => (
|
|
|
34
34
|
<div className="flex items-center gap-3">
|
|
35
35
|
<Avatar className="h-12 w-12">
|
|
36
36
|
<AvatarImage
|
|
37
|
-
alt="@
|
|
38
|
-
src="https://github.com/
|
|
37
|
+
alt="@loveconnor"
|
|
38
|
+
src="https://github.com/loveconnor.png"
|
|
39
39
|
/>
|
|
40
40
|
<AvatarFallback>HB</AvatarFallback>
|
|
41
41
|
</Avatar>
|
|
42
42
|
<div className="flex flex-col space-y-1">
|
|
43
|
-
<p className="font-medium text-sm leading-none">
|
|
43
|
+
<p className="font-medium text-sm leading-none">Connor Love</p>
|
|
44
44
|
<p className="text-muted-foreground text-xs leading-none">
|
|
45
|
-
hello@
|
|
45
|
+
hello@loveconnor.com
|
|
46
46
|
</p>
|
|
47
47
|
<Badge className="w-fit text-xs" variant="secondary">
|
|
48
48
|
Pro
|
|
@@ -29,12 +29,12 @@ const Example = () => (
|
|
|
29
29
|
<Button className="gap-2" variant="outline">
|
|
30
30
|
<Avatar className="h-6 w-6">
|
|
31
31
|
<AvatarImage
|
|
32
|
-
alt="@
|
|
33
|
-
src="https://github.com/
|
|
32
|
+
alt="@loveconnor"
|
|
33
|
+
src="https://github.com/loveconnor.png"
|
|
34
34
|
/>
|
|
35
35
|
<AvatarFallback>HB</AvatarFallback>
|
|
36
36
|
</Avatar>
|
|
37
|
-
<span>
|
|
37
|
+
<span>Connor Love</span>
|
|
38
38
|
</Button>
|
|
39
39
|
</DropdownMenuTrigger>
|
|
40
40
|
<DropdownMenuContent align="end" className="w-64">
|
|
@@ -42,15 +42,15 @@ const Example = () => (
|
|
|
42
42
|
<div className="flex items-center gap-3 pb-2">
|
|
43
43
|
<Avatar className="h-10 w-10">
|
|
44
44
|
<AvatarImage
|
|
45
|
-
alt="@
|
|
46
|
-
src="https://github.com/
|
|
45
|
+
alt="@loveconnor"
|
|
46
|
+
src="https://github.com/loveconnor.png"
|
|
47
47
|
/>
|
|
48
48
|
<AvatarFallback>HB</AvatarFallback>
|
|
49
49
|
</Avatar>
|
|
50
50
|
<div className="flex flex-col space-y-1">
|
|
51
|
-
<p className="font-medium text-sm leading-none">
|
|
51
|
+
<p className="font-medium text-sm leading-none">Connor Love</p>
|
|
52
52
|
<p className="text-muted-foreground text-xs leading-none">
|
|
53
|
-
hello@
|
|
53
|
+
hello@loveconnor.com
|
|
54
54
|
</p>
|
|
55
55
|
</div>
|
|
56
56
|
</div>
|
|
@@ -21,15 +21,15 @@ const Example = () => (
|
|
|
21
21
|
<div className="flex items-center gap-2">
|
|
22
22
|
<Avatar className="h-6 w-6">
|
|
23
23
|
<AvatarImage
|
|
24
|
-
alt="@
|
|
25
|
-
src="https://github.com/
|
|
24
|
+
alt="@loveconnor"
|
|
25
|
+
src="https://github.com/loveconnor.png"
|
|
26
26
|
/>
|
|
27
27
|
<AvatarFallback>HB</AvatarFallback>
|
|
28
28
|
</Avatar>
|
|
29
29
|
<div className="flex flex-col items-start">
|
|
30
30
|
<span className="font-medium text-sm">Personal Account</span>
|
|
31
31
|
<span className="text-muted-foreground text-xs">
|
|
32
|
-
hello@
|
|
32
|
+
hello@loveconnor.com
|
|
33
33
|
</span>
|
|
34
34
|
</div>
|
|
35
35
|
</div>
|
|
@@ -42,15 +42,15 @@ const Example = () => (
|
|
|
42
42
|
<DropdownMenuItem className="flex items-center gap-2">
|
|
43
43
|
<Avatar className="h-8 w-8">
|
|
44
44
|
<AvatarImage
|
|
45
|
-
alt="@
|
|
46
|
-
src="https://github.com/
|
|
45
|
+
alt="@loveconnor"
|
|
46
|
+
src="https://github.com/loveconnor.png"
|
|
47
47
|
/>
|
|
48
48
|
<AvatarFallback>HB</AvatarFallback>
|
|
49
49
|
</Avatar>
|
|
50
50
|
<div className="flex flex-col">
|
|
51
51
|
<span className="font-medium text-sm">Personal Account</span>
|
|
52
52
|
<span className="text-muted-foreground text-xs">
|
|
53
|
-
hello@
|
|
53
|
+
hello@loveconnor.com
|
|
54
54
|
</span>
|
|
55
55
|
</div>
|
|
56
56
|
<Check className="ml-auto h-4 w-4" />
|
|
@@ -27,8 +27,8 @@ const Example = () => {
|
|
|
27
27
|
<Button className="relative h-10 w-10 rounded-full" variant="ghost">
|
|
28
28
|
<Avatar>
|
|
29
29
|
<AvatarImage
|
|
30
|
-
alt="@
|
|
31
|
-
src="https://github.com/
|
|
30
|
+
alt="@loveconnor"
|
|
31
|
+
src="https://github.com/loveconnor.png"
|
|
32
32
|
/>
|
|
33
33
|
<AvatarFallback>HB</AvatarFallback>
|
|
34
34
|
</Avatar>
|
|
@@ -37,9 +37,9 @@ const Example = () => {
|
|
|
37
37
|
<DropdownMenuContent align="end" className="w-64">
|
|
38
38
|
<DropdownMenuLabel className="font-normal">
|
|
39
39
|
<div className="flex flex-col space-y-1">
|
|
40
|
-
<p className="font-medium text-sm leading-none">
|
|
40
|
+
<p className="font-medium text-sm leading-none">Connor Love</p>
|
|
41
41
|
<p className="text-muted-foreground text-xs leading-none">
|
|
42
|
-
hello@
|
|
42
|
+
hello@loveconnor.com
|
|
43
43
|
</p>
|
|
44
44
|
</div>
|
|
45
45
|
</DropdownMenuLabel>
|
|
@@ -13,17 +13,17 @@ const Example = () => (
|
|
|
13
13
|
<HoverCard>
|
|
14
14
|
<HoverCardTrigger asChild>
|
|
15
15
|
<a className="font-medium text-sm underline" href="#">
|
|
16
|
-
@
|
|
16
|
+
@loveconnor
|
|
17
17
|
</a>
|
|
18
18
|
</HoverCardTrigger>
|
|
19
19
|
<HoverCardContent>
|
|
20
20
|
<div className="flex gap-4">
|
|
21
21
|
<Avatar>
|
|
22
|
-
<AvatarImage src="https://github.com/
|
|
22
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
23
23
|
<AvatarFallback>HB</AvatarFallback>
|
|
24
24
|
</Avatar>
|
|
25
25
|
<div className="space-y-1">
|
|
26
|
-
<h4 className="font-semibold text-sm">
|
|
26
|
+
<h4 className="font-semibold text-sm">Connor Love</h4>
|
|
27
27
|
<p className="text-muted-foreground text-sm">
|
|
28
28
|
Product designer and developer
|
|
29
29
|
</p>
|
|
@@ -14,17 +14,17 @@ const Example = () => (
|
|
|
14
14
|
<HoverCard>
|
|
15
15
|
<HoverCardTrigger asChild>
|
|
16
16
|
<a className="font-medium text-sm underline" href="#">
|
|
17
|
-
@
|
|
17
|
+
@loveconnor
|
|
18
18
|
</a>
|
|
19
19
|
</HoverCardTrigger>
|
|
20
20
|
<HoverCardContent>
|
|
21
21
|
<div className="flex justify-between gap-4">
|
|
22
22
|
<Avatar>
|
|
23
|
-
<AvatarImage src="https://github.com/
|
|
23
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
24
24
|
<AvatarFallback>HB</AvatarFallback>
|
|
25
25
|
</Avatar>
|
|
26
26
|
<div className="flex-1 space-y-1">
|
|
27
|
-
<h4 className="font-semibold text-sm">
|
|
27
|
+
<h4 className="font-semibold text-sm">Connor Love</h4>
|
|
28
28
|
<p className="text-muted-foreground text-sm">
|
|
29
29
|
Product designer and developer
|
|
30
30
|
</p>
|
|
@@ -15,21 +15,21 @@ const Example = () => (
|
|
|
15
15
|
<HoverCardTrigger asChild>
|
|
16
16
|
<a className="flex items-center gap-2 font-medium text-sm" href="#">
|
|
17
17
|
<Avatar className="h-6 w-6">
|
|
18
|
-
<AvatarImage src="https://github.com/
|
|
18
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
19
19
|
<AvatarFallback>HB</AvatarFallback>
|
|
20
20
|
</Avatar>
|
|
21
|
-
<span>
|
|
21
|
+
<span>Connor Love</span>
|
|
22
22
|
</a>
|
|
23
23
|
</HoverCardTrigger>
|
|
24
24
|
<HoverCardContent>
|
|
25
25
|
<div className="flex gap-4">
|
|
26
26
|
<Avatar>
|
|
27
|
-
<AvatarImage src="https://github.com/
|
|
27
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
28
28
|
<AvatarFallback>HB</AvatarFallback>
|
|
29
29
|
</Avatar>
|
|
30
30
|
<div className="flex-1 space-y-1">
|
|
31
31
|
<div className="flex items-center gap-2">
|
|
32
|
-
<h4 className="font-semibold text-sm">
|
|
32
|
+
<h4 className="font-semibold text-sm">Connor Love</h4>
|
|
33
33
|
<Badge variant="secondary">Pro</Badge>
|
|
34
34
|
</div>
|
|
35
35
|
<p className="text-muted-foreground text-sm">
|
|
@@ -14,19 +14,19 @@ const Example = () => (
|
|
|
14
14
|
<HoverCard>
|
|
15
15
|
<HoverCardTrigger asChild>
|
|
16
16
|
<a className="font-medium text-sm underline" href="#">
|
|
17
|
-
@
|
|
17
|
+
@loveconnor
|
|
18
18
|
</a>
|
|
19
19
|
</HoverCardTrigger>
|
|
20
20
|
<HoverCardContent className="w-80">
|
|
21
21
|
<div className="flex gap-4">
|
|
22
22
|
<Avatar className="h-12 w-12">
|
|
23
|
-
<AvatarImage src="https://github.com/
|
|
23
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
24
24
|
<AvatarFallback>HB</AvatarFallback>
|
|
25
25
|
</Avatar>
|
|
26
26
|
<div className="flex-1 space-y-2">
|
|
27
27
|
<div>
|
|
28
|
-
<h4 className="font-semibold text-sm">
|
|
29
|
-
<p className="text-muted-foreground text-sm">@
|
|
28
|
+
<h4 className="font-semibold text-sm">Connor Love</h4>
|
|
29
|
+
<p className="text-muted-foreground text-sm">@loveconnor</p>
|
|
30
30
|
</div>
|
|
31
31
|
<p className="text-sm">
|
|
32
32
|
Product designer and developer building tools for creators.
|
|
@@ -14,18 +14,18 @@ const Example = () => (
|
|
|
14
14
|
<HoverCard>
|
|
15
15
|
<HoverCardTrigger asChild>
|
|
16
16
|
<a className="font-medium text-sm underline" href="#">
|
|
17
|
-
@
|
|
17
|
+
@loveconnor
|
|
18
18
|
</a>
|
|
19
19
|
</HoverCardTrigger>
|
|
20
20
|
<HoverCardContent className="w-80">
|
|
21
21
|
<div className="space-y-3">
|
|
22
22
|
<div className="flex gap-4">
|
|
23
23
|
<Avatar className="h-12 w-12">
|
|
24
|
-
<AvatarImage src="https://github.com/
|
|
24
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
25
25
|
<AvatarFallback>HB</AvatarFallback>
|
|
26
26
|
</Avatar>
|
|
27
27
|
<div className="flex-1 space-y-1">
|
|
28
|
-
<h4 className="font-semibold text-sm">
|
|
28
|
+
<h4 className="font-semibold text-sm">Connor Love</h4>
|
|
29
29
|
<p className="text-muted-foreground text-sm">
|
|
30
30
|
Product designer and developer
|
|
31
31
|
</p>
|
|
@@ -11,7 +11,7 @@ const Example = () => (
|
|
|
11
11
|
<Label htmlFor="username-success">Username</Label>
|
|
12
12
|
<Input
|
|
13
13
|
className="border-green-600 bg-background focus-visible:border-green-600 focus-visible:ring-green-600/50"
|
|
14
|
-
defaultValue="
|
|
14
|
+
defaultValue="loveconnor"
|
|
15
15
|
id="username-success"
|
|
16
16
|
placeholder="johndoe"
|
|
17
17
|
/>
|
|
@@ -21,8 +21,8 @@ export const title = "Item in Dropdown";
|
|
|
21
21
|
|
|
22
22
|
const people = [
|
|
23
23
|
{
|
|
24
|
-
username: "
|
|
25
|
-
avatar: "https://github.com/
|
|
24
|
+
username: "loveconnor",
|
|
25
|
+
avatar: "https://github.com/loveconnor.png",
|
|
26
26
|
email: "h****n@vercel.com",
|
|
27
27
|
},
|
|
28
28
|
{
|
|
@@ -17,8 +17,8 @@ export const title = "Item Group";
|
|
|
17
17
|
|
|
18
18
|
const people = [
|
|
19
19
|
{
|
|
20
|
-
username: "
|
|
21
|
-
avatar: "https://github.com/
|
|
20
|
+
username: "loveconnor",
|
|
21
|
+
avatar: "https://github.com/loveconnor.png",
|
|
22
22
|
email: "h****n@vercel.com",
|
|
23
23
|
},
|
|
24
24
|
{
|
|
@@ -17,12 +17,12 @@ const Example = () => (
|
|
|
17
17
|
<Item className="bg-background" variant="outline">
|
|
18
18
|
<ItemMedia>
|
|
19
19
|
<Avatar className="size-10">
|
|
20
|
-
<AvatarImage src="https://github.com/
|
|
20
|
+
<AvatarImage src="https://github.com/loveconnor.png" />
|
|
21
21
|
<AvatarFallback>HB</AvatarFallback>
|
|
22
22
|
</Avatar>
|
|
23
23
|
</ItemMedia>
|
|
24
24
|
<ItemContent>
|
|
25
|
-
<ItemTitle>
|
|
25
|
+
<ItemTitle>Connor Love</ItemTitle>
|
|
26
26
|
<ItemDescription>Last seen 5 months ago</ItemDescription>
|
|
27
27
|
</ItemContent>
|
|
28
28
|
<ItemActions>
|
|
@@ -6,8 +6,8 @@ export const title = "Chat Messages";
|
|
|
6
6
|
const messages = [
|
|
7
7
|
{
|
|
8
8
|
id: 1,
|
|
9
|
-
user: "
|
|
10
|
-
avatar: "https://github.com/
|
|
9
|
+
user: "Connor Love",
|
|
10
|
+
avatar: "https://github.com/loveconnor.png",
|
|
11
11
|
initials: "HB",
|
|
12
12
|
message: "Hey everyone! Just launched another AI Elements update!",
|
|
13
13
|
time: "10:30 AM",
|
|
@@ -38,8 +38,8 @@ const messages = [
|
|
|
38
38
|
},
|
|
39
39
|
{
|
|
40
40
|
id: 4,
|
|
41
|
-
user: "
|
|
42
|
-
avatar: "https://github.com/
|
|
41
|
+
user: "Connor Love",
|
|
42
|
+
avatar: "https://github.com/loveconnor.png",
|
|
43
43
|
initials: "HB",
|
|
44
44
|
message: "What about me??",
|
|
45
45
|
time: "10:37 AM",
|
|
@@ -54,8 +54,8 @@ const messages = [
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
id: 7,
|
|
57
|
-
user: "
|
|
58
|
-
avatar: "https://github.com/
|
|
57
|
+
user: "Connor Love",
|
|
58
|
+
avatar: "https://github.com/loveconnor.png",
|
|
59
59
|
initials: "HB",
|
|
60
60
|
message: "A'ight chief 😭",
|
|
61
61
|
time: "10:47 AM",
|
|
@@ -12,10 +12,10 @@ export const title = "Table with Avatar";
|
|
|
12
12
|
|
|
13
13
|
const users = [
|
|
14
14
|
{
|
|
15
|
-
name: "
|
|
15
|
+
name: "Connor Love",
|
|
16
16
|
email: "h****n@vercel.com",
|
|
17
17
|
role: "Product Designer",
|
|
18
|
-
avatar: "https://github.com/
|
|
18
|
+
avatar: "https://github.com/loveconnor.png",
|
|
19
19
|
initials: "HB",
|
|
20
20
|
},
|
|
21
21
|
{
|