Repository with sources and generator of https://larlet.fr/david/ https://larlet.fr/david/
Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

index.html 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318
  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>Tag #design — David Larlet</title>
  13. <meta name="description" content="Publications relatives au tag #design">
  14. <!-- That good ol' feed, subscribe :). -->
  15. <link rel="alternate" type="application/atom+xml" title="Feed" href="/david/log/">
  16. <!-- Generated from https://realfavicongenerator.net/ such a mess. -->
  17. <link rel="apple-touch-icon" sizes="180x180" href="/static/david/icons2/apple-touch-icon.png">
  18. <link rel="icon" type="image/png" sizes="32x32" href="/static/david/icons2/favicon-32x32.png">
  19. <link rel="icon" type="image/png" sizes="16x16" href="/static/david/icons2/favicon-16x16.png">
  20. <link rel="manifest" href="/static/david/icons2/site.webmanifest">
  21. <link rel="mask-icon" href="/static/david/icons2/safari-pinned-tab.svg" color="#07486c">
  22. <link rel="shortcut icon" href="/static/david/icons2/favicon.ico">
  23. <meta name="msapplication-TileColor" content="#f7f7f7">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f7f7f7" media="(prefers-color-scheme: light)">
  26. <meta name="theme-color" content="#272727" media="(prefers-color-scheme: dark)">
  27. <!-- Documented, feel free to shoot an email. -->
  28. <link rel="stylesheet" href="/static/david/css/style_2021-01-20.css">
  29. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  30. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  31. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t4_poly_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: light), (prefers-color-scheme: no-preference)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  36. <script>
  37. function toggleTheme(themeName) {
  38. document.documentElement.classList.toggle(
  39. 'forced-dark',
  40. themeName === 'dark'
  41. )
  42. document.documentElement.classList.toggle(
  43. 'forced-light',
  44. themeName === 'light'
  45. )
  46. }
  47. const selectedTheme = localStorage.getItem('theme')
  48. if (selectedTheme !== 'undefined') {
  49. toggleTheme(selectedTheme)
  50. }
  51. </script>
  52. <body class="remarkdown h1-underline h2-underline h3-underline em-underscore hr-center ul-star pre-tick" data-instant-intensity="viewport-all">
  53. <header>
  54. <h1>Publications relatives au tag #design</h1>
  55. </header>
  56. <nav>
  57. <p class="center">
  58. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  59. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  60. </svg> Accueil</a>
  61. • <a rel="tags" href="/david/#tags" title="Liste de toutes les étiquettes"><svg class="icon icon-tags">
  62. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-tags"></use>
  63. </svg> Étiquettes</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Liste des publications en ordre chronologique :</p>
  69. <h2><a href="/david/2021/01/15/" title="Lien permanent vers cet article">Artfevre</a> (2021-01-15)</h2>
  70. <details>
  71. <summary>Déplier pour lire le contenu de l’article</summary>
  72. <blockquote>
  73. <p>En Février il y a 28&nbsp;Jours. On vous propose d’utiliser chacun d’entre eux pour créer — de manière intensive et sans jugement — hors de notre <mark>zone de confort</mark>, et avec des contraintes imposées.</p>
  74. <p><cite><em><a href="https://artfevre.notmyidea.org/">Un février artistique&#8239;!</a></em> (<a href="/david/cache/2021/94923f2d3ecd28b40745665c9cbe8393/">cache</a>)</cite></p>
  75. </blockquote>
  76. <p>Je ne sais pas dans quoi est-ce que cela pourrait me mener et c’est ce qui m’intéresse. J’ai plein d’idées et je vais apprécier de me laisser guider par les thèmes et l’envie du moment. <strong>Merci Alexis pour l’invitation.</strong></p>
  77. <p>J’avais notamment été impressionné par le résultat de l’expérience d’Antoine&nbsp;:</p>
  78. <blockquote>
  79. <p>L’idée était venue presque par hasard. Profiter de deux mois dans une autre ville pour produire quelque chose. Avec une contrainte à s’imposer, et une certaine dimension de régularité. Le carnet comme support. Même si l’exploration de l’intime est souvent attirante l’écriture n’était pas une option viable à ce moment-là. Apprendre à dessiner. En deux mois. <mark>Chaque jour.</mark> Projet saugrenu dont il était facile de se détacher, au besoin.</p>
  80. <p><cite><em><a href="https://www.quaternum.net/2020/02/29/epuiser-la-pratique/">Épuiser la pratique</a></em> (<a href="/david/cache/2021/fd776407232cd6fd7627bac7dba39755/">cache</a>)</cite></p>
  81. </blockquote>
  82. </details>
  83. <h2><a href="/david/2021/01/17/" title="Lien permanent vers cet article">Finesse</a> (2021-01-17)</h2>
  84. <details>
  85. <summary>Déplier pour lire le contenu de l’article</summary>
  86. <blockquote>
  87. <p>Une <strong>espace fine insécable</strong> est un caractère typographique dont l’espace est un peu plus fine que l’espace insécable (une espace que l’on intercale entre deux parties qui ne doivent pas être séparées par un éventuel retour à la ligne automatique). Le code typographique français recommande une espace fine insécable devant les signes de ponctuation doubles sauf deux-points (point-virgule, point d’interrogation, point d’exclamation), et à l’intérieur des guillemets français pour les séparer du texte mis en exergue. Pour les nombres de quatre chiffres, l’espace fine insécable est préférable. On ne sépare pas les chiffres en tranches de trois pour un ordinal ou un numéro.</p>
  88. <p><cite><a href="https://fr.wikipedia.org/wiki/Espace_fine_ins%C3%A9cable">Espace fine insécable</a>, sur Wikipedia</cite></p>
  89. </blockquote>
  90. <p>Il y a depuis peu des espaces insécables <em>fine</em> sur cet espace (en plus des insécables classiques lorsque j’y pensais). C’est un détail mais j’arrive à faire la distinction entre les deux maintenant que j’ai pris conscience de cette différence.</p>
  91. <p><strong>Un petit pas de plus dans ma compréhension de ce domaine.</strong> Limite <em>snob</em> mais j’assume. Le plus difficile étant de faire la part des choses entre les différentes ressources à ce sujet qui ont tendance à se contre-dire (et je ne parle même pas des différences au sein de la francophonie…). Des choix — futiles donc indispensables — à faire, des affirmations à défaire, des raisonnements à refaire. C’est peut-être la définition de mon activité&#8239;!</p>
  92. <blockquote>
  93. <p>L’hypothèse selon laquelle le fonctionnement d’un système peut être amélioré par une intervention brutale sur ses éléments conscients traduit une <mark>dangereuse ignorance</mark>. Cette attitude fut trop longtemps celle des esprits qui se qualifient des épithètes de «&nbsp;scientifique&nbsp;» et de «&nbsp;technologues&nbsp;».</p>
  94. <p><cite><em>Le Jihad Butlérien</em>, par Harq al-Ada (<a href="/david/2020/12/21/#dune">Dune</a> III. Les enfants de Dune)</cite></p>
  95. </blockquote>
  96. </details>
  97. <h2><a href="/david/2021/05/26/" title="Lien permanent vers cet article">Follow</a> (2021-05-26)</h2>
  98. <details>
  99. <summary>Déplier pour lire le contenu de l’article</summary>
  100. <blockquote lang="en">
  101. <p>With a seat at the table and skin in the game, bang the drum for RSS and the open web. Like I said, it’s great to see early trials of RSS in the Chrome mobile browser and, for me, that’s <mark>a promising start</mark>.</p>
  102. <p><cite><em><a href="https://interconnected.org/home/2021/05/26/chrome_and_rss">Three requests for the Google Chrome team as they experiment with RSS</a></em> (<a href="/david/cache/2021/4a9c4c407b34c40ec5b3783ac5f274a7/">cache</a>)</cite></p>
  103. </blockquote>
  104. <p>L’une des choses que je retiens de cette expérience, c’est d’utiliser le terme «&nbsp;<span lang="en">Follow</span>&nbsp;» pour suivre des flux RSS. <strong>Au 21<sup>e</sup> siècle, on ne s’abonne plus, on suit.</strong> Et je me demande si je ne vais pas suivre (!) cette mouvance qui permet peut-être de mieux comprendre <a href="/david/blog/2019/flux-rss/">de quoi est-ce qu’il s’agit</a>. Notamment pour des personnes qui découvrent un site après avoir passé tant d’années <em>dans</em> des réseaux sociaux.</p>
  105. <p>Suivez-moi… mais pas de trop près quand même car ça devient vite flippant 😅.</p>
  106. </details>
  107. <h2><a href="/david/2021/05/31/" title="Lien permanent vers cet article">Design accessible</a> (2021-05-31)</h2>
  108. <details>
  109. <summary>Déplier pour lire le contenu de l’article</summary>
  110. <blockquote>
  111. <p>Ce projet représente des heures de lecture et de veille&#8239;; des heures de synthèse et de ré-ré-ré-écriture&#8239;; plus de 200&nbsp;commits (dont certains à 3&nbsp;heures du matin). C’est aussi mon premier «&nbsp;side-project&nbsp;» public donc je suis très fière d’avoir réussi à le sortir 💪.</p>
  112. <p><cite><em><a href="https://blog.hello-bokeh.fr/2021/05/31/design-accessible-la-genese-dun-projet/">Design Accessible, la genèse d’un projet</a></em> (<a href="/david/cache/2021/40df5f72a34059f94a965454efb97b07/">cache</a>)</cite></p>
  113. </blockquote>
  114. <p>Superbe projet de la part d’Anne-Sophie&nbsp;: <a href="https://design-accessible.fr/">Design Accessible</a> avec un joli article pour comprendre d’où ça vient, le temps que ça prend et tout.</p>
  115. <p>C’est assez rare d’avoir des sites de référence en français dans le domaine, je salue d’autant plus l’effort que j’ai eu à <a href="/david/2021/05/05/" title="Accessibilité">creuser le sujet</a> récemment.</p>
  116. </details>
  117. <h2><a href="/david/2021/06/24/" title="Lien permanent vers cet article">Long terme</a> (2021-06-24)</h2>
  118. <details>
  119. <summary>Déplier pour lire le contenu de l’article</summary>
  120. <blockquote lang="en">
  121. <p>Agile’s success at the expense of UX is just one manifestation of a deeper truth: Businesses want scaling. And foundational UX work doesn’t scale. It doesn’t lend itself to predictable, repeatable processes and generic cookie-cutter roles. It can’t, because by definition it deals with unknown, slippery, hard-to-define problems that characterize the leading edge of an organically evolving business.</p>
  122. <p>The same things that make agile a great fit for scaling engineering work—regular sprint tempos; clearly articulated outcomes to be produced; breaking down the complex, unfolding experience of users into concrete elements that can be tied to code—are the very things that make it a terrible fit for foundational UX work. <mark>The holism necessary to do foundational UX is antithetical to the assembly-line chunks of user behavior</mark> agile requires.</p>
  123. <p><cite><em><a href="https://www.fastcompany.com/90642462/i-helped-pioneer-ux-design-what-i-see-today-horrifies-me">I helped pioneer UX design. What I see today disturbs me</a></em> (<a href="/david/cache/2021/f5a7f2346b8c7317be12857b52321f52/">cache</a>)</cite></p>
  124. </blockquote>
  125. <p>Je ne vais pas me focaliser sur l’opposition agile/UX car il y a pas mal de façons de pratiquer ces deux domaines. C’est certain qu’il est malheureux d’avoir appelé ces itérations des <em>sprints</em> et qu’il faut réussir à avoir suffisamment de recul pour ne pas prendre ce terme au pied de la lettre (sinon ça finit par brûler).</p>
  126. <p><strong>Déterminer ensemble ce que l’on veut produire à long terme est très complexe pour une équipe.</strong> Le contexte change, les utilisateur·ices évoluent, l’équipe elle-même se renouvelle, dans cet espace mouvant il est difficile de conserver un semblant d’unité et de cohérence. Au moins vis-à-vis des interactions avec l’extérieur.</p>
  127. <p>On peut être tenté d’avoir recours à un <em>Design System</em> ou <a href="https://gouvfr.atlassian.net/wiki/spaces/DB/pages/736362561/Version+1.0.0">Système de Design</a> même si ce cadre arrive avec une lourdeur qui lui est propre. Ça peut donner l’impression de mettre une carrosserie sur une trottinette qui n’en nécessitait pas tant. C’est une réponse technique efficace (sans être performante) à une problématique qui a trait <a href="/david/2021/06/23/" title="FullStack">à l’humain et à l’empathie</a>.</p>
  128. <p>Comment combiner la tactique (faire à court terme) à la stratégie (penser à long terme) alors&#8239;? <strong>Sans technique</strong>, avec des <em>personnes</em> qui font le liant. Qui agrègent, qui reli(s)ent, qui partagent l’enthousiasme.</p>
  129. <p>Qui prennent soin. Qui donnent loin.</p>
  130. </details>
  131. <h2><a href="/david/2021/08/28/" title="Lien permanent vers cet article">Copie(s)</a> (2021-08-28)</h2>
  132. <details>
  133. <summary>Déplier pour lire le contenu de l’article</summary>
  134. <blockquote lang="en">
  135. <p>As long as there is design, there will be copying.</p>
  136. <p><cite><em><a href="https://matthewstrom.com/writing/copying/">Copying is the way design works</a></em> (<a href="/david/cache/2021/4072b1e628106ec95319062a87d21f47/">cache</a>)</cite></p>
  137. </blockquote>
  138. <p><em>Je trouve cela d’autant plus ironique de faire une copie locale de cet article.</em></p>
  139. <p>Je parcoure de vieux onglets ces derniers jours, cela permet de mieux évaluer si ce que j’ai conservé plusieurs mois dans mon navigateur est encore pertinent. Je redécouvre des choses, je croise des aspirations passées comme apprendre le <a href="http://lvogel.free.fr/tokipona/">toki pona</a> (merci <a href="http://shl.huld.re/~f6k/">f6k</a>), des infographies du début de la pandémie, des <a href="http://www.coureursdeboises.com/img/carte.pdf">cartes de ski de fond</a> de lieux qu’il reste à explorer, pas mal d’articles autour de la <a href="https://www.pikselkraft.com/les-ressources-pour-l-ecoconception-et-la-sobriete-numerique/">sobriété</a> (<a href="/david/cache/2021/07f65527fb51a3d31cfd7173bde1d76c/">cache</a>), de la <a href="https://www.the-trouble.com/content/2021/2/11/ecosocialism-is-the-horizon-degrowth-is-the-way">décroissance</a> (<a href="/david/cache/2021/e554fd03f2342ab72115688dd258cba4/">cache</a>) et <a href="https://wiki.lescommuns.org/wiki/Low-tech_et_Communs">des communs</a> (<a href="/david/cache/2021/7a21fd7cca573df8b35b973d8ee080c8/">cache</a>), <a href="https://timdaub.github.io/2021/01/16/web-principles/">beaucoup</a> (<a href="/david/cache/2021/63317c91823b52571b851e7a27eb7b4f/">cache</a>) de <a href="https://evilmartians.com/chronicles/how-to-favicon-in-2021-six-files-that-fit-most-needs">technique</a> (<a href="/david/cache/2021/23d224bccb7af8db5017cebf813fec56/">cache</a>) <a href="https://bart.degoe.de/building-a-full-text-search-engine-150-lines-of-code/">bien sûr</a> (<a href="/david/cache/2021/b56bb56209a04e6144454283a22311ad/">cache</a>), des <a href="https://adamwilt.com/fieldmonitor/">outils</a> <a href="https://sites.google.com/site/starryskystacker/home">autour</a> de la photo/vidéo… et déjà pas mal de 404.</p>
  140. <p>C’est presque de la pré-archéologie.</p>
  141. </details>
  142. <h2><a href="/david/2021/10/02/" title="Lien permanent vers cet article">Redesign</a> (2021-10-02)</h2>
  143. <details>
  144. <summary>Déplier pour lire le contenu de l’article</summary>
  145. <blockquote lang="en">
  146. <p>So what you see here isn’t me.</p>
  147. <p>Without the safety of this website my flaws and vices are clear: I’m often lazy and uncoordinated. I don’t have a lot of natural social grace (or rather it takes a long time for me to warm up to charming). My ego gets in the way all the time, and I’m so very jealous of everyone around me. Also: I’m perpetually, completely, infinitely terrified of everything.</p>
  148. <p>So websites are weird like that. They’re a fun house of mirrors that can be manipulated in every which way to hide who the author really is. And I don’t mean that in a cynical way, I mean to say this with a dash of optimism: <mark>with this website I can redesign myself as much as I do the homepage</mark> (I hope you like the new one).</p>
  149. <p>With this website I can figure out who I want to be.</p>
  150. <p><cite><em><a href="https://www.robinrendle.com/notes/from-the-distance-of-this-website/">From the distance of this website</a></em> (<a href="/david/cache/2021/4bf85f63126b56e9757b6ae0b2edf59c/">cache</a>)</cite></p>
  151. </blockquote>
  152. <p>Cela fait longtemps que je n’ai pas revu le design de ce site et de sa page d’accueil. Je pourrais y voir une certaine signification, celle qu’il soit encore en accord avec une image que j’ai envie de partager de moi-même. Entre le manque de mouvement et la flemme, il y a une troisième voie (voix&#8239;?)&nbsp;: un truc qui fonctionne suffisamment bien pour pouvoir porter mon attention ailleurs.</p>
  153. </details>
  154. <h2><a href="/david/2021/10/24/" title="Lien permanent vers cet article">Représentation</a> (2021-10-24)</h2>
  155. <details>
  156. <summary>Déplier pour lire le contenu de l’article</summary>
  157. <p>Je trouve les possibilités offertes par <a href="https://anvaka.github.io/city-roads/">cet outil</a> vraiment esthétiques. L’image finale est intéressante mais savoir qu’elle est le résultat d’une multitude de réajustement fondée sur le volontariat et le partage lui donne une autre dimension. Je l’imagine en poster avec la signature de milliers d’auteur·ices.</p>
  158. <p>Par exemple <a href="https://anvaka.github.io/city-roads/?q=montreal&amp;areaId=3601634158">pour Montréal</a>, on distingue très bien l’île, flottant au milieu du St Laurent&nbsp;:</p>
  159. <figure>
  160. <a href="#montreal-roads"
  161. title="Cliquer pour une version haute résolution">
  162. <img src="/static/david/2021/montreal-roads.png" alt="Les routes sur l’île de Montréal"
  163. loading="lazy" width="3304" height="1858" />
  164. </a>
  165. <a href="#_" class="lightbox" id="montreal-roads">
  166. <img src="/static/david/2021/montreal-roads.png" alt="Les routes sur l’île de Montréal"
  167. loading="lazy" width="3304" height="1858" />
  168. </a>
  169. <figcaption>Où l’on remarque aussi que l’île ne comporte pas seulement la commune de Montréal (d’où les espaces blancs).</figcaption>
  170. </figure>
  171. <p>Cela donne une idée du poids des routes (répertoriées dans OpenStreetMap) pour une agglomération donnée. On peut aussi y voir l’histoire des différentes remodélisations de la ville (coucou <a href="https://anvaka.github.io/city-roads/?q=barcelona&amp;areaId=3600347950">Barcelone</a>). Il y a plein de choses à (se) représenter grâce à un outil qui n’est techniquement pas si complexe.</p>
  172. <p><em>Attention&nbsp;: pour certaines villes le chargement peut être extrêmement volumineux.</em></p>
  173. </details>
  174. <h2><a href="/david/2021/11/17/" title="Lien permanent vers cet article">Apprentissages</a> (2021-11-17)</h2>
  175. <details>
  176. <summary>Déplier pour lire le contenu de l’article</summary>
  177. <p>Ça fait pas mal de temps que je trouve inspirant ce qu’a fait Simon Willison avec <a href="https://til.simonwillison.net/">ses <abbr title="Thing’s I’ve Learned" lang="en">TIL</abbr></a>. Une façon de partager des frictions techniques quotidiennes pour documenter — et potentiellement aider d’autres personnes.</p>
  178. <p>Ce serait une bonne occasion d’essayer <a href="https://datasette.io/">datasette</a> aussi mais c’est peut-être un peu trop dynamique à mon goût. Idéalement, ce serait déposer des bouts de code sur <a href="https://sr.ht/~davidbgk/">sourcehut</a> et les <a href="https://srht.site/automating-deployments">déployer automatiquement</a> là-bas aussi, sur mon <a href="https://srht.site/custom-domains">propre sous-domaine</a>.</p>
  179. <p>Je vais laisser cette idée mâturer un peu, ça pourrait faire l’objet d’un cru 2022.</p>
  180. </details>
  181. </main>
  182. <hr>
  183. <footer>
  184. <p>
  185. <a href="/david/" title="Aller à l’accueil"><svg class="icon icon-home">
  186. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-home"></use>
  187. </svg> Accueil</a> •
  188. <a href="/david/log/" title="Accès au flux RSS"><svg class="icon icon-rss2">
  189. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-rss2"></use>
  190. </svg> Suivre</a> •
  191. <a href="http://larlet.com" title="Go to my English profile" data-instant><svg class="icon icon-user-tie">
  192. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-user-tie"></use>
  193. </svg> Pro</a> •
  194. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel"><svg class="icon icon-mail">
  195. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-mail"></use>
  196. </svg> Email</a> •
  197. <abbr class="nowrap" title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340"><svg class="icon icon-hammer2">
  198. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-hammer2"></use>
  199. </svg> Légal</abbr>
  200. </p>
  201. <template id="theme-selector">
  202. <form>
  203. <fieldset>
  204. <legend><svg class="icon icon-brightness-contrast">
  205. <use xlink:href="/static/david/icons2/symbol-defs.svg#icon-brightness-contrast"></use>
  206. </svg> Thème</legend>
  207. <label>
  208. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  209. </label>
  210. <label>
  211. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  212. </label>
  213. <label>
  214. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  215. </label>
  216. </fieldset>
  217. </form>
  218. </template>
  219. </footer>
  220. <script src="/static/david/js/instantpage-5.1.0.min.js" type="module"></script>
  221. <script>
  222. function loadThemeForm(templateName) {
  223. const themeSelectorTemplate = document.querySelector(templateName)
  224. const form = themeSelectorTemplate.content.firstElementChild
  225. themeSelectorTemplate.replaceWith(form)
  226. form.addEventListener('change', (e) => {
  227. const chosenColorScheme = e.target.value
  228. localStorage.setItem('theme', chosenColorScheme)
  229. toggleTheme(chosenColorScheme)
  230. })
  231. const selectedTheme = localStorage.getItem('theme')
  232. if (selectedTheme && selectedTheme !== 'undefined') {
  233. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  234. }
  235. }
  236. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  237. window.addEventListener('load', () => {
  238. let hasDarkRules = false
  239. for (const styleSheet of Array.from(document.styleSheets)) {
  240. let mediaRules = []
  241. for (const cssRule of styleSheet.cssRules) {
  242. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  243. continue
  244. }
  245. // WARNING: Safari does not have/supports `conditionText`.
  246. if (cssRule.conditionText) {
  247. if (cssRule.conditionText !== prefersColorSchemeDark) {
  248. continue
  249. }
  250. } else {
  251. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  252. continue
  253. }
  254. }
  255. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  256. }
  257. // WARNING: do not try to insert a Rule to a styleSheet you are
  258. // currently iterating on, otherwise the browser will be stuck
  259. // in a infinite loop…
  260. for (const mediaRule of mediaRules) {
  261. styleSheet.insertRule(mediaRule.cssText)
  262. hasDarkRules = true
  263. }
  264. }
  265. if (hasDarkRules) {
  266. loadThemeForm('#theme-selector')
  267. }
  268. })
  269. </script>
  270. </body>
  271. </html>