rizzo-css 0.0.40 → 0.0.41

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 (79) hide show
  1. package/README.md +5 -3
  2. package/bin/rizzo-css.js +89 -111
  3. package/dist/fonts/IBMPlexMono/IBMPlexMono-Italic.ttf +0 -0
  4. package/dist/fonts/IBMPlexMono/IBMPlexMono-Regular.ttf +0 -0
  5. package/dist/fonts/IBMPlexMono/OFL.txt +93 -0
  6. package/dist/fonts/IBMPlexSans/IBMPlexSans-Italic-VariableFont_wdth,wght.ttf +0 -0
  7. package/dist/fonts/IBMPlexSans/IBMPlexSans-VariableFont_wdth,wght.ttf +0 -0
  8. package/dist/fonts/IBMPlexSans/OFL.txt +93 -0
  9. package/dist/fonts/IBMPlexSans/README.txt +106 -0
  10. package/dist/fonts/Inter/Inter-Italic-VariableFont_opsz,wght.ttf +0 -0
  11. package/dist/fonts/Inter/Inter-VariableFont_opsz,wght.ttf +0 -0
  12. package/dist/fonts/Inter/OFL.txt +93 -0
  13. package/dist/fonts/JetBrainsMono/AUTHORS.txt +10 -0
  14. package/dist/fonts/JetBrainsMono/JetBrainsMono-Italic[wght].ttf +0 -0
  15. package/dist/fonts/JetBrainsMono/JetBrainsMono[wght].ttf +0 -0
  16. package/dist/fonts/JetBrainsMono/OFL.txt +93 -0
  17. package/dist/fonts/SourceCodePro/OFL.txt +93 -0
  18. package/dist/fonts/SourceCodePro/README.txt +79 -0
  19. package/dist/fonts/SourceCodePro/SourceCodePro-Italic-VariableFont_wght.ttf +0 -0
  20. package/dist/fonts/SourceCodePro/SourceCodePro-VariableFont_wght.ttf +0 -0
  21. package/dist/fonts/SourceSans3/OFL.txt +93 -0
  22. package/dist/fonts/SourceSans3/README.txt +79 -0
  23. package/dist/fonts/SourceSans3/SourceSans3-Italic-VariableFont_wght.ttf +0 -0
  24. package/dist/fonts/SourceSans3/SourceSans3-VariableFont_wght.ttf +0 -0
  25. package/dist/rizzo.min.css +1 -1
  26. package/package.json +10 -9
  27. package/scaffold/astro/Settings.astro +56 -0
  28. package/scaffold/{astro-minimal → astro-core}/README-RIZZO.md +1 -1
  29. package/scaffold/astro-core/src/layouts/Layout.astro +33 -0
  30. package/scaffold/config/fonts.ts +51 -0
  31. package/scaffold/svelte/Settings.svelte +155 -1
  32. package/scaffold/{svelte-minimal → svelte-core}/README-RIZZO.md +1 -1
  33. package/scaffold/vanilla/README-RIZZO.md +2 -2
  34. package/scaffold/vanilla/components/accordion.html +41 -0
  35. package/scaffold/vanilla/components/alert.html +41 -0
  36. package/scaffold/vanilla/components/avatar.html +41 -0
  37. package/scaffold/vanilla/components/badge.html +41 -0
  38. package/scaffold/vanilla/components/breadcrumb.html +41 -0
  39. package/scaffold/vanilla/components/button.html +41 -0
  40. package/scaffold/vanilla/components/cards.html +41 -0
  41. package/scaffold/vanilla/components/copy-to-clipboard.html +41 -0
  42. package/scaffold/vanilla/components/divider.html +41 -0
  43. package/scaffold/vanilla/components/dropdown.html +41 -0
  44. package/scaffold/vanilla/components/forms.html +41 -0
  45. package/scaffold/vanilla/components/icons.html +41 -0
  46. package/scaffold/vanilla/components/index.html +41 -0
  47. package/scaffold/vanilla/components/modal.html +41 -0
  48. package/scaffold/vanilla/components/navbar.html +41 -0
  49. package/scaffold/vanilla/components/pagination.html +41 -0
  50. package/scaffold/vanilla/components/progress-bar.html +41 -0
  51. package/scaffold/vanilla/components/search.html +41 -0
  52. package/scaffold/vanilla/components/settings.html +41 -0
  53. package/scaffold/vanilla/components/spinner.html +41 -0
  54. package/scaffold/vanilla/components/table.html +41 -0
  55. package/scaffold/vanilla/components/tabs.html +41 -0
  56. package/scaffold/vanilla/components/theme-switcher.html +41 -0
  57. package/scaffold/vanilla/components/toast.html +41 -0
  58. package/scaffold/vanilla/components/tooltip.html +41 -0
  59. package/scaffold/vanilla/index.html +41 -0
  60. package/scaffold/vanilla/js/main.js +20 -0
  61. package/scaffold/astro-minimal/src/layouts/Layout.astro +0 -29
  62. /package/scaffold/{astro-minimal → astro-core}/.env.example +0 -0
  63. /package/scaffold/{astro-minimal → astro-core}/astro.config.mjs +0 -0
  64. /package/scaffold/{astro-minimal → astro-core}/gitignore +0 -0
  65. /package/scaffold/{astro-minimal → astro-core}/package.json +0 -0
  66. /package/scaffold/{astro-minimal → astro-core}/public/.gitkeep +0 -0
  67. /package/scaffold/{astro-minimal → astro-core}/public/favicon.svg +0 -0
  68. /package/scaffold/{astro-minimal → astro-core}/src/pages/index.astro +0 -0
  69. /package/scaffold/{astro-minimal → astro-core}/tsconfig.json +0 -0
  70. /package/scaffold/{svelte-minimal → svelte-core}/.env.example +0 -0
  71. /package/scaffold/{svelte-minimal → svelte-core}/gitignore +0 -0
  72. /package/scaffold/{svelte-minimal → svelte-core}/package.json +0 -0
  73. /package/scaffold/{svelte-minimal → svelte-core}/src/app.d.ts +0 -0
  74. /package/scaffold/{svelte-minimal → svelte-core}/src/app.html +0 -0
  75. /package/scaffold/{svelte-minimal → svelte-core}/src/routes/+layout.svelte +0 -0
  76. /package/scaffold/{svelte-minimal → svelte-core}/src/routes/+page.svelte +0 -0
  77. /package/scaffold/{svelte-minimal → svelte-core}/static/.gitkeep +0 -0
  78. /package/scaffold/{svelte-minimal → svelte-core}/svelte.config.js +0 -0
  79. /package/scaffold/{svelte-minimal → svelte-core}/tsconfig.json +0 -0
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -432,6 +466,13 @@
432
466
 
433
467
 
434
468
 
469
+
470
+
471
+
472
+
473
+
474
+
475
+
435
476
 
436
477
 
437
478
 
@@ -25,6 +25,20 @@
25
25
  if (savedFontScale) {
26
26
  document.documentElement.style.setProperty('--font-size-scale', savedFontScale);
27
27
  }
28
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
29
+ if (savedFontPair === 'geist') {
30
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-geist-sans)');
31
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-geist-mono)');
32
+ } else if (savedFontPair === 'inter-jetbrains') {
33
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-inter)');
34
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-jetbrains-mono)');
35
+ } else if (savedFontPair === 'ibm-plex') {
36
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-ibm-plex-sans)');
37
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-ibm-plex-mono)');
38
+ } else if (savedFontPair === 'source') {
39
+ document.documentElement.style.setProperty('--font-family', 'var(--font-family-source-sans-3)');
40
+ document.documentElement.style.setProperty('--font-family-mono', 'var(--font-family-source-code-pro)');
41
+ }
28
42
  if (localStorage.getItem('reducedMotion') === 'true') {
29
43
  document.documentElement.classList.add('reduced-motion');
30
44
  }
@@ -162,6 +176,19 @@
162
176
  <div class="settings__slider-labels"><span>Small</span><span>Default</span><span>Large</span></div>
163
177
  </div>
164
178
  </section>
179
+ <section class="settings__section">
180
+ <h3 class="settings__section-title">Font</h3>
181
+ <div class="settings__control">
182
+ <label for="font-pair-select" class="settings__label"><span class="settings__label-text">Font pair (sans + mono)</span></label>
183
+ <select id="font-pair-select" class="form-control" aria-label="Font pair" data-font-pair style="width: 100%;">
184
+ <option value="geist" data-sans="var(--font-family-geist-sans)" data-mono="var(--font-family-geist-mono)">Geist (Sans + Mono)</option>
185
+ <option value="inter-jetbrains" data-sans="var(--font-family-inter)" data-mono="var(--font-family-jetbrains-mono)">Inter + JetBrains Mono</option>
186
+ <option value="ibm-plex" data-sans="var(--font-family-ibm-plex-sans)" data-mono="var(--font-family-ibm-plex-mono)">IBM Plex Sans + Mono</option>
187
+ <option value="source" data-sans="var(--font-family-source-sans-3)" data-mono="var(--font-family-source-code-pro)">Source Sans 3 + Source Code Pro</option>
188
+ </select>
189
+ <p class="settings__help-text">Body text and code blocks use the selected pair.</p>
190
+ </div>
191
+ </section>
165
192
  <section class="settings__section">
166
193
  <h3 class="settings__section-title">Accessibility</h3>
167
194
  <div class="settings__control">
@@ -309,6 +336,13 @@
309
336
 
310
337
 
311
338
 
339
+
340
+
341
+
342
+
343
+
344
+
345
+
312
346
 
313
347
 
314
348
 
@@ -467,6 +501,13 @@
467
501
 
468
502
 
469
503
 
504
+
505
+
506
+
507
+
508
+
509
+
510
+
470
511
 
471
512
 
472
513
 
@@ -165,6 +165,7 @@
165
165
  var closeBtn = settings.querySelector('[data-settings-close]');
166
166
  var fontSizeSlider = settings.querySelector('[data-font-size-slider]');
167
167
  var fontSizeValue = settings.querySelector('[data-font-size-value]');
168
+ var fontPairSelect = settings.querySelector('[data-font-pair]');
168
169
  var reducedMotion = settings.querySelector('[data-reduced-motion]');
169
170
  var highContrast = settings.querySelector('[data-high-contrast]');
170
171
  var scrollbarStyleRadios = settings.querySelectorAll('[data-scrollbar-style]');
@@ -190,6 +191,15 @@
190
191
  applyFontSize(parseFloat(saved));
191
192
  }
192
193
  if (fontSizeSlider) updateSliderProgress(fontSizeSlider);
194
+ var savedFontPair = localStorage.getItem('fontPair') || 'geist';
195
+ if (fontPairSelect) {
196
+ fontPairSelect.value = savedFontPair;
197
+ var opt = fontPairSelect.options[fontPairSelect.selectedIndex];
198
+ if (opt && opt.dataset.sans && opt.dataset.mono) {
199
+ html.style.setProperty('--font-family', opt.dataset.sans);
200
+ html.style.setProperty('--font-family-mono', opt.dataset.mono);
201
+ }
202
+ }
193
203
  if (reducedMotion) {
194
204
  reducedMotion.checked = localStorage.getItem('reducedMotion') === 'true';
195
205
  html.classList.toggle('reduced-motion', reducedMotion.checked);
@@ -260,6 +270,16 @@
260
270
  localStorage.setItem('fontSizeScale', scale);
261
271
  });
262
272
  }
273
+ if (fontPairSelect) {
274
+ fontPairSelect.addEventListener('change', function () {
275
+ var opt = this.options[this.selectedIndex];
276
+ if (opt && opt.dataset.sans && opt.dataset.mono) {
277
+ html.style.setProperty('--font-family', opt.dataset.sans);
278
+ html.style.setProperty('--font-family-mono', opt.dataset.mono);
279
+ localStorage.setItem('fontPair', opt.value);
280
+ }
281
+ });
282
+ }
263
283
  if (reducedMotion) {
264
284
  reducedMotion.addEventListener('change', function () {
265
285
  html.classList.toggle('reduced-motion', this.checked);
@@ -1,29 +0,0 @@
1
- ---
2
- /* Placeholders replaced by rizzo-css CLI when scaffolding */
3
- /* {{THEME_LIST_COMMENT}} */
4
- const DATA_THEME = '{{DATA_THEME}}';
5
- /** @type {{ title?: string }} */
6
- const { title = '{{TITLE}}' } = Astro.props;
7
- {{RIZZO_LAYOUT_IMPORTS}}
8
- ---
9
- <!doctype html>
10
- <html lang="en" data-theme={DATA_THEME}>
11
- <head>
12
- <meta charset="UTF-8" />
13
- <meta name="viewport" content="width=device-width, initial-scale=1" />
14
- <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
15
- <script is:inline>
16
- (function(){try{var s=localStorage.getItem('theme');var d='{{DEFAULT_DARK}}';var l='{{DEFAULT_LIGHT}}';var initial=document.documentElement.getAttribute('data-theme');var r=!s?((initial&&initial!=='system')?initial:(matchMedia('(prefers-color-scheme: dark)').matches?d:l)):s==='system'?(matchMedia('(prefers-color-scheme: dark)').matches?d:l):s;document.documentElement.setAttribute('data-theme',r);}catch(e){}})();
17
- </script>
18
- <link rel="stylesheet" href="/css/rizzo.min.css" />
19
- <title>{title}</title>
20
- </head>
21
- <body>
22
- <a href="#main-content" class="skip-link">Skip to main content</a>
23
- {{RIZZO_LAYOUT_BODY_TOP}}
24
- <main id="main-content">
25
- <slot />
26
- </main>
27
- {{RIZZO_LAYOUT_BODY_BOTTOM}}
28
- </body>
29
- </html>