Skip to content

Commit 102173f

Browse files
committed
many update
1 parent 6aabac2 commit 102173f

File tree

8 files changed

+329
-23
lines changed

8 files changed

+329
-23
lines changed

components.json

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": true,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "tailwind.config.js",
8+
"css": "styles/globals.css",
9+
"baseColor": "slate",
10+
"cssVariables": true
11+
},
12+
"aliases": {
13+
"components": "@/components",
14+
"utils": "@/lib/utils"
15+
}
16+
}

components/ui/calendar.tsx

+64
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
"use client"
2+
3+
import * as React from "react"
4+
import { ChevronLeft, ChevronRight } from "lucide-react"
5+
import { DayPicker } from "react-day-picker"
6+
7+
import { cn } from "@/lib/utils"
8+
import { buttonVariants } from "@/components/ui/button"
9+
10+
export type CalendarProps = React.ComponentProps<typeof DayPicker>
11+
12+
function Calendar({
13+
className,
14+
classNames,
15+
showOutsideDays = true,
16+
...props
17+
}: CalendarProps) {
18+
return (
19+
<DayPicker
20+
showOutsideDays={showOutsideDays}
21+
className={cn("p-3", className)}
22+
classNames={{
23+
months: "flex flex-col sm:flex-row space-y-4 sm:space-x-4 sm:space-y-0",
24+
month: "space-y-4",
25+
caption: "flex justify-center pt-1 relative items-center",
26+
caption_label: "text-sm font-medium",
27+
nav: "space-x-1 flex items-center",
28+
nav_button: cn(
29+
buttonVariants({ variant: "outline" }),
30+
"h-7 w-7 bg-transparent p-0 opacity-50 hover:opacity-100"
31+
),
32+
nav_button_previous: "absolute left-1",
33+
nav_button_next: "absolute right-1",
34+
table: "w-full border-collapse space-y-1",
35+
head_row: "flex",
36+
head_cell:
37+
"text-muted-foreground rounded-md w-9 font-normal text-[0.8rem]",
38+
row: "flex w-full mt-2",
39+
cell: "text-center text-sm p-0 relative [&:has([aria-selected])]:bg-accent first:[&:has([aria-selected])]:rounded-l-md last:[&:has([aria-selected])]:rounded-r-md focus-within:relative focus-within:z-20",
40+
day: cn(
41+
buttonVariants({ variant: "ghost" }),
42+
"h-9 w-9 p-0 font-normal aria-selected:opacity-100"
43+
),
44+
day_selected:
45+
"bg-primary text-primary-foreground hover:bg-primary hover:text-primary-foreground focus:bg-primary focus:text-primary-foreground",
46+
day_today: "bg-accent text-accent-foreground",
47+
day_outside: "text-muted-foreground opacity-50",
48+
day_disabled: "text-muted-foreground opacity-50",
49+
day_range_middle:
50+
"aria-selected:bg-accent aria-selected:text-accent-foreground",
51+
day_hidden: "invisible",
52+
...classNames,
53+
}}
54+
components={{
55+
IconLeft: ({ ...props }) => <ChevronLeft className="h-4 w-4" />,
56+
IconRight: ({ ...props }) => <ChevronRight className="h-4 w-4" />,
57+
}}
58+
{...props}
59+
/>
60+
)
61+
}
62+
Calendar.displayName = "Calendar"
63+
64+
export { Calendar }

lib/utils.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { ClassValue, clsx } from "clsx"
1+
import { clsx, type ClassValue } from "clsx"
22
import { twMerge } from "tailwind-merge"
33

44
export function cn(...inputs: ClassValue[]) {

package-lock.json

+46-3
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+4-1
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
"@radix-ui/react-dialog": "^1.0.2",
2727
"@radix-ui/react-dropdown-menu": "^2.0.1",
2828
"@radix-ui/react-hover-card": "^1.0.3",
29+
"@radix-ui/react-icons": "^1.3.0",
2930
"@radix-ui/react-label": "^2.0.0",
3031
"@radix-ui/react-menubar": "^1.0.0",
3132
"@radix-ui/react-navigation-menu": "^1.1.1",
@@ -51,6 +52,7 @@
5152
"class-variance-authority": "^0.4.0",
5253
"clsx": "^1.2.1",
5354
"cmdk": "^0.2.0",
55+
"date-fns": "^2.30.0",
5456
"firebase": "^10.1.0",
5557
"highlight.js": "^11.7.0",
5658
"html-to-image": "^1.11.11",
@@ -62,6 +64,7 @@
6264
"prism-themes": "^1.9.0",
6365
"prismjs": "^1.29.0",
6466
"react": "^18.2.0",
67+
"react-day-picker": "^8.8.0",
6568
"react-dom": "^18.2.0",
6669
"react-hook-form": "^7.43.7",
6770
"react-infinite-scroll-component": "^6.1.0",
@@ -72,7 +75,7 @@
7275
"sharp": "^0.31.3",
7376
"tailwind-merge": "^1.14.0",
7477
"tailwind-scrollbar-hide": "^1.1.7",
75-
"tailwindcss-animate": "^1.0.5",
78+
"tailwindcss-animate": "^1.0.6",
7679
"yup": "^1.0.2"
7780
},
7881
"devDependencies": {

pages/form/[form]/index.tsx

+76-6
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,23 @@ import { yupResolver } from "@hookform/resolvers/yup"
2525
import sdk, { Project } from "@stackblitz/sdk"
2626
import hljs from "highlight.js"
2727
import {
28+
Calendar,
29+
CircleDot,
2830
Eye,
2931
EyeOff,
3032
FileCog,
3133
FileQuestion,
3234
Heart,
3335
LinkIcon,
36+
List,
37+
ListChecks,
3438
Loader2,
3539
MessageSquare,
3640
Plus,
41+
Save,
3742
Send,
3843
Settings,
44+
Type,
3945
User,
4046
View,
4147
} from "lucide-react"
@@ -68,6 +74,7 @@ import {
6874
Dialog,
6975
DialogContent,
7076
DialogDescription,
77+
DialogFooter,
7178
DialogHeader,
7279
DialogTrigger,
7380
} from "@/components/ui/dialog"
@@ -149,6 +156,8 @@ export default function FormPage() {
149156
})
150157
}
151158

159+
// fonction qui prend en param un text et fonction de cela ajoute une <div></div> dans la div #questions - avec un switch case on regarde la valeur du text si c'est "input" on ajoute une div avec un input, si c'est "textarea" on ajoute une div avec un textarea etc...
160+
152161
return (
153162
<Layout>
154163
<Head>
@@ -192,18 +201,79 @@ export default function FormPage() {
192201
<TabsTrigger value="responses">
193202
<MessageSquare className="mr-2 h-4 w-4" />
194203
Responses
204+
<span className="flex items-center justify-center bg-slate-200 dark:bg-slate-700 ml-2 px-1 rounded-md">
205+
{dataForm.data.responses.length}
206+
</span>
195207
</TabsTrigger>
196208
<TabsTrigger value="publish">
197209
<Send className="mr-2 h-4 w-4" />
198210
Publish
199211
</TabsTrigger>
200212
</div>
201213
</TabsList>
202-
<TabsContent
203-
className="border-none p-0 pt-4"
204-
value="questions"
205-
></TabsContent>
206-
<TabsContent className="border-none p-0 pt-4" value="responses">
214+
<TabsContent className="border-none p-0 pt-4" value="questions">
215+
<div className="w-full flex flex-col sm:flex-row items-start gap-4">
216+
<div className="w-full sm:w-[250px] shrink-0 rounded-md flex flex-col gap-2 items-start">
217+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
218+
<Type className="h-5 w-5" />
219+
<span className="ml-2 text-sm font-semibold">
220+
Short answer
221+
</span>
222+
</button>
223+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
224+
<Type className="h-5 w-5" />
225+
<span className="ml-2 text-sm font-semibold">
226+
Long answer
227+
</span>
228+
</button>
229+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
230+
<CircleDot className="h-5 w-5" />
231+
<span className="ml-2 text-sm font-semibold">
232+
Unique choice
233+
</span>
234+
</button>
235+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
236+
<ListChecks className="h-5 w-5" />
237+
<span className="ml-2 text-sm font-semibold">
238+
Multi choice
239+
</span>
240+
</button>
241+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
242+
<List className="h-5 w-5" />
243+
<span className="ml-2 text-sm font-semibold">
244+
List of choices
245+
</span>
246+
</button>
247+
<button className="hover:bg-slate-100 hover:dark:bg-slate-800 flex items-center justify-start gap-1 py-2 px-4 w-full rounded-md">
248+
<Calendar className="h-5 w-5" />
249+
<span className="ml-2 text-sm font-semibold">Date</span>
250+
</button>
251+
<Separator className="hidden sm:block w-full my-2" />
252+
<div className="hidden sm:flex px-4 flex-col gap-2">
253+
<span className="text-sm">
254+
click on a button to add it in the questions
255+
</span>
256+
</div>
257+
</div>
258+
<Separator className="block sm:hidden w-full my-2" />
259+
<div
260+
id="questions"
261+
className="relative w-full rounded-md px-4 pt-7 pb-4 border overflow-hidden"
262+
>
263+
<div
264+
className={`absolute inset-x-0 top-0 h-3 w-full`}
265+
style={{
266+
background: `${dataForm.data.color}`,
267+
}}
268+
></div>
269+
<Button variant="outline">
270+
<Save className="mr-2 h-4 w-4" />
271+
Save questions
272+
</Button>
273+
</div>
274+
</div>
275+
</TabsContent>
276+
<TabsContent className="border-none p-0 pt-2" value="responses">
207277
{dataForm.data.responses &&
208278
dataForm.data.responses.length > 0 ? (
209279
<div></div>
@@ -215,7 +285,7 @@ export default function FormPage() {
215285
/>
216286
)}
217287
</TabsContent>
218-
<TabsContent className="border-none p-0 pt-4" value="publish">
288+
<TabsContent className="border-none p-0 pt-2" value="publish">
219289
<div className="flex h-[450px] shrink-0 items-center justify-center rounded-md border border-dashed border-slate-300 dark:border-slate-700">
220290
<div className="mx-auto flex w-full max-w-xl flex-col gap-4 items-center justify-center text-center p-4">
221291
<Link

0 commit comments

Comments
 (0)