jekyll-theme-zer0 1.27.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (142) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +812 -13
  3. data/_data/backlog.yml +356 -2
  4. data/_data/consumers.yml +252 -0
  5. data/_data/features.yml +234 -5
  6. data/_data/i18n/fr.yml +103 -0
  7. data/_data/i18n/manifest.yml +1529 -0
  8. data/_data/ingredient_densities.yml +122 -0
  9. data/_data/navigation/docs.yml +2 -0
  10. data/_data/navigation/main.yml +22 -0
  11. data/_data/recipe_courses.yml +64 -0
  12. data/_data/series.yml +19 -0
  13. data/_data/theme-manifest.yml +387 -277
  14. data/_data/ui-text.yml +8 -0
  15. data/_includes/README.md +36 -3
  16. data/_includes/analytics/google-tag-manager-body.html +11 -2
  17. data/_includes/analytics/google-tag-manager-head.html +16 -6
  18. data/_includes/analytics/posthog.html +33 -4
  19. data/_includes/components/abc-letter.html +43 -0
  20. data/_includes/components/background-customizer.html +2 -2
  21. data/_includes/components/book-card.html +42 -0
  22. data/_includes/components/book-nav.html +80 -0
  23. data/_includes/components/book-plate.html +31 -0
  24. data/_includes/components/book-toc.html +47 -0
  25. data/_includes/components/bookshelf.html +68 -0
  26. data/_includes/components/card-grid.html +60 -0
  27. data/_includes/components/cookie-consent.html +4 -4
  28. data/_includes/components/data-card.html +95 -0
  29. data/_includes/components/halfmoon.html +5 -1
  30. data/_includes/components/info-section.html +8 -3
  31. data/_includes/components/language-toggle.html +168 -21
  32. data/_includes/components/page-feedback.html +65 -2
  33. data/_includes/components/page-views-init.html +55 -0
  34. data/_includes/components/page-views.html +33 -0
  35. data/_includes/components/recipe-card.html +67 -0
  36. data/_includes/components/recipe-duration.html +50 -0
  37. data/_includes/components/recipe-grams.html +58 -0
  38. data/_includes/components/recipe-index.html +96 -0
  39. data/_includes/components/recipe-ingredients.html +90 -0
  40. data/_includes/components/recipe-meta.html +96 -0
  41. data/_includes/components/recipe-nutrition.html +57 -0
  42. data/_includes/components/recipe-qty.html +73 -0
  43. data/_includes/components/recipe-ratio.html +151 -0
  44. data/_includes/components/recipe-scaler.html +73 -0
  45. data/_includes/components/recipe-steps.html +86 -0
  46. data/_includes/components/recipe-temp.html +45 -0
  47. data/_includes/components/search-modal.html +2 -2
  48. data/_includes/components/shortcuts-modal.html +3 -0
  49. data/_includes/components/theme-controls-bar.html +10 -2
  50. data/_includes/components/theme-customizer.html +8 -2
  51. data/_includes/components/theme-info.html +8 -1
  52. data/_includes/content/jsonld-software.html +22 -3
  53. data/_includes/content/seo.html +9 -3
  54. data/_includes/core/color-mode-init.html +13 -4
  55. data/_includes/core/favicon.html +46 -0
  56. data/_includes/core/footer.html +18 -16
  57. data/_includes/core/head.html +21 -0
  58. data/_includes/core/header.html +7 -4
  59. data/_includes/custom/body-end.html +18 -0
  60. data/_includes/custom/body-start.html +17 -0
  61. data/_includes/custom/footer.html +18 -0
  62. data/_includes/custom/head.html +18 -0
  63. data/_includes/navigation/local-graph.html +28 -2
  64. data/_includes/navigation/nav-tree.html +3 -3
  65. data/_includes/navigation/section-sidebar.html +93 -11
  66. data/_includes/navigation/sidebar-config.html +21 -0
  67. data/_includes/navigation/sidebar-left.html +2 -1
  68. data/_includes/navigation/sidebar-nav.html +4 -0
  69. data/_includes/navigation/sidebar-pagetree.html +150 -0
  70. data/_includes/navigation/sidebar-right.html +2 -1
  71. data/_includes/navigation/unified-drawer.html +8 -2
  72. data/_includes/obsidian/full-graph.html +165 -136
  73. data/_includes/setup/wizard.html +173 -86
  74. data/_includes/stats/stats-metrics.html +2 -2
  75. data/_layouts/404.html +260 -0
  76. data/_layouts/README.md +4 -0
  77. data/_layouts/admin.html +2 -2
  78. data/_layouts/article.html +5 -0
  79. data/_layouts/book-abc.html +106 -0
  80. data/_layouts/book-story.html +91 -0
  81. data/_layouts/book.html +113 -0
  82. data/_layouts/collection.html +17 -5
  83. data/_layouts/cookbook.html +88 -0
  84. data/_layouts/default.html +4 -4
  85. data/_layouts/home.html +5 -2
  86. data/_layouts/landing.html +9 -0
  87. data/_layouts/news.html +155 -31
  88. data/_layouts/recipe.html +274 -0
  89. data/_layouts/root.html +38 -5
  90. data/_layouts/section.html +96 -25
  91. data/_sass/components/_book.scss +423 -0
  92. data/_sass/components/_callout.scss +1 -1
  93. data/_sass/components/_footer.scss +37 -1
  94. data/_sass/components/_page-views.scss +36 -0
  95. data/_sass/components/_recipe.scss +506 -0
  96. data/_sass/components/_setup-wizard.scss +235 -0
  97. data/_sass/components/_ui-enhancements.scss +6 -6
  98. data/_sass/core/_navbar.scss +263 -15
  99. data/_sass/core/_obsidian.scss +286 -6
  100. data/_sass/layouts/_landing.scss +2 -2
  101. data/_sass/theme/_backgrounds.scss +21 -8
  102. data/_sass/tokens/_color.scss +6 -0
  103. data/_sass/tokens/_index.scss +2 -0
  104. data/_sass/tokens/_radius.scss +21 -0
  105. data/_sass/tokens/_typography.scss +4 -0
  106. data/_sass/utilities/_focus.scss +14 -0
  107. data/assets/css/main.scss +4 -0
  108. data/assets/js/auto-hide-nav.js +5 -1
  109. data/assets/js/halfmoon.js +26 -0
  110. data/assets/js/modules/navigation/navbar.js +55 -0
  111. data/assets/js/obsidian-graph.js +702 -264
  112. data/assets/js/obsidian-local-graph.js +161 -54
  113. data/assets/js/page-views.js +372 -0
  114. data/assets/js/recipe-scaler.js +501 -0
  115. data/assets/js/search-modal.js +14 -1
  116. data/assets/js/setup-wizard.js +322 -20
  117. data/scripts/README.md +29 -0
  118. data/scripts/bin/audit-consumer +39 -7
  119. data/scripts/bin/giscus-discussions +213 -14
  120. data/scripts/bin/manifest +66 -16
  121. data/scripts/bin/validate +5 -1
  122. data/scripts/ci/agent_review_result.py +164 -0
  123. data/scripts/ci/test_agent_review_result.py +172 -0
  124. data/scripts/design-system-check.rb +170 -0
  125. data/scripts/install/README.md +47 -6
  126. data/scripts/install/ai/client.sh +302 -93
  127. data/scripts/install/ai/prompts/spec.schema.json +1 -1
  128. data/scripts/install/ai/wizard.sh +10 -5
  129. data/scripts/install/apply.sh +7 -3
  130. data/scripts/install/cli.sh +54 -4
  131. data/scripts/install/config.sh +167 -0
  132. data/scripts/install/doctor.sh +38 -0
  133. data/scripts/install/plan.sh +10 -0
  134. data/scripts/install/spec.sh +15 -7
  135. data/scripts/install/template.sh +4 -0
  136. data/scripts/lib/audit.sh +42 -2
  137. data/scripts/lint-liquid-raw.rb +137 -0
  138. data/scripts/propagate.rb +277 -0
  139. data/scripts/test/lib/run_tests.sh +2 -1
  140. data/scripts/test/lib/test_agent_review_result.sh +27 -0
  141. data/scripts/translate.rb +161 -15
  142. metadata +56 -2
@@ -0,0 +1,122 @@
1
+ # Feature: ZER0-084
2
+ # ─────────────────────────────────────────────────────────────────────────────
3
+ # Ingredient densities — GRAMS PER US CUP (236.588 ml).
4
+ #
5
+ # Used by components/recipe-ingredients.html: when a recipe lists an ingredient
6
+ # by volume (cup / tbsp / tsp / fl oz …), the component looks this table up by
7
+ # the slugified ingredient name and emits `data-grams-per-cup`, which lets
8
+ # assets/js/recipe-scaler.js convert that volume to a weight in metric mode —
9
+ # and a weight back to volume in US mode.
10
+ #
11
+ # Lookup order (first match wins):
12
+ # 1. the ingredient's own `grams_per_cup:` front matter
13
+ # 2. this table, keyed by the ingredient name slugified
14
+ # ("Bread flour" → "bread-flour", "All-Purpose Flour" → "all-purpose-flour")
15
+ # 3. no density — volumes stay volumes (ml), weights stay weights (g)
16
+ #
17
+ # Set `weigh: false` on an ingredient to opt it out of volume→weight entirely.
18
+ # A consuming site can override this whole file with its own copy.
19
+ #
20
+ # Values are common US test-kitchen averages; flours in particular vary with
21
+ # scooping method, so treat them as a good default rather than a lab constant.
22
+ # ─────────────────────────────────────────────────────────────────────────────
23
+
24
+ ## Flours & dry goods ---------------------------------------------------------
25
+ all-purpose-flour: 125
26
+ plain-flour: 125
27
+ bread-flour: 127
28
+ whole-wheat-flour: 120
29
+ whole-meal-flour: 120
30
+ cake-flour: 114
31
+ semolina: 167
32
+ rye-flour: 102
33
+ almond-flour: 96
34
+ cornmeal: 122
35
+ cornstarch: 128
36
+ corn-flour: 128
37
+ rolled-oats: 90
38
+ breadcrumbs: 108
39
+ panko: 60
40
+ rice: 185
41
+ white-rice: 185
42
+ arborio-rice: 200
43
+ couscous: 173
44
+ quinoa: 170
45
+
46
+ ## Sugars & sweeteners --------------------------------------------------------
47
+ granulated-sugar: 200
48
+ caster-sugar: 200
49
+ sugar: 200
50
+ brown-sugar: 213
51
+ light-brown-sugar: 213
52
+ dark-brown-sugar: 213
53
+ powdered-sugar: 120
54
+ confectioners-sugar: 120
55
+ icing-sugar: 120
56
+ honey: 340
57
+ maple-syrup: 322
58
+ molasses: 337
59
+ corn-syrup: 328
60
+
61
+ ## Liquids & dairy ------------------------------------------------------------
62
+ water: 236
63
+ milk: 244
64
+ whole-milk: 244
65
+ buttermilk: 245
66
+ heavy-cream: 238
67
+ double-cream: 238
68
+ sour-cream: 230
69
+ yogurt: 245
70
+ greek-yogurt: 245
71
+ stock: 240
72
+ chicken-stock: 240
73
+ vegetable-stock: 240
74
+ wine: 235
75
+ white-wine: 235
76
+ red-wine: 235
77
+ vinegar: 239
78
+ soy-sauce: 255
79
+ lemon-juice: 244
80
+ lime-juice: 244
81
+
82
+ ## Fats -----------------------------------------------------------------------
83
+ butter: 227
84
+ unsalted-butter: 227
85
+ salted-butter: 227
86
+ melted-butter: 227
87
+ olive-oil: 216
88
+ extra-virgin-olive-oil: 216
89
+ vegetable-oil: 218
90
+ canola-oil: 218
91
+ sesame-oil: 218
92
+ shortening: 205
93
+
94
+ ## Seasonings & leaveners (small quantities — precision matters) --------------
95
+ table-salt: 292
96
+ fine-sea-salt: 288
97
+ sea-salt: 256
98
+ kosher-salt: 145 # Diamond Crystal; Morton is ~241 g/cup
99
+ salt: 292
100
+ baking-powder: 192
101
+ baking-soda: 220
102
+ active-dry-yeast: 150
103
+ instant-yeast: 150
104
+ ground-cinnamon: 132
105
+ ground-black-pepper: 138
106
+
107
+ ## Chocolate, nuts & extras ---------------------------------------------------
108
+ cocoa-powder: 85
109
+ chocolate-chips: 170
110
+ semisweet-chocolate-chips: 170
111
+ dark-chocolate: 170
112
+ vanilla-extract: 208
113
+ peanut-butter: 258
114
+ tahini: 240
115
+ tomato-paste: 262
116
+ tomato-passata: 245
117
+ crushed-tomatoes: 245
118
+ grated-parmesan: 100
119
+ almonds: 143
120
+ walnuts: 117
121
+ pecans: 109
122
+ raisins: 145
@@ -30,6 +30,8 @@
30
30
  children:
31
31
  - title: Features Overview
32
32
  url: /docs/features/
33
+ - title: Books Collection
34
+ url: /docs/features/book-collection/
33
35
  - title: Mermaid Diagrams
34
36
  url: /docs/features/mermaid-diagrams/
35
37
  - title: MathJax Math
@@ -1,3 +1,4 @@
1
+ # Feature: ZER0-082
1
2
  # Main Navigation Configuration
2
3
  # Used by: _includes/navigation/navbar.html
3
4
  # Purpose: Primary site navigation with dropdown children
@@ -45,6 +46,19 @@
45
46
  - title: Test Notebook
46
47
  url: /notebooks/test-notebook/
47
48
 
49
+ - title: Recipes
50
+ icon: bi-egg-fried
51
+ url: /recipes/
52
+ children:
53
+ - title: No-Knead Focaccia
54
+ url: /recipes/no-knead-focaccia/
55
+ - title: Brown Butter Cookies
56
+ url: /recipes/brown-butter-chocolate-chip-cookies/
57
+ - title: Tomato Butter Pasta
58
+ url: /recipes/weeknight-tomato-butter-pasta/
59
+ - title: How Recipes Work
60
+ url: /docs/features/cookbook-collection/
61
+
48
62
  - title: Docs
49
63
  icon: bi-journal-bookmark
50
64
  url: /docs/
@@ -57,6 +71,12 @@
57
71
  url: /docs/docker/
58
72
  - title: Features
59
73
  url: /features/
74
+ # Live demo site, built by .github/workflows/pages.yml into
75
+ # /examples/swerve-of-shore/. Not part of this site's Jekyll build —
76
+ # examples/ is excluded from _config.yml — so this is an absolute path
77
+ # into the deployed tree rather than a page in site.html_pages.
78
+ - title: Example Site
79
+ url: /examples/swerve-of-shore/
60
80
  - title: Troubleshooting
61
81
  url: /docs/troubleshooting/
62
82
 
@@ -66,6 +86,8 @@
66
86
  children:
67
87
  - title: Features
68
88
  url: /features/
89
+ - title: Design System
90
+ url: /design/
69
91
  - title: Authors
70
92
  url: /authors/
71
93
  - title: Statistics
@@ -0,0 +1,64 @@
1
+ # Feature: ZER0-084
2
+ # ─────────────────────────────────────────────────────────────────────────────
3
+ # Default courses / shelves for the zer0-mistakes `recipes` collection.
4
+ #
5
+ # The recipe index (components/recipe-index.html) groups recipes into sections
6
+ # by each recipe's `course:` front matter and reads the display metadata below
7
+ # as `site.data.recipe_courses[recipe.course]`. A consuming site can override
8
+ # this file with its own `_data/recipe_courses.yml`; a recipe with no `course`
9
+ # falls under `uncategorized`.
10
+ #
11
+ # Keys: title (heading), tagline (sub-heading), icon (Bootstrap Icons class),
12
+ # order (advisory rank for consumers that sort on it).
13
+ #
14
+ # Sections render in the order the courses appear IN THIS FILE — same rule as
15
+ # _data/series.yml — with any course used by a recipe but not declared here
16
+ # appended afterwards. To re-order the cookbook, move the blocks below.
17
+ # ─────────────────────────────────────────────────────────────────────────────
18
+ breakfast:
19
+ title: "Breakfast"
20
+ tagline: "The first thing you cook, and the hardest to get wrong twice."
21
+ icon: "bi-egg-fried"
22
+ order: 1
23
+
24
+ breads:
25
+ title: "Breads & Doughs"
26
+ tagline: "Flour, water, salt, time — ratio cooking at its purest."
27
+ icon: "bi-basket"
28
+ order: 2
29
+
30
+ mains:
31
+ title: "Mains"
32
+ tagline: "Dinner, scaled to whoever showed up."
33
+ icon: "bi-egg-fried"
34
+ order: 3
35
+
36
+ sides:
37
+ title: "Sides & Salads"
38
+ tagline: "The supporting cast that people actually remember."
39
+ icon: "bi-flower1"
40
+ order: 4
41
+
42
+ sauces:
43
+ title: "Sauces & Basics"
44
+ tagline: "Mother sauces, doughs, stocks — the building blocks."
45
+ icon: "bi-droplet-half"
46
+ order: 5
47
+
48
+ desserts:
49
+ title: "Desserts & Baking"
50
+ tagline: "Where measuring by weight stops being optional."
51
+ icon: "bi-cake2"
52
+ order: 6
53
+
54
+ drinks:
55
+ title: "Drinks"
56
+ tagline: "Scale by the glass or by the pitcher."
57
+ icon: "bi-cup-straw"
58
+ order: 7
59
+
60
+ uncategorized:
61
+ title: "More Recipes"
62
+ tagline: "Everything that has not found a shelf yet."
63
+ icon: "bi-journal-bookmark"
64
+ order: 99
data/_data/series.yml ADDED
@@ -0,0 +1,19 @@
1
+ # ─────────────────────────────────────────────────────────────────────────────
2
+ # Default book series / categories for the zer0-mistakes `books` collection.
3
+ #
4
+ # The bookshelf (components/bookshelf.html) groups books into shelves by each
5
+ # book's `series:` front matter and reads the display metadata below as
6
+ # `site.data.series[book.series]`. A consuming site can override this file with
7
+ # its own `_data/series.yml`; a book with no `series` falls under `stories`.
8
+ # ─────────────────────────────────────────────────────────────────────────────
9
+ abc-language:
10
+ title: "ABC & Language"
11
+ tagline: "First alphabets — one letter, one word, one picture."
12
+ icon: "bi-type"
13
+ order: 1
14
+
15
+ stories:
16
+ title: "Stories"
17
+ tagline: "Picture books to read cover to cover."
18
+ icon: "bi-book-half"
19
+ order: 2