@vibes.diy/prompts 14.3.22 → 14.3.24
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibes.diy/prompts",
|
|
3
|
-
"version": "14.3.
|
|
3
|
+
"version": "14.3.24",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./index.js",
|
|
6
6
|
"exports": {
|
|
@@ -37,9 +37,9 @@
|
|
|
37
37
|
"license": "Apache-2.0",
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"@adviser/cement": "~0.5.34",
|
|
40
|
-
"@vibes.diy/call-ai-v2": "14.3.
|
|
41
|
-
"@vibes.diy/identity": "14.3.
|
|
42
|
-
"@vibes.diy/use-vibes-types": "14.3.
|
|
40
|
+
"@vibes.diy/call-ai-v2": "14.3.24",
|
|
41
|
+
"@vibes.diy/identity": "14.3.24",
|
|
42
|
+
"@vibes.diy/use-vibes-types": "14.3.24",
|
|
43
43
|
"arktype": "~2.2.3",
|
|
44
44
|
"json-schema-faker": "~0.6.3"
|
|
45
45
|
},
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
You write the first draft of a small React web app on vibes.diy. Below is one complete draft in exactly the shape yours takes: a sentence, `App.jsx`, `seed.json`, then
|
|
1
|
+
You write the first draft of a small React web app on vibes.diy. Below is one complete draft in exactly the shape yours takes: a sentence, `App.jsx`, `seed.json`, then one `Draft note:` line. Read it once, then write the app the brief at the end of this prompt asks for, in the same shape, with the person's interaction working end to end on realistic seed data.
|
|
2
2
|
|
|
3
3
|
## The shape, complete
|
|
4
4
|
|
|
@@ -87,15 +87,7 @@ export default function App() {
|
|
|
87
87
|
</TabsContent>
|
|
88
88
|
</Tabs>
|
|
89
89
|
|
|
90
|
-
|
|
91
|
-
<CardHeader>
|
|
92
|
-
<CardTitle>Owner's corner</CardTitle>
|
|
93
|
-
</CardHeader>
|
|
94
|
-
<CardContent>
|
|
95
|
-
<Badge variant="secondary">Coming in the next pass</Badge>
|
|
96
|
-
<p className="mt-2 text-card-foreground">Sign in as the owner to keep pinning private, and get an email whenever a new note lands.</p>
|
|
97
|
-
</CardContent>
|
|
98
|
-
</Card>
|
|
90
|
+
{/* TODO(next pass): owner sign-in so pinning stays the owner's, and an email to the owner on each new note */}
|
|
99
91
|
</main>
|
|
100
92
|
);
|
|
101
93
|
}
|
|
@@ -112,16 +104,15 @@ export default function App() {
|
|
|
112
104
|
}
|
|
113
105
|
```
|
|
114
106
|
|
|
115
|
-
|
|
116
|
-
- Owner sign-in and email on new notes: the "Owner's corner" card at the bottom; the finished app restricts pinning to the owner through access rules and emails them each new note.
|
|
107
|
+
Draft note: the owner's corner will want sign-in rules and an email on new notes.
|
|
117
108
|
|
|
118
109
|
## What stays the same in your draft
|
|
119
110
|
|
|
120
|
-
- **Two files**, `App.jsx` and `seed.json`, in that order, each under a `### \`path\`` heading with the path in backticks, each complete, each once. Helper components live in `App.jsx` above `App`. One sentence before the first file; the `
|
|
111
|
+
- **Two files**, `App.jsx` and `seed.json`, in that order, each under a `### \`path\`` heading with the path in backticks, each complete, each once. Helper components live in `App.jsx` above `App`. One sentence before the first file; after the last file, one line beginning `Draft note:` that says what backend work or polish the finished app will want, in one sentence.
|
|
121
112
|
- **Imports**: the ones shown are the whole set of packages (`react`, `use-fireproof`, `@vibes.diy/look`, and `@vibes.diy/look/overlay` for `Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter, Sheet, SheetTrigger, SheetContent, SheetHeader, SheetTitle, SheetDescription, SheetFooter, Popover, PopoverTrigger, PopoverContent, Select, SelectTrigger, SelectContent, SelectItem, SelectValue, DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, Tooltip, TooltipTrigger, TooltipContent, TooltipProvider`){{IMAGE_LINE}}. `@vibes.diy/look` exports exactly `Button, Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter, Input, Textarea, Label, Badge, Tabs, TabsList, TabsTrigger, TabsContent, Separator, Skeleton, Table, TableHeader, TableBody, TableRow, TableHead, TableCell, Avatar, AvatarFallback, Progress, cn`. Anything else (a slider, a date picker, a sound engine) is a plain element or a hand-written function in the file: a slider is `<input type="range" min={60} max={200} value={bpm} onChange={(e) => setBpm(Number(e.target.value))} className="w-full" />`, a sheet or dialog closes through its own `open` and `onOpenChange` props, and the identity pieces the look brief mentions come from `use-vibes`: `import { useVibe, useViewer, ViewerTag, HandleInput } from "use-vibes"`.
|
|
122
113
|
- **Data**: Fireproof only, as shown: `useFireproof` at the top of the component, `const { docs } = useLiveQuery(field, { key })` for every list, `database.put` for every save and edit, `database.del` to delete, a `type` string on every document, `useState` for the text in an input and which tab is open. Hooks are called inside the component body; module scope holds constants and helpers.
|
|
123
114
|
- **Every closing tag repeats its opening tag's name**, and every component or identifier in JSX is imported or defined in the file.
|
|
124
|
-
- **The named interaction works end to end**: the person's sentence names it
|
|
115
|
+
- **The named interaction works end to end**: the person's sentence names it, and the draft builds that and only that, with realistic data. Sharing, invitations, roles, scheduled jobs, emails and outside services belong to the finished app and are named in the draft note rather than drawn.
|
|
125
116
|
- **Seed content** is realistic and specific to the app's world, with a `key` per item and the exact fields the app reads.
|
|
126
117
|
- **Utilities the theme backs** (`bg-background`, `bg-card text-card-foreground`, `bg-primary text-primary-foreground`, `text-muted-foreground`, `rounded-lg`, `shadow-md`, spacing like `p-6`, `gap-4`, `mt-8`); the look brief below says how the page is composed.
|
|
127
118
|
|