Skip to content

Commit f313fd8

Browse files
committed
feat: add coss ui and google oauth
1 parent ac94cab commit f313fd8

61 files changed

Lines changed: 6422 additions & 120 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

apps/web/components.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
{
2+
"$schema": "https://ui.shadcn.com/schema.json",
3+
"style": "new-york",
4+
"rsc": false,
5+
"tsx": true,
6+
"tailwind": {
7+
"config": "",
8+
"css": "src/styles/app.css",
9+
"baseColor": "neutral",
10+
"cssVariables": true,
11+
"prefix": ""
12+
},
13+
"iconLibrary": "lucide",
14+
"aliases": {
15+
"components": "~/components",
16+
"utils": "~/lib/utils",
17+
"ui": "~/components/ui",
18+
"lib": "~/lib",
19+
"hooks": "~/hooks"
20+
},
21+
"registries": {
22+
"@coss": "https://coss.com/ui/r/{name}.json"
23+
}
24+
}

apps/web/package.json

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,29 @@
1212
"check-types": "tsc --noEmit"
1313
},
1414
"dependencies": {
15+
"@base-ui/react": "1.1.0",
1516
"@codecrawl/sdk": "workspace:*",
1617
"@heroicons/react": "^2.2.0",
1718
"@hookform/resolvers": "^5.2.2",
1819
"@radix-ui/react-accordion": "^1.2.12",
1920
"@radix-ui/themes": "^3.2.1",
21+
"@tabler/icons-react": "3.36.1",
2022
"@tanstack/react-query": "^5.90.20",
2123
"@tanstack/react-router": "^1.154.13",
2224
"@tanstack/react-router-devtools": "^1.154.13",
2325
"@tanstack/react-start": "^1.154.13",
2426
"@tanstack/zod-adapter": "^1.154.13",
2527
"better-auth": "1.4.17",
26-
"clsx": "^2.1.1",
28+
"class-variance-authority": "0.7.1",
29+
"clsx": "2.1.1",
2730
"date-fns": "^4.1.0",
31+
"lucide-react": "0.563.0",
2832
"react": "^19.2.3",
2933
"react-dom": "^19.2.3",
3034
"react-hook-form": "^7.71.1",
3135
"redaxios": "^0.5.1",
3236
"sonner": "^2.0.7",
33-
"tailwind-merge": "^3.4.0",
37+
"tailwind-merge": "3.4.0",
3438
"usehooks-ts": "^3.1.1",
3539
"zod": "4.3.6",
3640
"zustand": "^5.0.10"
@@ -50,6 +54,7 @@
5054
"@vitejs/plugin-react": "^5.1.2",
5155
"postcss": "^8.5.6",
5256
"tailwindcss": "^4.1.18",
57+
"tw-animate-css": "1.4.0",
5358
"typescript": "^5.9.3",
5459
"vite": "^7.3.1",
5560
"vite-tsconfig-paths": "^6.0.5",
Lines changed: 243 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,243 @@
1+
import type { SVGProps } from 'react'
2+
3+
const Google = (props: SVGProps<SVGSVGElement>) => (
4+
<svg
5+
{...props}
6+
xmlnsXlink='http://www.w3.org/1999/xlink'
7+
xmlSpace='preserve'
8+
overflow='hidden'
9+
viewBox='0 0 268.152 273.883'
10+
>
11+
<defs>
12+
<linearGradient id='google__a'>
13+
<stop offset='0' stopColor='#0fbc5c' />
14+
<stop offset='1' stopColor='#0cba65' />
15+
</linearGradient>
16+
<linearGradient id='google__g'>
17+
<stop offset='.231' stopColor='#0fbc5f' />
18+
<stop offset='.312' stopColor='#0fbc5f' />
19+
<stop offset='.366' stopColor='#0fbc5e' />
20+
<stop offset='.458' stopColor='#0fbc5d' />
21+
<stop offset='.54' stopColor='#12bc58' />
22+
<stop offset='.699' stopColor='#28bf3c' />
23+
<stop offset='.771' stopColor='#38c02b' />
24+
<stop offset='.861' stopColor='#52c218' />
25+
<stop offset='.915' stopColor='#67c30f' />
26+
<stop offset='1' stopColor='#86c504' />
27+
</linearGradient>
28+
<linearGradient id='google__h'>
29+
<stop offset='.142' stopColor='#1abd4d' />
30+
<stop offset='.248' stopColor='#6ec30d' />
31+
<stop offset='.312' stopColor='#8ac502' />
32+
<stop offset='.366' stopColor='#a2c600' />
33+
<stop offset='.446' stopColor='#c8c903' />
34+
<stop offset='.54' stopColor='#ebcb03' />
35+
<stop offset='.616' stopColor='#f7cd07' />
36+
<stop offset='.699' stopColor='#fdcd04' />
37+
<stop offset='.771' stopColor='#fdce05' />
38+
<stop offset='.861' stopColor='#ffce0a' />
39+
</linearGradient>
40+
<linearGradient id='google__f'>
41+
<stop offset='.316' stopColor='#ff4c3c' />
42+
<stop offset='.604' stopColor='#ff692c' />
43+
<stop offset='.727' stopColor='#ff7825' />
44+
<stop offset='.885' stopColor='#ff8d1b' />
45+
<stop offset='1' stopColor='#ff9f13' />
46+
</linearGradient>
47+
<linearGradient id='google__b'>
48+
<stop offset='.231' stopColor='#ff4541' />
49+
<stop offset='.312' stopColor='#ff4540' />
50+
<stop offset='.458' stopColor='#ff4640' />
51+
<stop offset='.54' stopColor='#ff473f' />
52+
<stop offset='.699' stopColor='#ff5138' />
53+
<stop offset='.771' stopColor='#ff5b33' />
54+
<stop offset='.861' stopColor='#ff6c29' />
55+
<stop offset='1' stopColor='#ff8c18' />
56+
</linearGradient>
57+
<linearGradient id='google__d'>
58+
<stop offset='.408' stopColor='#fb4e5a' />
59+
<stop offset='1' stopColor='#ff4540' />
60+
</linearGradient>
61+
<linearGradient id='google__c'>
62+
<stop offset='.132' stopColor='#0cba65' />
63+
<stop offset='.21' stopColor='#0bb86d' />
64+
<stop offset='.297' stopColor='#09b479' />
65+
<stop offset='.396' stopColor='#08ad93' />
66+
<stop offset='.477' stopColor='#0aa6a9' />
67+
<stop offset='.568' stopColor='#0d9cc6' />
68+
<stop offset='.667' stopColor='#1893dd' />
69+
<stop offset='.769' stopColor='#258bf1' />
70+
<stop offset='.859' stopColor='#3086ff' />
71+
</linearGradient>
72+
<linearGradient id='google__e'>
73+
<stop offset='.366' stopColor='#ff4e3a' />
74+
<stop offset='.458' stopColor='#ff8a1b' />
75+
<stop offset='.54' stopColor='#ffa312' />
76+
<stop offset='.616' stopColor='#ffb60c' />
77+
<stop offset='.771' stopColor='#ffcd0a' />
78+
<stop offset='.861' stopColor='#fecf0a' />
79+
<stop offset='.915' stopColor='#fecf08' />
80+
<stop offset='1' stopColor='#fdcd01' />
81+
</linearGradient>
82+
<linearGradient
83+
xlinkHref='#google__a'
84+
id='google__s'
85+
x1='219.7'
86+
x2='254.467'
87+
y1='329.535'
88+
y2='329.535'
89+
gradientUnits='userSpaceOnUse'
90+
/>
91+
<radialGradient
92+
xlinkHref='#google__b'
93+
id='google__m'
94+
cx='109.627'
95+
cy='135.862'
96+
r='71.46'
97+
fx='109.627'
98+
fy='135.862'
99+
gradientTransform='matrix(-1.93688 1.043 1.45573 2.55542 290.525 -400.634)'
100+
gradientUnits='userSpaceOnUse'
101+
/>
102+
<radialGradient
103+
xlinkHref='#google__c'
104+
id='google__n'
105+
cx='45.259'
106+
cy='279.274'
107+
r='71.46'
108+
fx='45.259'
109+
fy='279.274'
110+
gradientTransform='matrix(-3.5126 -4.45809 -1.69255 1.26062 870.8 191.554)'
111+
gradientUnits='userSpaceOnUse'
112+
/>
113+
<radialGradient
114+
xlinkHref='#google__d'
115+
id='google__l'
116+
cx='304.017'
117+
cy='118.009'
118+
r='47.854'
119+
fx='304.017'
120+
fy='118.009'
121+
gradientTransform='matrix(2.06435 0 0 2.59204 -297.679 -151.747)'
122+
gradientUnits='userSpaceOnUse'
123+
/>
124+
<radialGradient
125+
xlinkHref='#google__e'
126+
id='google__o'
127+
cx='181.001'
128+
cy='177.201'
129+
r='71.46'
130+
fx='181.001'
131+
fy='177.201'
132+
gradientTransform='matrix(-.24858 2.08314 2.96249 .33417 -255.146 -331.164)'
133+
gradientUnits='userSpaceOnUse'
134+
/>
135+
<radialGradient
136+
xlinkHref='#google__f'
137+
id='google__p'
138+
cx='207.673'
139+
cy='108.097'
140+
r='41.102'
141+
fx='207.673'
142+
fy='108.097'
143+
gradientTransform='matrix(-1.2492 1.34326 -3.89684 -3.4257 880.501 194.905)'
144+
gradientUnits='userSpaceOnUse'
145+
/>
146+
<radialGradient
147+
xlinkHref='#google__g'
148+
id='google__r'
149+
cx='109.627'
150+
cy='135.862'
151+
r='71.46'
152+
fx='109.627'
153+
fy='135.862'
154+
gradientTransform='matrix(-1.93688 -1.043 1.45573 -2.55542 290.525 838.683)'
155+
gradientUnits='userSpaceOnUse'
156+
/>
157+
<radialGradient
158+
xlinkHref='#google__h'
159+
id='google__j'
160+
cx='154.87'
161+
cy='145.969'
162+
r='71.46'
163+
fx='154.87'
164+
fy='145.969'
165+
gradientTransform='matrix(-.0814 -1.93722 2.92674 -.11625 -215.135 632.86)'
166+
gradientUnits='userSpaceOnUse'
167+
/>
168+
<filter
169+
id='google__q'
170+
width='1.097'
171+
height='1.116'
172+
x='-.048'
173+
y='-.058'
174+
colorInterpolationFilters='sRGB'
175+
>
176+
<feGaussianBlur stdDeviation='1.701' />
177+
</filter>
178+
<filter
179+
id='google__k'
180+
width='1.033'
181+
height='1.02'
182+
x='-.017'
183+
y='-.01'
184+
colorInterpolationFilters='sRGB'
185+
>
186+
<feGaussianBlur stdDeviation='.242' />
187+
</filter>
188+
<clipPath id='google__i' clipPathUnits='userSpaceOnUse'>
189+
<path d='M371.378 193.24H237.083v53.438h77.167c-1.241 7.563-4.026 15.003-8.105 21.786-4.674 7.773-10.451 13.69-16.373 18.196-17.74 13.498-38.42 16.258-52.783 16.258-36.283 0-67.283-23.286-79.285-54.928-.484-1.149-.805-2.335-1.197-3.507a81.115 81.115 0 0 1-4.101-25.448c0-9.226 1.569-18.057 4.43-26.398 11.285-32.897 42.985-57.467 80.179-57.467 7.481 0 14.685.884 21.517 2.648a77.668 77.668 0 0 1 33.425 18.25l40.834-39.712c-24.839-22.616-57.219-36.32-95.844-36.32-30.878 0-59.386 9.553-82.748 25.7-18.945 13.093-34.483 30.625-44.97 50.985-9.753 18.879-15.094 39.8-15.094 62.294 0 22.495 5.35 43.633 15.103 62.337v.126c10.302 19.857 25.368 36.954 43.678 49.988 15.997 11.386 44.68 26.551 84.031 26.551 22.63 0 42.687-4.051 60.375-11.644 12.76-5.478 24.065-12.622 34.301-21.804 13.525-12.132 24.117-27.139 31.347-44.404 7.23-17.265 11.097-36.79 11.097-57.957 0-9.858-.998-19.87-2.689-28.968Z' />
190+
</clipPath>
191+
</defs>
192+
<g clipPath='url(#google__i)' transform='matrix(.95792 0 0 .98525 -90.174 -78.856)'>
193+
<path
194+
fill='url(#google__j)'
195+
d='M92.076 219.958c.148 22.14 6.501 44.983 16.117 63.424v.127c6.949 13.392 16.445 23.97 27.26 34.452l65.327-23.67c-12.36-6.235-14.246-10.055-23.105-17.026-9.054-9.066-15.802-19.473-20.004-31.677h-.17l.17-.127c-2.765-8.058-3.037-16.613-3.14-25.503Z'
196+
filter='url(#google__k)'
197+
/>
198+
<path
199+
fill='url(#google__l)'
200+
d='M237.083 79.025c-6.456 22.526-3.988 44.421 0 57.161 7.457.006 14.64.888 21.45 2.647a77.662 77.662 0 0 1 33.424 18.25l41.88-40.726c-24.81-22.59-54.667-37.297-96.754-37.332Z'
201+
filter='url(#google__k)'
202+
/>
203+
<path
204+
fill='url(#google__m)'
205+
d='M236.943 78.847c-31.67 0-60.91 9.798-84.871 26.359a145.533 145.533 0 0 0-24.332 21.15c-1.904 17.744 14.257 39.551 46.262 39.37 15.528-17.936 38.495-29.542 64.056-29.542l.07.002-1.044-57.335c-.048 0-.093-.004-.14-.004Z'
206+
filter='url(#google__k)'
207+
/>
208+
<path
209+
fill='url(#google__n)'
210+
d='m341.475 226.379-28.268 19.285c-1.24 7.562-4.028 15.002-8.107 21.786-4.674 7.772-10.45 13.69-16.373 18.196-17.702 13.47-38.328 16.244-52.687 16.255-14.842 25.102-17.444 37.675 1.043 57.934 22.877-.016 43.157-4.117 61.046-11.796 12.931-5.551 24.388-12.792 34.761-22.097 13.706-12.295 24.442-27.503 31.769-45 7.327-17.497 11.245-37.282 11.245-58.734Z'
211+
filter='url(#google__k)'
212+
/>
213+
<path
214+
fill='#3086ff'
215+
d='M234.996 191.21v57.498h136.006c1.196-7.874 5.152-18.064 5.152-26.5 0-9.858-.996-21.899-2.687-30.998Z'
216+
filter='url(#google__k)'
217+
/>
218+
<path
219+
fill='url(#google__o)'
220+
d='M128.39 124.327c-8.394 9.119-15.564 19.326-21.249 30.364-9.753 18.879-15.094 41.83-15.094 64.324 0 .317.026.627.029.944 4.32 8.224 59.666 6.649 62.456 0-.004-.31-.039-.613-.039-.924 0-9.226 1.57-16.026 4.43-24.367 3.53-10.289 9.056-19.763 16.123-27.926 1.602-2.031 5.875-6.397 7.121-9.016.475-.997-.862-1.557-.937-1.908-.083-.393-1.876-.077-2.277-.37-1.275-.929-3.8-1.414-5.334-1.845-3.277-.921-8.708-2.953-11.725-5.06-9.536-6.658-24.417-14.612-33.505-24.216Z'
221+
filter='url(#google__k)'
222+
/>
223+
<path
224+
fill='url(#google__p)'
225+
d='M162.099 155.857c22.112 13.301 28.471-6.714 43.173-12.977l-25.574-52.664a144.74 144.74 0 0 0-26.543 14.504c-12.316 8.512-23.192 18.9-32.176 30.72Z'
226+
filter='url(#google__q)'
227+
/>
228+
<path
229+
fill='url(#google__r)'
230+
d='M171.099 290.222c-29.683 10.641-34.33 11.023-37.062 29.29a144.806 144.806 0 0 0 16.792 13.984c15.996 11.386 46.766 26.551 86.118 26.551.046 0 .09-.004.137-.004v-59.157l-.094.002c-14.736 0-26.512-3.843-38.585-10.527-2.977-1.648-8.378 2.777-11.123.799-3.786-2.729-12.9 2.35-16.183-.938Z'
231+
filter='url(#google__k)'
232+
/>
233+
<path
234+
fill='url(#google__s)'
235+
d='M219.7 299.023v59.996c5.506.64 11.236 1.028 17.247 1.028 6.026 0 11.855-.307 17.52-.872v-59.748a105.119 105.119 0 0 1-17.477 1.461c-5.932 0-11.7-.686-17.29-1.865Z'
236+
filter='url(#google__k)'
237+
opacity='.5'
238+
/>
239+
</g>
240+
</svg>
241+
)
242+
243+
export { Google }

apps/web/src/components/svgs/index.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
export { default as SvgCircleCheckMark } from './circle-check-mark'
2+
export { default as SvgGithubLogo } from './github-logo'
3+
export { Google } from './google'
4+
export { default as SvgLinkedInLogo } from './linkedin-logo'
25
export { default as SvgLogo } from './logo'
36
export { default as SvgLogoBlack } from './logo-black'
47
export { default as SvgXLogo } from './x-logo'
5-
export { default as SvgGithubLogo } from './github-logo'
6-
export { default as SvgLinkedInLogo } from './linkedin-logo'

apps/web/src/components/svgs/logo.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import React from 'react'
1+
import type React from 'react'
22

33
export default function Logo(props: React.SVGProps<SVGSVGElement>) {
44
return (

0 commit comments

Comments
 (0)