create-croissant 0.1.39 → 0.1.41

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.
Files changed (164) hide show
  1. package/dist/index.js +5 -5
  2. package/package.json +7 -10
  3. package/template/.oxlintignore +11 -0
  4. package/template/README.md +6 -6
  5. package/template/apps/desktop/README.md +1 -1
  6. package/template/apps/desktop/electron-builder.yml +6 -6
  7. package/template/apps/desktop/electron.vite.config.ts +8 -8
  8. package/template/apps/desktop/package.json +4 -13
  9. package/template/apps/desktop/src/main/index.ts +32 -32
  10. package/template/apps/desktop/src/preload/index.d.ts +3 -3
  11. package/template/apps/desktop/src/preload/index.ts +8 -8
  12. package/template/apps/desktop/src/renderer/src/App.tsx +5 -5
  13. package/template/apps/desktop/src/renderer/src/assets/base.css +4 -4
  14. package/template/apps/desktop/src/renderer/src/assets/main.css +3 -3
  15. package/template/apps/desktop/src/renderer/src/components/Versions.tsx +4 -4
  16. package/template/apps/desktop/src/renderer/src/main.tsx +7 -7
  17. package/template/apps/desktop/tsconfig.json +1 -4
  18. package/template/apps/desktop/tsconfig.node.json +1 -1
  19. package/template/apps/desktop/tsconfig.web.json +4 -11
  20. package/template/apps/mobile/app/(tabs)/_layout.tsx +11 -10
  21. package/template/apps/mobile/app/(tabs)/explore.tsx +29 -27
  22. package/template/apps/mobile/app/(tabs)/index.tsx +25 -24
  23. package/template/apps/mobile/app/_layout.tsx +8 -8
  24. package/template/apps/mobile/app/modal.tsx +6 -6
  25. package/template/apps/mobile/components/external-link.tsx +5 -5
  26. package/template/apps/mobile/components/haptic-tab.tsx +4 -4
  27. package/template/apps/mobile/components/hello-wave.tsx +5 -4
  28. package/template/apps/mobile/components/parallax-scroll-view.tsx +15 -13
  29. package/template/apps/mobile/components/themed-text.tsx +14 -14
  30. package/template/apps/mobile/components/themed-view.tsx +3 -3
  31. package/template/apps/mobile/components/ui/collapsible.tsx +14 -13
  32. package/template/apps/mobile/components/ui/icon-symbol.ios.tsx +4 -4
  33. package/template/apps/mobile/components/ui/icon-symbol.tsx +9 -9
  34. package/template/apps/mobile/constants/theme.ts +19 -19
  35. package/template/apps/mobile/hooks/use-color-scheme.ts +1 -1
  36. package/template/apps/mobile/hooks/use-color-scheme.web.ts +3 -3
  37. package/template/apps/mobile/hooks/use-theme-color.ts +4 -4
  38. package/template/apps/mobile/package.json +3 -6
  39. package/template/apps/mobile/scripts/reset-project.js +2 -2
  40. package/template/apps/mobile/tsconfig.json +2 -9
  41. package/template/apps/platform/drizzle.config.ts +5 -5
  42. package/template/apps/platform/package.json +2 -6
  43. package/template/apps/platform/src/components/app-sidebar.tsx +60 -69
  44. package/template/apps/platform/src/components/login-form.tsx +32 -39
  45. package/template/apps/platform/src/components/search-form.tsx +5 -13
  46. package/template/apps/platform/src/components/signup-form.tsx +39 -49
  47. package/template/apps/platform/src/components/version-switcher.tsx +11 -21
  48. package/template/apps/platform/src/lib/auth-utils.ts +12 -14
  49. package/template/apps/platform/src/lib/orpc.ts +17 -17
  50. package/template/apps/platform/src/routeTree.gen.ts +264 -267
  51. package/template/apps/platform/src/router.tsx +5 -5
  52. package/template/apps/platform/src/routes/__root.tsx +13 -15
  53. package/template/apps/platform/src/routes/_auth/account.tsx +61 -50
  54. package/template/apps/platform/src/routes/_auth/dashboard.tsx +17 -17
  55. package/template/apps/platform/src/routes/_auth/examples/client-orpc-auth.tsx +13 -13
  56. package/template/apps/platform/src/routes/_auth/examples/ssr-orpc-auth.tsx +17 -17
  57. package/template/apps/platform/src/routes/_auth.tsx +5 -5
  58. package/template/apps/platform/src/routes/_public/examples/client-orpc.tsx +108 -88
  59. package/template/apps/platform/src/routes/_public/examples/isr.tsx +14 -14
  60. package/template/apps/platform/src/routes/_public/examples/ssr-orpc.tsx +92 -75
  61. package/template/apps/platform/src/routes/_public/index.tsx +22 -19
  62. package/template/apps/platform/src/routes/_public/login.tsx +4 -4
  63. package/template/apps/platform/src/routes/_public/signup.tsx +6 -5
  64. package/template/apps/platform/src/routes/_public.tsx +5 -5
  65. package/template/apps/platform/src/routes/api/auth/$.ts +13 -13
  66. package/template/apps/platform/src/routes/api/rpc.$.ts +13 -13
  67. package/template/apps/platform/tsconfig.json +1 -1
  68. package/template/apps/platform/vite.config.ts +8 -8
  69. package/template/docker-compose.yml +1 -1
  70. package/template/package.json +24 -22
  71. package/template/packages/auth/package.json +8 -12
  72. package/template/packages/auth/src/lib/auth.ts +1 -1
  73. package/template/packages/auth/tsconfig.json +1 -1
  74. package/template/packages/db/package.json +6 -10
  75. package/template/packages/db/src/index.ts +4 -4
  76. package/template/packages/db/src/schema.ts +2 -2
  77. package/template/packages/db/tsconfig.json +1 -1
  78. package/template/packages/orpc/package.json +6 -10
  79. package/template/packages/orpc/src/lib/planets.ts +39 -43
  80. package/template/packages/orpc/src/lib/router.ts +15 -15
  81. package/template/packages/orpc/tsconfig.json +1 -1
  82. package/template/packages/ui/package.json +8 -12
  83. package/template/packages/ui/src/components/accordion.tsx +20 -22
  84. package/template/packages/ui/src/components/alert-dialog.tsx +31 -56
  85. package/template/packages/ui/src/components/alert.tsx +15 -23
  86. package/template/packages/ui/src/components/aspect-ratio.tsx +3 -3
  87. package/template/packages/ui/src/components/avatar.tsx +19 -35
  88. package/template/packages/ui/src/components/badge.tsx +13 -17
  89. package/template/packages/ui/src/components/breadcrumb.tsx +22 -44
  90. package/template/packages/ui/src/components/button-group.tsx +16 -25
  91. package/template/packages/ui/src/components/button.tsx +8 -9
  92. package/template/packages/ui/src/components/calendar.tsx +43 -82
  93. package/template/packages/ui/src/components/card.tsx +15 -26
  94. package/template/packages/ui/src/components/carousel.tsx +70 -78
  95. package/template/packages/ui/src/components/chart.tsx +84 -117
  96. package/template/packages/ui/src/components/checkbox.tsx +8 -9
  97. package/template/packages/ui/src/components/collapsible.tsx +5 -9
  98. package/template/packages/ui/src/components/combobox.tsx +44 -68
  99. package/template/packages/ui/src/components/command.tsx +32 -47
  100. package/template/packages/ui/src/components/context-menu.tsx +45 -71
  101. package/template/packages/ui/src/components/dialog.tsx +29 -51
  102. package/template/packages/ui/src/components/direction.tsx +1 -4
  103. package/template/packages/ui/src/components/drawer.tsx +24 -38
  104. package/template/packages/ui/src/components/dropdown-menu.tsx +45 -55
  105. package/template/packages/ui/src/components/empty.tsx +16 -27
  106. package/template/packages/ui/src/components/field.tsx +49 -63
  107. package/template/packages/ui/src/components/hover-card.tsx +9 -14
  108. package/template/packages/ui/src/components/input-group.tsx +40 -52
  109. package/template/packages/ui/src/components/input-otp.tsx +17 -18
  110. package/template/packages/ui/src/components/input.tsx +6 -6
  111. package/template/packages/ui/src/components/item.tsx +31 -44
  112. package/template/packages/ui/src/components/kbd.tsx +5 -5
  113. package/template/packages/ui/src/components/label.tsx +6 -6
  114. package/template/packages/ui/src/components/menubar.tsx +51 -64
  115. package/template/packages/ui/src/components/mode-toggle.tsx +9 -15
  116. package/template/packages/ui/src/components/native-select.tsx +18 -24
  117. package/template/packages/ui/src/components/navigation-menu.tsx +28 -35
  118. package/template/packages/ui/src/components/pagination.tsx +19 -31
  119. package/template/packages/ui/src/components/popover.tsx +13 -26
  120. package/template/packages/ui/src/components/progress.tsx +13 -30
  121. package/template/packages/ui/src/components/radio-group.tsx +7 -7
  122. package/template/packages/ui/src/components/resizable.tsx +12 -20
  123. package/template/packages/ui/src/components/scroll-area.tsx +8 -12
  124. package/template/packages/ui/src/components/select.tsx +31 -42
  125. package/template/packages/ui/src/components/separator.tsx +6 -10
  126. package/template/packages/ui/src/components/sheet.tsx +25 -38
  127. package/template/packages/ui/src/components/sidebar.tsx +137 -170
  128. package/template/packages/ui/src/components/skeleton.tsx +3 -3
  129. package/template/packages/ui/src/components/slider.tsx +5 -5
  130. package/template/packages/ui/src/components/sonner.tsx +20 -24
  131. package/template/packages/ui/src/components/spinner.tsx +10 -5
  132. package/template/packages/ui/src/components/switch.tsx +6 -6
  133. package/template/packages/ui/src/components/table.tsx +18 -45
  134. package/template/packages/ui/src/components/tabs.tsx +14 -22
  135. package/template/packages/ui/src/components/textarea.tsx +5 -5
  136. package/template/packages/ui/src/components/theme-provider.tsx +43 -48
  137. package/template/packages/ui/src/components/toggle-group.tsx +18 -20
  138. package/template/packages/ui/src/components/toggle.tsx +9 -10
  139. package/template/packages/ui/src/components/tooltip.tsx +10 -22
  140. package/template/packages/ui/src/hooks/use-mobile.ts +11 -11
  141. package/template/packages/ui/src/lib/utils.ts +4 -4
  142. package/template/packages/ui/src/styles/globals.css +106 -106
  143. package/template/packages/ui/tsconfig.json +1 -1
  144. package/template/turbo.json +15 -6
  145. package/template/.prettierignore +0 -10
  146. package/template/apps/desktop/.prettierignore +0 -6
  147. package/template/apps/desktop/eslint.config.ts +0 -11
  148. package/template/apps/desktop/prettier.config.ts +0 -3
  149. package/template/apps/mobile/eslint.config.js +0 -10
  150. package/template/apps/platform/eslint.config.ts +0 -11
  151. package/template/apps/platform/prettier.config.ts +0 -3
  152. package/template/packages/auth/eslint.config.ts +0 -3
  153. package/template/packages/auth/prettier.config.ts +0 -3
  154. package/template/packages/config-eslint/index.ts +0 -24
  155. package/template/packages/config-eslint/package.json +0 -11
  156. package/template/packages/config-prettier/index.ts +0 -14
  157. package/template/packages/config-prettier/package.json +0 -7
  158. package/template/packages/db/eslint.config.ts +0 -3
  159. package/template/packages/db/prettier.config.ts +0 -3
  160. package/template/packages/orpc/eslint.config.ts +0 -3
  161. package/template/packages/orpc/prettier.config.ts +0 -3
  162. package/template/packages/ui/eslint.config.ts +0 -3
  163. package/template/packages/ui/prettier.config.ts +0 -3
  164. package/template/prettier.config.ts +0 -15
@@ -1,11 +1,11 @@
1
- "use client"
1
+ "use client";
2
2
 
3
- import * as React from "react"
4
- import { Menu as MenuPrimitive } from "@base-ui/react/menu"
5
- import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar"
3
+ import * as React from "react";
4
+ import { Menu as MenuPrimitive } from "@base-ui/react/menu";
5
+ import { Menubar as MenubarPrimitive } from "@base-ui/react/menubar";
6
6
 
7
- import { CheckIcon } from "lucide-react"
8
- import { cn } from "@workspace/ui/lib/utils"
7
+ import { CheckIcon } from "lucide-react";
8
+ import { cn } from "@workspace/ui/lib/utils";
9
9
  import {
10
10
  DropdownMenu,
11
11
  DropdownMenuContent,
@@ -20,51 +20,41 @@ import {
20
20
  DropdownMenuSubContent,
21
21
  DropdownMenuSubTrigger,
22
22
  DropdownMenuTrigger,
23
- } from "@workspace/ui/components/dropdown-menu"
23
+ } from "@workspace/ui/components/dropdown-menu";
24
24
 
25
25
  function Menubar({ className, ...props }: MenubarPrimitive.Props) {
26
26
  return (
27
27
  <MenubarPrimitive
28
28
  data-slot="menubar"
29
- className={cn(
30
- "flex h-8 items-center gap-0.5 rounded-lg border p-[3px]",
31
- className
32
- )}
29
+ className={cn("flex h-8 items-center gap-0.5 rounded-lg border p-[3px]", className)}
33
30
  {...props}
34
31
  />
35
- )
32
+ );
36
33
  }
37
34
 
38
35
  function MenubarMenu({ ...props }: React.ComponentProps<typeof DropdownMenu>) {
39
- return <DropdownMenu data-slot="menubar-menu" {...props} />
36
+ return <DropdownMenu data-slot="menubar-menu" {...props} />;
40
37
  }
41
38
 
42
- function MenubarGroup({
43
- ...props
44
- }: React.ComponentProps<typeof DropdownMenuGroup>) {
45
- return <DropdownMenuGroup data-slot="menubar-group" {...props} />
39
+ function MenubarGroup({ ...props }: React.ComponentProps<typeof DropdownMenuGroup>) {
40
+ return <DropdownMenuGroup data-slot="menubar-group" {...props} />;
46
41
  }
47
42
 
48
- function MenubarPortal({
49
- ...props
50
- }: React.ComponentProps<typeof DropdownMenuPortal>) {
51
- return <DropdownMenuPortal data-slot="menubar-portal" {...props} />
43
+ function MenubarPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPortal>) {
44
+ return <DropdownMenuPortal data-slot="menubar-portal" {...props} />;
52
45
  }
53
46
 
54
- function MenubarTrigger({
55
- className,
56
- ...props
57
- }: React.ComponentProps<typeof DropdownMenuTrigger>) {
47
+ function MenubarTrigger({ className, ...props }: React.ComponentProps<typeof DropdownMenuTrigger>) {
58
48
  return (
59
49
  <DropdownMenuTrigger
60
50
  data-slot="menubar-trigger"
61
51
  className={cn(
62
52
  "flex items-center rounded-sm px-1.5 py-[2px] text-sm font-medium outline-hidden select-none hover:bg-muted aria-expanded:bg-muted",
63
- className
53
+ className,
64
54
  )}
65
55
  {...props}
66
56
  />
67
- )
57
+ );
68
58
  }
69
59
 
70
60
  function MenubarContent({
@@ -80,10 +70,13 @@ function MenubarContent({
80
70
  align={align}
81
71
  alignOffset={alignOffset}
82
72
  sideOffset={sideOffset}
83
- className={cn("min-w-36 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95", className )}
73
+ className={cn(
74
+ "min-w-36 rounded-lg bg-popover p-1 text-popover-foreground shadow-md ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=inline-end]:slide-in-from-left-2 data-[side=inline-start]:slide-in-from-right-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95",
75
+ className,
76
+ )}
84
77
  {...props}
85
78
  />
86
- )
79
+ );
87
80
  }
88
81
 
89
82
  function MenubarItem({
@@ -99,11 +92,11 @@ function MenubarItem({
99
92
  data-variant={variant}
100
93
  className={cn(
101
94
  "group/menubar-item gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground data-inset:pl-7 data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 data-[variant=destructive]:focus:text-destructive dark:data-[variant=destructive]:focus:bg-destructive/20 data-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 data-[variant=destructive]:*:[svg]:text-destructive!",
102
- className
95
+ className,
103
96
  )}
104
97
  {...props}
105
98
  />
106
- )
99
+ );
107
100
  }
108
101
 
109
102
  function MenubarCheckboxItem({
@@ -113,7 +106,7 @@ function MenubarCheckboxItem({
113
106
  inset,
114
107
  ...props
115
108
  }: MenuPrimitive.CheckboxItem.Props & {
116
- inset?: boolean
109
+ inset?: boolean;
117
110
  }) {
118
111
  return (
119
112
  <MenuPrimitive.CheckboxItem
@@ -121,26 +114,23 @@ function MenubarCheckboxItem({
121
114
  data-inset={inset}
122
115
  className={cn(
123
116
  "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
124
- className
117
+ className,
125
118
  )}
126
119
  checked={checked}
127
120
  {...props}
128
121
  >
129
122
  <span className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4">
130
123
  <MenuPrimitive.CheckboxItemIndicator>
131
- <CheckIcon
132
- />
124
+ <CheckIcon />
133
125
  </MenuPrimitive.CheckboxItemIndicator>
134
126
  </span>
135
127
  {children}
136
128
  </MenuPrimitive.CheckboxItem>
137
- )
129
+ );
138
130
  }
139
131
 
140
- function MenubarRadioGroup({
141
- ...props
142
- }: React.ComponentProps<typeof DropdownMenuRadioGroup>) {
143
- return <DropdownMenuRadioGroup data-slot="menubar-radio-group" {...props} />
132
+ function MenubarRadioGroup({ ...props }: React.ComponentProps<typeof DropdownMenuRadioGroup>) {
133
+ return <DropdownMenuRadioGroup data-slot="menubar-radio-group" {...props} />;
144
134
  }
145
135
 
146
136
  function MenubarRadioItem({
@@ -149,7 +139,7 @@ function MenubarRadioItem({
149
139
  inset,
150
140
  ...props
151
141
  }: MenuPrimitive.RadioItem.Props & {
152
- inset?: boolean
142
+ inset?: boolean;
153
143
  }) {
154
144
  return (
155
145
  <MenuPrimitive.RadioItem
@@ -157,19 +147,18 @@ function MenubarRadioItem({
157
147
  data-inset={inset}
158
148
  className={cn(
159
149
  "relative flex cursor-default items-center gap-1.5 rounded-md py-1 pr-1.5 pl-7 text-sm outline-hidden select-none focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground data-inset:pl-7 data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
160
- className
150
+ className,
161
151
  )}
162
152
  {...props}
163
153
  >
164
154
  <span className="pointer-events-none absolute left-1.5 flex size-4 items-center justify-center [&_svg:not([class*='size-'])]:size-4">
165
155
  <MenuPrimitive.RadioItemIndicator>
166
- <CheckIcon
167
- />
156
+ <CheckIcon />
168
157
  </MenuPrimitive.RadioItemIndicator>
169
158
  </span>
170
159
  {children}
171
160
  </MenuPrimitive.RadioItem>
172
- )
161
+ );
173
162
  }
174
163
 
175
164
  function MenubarLabel({
@@ -177,19 +166,16 @@ function MenubarLabel({
177
166
  inset,
178
167
  ...props
179
168
  }: React.ComponentProps<typeof DropdownMenuLabel> & {
180
- inset?: boolean
169
+ inset?: boolean;
181
170
  }) {
182
171
  return (
183
172
  <DropdownMenuLabel
184
173
  data-slot="menubar-label"
185
174
  data-inset={inset}
186
- className={cn(
187
- "px-1.5 py-1 text-sm font-medium data-inset:pl-7",
188
- className
189
- )}
175
+ className={cn("px-1.5 py-1 text-sm font-medium data-inset:pl-7", className)}
190
176
  {...props}
191
177
  />
192
- )
178
+ );
193
179
  }
194
180
 
195
181
  function MenubarSeparator({
@@ -202,7 +188,7 @@ function MenubarSeparator({
202
188
  className={cn("-mx-1 my-1 h-px bg-border", className)}
203
189
  {...props}
204
190
  />
205
- )
191
+ );
206
192
  }
207
193
 
208
194
  function MenubarShortcut({
@@ -214,17 +200,15 @@ function MenubarShortcut({
214
200
  data-slot="menubar-shortcut"
215
201
  className={cn(
216
202
  "ml-auto text-xs tracking-widest text-muted-foreground group-focus/menubar-item:text-accent-foreground",
217
- className
203
+ className,
218
204
  )}
219
205
  {...props}
220
206
  />
221
- )
207
+ );
222
208
  }
223
209
 
224
- function MenubarSub({
225
- ...props
226
- }: React.ComponentProps<typeof DropdownMenuSub>) {
227
- return <DropdownMenuSub data-slot="menubar-sub" {...props} />
210
+ function MenubarSub({ ...props }: React.ComponentProps<typeof DropdownMenuSub>) {
211
+ return <DropdownMenuSub data-slot="menubar-sub" {...props} />;
228
212
  }
229
213
 
230
214
  function MenubarSubTrigger({
@@ -232,7 +216,7 @@ function MenubarSubTrigger({
232
216
  inset,
233
217
  ...props
234
218
  }: React.ComponentProps<typeof DropdownMenuSubTrigger> & {
235
- inset?: boolean
219
+ inset?: boolean;
236
220
  }) {
237
221
  return (
238
222
  <DropdownMenuSubTrigger
@@ -240,11 +224,11 @@ function MenubarSubTrigger({
240
224
  data-inset={inset}
241
225
  className={cn(
242
226
  "gap-1.5 rounded-md px-1.5 py-1 text-sm focus:bg-accent focus:text-accent-foreground data-inset:pl-7 data-open:bg-accent data-open:text-accent-foreground [&_svg:not([class*='size-'])]:size-4",
243
- className
227
+ className,
244
228
  )}
245
229
  {...props}
246
230
  />
247
- )
231
+ );
248
232
  }
249
233
 
250
234
  function MenubarSubContent({
@@ -254,10 +238,13 @@ function MenubarSubContent({
254
238
  return (
255
239
  <DropdownMenuSubContent
256
240
  data-slot="menubar-sub-content"
257
- className={cn("min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95", className )}
241
+ className={cn(
242
+ "min-w-32 rounded-lg bg-popover p-1 text-popover-foreground shadow-lg ring-1 ring-foreground/10 duration-100 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 data-open:animate-in data-open:fade-in-0 data-open:zoom-in-95 data-closed:animate-out data-closed:fade-out-0 data-closed:zoom-out-95",
243
+ className,
244
+ )}
258
245
  {...props}
259
246
  />
260
- )
247
+ );
261
248
  }
262
249
 
263
250
  export {
@@ -277,4 +264,4 @@ export {
277
264
  MenubarSub,
278
265
  MenubarSubTrigger,
279
266
  MenubarSubContent,
280
- }
267
+ };
@@ -1,16 +1,16 @@
1
- import { Moon, Sun } from "lucide-react"
1
+ import { Moon, Sun } from "lucide-react";
2
2
 
3
- import { Button } from "@workspace/ui/components/button"
3
+ import { Button } from "@workspace/ui/components/button";
4
4
  import {
5
5
  DropdownMenu,
6
6
  DropdownMenuContent,
7
7
  DropdownMenuItem,
8
8
  DropdownMenuTrigger,
9
- } from "@workspace/ui/components/dropdown-menu"
10
- import { useTheme } from "@workspace/ui/components/theme-provider"
9
+ } from "@workspace/ui/components/dropdown-menu";
10
+ import { useTheme } from "@workspace/ui/components/theme-provider";
11
11
 
12
12
  export function ModeToggle() {
13
- const { setTheme } = useTheme()
13
+ const { setTheme } = useTheme();
14
14
 
15
15
  return (
16
16
  <DropdownMenu>
@@ -24,16 +24,10 @@ export function ModeToggle() {
24
24
  }
25
25
  />
26
26
  <DropdownMenuContent align="end">
27
- <DropdownMenuItem onClick={() => setTheme("light")}>
28
- Light
29
- </DropdownMenuItem>
30
- <DropdownMenuItem onClick={() => setTheme("dark")}>
31
- Dark
32
- </DropdownMenuItem>
33
- <DropdownMenuItem onClick={() => setTheme("system")}>
34
- System
35
- </DropdownMenuItem>
27
+ <DropdownMenuItem onClick={() => setTheme("light")}>Light</DropdownMenuItem>
28
+ <DropdownMenuItem onClick={() => setTheme("dark")}>Dark</DropdownMenuItem>
29
+ <DropdownMenuItem onClick={() => setTheme("system")}>System</DropdownMenuItem>
36
30
  </DropdownMenuContent>
37
31
  </DropdownMenu>
38
- )
32
+ );
39
33
  }
@@ -1,22 +1,18 @@
1
- import * as React from "react"
1
+ import * as React from "react";
2
2
 
3
- import { ChevronDownIcon } from "lucide-react"
4
- import { cn } from "@workspace/ui/lib/utils"
3
+ import { ChevronDownIcon } from "lucide-react";
4
+ import { cn } from "@workspace/ui/lib/utils";
5
5
 
6
6
  type NativeSelectProps = Omit<React.ComponentProps<"select">, "size"> & {
7
- size?: "sm" | "default"
8
- }
7
+ size?: "sm" | "default";
8
+ };
9
9
 
10
- function NativeSelect({
11
- className,
12
- size = "default",
13
- ...props
14
- }: NativeSelectProps) {
10
+ function NativeSelect({ className, size = "default", ...props }: NativeSelectProps) {
15
11
  return (
16
12
  <div
17
13
  className={cn(
18
14
  "group/native-select relative w-fit has-[select:disabled]:opacity-50",
19
- className
15
+ className,
20
16
  )}
21
17
  data-slot="native-select-wrapper"
22
18
  data-size={size}
@@ -27,35 +23,33 @@ function NativeSelect({
27
23
  className="h-8 w-full min-w-0 appearance-none rounded-lg border border-input bg-transparent py-1 pr-8 pl-2.5 text-sm transition-colors outline-none select-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:pointer-events-none disabled:cursor-not-allowed aria-invalid:border-destructive aria-invalid:ring-3 aria-invalid:ring-destructive/20 data-[size=sm]:h-7 data-[size=sm]:rounded-[min(var(--radius-md),10px)] data-[size=sm]:py-0.5 dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:border-destructive/50 dark:aria-invalid:ring-destructive/40"
28
24
  {...props}
29
25
  />
30
- <ChevronDownIcon className="pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none" aria-hidden="true" data-slot="native-select-icon" />
26
+ <ChevronDownIcon
27
+ className="pointer-events-none absolute top-1/2 right-2.5 size-4 -translate-y-1/2 text-muted-foreground select-none"
28
+ aria-hidden="true"
29
+ data-slot="native-select-icon"
30
+ />
31
31
  </div>
32
- )
32
+ );
33
33
  }
34
34
 
35
- function NativeSelectOption({
36
- className,
37
- ...props
38
- }: React.ComponentProps<"option">) {
35
+ function NativeSelectOption({ className, ...props }: React.ComponentProps<"option">) {
39
36
  return (
40
37
  <option
41
38
  data-slot="native-select-option"
42
39
  className={cn("bg-[Canvas] text-[CanvasText]", className)}
43
40
  {...props}
44
41
  />
45
- )
42
+ );
46
43
  }
47
44
 
48
- function NativeSelectOptGroup({
49
- className,
50
- ...props
51
- }: React.ComponentProps<"optgroup">) {
45
+ function NativeSelectOptGroup({ className, ...props }: React.ComponentProps<"optgroup">) {
52
46
  return (
53
47
  <optgroup
54
48
  data-slot="native-select-optgroup"
55
49
  className={cn("bg-[Canvas] text-[CanvasText]", className)}
56
50
  {...props}
57
51
  />
58
- )
52
+ );
59
53
  }
60
54
 
61
- export { NativeSelect, NativeSelectOptGroup, NativeSelectOption }
55
+ export { NativeSelect, NativeSelectOptGroup, NativeSelectOption };
@@ -1,29 +1,28 @@
1
- import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu"
2
- import { cva } from "class-variance-authority"
1
+ import { NavigationMenu as NavigationMenuPrimitive } from "@base-ui/react/navigation-menu";
2
+ import { cva } from "class-variance-authority";
3
3
 
4
- import { ChevronDownIcon } from "lucide-react"
5
- import { cn } from "@workspace/ui/lib/utils"
4
+ import { ChevronDownIcon } from "lucide-react";
5
+ import { cn } from "@workspace/ui/lib/utils";
6
6
 
7
7
  function NavigationMenu({
8
8
  align = "start",
9
9
  className,
10
10
  children,
11
11
  ...props
12
- }: NavigationMenuPrimitive.Root.Props &
13
- Pick<NavigationMenuPrimitive.Positioner.Props, "align">) {
12
+ }: NavigationMenuPrimitive.Root.Props & Pick<NavigationMenuPrimitive.Positioner.Props, "align">) {
14
13
  return (
15
14
  <NavigationMenuPrimitive.Root
16
15
  data-slot="navigation-menu"
17
16
  className={cn(
18
17
  "group/navigation-menu relative flex max-w-max flex-1 items-center justify-center",
19
- className
18
+ className,
20
19
  )}
21
20
  {...props}
22
21
  >
23
22
  {children}
24
23
  <NavigationMenuPositioner align={align} />
25
24
  </NavigationMenuPrimitive.Root>
26
- )
25
+ );
27
26
  }
28
27
 
29
28
  function NavigationMenuList({
@@ -33,13 +32,10 @@ function NavigationMenuList({
33
32
  return (
34
33
  <NavigationMenuPrimitive.List
35
34
  data-slot="navigation-menu-list"
36
- className={cn(
37
- "group flex flex-1 list-none items-center justify-center gap-0",
38
- className
39
- )}
35
+ className={cn("group flex flex-1 list-none items-center justify-center gap-0", className)}
40
36
  {...props}
41
37
  />
42
- )
38
+ );
43
39
  }
44
40
 
45
41
  function NavigationMenuItem({
@@ -52,12 +48,12 @@ function NavigationMenuItem({
52
48
  className={cn("relative", className)}
53
49
  {...props}
54
50
  />
55
- )
51
+ );
56
52
  }
57
53
 
58
54
  const navigationMenuTriggerStyle = cva(
59
- "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted"
60
- )
55
+ "group/navigation-menu-trigger inline-flex h-9 w-max items-center justify-center rounded-lg px-2.5 py-1.5 text-sm font-medium transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-popup-open:bg-muted/50 data-popup-open:hover:bg-muted data-open:bg-muted/50 data-open:hover:bg-muted data-open:focus:bg-muted",
56
+ );
61
57
 
62
58
  function NavigationMenuTrigger({
63
59
  className,
@@ -71,25 +67,25 @@ function NavigationMenuTrigger({
71
67
  {...props}
72
68
  >
73
69
  {children}{" "}
74
- <ChevronDownIcon className="relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180" aria-hidden="true" />
70
+ <ChevronDownIcon
71
+ className="relative top-px ml-1 size-3 transition duration-300 group-data-popup-open/navigation-menu-trigger:rotate-180 group-data-open/navigation-menu-trigger:rotate-180"
72
+ aria-hidden="true"
73
+ />
75
74
  </NavigationMenuPrimitive.Trigger>
76
- )
75
+ );
77
76
  }
78
77
 
79
- function NavigationMenuContent({
80
- className,
81
- ...props
82
- }: NavigationMenuPrimitive.Content.Props) {
78
+ function NavigationMenuContent({ className, ...props }: NavigationMenuPrimitive.Content.Props) {
83
79
  return (
84
80
  <NavigationMenuPrimitive.Content
85
81
  data-slot="navigation-menu-content"
86
82
  className={cn(
87
83
  "data-ending-style:data-activation-direction=left:translate-x-[50%] data-ending-style:data-activation-direction=right:translate-x-[-50%] data-starting-style:data-activation-direction=left:translate-x-[-50%] data-starting-style:data-activation-direction=right:translate-x-[50%] h-full w-auto p-1 transition-[opacity,transform,translate] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] group-data-[viewport=false]/navigation-menu:rounded-lg group-data-[viewport=false]/navigation-menu:bg-popover group-data-[viewport=false]/navigation-menu:text-popover-foreground group-data-[viewport=false]/navigation-menu:shadow group-data-[viewport=false]/navigation-menu:ring-1 group-data-[viewport=false]/navigation-menu:ring-foreground/10 group-data-[viewport=false]/navigation-menu:duration-300 data-ending-style:opacity-0 data-starting-style:opacity-0 data-[motion=from-end]:slide-in-from-right-52 data-[motion=from-start]:slide-in-from-left-52 data-[motion=to-end]:slide-out-to-right-52 data-[motion=to-start]:slide-out-to-left-52 data-[motion^=from-]:animate-in data-[motion^=from-]:fade-in data-[motion^=to-]:animate-out data-[motion^=to-]:fade-out **:data-[slot=navigation-menu-link]:focus:ring-0 **:data-[slot=navigation-menu-link]:focus:outline-none group-data-[viewport=false]/navigation-menu:data-open:animate-in group-data-[viewport=false]/navigation-menu:data-open:fade-in-0 group-data-[viewport=false]/navigation-menu:data-open:zoom-in-95 group-data-[viewport=false]/navigation-menu:data-closed:animate-out group-data-[viewport=false]/navigation-menu:data-closed:fade-out-0 group-data-[viewport=false]/navigation-menu:data-closed:zoom-out-95",
88
- className
84
+ className,
89
85
  )}
90
86
  {...props}
91
87
  />
92
- )
88
+ );
93
89
  }
94
90
 
95
91
  function NavigationMenuPositioner({
@@ -109,7 +105,7 @@ function NavigationMenuPositioner({
109
105
  alignOffset={alignOffset}
110
106
  className={cn(
111
107
  "isolate z-50 h-(--positioner-height) w-(--positioner-width) max-w-(--available-width) transition-[top,left,right,bottom] duration-[0.35s] ease-[cubic-bezier(0.22,1,0.36,1)] data-instant:transition-none data-[side=bottom]:before:top-[-10px] data-[side=bottom]:before:right-0 data-[side=bottom]:before:left-0",
112
- className
108
+ className,
113
109
  )}
114
110
  {...props}
115
111
  >
@@ -118,23 +114,20 @@ function NavigationMenuPositioner({
118
114
  </NavigationMenuPrimitive.Popup>
119
115
  </NavigationMenuPrimitive.Positioner>
120
116
  </NavigationMenuPrimitive.Portal>
121
- )
117
+ );
122
118
  }
123
119
 
124
- function NavigationMenuLink({
125
- className,
126
- ...props
127
- }: NavigationMenuPrimitive.Link.Props) {
120
+ function NavigationMenuLink({ className, ...props }: NavigationMenuPrimitive.Link.Props) {
128
121
  return (
129
122
  <NavigationMenuPrimitive.Link
130
123
  data-slot="navigation-menu-link"
131
124
  className={cn(
132
125
  "flex items-center gap-2 rounded-lg p-2 text-sm transition-all outline-none hover:bg-muted focus:bg-muted focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 in-data-[slot=navigation-menu-content]:rounded-md data-active:bg-muted/50 data-active:hover:bg-muted data-active:focus:bg-muted [&_svg:not([class*='size-'])]:size-4",
133
- className
126
+ className,
134
127
  )}
135
128
  {...props}
136
129
  />
137
- )
130
+ );
138
131
  }
139
132
 
140
133
  function NavigationMenuIndicator({
@@ -146,13 +139,13 @@ function NavigationMenuIndicator({
146
139
  data-slot="navigation-menu-indicator"
147
140
  className={cn(
148
141
  "top-full z-1 flex h-1.5 items-end justify-center overflow-hidden data-[state=hidden]:animate-out data-[state=hidden]:fade-out data-[state=visible]:animate-in data-[state=visible]:fade-in",
149
- className
142
+ className,
150
143
  )}
151
144
  {...props}
152
145
  >
153
146
  <div className="relative top-[60%] h-2 w-2 rotate-45 rounded-tl-sm bg-border shadow-md" />
154
147
  </NavigationMenuPrimitive.Icon>
155
- )
148
+ );
156
149
  }
157
150
 
158
151
  export {
@@ -165,4 +158,4 @@ export {
165
158
  NavigationMenuTrigger,
166
159
  navigationMenuTriggerStyle,
167
160
  NavigationMenuPositioner,
168
- }
161
+ };
@@ -1,8 +1,8 @@
1
- import * as React from "react"
1
+ import * as React from "react";
2
2
 
3
- import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react"
4
- import { cn } from "@workspace/ui/lib/utils"
5
- import { Button } from "@workspace/ui/components/button"
3
+ import { ChevronLeftIcon, ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
4
+ import { cn } from "@workspace/ui/lib/utils";
5
+ import { Button } from "@workspace/ui/components/button";
6
6
 
7
7
  function Pagination({ className, ...props }: React.ComponentProps<"nav">) {
8
8
  return (
@@ -13,37 +13,29 @@ function Pagination({ className, ...props }: React.ComponentProps<"nav">) {
13
13
  className={cn("mx-auto flex w-full justify-center", className)}
14
14
  {...props}
15
15
  />
16
- )
16
+ );
17
17
  }
18
18
 
19
- function PaginationContent({
20
- className,
21
- ...props
22
- }: React.ComponentProps<"ul">) {
19
+ function PaginationContent({ className, ...props }: React.ComponentProps<"ul">) {
23
20
  return (
24
21
  <ul
25
22
  data-slot="pagination-content"
26
23
  className={cn("flex items-center gap-0.5", className)}
27
24
  {...props}
28
25
  />
29
- )
26
+ );
30
27
  }
31
28
 
32
29
  function PaginationItem({ ...props }: React.ComponentProps<"li">) {
33
- return <li data-slot="pagination-item" {...props} />
30
+ return <li data-slot="pagination-item" {...props} />;
34
31
  }
35
32
 
36
33
  type PaginationLinkProps = {
37
- isActive?: boolean
34
+ isActive?: boolean;
38
35
  } & Pick<React.ComponentProps<typeof Button>, "size"> &
39
- React.ComponentProps<"a">
36
+ React.ComponentProps<"a">;
40
37
 
41
- function PaginationLink({
42
- className,
43
- isActive,
44
- size = "icon",
45
- ...props
46
- }: PaginationLinkProps) {
38
+ function PaginationLink({ className, isActive, size = "icon", ...props }: PaginationLinkProps) {
47
39
  return (
48
40
  <Button
49
41
  variant={isActive ? "outline" : "ghost"}
@@ -59,7 +51,7 @@ function PaginationLink({
59
51
  />
60
52
  }
61
53
  />
62
- )
54
+ );
63
55
  }
64
56
 
65
57
  function PaginationPrevious({
@@ -77,7 +69,7 @@ function PaginationPrevious({
77
69
  <ChevronLeftIcon data-icon="inline-start" />
78
70
  <span className="hidden sm:block">{text}</span>
79
71
  </PaginationLink>
80
- )
72
+ );
81
73
  }
82
74
 
83
75
  function PaginationNext({
@@ -95,28 +87,24 @@ function PaginationNext({
95
87
  <span className="hidden sm:block">{text}</span>
96
88
  <ChevronRightIcon data-icon="inline-end" />
97
89
  </PaginationLink>
98
- )
90
+ );
99
91
  }
100
92
 
101
- function PaginationEllipsis({
102
- className,
103
- ...props
104
- }: React.ComponentProps<"span">) {
93
+ function PaginationEllipsis({ className, ...props }: React.ComponentProps<"span">) {
105
94
  return (
106
95
  <span
107
96
  aria-hidden
108
97
  data-slot="pagination-ellipsis"
109
98
  className={cn(
110
99
  "flex size-8 items-center justify-center [&_svg:not([class*='size-'])]:size-4",
111
- className
100
+ className,
112
101
  )}
113
102
  {...props}
114
103
  >
115
- <MoreHorizontalIcon
116
- />
104
+ <MoreHorizontalIcon />
117
105
  <span className="sr-only">More pages</span>
118
106
  </span>
119
- )
107
+ );
120
108
  }
121
109
 
122
110
  export {
@@ -127,4 +115,4 @@ export {
127
115
  PaginationLink,
128
116
  PaginationNext,
129
117
  PaginationPrevious,
130
- }
118
+ };