|
1 | | -type Segment = { w: number; dark: boolean }; |
| 1 | +type Color = "dark" | "blue" | "red" | "white"; |
| 2 | +type Segment = { w: number; c: Color }; |
| 3 | + |
| 4 | +const D = (w: number): Segment => ({ w, c: "dark" }); |
| 5 | +const B = (w: number): Segment => ({ w, c: "blue" }); |
| 6 | +const R = (w: number): Segment => ({ w, c: "red" }); |
| 7 | +const W = (w: number): Segment => ({ w, c: "white" }); |
2 | 8 |
|
3 | 9 | const VARIANTS: Record<number, Segment[]> = { |
4 | | - 1: [ |
5 | | - { w: 21, dark: true }, { w: 7, dark: false }, { w: 22, dark: true }, |
6 | | - { w: 7, dark: false }, { w: 15, dark: true }, { w: 8, dark: false }, |
7 | | - { w: 14, dark: true }, { w: 6, dark: false }, |
8 | | - ], |
9 | | - 2: [ |
10 | | - { w: 6, dark: false }, { w: 22, dark: true }, { w: 19, dark: false }, |
11 | | - { w: 19, dark: true }, { w: 8, dark: false }, { w: 15, dark: true }, |
12 | | - { w: 11, dark: false }, |
13 | | - ], |
14 | | - 3: [ |
15 | | - { w: 26, dark: true }, { w: 17, dark: false }, { w: 24, dark: true }, |
16 | | - { w: 15, dark: false }, { w: 11, dark: true }, { w: 7, dark: false }, |
17 | | - ], |
18 | | - 4: [ |
19 | | - { w: 8, dark: true }, { w: 5, dark: false }, { w: 12, dark: true }, |
20 | | - { w: 8, dark: false }, { w: 13, dark: true }, { w: 8, dark: false }, |
21 | | - { w: 10, dark: true }, { w: 9, dark: false }, { w: 13, dark: true }, |
22 | | - { w: 7, dark: false }, { w: 7, dark: true }, |
23 | | - ], |
24 | | - 5: [ |
25 | | - { w: 14, dark: false }, { w: 4, dark: true }, { w: 17, dark: false }, |
26 | | - { w: 13, dark: true }, { w: 9, dark: false }, { w: 11, dark: true }, |
27 | | - { w: 11, dark: false }, { w: 15, dark: true }, { w: 6, dark: false }, |
28 | | - ], |
29 | | - 6: [ |
30 | | - { w: 7, dark: true }, { w: 7, dark: false }, { w: 9, dark: true }, |
31 | | - { w: 7, dark: false }, { w: 11, dark: true }, { w: 7, dark: false }, |
32 | | - { w: 11, dark: true }, { w: 7, dark: false }, { w: 10, dark: true }, |
33 | | - { w: 8, dark: false }, { w: 9, dark: true }, { w: 7, dark: false }, |
34 | | - ], |
35 | | - 7: [ |
36 | | - { w: 5, dark: true }, { w: 6, dark: false }, { w: 7, dark: true }, |
37 | | - { w: 7, dark: false }, { w: 9, dark: true }, { w: 7, dark: false }, |
38 | | - { w: 10, dark: true }, { w: 6, dark: false }, { w: 8, dark: true }, |
39 | | - { w: 7, dark: false }, { w: 9, dark: true }, { w: 6, dark: false }, |
40 | | - { w: 7, dark: true }, { w: 6, dark: false }, |
41 | | - ], |
42 | | - 8: [ |
43 | | - { w: 3, dark: true }, { w: 6, dark: false }, { w: 19, dark: true }, |
44 | | - { w: 8, dark: false }, { w: 5, dark: true }, { w: 17, dark: false }, |
45 | | - { w: 11, dark: true }, { w: 6, dark: false }, { w: 13, dark: true }, |
46 | | - { w: 12, dark: false }, |
47 | | - ], |
| 10 | + // home: after hero | blog: after header |
| 11 | + 1: [ D(21), B(7), D(22), B(7), D(15), B(8), D(14), B(6) ], |
| 12 | + |
| 13 | + // home: after "Who we work with" | careers: after header |
| 14 | + 2: [ B(6), D(22), B(19), D(19), B(8), D(15), B(11) ], |
| 15 | + |
| 16 | + // home: after "How we work with you" | sponsor: after header |
| 17 | + 3: [ D(26), B(17), D(24), B(15), D(11), B(7) ], |
| 18 | + |
| 19 | + // services: after header — no accent, dense rhythm |
| 20 | + 4: [ D(8), B(5), D(12), B(8), D(13), B(8), D(10), B(9), D(13), B(7), D(7) ], |
| 21 | + |
| 22 | + // (unused) — pure blue/dark |
| 23 | + 5: [ B(14), D(4), B(17), D(13), B(9), D(11), B(11), D(15), B(6) ], |
| 24 | + |
| 25 | + // home: before blog |
| 26 | + 6: [ D(7), B(7), D(9), B(7), D(11), B(7), D(11), B(7), D(10), B(8), D(9), B(7) ], |
| 27 | + |
| 28 | + 7: [ D(5), B(6), D(7), B(7), D(9), B(7), D(10), B(6), D(8), B(7), D(9), B(6), D(7), B(6) ], |
| 29 | + |
| 30 | + 8: [ D(3), B(6), D(19), B(8), D(5), B(17), D(11), B(6), D(13), B(12) ], |
| 31 | +}; |
| 32 | + |
| 33 | +const COLOR_MAP: Record<Color, string> = { |
| 34 | + dark: "#1d1d1b", |
| 35 | + blue: "var(--ifm-color-blue-jupyter)", |
| 36 | + red: "var(--ifm-color-accent-red)", |
| 37 | + white: "#ffffff", |
48 | 38 | }; |
49 | 39 |
|
50 | 40 | type Variant = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8; |
51 | 41 |
|
52 | 42 | export default function SectionSeparator({ variant = 1 }: { variant?: Variant }) { |
53 | 43 | const segments = VARIANTS[variant]; |
54 | 44 | return ( |
55 | | - <div style={{ display: "flex", gap: "4px", height: "4px", alignItems: "stretch", width: "100%", backgroundColor: "white" }}> |
56 | | - {segments.map(({ w, dark }, i) => ( |
| 45 | + <div style={{ display: "flex", gap: "2px", height: "2px", alignItems: "stretch", width: "100%", backgroundColor: "white" }}> |
| 46 | + {segments.map(({ w, c }, i) => ( |
57 | 47 | <div |
58 | 48 | key={i} |
59 | 49 | style={{ |
60 | 50 | flex: w, |
61 | | - backgroundColor: dark ? "#1d1d1b" : "var(--ifm-color-blue-jupyter)", |
| 51 | + backgroundColor: COLOR_MAP[c], |
62 | 52 | clipPath: "polygon(5px 0%, 100% 0%, calc(100% - 5px) 100%, 0% 100%)", |
63 | 53 | }} |
64 | 54 | /> |
|
0 commit comments