diff --git a/src/components/Controls.tsx b/src/components/Controls.tsx
index ab2040e..2f8e882 100644
--- a/src/components/Controls.tsx
+++ b/src/components/Controls.tsx
@@ -1,4 +1,5 @@
import { For, createSignal } from 'solid-js';
+import { createEffect } from 'solid-js';
import { useStore } from '../store/index';
import styles from './Controls.module.css';
@@ -7,39 +8,46 @@ import gridIcon from '../assets/icons/grid.svg'
export default () => {
const [store] = useStore();
- const [selected, setSelected] = createSignal(0);
- const [blobby, setBlobby] = createSignal([0]);
+ const [selected, setSelected] = createSignal('home');
+ const [blobby, setBlobby] = createSignal(['home']);
const controls = [
{ name: 'home', icon: homeIcon },
{ name: 'projects', icon: gridIcon },
{ name: 'whatever', icon: homeIcon },
]
+ const selectChapter = (chapterName: string) => {
+ if (chapterName !== selected()) {
+ setSelected(chapterName)
+ setBlobby(b => [chapterName, ...b])
+ setTimeout(() => {
+ setBlobby(b => [chapterName])
+ }, 500)
+ }
+ }
+
+ createEffect(() => {
+ selectChapter(store.visibleChapter());
+ return store.visibleChapter();
+ }, 'home');
+
return (
<>
-
{(control, i) =>
+ {(control) =>
}
-
{(control, i) =>
+ {(control) =>
{
- if (i() !== selected()) {
- setSelected(i())
- setBlobby(b => [i(), ...b])
- setTimeout(() => {
- setBlobby(b => [i()])
- }, 500)
- }
- }}
+ onClick={() => selectChapter(control.name)}
class={styles.control}
>
![]()
{
const [t] = useI18n();
- const [add] = createViewportObserver();
+ const [observer] = createViewportObserver({threshold: 0.9});
const [, { setVisibleChapter }] = useStore();
return (
{
- add(el, (event) => {
- console.log(event.isIntersecting);
+ use:observer={(event) => {
+ if (event.isIntersecting) {
setVisibleChapter('home');
- });
- }}
+ }}
+ }
class={styles.Hero}
>
diff --git a/src/components/Projects/Projects.module.css b/src/components/Projects/Projects.module.css
index 9b2fded..e4b3467 100644
--- a/src/components/Projects/Projects.module.css
+++ b/src/components/Projects/Projects.module.css
@@ -1,4 +1,5 @@
.Projects {
+ height: 101vh;
padding: 32px;
display: flex;
justify-content: center;
diff --git a/src/components/Projects/Projects.tsx b/src/components/Projects/Projects.tsx
index 2b62aac..7a77deb 100644
--- a/src/components/Projects/Projects.tsx
+++ b/src/components/Projects/Projects.tsx
@@ -5,16 +5,15 @@ import styles from './Projects.module.css';
export default () => {
const [, { setVisibleChapter }] = useStore();
- const [add] = createViewportObserver();
+ const [observer] = createViewportObserver({threshold: 0.9});
return (
-
{
- add(el, (event) => {
- console.log(event.isIntersecting);
+
{
+ if (event.isIntersecting) {
setVisibleChapter('projects');
- });
- }}
+ }}
+ }
class={styles.Projects}
>