Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 107 additions & 0 deletions src/lib/components/sections/FAQs.svelte
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
<script lang="ts">
import { slide } from 'svelte/transition';

interface FAQ {
id: string;
question: string;
answer: string;
}

const faqs: FAQ[] = [
{
id: 'what-is-spaced-repetition',
question: 'What is spaced repetition?',
answer:
"Spaced repetition is a learning technique where you review material at increasing intervals. Anki schedules your reviews based on when you're likely to forget information, making learning more efficient than traditional cramming.",
},
{
id: 'why-not-all-cards',
question: "Why isn't Anki showing me all my cards?",
answer:
"Anki uses spaced repetition to optimize your learning. It strategically determines which cards you see based on when you're likely to forget them, rather than showing all cards at once. This approach helps you remember large amounts of material for a long time.",
},
Comment on lines +17 to +22

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This doesn't really answer the question. At least not directly. I guess the answer to "Why isn't Anki showing me all my cards?" would be something along the lines of: "Because showing all of your cards at once is inefficient. You do not have to see and review every single card every day. Essentially, every information we learn will decay over time. How fast it decays depends on several factors, such as the amount of exposure you had to this information. Anki uses this to provide you intervals that decrease your workload and increase the amount of cards learned."

Aside from that: I'd like to have a "to review" or similar in the question. Anki does show you every card if you use filtered decks or simply go to the browser. And if this FAQ is on the website, people might get the wrong idea.

{
id: 'how-many-new-cards',
question: 'How many new cards should I study per day?',
answer:
'By default, Anki shows a maximum of 20 new cards daily. This prevents overwhelming your review schedule, since each new card requires follow-up reviews in subsequent days. You can adjust this limit based on your learning capacity.',
},
Comment on lines +23 to +28

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This also doesn't really answer the question. I don't think there is a good answer for "How many new cards should I study per day?" anyways. It depends on several factors, such as the time you can spend on studying per day, the material you learn, your cognitive ability / ability to learn and remember.

Maybe we could add this statement to the faq instead. We could add that anki shows a max. of 20 new cards a day and that it can be adjusted. But we should avoid claims like "This prevents overwhelming your review schedule" because it might be the case for some users but way to much for other users.

{
id: 'when-to-review',
question: 'When should I review my cards?',
answer:
"Unless you have an upcoming exam, follow Anki's scheduling recommendations rather than reviewing cards multiple times yourself. Research shows it's more efficient to wait for the optimal review time than to view the same content repeatedly.",
},
Comment on lines +29 to +34

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Research shows it's more efficient to wait for the optimal review time than to view the same content repeatedly.

Does it, though? I learned the opposite while I studied psychology. Repeating it more often will be less efficient for sure; but it will lead to overlearning in the "worst case" scenario (the ABCs are a great example of that. Children learn and repeat it really often, be it in songs, in school or at other events. It lead to them learning a random array of characters in a specific order. Even if we do not learn the ABCs anymore as adults and even if multiple years or decades are passing, we still will be able to recall that random ordered array of characters due to overlearning).

That being said: Maybe science progressed in that regard and my info is simply outdated.

];

let expandedId: string | null = $state(null);

function toggleFAQ(id: string) {
expandedId = expandedId === id ? null : id;
}
</script>

{#snippet faqItem(id: string, question: string, answer: string)}
<div class="border-b border-foreground/[13%] pb-4 last:border-b-0">
<button
onclick={() => toggleFAQ(id)}
class="w-full flex items-center justify-between py-4 text-left hover:opacity-80 transition-opacity"
aria-expanded={expandedId === id}
aria-controls={`faq-content-${id}`}
>
<h4 class="text-lg md:text-xl font-medium text-foreground">
{question}
</h4>
<div class="flex-shrink-0 ml-4">
<svg
width="100%"
height="100%"
viewBox="0 0 24 24"
fill="none"
xmlns="http://www.w3.org/2000/svg"
class="size-6 text-primary transition-transform duration-200 {expandedId === id
? 'rotate-45'
: ''}"
>
<path
d="M12 5V19M5 12H19"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
/>
</svg>
</div>
</button>

{#if expandedId === id}
<div
id={`faq-content-${id}`}
class="pb-4 text-base text-subtle leading-relaxed"
transition:slide={{ duration: 200 }}
>
{answer}
</div>
{/if}
</div>
{/snippet}

<section
class="relative z-1 mx-auto w-[min(100%,986px)] border-b border-t border-foreground/[13%] py-12 my-8 lg:my-16 lg:py-24"
>
<div class="grid grid-cols-1 md:grid-cols-12 gap-8 md:gap-12">
<div class="col-span-1 md:col-span-4">
<h2
class="text-[2.5rem] leading-[135%] tracking-tight font-semibold place-left text-center md:text-left"
>
FAQs
</h2>
</div>

<div class="col-span-1 md:col-span-8 space-y-4">
{#each faqs as faq}
{@render faqItem(faq.id, faq.question, faq.answer)}
{/each}
</div>
</div>
</section>
4 changes: 3 additions & 1 deletion src/routes/+page.svelte
Original file line number Diff line number Diff line change
@@ -1,17 +1,19 @@
<script>
import Advantages from '$lib/components/sections/Advantages.svelte';
import Contributing from '$lib/components/sections/Contributing.svelte';
import Downloads from '$lib/components/sections/Downloads.svelte';
import Hero from '$lib/components/sections/Hero.svelte';
import Testimonials from '$lib/components/sections/Testimonials.svelte';
import BasicConcepts from '$lib/components/sections/BasicConcepts.svelte';
import Downloads from '$lib/components/sections/Downloads.svelte';
import FAQs from '$lib/components/sections/FAQs.svelte';
import Footer from '$lib/components/sections/Footer.svelte';
</script>

<Hero />
<Advantages />
<Testimonials />
<BasicConcepts />
<FAQs />
<Contributing />
<Downloads />
<Footer />