Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

index.html 26KB

8 ay önce
8 ay önce
8 ay önce
8 ay önce
8 ay önce
8 ay önce
8 ay önce
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461
  1. <!DOCTYPE html><!-- This is a valid HTML5 document. -->
  2. <!-- Screen readers, SEO, extensions and so on. -->
  3. <html lang="fr">
  4. <!-- Has to be within the first 1024 bytes, hence before the `title` element
  5. See: https://www.w3.org/TR/2012/CR-html5-20121217/document-metadata.html#charset -->
  6. <meta charset="utf-8">
  7. <!-- Why no `X-UA-Compatible` meta: https://stackoverflow.com/a/6771584 -->
  8. <!-- The viewport meta is quite crowded and we are responsible for that.
  9. See: https://codepen.io/tigt/post/meta-viewport-for-2015 -->
  10. <meta name="viewport" content="width=device-width,initial-scale=1">
  11. <!-- Required to make a valid HTML5 document. -->
  12. <title>
  13. Étiquette #déception
  14. — David Larlet</title>
  15. <script>
  16. function toggleTheme(themeName) {
  17. document.documentElement.classList.toggle(
  18. 'forced-dark',
  19. themeName === 'dark'
  20. )
  21. document.documentElement.classList.toggle(
  22. 'forced-light',
  23. themeName === 'light'
  24. )
  25. }
  26. const selectedTheme = localStorage.getItem('theme')
  27. if (selectedTheme !== 'undefined') {
  28. toggleTheme(selectedTheme)
  29. }
  30. </script>
  31. <!-- Documented, feel free to shoot an email. -->
  32. <link rel="stylesheet" href="/static/david/css/style_2024-03-09.css">
  33. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  34. <link rel="preload"
  35. href="/static/david/css/fonts/century_supra_ot_a_regular.woff2"
  36. as="font"
  37. type="font/woff2"
  38. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  39. crossorigin>
  40. <link rel="preload"
  41. href="/static/david/css/fonts/century_supra_ot_a_bold.woff2"
  42. as="font"
  43. type="font/woff2"
  44. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  45. crossorigin>
  46. <link rel="preload"
  47. href="/static/david/css/fonts/century_supra_ot_a_italic.woff2"
  48. as="font"
  49. type="font/woff2"
  50. media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)"
  51. crossorigin>
  52. <link rel="preload"
  53. href="/static/david/css/fonts/century_supra_ot_b_regular.woff2"
  54. as="font"
  55. type="font/woff2"
  56. media="(prefers-color-scheme: dark)"
  57. crossorigin>
  58. <link rel="preload"
  59. href="/static/david/css/fonts/century_supra_ot_b_bold.woff2"
  60. as="font"
  61. type="font/woff2"
  62. media="(prefers-color-scheme: dark)"
  63. crossorigin>
  64. <link rel="preload"
  65. href="/static/david/css/fonts/century_supra_ot_b_italic.woff2"
  66. as="font"
  67. type="font/woff2"
  68. media="(prefers-color-scheme: dark)"
  69. crossorigin>
  70. <meta name="description" content="Publications relatives au tag #déception">
  71. <!-- That good ol' feed, subscribe :). -->
  72. <link rel="alternate"
  73. type="application/atom+xml"
  74. title="Feed"
  75. href="/david/log/">
  76. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  77. <link rel="apple-touch-icon"
  78. sizes="180x180"
  79. href="/static/david/icons2/apple-touch-icon.png">
  80. <link rel="icon"
  81. type="image/png"
  82. sizes="32x32"
  83. href="/static/david/icons2/favicon-32x32.png">
  84. <link rel="icon"
  85. type="image/png"
  86. sizes="16x16"
  87. href="/static/david/icons2/favicon-16x16.png">
  88. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  89. <link rel="mask-icon"
  90. href="/static/david/icons2/safari-pinned-tab.svg"
  91. color="#07486c">
  92. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  93. <meta name="msapplication-TileColor" content="#f7f7f7">
  94. <meta name="msapplication-config"
  95. content="/static/david/icons2/browserconfig.xml">
  96. <meta name="theme-color"
  97. content="#f7f7f7"
  98. media="(prefers-color-scheme: light)">
  99. <meta name="theme-color"
  100. content="#272727"
  101. media="(prefers-color-scheme: dark)">
  102. <!-- Is that even respected? Retrospectively? What a shAItshow…
  103. https://neil-clarke.com/block-the-bots-that-feed-ai-models-by-scraping-your-website/ -->
  104. <meta name="robots" content="noai, noimageai">
  105. <style type="text/css">
  106. details[open] summary {
  107. display: none;
  108. }
  109. </style>
  110. <body data-instant-intensity="viewport-all">
  111. <article>
  112. <header>
  113. <hgroup>
  114. <h1>#déception</h1>
  115. <p>Publications relatives à cette étiquette</p>
  116. </hgroup>
  117. </header>
  118. <nav>
  119. <p>
  120. <a href="/david/" title="Aller à l’accueil">
  121. Accueil</a>
  122. <a rel="tags"
  123. href="/david/2024/#tags"
  124. title="Liste de toutes les étiquettes">
  125. Étiquettes</a>
  126. <a href="/david/recherche/" title="Aller à la page de recherche" rel="search" data-no-instant>Recherche</a>
  127. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  128. </p>
  129. </nav>
  130. <h2>
  131. <a href="/david/2024/03/07/" title="Lien permanent vers cet article">Sondages</a> <time datetime="2024-03-07">7 mars 2024</time>
  132. </h2>
  133. <blockquote>
  134. <p><mark>Une faible majorité</mark> des votants estime qu’il faut mentionner dans le résumé introductif le nom pré-transition d’une personne transgenre qui a acquis sous cette ancienne identité une notoriété suffisante pour remplir les critères&nbsp;d’admissibilité.</p>
  135. <p>Dans leurs verbatims, les partisans de la mention du morinom insistent sur le caractère encyclopédique de l’information (62), puisque les sujets concernés ont acquis la notoriété sous leur ancien nom (50) et qu’elle s’appuie sur des sources secondaires publiques (31). Il convient selon eux d’indiquer de façon claire et accessible (31), sans réécriture de l’histoire (22), cette information utile au lecteur (15). Ils estiment que les biographies des personnes transgenres ne doivent pas être traitées différemment des autres (14) et rappellent que sur Wikipédia le sujet d’une biographie n’a pas de privilège éditorial sur son contenu (8). Si à leur sens l’information doit figurer dans l’article, il est en revanche inopportun de la répéter&nbsp;(24).</p>
  136. <p>Les opposants arguent quant à eux que la mention du morinom est nuisible aux personnes concernées (83) ou constitue un manque de respect pour le sujet de la biographie (40). Ils considèrent qu’un nom obsolète ne peut pas être encyclopédique (37), qu’il s’agit d’une information privée (38), inutile (36), dont la mention est transphobe (17). L’avis d’une personne transgenre sujet d’une biographie doit selon eux être respecté&nbsp;(29).</p>
  137. <p><cite><em><a data-link-domain="fr.wikipedia.org" href="https://fr.wikipedia.org/wiki/Wikip%C3%A9dia:Sondage/Mention_du_nom_de_naissance_pour_les_personnes_trans/R%C3%A9sultats">Wikipédia:Sondage/Mention du nom de naissance pour les personnes&nbsp;trans/Résultats</a></em></cite></p>
  138. </blockquote>
  139. <p>54% des 357&nbsp;avis décomptés. Tristesse <a href="/david/2024/02/29/" title="Wikipédia">anticipée</a>.</p>
  140. <p>Wikipedia est le seul service centralisé sur le Web qui ne souffre d’aucune concurrence. Alors les luttes sont internes, pour décrire le monde tel qu’il est perçu par une certaine population, que l’autre partie de la population prendra pour vérité. Il y a probablement un truc mâle·sain dans tout&nbsp;ça.</p>
  141. <blockquote lang="en">
  142. <p>Today, the French-speaking Wikipedia passed a decision to deadname trans people in their&nbsp;biographies.</p>
  143. <p>Some will argue that this makes WP-FR transphobic, and there is certainly something to it: while Wikipedia is not a monolithic institution, and while I am critical of the phrase &quot;Wikipedian community&quot;, it is a fact that WP-FR is effectively controlled by people hostile or indifferent to&nbsp;inclusion.</p>
  144. <p>But <mark>this decision is utterly un-Wikipedian,</mark> and therefore lacks any legitimity, for&nbsp;2&nbsp;reasons</p>
  145. <p><em><a data-link-domain="bagarrosphere.fr" href="https://bagarrosphere.fr/@photos_floues/112047957955051151">Rama sur&nbsp;Mastodon</a></em></p>
  146. </blockquote>
  147. <a href="#hr-102" title="Lien vers cette section de la page"><hr id="hr-102" /></a>
  148. <blockquote lang="en">
  149. <p>CSS <code>:has()</code> is a powerful feature that opens a lot of possibilities that weren’t possible before. It literally gives us CSS superpowers! I recommend you start using it today and experiment with&nbsp;it.</p>
  150. <p><cite><em><a data-link-domain="ishadeed.com" href="https://ishadeed.com/article/css-has-guide/" hreflang="en"
  151. title="Consultation de l’article (anglais)">CSS&nbsp;:has() Interactive Guide</a>
  152. <a href="/david/cache/2024/02eaae467a3a88479393c9fe026f655a/" hreflang="en"
  153. data-tippy data-description="Everything you need to know about CSS :has() selector."
  154. data-source="https://ishadeed.com/article/css-has-guide/"
  155. data-date="2024-03-07"
  156. data-favicon="https://ishadeed.com/assets/favicon-32x32.png"
  157. data-domain="ishadeed.com"
  158. ><svg xmlns="http://www.w3.org/2000/svg"
  159. width="24" height="24" viewBox="0 0 24 24" fill="none"
  160. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  161. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  162. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  163. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  164. </svg>
  165. <span class="sr-only">[archive]</span></a></em></cite></p>
  166. </blockquote>
  167. <p>Incroyable article d’Ahmad Shadeed complété par <a data-link-domain="piccalil.li" href="https://piccalil.li/blog/some-little-ways-im-using-css-has-in-the-real-world/" hreflang="en"
  168. title="Consultation de l’article (anglais)">d’autres cas pratiques</a>
  169. <a href="/david/cache/2024/529fce4c2b7c378f07aead94e62d3923/" hreflang="en"
  170. data-tippy data-description="I’ve created some low fidelity demos of :has() snippets that I’ve been using in real-world client projects."
  171. data-source="https://piccalil.li/blog/some-little-ways-im-using-css-has-in-the-real-world/"
  172. data-date="2024-03-07"
  173. data-favicon="https://piccalil.li/images/favicon-32x32.png"
  174. data-domain="piccalil.li"
  175. ><svg xmlns="http://www.w3.org/2000/svg"
  176. width="24" height="24" viewBox="0 0 24 24" fill="none"
  177. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  178. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  179. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  180. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  181. </svg>
  182. <span class="sr-only">[archive]</span></a> d’Andy Bell qui m’ont donné envie de jouer avec sur <a href="/david/">ma page d’accueil</a>. C’est subtil et je reviendrai dessus mais je trouve ça intéressant pour montrer le lien entre les articles de l’année et leurs étiquettes. Cela ne m’embête pas que ce ne soit pas accessible à des doigts, au clavier et/ou aux anciens navigateurs car c’est du bonus. En effet, c’est du Baseline2023™ <a data-link-domain="MDN" href="https://developer.mozilla.org/en-US/docs/Web/CSS/:has">niveau support</a>.</p>
  183. <p>Je me suis rendu compte en consultant les résultats de <a data-link-domain="social.lol" href="https://social.lol/@brandonwrites/112045044489173328">ce sondage</a> (92% des 363&nbsp;personnes ayant répondu vont consulter les archives d’un blog qu’elles découvrent) qu’il n’était pas évident de découvrir ce que je raconte par ici. Surtout avec des titres à un seul mot, aussi je tente des choses pour rendre plus explicite la toile qui est tissée quotidiennement. Depuis bientôt&nbsp;20&nbsp;ans.</p>
  184. <a href="#hr-103" title="Lien vers cette section de la page"><hr id="hr-103" /></a>
  185. <blockquote lang="en">
  186. <p>A <strong>title drop</strong> is when a character in a movie says the title of the movie they’re in. Here’s a large-scale analysis of 73,921&nbsp;movies from the last 80&nbsp;years on how often, when and maybe even why that&nbsp;happens.</p>
  187. <p><cite><em><a data-link-domain="titledrops.net" href="https://www.titledrops.net/">Full Of&nbsp;Themselves</a></em></cite></p>
  188. </blockquote>
  189. <p>Parfois tu tombes sur un site qui a demandé un effort non négligeable et tu te dis <del>à quoi bon</del> trop&nbsp;génial&#8239;!</p>
  190. <blockquote>
  191. <p>So who are the most excessive offenders in mentioning their titles over the course of the film? The overall star when it comes to fiction only came out last year: it’s Barbie by Greta Gerwig with an impressive 267&nbsp;title drops within its 1&nbsp;hour and 54&nbsp;minutes runtime, clocking in at a whopping 2.34&nbsp;BPM (Barbies Per&nbsp;Minute).</p>
  192. <p><cite><em>Ibid.</em></cite></p>
  193. </blockquote>
  194. <p>Je comprends mieux mon&nbsp;endormissement.</p>
  195. <nav>
  196. <p>
  197. <a href="/david/2024/commun/"
  198. title="Liste de tous les articles 2024 associés à cette étiquette"
  199. rel="tag">#commun</a>
  200. <a href="/david/2024/deception/"
  201. title="Liste de tous les articles 2024 associés à cette étiquette"
  202. rel="tag">#déception</a>
  203. <a href="/david/2024/web/"
  204. title="Liste de tous les articles 2024 associés à cette étiquette"
  205. rel="tag">#web</a>
  206. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  207. </p>
  208. </nav>
  209. <h2>
  210. <a href="/david/2024/02/29/" title="Lien permanent vers cet article">Wikipédia</a> <time datetime="2024-02-29">29 février 2024</time>
  211. </h2>
  212. <blockquote>
  213. <p>Petit récapitulatif pour moi-même de la controverse qui agite la version francophone de Wikipédia et ses communautés. Bien que j’aimerai écrire plus longuement sur le sujet, je n’ai pas la bande passante nocturne pour le faire encore moins diurne. <mark>Je travaille de façon ouverte en espérant que les esprits refroidis retrouveront un brin de lucidité.</mark> Wikipédia est un projet important, chacun y contribue à sa manière, j’essaie de poser quelques bases pour éventuellement développer plus en détails certains points à l’avenir. Une note de synthèse en quelques&nbsp;sortes.</p>
  214. <p><cite><em><a data-link-domain="write.apreslanu.it" href="https://write.apreslanu.it/tk/wikipedia-ou-la-desillusion-de-lintelligence-collective" hreflang="fr"
  215. title="Consultation de l’article">Wikipédia ou la désillusion de l’intelligence collective</a>
  216. <a href="/david/cache/2024/71d5226ddc436248164884b12f15ed42/" hreflang="fr"
  217. data-tippy data-description="Petit récapitulatif pour moi-même de la controverse qui agite la version francophone de Wikipédia et ses communautés. Bien que j’aimerai ..."
  218. data-source="https://write.apreslanu.it/tk/wikipedia-ou-la-desillusion-de-lintelligence-collective"
  219. data-date="2024-03-01"
  220. data-favicon="https://write.apreslanu.it/favicon.ico"
  221. data-domain="write.apreslanu.it"
  222. ><svg xmlns="http://www.w3.org/2000/svg"
  223. width="24" height="24" viewBox="0 0 24 24" fill="none"
  224. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  225. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  226. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  227. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  228. </svg>
  229. <span class="sr-only">[archive]</span></a></em></cite></p>
  230. </blockquote>
  231. <p>Cela fait quelques jours que j’observe la situation en essayant de ne pas réagir à chaud. Je vois d’un côté des personnes qui souhaitent documenter des faits «&nbsp;historiques&nbsp;» sans en subir aucune conséquence et de l’autre des personnes qui ont bien souvent souffert et souffrent encore de cette histoire, sans compter les potentiels risques actuels et futurs&nbsp;encourus.</p>
  232. <p>Ce résumé est sûrement caricatural <em>et</em> je peux passer outre mon besoin de savoir encyclopédique pour la sécurité physique et mentale d’autres&nbsp;personnes.</p>
  233. <p>Une pensée pour les personnes concernées qui sont impliquées et contributrices régulières, ça ne doit pas être évident de garder la motivation après&nbsp;ça&nbsp;💜.</p>
  234. <blockquote>
  235. <p>Comment comprendre cette contradiction entre volonté de transparence et&nbsp;d’entre-soi&#8239;?</p>
  236. <p><cite><em><a data-link-domain="crowdagger.fr" href="https://crowdagger.fr/wikipedia-et-le-necronyme-des-personnes-trans-linsoutenable-neutralite-du-point-de-vue/" hreflang="fr"
  237. title="Consultation de l’article">Wikipédia et le nécronyme des personnes trans&nbsp;: l’insoutenable neutralité du point de vue&#8239;?</a>
  238. <a href="/david/cache/2024/1eec2b195d91939cdc7bad71b40021bd/" hreflang="fr"
  239. data-tippy data-description="Tentative de comprendre le conflit sur Wikipédia francophone autour du nécronyme des personnes trans"
  240. data-source="https://crowdagger.fr/wikipedia-et-le-necronyme-des-personnes-trans-linsoutenable-neutralite-du-point-de-vue/"
  241. data-date="2024-03-01"
  242. data-favicon="https://crowdagger.fr/wp-content/uploads/2021/11/cropped-facivon-32x32.png"
  243. data-domain="crowdagger.fr"
  244. ><svg xmlns="http://www.w3.org/2000/svg"
  245. width="24" height="24" viewBox="0 0 24 24" fill="none"
  246. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  247. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  248. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  249. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  250. </svg>
  251. <span class="sr-only">[archive]</span></a></em></cite></p>
  252. </blockquote>
  253. <a href="#hr-95" title="Lien vers cette section de la page"><hr id="hr-95" /></a>
  254. <p>Si jamais vous avez un code Python qui doit tourner sous Windows et qui semble avoir des problème d’encodage (notamment sur <code>Path().read/write_text()</code>), <a data-link-domain="dev.to" href="https://dev.to/methane/python-use-utf-8-mode-on-windows-212i">vous pouvez tenter</a> la variable d’environnement <code>PYTHONUTF8=1</code> ou le paramètre <code>-Xutf8</code> pour lancer Python&nbsp;3.7+.</p>
  255. <a href="#hr-96" title="Lien vers cette section de la page"><hr id="hr-96" /></a>
  256. <blockquote lang="en">
  257. <p>25&nbsp;January 1999&nbsp;was my first day at W3C. I was 23&nbsp;years old when I started. I’ve now spent more than half my life at that. <mark>I regret nothing</mark> because I find the work I do really interesting, important, meaningful; and I don’t tire of it because I feel like there’s renewal every now and&nbsp;then.</p>
  258. <p><cite><em><a data-link-domain="blog.koalie.net" href="https://blog.koalie.net/2024/02/29/25th-work-anniversary/" hreflang="en"
  259. title="Consultation de l’article (anglais)">25th work anniversary</a>
  260. <a href="/david/cache/2024/d74f376e53fc6a1108c59b6e6fa57ba1/" hreflang="en"
  261. data-tippy data-description="25 January 1999 was my first day at W3C. I was 23 years old when I started. I’ve now spent more than half my life at that. I regret nothing because I find the work I do really interesting, im…"
  262. data-source="https://blog.koalie.net/2024/02/29/25th-work-anniversary/"
  263. data-date="2024-03-01"
  264. data-favicon="https://blog.koalie.net/wp-content/uploads/2023/12/cropped-koalie-meiji-shrine-cropped-400px-32x32.jpeg"
  265. data-domain="blog.koalie.net"
  266. ><svg xmlns="http://www.w3.org/2000/svg"
  267. width="24" height="24" viewBox="0 0 24 24" fill="none"
  268. stroke="currentColor" stroke-width="2" stroke-linecap="square"
  269. stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle>
  270. <path d="M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3"></path>
  271. <line x1="12" y1="17" x2="12.01" y2="17"></line>
  272. </svg>
  273. <span class="sr-only">[archive]</span></a></em></cite></p>
  274. </blockquote>
  275. <p>Dans la catégorie pas-toutes-les-héroïnes-ne-portent-de-capes, koalie tient une belle&nbsp;place&nbsp;🙇.</p>
  276. <nav>
  277. <p>
  278. <a href="/david/2024/commun/"
  279. title="Liste de tous les articles 2024 associés à cette étiquette"
  280. rel="tag">#commun</a>
  281. <a href="/david/2024/deception/"
  282. title="Liste de tous les articles 2024 associés à cette étiquette"
  283. rel="tag">#déception</a>
  284. <a href="/david/2024/psychologie/"
  285. title="Liste de tous les articles 2024 associés à cette étiquette"
  286. rel="tag">#psychologie</a>
  287. <a href="/david/2024/#tags" title="Liste de toutes les étiquettes 2024">tous ?</a>
  288. </p>
  289. </nav>
  290. <form action="/david/recherche/" method="get">
  291. <fieldset>
  292. <legend>Recherche</legend>
  293. <label for="input-search">Termes de votre recherche :</label>
  294. <input id="input-search" type="search" name="s" aria-describedby="indexation-infos" required>
  295. <input type="submit" value="Chercher">
  296. <p id="indexation-infos">
  297. <small>
  298. Seuls les contenus de ces 8 dernières années sont indexés.
  299. </small>
  300. </p>
  301. </fieldset>
  302. </form>
  303. <aside>
  304. <theme-toggle></theme-toggle>
  305. </aside>
  306. </article>
  307. <hr>
  308. <footer>
  309. <p>
  310. <a href="/david/" title="Aller à l’accueil">Accueil</a>
  311. <a href="/david/log/" title="Accès au flux RSS">Suivre</a>
  312. <a href="http://larlet.com"
  313. title="Go to my English profile"
  314. data-instant>Pro</a>
  315. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">Email</a>
  316. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">Légal</abbr>
  317. </p>
  318. <template id="theme-selector">
  319. <form>
  320. <style type="text/css">
  321. fieldset div {
  322. text-align: center;
  323. }
  324. </style>
  325. <fieldset>
  326. <legend>Thème</legend>
  327. <div>
  328. <label>
  329. <input type="radio" value="auto" name="chosen-color-scheme" checked>
  330. Auto
  331. </label>
  332. <label>
  333. <input type="radio" value="dark" name="chosen-color-scheme">
  334. Foncé
  335. </label>
  336. <label>
  337. <input type="radio" value="light" name="chosen-color-scheme">
  338. Clair
  339. </label>
  340. </div>
  341. </fieldset>
  342. </form>
  343. </template>
  344. </footer>
  345. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  346. <script>
  347. class ThemeToggle extends HTMLElement {
  348. constructor() {
  349. super()
  350. const themeSelectorTemplate = document.querySelector('#theme-selector')
  351. const form = themeSelectorTemplate.content.firstElementChild
  352. this.attachShadow({ mode: 'open' })
  353. this.shadowRoot.appendChild(form.cloneNode(true))
  354. }
  355. connectedCallback() {
  356. const form = this.shadowRoot.querySelector('form')
  357. form.addEventListener('change', (e) => {
  358. const chosenColorScheme = e.target.value
  359. localStorage.setItem('theme', chosenColorScheme)
  360. toggleTheme(chosenColorScheme)
  361. })
  362. const selectedTheme = localStorage.getItem('theme')
  363. if (selectedTheme && selectedTheme !== 'undefined') {
  364. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  365. }
  366. }
  367. }
  368. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  369. window.addEventListener('load', () => {
  370. let colorsLayer = undefined
  371. let hasDarkRules = false
  372. for (const styleSheet of Array.from(document.styleSheets)) {
  373. let mediaRules = []
  374. for (const layerRule of styleSheet.cssRules) {
  375. if (!(layerRule instanceof CSSLayerBlockRule)) {
  376. continue
  377. }
  378. if (layerRule.name === 'colors') {
  379. colorsLayer = layerRule
  380. }
  381. for (const cssRule of layerRule.cssRules) {
  382. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  383. continue
  384. }
  385. // WARNING: Safari does not have/supports `conditionText`.
  386. if (cssRule.conditionText) {
  387. if (cssRule.conditionText !== prefersColorSchemeDark) {
  388. continue
  389. }
  390. } else {
  391. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  392. continue
  393. }
  394. }
  395. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  396. }
  397. }
  398. // WARNING: do not try to insert a Rule to a styleSheet you are
  399. // currently iterating on, otherwise the browser will be stuck
  400. // in a infinite loop…
  401. for (const mediaRule of mediaRules) {
  402. // Safari requires the `0` second parameter (even if default).
  403. colorsLayer.insertRule(mediaRule.cssText, 0)
  404. hasDarkRules = true
  405. }
  406. }
  407. if (hasDarkRules) {
  408. if ('customElements' in window && !customElements.get('theme-toggle')) {
  409. customElements.define('theme-toggle', ThemeToggle)
  410. }
  411. }
  412. })
  413. </script>
  414. </body>
  415. </html>