@rathnasgala/theme 0.0.18 → 0.0.19

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rathnasgala/theme",
3
- "version": "0.0.18",
3
+ "version": "0.0.19",
4
4
  "description": "Managed Gala static-site theme payload",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -2,12 +2,16 @@
2
2
  "schemaVersion": 1,
3
3
  "themePackage": {
4
4
  "name": "@rathnasgala/theme",
5
- "version": "0.0.18",
5
+ "version": "0.0.19",
6
6
  "availableDesignThemes": [
7
7
  "editorial"
8
8
  ],
9
9
  "securityAdvisories": []
10
10
  },
11
+ "requiredBudgets": {
12
+ "managedJavaScriptBytes": 65536,
13
+ "managedCssBytes": 32768
14
+ },
11
15
  "files": {
12
16
  ".gala/publish.yml.template": "73080241d89bd09964b797a8bcc8e18471412e11bc873efad76305b60f497d08",
13
17
  ".gitignore": "b5fa24e10155097a0d372926fd2e59e6072e7cc2cb6399bbfb4beb8b33ea315b",
@@ -31,7 +35,7 @@
31
35
  "src/_data/languages.js": "1358748f7fa2f74406d3295a030827d6229a53e94da72cf712e719d7a356aeac",
32
36
  "src/_data/site.js": "d9c001f4cc12a34027dd92303530b11b5402d47613459bb997e22c4bcbea326d",
33
37
  "src/_includes/components/ui.njk": "23eb647d8658868449ec6bb809e965a85302124a97639f94d5d28af72df56e4c",
34
- "src/_includes/layouts/base.njk": "6914da799eb31fea3fc230ab196252129ccca90f27ccb08bbcee81741a91ced4",
38
+ "src/_includes/layouts/base.njk": "e73be30738535902599e1c060c11afbd128c86332913114f643dc56dea99fcba",
35
39
  "src/_includes/layouts/post.njk": "1accd2832064ad19ee7bf18daf5fa1e60569f32c9b7a547934a6361f747d7eb7",
36
40
  "src/assets/embed-codepen.svg": "e9def697f38c466fb2b6652535c4c814e8cbbbefc6e052a69f335aeb27e8356b",
37
41
  "src/assets/embed-gist.svg": "fcd9bc2bf29a5c118492b853c0a01390b7539c38ddb985da3c2a6e2f246a39f7",
@@ -39,11 +43,12 @@
39
43
  "src/assets/embed-youtube.svg": "10d192f2b14b67664fea88c8cf246321d20190def51d59fad5762e552219b067",
40
44
  "src/assets/engagement-comments.js": "b20d9268c9d908b4453a42188eaca25349f25534fb04a9293c9e688a982cd8f8",
41
45
  "src/assets/engagement-transport.js": "4f9ca0cd669bf8abc25f2909104e3e4b231657ef97d36a17d06e53454d711786",
46
+ "src/assets/favicon.svg": "8615e3d96fe37ae9ed14afb1886e7c0e690eef5b10be66ca91cccfd085a74bb6",
42
47
  "src/assets/interactions.js": "dd4e343505e528d89596ca67db679b52c989e022f93399193e4377db01fc8a08",
43
48
  "src/assets/preferences.js": "789127bee013ed6a1bbf8cefd7b9109291c16220e7a6e09314e3c93c54731d1d",
44
49
  "src/assets/search.js": "df425f0239277792ad39f2138bc89cb66cc4ecda5ed59042d46abc2f05372088",
45
50
  "src/assets/theme-mode.js": "944b29db11a577961a60ddcfa52f07ef2411f3f3631bea85bd79be16428c08be",
46
- "src/assets/theme.css": "2a2367f2c875121cc95bc789a0d5889960813e660ca7722b328b39b4ff5068a8",
51
+ "src/assets/theme.css": "cdd41ddb670fb8c823b3490efa2a887d11dd6a1931afa0264deee53283b684d3",
47
52
  "src/assets/vendor/hooks.js": "ae6ec58592683ca64fa4d65b20d40b103df62a673bcc4712515cf165950b07f3",
48
53
  "src/assets/vendor/htm.js": "e4dac9bc40a6f2ec590413d787ae30bbcfdfcde4f28971ee65d9578271b7aad4",
49
54
  "src/assets/vendor/preact.js": "712517dd2a42c3c22b5ab0264ad7e9a2b1e8be6cf97fa00dbedd98203617e616",
@@ -58,7 +63,6 @@
58
63
  "src/redirects.11ty.js": "3c163246a59f5364861db6a6f05ae88afc938a5379d86cf42776d8d49b0031f3",
59
64
  "src/search-index.11ty.js": "700dc2a2be0ef20de3a828a4612fcf7a082691eade29c6e1d75f09c24b6c6024",
60
65
  "src/search.njk": "63f2e8aeebb63c90da2e375eece639ce096cad1eff7f28628cafc46faf7ceee6",
61
- "src/settings.njk": "9e6babf4d2774687558618c4fbd109ddfc0f479f52ec2e5d00c373c44ad16676",
62
66
  "src/sitemap.11ty.js": "4f233e94fb4a913ad5659116518432ed264984a7b622eba3558c77b4ec6435dc",
63
67
  "static/robots.txt": "16ceb5ee3e0dc13aa9adf31a3ebbe45a1d965b8c2b9f72eaf84e5911e140ed95"
64
68
  },
@@ -26,6 +26,7 @@
26
26
  <link rel="stylesheet" href="{{ '/custom.css' | url }}">
27
27
  <script src="{{ '/assets/theme-mode.js' | url }}" defer></script>
28
28
  <script src="{{ '/assets/preferences.js' | url }}" defer></script>
29
+ <link rel="icon" href="{{ '/assets/favicon.svg' | url }}" type="image/svg+xml">
29
30
  <script src="{{ '/assets/interactions.js' | url }}" defer></script>
30
31
  <script type="module" src="{{ '/assets/engagement-comments.js' | url }}"></script>
31
32
  <script src="{{ '/assets/search.js' | url }}" defer></script>
@@ -69,17 +70,12 @@
69
70
  <dialog id="gala-settings-dialog" class="gala-dialog" aria-labelledby="gala-settings-title">
70
71
  <form method="dialog" class="gala-dialog__close"><button type="submit" aria-label="Close settings">Close</button></form>
71
72
  <h2 id="gala-settings-title">Reader settings</h2>
72
- <section aria-labelledby="gala-dialog-theme-setting">
73
- <h3 id="gala-dialog-theme-setting">Appearance</h3>
74
- <button type="button" data-theme-mode-toggle aria-label="Color mode: system. Activate for light."><span data-theme-mode-label>Theme: system</span></button>
75
- </section>
76
73
  <section aria-labelledby="gala-dialog-language-setting">
77
74
  <h3 id="gala-dialog-language-setting">Language preference</h3>
78
75
  <label>Preferred language
79
76
  <select data-language-preference>{% for language in languages %}<option value="{{ language | escape }}">{{ language }}</option>{% endfor %}</select>
80
77
  </label>
81
78
  </section>
82
- <p><a href="{{ '/settings/' | url }}">Open settings page</a></p>
83
79
  </dialog>
84
80
  <dialog id="gala-search-dialog" class="gala-dialog" aria-labelledby="gala-search-title">
85
81
  <form method="dialog" class="gala-dialog__close"><button type="submit" aria-label="Close search">Close</button></form>
@@ -98,7 +94,7 @@
98
94
  {% if site.site.id and site.site.id != "unavailable" %}
99
95
  <dialog id="gala-account-dialog" class="gala-dialog gala-account-dialog" aria-labelledby="gala-account-title">
100
96
  <form method="dialog" class="gala-dialog__close"><button type="submit" aria-label="Close account">Close</button></form>
101
- <h2 id="gala-account-title">Gala account</h2>
97
+ <h2 id="gala-account-title" class="gala-visually-hidden">Gala account</h2>
102
98
  <iframe data-gala-session-frame title="Gala account and sign in" allow="identity-credentials-get" src="{{ site.platform.apiBaseUrl or 'https://api.gala67.com' }}/v1/widget/session?siteId={{ site.site.id | escape }}"></iframe>
103
99
  </dialog>
104
100
  {% endif %}
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><rect width="32" height="32" rx="7" fill="#8a4b2a"/><path d="M22 11.5c-1.1-1.3-2.8-2-4.6-2-3.6 0-6.4 2.9-6.4 6.5s2.8 6.5 6.4 6.5c3.2 0 5.6-2 6-5h-5.6" fill="none" stroke="#fdfcfb" stroke-width="2.4" stroke-linecap="round" stroke-linejoin="round"/></svg>
@@ -235,13 +235,29 @@ blockquote {
235
235
  color: var(--gala-color-muted);
236
236
  }
237
237
 
238
+ /*
239
+ * Stays with the reader. It used to scroll away, so on a long post the only way back to the site
240
+ * — or to sign in — was to scroll to the top. The negative inline margin lets the bar's background
241
+ * reach the edge of the viewport while its contents stay on the page's own measure.
242
+ */
238
243
  .gala-site-header {
244
+ position: sticky;
245
+ inset-block-start: 0;
246
+ z-index: 10;
239
247
  display: flex;
240
248
  align-items: center;
241
249
  justify-content: space-between;
250
+ gap: var(--gala-space-md);
242
251
  max-inline-size: var(--gala-content-width);
243
252
  margin-inline: auto;
244
- margin-block-end: 1.5rem;
253
+ margin-block-end: var(--gala-space-xl);
254
+ padding-block: var(--gala-space-xs);
255
+ background: color-mix(in srgb, var(--gala-color-background) 88%, transparent);
256
+ backdrop-filter: blur(8px);
257
+ border-block-end: 1px solid var(--gala-color-hairline);
258
+ }
259
+ @supports not (backdrop-filter: blur(8px)) {
260
+ .gala-site-header { background: var(--gala-color-background); }
245
261
  }
246
262
 
247
263
  .gala-site-header__actions { display: flex; gap: 0.5rem; }
@@ -279,8 +295,16 @@ blockquote {
279
295
  box-shadow: var(--gala-shadow-high);
280
296
  }
281
297
  .gala-dialog::backdrop { background: rgb(0 0 0 / 65%); }
282
- .gala-dialog__close { float: inline-end; }
283
- .gala-account-dialog iframe { inline-size: 100%; min-block-size: 22rem; border: 0; }
298
+ /* Sized to what it holds. 22rem was a box for a name and one button, and it showed. */
299
+ .gala-account-dialog { inline-size: min(26rem, calc(100% - 2rem)); }
300
+ .gala-account-dialog iframe {
301
+ display: block;
302
+ inline-size: 100%;
303
+ min-block-size: 7rem;
304
+ border: 0;
305
+ }
306
+ /* The close control belongs on the same line as the title, not floated above it. */
307
+ .gala-dialog__close { float: inline-end; margin-inline-start: var(--gala-space-md); }
284
308
 
285
309
  main,
286
310
  .gala-page-footer {
@@ -372,12 +396,7 @@ button:focus-visible {
372
396
  .gala-search-results h2 { margin-block-start: 0; }
373
397
  .gala-toc { padding: 1rem; background: var(--gala-color-surface); }
374
398
  .gala-share__fallback { inline-size: min(100%, 36rem); }
375
- .gala-engagement { min-block-size: var(--gala-widget-min-block-size); }
376
- .gala-engagement dl { display: flex; flex-wrap: wrap; gap: 1rem 2rem; }
377
- .gala-engagement dl > div { display: grid; gap: 0.25rem; }
378
- .gala-engagement dd { margin: 0; font-size: 1.25rem; font-weight: 700; }
379
399
  .gala-engagement__placeholder { display: grid; min-block-size: var(--gala-widget-min-block-size); align-content: center; margin: 0; }
380
- .gala-engagement-profile { margin-block: 1.5rem; padding: 1rem; background: var(--gala-color-surface); border-radius: var(--gala-radius-control); }
381
400
  .gala-engagement-profile > * { margin-block: 0 0.5rem; }
382
401
  .gala-comments { display: grid; gap: 1rem; padding-inline-start: 1.5rem; }
383
402
  .gala-comments li { padding: 1rem; background: var(--gala-color-surface); border-radius: var(--gala-radius-control); }
@@ -387,8 +406,6 @@ button:focus-visible {
387
406
  reassures rather than sells. Hidden for anyone who opened the account dialog deliberately. */
388
407
  .gala-account-dialog__invite { margin-block: 0 1rem; max-inline-size: 34rem; }
389
408
  .gala-account-dialog__invite[hidden] { display: none; }
390
- .gala-reaction-actions,
391
- .gala-comment-actions { display: flex; flex-wrap: wrap; gap: 0.5rem; }
392
409
  .gala-engagement-actions form,
393
410
  [data-comment-editor] { display: grid; gap: 0.5rem; max-inline-size: 42rem; }
394
411
  .gala-engagement-actions label { display: grid; gap: 0.5rem; }
@@ -522,3 +539,50 @@ button:focus-visible {
522
539
  font-size: var(--gala-text-sm);
523
540
  }
524
541
  .gala-comments__more { margin-block-start: var(--gala-space-md); }
542
+
543
+ /* ---------------------------------------------------------------- where the article ends
544
+ The writing and the conversation about it are different things, and the page has to say so.
545
+ A footnote used to run straight into the author card with nothing between them. */
546
+ .gala-engagement {
547
+ /* Space is reserved before the counts arrive, so the page does not jump under the reader. */
548
+ min-block-size: var(--gala-widget-min-block-size);
549
+ max-inline-size: var(--gala-content-width);
550
+ margin-block-start: var(--gala-space-xl);
551
+ padding-block-start: var(--gala-space-lg);
552
+ border-block-start: 1px solid var(--gala-color-border);
553
+ }
554
+ .gala-engagement-profile {
555
+ display: flex;
556
+ align-items: baseline;
557
+ gap: var(--gala-space-sm);
558
+ padding: 0;
559
+ background: none;
560
+ }
561
+ .gala-engagement-profile h2 { font-size: var(--gala-text-lg); margin: 0; }
562
+ .gala-engagement-profile p { margin: 0; color: var(--gala-color-muted); font-size: var(--gala-text-sm); }
563
+
564
+ /* Counts read as data, not as three stacked paragraphs. */
565
+ .gala-engagement dl {
566
+ display: flex;
567
+ flex-wrap: wrap;
568
+ gap: var(--gala-space-lg);
569
+ margin-block: var(--gala-space-md);
570
+ }
571
+ .gala-engagement dl > div { display: flex; flex-direction: column-reverse; gap: 0.1rem; }
572
+ .gala-engagement dt {
573
+ font-size: var(--gala-text-xs);
574
+ letter-spacing: var(--gala-tracking-wide);
575
+ text-transform: uppercase;
576
+ color: var(--gala-color-muted);
577
+ }
578
+ .gala-engagement dd {
579
+ margin: 0;
580
+ font-size: var(--gala-text-lg);
581
+ font-variant-numeric: tabular-nums;
582
+ }
583
+
584
+ .gala-reaction-actions { display: flex; flex-wrap: wrap; gap: var(--gala-space-2xs); }
585
+ .gala-comment-actions { display: flex; flex-wrap: wrap; gap: var(--gala-space-2xs); }
586
+ .gala-engagement-actions { display: grid; gap: var(--gala-space-sm); justify-items: start; }
587
+ .gala-engagement-actions > [data-follow-article] { inline-size: auto; }
588
+ .gala-share { margin-block-start: var(--gala-space-lg); }
@@ -1,19 +0,0 @@
1
- ---
2
- layout: layouts/base.njk
3
- title: Settings
4
- permalink: /settings/index.html
5
- ---
6
- <h1>Reader settings</h1>
7
- <section aria-labelledby="theme-setting">
8
- <h2 id="theme-setting">Theme</h2>
9
- <button type="button" data-theme-mode-toggle aria-label="Color mode: system. Activate for light.">Theme: system</button>
10
- </section>
11
- <section aria-labelledby="language-setting">
12
- <h2 id="language-setting">Language preference</h2>
13
- <p>Your preference highlights matching choices. The language in the page URL always controls the content.</p>
14
- <label>Preferred language
15
- <select data-language-preference>
16
- {% for language in languages %}<option value="{{ language | escape }}">{{ language }}</option>{% endfor %}
17
- </select>
18
- </label>
19
- </section>