Commit 99f73f7
authored
feat(auth): redesign sign-in page (#3547)
* feat(auth): redesign sign-in page
Bring more brand presence to the auth surface while keeping behavior
unchanged. All flow states, query modes, providers, and redirects are
preserved.
Form column:
- Move the Kilo logo above the title and center the stack
- Drop redundant 'Kilo' from titles ('Welcome to Kilo Code' -> 'Welcome
back', 'Create your Kilo Code account' -> 'Create your account')
- Tighten provider button primitive (h-10, bg-card, focus-visible ring,
consistent svg sizing)
- Group Enterprise SSO and 'Get started' link into a centered secondary
footer; brand-yellow on the get-started link as the column's single
brand moment
Marketing column:
- Replace floating bullet text with a contained card surface (matches
#0a0a0a left panel) sitting on a dithered shader background via
@paper-design/shaders-react (paused under prefers-reduced-motion)
- New 'One coding agent / Every model / No subscription' headline with
brand-yellow accent on the closing line
- Convert paragraph bullets into structured rows with brand-yellow
Check icons
- Add 'Trusted by teams at' caption above the customer logo strip
Layout:
- Lock both panes to a true 50/50 split on xl+
- Drop the divider border between the panes
- Force the left main background to #0a0a0a
Logos:
- Refresh all five SVGs to a uniform 154x51 viewBox
- Strip background plates and hardcoded path fills so theming via CSS
works
- Render at fill-foreground with row-level opacity-75 for subtle
presence; entrance animation removed
* fix(auth): respect prefers-reduced-motion and avoid eager video preload
- AuthMarketingAside: use `reduceMotion === true` so the shader speed
doesn't briefly animate while `useReducedMotion()` is null during SSR
and pre-hydration.
- AnimatedLogoMark: same strict comparison plus skip hover playback when
reduced motion is set.
- AnimatedLogoMark: switch the kilo-anim.mp4 video to `preload="none"`
so it isn't fetched on every mount; the mark is now used across
multiple sign-in flow states.
* fix(auth): show static logo mark before hover loads video
Layer the SVG underneath the video so the mark renders immediately on
mount. The video element keeps preload="none" and fades in on hover
once it has frames. Previously the mark was invisible until the user
hovered.
* fix(auth): render logo mark in white via CSS invert
The shared public asset `kilo-v1.svg` hardcodes `fill: #231f20` in an
internal style block, which renders almost invisibly on the dark
sign-in surface. Apply Tailwind's `invert` filter so the mark renders
white without modifying the shared asset (other surfaces use it on
light backgrounds).
* refactor(auth): simplify AnimatedLogoMark to a static, non-interactive image
Drop the hover video, the link wrapper, and all client-side hooks.
The mark on the sign-in page only needs to identify the brand; it
doesn't need to play on hover or link out. Resulting component is a
plain server component rendering the inverted SVG.
* feat(auth): switch sign-in layout to 60/40 split
Give the form column more room (3/5) and let the marketing aside take
the remaining 2/5 on xl+ viewports. Below xl the aside stays hidden,
so the form still fills the visible row.1 parent 35e40bb commit 99f73f7
15 files changed
Lines changed: 310 additions & 229 deletions
File tree
- apps/web
- src
- app/users
- sign_in
- components
- assets
- auth
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
| 73 | + | |
73 | 74 | | |
74 | 75 | | |
75 | 76 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | | - | |
9 | | - | |
10 | | - | |
11 | | - | |
12 | | - | |
| 7 | + | |
13 | 8 | | |
14 | 9 | | |
15 | 10 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
20 | 20 | | |
21 | 21 | | |
22 | 22 | | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
| 23 | + | |
30 | 24 | | |
31 | 25 | | |
32 | 26 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | | - | |
2 | 1 | | |
3 | 2 | | |
4 | 3 | | |
5 | 4 | | |
6 | 5 | | |
7 | 6 | | |
8 | | - | |
9 | 7 | | |
10 | 8 | | |
11 | 9 | | |
12 | | - | |
13 | | - | |
| 10 | + | |
14 | 11 | | |
15 | 12 | | |
16 | 13 | | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
22 | | - | |
23 | | - | |
24 | | - | |
25 | | - | |
26 | | - | |
27 | | - | |
28 | | - | |
29 | | - | |
30 | | - | |
31 | | - | |
32 | | - | |
33 | | - | |
34 | | - | |
35 | | - | |
36 | | - | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
37 | 19 | | |
38 | 20 | | |
39 | 21 | | |
40 | | - | |
41 | 22 | | |
42 | 23 | | |
43 | 24 | | |
44 | 25 | | |
45 | 26 | | |
46 | | - | |
47 | | - | |
48 | | - | |
49 | | - | |
50 | | - | |
51 | | - | |
52 | | - | |
53 | | - | |
54 | | - | |
55 | | - | |
56 | | - | |
57 | | - | |
58 | | - | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
59 | 42 | | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
64 | | - | |
65 | | - | |
66 | | - | |
67 | | - | |
68 | | - | |
69 | | - | |
70 | | - | |
71 | | - | |
72 | | - | |
73 | | - | |
74 | | - | |
| 43 | + | |
| 44 | + | |
75 | 45 | | |
76 | 46 | | |
77 | 47 | | |
| |||
Large diffs are not rendered by default.
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1 | 1 | | |
2 | 2 | | |
3 | 3 | | |
4 | | - | |
5 | | - | |
6 | | - | |
7 | | - | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
8 | 7 | | |
| 8 | + | |
9 | 9 | | |
10 | | - | |
11 | | - | |
12 | | - | |
13 | | - | |
14 | | - | |
15 | | - | |
16 | | - | |
17 | | - | |
18 | | - | |
19 | | - | |
20 | | - | |
21 | | - | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
22 | 15 | | |
23 | 16 | | |
24 | 17 | | |
0 commit comments