Skip to content

Commit 9b6307b

Browse files
committed
fix: page
1 parent a846bab commit 9b6307b

7 files changed

Lines changed: 181 additions & 75 deletions

File tree

page/index.html

Lines changed: 140 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
body {
2121
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
22-
line-height: 1.6;
22+
line-height: 1.4;
2323
color: var(--rust-light);
2424
background-color: var(--rust-dark);
2525
max-width: 900px;
@@ -35,10 +35,10 @@
3535
h5,
3636
h6 {
3737
color: var(--rust-orange);
38-
margin-top: 1.5em;
39-
margin-bottom: 0.5em;
38+
margin-top: 1.3em;
39+
margin-bottom: 0.4em;
4040
font-weight: 600;
41-
line-height: 1.3;
41+
line-height: 1.2;
4242
}
4343

4444
h1 {
@@ -87,7 +87,7 @@
8787
}
8888

8989
a:hover {
90-
border-bottom-color: var(--rust-link);
90+
border-bottom-color: var(--rust-gray);
9191
}
9292

9393
/* Lists */
@@ -185,14 +185,27 @@
185185
h6 code {
186186
font-size: 0.9em;
187187
}
188-
</style></head><title>Rust Basel Meetups</title><div id="0"><h2>Opensource Contributions Meetup</h2></div><div><h3>Address</h3><p>Barfüsserplatz 6</p><p>Basel</p><p>4051</p><p>Switzerland</p><p>Level 4 - Optravis Headquarter</p></div><h3>Sponsors</h3><div><p>Optravic LLC</p><a href="http://optravis.com">http://optravis.com</a><p></p></div><div><h3>Opensource Contribution Meetup</h3>
188+
</style></head><title>Rust Basel Meetups</title><a href="https://rust-basel.ch"><h1>Rust Basel | Meetups | Workshops</h1></a><div><input type="search" id="search" placeholder="Search Meetups"><button>Search</button></div><div id="0"><h2>Opensource Contributions Meetup | ? | 0</h2></div><div><p>Level 4 - Optravis Headquarter | Barfüsserplatz 6 | Basel | 4051</p></div><h3>Sponsors</h3><div><p>Optravic LLC</p><a href="http://optravis.com">http://optravis.com</a><p></p></div><div><h3>Meetup</h3>
189189
<p>Welcome to the first Rust Basel meetup focused on open source contributions!</p>
190+
<h3>Featured Projects and Issues</h3>
191+
<h4>Issues</h4>
192+
<ul>
193+
<li><a href="https://github.com/vleue/vleue_navigator/issues/106">https://github.com/vleue/vleue_navigator/issues/106</a></li>
194+
</ul>
195+
<h4>Repositories</h4>
196+
<ul>
197+
<li><a href="https://github.com/BloopAI/vibe-kanban">https://github.com/BloopAI/vibe-kanban</a></li>
198+
<li><a href="https://github.com/ironcalc/IronCalc">https://github.com/ironcalc/IronCalc</a></li>
199+
<li><a href="https://github.com/rust-basel/cli">https://github.com/rust-basel/cli</a></li>
200+
<li>Create your own Rust Open Source Project</li>
201+
</ul>
190202
<h3>Teambuilding</h3>
191-
<p>Build a team of two or three people.
192-
Teams with three people might want to make sure that at least one person has some prior experience with Rust.</p>
193-
<h3>Choose a project</h3>
194-
<p>First decide what option you want to pursue:</p>
195-
<p>Options:</p>
203+
<ul>
204+
<li>We vote on which projects people want to work on.</li>
205+
<li>If more than three people want to work on the same project, we split the team into two teams.</li>
206+
<li>Make your spaces.</li>
207+
</ul>
208+
<h3>We vote on which ones are left over</h3>
196209
<ul>
197210
<li>Contribute to an existing Rust Open Source Project</li>
198211
<li>Start your own Open Source Project that integrates with Software via some Protocols or APIs
@@ -207,34 +220,123 @@ <h3>Choose a project</h3>
207220
</li>
208221
</ul>
209222
<h4>Solving Tickets</h4>
210-
<p>Make sure to first decide on the technical branch you are maybe intersted in:</p>
211-
<ul>
212-
<li>Embedded</li>
213-
<li>WebDev</li>
214-
<li>CLI</li>
215-
<li>GUI</li>
216-
<li>Databases</li>
217-
<li>ServerFrameworks</li>
218-
<li>Blockchain</li>
219-
</ul>
220-
<p>Then search what projects exitst in that area, see if there are any open tickets.
221-
What to look out for:</p>
223+
<p>What to look out for:</p>
222224
<ul>
223225
<li>Tickets with Help Wanted Label</li>
224226
<li>Tickets with Good First Issue Label</li>
225227
</ul>
226-
<h4>Integrating with Projects</h4>
227-
<p>Normally you use some software that can be extended in some way or support interactions over some protocol or API.
228-
Think about what software you use on a daily basis, or what software you would like to use but is missing some maybe a ui or a cli.</p>
229-
<h3>Projects and Issues</h3>
230-
<h4>Issues</h4>
231-
<ul>
232-
<li><a href="https://github.com/vleue/vleue_navigator/issues/106">https://github.com/vleue/vleue_navigator/issues/106</a></li>
233-
</ul>
234-
<h4>Repositories</h4>
235-
<ul>
236-
<li><a href="https://github.com/BloopAI/vibe-kanban">https://github.com/BloopAI/vibe-kanban</a></li>
237-
<li><a href="https://github.com/ironcalc/IronCalc">https://github.com/ironcalc/IronCalc</a></li>
238-
<li><a href="https://github.com/rust-basel/cli">https://github.com/rust-basel/cli</a></li>
239-
</ul>
240-
</div>
228+
</div><script>/**
229+
* Automatically jumps to elements based on search input field changes
230+
* Searches through all text content in the page and scrolls to the first match
231+
*/
232+
(function () {
233+
// Find all input fields with type="search" or role="search" or class containing "search"
234+
const searchInputs = document.querySelectorAll("search");
235+
236+
// If no search inputs found, create a listener for any input field
237+
const inputs =
238+
searchInputs.length > 0
239+
? searchInputs
240+
: document.querySelectorAll("search");
241+
242+
/**
243+
* Highlights matching text in the document
244+
*/
245+
function highlightText(text) {
246+
// Remove previous highlights
247+
document.querySelectorAll(".search-highlight").forEach((el) => {
248+
const parent = el.parentNode;
249+
parent.replaceChild(document.createTextNode(el.textContent), el);
250+
parent.normalize();
251+
});
252+
253+
if (!text || text.length < 2) return null;
254+
255+
// Find all text nodes in the document
256+
const walker = document.createTreeWalker(
257+
document.body,
258+
NodeFilter.SHOW_TEXT,
259+
{
260+
acceptNode: function (node) {
261+
// Skip script, style, and input elements
262+
if (node.parentElement.matches("script, style, input, textarea")) {
263+
return NodeFilter.FILTER_REJECT;
264+
}
265+
return NodeFilter.FILTER_ACCEPT;
266+
},
267+
},
268+
);
269+
270+
let node;
271+
let firstMatch = null;
272+
const textLower = text.toLowerCase();
273+
274+
while ((node = walker.nextNode())) {
275+
const nodeText = node.textContent;
276+
const nodeLower = nodeText.toLowerCase();
277+
const index = nodeLower.indexOf(textLower);
278+
279+
if (index !== -1) {
280+
// Create highlighted version
281+
const before = nodeText.substring(0, index);
282+
const match = nodeText.substring(index, index + text.length);
283+
const after = nodeText.substring(index + text.length);
284+
285+
const highlight = document.createElement("mark");
286+
highlight.className = "search-highlight";
287+
highlight.textContent = match;
288+
highlight.style.backgroundColor = "#ce422b";
289+
highlight.style.color = "#ffffff";
290+
highlight.style.padding = "2px 4px";
291+
highlight.style.borderRadius = "2px";
292+
293+
const fragment = document.createDocumentFragment();
294+
fragment.appendChild(document.createTextNode(before));
295+
fragment.appendChild(highlight);
296+
fragment.appendChild(document.createTextNode(after));
297+
298+
node.parentNode.replaceChild(fragment, node);
299+
300+
if (!firstMatch) {
301+
firstMatch = highlight;
302+
}
303+
}
304+
}
305+
306+
return firstMatch;
307+
}
308+
309+
/**
310+
* Jumps to the first matching element
311+
*/
312+
function jumpToMatch(searchText) {
313+
const firstMatch = highlightText(searchText);
314+
315+
if (firstMatch) {
316+
firstMatch.scrollIntoView({
317+
behavior: "smooth",
318+
block: "center",
319+
});
320+
return true;
321+
}
322+
return false;
323+
}
324+
325+
// Add event listeners to all search inputs
326+
inputs.forEach((input) => {
327+
let debounceTimer;
328+
329+
input.addEventListener("input", function (e) {
330+
clearTimeout(debounceTimer);
331+
332+
// Debounce to avoid excessive processing while typing
333+
debounceTimer = setTimeout(() => {
334+
const searchText = e.target.value.trim();
335+
jumpToMatch(searchText);
336+
}, 300);
337+
});
338+
});
339+
340+
console.log(`Search-to-jump initialized on ${inputs.length} input field(s)`);
341+
})();
342+
</script>

public/meetups.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
[[meetups]]
22
id = 0
33
title = "Opensource Contributions Meetup"
4-
date = "?"
5-
description = "In this meetup we will build teams to contribute to or create opensource software, you will get support in doing so"
4+
date = "11.02.2026"
5+
description = "In this meetup we will contribute to or create opensource software as teams, you will get support in doing so"
66
markdown_name = "opensource_0.md"
77

88
[meetups.address]
99
street = "Barfüsserplatz 6"
1010
city = "Basel"
1111
postal_code = "4051"
1212
country = "Switzerland"
13-
description = "Level 4 - Optravis Headquarter"
13+
description = "Optravis Headquarter - Level 4"
1414

1515
[[meetups.sponsors]]
1616
name = "Optravic LLC"

public/meetups/opensource_0.md

Lines changed: 23 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,33 +2,42 @@
22

33
Welcome to the first Rust Basel meetup focused on open source contributions!
44

5-
### Featured Projects and Issues
5+
### Projects and Issues
66

77
#### Issues
88
- https://github.com/vleue/vleue_navigator/issues/106
9+
- maybe you have an issue already
910

1011
#### Repositories
1112
- https://github.com/BloopAI/vibe-kanban
1213
- https://github.com/ironcalc/IronCalc
1314
- https://github.com/rust-basel/cli
15+
- your ideas
1416
- Create your own Rust Open Source Project
1517

1618
### Teambuilding
1719

1820
- We vote on which projects people want to work on.
19-
- If more than three people want to work on the same project, we split the team into two teams.
20-
- Make your spaces.
21-
22-
### We vote on which ones are left over
23-
24-
- Contribute to an existing Rust Open Source Project
25-
- Start your own Open Source Project that integrates with Software via some Protocols or APIs
26-
- Open Source Software
27-
- Proprietary Software (Please be aware of Licenses and Terms of Service restrictions)
21+
- If more than three people want to work on the same project, split the team into two teams.
22+
- Oranize yourself in physical space
2823

2924

30-
#### Solving Tickets
25+
#### Tips for contributing
26+
27+
- Check tickets with Help Wanted Label
28+
- Check tickets with Good First Issue Label
29+
- Reproducing a bug is also contributing
30+
- Be nice
3131

32-
What to look out for:
33-
- Tickets with Help Wanted Label
34-
- Tickets with Good First Issue Label
32+
#### When starting your own project
33+
34+
- think about one feature and only implement that in this session
35+
36+
- try to use cargo commands to get things done
37+
- cargo init
38+
- cargo add <dependency>
39+
- cargo run
40+
- cargo test
41+
- cargo fmt
42+
- cargo clippy --fix
43+
- cargo install --path .

public/page.css

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919

2020
body {
2121
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
22-
line-height: 1.6;
22+
line-height: 1.4;
2323
color: var(--rust-light);
2424
background-color: var(--rust-dark);
2525
max-width: 900px;
@@ -35,10 +35,10 @@ h4,
3535
h5,
3636
h6 {
3737
color: var(--rust-orange);
38-
margin-top: 1.5em;
39-
margin-bottom: 0.5em;
38+
margin-top: 1.3em;
39+
margin-bottom: 0.4em;
4040
font-weight: 600;
41-
line-height: 1.3;
41+
line-height: 1.2;
4242
}
4343

4444
h1 {
@@ -87,7 +87,7 @@ a {
8787
}
8888

8989
a:hover {
90-
border-bottom-color: var(--rust-link);
90+
border-bottom-color: var(--rust-gray);
9191
}
9292

9393
/* Lists */

src/meetups/mod.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
use maud::Markup;
21
use serde::{Deserialize, Serialize};
32

43
pub mod init;
@@ -37,16 +36,13 @@ pub struct Address {
3736
pub description: Option<String>,
3837
}
3938

40-
41-
4239
#[derive(Debug, Deserialize, Serialize, Clone)]
4340
pub struct Sponsor {
4441
pub name: String,
4542
pub website: Option<String>,
4643
pub content: Option<String>,
4744
}
4845

49-
5046
impl Meetup {
5147
fn default_with_id(id: u32) -> Self {
5248
let title = format!("Meetup {}", id);

src/meetups/website/md.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ pub fn single_markdown_to_html(meetup: Meetup, markdown: String) -> maud::Markup
2525
html! {
2626

2727
div id=(meetup.id) {
28-
h2 {(meetup.title)}
28+
h2 {(meetup.title) " | " (meetup.date) " | " (meetup.id)}
2929
}
3030
(address_html)
3131
(sponsor_html)

0 commit comments

Comments
 (0)