Skip to content

Commit ecef353

Browse files
authored
remove dots (sveltejs#71)
* remove dots * smidge more lateral padding * tweak footer padding * refactor * add next/prev arrows * small adjustment * tweak header * fix editor padding * tweak <pre> styles
1 parent 55f1332 commit ecef353

File tree

4 files changed

+77
-83
lines changed

4 files changed

+77
-83
lines changed

src/routes/tutorial/[slug]/_/Editor.svelte

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@
5353
editor = monaco.editor.create(container, {
5454
fontFamily: 'Roboto Mono',
5555
fontSize: 13,
56+
padding: {
57+
top: 16,
58+
bottom: 16
59+
},
5660
minimap: {
5761
enabled: false
5862
}

src/routes/tutorial/[slug]/_/Menu/Menu.svelte

Lines changed: 62 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,6 @@
4343
afterNavigate(() => {
4444
search = '';
4545
});
46-
47-
export function open() {
48-
is_open = true;
49-
}
5046
</script>
5147

5248
<div class="menu-toggle-container">
@@ -60,6 +56,22 @@
6056
</button>
6157
</div>
6258

59+
<header>
60+
<a href={current.prev ? `/tutorial/${current.prev.slug}` : undefined} aria-label="Previous">
61+
<Icon name="arrow-left" size={16} />
62+
</a>
63+
64+
<h1 on:click={() => (is_open = true)}>
65+
Part {current.part.index + 1} <span class="separator">/</span>
66+
{current.chapter.title} <span class="separator">/</span>
67+
<strong>{current.title}</strong>
68+
</h1>
69+
70+
<a href={current.next ? `/tutorial/${current.next.slug}` : undefined} aria-label="Previous">
71+
<Icon name="arrow-right" size={16} />
72+
</a>
73+
</header>
74+
6375
<nav class:open={is_open} aria-label="tutorial sections">
6476
<div class="controls">
6577
<input
@@ -124,13 +136,56 @@
124136
</nav>
125137

126138
<style>
139+
header {
140+
display: flex;
141+
gap: 0.5rem;
142+
align-items: center;
143+
border-bottom: 1px solid var(--border-color);
144+
border-right: 1px solid var(--border-color);
145+
padding: 0 0 0 var(--menu-width);
146+
height: var(--menu-width);
147+
align-items: center;
148+
}
149+
150+
header strong,
151+
header h1 {
152+
font-size: 1.4rem;
153+
}
154+
155+
header strong {
156+
color: var(--prime);
157+
}
158+
159+
header h1 {
160+
color: var(--second);
161+
white-space: nowrap;
162+
text-overflow: ellipsis;
163+
overflow: hidden;
164+
font-weight: 400;
165+
flex: 1;
166+
top: 0.15rem;
167+
}
168+
169+
.separator {
170+
position: relative;
171+
font-size: 0.8em;
172+
opacity: 0.3;
173+
top: -0.1rem;
174+
display: inline-block;
175+
}
176+
177+
header a:not([href]) {
178+
opacity: 0.1;
179+
cursor: default;
180+
}
181+
127182
nav {
128183
--menu-width: 5.4rem;
129184
position: absolute;
130185
width: 100%;
131186
height: 100%;
132187
transition: transform 0.2s;
133-
transform: translate(calc(var(--menu-width) - 100%), 0);
188+
transform: translate(-100%, 0);
134189
background: var(--light-blue);
135190
z-index: 2;
136191
/* filter: drop-shadow(2px 0 2px rgba(0, 0, 0, 0.1)); */
@@ -183,6 +238,7 @@
183238
background: var(--light-blue);
184239
border: 2px solid transparent;
185240
box-sizing: border-box;
241+
padding: 0.2rem 0 0 0;
186242
}
187243
188244
.menu-toggle:focus-visible {
@@ -228,7 +284,7 @@
228284
font-weight: bold;
229285
}
230286
231-
li.expanded img {
287+
li.expanded > img {
232288
transform: rotate(90deg);
233289
}
234290
@@ -242,38 +298,6 @@
242298
--color: var(--second);
243299
}
244300
245-
.section > a::before,
246-
.section > a::after {
247-
content: '';
248-
top: calc(1.3rem - 0.5 * var(--dot-size));
249-
right: calc(0.5 * (var(--menu-width) - var(--dot-size)) - 0.7rem);
250-
width: var(--dot-size);
251-
height: var(--dot-size);
252-
border-radius: 50%;
253-
border: 1px solid var(--color);
254-
box-sizing: border-box;
255-
}
256-
257-
.section a::after {
258-
transform: scale(0);
259-
transition: transform 0.2s;
260-
background: var(--color);
261-
}
262-
263-
.part > a::after,
264-
.chapter > a::after {
265-
content: attr(data-label);
266-
width: var(--menu-width);
267-
text-align: center;
268-
top: 0.2rem;
269-
right: -0.7rem;
270-
color: hsl(240, 8%, 64%);
271-
}
272-
273-
.section[aria-current='page'] > a::after {
274-
transform: none;
275-
}
276-
277301
a {
278302
color: var(--second);
279303
padding: 0 0 0 0.5rem;

src/routes/tutorial/[slug]/_/Sidebar.svelte

Lines changed: 4 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
import { createEventDispatcher } from 'svelte';
33
import { afterNavigate } from '$app/navigation';
44
import Modal from '$lib/components/Modal.svelte';
5-
import { Icon } from '@sveltejs/site-kit';
65
import Menu from './Menu/Menu.svelte';
76
87
/** @type {import('$lib/types').PartStub[]} */
@@ -16,9 +15,6 @@
1615
const namespace = 'learn.svelte.dev';
1716
const copy_enabled = `${namespace}:copy_enabled`;
1817
19-
/** @type {import('svelte').SvelteComponent} */
20-
let menu;
21-
2218
/** @type {HTMLElement} */
2319
let sidebar;
2420
@@ -32,14 +28,7 @@
3228
});
3329
</script>
3430

35-
<Menu bind:this={menu} {index} current={section} />
36-
37-
<header on:click={() => menu.open()}>
38-
<h1>
39-
Part {section.part.index + 1} > {section.chapter.title} >
40-
<strong>{section.title}</strong>
41-
</h1>
42-
</header>
31+
<Menu {index} current={section} />
4332

4433
<div
4534
bind:this={sidebar}
@@ -113,36 +102,10 @@
113102
{/if}
114103

115104
<style>
116-
header {
117-
display: flex;
118-
border-bottom: 1px solid var(--border-color);
119-
border-right: 1px solid var(--border-color);
120-
padding: 0 0 0 calc(var(--menu-width) + 2.2rem);
121-
height: var(--menu-width);
122-
align-items: center;
123-
}
124-
125-
header strong,
126-
header h1 {
127-
font-size: 1.4rem;
128-
}
129-
130-
header strong {
131-
color: var(--prime);
132-
}
133-
134-
header h1 {
135-
color: var(--second);
136-
white-space: nowrap;
137-
text-overflow: ellipsis;
138-
overflow: hidden;
139-
font-weight: 400;
140-
}
141-
142105
.text {
143106
flex: 1 1;
144107
overflow-y: auto;
145-
padding: 2.2rem 2.2rem 2.2rem calc(var(--menu-width) + 2.2rem);
108+
padding: 2.2rem 3rem;
146109
color: var(--second);
147110
border-right: 1px solid var(--border-color);
148111
}
@@ -192,7 +155,7 @@
192155
margin: 0 0 1.6rem 0;
193156
line-height: 1.3;
194157
border-radius: 0.5rem;
195-
box-shadow: inset 1px 1px 4px hsl(206, 20%, 85%);
158+
box-shadow: inset 1px 1px 3px hsl(206deg 20% 93%);
196159
}
197160
198161
.text :global(pre) :global(code) {
@@ -256,7 +219,7 @@
256219
}
257220
258221
footer {
259-
padding: 1.5rem 2.2rem 1.5rem calc(var(--menu-width) + 2.2rem);
222+
padding: 1rem 3rem;
260223
display: flex;
261224
justify-content: space-between;
262225
border-top: 1px solid var(--border-color);

src/routes/tutorial/[slug]/index.svelte

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,13 @@
282282
<div class="container">
283283
<SplitPane type="horizontal" min="360px" max="50%" pos="33%">
284284
<section class="content" slot="a">
285-
<Sidebar {index} {section} on:select={e => {
286-
select(/** @type {import('$lib/types').FileStub} */ (section.a[e.detail.file]));
287-
}} />
285+
<Sidebar
286+
{index}
287+
{section}
288+
on:select={(e) => {
289+
select(/** @type {import('$lib/types').FileStub} */ (section.a[e.detail.file]));
290+
}}
291+
/>
288292
</section>
289293
290294
<section slot="b">
@@ -470,7 +474,6 @@
470474
}
471475
472476
.editor-container {
473-
padding: 0.5rem;
474477
background-color: var(--light-blue);
475478
}
476479
</style>

0 commit comments

Comments
 (0)