mirror of
https://github.com/tiennm99/HugoBlox-kit.git
synced 2026-10-12 14:14:48 +00:00
feat: port Markdown Slides template from Wowchemy/Bootstrap
This commit is contained in:
1 parent
c792830419
commit
bfdcb6603c
53 files changed
+6587
-209
No files matched your search
@@ -100,7 +100,6 @@
|
||||
{{ range $query }}
|
||||
{{ if isset .Params "author_notes" }}
|
||||
{{ $page.Store.Set "has_alpine" true }}
|
||||
<script>console.log('Author notes found in collection - Alpine.js enabled');</script>
|
||||
{{ break }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
@@ -293,3 +293,351 @@
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: সমস্ত প্রকল্প দেখুন
|
||||
|
||||
# Additional translations
|
||||
|
||||
- id: about_me
|
||||
translation: পেশাগত সারসংক্ষেপ
|
||||
|
||||
- id: ai_insight
|
||||
translation: এআই অন্তর্দৃষ্টি
|
||||
|
||||
- id: content_type
|
||||
translation: বিষয়ের ধরন
|
||||
|
||||
- id: difficulty
|
||||
translation: কঠিনতা
|
||||
|
||||
- id: prerequisites
|
||||
translation: পূর্বশর্ত
|
||||
|
||||
- id: trending
|
||||
translation: ট্রেন্ডিং
|
||||
|
||||
- id: article
|
||||
translation: প্রবন্ধ
|
||||
|
||||
- id: articles
|
||||
translation: প্রবন্ধসমূহ
|
||||
|
||||
- id: all
|
||||
translation: সব
|
||||
|
||||
- id: helpful
|
||||
translation: সহায়ক
|
||||
|
||||
|
||||
# Buttons and links
|
||||
|
||||
- id: btn_site
|
||||
translation: সাইট
|
||||
|
||||
- id: btn_canonical
|
||||
translation: ক্যানোনিকাল
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: ক্রসপোস্ট
|
||||
|
||||
- id: btn_discussion
|
||||
translation: আলোচনা
|
||||
|
||||
- id: btn_event
|
||||
translation: ইভেন্ট
|
||||
|
||||
- id: btn_calendar
|
||||
translation: ক্যালেন্ডার
|
||||
|
||||
- id: btn_registration
|
||||
translation: নিবন্ধন
|
||||
|
||||
- id: btn_demo
|
||||
translation: ডেমো
|
||||
|
||||
- id: btn_model
|
||||
translation: মডেল
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_note
|
||||
translation: নোট
|
||||
|
||||
- id: callout_abstract
|
||||
translation: সারাংশ
|
||||
|
||||
- id: callout_summary
|
||||
translation: সারসংক্ষেপ
|
||||
|
||||
- id: callout_info
|
||||
translation: তথ্য
|
||||
|
||||
- id: callout_todo
|
||||
translation: করনীয়
|
||||
|
||||
- id: callout_tip
|
||||
translation: টিপস
|
||||
|
||||
- id: callout_question
|
||||
translation: প্রশ্ন
|
||||
|
||||
- id: callout_quote
|
||||
translation: উদ্ধৃতি
|
||||
|
||||
- id: callout_warning
|
||||
translation: সতর্কতা
|
||||
|
||||
- id: callout_caution
|
||||
translation: সতর্কতা
|
||||
|
||||
- id: callout_danger
|
||||
translation: বিপদ
|
||||
|
||||
- id: callout_bug
|
||||
translation: বাগ
|
||||
|
||||
- id: callout_example
|
||||
translation: উদাহরণ
|
||||
|
||||
- id: callout_failure
|
||||
translation: ব্যর্থতা
|
||||
|
||||
- id: callout_success
|
||||
translation: সাফল্য
|
||||
|
||||
- id: callout_important
|
||||
translation: গুরুত্বপূর্ণ
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: স্লাইডে ফিরে যান
|
||||
|
||||
- id: present_slides
|
||||
translation: প্রেজেন্ট
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: প্রেজেন্ট (পূর্ণস্ক্রিন)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: পিডিএফ রপ্তানি (প্রিন্ট)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: প্রিন্ট মোডে খোলে - ব্রাউজার প্রিন্ট > PDF হিসেবে সেভ করুন
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: শিরোনাম দিয়ে ডেক খুঁজুন...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: কোন স্লাইড ডেক পাওয়া যায়নি
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: কোন ডেক ফিল্টারের সাথে মেলে না
|
||||
|
||||
- id: clear_filters
|
||||
translation: ফিল্টার মুছুন
|
||||
|
||||
- id: topics
|
||||
translation: বিষয়
|
||||
|
||||
- id: details
|
||||
translation: বিস্তারিত
|
||||
|
||||
- id: related_resources
|
||||
translation: সম্পর্কিত রিসোর্স
|
||||
|
||||
- id: copy_link
|
||||
translation: লিঙ্ক কপি করুন
|
||||
|
||||
- id: copy_citation
|
||||
translation: উদ্ধৃতি কপি করুন
|
||||
|
||||
- id: how_to_cite
|
||||
translation: কীভাবে উদ্ধৃতি দিবেন
|
||||
|
||||
- id: citation
|
||||
translation: উদ্ধৃতি
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: cite.bib ডাউনলোড করুন
|
||||
|
||||
- id: lecture
|
||||
translation: লেকচার
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: পূর্ণস্ক্রিনে যান
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: পূর্ণস্ক্রিন থেকে বের হন
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: বক্তার নোটের জন্য
|
||||
|
||||
- id: slides_not_found
|
||||
translation: স্লাইড পাওয়া যায়নি
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: প্রশ্নোত্তর
|
||||
|
||||
- id: question
|
||||
translation: প্রশ্ন
|
||||
|
||||
- id: answer
|
||||
translation: উত্তর
|
||||
|
||||
- id: accepted_answer
|
||||
translation: গৃহীত উত্তর
|
||||
|
||||
- id: other_answers
|
||||
translation: অন্যান্য উত্তর
|
||||
|
||||
- id: questions
|
||||
translation: প্রশ্নসমূহ
|
||||
|
||||
- id: questions_count
|
||||
translation: প্রশ্ন
|
||||
|
||||
- id: related_questions
|
||||
translation: সম্পর্কিত প্রশ্ন
|
||||
|
||||
- id: search_questions
|
||||
translation: প্রশ্ন অনুসন্ধান...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: এখনও কোনো প্রশ্ন নেই
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: browse_by_category
|
||||
translation: বিভাগ অনুযায়ী দেখুন
|
||||
|
||||
# General extras
|
||||
|
||||
- id: backlinks
|
||||
translation: ব্যাকলিঙ্কস
|
||||
|
||||
- id: blog
|
||||
translation: ব্লগ
|
||||
|
||||
- id: browse
|
||||
translation: ব্রাউজ
|
||||
|
||||
- id: days
|
||||
translation: দিন
|
||||
|
||||
- id: hours
|
||||
translation: ঘণ্টা
|
||||
|
||||
- id: minutes
|
||||
translation: মিনিট
|
||||
|
||||
- id: seconds
|
||||
translation: সেকেন্ড
|
||||
|
||||
- id: experience
|
||||
translation: অভিজ্ঞতা
|
||||
|
||||
- id: read_more
|
||||
translation: আরও পড়ুন
|
||||
|
||||
- id: docs
|
||||
translation: ডকুমেন্টেশন
|
||||
|
||||
- id: featured
|
||||
translation: বৈশিষ্ট্যযুক্ত
|
||||
|
||||
- id: events
|
||||
translation: ইভেন্ট
|
||||
|
||||
- id: poweredby_button
|
||||
translation: 'নিজেরটি বানান →'
|
||||
|
||||
- id: block_contact_title
|
||||
translation: যোগাযোগ করুন
|
||||
|
||||
- id: block_contact_visit_title
|
||||
translation: আমাদের দেখুন
|
||||
|
||||
- id: block_contact_office_hours
|
||||
translation: অফিস সময়
|
||||
|
||||
- id: block_contact_view_on_map
|
||||
translation: মানচিত্রে দেখুন
|
||||
|
||||
- id: block_contact_connect_title
|
||||
translation: সংযুক্ত হন
|
||||
|
||||
- id: block_contact_follow_us
|
||||
translation: আমাদের অনুসরণ করুন
|
||||
|
||||
- id: block_contact_prospective_title
|
||||
translation: সম্ভাব্য সদস্যরা
|
||||
|
||||
- id: block_contact_form_title
|
||||
translation: আমাদের বার্তা পাঠান
|
||||
|
||||
- id: block_contact_form_name
|
||||
translation: নাম
|
||||
|
||||
- id: block_contact_form_email
|
||||
translation: ইমেইল
|
||||
|
||||
- id: block_contact_form_subject
|
||||
translation: বিষয়
|
||||
|
||||
- id: block_contact_form_message
|
||||
translation: বার্তা
|
||||
|
||||
- id: block_contact_form_submit
|
||||
translation: বার্তা পাঠান
|
||||
|
||||
# Feedback widget
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: মতামত
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: এই পেজটি কি সহায়ক ছিল?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 হ্যাঁ
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 না
|
||||
@@ -387,3 +387,262 @@
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 Nein
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: KI-Einblick
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: Inhaltstyp
|
||||
|
||||
- id: difficulty
|
||||
translation: Schwierigkeitsgrad
|
||||
|
||||
- id: prerequisites
|
||||
translation: Voraussetzungen
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: Im Trend
|
||||
|
||||
- id: article
|
||||
translation: Artikel
|
||||
|
||||
- id: articles
|
||||
translation: Artikel
|
||||
|
||||
- id: browse
|
||||
translation: Durchsuchen
|
||||
|
||||
- id: all
|
||||
translation: Alle
|
||||
|
||||
- id: helpful
|
||||
translation: hilfreich
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: Website
|
||||
|
||||
- id: btn_canonical
|
||||
translation: Kanonisch
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: Crosspost
|
||||
|
||||
- id: btn_discussion
|
||||
translation: Diskussion
|
||||
|
||||
- id: btn_event
|
||||
translation: Event
|
||||
|
||||
- id: btn_calendar
|
||||
translation: Kalender
|
||||
|
||||
- id: btn_registration
|
||||
translation: Anmeldung
|
||||
|
||||
- id: btn_demo
|
||||
translation: Demo
|
||||
|
||||
- id: btn_model
|
||||
translation: Modell
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_abstract
|
||||
translation: Abstract
|
||||
|
||||
- id: callout_summary
|
||||
translation: Zusammenfassung
|
||||
|
||||
- id: callout_info
|
||||
translation: Info
|
||||
|
||||
- id: callout_todo
|
||||
translation: To-do
|
||||
|
||||
- id: callout_tip
|
||||
translation: Tipp
|
||||
|
||||
- id: callout_question
|
||||
translation: Frage
|
||||
|
||||
- id: callout_quote
|
||||
translation: Zitat
|
||||
|
||||
- id: callout_warning
|
||||
translation: Warnung
|
||||
|
||||
- id: callout_danger
|
||||
translation: Gefahr
|
||||
|
||||
- id: callout_bug
|
||||
translation: Bug
|
||||
|
||||
- id: callout_example
|
||||
translation: Beispiel
|
||||
|
||||
- id: callout_failure
|
||||
translation: Fehlschlag
|
||||
|
||||
- id: callout_success
|
||||
translation: Erfolg
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Zurück zu Slides
|
||||
|
||||
- id: present_slides
|
||||
translation: Präsentieren
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Präsentieren (Vollbild)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: PDF exportieren (Druck)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Öffnet im Druckmodus – Browser Drucken > Als PDF speichern
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Decks nach Titel suchen...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: Keine Foliensätze gefunden
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: Keine Sätze entsprechen deinen Filtern
|
||||
|
||||
- id: clear_filters
|
||||
translation: Filter zurücksetzen
|
||||
|
||||
- id: topics
|
||||
translation: Themen
|
||||
|
||||
- id: details
|
||||
translation: Details
|
||||
|
||||
- id: related_resources
|
||||
translation: Verwandte Ressourcen
|
||||
|
||||
- id: copy_link
|
||||
translation: Link kopieren
|
||||
|
||||
- id: copy_citation
|
||||
translation: Zitat kopieren
|
||||
|
||||
- id: how_to_cite
|
||||
translation: So zitieren
|
||||
|
||||
- id: citation
|
||||
translation: Zitat
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: cite.bib herunterladen
|
||||
|
||||
- id: lecture
|
||||
translation: Vorlesung
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Vollbildmodus starten
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Vollbildmodus beenden
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: für Sprechernotizen
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Folien nicht gefunden
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: Q&A
|
||||
|
||||
- id: question
|
||||
translation: Frage
|
||||
|
||||
- id: answer
|
||||
translation: Antwort
|
||||
|
||||
- id: accepted_answer
|
||||
translation: Akzeptierte Antwort
|
||||
|
||||
- id: other_answers
|
||||
translation: Weitere Antworten
|
||||
|
||||
- id: questions
|
||||
translation: Fragen
|
||||
|
||||
- id: questions_count
|
||||
translation: Fragen
|
||||
|
||||
- id: related_questions
|
||||
translation: Ähnliche Fragen
|
||||
|
||||
- id: search_questions
|
||||
translation: Fragen durchsuchen...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: Noch keine Fragen vorhanden
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: browse_by_category
|
||||
translation: Nach Kategorie durchsuchen
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: Berufliches Profil
|
||||
|
||||
- id: docs
|
||||
translation: Dokumentation
|
||||
|
||||
- id: featured
|
||||
translation: Empfohlen
|
||||
@@ -421,6 +421,80 @@
|
||||
- id: questions_count
|
||||
translation: questions
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Back to Slides
|
||||
|
||||
- id: featured
|
||||
translation: Featured
|
||||
|
||||
- id: details
|
||||
translation: Details
|
||||
|
||||
- id: present_slides
|
||||
translation: Present
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Present (fullscreen)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: Export PDF (print)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Opens in print mode - use browser Print > Save as PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Search decks by title...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: No slide decks found
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: No decks match your filters
|
||||
|
||||
- id: clear_filters
|
||||
translation: Clear filters
|
||||
|
||||
- id: topics
|
||||
translation: Topics
|
||||
|
||||
- id: related_resources
|
||||
translation: Related Resources
|
||||
|
||||
- id: copy_link
|
||||
translation: Copy Link
|
||||
|
||||
- id: copy_citation
|
||||
translation: Copy citation
|
||||
|
||||
- id: how_to_cite
|
||||
translation: How to cite
|
||||
|
||||
- id: citation
|
||||
translation: Citation
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: Download cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: Lecture
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Enter fullscreen
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Exit fullscreen
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: for speaker notes
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Slides not found
|
||||
|
||||
# Search
|
||||
|
||||
- id: search
|
||||
|
||||
@@ -356,3 +356,319 @@
|
||||
|
||||
- id: poweredby_button
|
||||
translation: 'Crea el tuyo →'
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: Perspectiva de IA
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: Tipo de contenido
|
||||
|
||||
- id: difficulty
|
||||
translation: Dificultad
|
||||
|
||||
- id: prerequisites
|
||||
translation: Requisitos previos
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: Tendencia
|
||||
|
||||
- id: article
|
||||
translation: artículo
|
||||
|
||||
- id: articles
|
||||
translation: artículos
|
||||
|
||||
- id: browse
|
||||
translation: Explorar
|
||||
|
||||
- id: all
|
||||
translation: Todo
|
||||
|
||||
- id: helpful
|
||||
translation: útil
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: Sitio
|
||||
|
||||
- id: btn_canonical
|
||||
translation: Canónico
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: Crosspost
|
||||
|
||||
- id: btn_discussion
|
||||
translation: Discusión
|
||||
|
||||
- id: btn_event
|
||||
translation: Evento
|
||||
|
||||
- id: btn_calendar
|
||||
translation: Calendario
|
||||
|
||||
- id: btn_registration
|
||||
translation: Registro
|
||||
|
||||
- id: btn_demo
|
||||
translation: Demo
|
||||
|
||||
- id: btn_model
|
||||
translation: Modelo
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_abstract
|
||||
translation: Resumen
|
||||
|
||||
- id: callout_summary
|
||||
translation: Resumen
|
||||
|
||||
- id: callout_info
|
||||
translation: Info
|
||||
|
||||
- id: callout_todo
|
||||
translation: Tareas
|
||||
|
||||
- id: callout_tip
|
||||
translation: Consejo
|
||||
|
||||
- id: callout_question
|
||||
translation: Pregunta
|
||||
|
||||
- id: callout_quote
|
||||
translation: Cita
|
||||
|
||||
- id: callout_warning
|
||||
translation: Advertencia
|
||||
|
||||
- id: callout_danger
|
||||
translation: Peligro
|
||||
|
||||
- id: callout_bug
|
||||
translation: Error
|
||||
|
||||
- id: callout_example
|
||||
translation: Ejemplo
|
||||
|
||||
- id: callout_failure
|
||||
translation: Fallo
|
||||
|
||||
- id: callout_success
|
||||
translation: Éxito
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Volver a diapositivas
|
||||
|
||||
- id: present_slides
|
||||
translation: Presentar
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Presentar (pantalla completa)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: Exportar PDF (impresión)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Se abre en modo impresión - usa Imprimir > Guardar como PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Busca mazos por título...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: No se encontraron diapositivas
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: Ningún mazo coincide con tus filtros
|
||||
|
||||
- id: clear_filters
|
||||
translation: Borrar filtros
|
||||
|
||||
- id: topics
|
||||
translation: Temas
|
||||
|
||||
- id: details
|
||||
translation: Detalles
|
||||
|
||||
- id: related_resources
|
||||
translation: Recursos relacionados
|
||||
|
||||
- id: copy_link
|
||||
translation: Copiar enlace
|
||||
|
||||
- id: copy_citation
|
||||
translation: Copiar cita
|
||||
|
||||
- id: how_to_cite
|
||||
translation: Cómo citar
|
||||
|
||||
- id: citation
|
||||
translation: Cita
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: Descargar cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: Clase
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Entrar en pantalla completa
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Salir de pantalla completa
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: para notas del presentador
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Diapositivas no encontradas
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: Preguntas y respuestas
|
||||
|
||||
- id: question
|
||||
translation: Pregunta
|
||||
|
||||
- id: answer
|
||||
translation: Respuesta
|
||||
|
||||
- id: accepted_answer
|
||||
translation: Respuesta aceptada
|
||||
|
||||
- id: other_answers
|
||||
translation: Otras respuestas
|
||||
|
||||
- id: questions
|
||||
translation: Preguntas
|
||||
|
||||
- id: questions_count
|
||||
translation: preguntas
|
||||
|
||||
- id: related_questions
|
||||
translation: Preguntas relacionadas
|
||||
|
||||
- id: search_questions
|
||||
translation: Buscar preguntas...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: Aún no hay preguntas
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: browse_by_category
|
||||
translation: Navegar por categoría
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: Resumen profesional
|
||||
|
||||
- id: backlinks
|
||||
translation: Enlaces de retorno
|
||||
|
||||
- id: days
|
||||
translation: Días
|
||||
|
||||
- id: hours
|
||||
translation: Horas
|
||||
|
||||
- id: minutes
|
||||
translation: Minutos
|
||||
|
||||
- id: seconds
|
||||
translation: Segundos
|
||||
|
||||
- id: developer
|
||||
translation: Desarrollador
|
||||
|
||||
- id: docs
|
||||
translation: Documentación
|
||||
|
||||
- id: experience
|
||||
translation: Experiencia
|
||||
|
||||
- id: read_more
|
||||
translation: Leer más
|
||||
|
||||
- id: featured
|
||||
translation: Destacado
|
||||
|
||||
- id: block_contact_follow_me
|
||||
translation: Encuéntrame en
|
||||
|
||||
- id: portfolio_link_code
|
||||
translation: Código
|
||||
|
||||
- id: portfolio_link_live
|
||||
translation: En vivo
|
||||
|
||||
- id: portfolio_link_demo
|
||||
translation: Demo
|
||||
|
||||
- id: portfolio_link_default
|
||||
translation: Enlace
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: Ver todos los proyectos
|
||||
|
||||
- id: scroll_to_content
|
||||
translation: Ir al contenido
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: Comentarios
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: ¿Esta página fue útil?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 Sí
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 No
|
||||
@@ -0,0 +1,638 @@
|
||||
# Navigation
|
||||
|
||||
- id: toggle_navigation
|
||||
translation: नेविगेशन टॉगल करें
|
||||
|
||||
- id: table_of_contents
|
||||
translation: सामग्री तालिका
|
||||
|
||||
- id: on_this_page
|
||||
translation: इस पेज पर
|
||||
|
||||
- id: back_to_top
|
||||
translation: ऊपर वापस जाएँ
|
||||
|
||||
- id: home
|
||||
translation: होम
|
||||
|
||||
- id: close
|
||||
translation: बंद करें
|
||||
|
||||
- id: languages
|
||||
translation: भाषाएँ
|
||||
|
||||
# General
|
||||
|
||||
- id: related
|
||||
translation: संबंधित
|
||||
|
||||
- id: backlinks
|
||||
translation: बैकलिंक्स
|
||||
|
||||
# Callouts - All Obsidian-compatible types
|
||||
|
||||
- id: callout_note
|
||||
translation: नोट
|
||||
|
||||
- id: callout_abstract
|
||||
translation: सार
|
||||
|
||||
- id: callout_summary
|
||||
translation: सारांश
|
||||
|
||||
- id: callout_info
|
||||
translation: जानकारी
|
||||
|
||||
- id: callout_todo
|
||||
translation: करना है
|
||||
|
||||
- id: callout_tip
|
||||
translation: सुझाव
|
||||
|
||||
- id: callout_success
|
||||
translation: सफलता
|
||||
|
||||
- id: callout_question
|
||||
translation: प्रश्न
|
||||
|
||||
- id: callout_warning
|
||||
translation: चेतावनी
|
||||
|
||||
- id: callout_failure
|
||||
translation: विफलता
|
||||
|
||||
- id: callout_danger
|
||||
translation: खतरा
|
||||
|
||||
- id: callout_bug
|
||||
translation: बग
|
||||
|
||||
- id: callout_example
|
||||
translation: उदाहरण
|
||||
|
||||
- id: callout_quote
|
||||
translation: उद्धरण
|
||||
|
||||
- id: callout_important
|
||||
translation: महत्वपूर्ण
|
||||
|
||||
- id: callout_caution
|
||||
translation: सावधानी
|
||||
|
||||
- id: minute_read
|
||||
translation: मिनट पढ़ें
|
||||
|
||||
- id: previous
|
||||
translation: पिछला
|
||||
|
||||
- id: next
|
||||
translation: अगला
|
||||
|
||||
- id: figure
|
||||
translation: 'चित्र %d:'
|
||||
|
||||
- id: edit_page
|
||||
translation: इस पेज को संपादित करें
|
||||
|
||||
# Themes
|
||||
|
||||
- id: theme_selector
|
||||
translation: प्रदर्शन प्राथमिकताएँ
|
||||
|
||||
- id: theme_light
|
||||
translation: लाइट
|
||||
|
||||
- id: theme_dark
|
||||
translation: डार्क
|
||||
|
||||
- id: theme_auto
|
||||
translation: स्वचालित
|
||||
|
||||
# Buttons
|
||||
|
||||
- id: btn_preprint
|
||||
translation: प्रीप्रिंट
|
||||
|
||||
- id: btn_pdf
|
||||
translation: पीडीएफ
|
||||
|
||||
- id: btn_cite
|
||||
translation: उद्धृत करें
|
||||
|
||||
- id: btn_slides
|
||||
translation: स्लाइड्स
|
||||
|
||||
- id: btn_video
|
||||
translation: वीडियो
|
||||
|
||||
- id: btn_code
|
||||
translation: कोड
|
||||
|
||||
- id: btn_dataset
|
||||
translation: डेटासेट
|
||||
|
||||
- id: btn_project
|
||||
translation: प्रोजेक्ट
|
||||
|
||||
- id: btn_poster
|
||||
translation: पोस्टर
|
||||
|
||||
- id: btn_source
|
||||
translation: स्रोत दस्तावेज़
|
||||
|
||||
# New link types
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_site
|
||||
translation: साइट
|
||||
|
||||
- id: btn_canonical
|
||||
translation: कैनोनिकल
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: क्रॉसपोस्ट
|
||||
|
||||
- id: btn_discussion
|
||||
translation: चर्चा
|
||||
|
||||
- id: btn_event
|
||||
translation: इवेंट
|
||||
|
||||
- id: btn_calendar
|
||||
translation: कैलेंडर
|
||||
|
||||
- id: btn_registration
|
||||
translation: पंजीकरण
|
||||
|
||||
- id: btn_demo
|
||||
translation: डेमो
|
||||
|
||||
- id: btn_model
|
||||
translation: मॉडल
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
- id: btn_copy
|
||||
translation: कॉपी करें
|
||||
|
||||
- id: btn_copied
|
||||
translation: कॉपी किया गया
|
||||
|
||||
- id: btn_download
|
||||
translation: डाउनलोड
|
||||
|
||||
# About widget
|
||||
|
||||
- id: interests
|
||||
translation: रुचियाँ
|
||||
|
||||
- id: education
|
||||
translation: शिक्षा
|
||||
|
||||
- id: about_me
|
||||
translation: व्यावसायिक सारांश
|
||||
|
||||
- id: user_profile_latest
|
||||
translation: नवीनतम
|
||||
|
||||
# Countdown widget
|
||||
|
||||
- id: days
|
||||
translation: दिन
|
||||
|
||||
- id: hours
|
||||
translation: घंटे
|
||||
|
||||
- id: minutes
|
||||
translation: मिनट
|
||||
|
||||
- id: seconds
|
||||
translation: सेकंड
|
||||
|
||||
# Accomplishments widget
|
||||
|
||||
- id: see_certificate
|
||||
translation: प्रमाणपत्र देखें
|
||||
|
||||
# Experience widget
|
||||
|
||||
- id: experience
|
||||
translation: अनुभव
|
||||
|
||||
- id: present
|
||||
translation: वर्तमान
|
||||
|
||||
# Pages widget
|
||||
|
||||
- id: read_more
|
||||
translation: और पढ़ें
|
||||
|
||||
- id: more_pages
|
||||
translation: सभी देखें
|
||||
|
||||
- id: more_posts
|
||||
translation: सभी पोस्ट देखें
|
||||
|
||||
- id: more_talks
|
||||
translation: सभी इवेंट देखें
|
||||
|
||||
- id: more_publications
|
||||
translation: सभी प्रकाशन देखें
|
||||
|
||||
# Contact widget
|
||||
|
||||
- id: contact_name
|
||||
translation: नाम
|
||||
|
||||
- id: contact_email
|
||||
translation: ईमेल
|
||||
|
||||
- id: contact_message
|
||||
translation: संदेश
|
||||
|
||||
- id: contact_attachment
|
||||
translation: फ़ाइल संलग्न करें
|
||||
|
||||
- id: contact_send
|
||||
translation: भेजें
|
||||
|
||||
- id: book_appointment
|
||||
translation: अपॉइंटमेंट बुक करें
|
||||
|
||||
# Contact info block
|
||||
|
||||
- id: block_contact_title
|
||||
translation: संपर्क करें
|
||||
|
||||
- id: block_contact_visit_title
|
||||
translation: हमसे मिलें
|
||||
|
||||
- id: block_contact_office_hours
|
||||
translation: ऑफिस समय
|
||||
|
||||
- id: block_contact_view_on_map
|
||||
translation: मैप पर देखें
|
||||
|
||||
- id: block_contact_connect_title
|
||||
translation: कनेक्ट करें
|
||||
|
||||
- id: block_contact_follow_us
|
||||
translation: हमें फॉलो करें
|
||||
|
||||
- id: block_contact_follow_me
|
||||
translation: मुझे यहाँ पाएँ
|
||||
|
||||
- id: block_contact_prospective_title
|
||||
translation: संभावित सदस्य
|
||||
|
||||
- id: block_contact_form_title
|
||||
translation: हमें संदेश भेजें
|
||||
|
||||
- id: block_contact_form_name
|
||||
translation: नाम
|
||||
|
||||
- id: block_contact_form_email
|
||||
translation: ईमेल
|
||||
|
||||
- id: block_contact_form_subject
|
||||
translation: विषय
|
||||
|
||||
- id: block_contact_form_message
|
||||
translation: संदेश
|
||||
|
||||
- id: block_contact_form_submit
|
||||
translation: संदेश भेजें
|
||||
|
||||
# Publication/Event details
|
||||
|
||||
- id: abstract
|
||||
translation: सार
|
||||
|
||||
- id: publication
|
||||
translation: प्रकाशन
|
||||
|
||||
- id: publication_type
|
||||
translation: प्रकार
|
||||
|
||||
- id: date
|
||||
translation: तारीख
|
||||
|
||||
- id: last_updated
|
||||
translation: अंतिम अपडेट
|
||||
|
||||
- id: event
|
||||
translation: इवेंट
|
||||
|
||||
- id: location
|
||||
translation: स्थान
|
||||
|
||||
- id: pub_paper_conference
|
||||
translation: सम्मेलन पेपर
|
||||
|
||||
- id: pub_article_journal
|
||||
translation: जर्नल लेख
|
||||
|
||||
- id: pub_article
|
||||
translation: प्रीप्रिंट
|
||||
|
||||
- id: pub_report
|
||||
translation: रिपोर्ट
|
||||
|
||||
- id: pub_book
|
||||
translation: पुस्तक
|
||||
|
||||
- id: pub_chapter
|
||||
translation: पुस्तक अनुभाग
|
||||
|
||||
- id: pub_thesis
|
||||
translation: थीसिस
|
||||
|
||||
- id: pub_patent
|
||||
translation: पेटेंट
|
||||
|
||||
# Project details
|
||||
|
||||
- id: open_project_site
|
||||
translation: प्रोजेक्ट साइट पर जाएँ
|
||||
|
||||
# Content types for default archive page titles and search results
|
||||
|
||||
- id: blog
|
||||
translation: ब्लॉग
|
||||
|
||||
- id: publications
|
||||
translation: प्रकाशन
|
||||
|
||||
- id: events
|
||||
translation: इवेंट
|
||||
|
||||
- id: projects
|
||||
translation: प्रोजेक्ट
|
||||
|
||||
- id: slides
|
||||
translation: स्लाइड्स
|
||||
|
||||
- id: authors
|
||||
translation: लेखक
|
||||
|
||||
- id: qa
|
||||
translation: प्रश्नोत्तर
|
||||
|
||||
- id: questions
|
||||
translation: प्रश्न
|
||||
|
||||
- id: faq
|
||||
translation: अक्सर पूछे जाने वाले प्रश्न
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: docs
|
||||
translation: प्रलेखन
|
||||
|
||||
- id: question
|
||||
translation: प्रश्न
|
||||
|
||||
- id: answer
|
||||
translation: उत्तर
|
||||
|
||||
- id: accepted_answer
|
||||
translation: स्वीकृत उत्तर
|
||||
|
||||
- id: other_answers
|
||||
translation: अन्य उत्तर
|
||||
|
||||
- id: related_questions
|
||||
translation: संबंधित प्रश्न
|
||||
|
||||
- id: browse_by_category
|
||||
translation: श्रेणी के अनुसार ब्राउज़ करें
|
||||
|
||||
- id: search_questions
|
||||
translation: प्रश्न खोजें...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: अभी तक कोई प्रश्न नहीं
|
||||
|
||||
- id: questions_count
|
||||
translation: प्रश्न
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: स्लाइड्स पर वापस जाएँ
|
||||
|
||||
- id: featured
|
||||
translation: विशेष
|
||||
|
||||
- id: details
|
||||
translation: विवरण
|
||||
|
||||
- id: present_slides
|
||||
translation: प्रस्तुति करें
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: प्रस्तुति (फुलस्क्रीन)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: पीडीएफ निर्यात (प्रिंट)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: प्रिंट मोड में खुलेगा - ब्राउज़र प्रिंट > PDF के रूप में सहेजें
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: शीर्षक से डेक खोजें...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: कोई स्लाइड डेक नहीं मिला
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: कोई डेक आपके फ़िल्टर से मेल नहीं खाता
|
||||
|
||||
- id: clear_filters
|
||||
translation: फ़िल्टर साफ़ करें
|
||||
|
||||
- id: topics
|
||||
translation: विषय
|
||||
|
||||
- id: related_resources
|
||||
translation: संबंधित संसाधन
|
||||
|
||||
- id: copy_link
|
||||
translation: लिंक कॉपी करें
|
||||
|
||||
- id: copy_citation
|
||||
translation: उद्धरण कॉपी करें
|
||||
|
||||
- id: how_to_cite
|
||||
translation: कैसे उद्धृत करें
|
||||
|
||||
- id: citation
|
||||
translation: उद्धरण
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: cite.bib डाउनलोड करें
|
||||
|
||||
- id: lecture
|
||||
translation: व्याख्यान
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: फुलस्क्रीन में जाएँ
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: फुलस्क्रीन से बाहर निकलें
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: वक्ता नोट्स के लिए
|
||||
|
||||
- id: slides_not_found
|
||||
translation: स्लाइड्स नहीं मिलीं
|
||||
|
||||
# Search
|
||||
|
||||
- id: search
|
||||
translation: खोज
|
||||
|
||||
- id: search_placeholder
|
||||
translation: खोजें...
|
||||
|
||||
- id: search_results
|
||||
translation: परिणाम मिले
|
||||
|
||||
- id: search_no_results
|
||||
translation: कोई परिणाम नहीं मिला
|
||||
|
||||
- id: search_common_queries
|
||||
translation: सामान्य खोजें
|
||||
|
||||
# Error 404
|
||||
|
||||
- id: page_not_found
|
||||
translation: पेज नहीं मिला
|
||||
|
||||
- id: 404_recommendations
|
||||
translation: शायद आप इनमें से किसी को ढूँढ रहे थे?
|
||||
|
||||
# Cookie consent
|
||||
|
||||
- id: cookie_message
|
||||
translation: यह वेबसाइट सर्वोत्तम अनुभव देने के लिए कुकीज़ का उपयोग करती है।
|
||||
|
||||
- id: cookie_dismiss
|
||||
translation: समझ गया!
|
||||
|
||||
- id: cookie_learn
|
||||
translation: और जानें
|
||||
|
||||
# Published with
|
||||
|
||||
- id: published_with
|
||||
translation: '{hugoblox} के साथ बनाया गया — मुफ़्त {repo_link}ओपन सोर्स{/repo_link} वेबसाइट बिल्डर जो क्रिएटर्स को सशक्त करता है।'
|
||||
|
||||
- id: poweredby_button
|
||||
translation: 'अपनी बनाएँ →'
|
||||
|
||||
# Dev Hero block
|
||||
|
||||
- id: scroll_to_content
|
||||
translation: सामग्री पर स्क्रॉल करें
|
||||
|
||||
- id: developer
|
||||
translation: डेवलपर
|
||||
|
||||
# Portfolio block
|
||||
|
||||
- id: portfolio_link_code
|
||||
translation: कोड
|
||||
|
||||
- id: portfolio_link_live
|
||||
translation: लाइव
|
||||
|
||||
- id: portfolio_link_demo
|
||||
translation: डेमो
|
||||
|
||||
- id: portfolio_link_default
|
||||
translation: लिंक
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: सभी प्रोजेक्ट देखें
|
||||
|
||||
# Feedback widget
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: प्रतिपुष्टि
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: क्या यह पेज सहायक था?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 हाँ
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 नहीं
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: एआई अंतर्दृष्टि
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: सामग्री प्रकार
|
||||
|
||||
- id: difficulty
|
||||
translation: कठिनाई
|
||||
|
||||
- id: prerequisites
|
||||
translation: पूर्वापेक्षाएँ
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: ट्रेंडिंग
|
||||
|
||||
- id: article
|
||||
translation: लेख
|
||||
|
||||
- id: articles
|
||||
translation: लेख
|
||||
|
||||
- id: browse
|
||||
translation: ब्राउज़
|
||||
|
||||
- id: all
|
||||
translation: सब
|
||||
|
||||
- id: helpful
|
||||
translation: सहायक
|
||||
@@ -263,3 +263,384 @@
|
||||
|
||||
- id: published_with
|
||||
translation: Diterbitkan dengan {hugoblox} — Secara gratis, {repo_link}sumber terbuka{/repo_link} pembuat situs web yang memberdayakan para pembuat konten.
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: Wawasan AI
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: Jenis konten
|
||||
|
||||
- id: difficulty
|
||||
translation: Tingkat kesulitan
|
||||
|
||||
- id: prerequisites
|
||||
translation: Prasyarat
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: Sedang tren
|
||||
|
||||
- id: article
|
||||
translation: artikel
|
||||
|
||||
- id: articles
|
||||
translation: artikel
|
||||
|
||||
- id: browse
|
||||
translation: Jelajahi
|
||||
|
||||
- id: all
|
||||
translation: Semua
|
||||
|
||||
- id: helpful
|
||||
translation: bermanfaat
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: Situs
|
||||
|
||||
- id: btn_canonical
|
||||
translation: Kanonikal
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: Crosspost
|
||||
|
||||
- id: btn_discussion
|
||||
translation: Diskusi
|
||||
|
||||
- id: btn_event
|
||||
translation: Acara
|
||||
|
||||
- id: btn_calendar
|
||||
translation: Kalender
|
||||
|
||||
- id: btn_registration
|
||||
translation: Registrasi
|
||||
|
||||
- id: btn_demo
|
||||
translation: Demo
|
||||
|
||||
- id: btn_model
|
||||
translation: Model
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_note
|
||||
translation: Catatan
|
||||
|
||||
- id: callout_abstract
|
||||
translation: Abstrak
|
||||
|
||||
- id: callout_summary
|
||||
translation: Ringkasan
|
||||
|
||||
- id: callout_info
|
||||
translation: Info
|
||||
|
||||
- id: callout_todo
|
||||
translation: To-do
|
||||
|
||||
- id: callout_tip
|
||||
translation: Tip
|
||||
|
||||
- id: callout_question
|
||||
translation: Pertanyaan
|
||||
|
||||
- id: callout_quote
|
||||
translation: Kutipan
|
||||
|
||||
- id: callout_warning
|
||||
translation: Peringatan
|
||||
|
||||
- id: callout_caution
|
||||
translation: Perhatian
|
||||
|
||||
- id: callout_danger
|
||||
translation: Bahaya
|
||||
|
||||
- id: callout_bug
|
||||
translation: Bug
|
||||
|
||||
- id: callout_example
|
||||
translation: Contoh
|
||||
|
||||
- id: callout_failure
|
||||
translation: Gagal
|
||||
|
||||
- id: callout_success
|
||||
translation: Sukses
|
||||
|
||||
- id: callout_important
|
||||
translation: Penting
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Kembali ke slides
|
||||
|
||||
- id: present_slides
|
||||
translation: Presentasi
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Presentasi (layar penuh)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: Ekspor PDF (cetak)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Membuka mode cetak - gunakan Cetak > Simpan sebagai PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Cari deck berdasarkan judul...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: Tidak ada deck ditemukan
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: Tidak ada deck sesuai filter
|
||||
|
||||
- id: clear_filters
|
||||
translation: Hapus filter
|
||||
|
||||
- id: topics
|
||||
translation: Topik
|
||||
|
||||
- id: details
|
||||
translation: Detail
|
||||
|
||||
- id: related_resources
|
||||
translation: Sumber terkait
|
||||
|
||||
- id: copy_link
|
||||
translation: Salin tautan
|
||||
|
||||
- id: copy_citation
|
||||
translation: Salin sitasi
|
||||
|
||||
- id: how_to_cite
|
||||
translation: Cara mengutip
|
||||
|
||||
- id: citation
|
||||
translation: Sitasi
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: Unduh cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: Kuliah
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Masuk layar penuh
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Keluar layar penuh
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: untuk catatan pembicara
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Slide tidak ditemukan
|
||||
|
||||
- id: related
|
||||
translation: Terkait
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: Tanya Jawab
|
||||
|
||||
- id: question
|
||||
translation: Pertanyaan
|
||||
|
||||
- id: answer
|
||||
translation: Jawaban
|
||||
|
||||
- id: accepted_answer
|
||||
translation: Jawaban diterima
|
||||
|
||||
- id: other_answers
|
||||
translation: Jawaban lainnya
|
||||
|
||||
- id: questions
|
||||
translation: Pertanyaan
|
||||
|
||||
- id: questions_count
|
||||
translation: pertanyaan
|
||||
|
||||
- id: related_questions
|
||||
translation: Pertanyaan terkait
|
||||
|
||||
- id: search_questions
|
||||
translation: Cari pertanyaan...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: Belum ada pertanyaan
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQ
|
||||
|
||||
- id: browse_by_category
|
||||
translation: Telusuri per kategori
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: Ringkasan profesional
|
||||
|
||||
- id: backlinks
|
||||
translation: Tautan balik
|
||||
|
||||
- id: days
|
||||
translation: Hari
|
||||
|
||||
- id: hours
|
||||
translation: Jam
|
||||
|
||||
- id: minutes
|
||||
translation: Menit
|
||||
|
||||
- id: seconds
|
||||
translation: Detik
|
||||
|
||||
- id: experience
|
||||
translation: Pengalaman
|
||||
|
||||
- id: read_more
|
||||
translation: Baca selengkapnya
|
||||
|
||||
- id: docs
|
||||
translation: Dokumentasi
|
||||
|
||||
- id: featured
|
||||
translation: Unggulan
|
||||
|
||||
# Feedback widget
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: Masukan
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: Apakah halaman ini membantu?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 Ya
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 Tidak
|
||||
|
||||
- id: block_contact_title
|
||||
translation: Hubungi Kami
|
||||
|
||||
- id: block_contact_visit_title
|
||||
translation: Kunjungi Kami
|
||||
|
||||
- id: block_contact_office_hours
|
||||
translation: Jam kerja
|
||||
|
||||
- id: block_contact_view_on_map
|
||||
translation: Lihat di Peta
|
||||
|
||||
- id: block_contact_connect_title
|
||||
translation: Terhubung
|
||||
|
||||
- id: block_contact_follow_us
|
||||
translation: Ikuti kami
|
||||
|
||||
- id: block_contact_follow_me
|
||||
translation: Temukan saya di
|
||||
|
||||
- id: block_contact_prospective_title
|
||||
translation: Calon anggota
|
||||
|
||||
- id: block_contact_form_title
|
||||
translation: Kirim Pesan
|
||||
|
||||
- id: block_contact_form_name
|
||||
translation: Nama
|
||||
|
||||
- id: block_contact_form_email
|
||||
translation: Email
|
||||
|
||||
- id: block_contact_form_subject
|
||||
translation: Subjek
|
||||
|
||||
- id: block_contact_form_message
|
||||
translation: Pesan
|
||||
|
||||
- id: block_contact_form_submit
|
||||
translation: Kirim pesan
|
||||
|
||||
- id: blog
|
||||
translation: Blog
|
||||
|
||||
- id: events
|
||||
translation: Acara
|
||||
|
||||
- id: poweredby_button
|
||||
translation: 'Bangun punyamu →'
|
||||
|
||||
- id: developer
|
||||
translation: Pengembang
|
||||
|
||||
- id: scroll_to_content
|
||||
translation: Gulir ke konten
|
||||
|
||||
- id: portfolio_link_code
|
||||
translation: Kode
|
||||
|
||||
- id: portfolio_link_live
|
||||
translation: Langsung
|
||||
|
||||
- id: portfolio_link_demo
|
||||
translation: Demo
|
||||
|
||||
- id: portfolio_link_default
|
||||
translation: Tautan
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: Lihat semua proyek
|
||||
|
||||
- id: featured
|
||||
translation: Unggulan
|
||||
@@ -337,3 +337,304 @@
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: Bekijk alle projecten
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: AI-inzicht
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: Contenttype
|
||||
|
||||
- id: difficulty
|
||||
translation: Moeilijkheidsgraad
|
||||
|
||||
- id: prerequisites
|
||||
translation: Vereisten
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: Populair
|
||||
|
||||
- id: article
|
||||
translation: artikel
|
||||
|
||||
- id: articles
|
||||
translation: artikelen
|
||||
|
||||
- id: browse
|
||||
translation: Bladeren
|
||||
|
||||
- id: all
|
||||
translation: Alles
|
||||
|
||||
- id: helpful
|
||||
translation: nuttig
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: Site
|
||||
|
||||
- id: btn_canonical
|
||||
translation: Canoniek
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: Crosspost
|
||||
|
||||
- id: btn_discussion
|
||||
translation: Discussie
|
||||
|
||||
- id: btn_event
|
||||
translation: Evenement
|
||||
|
||||
- id: btn_calendar
|
||||
translation: Kalender
|
||||
|
||||
- id: btn_registration
|
||||
translation: Registratie
|
||||
|
||||
- id: btn_demo
|
||||
translation: Demo
|
||||
|
||||
- id: btn_model
|
||||
translation: Model
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_note
|
||||
translation: Notitie
|
||||
|
||||
- id: callout_abstract
|
||||
translation: Samenvatting
|
||||
|
||||
- id: callout_summary
|
||||
translation: Samenvatting
|
||||
|
||||
- id: callout_info
|
||||
translation: Info
|
||||
|
||||
- id: callout_todo
|
||||
translation: Te doen
|
||||
|
||||
- id: callout_tip
|
||||
translation: Tip
|
||||
|
||||
- id: callout_question
|
||||
translation: Vraag
|
||||
|
||||
- id: callout_quote
|
||||
translation: Citaat
|
||||
|
||||
- id: callout_warning
|
||||
translation: Waarschuwing
|
||||
|
||||
- id: callout_caution
|
||||
translation: Let op
|
||||
|
||||
- id: callout_danger
|
||||
translation: Gevaar
|
||||
|
||||
- id: callout_bug
|
||||
translation: Bug
|
||||
|
||||
- id: callout_example
|
||||
translation: Voorbeeld
|
||||
|
||||
- id: callout_failure
|
||||
translation: Mislukt
|
||||
|
||||
- id: callout_success
|
||||
translation: Succes
|
||||
|
||||
- id: callout_important
|
||||
translation: Belangrijk
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Terug naar slides
|
||||
|
||||
- id: present_slides
|
||||
translation: Presenteren
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Presenteren (volledig scherm)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: PDF exporteren (print)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Opent in printmodus - browser Afdrukken > Opslaan als PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Zoek decks op titel...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: Geen decks gevonden
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: Geen decks voldoen aan je filters
|
||||
|
||||
- id: clear_filters
|
||||
translation: Filters wissen
|
||||
|
||||
- id: topics
|
||||
translation: Onderwerpen
|
||||
|
||||
- id: details
|
||||
translation: Details
|
||||
|
||||
- id: related_resources
|
||||
translation: Gerelateerde bronnen
|
||||
|
||||
- id: copy_link
|
||||
translation: Link kopiëren
|
||||
|
||||
- id: copy_citation
|
||||
translation: Citatie kopiëren
|
||||
|
||||
- id: how_to_cite
|
||||
translation: Hoe te citeren
|
||||
|
||||
- id: citation
|
||||
translation: Citatie
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: cite.bib downloaden
|
||||
|
||||
- id: lecture
|
||||
translation: College
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Volledig scherm
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Volledig scherm afsluiten
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: voor sprekersnotities
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Slides niet gevonden
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: Q&A
|
||||
|
||||
- id: question
|
||||
translation: Vraag
|
||||
|
||||
- id: answer
|
||||
translation: Antwoord
|
||||
|
||||
- id: accepted_answer
|
||||
translation: Geaccepteerd antwoord
|
||||
|
||||
- id: other_answers
|
||||
translation: Andere antwoorden
|
||||
|
||||
- id: questions
|
||||
translation: Vragen
|
||||
|
||||
- id: questions_count
|
||||
translation: vragen
|
||||
|
||||
- id: related_questions
|
||||
translation: Gerelateerde vragen
|
||||
|
||||
- id: search_questions
|
||||
translation: Zoek vragen...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: Nog geen vragen
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: browse_by_category
|
||||
translation: Blader op categorie
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: Professionele samenvatting
|
||||
|
||||
- id: backlinks
|
||||
translation: Backlinks
|
||||
|
||||
- id: days
|
||||
translation: Dagen
|
||||
|
||||
- id: hours
|
||||
translation: Uren
|
||||
|
||||
- id: minutes
|
||||
translation: Minuten
|
||||
|
||||
- id: seconds
|
||||
translation: Seconden
|
||||
|
||||
- id: experience
|
||||
translation: Ervaring
|
||||
|
||||
- id: read_more
|
||||
translation: Lees meer
|
||||
|
||||
- id: docs
|
||||
translation: Documentatie
|
||||
|
||||
- id: featured
|
||||
translation: Uitgelicht
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: Feedback
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: Was deze pagina nuttig?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 Ja
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 Nee
|
||||
@@ -304,3 +304,331 @@
|
||||
|
||||
- id: published_with
|
||||
translation: Made with {hugoblox}.
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: Insight de IA
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: Tipo de conteúdo
|
||||
|
||||
- id: difficulty
|
||||
translation: Dificuldade
|
||||
|
||||
- id: prerequisites
|
||||
translation: Pré-requisitos
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: Em alta
|
||||
|
||||
- id: article
|
||||
translation: artigo
|
||||
|
||||
- id: articles
|
||||
translation: artigos
|
||||
|
||||
- id: browse
|
||||
translation: Navegar
|
||||
|
||||
- id: all
|
||||
translation: Todos
|
||||
|
||||
- id: helpful
|
||||
translation: útil
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: Site
|
||||
|
||||
- id: btn_canonical
|
||||
translation: Canônico
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: Crosspost
|
||||
|
||||
- id: btn_discussion
|
||||
translation: Discussão
|
||||
|
||||
- id: btn_event
|
||||
translation: Evento
|
||||
|
||||
- id: btn_calendar
|
||||
translation: Calendário
|
||||
|
||||
- id: btn_registration
|
||||
translation: Inscrição
|
||||
|
||||
- id: btn_demo
|
||||
translation: Demo
|
||||
|
||||
- id: btn_model
|
||||
translation: Modelo
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_note
|
||||
translation: Nota
|
||||
|
||||
- id: callout_abstract
|
||||
translation: Resumo
|
||||
|
||||
- id: callout_summary
|
||||
translation: Sumário
|
||||
|
||||
- id: callout_info
|
||||
translation: Informação
|
||||
|
||||
- id: callout_todo
|
||||
translation: Para fazer
|
||||
|
||||
- id: callout_tip
|
||||
translation: Dica
|
||||
|
||||
- id: callout_question
|
||||
translation: Pergunta
|
||||
|
||||
- id: callout_quote
|
||||
translation: Citação
|
||||
|
||||
- id: callout_warning
|
||||
translation: Aviso
|
||||
|
||||
- id: callout_caution
|
||||
translation: Cuidado
|
||||
|
||||
- id: callout_danger
|
||||
translation: Perigo
|
||||
|
||||
- id: callout_bug
|
||||
translation: Bug
|
||||
|
||||
- id: callout_example
|
||||
translation: Exemplo
|
||||
|
||||
- id: callout_failure
|
||||
translation: Falha
|
||||
|
||||
- id: callout_success
|
||||
translation: Sucesso
|
||||
|
||||
- id: callout_important
|
||||
translation: Importante
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: Voltar para slides
|
||||
|
||||
- id: present_slides
|
||||
translation: Apresentar
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: Apresentar (tela cheia)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: Exportar PDF (impressão)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: Abre em modo de impressão - use Imprimir > Salvar como PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: Buscar decks por título...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: Nenhum conjunto de slides encontrado
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: Nenhum deck corresponde aos filtros
|
||||
|
||||
- id: clear_filters
|
||||
translation: Limpar filtros
|
||||
|
||||
- id: topics
|
||||
translation: Tópicos
|
||||
|
||||
- id: details
|
||||
translation: Detalhes
|
||||
|
||||
- id: related_resources
|
||||
translation: Recursos relacionados
|
||||
|
||||
- id: copy_link
|
||||
translation: Copiar link
|
||||
|
||||
- id: copy_citation
|
||||
translation: Copiar citação
|
||||
|
||||
- id: how_to_cite
|
||||
translation: Como citar
|
||||
|
||||
- id: citation
|
||||
translation: Citação
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: Baixar cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: Aula
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: Entrar em tela cheia
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: Sair da tela cheia
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: para notas do apresentador
|
||||
|
||||
- id: slides_not_found
|
||||
translation: Slides não encontrados
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: Q&A
|
||||
|
||||
- id: question
|
||||
translation: Pergunta
|
||||
|
||||
- id: answer
|
||||
translation: Resposta
|
||||
|
||||
- id: accepted_answer
|
||||
translation: Resposta aceita
|
||||
|
||||
- id: other_answers
|
||||
translation: Outras respostas
|
||||
|
||||
- id: questions
|
||||
translation: Perguntas
|
||||
|
||||
- id: questions_count
|
||||
translation: perguntas
|
||||
|
||||
- id: related_questions
|
||||
translation: Perguntas relacionadas
|
||||
|
||||
- id: search_questions
|
||||
translation: Buscar perguntas...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: Ainda não há perguntas
|
||||
|
||||
- id: faq
|
||||
translation: FAQ
|
||||
|
||||
- id: faqs
|
||||
translation: FAQs
|
||||
|
||||
- id: browse_by_category
|
||||
translation: Navegar por categoria
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: Resumo profissional
|
||||
|
||||
- id: backlinks
|
||||
translation: Backlinks
|
||||
|
||||
- id: days
|
||||
translation: Dias
|
||||
|
||||
- id: hours
|
||||
translation: Horas
|
||||
|
||||
- id: minutes
|
||||
translation: Minutos
|
||||
|
||||
- id: seconds
|
||||
translation: Segundos
|
||||
|
||||
- id: developer
|
||||
translation: Desenvolvedor
|
||||
|
||||
- id: docs
|
||||
translation: Documentação
|
||||
|
||||
- id: experience
|
||||
translation: Experiência
|
||||
|
||||
- id: read_more
|
||||
translation: Leia mais
|
||||
|
||||
- id: featured
|
||||
translation: Em destaque
|
||||
|
||||
- id: block_contact_follow_me
|
||||
translation: Encontre-me em
|
||||
|
||||
- id: portfolio_link_code
|
||||
translation: Código
|
||||
|
||||
- id: portfolio_link_live
|
||||
translation: Ao vivo
|
||||
|
||||
- id: portfolio_link_demo
|
||||
translation: Demo
|
||||
|
||||
- id: portfolio_link_default
|
||||
translation: Link
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: Ver todos os projetos
|
||||
|
||||
- id: scroll_to_content
|
||||
translation: Rolar para o conteúdo
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: Feedback
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: Esta página foi útil?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 Sim
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 Não
|
||||
|
||||
- id: poweredby_button
|
||||
translation: 'Construa a sua →'
|
||||
@@ -307,3 +307,328 @@
|
||||
|
||||
- id: poweredby_button
|
||||
translation: '構建您的 →'
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: AI 洞察
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: 內容類型
|
||||
|
||||
- id: difficulty
|
||||
translation: 難度
|
||||
|
||||
- id: prerequisites
|
||||
translation: 先決條件
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: 熱門
|
||||
|
||||
- id: article
|
||||
translation: 文章
|
||||
|
||||
- id: articles
|
||||
translation: 文章
|
||||
|
||||
- id: browse
|
||||
translation: 瀏覽
|
||||
|
||||
- id: all
|
||||
translation: 全部
|
||||
|
||||
- id: helpful
|
||||
translation: 有幫助
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: 網站
|
||||
|
||||
- id: btn_canonical
|
||||
translation: 正規連結
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: 交叉發布
|
||||
|
||||
- id: btn_discussion
|
||||
translation: 討論
|
||||
|
||||
- id: btn_event
|
||||
translation: 活動
|
||||
|
||||
- id: btn_calendar
|
||||
translation: 行事曆
|
||||
|
||||
- id: btn_registration
|
||||
translation: 註冊
|
||||
|
||||
- id: btn_demo
|
||||
translation: 示範
|
||||
|
||||
- id: btn_model
|
||||
translation: 模型
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_note
|
||||
translation: 備註
|
||||
|
||||
- id: callout_abstract
|
||||
translation: 摘要
|
||||
|
||||
- id: callout_summary
|
||||
translation: 摘要
|
||||
|
||||
- id: callout_info
|
||||
translation: 資訊
|
||||
|
||||
- id: callout_todo
|
||||
translation: 待辦
|
||||
|
||||
- id: callout_tip
|
||||
translation: 提示
|
||||
|
||||
- id: callout_question
|
||||
translation: 問題
|
||||
|
||||
- id: callout_quote
|
||||
translation: 引用
|
||||
|
||||
- id: callout_warning
|
||||
translation: 警告
|
||||
|
||||
- id: callout_caution
|
||||
translation: 注意
|
||||
|
||||
- id: callout_danger
|
||||
translation: 危險
|
||||
|
||||
- id: callout_bug
|
||||
translation: 錯誤
|
||||
|
||||
- id: callout_example
|
||||
translation: 範例
|
||||
|
||||
- id: callout_failure
|
||||
translation: 失敗
|
||||
|
||||
- id: callout_success
|
||||
translation: 成功
|
||||
|
||||
- id: callout_important
|
||||
translation: 重要
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: 返回投影片
|
||||
|
||||
- id: present_slides
|
||||
translation: 播放
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: 播放(全螢幕)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: 匯出 PDF(列印)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: 以列印模式開啟 - 瀏覽器列印 > 另存為 PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: 依標題搜尋投影片...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: 未找到投影片集
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: 沒有符合篩選的投影片
|
||||
|
||||
- id: clear_filters
|
||||
translation: 清除篩選
|
||||
|
||||
- id: topics
|
||||
translation: 主題
|
||||
|
||||
- id: details
|
||||
translation: 詳細資訊
|
||||
|
||||
- id: related_resources
|
||||
translation: 相關資源
|
||||
|
||||
- id: copy_link
|
||||
translation: 複製連結
|
||||
|
||||
- id: copy_citation
|
||||
translation: 複製引用
|
||||
|
||||
- id: how_to_cite
|
||||
translation: 如何引用
|
||||
|
||||
- id: citation
|
||||
translation: 引用
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: 下載 cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: 講座
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: 進入全螢幕
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: 離開全螢幕
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: 用於講者備註
|
||||
|
||||
- id: slides_not_found
|
||||
translation: 找不到投影片
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: 問答
|
||||
|
||||
- id: question
|
||||
translation: 問題
|
||||
|
||||
- id: answer
|
||||
translation: 回答
|
||||
|
||||
- id: accepted_answer
|
||||
translation: 已接受的回答
|
||||
|
||||
- id: other_answers
|
||||
translation: 其他回答
|
||||
|
||||
- id: questions
|
||||
translation: 問題
|
||||
|
||||
- id: questions_count
|
||||
translation: 個問題
|
||||
|
||||
- id: related_questions
|
||||
translation: 相關問題
|
||||
|
||||
- id: search_questions
|
||||
translation: 搜尋問題...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: 尚無問題
|
||||
|
||||
- id: faq
|
||||
translation: 常見問題
|
||||
|
||||
- id: faqs
|
||||
translation: 常見問題
|
||||
|
||||
- id: browse_by_category
|
||||
translation: 依分類瀏覽
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: 職業簡介
|
||||
|
||||
- id: backlinks
|
||||
translation: 反向連結
|
||||
|
||||
- id: days
|
||||
translation: 天
|
||||
|
||||
- id: hours
|
||||
translation: 小時
|
||||
|
||||
- id: minutes
|
||||
translation: 分鐘
|
||||
|
||||
- id: seconds
|
||||
translation: 秒
|
||||
|
||||
- id: developer
|
||||
translation: 開發者
|
||||
|
||||
- id: docs
|
||||
translation: 文件
|
||||
|
||||
- id: experience
|
||||
translation: 經驗
|
||||
|
||||
- id: read_more
|
||||
translation: 閱讀更多
|
||||
|
||||
- id: featured
|
||||
translation: 精選
|
||||
|
||||
- id: block_contact_follow_me
|
||||
translation: 在這裡找到我
|
||||
|
||||
- id: portfolio_link_code
|
||||
translation: 程式碼
|
||||
|
||||
- id: portfolio_link_live
|
||||
translation: 線上
|
||||
|
||||
- id: portfolio_link_demo
|
||||
translation: 示範
|
||||
|
||||
- id: portfolio_link_default
|
||||
translation: 連結
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: 查看所有專案
|
||||
|
||||
- id: scroll_to_content
|
||||
translation: 捲動至內容
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: 回饋
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: 此頁面有幫助嗎?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 是
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 否
|
||||
@@ -359,3 +359,292 @@
|
||||
|
||||
- id: portfolio_view_all
|
||||
translation: 查看所有项目
|
||||
|
||||
# AI Features
|
||||
|
||||
- id: ai_insight
|
||||
translation: AI 洞察
|
||||
|
||||
# Content Metadata
|
||||
|
||||
- id: content_type
|
||||
translation: 内容类型
|
||||
|
||||
- id: difficulty
|
||||
translation: 难度
|
||||
|
||||
- id: prerequisites
|
||||
translation: 先决条件
|
||||
|
||||
# Card metadata
|
||||
|
||||
- id: trending
|
||||
translation: 热门
|
||||
|
||||
- id: article
|
||||
translation: 文章
|
||||
|
||||
- id: articles
|
||||
translation: 文章
|
||||
|
||||
- id: browse
|
||||
translation: 浏览
|
||||
|
||||
- id: all
|
||||
translation: 全部
|
||||
|
||||
- id: helpful
|
||||
translation: 有帮助
|
||||
|
||||
# Additional buttons
|
||||
|
||||
- id: btn_site
|
||||
translation: 网站
|
||||
|
||||
- id: btn_canonical
|
||||
translation: 规范链接
|
||||
|
||||
- id: btn_crosspost
|
||||
translation: 交叉发布
|
||||
|
||||
- id: btn_discussion
|
||||
translation: 讨论
|
||||
|
||||
- id: btn_event
|
||||
translation: 活动
|
||||
|
||||
- id: btn_calendar
|
||||
translation: 日历
|
||||
|
||||
- id: btn_registration
|
||||
translation: 注册
|
||||
|
||||
- id: btn_demo
|
||||
translation: 演示
|
||||
|
||||
- id: btn_model
|
||||
translation: 模型
|
||||
|
||||
- id: btn_doi
|
||||
translation: DOI
|
||||
|
||||
- id: btn_hal
|
||||
translation: HAL
|
||||
|
||||
- id: btn_dblp
|
||||
translation: DBLP
|
||||
|
||||
- id: btn_isbn
|
||||
translation: ISBN
|
||||
|
||||
- id: btn_osf
|
||||
translation: OSF
|
||||
|
||||
- id: btn_zenodo
|
||||
translation: Zenodo
|
||||
|
||||
- id: btn_kaggle
|
||||
translation: Kaggle
|
||||
|
||||
- id: btn_openalex
|
||||
translation: OpenAlex
|
||||
|
||||
- id: btn_semanticscholar
|
||||
translation: Semantic Scholar
|
||||
|
||||
- id: btn_pwc
|
||||
translation: Papers With Code
|
||||
|
||||
# Callouts
|
||||
|
||||
- id: callout_abstract
|
||||
translation: 摘要
|
||||
|
||||
- id: callout_summary
|
||||
translation: 总结
|
||||
|
||||
- id: callout_info
|
||||
translation: 信息
|
||||
|
||||
- id: callout_todo
|
||||
translation: 待办
|
||||
|
||||
- id: callout_question
|
||||
translation: 问题
|
||||
|
||||
- id: callout_quote
|
||||
translation: 引用
|
||||
|
||||
- id: callout_warning
|
||||
translation: 警告
|
||||
|
||||
- id: callout_danger
|
||||
translation: 危险
|
||||
|
||||
- id: callout_bug
|
||||
translation: 缺陷
|
||||
|
||||
- id: callout_example
|
||||
translation: 示例
|
||||
|
||||
- id: callout_failure
|
||||
translation: 失败
|
||||
|
||||
- id: callout_success
|
||||
translation: 成功
|
||||
|
||||
# Slides
|
||||
|
||||
- id: back_to_slides
|
||||
translation: 返回幻灯
|
||||
|
||||
- id: present_slides
|
||||
translation: 演示
|
||||
|
||||
- id: present_fullscreen
|
||||
translation: 演示(全屏)
|
||||
|
||||
- id: export_pdf_print
|
||||
translation: 导出 PDF(打印)
|
||||
|
||||
- id: slides_print_hint
|
||||
translation: 在打印模式打开 - 浏览器打印 > 另存为 PDF
|
||||
|
||||
- id: slides_search_placeholder
|
||||
translation: 按标题搜索幻灯集...
|
||||
|
||||
- id: slides_no_decks
|
||||
translation: 未找到幻灯集
|
||||
|
||||
- id: slides_no_matches
|
||||
translation: 没有符合筛选的幻灯集
|
||||
|
||||
- id: clear_filters
|
||||
translation: 清除过滤
|
||||
|
||||
- id: topics
|
||||
translation: 主题
|
||||
|
||||
- id: details
|
||||
translation: 详情
|
||||
|
||||
- id: related_resources
|
||||
translation: 相关资源
|
||||
|
||||
- id: copy_link
|
||||
translation: 复制链接
|
||||
|
||||
- id: copy_citation
|
||||
translation: 复制引用
|
||||
|
||||
|
||||
- id: citation
|
||||
translation: 引用
|
||||
|
||||
- id: bibtex
|
||||
translation: BibTeX
|
||||
|
||||
- id: download_cite_bib
|
||||
translation: 下载 cite.bib
|
||||
|
||||
- id: lecture
|
||||
translation: 讲座
|
||||
|
||||
- id: enter_fullscreen
|
||||
translation: 进入全屏
|
||||
|
||||
- id: exit_fullscreen
|
||||
translation: 退出全屏
|
||||
|
||||
- id: speaker_notes_hint
|
||||
translation: 用于演讲者备注
|
||||
|
||||
- id: slides_not_found
|
||||
translation: 未找到幻灯
|
||||
|
||||
# Q&A
|
||||
|
||||
- id: qa
|
||||
translation: 问答
|
||||
|
||||
- id: question
|
||||
translation: 问题
|
||||
|
||||
- id: answer
|
||||
translation: 答案
|
||||
|
||||
- id: accepted_answer
|
||||
translation: 已采纳的回答
|
||||
|
||||
- id: other_answers
|
||||
translation: 其他回答
|
||||
|
||||
- id: questions
|
||||
translation: 问题
|
||||
|
||||
- id: questions_count
|
||||
translation: 个问题
|
||||
|
||||
- id: related_questions
|
||||
translation: 相关问题
|
||||
|
||||
- id: search_questions
|
||||
translation: 搜索问题...
|
||||
|
||||
- id: no_questions_yet
|
||||
translation: 尚无问题
|
||||
|
||||
- id: faq
|
||||
translation: 常见问题
|
||||
|
||||
- id: faqs
|
||||
translation: 常见问题
|
||||
|
||||
- id: browse_by_category
|
||||
translation: 按类别浏览
|
||||
|
||||
# General extras
|
||||
|
||||
- id: about_me
|
||||
translation: 职业简介
|
||||
|
||||
- id: backlinks
|
||||
translation: 反向链接
|
||||
|
||||
- id: days
|
||||
translation: 天
|
||||
|
||||
- id: hours
|
||||
translation: 小时
|
||||
|
||||
- id: minutes
|
||||
translation: 分钟
|
||||
|
||||
- id: seconds
|
||||
translation: 秒
|
||||
|
||||
- id: docs
|
||||
translation: 文档
|
||||
|
||||
- id: featured
|
||||
translation: 精选
|
||||
|
||||
- id: read_more
|
||||
translation: 阅读更多
|
||||
|
||||
# Feedback widget
|
||||
|
||||
- id: feedback_widget_title
|
||||
translation: 反馈
|
||||
|
||||
- id: feedback_widget_question
|
||||
translation: 此页面有帮助吗?
|
||||
|
||||
- id: feedback_widget_answer_positive
|
||||
translation: 😍 是
|
||||
|
||||
- id: feedback_widget_answer_negative
|
||||
translation: 😡 否
|
||||
|
||||
- id: how_to_cite
|
||||
translation: 如何引用
|
||||
@@ -0,0 +1,155 @@
|
||||
{{/*
|
||||
Hugo Blox Slides Embed Component - Reusable iframe embed with fullscreen support
|
||||
Usage: {{ partial "components/slides-embed.html" (dict "page" . "slides_slug" .Params.slides) }}
|
||||
|
||||
Params:
|
||||
- page: current page context
|
||||
- slides_slug: slug of slides to embed (e.g., "example")
|
||||
- show_actions: (optional) show open/speaker notes links, default true
|
||||
- title: (optional) title for iframe, defaults to page title
|
||||
*/}}
|
||||
|
||||
{{ $page := .page }}
|
||||
{{ $slides_slug := .slides_slug }}
|
||||
{{ $show_actions := .show_actions | default true }}
|
||||
{{ $slides_label := i18n "slides" | default "Slides" }}
|
||||
{{ $present_fullscreen_label := i18n "present_fullscreen" | default "Present (fullscreen)" }}
|
||||
{{ $enter_fullscreen_label := i18n "enter_fullscreen" | default "Enter fullscreen" }}
|
||||
{{ $exit_fullscreen_label := i18n "exit_fullscreen" | default "Exit fullscreen" }}
|
||||
{{ $speaker_notes_hint := i18n "speaker_notes_hint" | default "for speaker notes" }}
|
||||
{{ $slides_not_found_label := i18n "slides_not_found" | default "Slides not found" }}
|
||||
{{ $embed_title := .title | default (printf "%s - %s" $page.Title $slides_label) }}
|
||||
|
||||
{{/* Enable Alpine.js for fullscreen functionality */}}
|
||||
{{ $page.Store.Set "has_alpine" true }}
|
||||
|
||||
{{/* Get slides page */}}
|
||||
{{ $slides_page := site.GetPage (printf "/slides/%s" $slides_slug) }}
|
||||
{{ $scr := newScratch }}
|
||||
{{ if $slides_page }}
|
||||
{{ $scr.Set "slides_url" $slides_page.RelPermalink }}
|
||||
{{ $scr.Set "present_url" $slides_page.RelPermalink }}
|
||||
{{ $scr.Set "embed_url" $slides_page.RelPermalink }}
|
||||
{{ $present_format := $slides_page.OutputFormats.Get "present" }}
|
||||
{{ if not $present_format }}
|
||||
{{ $present_format = $slides_page.OutputFormats.Get "Present" }}
|
||||
{{ end }}
|
||||
{{ with $present_format }}
|
||||
{{ $scr.Set "present_url" .RelPermalink }}
|
||||
{{ $scr.Set "embed_url" (printf "%s?embed=1" .RelPermalink) }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $slides_url := $scr.Get "slides_url" }}
|
||||
{{ $present_url := $scr.Get "present_url" | default $slides_url }}
|
||||
{{ $embed_url := $scr.Get "embed_url" | default $slides_url }}
|
||||
|
||||
{{ if $slides_page }}
|
||||
<div
|
||||
x-data="{
|
||||
isFullscreen: false,
|
||||
toggleFullscreen() {
|
||||
const container = this.$refs.slideContainer;
|
||||
if (!this.isFullscreen) {
|
||||
if (container.requestFullscreen) {
|
||||
container.requestFullscreen();
|
||||
} else if (container.webkitRequestFullscreen) {
|
||||
container.webkitRequestFullscreen();
|
||||
} else if (container.msRequestFullscreen) {
|
||||
container.msRequestFullscreen();
|
||||
}
|
||||
} else {
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.webkitExitFullscreen) {
|
||||
document.webkitExitFullscreen();
|
||||
} else if (document.msExitFullscreen) {
|
||||
document.msExitFullscreen();
|
||||
}
|
||||
}
|
||||
}
|
||||
}"
|
||||
@fullscreenchange.window="isFullscreen = document.fullscreenElement === $refs.slideContainer"
|
||||
@webkitfullscreenchange.window="isFullscreen = document.webkitFullscreenElement === $refs.slideContainer"
|
||||
class="mb-12"
|
||||
>
|
||||
{{/* Slides iframe container - wrapper for fullscreen API */}}
|
||||
<div
|
||||
x-ref="slideContainer"
|
||||
class="relative w-full bg-black rounded-lg shadow-2xl overflow-visible"
|
||||
style="aspect-ratio: 16 / 9;"
|
||||
:class="isFullscreen ? 'h-screen' : ''"
|
||||
>
|
||||
<iframe
|
||||
src="{{ $embed_url }}"
|
||||
class="w-full h-full border-0 rounded-lg"
|
||||
allowfullscreen
|
||||
allow="autoplay"
|
||||
title="{{ $embed_title }}"
|
||||
loading="lazy"
|
||||
></iframe>
|
||||
|
||||
{{/* Fullscreen toggle button - inside container for fullscreen visibility */}}
|
||||
<button
|
||||
@click="toggleFullscreen()"
|
||||
class="absolute top-4 right-4 p-3 bg-white/95 dark:bg-gray-800/95 hover:bg-white dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 transition-all duration-200 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-primary-500 backdrop-blur-sm"
|
||||
:aria-label="isFullscreen ? {{ $exit_fullscreen_label | jsonify }} : {{ $enter_fullscreen_label | jsonify }}"
|
||||
type="button"
|
||||
style="z-index: 9999;"
|
||||
>
|
||||
{{/* Expand icon (when not fullscreen) */}}
|
||||
<svg
|
||||
x-show="!isFullscreen"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4" />
|
||||
</svg>
|
||||
{{/* Compress icon (when fullscreen) */}}
|
||||
<svg
|
||||
x-show="isFullscreen"
|
||||
x-cloak
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9 9V4.5M9 9H4.5M9 9L3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5l5.25 5.25" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{{ if $show_actions }}
|
||||
{{/* Action links below embed */}}
|
||||
<div class="mt-4 flex items-center justify-between text-sm text-gray-600 dark:text-gray-400">
|
||||
<div class="flex items-center gap-4">
|
||||
{{/* Open in new tab */}}
|
||||
<a
|
||||
href="{{ $present_url }}"
|
||||
target="_blank"
|
||||
rel="noopener"
|
||||
class="inline-flex items-center gap-1 hover:text-primary-600 dark:hover:text-primary-400 transition-colors"
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" />
|
||||
</svg>
|
||||
<span>{{ $present_fullscreen_label }}</span>
|
||||
</a>
|
||||
|
||||
{{/* Presentation mode hint */}}
|
||||
<span class="text-xs">
|
||||
<kbd class="px-2 py-1 text-xs font-semibold text-gray-800 bg-gray-100 border border-gray-200 rounded dark:bg-gray-600 dark:text-gray-100 dark:border-gray-500">S</kbd>
|
||||
{{ $speaker_notes_hint }}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ else }}
|
||||
<p class="text-sm text-red-600 dark:text-red-400">{{ $slides_not_found_label }}: {{ $slides_slug }}</p>
|
||||
{{ end }}
|
||||
@@ -89,22 +89,46 @@
|
||||
|
||||
{{/* 2b) Slides relation parameter (legacy but common) */}}
|
||||
{{ with $page.Params.slides }}
|
||||
{{ with (site.GetPage (printf "slides/%s" .)) }}
|
||||
{{ $typeF := "slides" }}
|
||||
{{ $urlF := .RelPermalink }}
|
||||
{{ $keyF := printf "%s::%s" $typeF $urlF }}
|
||||
{{ if not ($seen.Get (printf "set.%s" $keyF)) }}
|
||||
{{ $seen.SetInMap "set" $keyF true }}
|
||||
{{ $links = $links | append (dict
|
||||
"type" $typeF
|
||||
"url" $urlF
|
||||
"icon" (index (index $types $typeF) "icon")
|
||||
"labelKey" (index (index $types $typeF) "label_i18n")
|
||||
"contexts" (slice "list" "page")
|
||||
) }}
|
||||
{{ if reflect.IsMap . }}
|
||||
{{/* Skip: slides map is Reveal.js config for slide decks. */}}
|
||||
{{ else if reflect.IsSlice . }}
|
||||
{{ range . }}
|
||||
{{ with (site.GetPage (printf "slides/%s" .)) }}
|
||||
{{ $typeF := "slides" }}
|
||||
{{ $urlF := .RelPermalink }}
|
||||
{{ $keyF := printf "%s::%s" $typeF $urlF }}
|
||||
{{ if not ($seen.Get (printf "set.%s" $keyF)) }}
|
||||
{{ $seen.SetInMap "set" $keyF true }}
|
||||
{{ $links = $links | append (dict
|
||||
"type" $typeF
|
||||
"url" $urlF
|
||||
"icon" (index (index $types $typeF) "icon")
|
||||
"labelKey" (index (index $types $typeF) "label_i18n")
|
||||
"contexts" (slice "list" "page")
|
||||
) }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ warnf "`slides` relation could not resolve to a page for %s" $page.File.Path }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ warnf "`slides` relation could not resolve to a page for %s" $page.File.Path }}
|
||||
{{ with (site.GetPage (printf "slides/%s" .)) }}
|
||||
{{ $typeF := "slides" }}
|
||||
{{ $urlF := .RelPermalink }}
|
||||
{{ $keyF := printf "%s::%s" $typeF $urlF }}
|
||||
{{ if not ($seen.Get (printf "set.%s" $keyF)) }}
|
||||
{{ $seen.SetInMap "set" $keyF true }}
|
||||
{{ $links = $links | append (dict
|
||||
"type" $typeF
|
||||
"url" $urlF
|
||||
"icon" (index (index $types $typeF) "icon")
|
||||
"labelKey" (index (index $types $typeF) "label_i18n")
|
||||
"contexts" (slice "list" "page")
|
||||
) }}
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{ warnf "`slides` relation could not resolve to a page for %s" $page.File.Path }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
</div>
|
||||
</div>
|
||||
@@ -0,0 +1,5 @@
|
||||
{{ $columns := .config.columns | default 2 }}
|
||||
{{ $len := .config.len | default 1 }}
|
||||
{{/* Grid layout optimized for slide deck previews - 16:9 aspect ratio cards */}}
|
||||
<div class="container px-4 sm:px-6 mx-auto max-w-6xl py-8">
|
||||
<div class="grid gap-6 sm:gap-8 {{ if eq $columns 1 }}max-w-xl mx-auto{{ else if eq $columns 2 }}grid-cols-1 md:grid-cols-2{{ else }}grid-cols-1 md:grid-cols-2 lg:grid-cols-3{{ end }}">
|
||||
@@ -0,0 +1,203 @@
|
||||
{{/* Hugo Blox Slides Gallery View - Optimized for slide deck presentations */}}
|
||||
{{/* Features: 16:9 aspect ratio, play button overlay, slide count, tags, featured badge */}}
|
||||
|
||||
{{ $item := .item }}
|
||||
{{ $link := $item.RelPermalink }}
|
||||
{{ $html_format := $item.OutputFormats.Get "HTML" }}
|
||||
{{ if not $html_format }}
|
||||
{{ $html_format = $item.OutputFormats.Get "html" }}
|
||||
{{ end }}
|
||||
{{ with $html_format }}
|
||||
{{ $link = .RelPermalink }}
|
||||
{{ end }}
|
||||
{{ $present_link := $link }}
|
||||
{{ $present_format := $item.OutputFormats.Get "present" }}
|
||||
{{ if not $present_format }}
|
||||
{{ $present_format = $item.OutputFormats.Get "Present" }}
|
||||
{{ end }}
|
||||
{{ with $present_format }}
|
||||
{{ $present_link = .RelPermalink }}
|
||||
{{ end }}
|
||||
{{ $resource := partial "functions/get_featured_image.html" $item }}
|
||||
{{ $index := .index }}
|
||||
{{ $featured_label := i18n "featured" | default "Featured" }}
|
||||
{{ $details_label := i18n "details" | default "Details" }}
|
||||
{{ $present_label := i18n "present_slides" | default "Present" }}
|
||||
{{ $present_fullscreen_label := i18n "present_fullscreen" | default "Present (fullscreen)" }}
|
||||
{{ $slides_label := i18n "slides" | default "Slides" }}
|
||||
|
||||
{{/* Check if featured/pinned */}}
|
||||
{{ $isFeatured := or $item.Params.featured $item.Params.pinned }}
|
||||
|
||||
{{/* Calculate slide count by counting "---" separators in content */}}
|
||||
{{ $content := $item.RawContent }}
|
||||
{{ $slideCount := 1 }}
|
||||
{{ $separators := findRE "(?m)^---$" $content }}
|
||||
{{ if $separators }}
|
||||
{{ $slideCount = add (len $separators) 1 }}
|
||||
{{/* Subtract 1 for front matter separator if content starts with --- */}}
|
||||
{{ if hasPrefix $content "---" }}
|
||||
{{ $slideCount = sub $slideCount 1 }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Get summary - use description from front matter or truncate content */}}
|
||||
{{ $summary := $item.Description | default $item.Summary | default "" }}
|
||||
{{ $summary = $summary | plainify | truncate 160 }}
|
||||
|
||||
<article class="group relative flex flex-col bg-white dark:bg-zinc-900 rounded-xl shadow-sm ring-1 ring-zinc-900/5 dark:ring-white/10 overflow-hidden transition-all duration-300 hover:shadow-lg hover:shadow-primary-500/10 hover:-translate-y-1{{ if $isFeatured }} ring-2 ring-primary-500/50{{ end }}">
|
||||
{{/* Featured Badge */}}
|
||||
{{ if $isFeatured }}
|
||||
<div class="absolute top-3 left-3 z-10 px-2.5 py-1 rounded-full text-xs font-semibold bg-primary-500 text-white flex items-center gap-1.5 shadow-lg">
|
||||
<svg class="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
|
||||
</svg>
|
||||
{{ $featured_label }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Slide Preview Image - 16:9 aspect ratio */}}
|
||||
<a href="{{ $present_link }}" target="_blank" rel="noopener" class="block relative aspect-video bg-gradient-to-br from-zinc-100 to-zinc-200 dark:from-zinc-800 dark:to-zinc-900 overflow-hidden" aria-label="{{ printf "%s %s" $present_fullscreen_label ($item.Title | plainify) }}">
|
||||
{{ with $resource }}
|
||||
{{ if strings.Contains .MediaType.SubType "svg" }}
|
||||
<img
|
||||
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||
src="{{ .RelPermalink }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
alt="{{ $item.Title | plainify }}">
|
||||
{{ else if ne .MediaType.SubType "gif" }}
|
||||
{{ $image := .Fill "800x450 Center" }}
|
||||
{{ $responsive := partial "functions/process_responsive_image.html" (dict
|
||||
"image" $image
|
||||
"mode" "responsive"
|
||||
"sizes" (slice 400 600 800)
|
||||
"formats" (slice "avif" "webp" "jpg")
|
||||
) }}
|
||||
<img
|
||||
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||
srcset="{{ $responsive.srcset }}"
|
||||
sizes="(max-width: 768px) 100vw, 50vw"
|
||||
src="{{ $responsive.fallback.RelPermalink }}"
|
||||
width="{{ $image.Width }}"
|
||||
height="{{ $image.Height }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
{{ if eq $index 0 }}fetchpriority="high"{{ end }}
|
||||
alt="{{ $item.Title | plainify }}">
|
||||
{{ else }}
|
||||
<img
|
||||
class="w-full h-full object-cover transition-transform duration-500 group-hover:scale-105"
|
||||
src="{{ .RelPermalink }}"
|
||||
loading="lazy"
|
||||
decoding="async"
|
||||
alt="{{ $item.Title | plainify }}">
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
{{/* Fallback: Decorative gradient with slide icon - smaller, cleaner */}}
|
||||
<div class="w-full h-full bg-gradient-to-br from-primary-500/10 via-secondary-500/10 to-primary-700/15 dark:from-primary-600/20 dark:via-secondary-600/15 dark:to-primary-800/25 flex items-center justify-center">
|
||||
<div class="text-center px-4">
|
||||
<svg class="w-8 h-8 mx-auto text-primary-500/40 dark:text-primary-400/40" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M3.75 3v11.25A2.25 2.25 0 006 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0118 16.5h-2.25m-7.5 0h7.5m-7.5 0l-1 3m8.5-3l1 3m0 0l.5 1.5m-.5-1.5h-9.5m0 0l-.5 1.5m.75-9l3-3 2.148 2.148A12.061 12.061 0 0116.5 7.605" />
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Play button overlay on hover */}}
|
||||
<div class="absolute inset-0 flex items-center justify-center bg-black/0 group-hover:bg-black/30 transition-all duration-300">
|
||||
<div class="w-14 h-14 rounded-full bg-white/90 dark:bg-zinc-900/90 flex items-center justify-center opacity-0 group-hover:opacity-100 transform scale-75 group-hover:scale-100 transition-all duration-300 shadow-lg">
|
||||
<svg class="w-6 h-6 text-primary-600 dark:text-primary-400 ml-1" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M8 5v14l11-7z"/>
|
||||
</svg>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/* Slide count badge */}}
|
||||
{{ if gt $slideCount 1 }}
|
||||
<div class="absolute bottom-3 right-3 px-2.5 py-1 rounded-full text-xs font-medium bg-black/60 backdrop-blur-sm text-white">
|
||||
{{ $slideCount }} {{ $slides_label | lower }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</a>
|
||||
|
||||
{{/* Content Section */}}
|
||||
<div class="flex flex-col flex-1 p-5">
|
||||
{{/* Tags */}}
|
||||
{{ if $item.Params.tags }}
|
||||
<div class="flex flex-wrap gap-2 mb-3">
|
||||
{{ range first 3 $item.Params.tags }}
|
||||
<span class="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-primary-100 text-primary-800 dark:bg-primary-900/40 dark:text-primary-300">
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ if gt (len $item.Params.tags) 3 }}
|
||||
<span class="text-xs text-zinc-500 dark:text-zinc-400">+{{ sub (len $item.Params.tags) 3 }}</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ $authors := slice }}
|
||||
{{ with $item.Params.authors }}
|
||||
{{ if reflect.IsSlice . }}
|
||||
{{ $authors = . }}
|
||||
{{ else }}
|
||||
{{ $authors = slice . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if gt (len $authors) 0 }}
|
||||
{{ $author := index $authors 0 }}
|
||||
{{ $profile := partial "functions/get_author_profile" $author }}
|
||||
{{ $avatar := $profile.avatar }}
|
||||
{{ $authorName := $author }}
|
||||
{{ if $profile.has_data }}
|
||||
{{ $authorName = $profile.title }}
|
||||
{{ end }}
|
||||
<div class="flex items-center gap-2 mb-2 text-xs text-zinc-500 dark:text-zinc-400">
|
||||
<div class="relative h-6 w-6 flex-shrink-0">
|
||||
{{ if $avatar }}
|
||||
{{ $avatar_48 := $avatar.Process "Fill 48x48 Center webp" }}
|
||||
<img alt="{{ $authorName }}" class="rounded-full object-cover" src="{{ $avatar_48.RelPermalink }}" width="24" height="24" loading="lazy" decoding="async" />
|
||||
{{ else }}
|
||||
<div class="w-6 h-6 bg-zinc-100 dark:bg-zinc-800 rounded-full flex items-center justify-center">
|
||||
{{ partial "functions/get_icon" (dict "name" "hero/user" "attributes" "class=\"w-4 h-4 text-zinc-500 dark:text-zinc-400\"") }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
<span class="truncate max-w-[10rem]">{{ $authorName }}</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Title */}}
|
||||
<h3 class="text-lg font-semibold text-zinc-900 dark:text-zinc-100 group-hover:text-primary-600 dark:group-hover:text-primary-400 transition-colors line-clamp-2 mb-2">
|
||||
<a href="{{ $link }}">{{ $item.Title }}</a>
|
||||
</h3>
|
||||
|
||||
{{/* Summary */}}
|
||||
<p class="text-sm text-zinc-600 dark:text-zinc-400 line-clamp-3 min-h-[3.75rem] mb-3 flex-1">{{ if $summary }}{{ $summary }}{{ else }} {{ end }}</p>
|
||||
|
||||
{{/* Footer: Venue, Year, Details + Present Links */}}
|
||||
<div class="flex items-center justify-between pt-3 border-t border-zinc-100 dark:border-zinc-800 mt-auto">
|
||||
<div class="flex items-center gap-2 text-xs text-zinc-500 dark:text-zinc-500">
|
||||
{{ with $item.Params.venue }}
|
||||
<span class="truncate max-w-[120px]" title="{{ . }}">{{ . }}</span>
|
||||
<span class="text-zinc-300 dark:text-zinc-600">·</span>
|
||||
{{ end }}
|
||||
<time datetime="{{ $item.Date.Format "2006-01-02" }}">
|
||||
{{ $item.Date.Format "2006" }}
|
||||
</time>
|
||||
</div>
|
||||
<div class="flex items-center gap-3">
|
||||
<a href="{{ $link }}" class="inline-flex items-center gap-1 text-xs font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100 transition-colors">
|
||||
<span>{{ $details_label }}</span>
|
||||
</a>
|
||||
<a href="{{ $present_link }}" target="_blank" rel="noopener" class="inline-flex items-center gap-1 text-xs font-medium text-primary-600 dark:text-primary-400 hover:text-primary-700 dark:hover:text-primary-300 transition-colors">
|
||||
<span>{{ $present_label }}</span>
|
||||
<svg class="w-3.5 h-3.5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"/>
|
||||
</svg>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
@@ -67,7 +67,6 @@
|
||||
{{/* Set Alpine.js flag if author notes exist */}}
|
||||
{{ if isset .Params "author_notes" }}
|
||||
{{ .Store.Set "has_alpine" true }}
|
||||
<script>console.log('Author notes detected in events/single.html, Alpine.js should load');</script>
|
||||
{{ end }}
|
||||
|
||||
{{ range $i, $slug := .Params.authors }}
|
||||
@@ -138,117 +137,7 @@
|
||||
|
||||
{{/* EMBEDDED SLIDES SECTION - Replaces featured image for events with slides */}}
|
||||
{{ if .Params.slides }}
|
||||
{{/* Enable Alpine.js for fullscreen functionality */}}
|
||||
{{ .Store.Set "has_alpine" true }}
|
||||
|
||||
{{/* Construct slides URL */}}
|
||||
{{ $slides_page := site.GetPage (printf "/slides/%s" .Params.slides) }}
|
||||
|
||||
{{ if $slides_page }}
|
||||
<div
|
||||
x-data="{
|
||||
isFullscreen: false,
|
||||
toggleFullscreen() {
|
||||
const container = this.$refs.slideContainer;
|
||||
if (!this.isFullscreen) {
|
||||
if (container.requestFullscreen) {
|
||||
container.requestFullscreen();
|
||||
} else if (container.webkitRequestFullscreen) {
|
||||
container.webkitRequestFullscreen();
|
||||
} else if (container.msRequestFullscreen) {
|
||||
container.msRequestFullscreen();
|
||||
}
|
||||
} else {
|
||||
if (document.exitFullscreen) {
|
||||
document.exitFullscreen();
|
||||
} else if (document.webkitExitFullscreen) {
|
||||
document.webkitExitFullscreen();
|
||||
} else if (document.msExitFullscreen) {
|
||||
document.msExitFullscreen();
|
||||
}
|
||||
}
|
||||
}
|
||||
}"
|
||||
@fullscreenchange.window="isFullscreen = document.fullscreenElement === $refs.slideContainer"
|
||||
@webkitfullscreenchange.window="isFullscreen = document.webkitFullscreenElement === $refs.slideContainer"
|
||||
class="mb-12"
|
||||
>
|
||||
{{/* Slides iframe container - must contain button for fullscreen visibility */}}
|
||||
<div
|
||||
x-ref="slideContainer"
|
||||
class="relative w-full bg-black rounded-lg shadow-2xl overflow-visible"
|
||||
style="aspect-ratio: 16 / 9;"
|
||||
:class="isFullscreen ? 'h-screen' : ''"
|
||||
>
|
||||
<iframe
|
||||
src="{{ $slides_page.RelPermalink }}"
|
||||
class="w-full h-full border-0 rounded-lg"
|
||||
allowfullscreen
|
||||
allow="autoplay"
|
||||
title="{{ $.Title }} - Slides"
|
||||
loading="lazy"
|
||||
></iframe>
|
||||
|
||||
{{/* Fullscreen toggle button - must be inside fullscreen container */}}
|
||||
<button
|
||||
@click="toggleFullscreen()"
|
||||
class="absolute top-4 right-4 p-3 bg-white/95 dark:bg-gray-800/95 hover:bg-white dark:hover:bg-gray-800 text-gray-700 dark:text-gray-200 rounded-lg shadow-xl border border-gray-200 dark:border-gray-700 transition-all duration-200 hover:scale-110 focus:outline-none focus:ring-2 focus:ring-primary-500 backdrop-blur-sm"
|
||||
:aria-label="isFullscreen ? 'Exit fullscreen' : 'Enter fullscreen'"
|
||||
type="button"
|
||||
style="z-index: 9999;"
|
||||
>
|
||||
{{/* Expand icon (when not fullscreen) */}}
|
||||
<svg
|
||||
x-show="!isFullscreen"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4 8V4m0 0h4M4 4l5 5m11-1V4m0 0h-4m4 0l-5 5M4 16v4m0 0h4m-4 0l5-5m11 5l-5-5m5 5v-4m0 4h-4" />
|
||||
</svg>
|
||||
{{/* Compress icon (when fullscreen) */}}
|
||||
<svg
|
||||
x-show="isFullscreen"
|
||||
x-cloak
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
class="h-5 w-5"
|
||||
fill="none"
|
||||
viewBox="0 0 24 24"
|
||||
stroke="currentColor"
|
||||
stroke-width="2"
|
||||
>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9 9V4.5M9 9H4.5M9 9L3.75 3.75M9 15v4.5M9 15H4.5M9 15l-5.25 5.25M15 9h4.5M15 9V4.5M15 9l5.25-5.25M15 15h4.5M15 15v4.5m0-4.5l5.25 5.25" />
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
|
||||
{{/* Slides metadata */}}
|
||||
<div class="mt-4 flex items-center justify-between text-sm text-gray-600 dark:text-gray-400">
|
||||
<div class="flex items-center gap-4">
|
||||
{{/* Direct link to slides */}}
|
||||
<a
|
||||
href="{{ $slides_page.RelPermalink }}"
|
||||
target="_blank"
|
||||
class="inline-flex items-center gap-1 hover:text-primary-600 dark:hover:text-primary-400 transition-colors"
|
||||
>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14" />
|
||||
</svg>
|
||||
<span>View slides in new tab</span>
|
||||
</a>
|
||||
|
||||
{{/* Presentation mode hint */}}
|
||||
<span class="text-xs">
|
||||
<kbd class="px-2 py-1 text-xs font-semibold text-gray-800 bg-gray-100 border border-gray-200 rounded dark:bg-gray-600 dark:text-gray-100 dark:border-gray-500">S</kbd>
|
||||
for speaker notes
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ partial "components/slides-embed.html" (dict "page" . "slides_slug" .Params.slides) }}
|
||||
{{ else }}
|
||||
{{/* Fallback to featured image if no slides */}}
|
||||
{{ $featured := partial "functions/get_featured_image.html" . }}
|
||||
|
||||
@@ -24,7 +24,6 @@
|
||||
{{ range .Pages }}
|
||||
{{ if isset .Params "author_notes" }}
|
||||
{{ $.Store.Set "has_alpine" true }}
|
||||
<script>console.log('Author notes found in list - Alpine.js enabled');</script>
|
||||
{{ break }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
@@ -76,7 +76,6 @@
|
||||
{{/* Set Alpine.js flag if author notes exist */}}
|
||||
{{ if isset .Params "author_notes" }}
|
||||
{{ .Store.Set "has_alpine" true }}
|
||||
<script>console.log('Author notes detected in single.html, Alpine.js should load');</script>
|
||||
{{ end }}
|
||||
|
||||
{{ range $i, $slug := .Params.authors }}
|
||||
|
||||
@@ -11,6 +11,9 @@
|
||||
|
||||
import * as params from "@params";
|
||||
|
||||
// Guard against null/undefined slides params - ensures decks render with sensible defaults
|
||||
const slides = params.slides || {};
|
||||
|
||||
// Enable core slide features.
|
||||
var enabledPlugins = [RevealMarkdown, RevealSearch, RevealNotes, RevealMath.KaTeX, RevealZoom];
|
||||
|
||||
@@ -38,15 +41,17 @@ const keysToCamelCase = (o) => {
|
||||
|
||||
// reveal configurations can be included in front matter under slides.reveal
|
||||
var pluginOptions = {};
|
||||
if (typeof params.slides.reveal_options !== "undefined") {
|
||||
pluginOptions = params.slides.reveal_options;
|
||||
if (typeof slides.reveal_options !== "undefined") {
|
||||
pluginOptions = slides.reveal_options;
|
||||
}
|
||||
|
||||
pluginOptions = keysToCamelCase(pluginOptions);
|
||||
|
||||
//enable menu by default if not set
|
||||
// Menu disabled by default (reveal.js-menu@2.1.0 has ESM compatibility issues)
|
||||
// Menu plugin no longer maintained as of 2026-01 (last updated 6 years ago).
|
||||
// TODO: consider removing this plugin as it's unlikely to work with modern browsers.
|
||||
if (typeof pluginOptions.menu_enabled === "undefined") {
|
||||
pluginOptions.menu_enabled = true;
|
||||
pluginOptions.menu_enabled = false;
|
||||
}
|
||||
|
||||
// configure menu if enabled
|
||||
@@ -59,18 +64,18 @@ pluginOptions.plugins = enabledPlugins;
|
||||
Reveal.initialize(pluginOptions);
|
||||
|
||||
// Disable Mermaid by default.
|
||||
if (typeof params.slides.diagram === "undefined") {
|
||||
params.slides.diagram = false;
|
||||
if (typeof slides.diagram === "undefined") {
|
||||
slides.diagram = false;
|
||||
}
|
||||
|
||||
// Configure Mermaid only if diagrams are enabled.
|
||||
if (params.slides.diagram) {
|
||||
if (slides.diagram) {
|
||||
//mermaid options
|
||||
// mermaid: front matter configuration can be used to set mermaid options
|
||||
// You can also use directives (see mermaid documentation)
|
||||
let mermaidOptions = {};
|
||||
if (typeof params.slides.diagram_options !== "undefined") {
|
||||
mermaidOptions = params.slides.diagram_options;
|
||||
if (typeof slides.diagram_options !== "undefined") {
|
||||
mermaidOptions = slides.diagram_options;
|
||||
}
|
||||
|
||||
// `startOnLoad` must be false since diagrams are lazily rendered.
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
outputFormats:
|
||||
Present:
|
||||
mediaType: text/html
|
||||
baseName: index
|
||||
isHTML: true
|
||||
permalinkable: true
|
||||
path: present
|
||||
|
||||
cascade:
|
||||
- _target:
|
||||
path: "/slides/**"
|
||||
kind: "page"
|
||||
outputs:
|
||||
- HTML
|
||||
- Present
|
||||
@@ -1,78 +1,46 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ site.LanguageCode | default "en-us" }}">
|
||||
{{/*
|
||||
Slides Baseof - Landing page chrome only
|
||||
Presentation output lives in baseof.present.html
|
||||
*/}}
|
||||
|
||||
<!doctype html>
|
||||
{{- $language_code := site.LanguageCode | default "en-us" -}}
|
||||
<html lang="{{$language_code}}" {{ if in site.Data.i18n.rtl.rtl $language_code }}dir="rtl"{{else}}dir="ltr"{{end}}
|
||||
data-wc-theme-default="{{ (lower site.Params.hugoblox.theme.mode) | default "system" }}"
|
||||
data-hbb-relurl="{{ "" | relURL }}">
|
||||
|
||||
<head>
|
||||
|
||||
{{/* Asset versions */}}
|
||||
{{ $cdn_url_reveal := "https://cdn.jsdelivr.net/npm/reveal.js@5.0.4" }}
|
||||
{{ $mermaid_version := "9.1.3" }}
|
||||
{{ $mermaid_sri := "sha256-TIYL00Rhw/8WaoUhYTLX9SKIEFdXxg+yMWSLVUbhiLg=" }}
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="generator" content="HugoBlox Kit {{with site.Data.hugoblox.version}}{{.}}{{end}}">
|
||||
|
||||
{{ with site.Home.OutputFormats.Get "WebAppManifest" }}
|
||||
<link rel="manifest" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
<link rel="apple-touch-icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
<title>{{ .Title }} | {{ site.Title }}</title>
|
||||
|
||||
{{/* Load Reveal CSS */}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/reveal.min.css">
|
||||
{{- $theme := $.Param "slides.theme" | default "black" -}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/theme/{{ $theme }}.min.css">
|
||||
|
||||
{{/* Hugo Chroma Syntax Highlighter Initialization */}}
|
||||
{{ $hl_theme := $.Param "slides.highlight_style" | default "dracula" }}
|
||||
{{ $hl_theme_path := printf "css/libs/chroma/%s.css" $hl_theme }}
|
||||
{{ if not (fileExists (printf "assets/%s" $hl_theme_path)) }}
|
||||
{{ errorf "Hugo Chroma themes %s.css not found in `css/libs/chroma/`. See https://gohugo.io/commands/hugo_gen_chromastyles/" $hl_theme }}
|
||||
{{ else }}
|
||||
{{ $hl_theme_css := resources.Get $hl_theme_path | minify }}
|
||||
<link rel="stylesheet" href="{{ $hl_theme_css.RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{/* Load any Reveal CSS customizations */}}
|
||||
{{ $custom_reveal_css := printf "css/reveal_custom.css" }}
|
||||
{{ if (fileExists (printf "assets/%s" $custom_reveal_css)) }}
|
||||
{{ $css_custom := resources.Get "css/reveal_custom.css" }}
|
||||
{{ $style := slice $css_custom | resources.Concat "css/reveal_custom.css" | resources.Minify }}
|
||||
<link rel="stylesheet" href="{{ $style.RelPermalink }}">
|
||||
{{ end }}
|
||||
<title>{{ .Title }} | {{ site.Params.hugoblox.identity.name | default site.Title }}</title>
|
||||
|
||||
{{ partial "site_head" . }}
|
||||
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{ block "main" . }}{{ end }}
|
||||
|
||||
{{/* Load Reveal and built-in plugins. */}}
|
||||
<script src="{{ $cdn_url_reveal }}/dist/reveal.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/markdown/markdown.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/notes/notes.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/search/search.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/math/math.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/zoom/zoom.min.js" crossorigin="anonymous"></script>
|
||||
|
||||
{{/* Load third-party Reveal plugins. */}}
|
||||
{{ if $.Param "slides.reveal_options.menu_enabled" | default true}}
|
||||
<script src="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/plugin.js" integrity="sha256-M6JwAjnRAWmi+sbXURR/yAhWZKYhAw7YXnnLvIxrdGs=" crossorigin="anonymous"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/menu.js" integrity="sha256-l14dklFcW5mWar6w/9KaW0fWVerf3mYr7Wt0+rXzFAA=" crossorigin="anonymous"></script>
|
||||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js-menu@2.1.0/menu.css" integrity="sha256-0fU8HKLaTjgzfaV9CgSqbsN8ilA3zo6zK1M6rlgULd8=" crossorigin="anonymous">
|
||||
{{ end }}
|
||||
|
||||
{{/* Load Mermaid. */}}
|
||||
{{ if $.Param "slides.diagram" | default false}}
|
||||
{{ printf "<script src=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\" title=\"mermaid\"></script>" (printf "https://cdn.jsdelivr.net/npm/mermaid@%s/dist/mermaid.min.js" $mermaid_version) $mermaid_sri | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Initialize slides. */}}
|
||||
{{ $slidejs := resources.Get "js/hugoblox-slides.js" | js.Build (dict "params" (dict "slides" $.Params.slides )) }}
|
||||
<script src="{{ $slidejs.RelPermalink }}"></script>
|
||||
<body class="bg-[var(--color-background)] text-[var(--color-foreground)] page-wrapper" id="top">
|
||||
{{/* Landing page chrome */}}
|
||||
<div id="page-bg"></div>
|
||||
<div class="page-header {{ if site.Params.hugoblox.header.sticky }}sticky top-0 z-30{{ end }}">
|
||||
{{ $show_navbar := ((site.Params.hugoblox.header.enable | default true) | and (ne .Params.header.navbar.enable false)) | or .Params.header.navbar.enable }}
|
||||
{{ if $show_navbar }}
|
||||
{{- $header_config := .Params.header.navbar | default site.Params.hugoblox.header | default dict -}}
|
||||
{{- $block_name := partial "hbx/resolve-block-param" (dict "config" $header_config "context" "header") | default "navbar" -}}
|
||||
{{ $block_path := printf "components/headers/%s.html" $block_name }}
|
||||
{{ if templates.Exists (printf "_partials/%s" $block_path) }}
|
||||
{{ partial $block_path . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
<div class="page-body my-10">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
<div class="page-footer">
|
||||
{{ partial "site_footer" . }}
|
||||
</div>
|
||||
|
||||
{{ partial "notification-container" . }}
|
||||
{{ partial "functions/get_hook" (dict "hook" "body-end" "context" .) }}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,86 @@
|
||||
{{/*
|
||||
Present Baseof - Presentation output only
|
||||
*/}}
|
||||
|
||||
<!doctype html>
|
||||
{{- $language_code := site.LanguageCode | default "en-us" -}}
|
||||
<html lang="{{$language_code}}" {{ if in site.Data.i18n.rtl.rtl $language_code }}dir="rtl"{{else}}dir="ltr"{{end}}>
|
||||
<head>
|
||||
|
||||
{{/* Asset versions */}}
|
||||
{{ $cdn_url_reveal := "https://cdn.jsdelivr.net/npm/reveal.js@5.0.4" }}
|
||||
{{ $mermaid_version := "9.1.3" }}
|
||||
{{ $mermaid_sri := "sha256-TIYL00Rhw/8WaoUhYTLX9SKIEFdXxg+yMWSLVUbhiLg=" }}
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="generator" content="HugoBlox Kit {{with site.Data.hugoblox.version}}{{.}}{{end}}">
|
||||
|
||||
{{ with site.Home.OutputFormats.Get "WebAppManifest" }}
|
||||
<link rel="manifest" href="{{ .RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
<link rel="icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
<link rel="apple-touch-icon" type="image/png" href="{{ "media/icon.png" | relURL }}">
|
||||
|
||||
{{ $landing_url := .Permalink }}
|
||||
{{ with .OutputFormats.Get "HTML" }}
|
||||
{{ $landing_url = .Permalink }}
|
||||
{{ end }}
|
||||
<link rel="canonical" href="{{ $landing_url }}">
|
||||
<meta name="robots" content="noindex, nofollow">
|
||||
|
||||
<title>{{ .Title }} | {{ site.Params.hugoblox.identity.name | default site.Title }}</title>
|
||||
|
||||
{{/* Load Reveal CSS */}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/reveal.min.css">
|
||||
{{- $theme := $.Param "slides.theme" | default "black" -}}
|
||||
<link rel="stylesheet" href="{{ $cdn_url_reveal }}/dist/theme/{{ $theme }}.min.css">
|
||||
|
||||
{{/* Hugo Chroma Syntax Highlighter */}}
|
||||
{{ $hl_theme := $.Param "slides.highlight_style" | default "dracula" }}
|
||||
{{ $hl_theme_path := printf "css/libs/chroma/%s.css" $hl_theme }}
|
||||
{{ if fileExists (printf "assets/%s" $hl_theme_path) }}
|
||||
{{ $hl_theme_css := resources.Get $hl_theme_path | minify }}
|
||||
<link rel="stylesheet" href="{{ $hl_theme_css.RelPermalink }}">
|
||||
{{ end }}
|
||||
|
||||
{{/* Reveal print styles (paper or PDF) */}}
|
||||
<script>
|
||||
(function() {
|
||||
const link = document.createElement("link");
|
||||
link.rel = "stylesheet";
|
||||
link.type = "text/css";
|
||||
const params = new URLSearchParams(window.location.search);
|
||||
const mode = params.has("print-pdf") ? "pdf" : "paper";
|
||||
link.href = "{{ $cdn_url_reveal }}/dist/print/" + mode + ".css";
|
||||
document.head.appendChild(link);
|
||||
})();
|
||||
</script>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
{{ block "main" . }}{{ end }}
|
||||
|
||||
{{/* Load Reveal and plugins */}}
|
||||
<script src="{{ $cdn_url_reveal }}/dist/reveal.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/markdown/markdown.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/notes/notes.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/search/search.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/math/math.min.js" crossorigin="anonymous"></script>
|
||||
<script src="{{ $cdn_url_reveal }}/plugin/zoom/zoom.min.js" crossorigin="anonymous"></script>
|
||||
|
||||
{{/* Load Mermaid if enabled */}}
|
||||
{{ if $.Param "slides.diagram" | default false}}
|
||||
{{ printf "<script src=\"%s\" integrity=\"%s\" crossorigin=\"anonymous\" title=\"mermaid\"></script>" (printf "https://cdn.jsdelivr.net/npm/mermaid@%s/dist/mermaid.min.js" $mermaid_version) $mermaid_sri | safeHTML }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Initialize Reveal */}}
|
||||
{{ $slidejs := resources.Get "js/hugoblox-slides.js" | js.Build (dict "params" (dict "slides" $.Params.slides )) | fingerprint }}
|
||||
<script src="{{ $slidejs.RelPermalink }}"></script>
|
||||
|
||||
{{ partial "functions/get_hook" (dict "hook" "body-end" "context" .) }}
|
||||
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,212 @@
|
||||
{{ define "main" }}
|
||||
|
||||
{{/* Enable Alpine.js for tag filtering */}}
|
||||
{{ .Store.Set "has_alpine" true }}
|
||||
|
||||
{{/* Collect all unique tags from slides */}}
|
||||
{{ $allTags := slice }}
|
||||
{{ $featuredPages := slice }}
|
||||
{{ $regularPages := slice }}
|
||||
{{ $search_placeholder := i18n "slides_search_placeholder" | default "Search decks by title..." }}
|
||||
{{ $all_label := i18n "all" | default "All" }}
|
||||
{{ $no_decks_label := i18n "slides_no_decks" | default "No slide decks found" }}
|
||||
{{ $no_matches_label := i18n "slides_no_matches" | default "No decks match your filters" }}
|
||||
{{ $clear_filters_label := i18n "clear_filters" | default "Clear filters" }}
|
||||
|
||||
{{ range .Pages }}
|
||||
{{ if .Params.tags }}
|
||||
{{ range .Params.tags }}
|
||||
{{ $allTags = $allTags | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ if or .Params.featured .Params.pinned }}
|
||||
{{ $featuredPages = $featuredPages | append . }}
|
||||
{{ else }}
|
||||
{{ $regularPages = $regularPages | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $allTags = $allTags | uniq | sort }}
|
||||
|
||||
{{/* Sort featured by date descending, then regular by date descending */}}
|
||||
{{ $featuredPages = sort $featuredPages ".Date" "desc" }}
|
||||
{{ $regularPages = sort $regularPages ".Date" "desc" }}
|
||||
{{ $sortedPages := $featuredPages | append $regularPages }}
|
||||
|
||||
<div class="container mx-auto px-4 sm:px-6 max-w-6xl py-8" x-data="slidesFilter()">
|
||||
|
||||
{{/* Page Header */}}
|
||||
<div class="mb-8">
|
||||
<h1 class="text-3xl md:text-4xl font-bold text-zinc-900 dark:text-zinc-100 mb-2">{{ .Title }}</h1>
|
||||
{{ with .Content }}
|
||||
<div class="prose prose-zinc dark:prose-invert max-w-none">
|
||||
{{ . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{/* Search and Filter Bar */}}
|
||||
<div class="mb-8 space-y-4">
|
||||
{{/* Search input */}}
|
||||
<div class="relative max-w-md">
|
||||
<input
|
||||
type="text"
|
||||
x-model="searchQuery"
|
||||
@input="filterDecks()"
|
||||
placeholder="{{ $search_placeholder }}"
|
||||
class="w-full pl-10 pr-4 py-2.5 rounded-lg border border-zinc-200 dark:border-zinc-700 bg-white dark:bg-zinc-800 text-zinc-900 dark:text-zinc-100 placeholder-zinc-400 dark:placeholder-zinc-500 focus:outline-none focus:ring-2 focus:ring-primary-500 focus:border-transparent transition-shadow"
|
||||
>
|
||||
<svg class="absolute left-3 top-1/2 -translate-y-1/2 w-5 h-5 text-zinc-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/>
|
||||
</svg>
|
||||
</div>
|
||||
|
||||
{{/* Tag Filter Chips */}}
|
||||
{{ if $allTags }}
|
||||
<div class="flex flex-wrap gap-2">
|
||||
<button
|
||||
@click="setTag('all')"
|
||||
:class="activeTag === 'all' ? 'bg-primary-600 text-white' : 'bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700'"
|
||||
class="px-3 py-1.5 rounded-full text-sm font-medium transition-colors"
|
||||
>
|
||||
{{ $all_label }}
|
||||
</button>
|
||||
{{ range $allTags }}
|
||||
<button
|
||||
@click="setTag({{ . | jsonify }})"
|
||||
:class="activeTag === {{ . | jsonify }} ? 'bg-primary-600 text-white' : 'bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700'"
|
||||
class="px-3 py-1.5 rounded-full text-sm font-medium transition-colors"
|
||||
>
|
||||
{{ . }}
|
||||
</button>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{/* Decks Grid */}}
|
||||
{{ $view := .Params.view | default "slides-gallery" }}
|
||||
{{ $config := dict
|
||||
"columns" (.Params.columns | default 2)
|
||||
"len" (len $sortedPages)
|
||||
"fill_image" (.Params.fill_image | default true)
|
||||
"show_date" (.Params.show_date | default true)
|
||||
}}
|
||||
|
||||
{{ partial "functions/render_view" (dict "fragment" "start" "page" . "item" . "view" $view "config" $config) }}
|
||||
|
||||
{{ range $index, $item := $sortedPages }}
|
||||
{{ $tags := $item.Params.tags | default (slice) }}
|
||||
{{ $tagsJson := $tags | jsonify }}
|
||||
{{ $authorList := slice }}
|
||||
{{ with $item.Params.authors }}
|
||||
{{ if reflect.IsSlice . }}
|
||||
{{ $authorList = . }}
|
||||
{{ else }}
|
||||
{{ $authorList = slice . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $authorNames := slice }}
|
||||
{{ range $authorList }}
|
||||
{{ $profile := partial "functions/get_author_profile" . }}
|
||||
{{ $authorName := . }}
|
||||
{{ if $profile.has_data }}
|
||||
{{ $authorName = $profile.title }}
|
||||
{{ end }}
|
||||
{{ $authorNames = $authorNames | append $authorName }}
|
||||
{{ end }}
|
||||
{{ $searchParts := slice $item.Title }}
|
||||
{{ with $item.Params.venue }}
|
||||
{{ $searchParts = $searchParts | append . }}
|
||||
{{ end }}
|
||||
{{ if gt (len $authorNames) 0 }}
|
||||
{{ $searchParts = $searchParts | append (delimit $authorNames " ") }}
|
||||
{{ end }}
|
||||
{{ if gt (len $tags) 0 }}
|
||||
{{ $searchParts = $searchParts | append (delimit $tags " ") }}
|
||||
{{ end }}
|
||||
{{ $searchText := (delimit $searchParts " ") | lower }}
|
||||
|
||||
<div
|
||||
class="deck-card"
|
||||
data-tags="{{ $tagsJson }}"
|
||||
data-search="{{ $searchText }}"
|
||||
>
|
||||
{{ partial "functions/render_view" (dict "page" $ "item" $item "view" $view "index" $index "config" $config) }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ partial "functions/render_view" (dict "fragment" "end" "page" . "item" . "view" $view) }}
|
||||
|
||||
{{/* Empty state */}}
|
||||
{{ if eq (len $sortedPages) 0 }}
|
||||
<div class="text-center py-12">
|
||||
<svg class="mx-auto h-12 w-12 text-zinc-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
||||
</svg>
|
||||
<p class="mt-4 text-zinc-600 dark:text-zinc-400">{{ $no_decks_label }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* No matches empty state */}}
|
||||
<div
|
||||
x-show="noMatches"
|
||||
x-cloak
|
||||
class="text-center py-12"
|
||||
>
|
||||
<svg class="mx-auto h-12 w-12 text-zinc-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="1.5" d="M9.172 16.172a4 4 0 015.656 0M9 10h.01M15 10h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/>
|
||||
</svg>
|
||||
<p class="mt-4 text-zinc-600 dark:text-zinc-400">{{ $no_matches_label }}</p>
|
||||
<button @click="clearFilters()" class="mt-2 text-primary-600 dark:text-primary-400 hover:underline">
|
||||
{{ $clear_filters_label }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function slidesFilter() {
|
||||
return {
|
||||
activeTag: 'all',
|
||||
searchQuery: '',
|
||||
noMatches: false,
|
||||
|
||||
setTag(tag) {
|
||||
this.activeTag = tag;
|
||||
this.filterDecks();
|
||||
},
|
||||
|
||||
clearFilters() {
|
||||
this.activeTag = 'all';
|
||||
this.searchQuery = '';
|
||||
this.filterDecks();
|
||||
},
|
||||
|
||||
filterDecks() {
|
||||
const cards = document.querySelectorAll('.deck-card');
|
||||
let visibleCount = 0;
|
||||
const query = this.searchQuery.toLowerCase().trim();
|
||||
|
||||
cards.forEach(card => {
|
||||
const tags = JSON.parse(card.dataset.tags || '[]');
|
||||
const searchText = card.dataset.search || '';
|
||||
|
||||
const matchesTag = this.activeTag === 'all' || tags.includes(this.activeTag);
|
||||
const matchesSearch = query === '' || searchText.includes(query);
|
||||
|
||||
if (matchesTag && matchesSearch) {
|
||||
card.style.display = '';
|
||||
visibleCount++;
|
||||
} else {
|
||||
card.style.display = 'none';
|
||||
}
|
||||
});
|
||||
|
||||
this.noMatches = visibleCount === 0 && cards.length > 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
{{ end }}
|
||||
@@ -0,0 +1,14 @@
|
||||
{{/*
|
||||
Presenter Layout - Full-screen Reveal.js presentation
|
||||
Uses parent page's slide content
|
||||
Route: /slides/<deck>/present/
|
||||
*/}}
|
||||
|
||||
{{/* Get parent deck page (the actual slides content) */}}
|
||||
{{ $deckPage := .Parent }}
|
||||
{{ if not $deckPage }}
|
||||
{{ $deckPage = . }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Render using modules/slides presentation layout */}}
|
||||
{{ partial "slides" (union (slice $deckPage) $deckPage.Pages) }}
|
||||
@@ -1,3 +1,335 @@
|
||||
{{/*
|
||||
Smart Slides Single Layout
|
||||
Landing page for slide decks.
|
||||
Presentation output is rendered via the present output format.
|
||||
*/}}
|
||||
|
||||
{{ define "main" }}
|
||||
{{ partial "slides" (union (slice .Page) .Pages) }}
|
||||
|
||||
{{ $present_format := .OutputFormats.Get "present" }}
|
||||
{{ $back_to_slides_label := i18n "back_to_slides" | default "Back to Slides" }}
|
||||
{{ $featured_label := i18n "featured" | default "Featured" }}
|
||||
{{ $slides_label := i18n "slides" | default "Slides" }}
|
||||
{{ $abstract_label := i18n "callout_abstract" | default "Abstract" }}
|
||||
{{ $topics_label := i18n "topics" | default "Topics" }}
|
||||
{{ $related_resources_label := i18n "related_resources" | default "Related Resources" }}
|
||||
{{ $present_fullscreen_label := i18n "present_fullscreen" | default "Present (fullscreen)" }}
|
||||
{{ $copy_link_label := i18n "copy_link" | default "Copy Link" }}
|
||||
{{ $copy_citation_label := i18n "copy_citation" | default "Copy citation" }}
|
||||
{{ $copied_label := i18n "btn_copied" | default "Copied" }}
|
||||
{{ $export_pdf_label := i18n "export_pdf_print" | default "Export PDF (print)" }}
|
||||
{{ $print_hint := i18n "slides_print_hint" | default "Opens in print mode - use browser Print > Save as PDF" }}
|
||||
{{ $how_to_cite_label := i18n "how_to_cite" | default "How to cite" }}
|
||||
{{ $citation_label := i18n "citation" | default "Citation" }}
|
||||
{{ $doi_label := i18n "btn_doi" | default "DOI" }}
|
||||
{{ $bibtex_label := i18n "bibtex" | default "BibTeX" }}
|
||||
{{ $download_cite_bib_label := i18n "download_cite_bib" | default "Download cite.bib" }}
|
||||
{{ $lecture_label := i18n "lecture" | default "Lecture" }}
|
||||
|
||||
{{/* LANDING PAGE CONTENT */}}
|
||||
<div id="deck-landing">
|
||||
|
||||
{{/* Get slide metadata */}}
|
||||
{{ $authors := .Params.authors | default (slice) }}
|
||||
{{ $venue := .Params.venue }}
|
||||
{{ $event := .Params.event }}
|
||||
{{ $course := .Params.course }}
|
||||
{{ $lecture := .Params.lecture_number }}
|
||||
{{ $tags := .Params.tags | default (slice) }}
|
||||
{{ $topics := .Params.topics | default $tags }}
|
||||
{{ $description := .Params.abstract | default .Params.summary | default .Description }}
|
||||
{{ $citation := .Params.citation }}
|
||||
|
||||
{{ $authorNames := slice }}
|
||||
{{ $authorList := slice }}
|
||||
{{ with $authors }}
|
||||
{{ if reflect.IsSlice . }}
|
||||
{{ $authorList = . }}
|
||||
{{ else }}
|
||||
{{ $authorList = slice . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ range $authorList }}
|
||||
{{ $profile := partial "functions/get_author_profile" . }}
|
||||
{{ $authorName := . }}
|
||||
{{ if $profile.has_data }}
|
||||
{{ $authorName = $profile.title }}
|
||||
{{ end }}
|
||||
{{ $authorNames = $authorNames | append $authorName }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Build links using HugoBlox standard structure */}}
|
||||
{{ $builtLinks := partial "functions/build_links.html" (dict "page" . "is_list" false) }}
|
||||
|
||||
{{/* Filter links by type for Related Resources section */}}
|
||||
{{ $resourceLinks := slice }}
|
||||
{{ $citationLinks := slice }}
|
||||
{{ range $builtLinks }}
|
||||
{{ if in (slice "pdf" "preprint" "code" "video" "dataset" "demo" "site") .type }}
|
||||
{{ $resourceLinks = $resourceLinks | append . }}
|
||||
{{ else if in (slice "doi" "bibtex") .type }}
|
||||
{{ $citationLinks = $citationLinks | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{ $citation_copy := "" }}
|
||||
{{ if $citation }}
|
||||
{{ $citation_copy = $citation }}
|
||||
{{ else }}
|
||||
{{ range $citationLinks }}
|
||||
{{ if and (eq $citation_copy "") (eq .type "doi") }}
|
||||
{{ $citation_copy = .url }}
|
||||
{{ else if and (eq $citation_copy "") (eq .type "bibtex") }}
|
||||
{{ $citation_copy = .url }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ $has_citation_copy := ne $citation_copy "" }}
|
||||
|
||||
{{/* Calculate slide count */}}
|
||||
{{ $content := .RawContent }}
|
||||
{{ $slideCount := 1 }}
|
||||
{{ $separators := findRE "(?m)^---$" $content }}
|
||||
{{ if $separators }}
|
||||
{{ $slideCount = add (len $separators) 1 }}
|
||||
{{ if hasPrefix $content "---" }}
|
||||
{{ $slideCount = sub $slideCount 1 }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="container mx-auto px-4 sm:px-6 max-w-5xl py-12" x-data="{ copied: false, showCitation: false, copyText: {{ $copy_link_label | jsonify }}, citationCopied: false, citationCopyText: {{ $copy_citation_label | jsonify }}, citationValue: {{ $citation_copy | jsonify }} }">
|
||||
|
||||
{{/* Back to library link */}}
|
||||
<a href="{{ "/slides/" | relURL }}" class="inline-flex items-center gap-2 text-sm text-zinc-600 dark:text-zinc-400 hover:text-primary-600 dark:hover:text-primary-400 mb-6 transition-colors">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"/>
|
||||
</svg>
|
||||
{{ $back_to_slides_label }}
|
||||
</a>
|
||||
|
||||
{{/* Main content card */}}
|
||||
<div class="bg-white dark:bg-zinc-900 rounded-2xl shadow-lg ring-1 ring-zinc-900/5 dark:ring-white/10 overflow-hidden mb-8">
|
||||
|
||||
{{/* Hero section with gradient */}}
|
||||
<div class="relative px-8 py-12 bg-gradient-to-br from-primary-600 to-primary-800 dark:from-primary-700 dark:to-primary-900 text-white">
|
||||
{{/* Featured badge */}}
|
||||
{{ if or .Params.featured .Params.pinned }}
|
||||
<div class="absolute top-4 right-4 px-3 py-1 rounded-full text-xs font-semibold bg-white/20 backdrop-blur-sm flex items-center gap-1.5">
|
||||
<svg class="w-3 h-3" fill="currentColor" viewBox="0 0 20 20">
|
||||
<path d="M9.049 2.927c.3-.921 1.603-.921 1.902 0l1.07 3.292a1 1 0 00.95.69h3.462c.969 0 1.371 1.24.588 1.81l-2.8 2.034a1 1 0 00-.364 1.118l1.07 3.292c.3.921-.755 1.688-1.54 1.118l-2.8-2.034a1 1 0 00-1.175 0l-2.8 2.034c-.784.57-1.838-.197-1.539-1.118l1.07-3.292a1 1 0 00-.364-1.118L2.98 8.72c-.783-.57-.38-1.81.588-1.81h3.461a1 1 0 00.951-.69l1.07-3.292z"/>
|
||||
</svg>
|
||||
{{ $featured_label }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<h1 class="text-3xl md:text-4xl font-bold mb-4">{{ .Title }}</h1>
|
||||
|
||||
{{/* Meta info */}}
|
||||
<div class="flex flex-wrap items-center gap-x-4 gap-y-2 text-sm text-white/80">
|
||||
{{ if gt (len $authorNames) 0 }}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/>
|
||||
</svg>
|
||||
{{ delimit $authorNames ", " }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with $venue }}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M17.657 16.657L13.414 20.9a1.998 1.998 0 01-2.827 0l-4.244-4.243a8 8 0 1111.314 0z"/>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 11a3 3 0 11-6 0 3 3 0 016 0z"/>
|
||||
</svg>
|
||||
{{ . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with $event }}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 5v2m0 4v2m0 4v2M5 5a2 2 0 00-2 2v3a2 2 0 110 4v3a2 2 0 002 2h14a2 2 0 002-2v-3a2 2 0 110-4V7a2 2 0 00-2-2H5z"/>
|
||||
</svg>
|
||||
{{ . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ if $course }}
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"/>
|
||||
</svg>
|
||||
{{ $course }}{{ with $lecture }} - {{ $lecture_label }} {{ . }}{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
{{ .Date | time.Format "January 2006" }}
|
||||
</div>
|
||||
|
||||
<div class="flex items-center gap-1.5">
|
||||
<svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 17v-2m3 2v-4m3 4v-6m2 10H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
|
||||
</svg>
|
||||
{{ $slideCount }} {{ $slides_label | lower }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{/* Content section */}}
|
||||
<div class="px-8 py-8">
|
||||
{{/* Description/Abstract */}}
|
||||
{{ with $description }}
|
||||
<div class="mb-6">
|
||||
<h2 class="text-lg font-semibold text-zinc-900 dark:text-zinc-100 mb-2">{{ $abstract_label }}</h2>
|
||||
<p class="text-zinc-600 dark:text-zinc-400 leading-relaxed">{{ . }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Topics/Tags */}}
|
||||
{{ if $topics }}
|
||||
<div class="mb-6">
|
||||
<h2 class="text-lg font-semibold text-zinc-900 dark:text-zinc-100 mb-2">{{ $topics_label }}</h2>
|
||||
<div class="flex flex-wrap gap-2">
|
||||
{{ range $topics }}
|
||||
<a href="{{ "/slides/" | relURL }}" class="px-3 py-1 rounded-full text-sm font-medium bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-primary-100 dark:hover:bg-primary-900/40 hover:text-primary-700 dark:hover:text-primary-300 transition-colors">
|
||||
{{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Related Resources - Use HugoBlox standard links */}}
|
||||
{{ if $resourceLinks }}
|
||||
<div class="mb-6">
|
||||
<h2 class="text-lg font-semibold text-zinc-900 dark:text-zinc-100 mb-2">{{ $related_resources_label }}</h2>
|
||||
<div class="flex flex-wrap gap-3">
|
||||
{{ range $resourceLinks }}
|
||||
{{ $linkLabel := .label }}
|
||||
{{ with .labelKey }}
|
||||
{{ $linkLabel = i18n . | default $linkLabel }}
|
||||
{{ end }}
|
||||
{{ $target := "" }}
|
||||
{{ $rel := "" }}
|
||||
{{ $scheme := (urls.Parse .url).Scheme }}
|
||||
{{ if in (slice "http" "https") $scheme }}
|
||||
{{ $target = "_blank" }}
|
||||
{{ $rel = "noopener" }}
|
||||
{{ end }}
|
||||
|
||||
<a href="{{ .url }}" {{ with $target }}target="{{ . }}"{{ end }} {{ with $rel }}rel="{{ . }}"{{ end }} class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors">
|
||||
{{ partial "functions/get_icon" (dict "name" (.icon | default "hero/link") "attributes" "class='w-4 h-4'") }}
|
||||
{{ $linkLabel }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* Share Panel */}}
|
||||
<div class="flex flex-wrap gap-3 pt-6 border-t border-zinc-100 dark:border-zinc-800 mb-6">
|
||||
{{/* Open Presenter */}}
|
||||
{{ with $present_format }}
|
||||
<a href="{{ .RelPermalink }}" target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-6 py-3 rounded-lg bg-primary-600 hover:bg-primary-700 text-white font-semibold transition-colors shadow-lg shadow-primary-500/25 cursor-pointer">
|
||||
<svg class="w-5 h-5" fill="currentColor" viewBox="0 0 24 24">
|
||||
<path d="M8 5v14l11-7z"/>
|
||||
</svg>
|
||||
{{ $present_fullscreen_label }}
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
{{/* Copy Link */}}
|
||||
<button
|
||||
@click="navigator.clipboard.writeText('{{ .Permalink }}'); copied = true; copyText = {{ $copied_label | jsonify }}; setTimeout(() => { copied = false; copyText = {{ $copy_link_label | jsonify }}; }, 2000)"
|
||||
class="inline-flex items-center gap-2 px-4 py-3 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors"
|
||||
>
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" x-show="!copied">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
<svg class="w-5 h-5 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" x-show="copied" x-cloak>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
|
||||
</svg>
|
||||
<span x-text="copyText">{{ $copy_link_label }}</span>
|
||||
</button>
|
||||
|
||||
{{/* Copy Citation */}}
|
||||
{{ if $has_citation_copy }}
|
||||
<button
|
||||
@click="navigator.clipboard.writeText(citationValue); citationCopied = true; citationCopyText = {{ $copied_label | jsonify }}; setTimeout(() => { citationCopied = false; citationCopyText = {{ $copy_citation_label | jsonify }}; }, 2000)"
|
||||
class="inline-flex items-center gap-2 px-4 py-3 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors"
|
||||
>
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24" x-show="!citationCopied">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 16H6a2 2 0 01-2-2V6a2 2 0 012-2h8a2 2 0 012 2v2m-6 12h8a2 2 0 002-2v-8a2 2 0 00-2-2h-8a2 2 0 00-2 2v8a2 2 0 002 2z"/>
|
||||
</svg>
|
||||
<svg class="w-5 h-5 text-green-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" x-show="citationCopied" x-cloak>
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"/>
|
||||
</svg>
|
||||
<span x-text="citationCopyText">{{ $copy_citation_label }}</span>
|
||||
</button>
|
||||
{{ end }}
|
||||
|
||||
{{/* Print PDF */}}
|
||||
{{ with $present_format }}
|
||||
<a href="{{ .RelPermalink }}?print-pdf" target="_blank" rel="noopener" class="inline-flex items-center gap-2 px-4 py-3 rounded-lg bg-zinc-100 dark:bg-zinc-800 text-zinc-700 dark:text-zinc-300 hover:bg-zinc-200 dark:hover:bg-zinc-700 transition-colors" title="{{ $print_hint }}">
|
||||
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/>
|
||||
</svg>
|
||||
{{ $export_pdf_label }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{/* Citation Section - Use HugoBlox standard links + citation field */}}
|
||||
{{ if or $citation $citationLinks }}
|
||||
<div class="pt-6 border-t border-zinc-100 dark:border-zinc-800">
|
||||
<button
|
||||
@click="showCitation = !showCitation"
|
||||
class="flex items-center gap-2 text-sm font-medium text-zinc-600 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-zinc-100 transition-colors"
|
||||
>
|
||||
<svg class="w-4 h-4 transition-transform" :class="showCitation && 'rotate-90'" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
|
||||
</svg>
|
||||
{{ $how_to_cite_label }}
|
||||
</button>
|
||||
<div x-show="showCitation" x-transition class="mt-3 space-y-3">
|
||||
{{ with $citation }}
|
||||
<div>
|
||||
<h4 class="text-xs font-semibold text-zinc-500 dark:text-zinc-400 mb-1">{{ $citation_label }}</h4>
|
||||
<pre class="p-4 bg-zinc-50 dark:bg-zinc-800/50 rounded-lg text-sm text-zinc-700 dark:text-zinc-300 overflow-x-auto"><code>{{ . }}</code></pre>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{/* DOI and BibTeX from standard links structure */}}
|
||||
{{ range $citationLinks }}
|
||||
{{ if eq .type "doi" }}
|
||||
<div>
|
||||
<h4 class="text-xs font-semibold text-zinc-500 dark:text-zinc-400 mb-1">{{ $doi_label }}</h4>
|
||||
<a href="{{ .url }}" target="_blank" rel="noopener" class="text-sm text-primary-600 dark:text-primary-400 hover:underline">
|
||||
{{ .url | replaceRE "^https://doi.org/" "" }}
|
||||
</a>
|
||||
</div>
|
||||
{{ else if eq .type "bibtex" }}
|
||||
<div>
|
||||
<h4 class="text-xs font-semibold text-zinc-500 dark:text-zinc-400 mb-1">{{ $bibtex_label }}</h4>
|
||||
<a href="{{ .url }}" class="text-sm text-primary-600 dark:text-primary-400 hover:underline">
|
||||
{{ $download_cite_bib_label }}
|
||||
</a>
|
||||
</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
@@ -0,0 +1,3 @@
|
||||
{{ define "main" }}
|
||||
{{ partial "slides" (union (slice .Page) .Pages) }}
|
||||
{{ end }}
|
||||
@@ -17,6 +17,16 @@ hasCJKLanguage: false
|
||||
defaultContentLanguageInSubdir: false
|
||||
removePathAccents: true
|
||||
|
||||
############################
|
||||
## PAGE OPTIONS
|
||||
############################
|
||||
|
||||
cascade:
|
||||
- _target:
|
||||
path: /slides/**
|
||||
kind: page
|
||||
outputs: [HTML, present]
|
||||
|
||||
############################
|
||||
## ADVANCED
|
||||
############################
|
||||
|
||||
@@ -3,6 +3,7 @@ title: "Example Talk: Recent Work"
|
||||
date: 2024-01-01
|
||||
# `type: slides` is inferred from folder, but can be set explicitly:
|
||||
type: slides
|
||||
summary: "A quick tour of recent research highlights: multimodal LLMs, efficient training, and responsible AI."
|
||||
slides:
|
||||
theme: black
|
||||
highlight_style: dracula
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"name": "HugoBlox Codespace",
|
||||
"image": "ghcr.io/HugoBlox/hugo-blox-dev:hugo0.154.2",
|
||||
"updateContentCommand": "pnpm install --frozen-lockfile --prefer-offline",
|
||||
"postCreateCommand": "pnpm --version && hugo version",
|
||||
"customizations": {
|
||||
"vscode": {
|
||||
"extensions": [
|
||||
"hugoblox.hugoblox-studio"
|
||||
]
|
||||
}
|
||||
},
|
||||
"mounts": [
|
||||
"source=pnpm-store,target=/home/vscode/.local/share/pnpm,type=volume"
|
||||
],
|
||||
"remoteUser": "vscode",
|
||||
"forwardPorts": [
|
||||
1313
|
||||
],
|
||||
"portsAttributes": {
|
||||
"1313": {
|
||||
"label": "Hugo Server"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
github: gcushen
|
||||
custom: https://hugoblox.com/sponsor/
|
||||
BIN
Binary file not shown.
|
After Width: | Height: | Size: 293 KiB |
@@ -0,0 +1,125 @@
|
||||
name: Deploy website to GitHub Pages
|
||||
|
||||
env:
|
||||
NODE_VERSION: '20'
|
||||
|
||||
on:
|
||||
# Trigger the workflow every time you push to the `main` branch
|
||||
push:
|
||||
branches: ['main']
|
||||
# Allows you to run this workflow manually from the Actions tab on GitHub
|
||||
workflow_dispatch:
|
||||
|
||||
# Provide permission to clone the repo and deploy it to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
concurrency:
|
||||
group: 'pages'
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
# Build website
|
||||
build:
|
||||
if: github.repository_owner != 'HugoBlox'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
# Fetch history for Hugo's .GitInfo and .Lastmod
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Setup Node.js
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: ${{ env.NODE_VERSION }}
|
||||
|
||||
- name: Setup pnpm
|
||||
if: hashFiles('package.json') != ''
|
||||
uses: pnpm/action-setup@v4
|
||||
|
||||
- name: Get Hugo Version
|
||||
id: hugo-version
|
||||
run: |
|
||||
VERSION=$(grep "hugo_version" hugoblox.yaml | awk '{print $2}' | tr -d "'\"")
|
||||
echo "HUGO_VERSION=$VERSION" >> $GITHUB_ENV
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
# Install Tailwind CLI if package.json exists
|
||||
if [ -f "package.json" ]; then
|
||||
echo "Installing Tailwind dependencies..."
|
||||
pnpm install --no-frozen-lockfile || npm install
|
||||
fi
|
||||
|
||||
- name: Setup Hugo
|
||||
uses: peaceiris/actions-hugo@v3
|
||||
with:
|
||||
hugo-version: ${{ env.HUGO_VERSION }}
|
||||
extended: true
|
||||
|
||||
# Cache dependencies (Go modules, node_modules) - stable, rarely changes
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: |
|
||||
/tmp/hugo_cache_runner/
|
||||
node_modules/
|
||||
modules/*/node_modules/
|
||||
key: ${{ runner.os }}-hugo-deps-${{ hashFiles('**/go.mod', '**/package-lock.json',
|
||||
'**/pnpm-lock.yaml') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-hugo-deps-
|
||||
|
||||
# Cache Hugo resources (processed images, CSS) - invalidates only when assets/config change
|
||||
- uses: actions/cache@v4
|
||||
with:
|
||||
path: resources/
|
||||
key: ${{ runner.os }}-hugo-resources-${{ hashFiles('assets/**/*', 'config/**/*',
|
||||
'hugo.yaml', 'package.json') }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-hugo-resources-
|
||||
|
||||
- name: Setup Pages
|
||||
id: pages
|
||||
uses: actions/configure-pages@v5
|
||||
|
||||
- name: Build with Hugo
|
||||
env:
|
||||
HUGO_ENVIRONMENT: production
|
||||
HUGO_BLOX_LICENSE: ${{ secrets.HUGO_BLOX_LICENSE }}
|
||||
run: |
|
||||
echo "Hugo Cache Dir: $(hugo config | grep cachedir)"
|
||||
hugo --minify --baseURL "${{ steps.pages.outputs.base_url }}/"
|
||||
|
||||
- name: Generate Pagefind search index (if applicable)
|
||||
run: |
|
||||
# Check if site uses Pagefind search
|
||||
if [ -f "package.json" ] && grep -q "pagefind" package.json; then
|
||||
pnpm run pagefind || npx pagefind --site "public"
|
||||
fi
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v4
|
||||
with:
|
||||
path: ./public
|
||||
|
||||
# Deploy website to GitHub Pages hosting
|
||||
deploy:
|
||||
if: github.repository_owner != 'HugoBlox'
|
||||
needs: build
|
||||
# Grant GITHUB_TOKEN the permissions required to make a Pages deployment
|
||||
permissions:
|
||||
pages: write # to deploy to Pages
|
||||
id-token: write # to verify the deployment originates from an appropriate source
|
||||
# Deploy to the github-pages environment
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
||||
@@ -0,0 +1,69 @@
|
||||
# ============================================================================
|
||||
# Hugo Site .gitignore
|
||||
# ============================================================================
|
||||
|
||||
# ============================================================================
|
||||
# Hugo Build Artifacts
|
||||
# ============================================================================
|
||||
|
||||
# Generated site output
|
||||
public/
|
||||
|
||||
# Hugo resources (processed assets)
|
||||
resources/
|
||||
|
||||
# Hugo build lock
|
||||
.hugo_build.lock
|
||||
|
||||
# Hugo stats
|
||||
hugo_stats.json
|
||||
|
||||
# Auto-generated JS config
|
||||
**/assets/jsconfig.json
|
||||
|
||||
# ============================================================================
|
||||
# Node.js & Package Managers
|
||||
# ============================================================================
|
||||
|
||||
# Dependencies
|
||||
node_modules/
|
||||
|
||||
# ============================================================================
|
||||
# Environment & Configuration
|
||||
# ============================================================================
|
||||
|
||||
# Environment variables
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
|
||||
# ============================================================================
|
||||
# Generated Content
|
||||
# ============================================================================
|
||||
|
||||
# Pagefind search index
|
||||
pagefind/
|
||||
static/pagefind/
|
||||
|
||||
# ============================================================================
|
||||
# Operating System
|
||||
# ============================================================================
|
||||
|
||||
# macOS
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
|
||||
# Windows
|
||||
Thumbs.db
|
||||
Desktop.ini
|
||||
|
||||
# Linux
|
||||
*~
|
||||
|
||||
# ============================================================================
|
||||
# Logs & Temporary Files
|
||||
# ============================================================================
|
||||
|
||||
*.log
|
||||
npm-debug.log*
|
||||
@@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023-present George Cushen (https://georgecushen.com/)
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
@@ -0,0 +1,128 @@
|
||||
# [Markdown Slides](https://hugoblox.com/templates/markdown-slides/start?utm_source=github&utm_medium=readme)
|
||||
|
||||
[](https://hugoblox.com/templates/markdown-slides/start?utm_source=github&utm_medium=readme)
|
||||
|
||||
<h1 align="center">The Presentation Framework for Researchers</h1>
|
||||
|
||||
<p align="center">
|
||||
<strong>Stop wrestling with PowerPoint.</strong><br/>
|
||||
Write slides in Markdown, version control your talks, and present code & math beautifully.
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://hugoblox.com/templates/markdown-slides/start?utm_source=github&utm_medium=readme"><b>🚀 Deploy in 60s (Free)</b></a>
|
||||
•
|
||||
<a href="https://hugoblox.com/templates/?open=markdown-slides&loading=true&utm_source=github&utm_medium=readme">Live Demo</a>
|
||||
•
|
||||
<a href="https://docs.hugoblox.com/guides/studio/">HugoBlox Studio (Visual Editor)</a>
|
||||
</p>
|
||||
|
||||
|
||||
<p align="center">
|
||||
<b>▶︎ Watch Preview</b>
|
||||
</p>
|
||||
|
||||
<!-- Video placeholder - replace with actual video link when available -->
|
||||
<p align="center">
|
||||
<i>Video coming soon...</i>
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/z8wNYzb"><img src="https://img.shields.io/discord/722225264733716590?label=Join%20Discord&style=social" alt="Discord"></a>
|
||||
<a href="https://github.com/HugoBlox/kit"><img src="https://img.shields.io/github/stars/HugoBlox/kit?label=Star%20HugoBlox&style=social" alt="GitHub Stars"></a>
|
||||
<a href="https://x.com/BuildLore"><img src="https://img.shields.io/twitter/follow/BuildLore?label=Follow&style=social" alt="Follow on X"></a>
|
||||
</p>
|
||||
|
||||
---
|
||||
|
||||
## Why this template?
|
||||
|
||||
Traditional slide software (PowerPoint, Keynote) locks your content in binary files, breaks code formatting, and makes version control a nightmare.
|
||||
|
||||
- **📝 Markdown-first**: Write slides like you write papers. Focus on content, not pixel-perfect alignment.
|
||||
- **⚗️ Research-ready**: Native support for LaTeX math ($E=mc^2$), citations, and rich metadata (venue, DOI, authors).
|
||||
- **💻 Code-native**: Beautiful syntax highlighting for 100+ languages without screenshots.
|
||||
- **🎓 Deck Landing Pages**: Every presentation gets a dedicated searchable landing page with abstract and download links.
|
||||
- **🚀 Present Anywhere**: Browser-based presenter mode (Reveal.js) with speaker notes, timer, and offline support.
|
||||
|
||||
---
|
||||
|
||||
## Who it’s for
|
||||
|
||||
- **Academics** presenting at conferences (share a URL, not a USB drive).
|
||||
- **Data Scientists** explaining complex analyses with real code snippets.
|
||||
- **Lecturers** creating course materials that students can actually search, read, and fork.
|
||||
- **Developers** who prefer their IDE over a GUI presentation tool.
|
||||
|
||||
---
|
||||
|
||||
## What you get (Free)
|
||||
|
||||
- **Professional Presenter Mode**: Speaker notes, timer, and next-slide preview.
|
||||
- **Rich Metadata**: Associate events, co-authors, and related links with each deck.
|
||||
- **PDF Export**: One-click printable version for handouts.
|
||||
- **Mermaid Diagrams**: Draw flowcharts and sequence diagrams in text.
|
||||
- **Theming**: Light, dark, and custom themes included.
|
||||
- **Mobile Optimized**: Responsive gallery and slide viewer.
|
||||
|
||||
---
|
||||
|
||||
## Get started (recommended)
|
||||
|
||||
### Option 1 — Online deployer (fastest)
|
||||
|
||||
Deploy this template in ~60 seconds:
|
||||
|
||||
- [Deploy in browser →](https://hugoblox.com/templates/markdown-slides/start?utm_source=github&utm_medium=readme)
|
||||
|
||||
### Option 2 — HugoBlox Studio (visual editor in VS Code)
|
||||
|
||||
- [Studio guide →](https://docs.hugoblox.com/guides/studio/?utm_source=github&utm_medium=readme)
|
||||
- [Studio AI automation plans (Free/Plus/Pro) →](https://hugoblox.com/pricing/?utm_source=github&utm_medium=readme)
|
||||
|
||||
### Option 3 — HugoBlox CLI (developer workflow)
|
||||
|
||||
Install:
|
||||
|
||||
```bash
|
||||
npm install -g hugoblox@latest
|
||||
```
|
||||
|
||||
Create a site:
|
||||
|
||||
```bash
|
||||
hugoblox create site --template markdown-slides
|
||||
```
|
||||
|
||||
[CLI docs →](https://docs.hugoblox.com/start/cli/?utm_source=github&utm_medium=readme)
|
||||
|
||||
---
|
||||
|
||||
## Customize in 10 minutes
|
||||
|
||||
- **Create a deck**: `content/slides/my-talk/index.md`
|
||||
- **Slide syntax**: Use `---` to separate slides.
|
||||
- **Speaker notes**: Use `Note:` at the end of a slide.
|
||||
- **Theme**: Set `slides.theme: black` (or white, league, night, etc.) in frontmatter.
|
||||
- **Site Identity**: `config/_default/params.yaml`
|
||||
|
||||
---
|
||||
|
||||
## Want the Pro version? 💎
|
||||
|
||||
If you want a version that feels meaningfully more premium (and helps fund open source + research):
|
||||
|
||||
- [Premium templates →](https://hugoblox.com/templates/?utm_source=github&utm_medium=readme)
|
||||
- [HugoBlox Pro / Studio →](https://hugoblox.com/pricing?utm_source=github&utm_medium=readme)
|
||||
|
||||
---
|
||||
|
||||
## Community & support
|
||||
|
||||
- **Docs**: [docs.hugoblox.com →](https://docs.hugoblox.com/?utm_source=github&utm_medium=readme)
|
||||
- **Discord**: [Join Discord →](https://discord.gg/z8wNYzb)
|
||||
- **Issues**: [Open an issue →](https://github.com/HugoBlox/kit/issues)
|
||||
|
||||
---
|
||||
|
||||
MIT © 2016–Present [George Cushen](https://neuralgeo.com/?utm_source=github&utm_medium=readme)
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 125 KiB |
@@ -0,0 +1,6 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
|
||||
<rect x="2" y="3" width="20" height="14" rx="2" ry="2"/>
|
||||
<line x1="8" y1="21" x2="16" y2="21"/>
|
||||
<line x1="12" y1="17" x2="12" y2="21"/>
|
||||
<polygon points="10 9 15 12 10 15 10 9" fill="currentColor"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 372 B |
@@ -0,0 +1,62 @@
|
||||
# Configuration of Hugo
|
||||
# Documentation: https://gohugo.io/getting-started/configuration/
|
||||
|
||||
# Website name (set in params.yaml under hugoblox.identity.name)
|
||||
title: ''
|
||||
# Website URL
|
||||
baseURL: 'https://example.com/'
|
||||
|
||||
############################
|
||||
## LANGUAGE
|
||||
############################
|
||||
|
||||
defaultContentLanguage: en
|
||||
hasCJKLanguage: false
|
||||
removePathAccents: true
|
||||
|
||||
############################
|
||||
## ADVANCED
|
||||
############################
|
||||
|
||||
build:
|
||||
writeStats: true
|
||||
enableGitInfo: false
|
||||
summaryLength: 30
|
||||
pagination:
|
||||
pagerSize: 12
|
||||
enableEmoji: true
|
||||
enableRobotsTXT: true
|
||||
footnotereturnlinkcontents: <sup>^</sup>
|
||||
disableAliases: true
|
||||
outputs:
|
||||
home: [HTML, RSS, headers, redirects]
|
||||
section: [HTML, RSS]
|
||||
page: [HTML]
|
||||
outputFormats:
|
||||
HTML:
|
||||
baseName: index
|
||||
present:
|
||||
baseName: index
|
||||
isHTML: true
|
||||
mediaType: text/html
|
||||
permalinkable: true
|
||||
path: present
|
||||
rel: alternate
|
||||
|
||||
permalinks:
|
||||
slides: /slides/:contentbasename/
|
||||
imaging:
|
||||
resampleFilter: lanczos
|
||||
quality: 90
|
||||
anchor: smart
|
||||
timeout: 600000
|
||||
taxonomies:
|
||||
tag: tags
|
||||
markup:
|
||||
_merge: deep
|
||||
highlight:
|
||||
lineNos: false
|
||||
security:
|
||||
_merge: deep
|
||||
sitemap:
|
||||
_merge: deep
|
||||
@@ -0,0 +1,10 @@
|
||||
# Navigation Links
|
||||
# Simple navigation for a slides-focused site
|
||||
|
||||
main:
|
||||
- name: Home
|
||||
url: /
|
||||
weight: 10
|
||||
- name: Browse Decks
|
||||
url: /slides/
|
||||
weight: 20
|
||||
@@ -0,0 +1,10 @@
|
||||
############################
|
||||
## HUGO MODULES
|
||||
## Install or uninstall themes and plugins here.
|
||||
## Docs: https://gohugo.io/hugo-modules/
|
||||
############################
|
||||
|
||||
imports:
|
||||
- path: github.com/HugoBlox/kit/modules/integrations/netlify
|
||||
- path: github.com/HugoBlox/kit/modules/blox
|
||||
- path: github.com/HugoBlox/kit/modules/slides
|
||||
@@ -0,0 +1,131 @@
|
||||
# ══════════════════════════════════════════════════════════════════════════════
|
||||
# MARKDOWN SLIDES - HUGO BLOX CONFIGURATION
|
||||
# A minimal template for hosting and sharing slide decks
|
||||
# Documentation: https://docs.hugoblox.com/
|
||||
# ══════════════════════════════════════════════════════════════════════════════
|
||||
hugoblox:
|
||||
schema: "2.0"
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# IDENTITY
|
||||
# Customize your slide deck site branding
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
identity:
|
||||
name: "My Slides"
|
||||
organization: ""
|
||||
type: person # person | organization
|
||||
tagline: "Open-source slide decks"
|
||||
description: "Markdown-based slide presentations. Write in Markdown, present anywhere, share with anyone."
|
||||
social:
|
||||
twitter: "" # Twitter/X handle for social cards
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# THEME
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
theme:
|
||||
mode: system # light | dark | system
|
||||
pack: "default"
|
||||
colors:
|
||||
primary: ""
|
||||
secondary: ""
|
||||
neutral: ""
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# TYPOGRAPHY
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
typography:
|
||||
font: "sans" # sans | serif | native
|
||||
size: "md" # sm | md | lg | xl
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# LAYOUT
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
layout:
|
||||
radius: "md"
|
||||
spacing: "comfortable"
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# HEADER
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
header:
|
||||
enable: true
|
||||
style: navbar-simple # Clean, minimal navbar
|
||||
sticky: true
|
||||
align: center
|
||||
search: true # Enable search for larger deck collections
|
||||
theme_toggle: true
|
||||
theme_picker: false
|
||||
language_switcher: false
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# FOOTER
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
footer:
|
||||
style: minimal
|
||||
language_switcher: false
|
||||
text: ""
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# COPYRIGHT
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
copyright:
|
||||
notice: "© {year} {name}"
|
||||
license:
|
||||
type: cc
|
||||
allow_derivatives: true
|
||||
share_alike: true
|
||||
allow_commercial: false
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# CONTENT
|
||||
# Math is enabled by default for technical presentations
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
content:
|
||||
math:
|
||||
enable: true # Enable LaTeX math for technical decks
|
||||
toc:
|
||||
enable: false # Not needed for slides
|
||||
reading_time:
|
||||
enable: false # Not relevant for slides
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# SEARCH
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
search:
|
||||
enable: true
|
||||
suggestions: []
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# COMMENTS - Disabled by default
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
comments:
|
||||
enable: false
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# ANALYTICS - Add your tracking IDs
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
analytics:
|
||||
google:
|
||||
measurement_id: ""
|
||||
plausible:
|
||||
domain: ""
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# LOCALE
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
locale:
|
||||
date_format: "Jan 2, 2006"
|
||||
time_format: "3:04 PM"
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# SECURITY - Allow slides to be embedded in iframes
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
security:
|
||||
frame_options: sameorigin
|
||||
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
# PRO
|
||||
# ────────────────────────────────────────────────────────────────────────────
|
||||
pro:
|
||||
hide_attribution: false
|
||||
affiliate_code: ""
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: ''
|
||||
summary: ''
|
||||
date: 2025-01-01
|
||||
type: landing
|
||||
|
||||
design:
|
||||
spacing: '4rem'
|
||||
|
||||
sections:
|
||||
# Hero Section
|
||||
- block: hero
|
||||
content:
|
||||
title: Markdown Slides
|
||||
text: |-
|
||||
**Open-source slide decks.**
|
||||
Write in Markdown, present anywhere, share with anyone.
|
||||
primary_action:
|
||||
text: Browse Decks
|
||||
url: '/slides/'
|
||||
icon: play
|
||||
secondary_action:
|
||||
text: Create Your Own
|
||||
url: https://hugoblox.com/templates/markdown-slides/start?utm_source=hugoblox&utm_medium=demo
|
||||
design:
|
||||
spacing:
|
||||
padding: ['5rem', '0', '4rem', '0']
|
||||
css_class: 'dark:bg-zinc-900'
|
||||
|
||||
- block: features
|
||||
content:
|
||||
title: Why Markdown Slides
|
||||
text: 'Best for: lab meetings, course lectures, paper reading groups, and startup demos.'
|
||||
items:
|
||||
- name: Version-controlled research
|
||||
description: Write decks like code, track diffs, and cite stable versions.
|
||||
icon: hero/code-bracket
|
||||
- name: Research-native media
|
||||
description: Math, citations, syntax highlighting, and diagrams out of the box.
|
||||
icon: hero/document-text
|
||||
- name: Future-proof format
|
||||
description: Most future-proof format - Markdown is LLM-native for human-first, AI-assisted workflows.
|
||||
icon: hero/bolt
|
||||
|
||||
# Featured Decks Row
|
||||
- block: collection
|
||||
id: decks
|
||||
content:
|
||||
title: Featured Decks
|
||||
text: ''
|
||||
filters:
|
||||
folders:
|
||||
- slides
|
||||
featured_only: true
|
||||
sort_by: Date
|
||||
sort_ascending: false
|
||||
count: 3
|
||||
design:
|
||||
view: slides-gallery
|
||||
columns: 2
|
||||
|
||||
- block: collection
|
||||
id: recent
|
||||
content:
|
||||
title: Recent Decks
|
||||
text: ''
|
||||
filters:
|
||||
folders:
|
||||
- slides
|
||||
exclude_featured: true
|
||||
sort_by: Date
|
||||
sort_ascending: false
|
||||
count: 0
|
||||
design:
|
||||
view: slides-gallery
|
||||
columns: 2
|
||||
---
|
||||
@@ -0,0 +1,12 @@
|
||||
---
|
||||
title: All Slide Decks
|
||||
description: Browse all available slide presentations
|
||||
view: slides-gallery
|
||||
columns: 2
|
||||
cascade:
|
||||
outputs:
|
||||
- HTML
|
||||
- present
|
||||
---
|
||||
|
||||
Browse all slide decks below. Click any deck to start the presentation.
|
||||
@@ -0,0 +1,166 @@
|
||||
---
|
||||
title: "Markdown Slides Demo"
|
||||
date: 2025-12-15
|
||||
description: "A comprehensive demo of all Reveal.js features available in Hugo Blox"
|
||||
authors: ["me", "Hugo Blox Team"]
|
||||
tags: ["demo", "tutorial", "features"]
|
||||
venue: "Hugo Blox Tutorial"
|
||||
featured: true
|
||||
type: slides
|
||||
slides:
|
||||
theme: black
|
||||
highlight_style: dracula
|
||||
diagram: true
|
||||
reveal_options:
|
||||
controls: true
|
||||
progress: true
|
||||
slideNumber: true
|
||||
hash: true
|
||||
---
|
||||
|
||||
# Markdown Slides
|
||||
|
||||
### Write in Markdown. Present Anywhere.
|
||||
|
||||
---
|
||||
|
||||
## What You Can Do
|
||||
|
||||
- Write slides in **pure Markdown**
|
||||
- Include **code**, **math**, and **diagrams**
|
||||
- Add **speaker notes** for presenter view
|
||||
- Use **progressive reveals** for storytelling
|
||||
- Customize **themes** and **transitions**
|
||||
|
||||
---
|
||||
|
||||
## Code Highlighting
|
||||
|
||||
```python
|
||||
def fibonacci(n: int) -> int:
|
||||
if n <= 1:
|
||||
return n
|
||||
return fibonacci(n-1) + fibonacci(n-2)
|
||||
|
||||
# Calculate the 10th Fibonacci number
|
||||
print(fibonacci(10)) # Output: 55
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Mathematical Equations
|
||||
|
||||
Einstein's famous equation:
|
||||
|
||||
$$E = mc^2$$
|
||||
|
||||
The quadratic formula:
|
||||
|
||||
$$x = \frac{-b \pm \sqrt{b^2-4ac}}{2a}$$
|
||||
|
||||
---
|
||||
|
||||
## Mermaid Diagrams
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Markdown] --> B[Hugo]
|
||||
B --> C[Reveal.js]
|
||||
C --> D[Beautiful Slides]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Progressive Reveals
|
||||
|
||||
Build your narrative step by step:
|
||||
|
||||
{{< fragment >}}First, introduce the concept{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}Then, add supporting details{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}Finally, deliver the conclusion{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Speaker Notes
|
||||
|
||||
Press **S** to open presenter view!
|
||||
|
||||
Note:
|
||||
- These notes are only visible in presenter mode
|
||||
- Perfect for talking points and reminders
|
||||
- Supports **Markdown** formatting
|
||||
- Add timing cues and references here
|
||||
|
||||
---
|
||||
|
||||
## Dual Column Layout
|
||||
|
||||
<div class="r-hstack">
|
||||
|
||||
<div style="flex: 1; padding-right: 1rem;">
|
||||
|
||||
### Benefits
|
||||
|
||||
- Open source
|
||||
- Version control
|
||||
- No vendor lock-in
|
||||
- Works offline
|
||||
|
||||
</div>
|
||||
|
||||
<div style="flex: 1; padding-left: 1rem;">
|
||||
|
||||
### Use Cases
|
||||
|
||||
- Tech talks
|
||||
- Academic papers
|
||||
- Team updates
|
||||
- Training sessions
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
{{< slide background-color="#1e3a8a" >}}
|
||||
|
||||
## Custom Backgrounds
|
||||
|
||||
Slides can have **custom colors** or images.
|
||||
|
||||
Use `{{</* slide background-color="#hex" */>}}`
|
||||
|
||||
---
|
||||
|
||||
## Keyboard Shortcuts
|
||||
|
||||
| Key | Action |
|
||||
|-----|--------|
|
||||
| `→` / `←` | Navigate slides |
|
||||
| `S` | Speaker notes |
|
||||
| `F` | Fullscreen |
|
||||
| `O` | Overview mode |
|
||||
| `ESC` | Exit modes |
|
||||
|
||||
---
|
||||
|
||||
## Get Started
|
||||
|
||||
1. Create a file in `content/slides/`
|
||||
2. Add front matter with `type: slides`
|
||||
3. Write your content in Markdown
|
||||
4. Separate slides with `---`
|
||||
|
||||
---
|
||||
|
||||
## Thank You!
|
||||
|
||||
**Questions?**
|
||||
|
||||
- GitHub: [HugoBlox/kit](https://github.com/HugoBlox/kit)
|
||||
- Docs: [docs.hugoblox.com](https://docs.hugoblox.com)
|
||||
|
||||
*Built with Markdown Slides*
|
||||
@@ -0,0 +1,189 @@
|
||||
---
|
||||
title: "Introduction to Hugo & Static Sites"
|
||||
date: 2025-12-20
|
||||
description: "Learn how static site generators like Hugo revolutionize web development"
|
||||
authors: ["me", "Hugo Blox Team"]
|
||||
tags: ["hugo", "web-development", "tutorial"]
|
||||
topics: ["static-sites", "hugo", "jamstack"]
|
||||
course: "CS 101: Web Development"
|
||||
lecture_number: 5
|
||||
type: slides
|
||||
|
||||
# HugoBlox standard links structure
|
||||
links:
|
||||
- type: video
|
||||
url: "https://youtube.com/watch?v=example"
|
||||
icon: hero/video-camera
|
||||
|
||||
slides:
|
||||
theme: white
|
||||
highlight_style: github-light
|
||||
diagram: true
|
||||
reveal_options:
|
||||
controls: true
|
||||
progress: true
|
||||
slideNumber: true
|
||||
hash: true
|
||||
---
|
||||
|
||||
# Static Site Generators
|
||||
|
||||
### The Modern Way to Build Websites
|
||||
|
||||
---
|
||||
|
||||
## The Problem with Traditional CMS
|
||||
|
||||
- **Security vulnerabilities** from databases
|
||||
- **Slow performance** due to server-side rendering
|
||||
- **Complex hosting** requirements
|
||||
- **Expensive scaling** for traffic spikes
|
||||
|
||||
---
|
||||
|
||||
## Enter Static Sites
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Markdown Files] --> B[Static Generator]
|
||||
B --> C[HTML/CSS/JS]
|
||||
C --> D[CDN]
|
||||
D --> E[Users]
|
||||
```
|
||||
|
||||
No database. No server. Just files.
|
||||
|
||||
---
|
||||
|
||||
## Why Hugo?
|
||||
|
||||
| Feature | Hugo | Jekyll | Next.js |
|
||||
|---------|------|--------|---------|
|
||||
| Build Speed | ⚡ ~1ms/page | ~100ms/page | ~50ms/page |
|
||||
| Language | Go | Ruby | JavaScript |
|
||||
| Templates | Go HTML | Liquid | React |
|
||||
| Learning | Moderate | Easy | Complex |
|
||||
|
||||
---
|
||||
|
||||
## Hugo Architecture
|
||||
|
||||
```go
|
||||
// Basic Hugo project structure
|
||||
mysite/
|
||||
├── config.yaml // Site configuration
|
||||
├── content/ // Your Markdown content
|
||||
├── layouts/ // HTML templates
|
||||
├── static/ // Images, CSS, JS
|
||||
└── themes/ // Reusable themes
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Content Organization
|
||||
|
||||
```markdown
|
||||
---
|
||||
title: "My Blog Post"
|
||||
date: 2025-01-01
|
||||
tags: ["hugo", "tutorial"]
|
||||
---
|
||||
|
||||
Your content goes here in **Markdown**.
|
||||
```
|
||||
|
||||
{{< fragment >}}Simple. Clean. Version-controlled.{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Template System
|
||||
|
||||
```html
|
||||
{{ range .Pages }}
|
||||
<article>
|
||||
<h2>{{ .Title }}</h2>
|
||||
<p>{{ .Summary }}</p>
|
||||
<a href="{{ .Permalink }}">Read more</a>
|
||||
</article>
|
||||
{{ end }}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Build Performance
|
||||
|
||||
Hugo builds **thousands of pages in seconds**:
|
||||
|
||||
{{< fragment >}}📄 10 pages → 50ms{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}📄 1,000 pages → 500ms{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}📄 10,000 pages → 5 seconds{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}**The fastest static site generator!**{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Deployment Options
|
||||
|
||||
- **Netlify** - Git-based deploys
|
||||
- **Vercel** - Edge functions
|
||||
- **Cloudflare Pages** - Global CDN
|
||||
- **GitHub Pages** - Free hosting
|
||||
- **AWS S3** - Scalable storage
|
||||
|
||||
---
|
||||
|
||||
## When to Use Hugo
|
||||
|
||||
✅ Documentation sites
|
||||
|
||||
✅ Blogs and portfolios
|
||||
|
||||
✅ Marketing landing pages
|
||||
|
||||
✅ Conference websites
|
||||
|
||||
✅ **Slide presentations!**
|
||||
|
||||
---
|
||||
|
||||
## Getting Started
|
||||
|
||||
```bash
|
||||
# Install Hugo
|
||||
brew install hugo
|
||||
|
||||
# Create a new site
|
||||
hugo new site mysite
|
||||
|
||||
# Add content
|
||||
hugo new posts/hello-world.md
|
||||
|
||||
# Start dev server
|
||||
hugo server -D
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Resources
|
||||
|
||||
- **Documentation**: [gohugo.io/documentation](https://gohugo.io/documentation/)
|
||||
- **Themes**: [themes.gohugo.io](https://themes.gohugo.io/)
|
||||
- **Community**: [discourse.gohugo.io](https://discourse.gohugo.io/)
|
||||
- **Hugo Blox**: [hugoblox.com](https://hugoblox.com)
|
||||
|
||||
---
|
||||
|
||||
## Thank You!
|
||||
|
||||
### Questions?
|
||||
|
||||
**Start building faster websites today** 🚀
|
||||
|
||||
Note:
|
||||
Key takeaways:
|
||||
1. Static sites are more secure, faster, and cheaper
|
||||
2. Hugo is the fastest static site generator
|
||||
3. Perfect for content-focused websites
|
||||
4. Easy to deploy on any CDN
|
||||
@@ -0,0 +1,252 @@
|
||||
---
|
||||
title: "Machine Learning Research Overview"
|
||||
date: 2025-12-25
|
||||
description: "A research presentation on recent advances in deep learning and neural networks"
|
||||
authors: ["me", "Dr. Example Researcher"]
|
||||
tags: ["machine-learning", "research", "data-science"]
|
||||
topics: ["deep-learning", "transformers", "neural-networks"]
|
||||
venue: "ICML 2025"
|
||||
event: "International Conference on Machine Learning"
|
||||
citation: "Researcher, E., Smith, J., & Doe, J. (2025). Machine Learning Research Overview. ICML 2025."
|
||||
type: slides
|
||||
|
||||
# HugoBlox standard links structure
|
||||
links:
|
||||
- type: preprint
|
||||
url: "https://arxiv.org/abs/example"
|
||||
icon: hero/document-text
|
||||
- type: code
|
||||
url: "https://github.com/example/ml-research"
|
||||
icon: hero/code-bracket
|
||||
|
||||
# HugoBlox standard identifiers - auto-generates DOI link
|
||||
hugoblox:
|
||||
ids:
|
||||
doi: "10.1234/example.doi"
|
||||
|
||||
slides:
|
||||
theme: black
|
||||
highlight_style: dracula
|
||||
diagram: true
|
||||
reveal_options:
|
||||
controls: true
|
||||
progress: true
|
||||
slideNumber: true
|
||||
hash: true
|
||||
---
|
||||
|
||||
# Machine Learning
|
||||
## Research Overview 2025
|
||||
|
||||
Dr. Example Researcher
|
||||
|
||||
---
|
||||
|
||||
## Agenda
|
||||
|
||||
1. Background & Motivation
|
||||
2. Neural Network Fundamentals
|
||||
3. Transformer Architecture
|
||||
4. Experimental Results
|
||||
5. Future Directions
|
||||
|
||||
---
|
||||
|
||||
## The Deep Learning Revolution
|
||||
|
||||
```mermaid
|
||||
graph TD
|
||||
A[Traditional ML] --> B[Deep Learning]
|
||||
B --> C[Computer Vision]
|
||||
B --> D[NLP]
|
||||
B --> E[Reinforcement Learning]
|
||||
C --> F[Multimodal AI]
|
||||
D --> F
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Neural Network Basics
|
||||
|
||||
A neuron computes:
|
||||
|
||||
$$y = f\left(\sum_{i=1}^{n} w_i x_i + b\right)$$
|
||||
|
||||
Where:
|
||||
- $x_i$ = inputs
|
||||
- $w_i$ = weights
|
||||
- $b$ = bias
|
||||
- $f$ = activation function
|
||||
|
||||
---
|
||||
|
||||
## Activation Functions
|
||||
|
||||
**ReLU (Rectified Linear Unit):**
|
||||
|
||||
$$f(x) = \max(0, x)$$
|
||||
|
||||
**Sigmoid:**
|
||||
|
||||
$$\sigma(x) = \frac{1}{1 + e^{-x}}$$
|
||||
|
||||
**Softmax:**
|
||||
|
||||
$$\text{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}}$$
|
||||
|
||||
---
|
||||
|
||||
## Transformer Architecture
|
||||
|
||||
{{< fragment >}}**Self-Attention Mechanism:**{{< /fragment >}}
|
||||
|
||||
{{< fragment >}}$$\text{Attention}(Q, K, V) = \text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V$${{< /fragment >}}
|
||||
|
||||
{{< fragment >}}Enables parallel processing of sequences{{< /fragment >}}
|
||||
|
||||
Note:
|
||||
- Q = Query matrix
|
||||
- K = Key matrix
|
||||
- V = Value matrix
|
||||
- d_k = dimension of keys
|
||||
|
||||
---
|
||||
|
||||
## Model Architecture
|
||||
|
||||
```python
|
||||
class TransformerBlock(nn.Module):
|
||||
def __init__(self, d_model, n_heads):
|
||||
super().__init__()
|
||||
self.attention = MultiHeadAttention(d_model, n_heads)
|
||||
self.ffn = FeedForward(d_model)
|
||||
self.norm1 = LayerNorm(d_model)
|
||||
self.norm2 = LayerNorm(d_model)
|
||||
|
||||
def forward(self, x):
|
||||
x = x + self.attention(self.norm1(x))
|
||||
x = x + self.ffn(self.norm2(x))
|
||||
return x
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Experimental Setup
|
||||
|
||||
<div class="r-hstack">
|
||||
|
||||
<div style="flex: 1; padding-right: 1rem;">
|
||||
|
||||
### Dataset
|
||||
|
||||
- **Size**: 1M samples
|
||||
- **Split**: 80/10/10
|
||||
- **Preprocessing**: Tokenization, normalization
|
||||
|
||||
</div>
|
||||
|
||||
<div style="flex: 1; padding-left: 1rem;">
|
||||
|
||||
### Training
|
||||
|
||||
- **Optimizer**: AdamW
|
||||
- **Learning rate**: 3e-4
|
||||
- **Batch size**: 256
|
||||
- **Epochs**: 100
|
||||
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Results
|
||||
|
||||
| Model | Accuracy | F1 Score | Latency |
|
||||
|-------|----------|----------|---------|
|
||||
| Baseline | 82.3% | 0.81 | 45ms |
|
||||
| Ours (small) | 89.7% | 0.88 | 38ms |
|
||||
| **Ours (large)** | **94.2%** | **0.93** | 52ms |
|
||||
|
||||
{{< fragment >}}**+11.9% improvement over baseline**{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Ablation Study
|
||||
|
||||
| Component | Accuracy Drop |
|
||||
|-----------|---------------|
|
||||
| w/o Attention | -8.3% |
|
||||
| w/o FFN | -4.1% |
|
||||
| w/o LayerNorm | -2.7% |
|
||||
| w/o Residual | -6.5% |
|
||||
|
||||
{{< fragment >}}Self-attention is the most critical component{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Loss Curve
|
||||
|
||||
The training converged smoothly:
|
||||
|
||||
$$\mathcal{L} = -\sum_{i=1}^{N} y_i \log(\hat{y}_i)$$
|
||||
|
||||
{{< fragment >}}Cross-entropy loss with label smoothing (α=0.1){{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
{{< slide background-color="#1a365d" >}}
|
||||
|
||||
## Key Findings
|
||||
|
||||
1. **Scaling matters**: Larger models = better results
|
||||
2. **Attention is critical**: Core to performance
|
||||
3. **Efficiency trade-offs**: Accuracy vs. latency
|
||||
4. **Transfer learning**: Pre-training helps
|
||||
|
||||
---
|
||||
|
||||
## Limitations
|
||||
|
||||
- Computational requirements
|
||||
- Data dependency
|
||||
- Interpretability challenges
|
||||
- Environmental impact
|
||||
|
||||
{{< fragment >}}Future work should address these concerns{{< /fragment >}}
|
||||
|
||||
---
|
||||
|
||||
## Future Directions
|
||||
|
||||
```mermaid
|
||||
graph LR
|
||||
A[Current Work] --> B[Efficient Transformers]
|
||||
A --> C[Multimodal Learning]
|
||||
A --> D[Explainable AI]
|
||||
B --> E[Real-world Deployment]
|
||||
C --> E
|
||||
D --> E
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## References
|
||||
|
||||
1. Vaswani et al. (2017). *Attention is All You Need*
|
||||
2. Brown et al. (2020). *Language Models are Few-Shot Learners*
|
||||
3. Dosovitskiy et al. (2021). *An Image is Worth 16x16 Words*
|
||||
|
||||
---
|
||||
|
||||
## Thank You
|
||||
|
||||
### Questions?
|
||||
|
||||
📧 researcher@example.edu
|
||||
|
||||
📄 Full paper: [arxiv.org/abs/example](https://arxiv.org)
|
||||
|
||||
Note:
|
||||
Contact information and resources for follow-up questions.
|
||||
Open for collaboration on future research directions.
|
||||
@@ -0,0 +1,116 @@
|
||||
schema: hugoblox/author/v1
|
||||
slug: me
|
||||
is_owner: true
|
||||
name:
|
||||
display: Dr. Alex Johnson
|
||||
given: Alex
|
||||
family: Johnson
|
||||
alternate: '' # Example: 王伟
|
||||
pronunciation: '' # Example: Wáng Wěi
|
||||
pronouns: he/him
|
||||
postnominals:
|
||||
- PhD
|
||||
- MIEEE
|
||||
status:
|
||||
icon: "☕️"
|
||||
role: Senior AI Research Scientist
|
||||
bio: |
|
||||
Alex Johnson is a Senior AI Research Scientist at Meta AI. His research
|
||||
has been published in top conferences like NeurIPS and ICML, with over
|
||||
10,000 citations. Alex is passionate about pushing the boundaries of AI
|
||||
while ensuring ethical development.
|
||||
|
||||
affiliations:
|
||||
- name: Meta AI
|
||||
url: https://ai.meta.com/
|
||||
|
||||
links:
|
||||
- icon: at-symbol
|
||||
url: mailto:alex.johnson@example.com
|
||||
label: E-mail Me
|
||||
- icon: brands/x
|
||||
url: https://x.com/example
|
||||
- icon: brands/github
|
||||
url: https://github.com/example
|
||||
- icon: brands/linkedin
|
||||
url: https://www.linkedin.com/in/example/
|
||||
- icon: academicons/google-scholar
|
||||
url: https://scholar.google.com/citations?user=example
|
||||
- icon: academicons/orcid
|
||||
url: https://orcid.org/0000-0002-1825-0097
|
||||
|
||||
interests:
|
||||
- Large Language Models
|
||||
- Computer Vision
|
||||
- Reinforcement Learning
|
||||
- AI Ethics
|
||||
|
||||
education:
|
||||
- degree: PhD Computer Science
|
||||
institution: Stanford University
|
||||
start: 2015-09-01
|
||||
end: 2019-06-30
|
||||
summary: |
|
||||
Thesis on scaling laws for neural language models. Published 5 papers in NeurIPS and ICML.
|
||||
button:
|
||||
text: Download dissertation
|
||||
url: /resume.pdf
|
||||
icon: hero/arrow-down-tray
|
||||
- degree: MS Computer Science
|
||||
institution: Carnegie Mellon University
|
||||
start: 2013-09-01
|
||||
end: 2015-05-31
|
||||
- degree: BS Computer Science
|
||||
institution: MIT
|
||||
start: 2009-09-01
|
||||
end: 2013-05-31
|
||||
|
||||
experience:
|
||||
- role: Senior AI Research Scientist
|
||||
org: Meta AI
|
||||
start: 2020-01-01
|
||||
summary: |
|
||||
Leading research on multimodal AI systems. Contributed to Llama 2 and other open-source models.
|
||||
button:
|
||||
text: View portfolio
|
||||
url: /
|
||||
icon: hero/arrow-down-tray
|
||||
- role: AI Research Intern
|
||||
org: OpenAI
|
||||
start: 2019-06-01
|
||||
end: 2019-12-31
|
||||
summary: |
|
||||
Worked on GPT-3 scaling. Co-authored paper on prompt engineering.
|
||||
|
||||
skills:
|
||||
- name: Technical Skills
|
||||
items:
|
||||
- label: Python
|
||||
level: 5
|
||||
- label: Machine Learning
|
||||
level: 5
|
||||
- label: Cloud Computing
|
||||
level: 4
|
||||
- name: Research & Communication
|
||||
items:
|
||||
- label: Academic Writing
|
||||
level: 5
|
||||
- label: Conference Presentations
|
||||
level: 4
|
||||
- label: Grant Proposals
|
||||
level: 4
|
||||
|
||||
languages:
|
||||
- name: English
|
||||
level: 5
|
||||
label: Native
|
||||
- name: Spanish
|
||||
level: 4
|
||||
label: Fluent
|
||||
|
||||
awards:
|
||||
- title: Best Paper Award
|
||||
awarder: NeurIPS
|
||||
date: "2022-12-01"
|
||||
summary: Awarded for groundbreaking work on efficient training of large models.
|
||||
icon: hero/trophy
|
||||
@@ -0,0 +1,9 @@
|
||||
module github.com/HugoBlox/kit/templates/markdown-slides
|
||||
|
||||
go 1.19
|
||||
|
||||
require (
|
||||
github.com/HugoBlox/kit/modules/integrations/netlify v0.0.0-20260102210655-66cba27dc652
|
||||
github.com/HugoBlox/kit/modules/blox v0.0.0-20260105203838-3526fb1ca1e5
|
||||
github.com/HugoBlox/kit/modules/slides v0.0.0-20260102220738-ad2af1f3521d
|
||||
)
|
||||
@@ -0,0 +1,6 @@
|
||||
build:
|
||||
hugo_version: '0.154.2'
|
||||
template:
|
||||
id: "markdown-slides"
|
||||
name: "Markdown Slides"
|
||||
description: "A minimal template for hosting and sharing Markdown-based slide decks"
|
||||
@@ -0,0 +1,49 @@
|
||||
[build]
|
||||
command = """
|
||||
set -e
|
||||
echo "=== Starting Markdown Slides build process ==="
|
||||
echo "Node version: $(node --version)"
|
||||
echo "pnpm version: $(pnpm --version)"
|
||||
echo "Hugo version: $(hugo version)"
|
||||
|
||||
echo "=== Installing dependencies ==="
|
||||
pnpm install --no-frozen-lockfile
|
||||
|
||||
echo "=== Running Hugo build ==="
|
||||
hugo --gc --minify -b $URL
|
||||
|
||||
echo "=== Running Pagefind indexing ==="
|
||||
pnpm run pagefind
|
||||
|
||||
echo "=== Build completed successfully ==="
|
||||
"""
|
||||
publish = "public"
|
||||
|
||||
[build.environment]
|
||||
HUGO_VERSION = "0.154.2"
|
||||
GO_VERSION = "1.21.5"
|
||||
NODE_VERSION = "22"
|
||||
PNPM_FLAGS = "--no-frozen-lockfile"
|
||||
HUGO_ENABLEGITINFO = "true"
|
||||
|
||||
[context.production.environment]
|
||||
HUGO_ENV = "production"
|
||||
|
||||
[context.deploy-preview]
|
||||
command = """
|
||||
set -e
|
||||
pnpm install --no-frozen-lockfile
|
||||
hugo --gc --minify --buildFuture -b $DEPLOY_PRIME_URL
|
||||
pnpm run pagefind
|
||||
"""
|
||||
|
||||
[context.branch-deploy]
|
||||
command = """
|
||||
set -e
|
||||
pnpm install --no-frozen-lockfile
|
||||
hugo --gc --minify -b $DEPLOY_PRIME_URL
|
||||
pnpm run pagefind
|
||||
"""
|
||||
|
||||
[[plugins]]
|
||||
package = "netlify-plugin-hugo-cache-resources"
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"name": "hugo-blox-markdown-slides-starter",
|
||||
"version": "1.0.0",
|
||||
"private": true,
|
||||
"packageManager": "pnpm@10.14.0",
|
||||
"description": "Markdown Slides template - host and share slide decks built with Hugo Blox",
|
||||
"scripts": {
|
||||
"dev": "hugo server --disableFastRender",
|
||||
"build": "hugo --minify && pnpm run pagefind",
|
||||
"pagefind": "pagefind --site public"
|
||||
},
|
||||
"dependencies": {
|
||||
"@tailwindcss/cli": "^4.1.12",
|
||||
"@tailwindcss/typography": "^0.5.10",
|
||||
"pagefind": "^1.4.0",
|
||||
"preact": "^10.27.2",
|
||||
"tailwindcss": "^4.1.12"
|
||||
}
|
||||
}
|
||||
Generated
+714
@@ -0,0 +1,714 @@
|
||||
lockfileVersion: '9.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
|
||||
.:
|
||||
dependencies:
|
||||
'@tailwindcss/cli':
|
||||
specifier: ^4.1.12
|
||||
version: 4.1.18
|
||||
'@tailwindcss/typography':
|
||||
specifier: ^0.5.10
|
||||
version: 0.5.19(tailwindcss@4.1.18)
|
||||
pagefind:
|
||||
specifier: ^1.4.0
|
||||
version: 1.4.0
|
||||
preact:
|
||||
specifier: ^10.27.2
|
||||
version: 10.28.1
|
||||
tailwindcss:
|
||||
specifier: ^4.1.12
|
||||
version: 4.1.18
|
||||
|
||||
packages:
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.13':
|
||||
resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==}
|
||||
|
||||
'@jridgewell/remapping@2.3.5':
|
||||
resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==}
|
||||
|
||||
'@jridgewell/resolve-uri@3.1.2':
|
||||
resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==}
|
||||
engines: {node: '>=6.0.0'}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.5':
|
||||
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.31':
|
||||
resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==}
|
||||
|
||||
'@pagefind/darwin-arm64@1.4.0':
|
||||
resolution: {integrity: sha512-2vMqkbv3lbx1Awea90gTaBsvpzgRs7MuSgKDxW0m9oV1GPZCZbZBJg/qL83GIUEN2BFlY46dtUZi54pwH+/pTQ==}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@pagefind/darwin-x64@1.4.0':
|
||||
resolution: {integrity: sha512-e7JPIS6L9/cJfow+/IAqknsGqEPjJnVXGjpGm25bnq+NPdoD3c/7fAwr1OXkG4Ocjx6ZGSCijXEV4ryMcH2E3A==}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@pagefind/freebsd-x64@1.4.0':
|
||||
resolution: {integrity: sha512-WcJVypXSZ+9HpiqZjFXMUobfFfZZ6NzIYtkhQ9eOhZrQpeY5uQFqNWLCk7w9RkMUwBv1HAMDW3YJQl/8OqsV0Q==}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@pagefind/linux-arm64@1.4.0':
|
||||
resolution: {integrity: sha512-PIt8dkqt4W06KGmQjONw7EZbhDF+uXI7i0XtRLN1vjCUxM9vGPdtJc2mUyVPevjomrGz5M86M8bqTr6cgDp1Uw==}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@pagefind/linux-x64@1.4.0':
|
||||
resolution: {integrity: sha512-z4oddcWwQ0UHrTHR8psLnVlz6USGJ/eOlDPTDYZ4cI8TK8PgwRUPQZp9D2iJPNIPcS6Qx/E4TebjuGJOyK8Mmg==}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@pagefind/windows-x64@1.4.0':
|
||||
resolution: {integrity: sha512-NkT+YAdgS2FPCn8mIA9bQhiBs+xmniMGq1LFPDhcFn0+2yIUEiIG06t7bsZlhdjknEQRTSdT7YitP6fC5qwP0g==}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher-android-arm64@2.5.1':
|
||||
resolution: {integrity: sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@parcel/watcher-darwin-arm64@2.5.1':
|
||||
resolution: {integrity: sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@parcel/watcher-darwin-x64@2.5.1':
|
||||
resolution: {integrity: sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@parcel/watcher-freebsd-x64@2.5.1':
|
||||
resolution: {integrity: sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@parcel/watcher-linux-arm-glibc@2.5.1':
|
||||
resolution: {integrity: sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-linux-arm-musl@2.5.1':
|
||||
resolution: {integrity: sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-linux-arm64-glibc@2.5.1':
|
||||
resolution: {integrity: sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-linux-arm64-musl@2.5.1':
|
||||
resolution: {integrity: sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-linux-x64-glibc@2.5.1':
|
||||
resolution: {integrity: sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-linux-x64-musl@2.5.1':
|
||||
resolution: {integrity: sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@parcel/watcher-win32-arm64@2.5.1':
|
||||
resolution: {integrity: sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher-win32-ia32@2.5.1':
|
||||
resolution: {integrity: sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [ia32]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher-win32-x64@2.5.1':
|
||||
resolution: {integrity: sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@parcel/watcher@2.5.1':
|
||||
resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==}
|
||||
engines: {node: '>= 10.0.0'}
|
||||
|
||||
'@tailwindcss/cli@4.1.18':
|
||||
resolution: {integrity: sha512-sMZ+lZbDyxwjD2E0L7oRUjJ01Ffjtme5OtjvvnC+cV4CEDcbqzbp25TCpxHj6kWLU9+DlqJOiNgSOgctC2aZmg==}
|
||||
hasBin: true
|
||||
|
||||
'@tailwindcss/node@4.1.18':
|
||||
resolution: {integrity: sha512-DoR7U1P7iYhw16qJ49fgXUlry1t4CpXeErJHnQ44JgTSKMaZUdf17cfn5mHchfJ4KRBZRFA/Coo+MUF5+gOaCQ==}
|
||||
|
||||
'@tailwindcss/oxide-android-arm64@4.1.18':
|
||||
resolution: {integrity: sha512-dJHz7+Ugr9U/diKJA0W6N/6/cjI+ZTAoxPf9Iz9BFRF2GzEX8IvXxFIi/dZBloVJX/MZGvRuFA9rqwdiIEZQ0Q==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
'@tailwindcss/oxide-darwin-arm64@4.1.18':
|
||||
resolution: {integrity: sha512-Gc2q4Qhs660bhjyBSKgq6BYvwDz4G+BuyJ5H1xfhmDR3D8HnHCmT/BSkvSL0vQLy/nkMLY20PQ2OoYMO15Jd0A==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
'@tailwindcss/oxide-darwin-x64@4.1.18':
|
||||
resolution: {integrity: sha512-FL5oxr2xQsFrc3X9o1fjHKBYBMD1QZNyc1Xzw/h5Qu4XnEBi3dZn96HcHm41c/euGV+GRiXFfh2hUCyKi/e+yw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
'@tailwindcss/oxide-freebsd-x64@4.1.18':
|
||||
resolution: {integrity: sha512-Fj+RHgu5bDodmV1dM9yAxlfJwkkWvLiRjbhuO2LEtwtlYlBgiAT4x/j5wQr1tC3SANAgD+0YcmWVrj8R9trVMA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
|
||||
resolution: {integrity: sha512-Fp+Wzk/Ws4dZn+LV2Nqx3IilnhH51YZoRaYHQsVq3RQvEl+71VGKFpkfHrLM/Li+kt5c0DJe/bHXK1eHgDmdiA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
|
||||
resolution: {integrity: sha512-S0n3jboLysNbh55Vrt7pk9wgpyTTPD0fdQeh7wQfMqLPM/Hrxi+dVsLsPrycQjGKEQk85Kgbx+6+QnYNiHalnw==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
|
||||
resolution: {integrity: sha512-1px92582HkPQlaaCkdRcio71p8bc8i/ap5807tPRDK/uw953cauQBT8c5tVGkOwrHMfc2Yh6UuxaH4vtTjGvHg==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
|
||||
resolution: {integrity: sha512-v3gyT0ivkfBLoZGF9LyHmts0Isc8jHZyVcbzio6Wpzifg/+5ZJpDiRiUhDLkcr7f/r38SWNe7ucxmGW3j3Kb/g==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
|
||||
resolution: {integrity: sha512-bhJ2y2OQNlcRwwgOAGMY0xTFStt4/wyU6pvI6LSuZpRgKQwxTec0/3Scu91O8ir7qCR3AuepQKLU/kX99FouqQ==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
|
||||
resolution: {integrity: sha512-LffYTvPjODiP6PT16oNeUQJzNVyJl1cjIebq/rWWBF+3eDst5JGEFSc5cWxyRCJ0Mxl+KyIkqRxk1XPEs9x8TA==}
|
||||
engines: {node: '>=14.0.0'}
|
||||
cpu: [wasm32]
|
||||
bundledDependencies:
|
||||
- '@napi-rs/wasm-runtime'
|
||||
- '@emnapi/core'
|
||||
- '@emnapi/runtime'
|
||||
- '@tybys/wasm-util'
|
||||
- '@emnapi/wasi-threads'
|
||||
- tslib
|
||||
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
|
||||
resolution: {integrity: sha512-HjSA7mr9HmC8fu6bdsZvZ+dhjyGCLdotjVOgLA2vEqxEBZaQo9YTX4kwgEvPCpRh8o4uWc4J/wEoFzhEmjvPbA==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.1.18':
|
||||
resolution: {integrity: sha512-bJWbyYpUlqamC8dpR7pfjA0I7vdF6t5VpUGMWRkXVE3AXgIZjYUYAK7II1GNaxR8J1SSrSrppRar8G++JekE3Q==}
|
||||
engines: {node: '>= 10'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
'@tailwindcss/oxide@4.1.18':
|
||||
resolution: {integrity: sha512-EgCR5tTS5bUSKQgzeMClT6iCY3ToqE1y+ZB0AKldj809QXk1Y+3jB0upOYZrn9aGIzPtUsP7sX4QQ4XtjBB95A==}
|
||||
engines: {node: '>= 10'}
|
||||
|
||||
'@tailwindcss/typography@0.5.19':
|
||||
resolution: {integrity: sha512-w31dd8HOx3k9vPtcQh5QHP9GwKcgbMp87j58qi6xgiBnFFtKEAgCWnDw4qUT8aHwkCp8bKvb/KGKWWHedP0AAg==}
|
||||
peerDependencies:
|
||||
tailwindcss: '>=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1'
|
||||
|
||||
braces@3.0.3:
|
||||
resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
cssesc@3.0.0:
|
||||
resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==}
|
||||
engines: {node: '>=4'}
|
||||
hasBin: true
|
||||
|
||||
detect-libc@1.0.3:
|
||||
resolution: {integrity: sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==}
|
||||
engines: {node: '>=0.10'}
|
||||
hasBin: true
|
||||
|
||||
detect-libc@2.1.2:
|
||||
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
enhanced-resolve@5.18.4:
|
||||
resolution: {integrity: sha512-LgQMM4WXU3QI+SYgEc2liRgznaD5ojbmY3sb8LxyguVkIg5FxdpTkvk72te2R38/TGKxH634oLxXRGY6d7AP+Q==}
|
||||
engines: {node: '>=10.13.0'}
|
||||
|
||||
fill-range@7.1.1:
|
||||
resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
|
||||
engines: {node: '>=8'}
|
||||
|
||||
graceful-fs@4.2.11:
|
||||
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
|
||||
|
||||
is-extglob@2.1.1:
|
||||
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
is-glob@4.0.3:
|
||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
is-number@7.0.0:
|
||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||
engines: {node: '>=0.12.0'}
|
||||
|
||||
jiti@2.6.1:
|
||||
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
|
||||
hasBin: true
|
||||
|
||||
lightningcss-android-arm64@1.30.2:
|
||||
resolution: {integrity: sha512-BH9sEdOCahSgmkVhBLeU7Hc9DWeZ1Eb6wNS6Da8igvUwAe0sqROHddIlvU06q3WyXVEOYDZ6ykBZQnjTbmo4+A==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [android]
|
||||
|
||||
lightningcss-darwin-arm64@1.30.2:
|
||||
resolution: {integrity: sha512-ylTcDJBN3Hp21TdhRT5zBOIi73P6/W0qwvlFEk22fkdXchtNTOU4Qc37SkzV+EKYxLouZ6M4LG9NfZ1qkhhBWA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [darwin]
|
||||
|
||||
lightningcss-darwin-x64@1.30.2:
|
||||
resolution: {integrity: sha512-oBZgKchomuDYxr7ilwLcyms6BCyLn0z8J0+ZZmfpjwg9fRVZIR5/GMXd7r9RH94iDhld3UmSjBM6nXWM2TfZTQ==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [darwin]
|
||||
|
||||
lightningcss-freebsd-x64@1.30.2:
|
||||
resolution: {integrity: sha512-c2bH6xTrf4BDpK8MoGG4Bd6zAMZDAXS569UxCAGcA7IKbHNMlhGQ89eRmvpIUGfKWNVdbhSbkQaWhEoMGmGslA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [freebsd]
|
||||
|
||||
lightningcss-linux-arm-gnueabihf@1.30.2:
|
||||
resolution: {integrity: sha512-eVdpxh4wYcm0PofJIZVuYuLiqBIakQ9uFZmipf6LF/HRj5Bgm0eb3qL/mr1smyXIS1twwOxNWndd8z0E374hiA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm]
|
||||
os: [linux]
|
||||
|
||||
lightningcss-linux-arm64-gnu@1.30.2:
|
||||
resolution: {integrity: sha512-UK65WJAbwIJbiBFXpxrbTNArtfuznvxAJw4Q2ZGlU8kPeDIWEX1dg3rn2veBVUylA2Ezg89ktszWbaQnxD/e3A==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
lightningcss-linux-arm64-musl@1.30.2:
|
||||
resolution: {integrity: sha512-5Vh9dGeblpTxWHpOx8iauV02popZDsCYMPIgiuw97OJ5uaDsL86cnqSFs5LZkG3ghHoX5isLgWzMs+eD1YzrnA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [linux]
|
||||
|
||||
lightningcss-linux-x64-gnu@1.30.2:
|
||||
resolution: {integrity: sha512-Cfd46gdmj1vQ+lR6VRTTadNHu6ALuw2pKR9lYq4FnhvgBc4zWY1EtZcAc6EffShbb1MFrIPfLDXD6Xprbnni4w==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
lightningcss-linux-x64-musl@1.30.2:
|
||||
resolution: {integrity: sha512-XJaLUUFXb6/QG2lGIW6aIk6jKdtjtcffUT0NKvIqhSBY3hh9Ch+1LCeH80dR9q9LBjG3ewbDjnumefsLsP6aiA==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [linux]
|
||||
|
||||
lightningcss-win32-arm64-msvc@1.30.2:
|
||||
resolution: {integrity: sha512-FZn+vaj7zLv//D/192WFFVA0RgHawIcHqLX9xuWiQt7P0PtdFEVaxgF9rjM/IRYHQXNnk61/H/gb2Ei+kUQ4xQ==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [arm64]
|
||||
os: [win32]
|
||||
|
||||
lightningcss-win32-x64-msvc@1.30.2:
|
||||
resolution: {integrity: sha512-5g1yc73p+iAkid5phb4oVFMB45417DkRevRbt/El/gKXJk4jid+vPFF/AXbxn05Aky8PapwzZrdJShv5C0avjw==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
cpu: [x64]
|
||||
os: [win32]
|
||||
|
||||
lightningcss@1.30.2:
|
||||
resolution: {integrity: sha512-utfs7Pr5uJyyvDETitgsaqSyjCb2qNRAtuqUeWIAKztsOYdcACf2KtARYXg2pSvhkt+9NfoaNY7fxjl6nuMjIQ==}
|
||||
engines: {node: '>= 12.0.0'}
|
||||
|
||||
magic-string@0.30.21:
|
||||
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
|
||||
|
||||
micromatch@4.0.8:
|
||||
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
mri@1.2.0:
|
||||
resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
node-addon-api@7.1.1:
|
||||
resolution: {integrity: sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==}
|
||||
|
||||
pagefind@1.4.0:
|
||||
resolution: {integrity: sha512-z2kY1mQlL4J8q5EIsQkLzQjilovKzfNVhX8De6oyE6uHpfFtyBaqUpcl/XzJC/4fjD8vBDyh1zolimIcVrCn9g==}
|
||||
hasBin: true
|
||||
|
||||
picocolors@1.1.1:
|
||||
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||
|
||||
picomatch@2.3.1:
|
||||
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
|
||||
engines: {node: '>=8.6'}
|
||||
|
||||
postcss-selector-parser@6.0.10:
|
||||
resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
|
||||
engines: {node: '>=4'}
|
||||
|
||||
preact@10.28.1:
|
||||
resolution: {integrity: sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==}
|
||||
|
||||
source-map-js@1.2.1:
|
||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||
engines: {node: '>=0.10.0'}
|
||||
|
||||
tailwindcss@4.1.18:
|
||||
resolution: {integrity: sha512-4+Z+0yiYyEtUVCScyfHCxOYP06L5Ne+JiHhY2IjR2KWMIWhJOYZKLSGZaP5HkZ8+bY0cxfzwDE5uOmzFXyIwxw==}
|
||||
|
||||
tapable@2.3.0:
|
||||
resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==}
|
||||
engines: {node: '>=6'}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
|
||||
engines: {node: '>=8.0'}
|
||||
|
||||
util-deprecate@1.0.2:
|
||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
||||
|
||||
snapshots:
|
||||
|
||||
'@jridgewell/gen-mapping@0.3.13':
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.5.5
|
||||
'@jridgewell/trace-mapping': 0.3.31
|
||||
|
||||
'@jridgewell/remapping@2.3.5':
|
||||
dependencies:
|
||||
'@jridgewell/gen-mapping': 0.3.13
|
||||
'@jridgewell/trace-mapping': 0.3.31
|
||||
|
||||
'@jridgewell/resolve-uri@3.1.2': {}
|
||||
|
||||
'@jridgewell/sourcemap-codec@1.5.5': {}
|
||||
|
||||
'@jridgewell/trace-mapping@0.3.31':
|
||||
dependencies:
|
||||
'@jridgewell/resolve-uri': 3.1.2
|
||||
'@jridgewell/sourcemap-codec': 1.5.5
|
||||
|
||||
'@pagefind/darwin-arm64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@pagefind/darwin-x64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@pagefind/freebsd-x64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@pagefind/linux-arm64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@pagefind/linux-x64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@pagefind/windows-x64@1.4.0':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-android-arm64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-darwin-arm64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-darwin-x64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-freebsd-x64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-arm-glibc@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-arm-musl@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-arm64-glibc@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-arm64-musl@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-x64-glibc@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-linux-x64-musl@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-win32-arm64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-win32-ia32@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher-win32-x64@2.5.1':
|
||||
optional: true
|
||||
|
||||
'@parcel/watcher@2.5.1':
|
||||
dependencies:
|
||||
detect-libc: 1.0.3
|
||||
is-glob: 4.0.3
|
||||
micromatch: 4.0.8
|
||||
node-addon-api: 7.1.1
|
||||
optionalDependencies:
|
||||
'@parcel/watcher-android-arm64': 2.5.1
|
||||
'@parcel/watcher-darwin-arm64': 2.5.1
|
||||
'@parcel/watcher-darwin-x64': 2.5.1
|
||||
'@parcel/watcher-freebsd-x64': 2.5.1
|
||||
'@parcel/watcher-linux-arm-glibc': 2.5.1
|
||||
'@parcel/watcher-linux-arm-musl': 2.5.1
|
||||
'@parcel/watcher-linux-arm64-glibc': 2.5.1
|
||||
'@parcel/watcher-linux-arm64-musl': 2.5.1
|
||||
'@parcel/watcher-linux-x64-glibc': 2.5.1
|
||||
'@parcel/watcher-linux-x64-musl': 2.5.1
|
||||
'@parcel/watcher-win32-arm64': 2.5.1
|
||||
'@parcel/watcher-win32-ia32': 2.5.1
|
||||
'@parcel/watcher-win32-x64': 2.5.1
|
||||
|
||||
'@tailwindcss/cli@4.1.18':
|
||||
dependencies:
|
||||
'@parcel/watcher': 2.5.1
|
||||
'@tailwindcss/node': 4.1.18
|
||||
'@tailwindcss/oxide': 4.1.18
|
||||
enhanced-resolve: 5.18.4
|
||||
mri: 1.2.0
|
||||
picocolors: 1.1.1
|
||||
tailwindcss: 4.1.18
|
||||
|
||||
'@tailwindcss/node@4.1.18':
|
||||
dependencies:
|
||||
'@jridgewell/remapping': 2.3.5
|
||||
enhanced-resolve: 5.18.4
|
||||
jiti: 2.6.1
|
||||
lightningcss: 1.30.2
|
||||
magic-string: 0.30.21
|
||||
source-map-js: 1.2.1
|
||||
tailwindcss: 4.1.18
|
||||
|
||||
'@tailwindcss/oxide-android-arm64@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-darwin-arm64@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-darwin-x64@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-freebsd-x64@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-gnu@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-arm64-musl@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-gnu@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-linux-x64-musl@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-wasm32-wasi@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-win32-arm64-msvc@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide-win32-x64-msvc@4.1.18':
|
||||
optional: true
|
||||
|
||||
'@tailwindcss/oxide@4.1.18':
|
||||
optionalDependencies:
|
||||
'@tailwindcss/oxide-android-arm64': 4.1.18
|
||||
'@tailwindcss/oxide-darwin-arm64': 4.1.18
|
||||
'@tailwindcss/oxide-darwin-x64': 4.1.18
|
||||
'@tailwindcss/oxide-freebsd-x64': 4.1.18
|
||||
'@tailwindcss/oxide-linux-arm-gnueabihf': 4.1.18
|
||||
'@tailwindcss/oxide-linux-arm64-gnu': 4.1.18
|
||||
'@tailwindcss/oxide-linux-arm64-musl': 4.1.18
|
||||
'@tailwindcss/oxide-linux-x64-gnu': 4.1.18
|
||||
'@tailwindcss/oxide-linux-x64-musl': 4.1.18
|
||||
'@tailwindcss/oxide-wasm32-wasi': 4.1.18
|
||||
'@tailwindcss/oxide-win32-arm64-msvc': 4.1.18
|
||||
'@tailwindcss/oxide-win32-x64-msvc': 4.1.18
|
||||
|
||||
'@tailwindcss/typography@0.5.19(tailwindcss@4.1.18)':
|
||||
dependencies:
|
||||
postcss-selector-parser: 6.0.10
|
||||
tailwindcss: 4.1.18
|
||||
|
||||
braces@3.0.3:
|
||||
dependencies:
|
||||
fill-range: 7.1.1
|
||||
|
||||
cssesc@3.0.0: {}
|
||||
|
||||
detect-libc@1.0.3: {}
|
||||
|
||||
detect-libc@2.1.2: {}
|
||||
|
||||
enhanced-resolve@5.18.4:
|
||||
dependencies:
|
||||
graceful-fs: 4.2.11
|
||||
tapable: 2.3.0
|
||||
|
||||
fill-range@7.1.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
graceful-fs@4.2.11: {}
|
||||
|
||||
is-extglob@2.1.1: {}
|
||||
|
||||
is-glob@4.0.3:
|
||||
dependencies:
|
||||
is-extglob: 2.1.1
|
||||
|
||||
is-number@7.0.0: {}
|
||||
|
||||
jiti@2.6.1: {}
|
||||
|
||||
lightningcss-android-arm64@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-darwin-arm64@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-darwin-x64@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-freebsd-x64@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-linux-arm-gnueabihf@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-linux-arm64-gnu@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-linux-arm64-musl@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-linux-x64-gnu@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-linux-x64-musl@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-win32-arm64-msvc@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss-win32-x64-msvc@1.30.2:
|
||||
optional: true
|
||||
|
||||
lightningcss@1.30.2:
|
||||
dependencies:
|
||||
detect-libc: 2.1.2
|
||||
optionalDependencies:
|
||||
lightningcss-android-arm64: 1.30.2
|
||||
lightningcss-darwin-arm64: 1.30.2
|
||||
lightningcss-darwin-x64: 1.30.2
|
||||
lightningcss-freebsd-x64: 1.30.2
|
||||
lightningcss-linux-arm-gnueabihf: 1.30.2
|
||||
lightningcss-linux-arm64-gnu: 1.30.2
|
||||
lightningcss-linux-arm64-musl: 1.30.2
|
||||
lightningcss-linux-x64-gnu: 1.30.2
|
||||
lightningcss-linux-x64-musl: 1.30.2
|
||||
lightningcss-win32-arm64-msvc: 1.30.2
|
||||
lightningcss-win32-x64-msvc: 1.30.2
|
||||
|
||||
magic-string@0.30.21:
|
||||
dependencies:
|
||||
'@jridgewell/sourcemap-codec': 1.5.5
|
||||
|
||||
micromatch@4.0.8:
|
||||
dependencies:
|
||||
braces: 3.0.3
|
||||
picomatch: 2.3.1
|
||||
|
||||
mri@1.2.0: {}
|
||||
|
||||
node-addon-api@7.1.1: {}
|
||||
|
||||
pagefind@1.4.0:
|
||||
optionalDependencies:
|
||||
'@pagefind/darwin-arm64': 1.4.0
|
||||
'@pagefind/darwin-x64': 1.4.0
|
||||
'@pagefind/freebsd-x64': 1.4.0
|
||||
'@pagefind/linux-arm64': 1.4.0
|
||||
'@pagefind/linux-x64': 1.4.0
|
||||
'@pagefind/windows-x64': 1.4.0
|
||||
|
||||
picocolors@1.1.1: {}
|
||||
|
||||
picomatch@2.3.1: {}
|
||||
|
||||
postcss-selector-parser@6.0.10:
|
||||
dependencies:
|
||||
cssesc: 3.0.0
|
||||
util-deprecate: 1.0.2
|
||||
|
||||
preact@10.28.1: {}
|
||||
|
||||
source-map-js@1.2.1: {}
|
||||
|
||||
tailwindcss@4.1.18: {}
|
||||
|
||||
tapable@2.3.0: {}
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
util-deprecate@1.0.2: {}
|
||||
Reference in new issue
Block a user