A place to cache linked articles (think custom and personal wayback machine)
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

index.html 25KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  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>
  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>Bye bye Amazon : “Il en va de la responsabilité de chaque éditeur” (archive) — David Larlet</title>
  13. <meta name="description" content="Publication mise en cache pour en conserver une trace.">
  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="#f0f0ea">
  24. <meta name="msapplication-config" content="/static/david/icons2/browserconfig.xml">
  25. <meta name="theme-color" content="#f0f0ea">
  26. <!-- Documented, feel free to shoot an email. -->
  27. <link rel="stylesheet" href="/static/david/css/style_2020-06-19.css">
  28. <!-- See https://www.zachleat.com/web/comprehensive-webfonts/ for the trade-off. -->
  29. <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>
  30. <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>
  31. <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>
  32. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_regular.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  33. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_bold.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  34. <link rel="preload" href="/static/david/css/fonts/triplicate_t3_italic.woff2" as="font" type="font/woff2" media="(prefers-color-scheme: dark)" crossorigin>
  35. <script type="text/javascript">
  36. function toggleTheme(themeName) {
  37. document.documentElement.classList.toggle(
  38. 'forced-dark',
  39. themeName === 'dark'
  40. )
  41. document.documentElement.classList.toggle(
  42. 'forced-light',
  43. themeName === 'light'
  44. )
  45. }
  46. const selectedTheme = localStorage.getItem('theme')
  47. if (selectedTheme !== 'undefined') {
  48. toggleTheme(selectedTheme)
  49. }
  50. </script>
  51. <meta name="robots" content="noindex, nofollow">
  52. <meta content="origin-when-cross-origin" name="referrer">
  53. <!-- Canonical URL for SEO purposes -->
  54. <link rel="canonical" href="https://www.actualitte.com/article/tribunes/bye-bye-amazon-il-en-va-de-la-responsabilite-de-chaque-editeur/103699">
  55. <body class="remarkdown h1-underline h2-underline h3-underline hr-center ul-star pre-tick">
  56. <article>
  57. <header>
  58. <h1>Bye bye Amazon : “Il en va de la responsabilité de chaque éditeur”</h1>
  59. </header>
  60. <nav>
  61. <p class="center">
  62. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  63. <a href="https://www.actualitte.com/article/tribunes/bye-bye-amazon-il-en-va-de-la-responsabilite-de-chaque-editeur/103699" title="Lien vers le contenu original">Source originale</a>
  64. </p>
  65. </nav>
  66. <hr>
  67. <main>
  68. <p>Zones sensibles est une maison d’édition belge de taille modeste, qui publie des ouvrages de sciences humaines. Elle a décidé de ne plus vendre ses ouvrages chez Amazon à partir de novembre 2020, et s’en explique dans cette tribune qui détaille par ailleurs quelques chiffres clefs sur l’économie du livre et sur l’importance des librairies indépendantes qui soutiennent la maison d’édition.</p>
  69. <p>Avant d’en venir au cœur de cette tribune (le « cas Amazon »), quelques mots de présentation. Zones sensibles [Z/S] publie en moyenne 5 livres par an (visant 6-7 livres annuels à partir de 2021). La maison, qui ne publie exclusivement que des ouvrages de sciences humaines, est diffusée et distribuée par Belles Lettres Diffusion Distribution [BLDD], qui organise cinq tournées de représentants par an, d’où notre rythme de parution, choisi de la sorte qu’à chaque tournée un livre de Z/S soit présenté aux libraires.</p>
  70. <p>Entre janvier 2011 (date de naissance de la maison) et octobre 2020 <a href="http://www.zones-sensibles.org/livres/">nous avons publié 40 livres</a>. Nous devrions prochainement publier un rapport détaillé concernant les ventes de ces ouvrages et l’économie d’une petite maison d’édition (notamment à l’aide de cartes, la répartition géographique des ventes étant particulièrement instructive) ; d’ici là, voilà un aperçu nos 40 livres, par ordre décroissant :</p>
  71. <div style="text-align: center;">
  72. <img alt="" src="https://www.actualitte.com/images/actualites/images/editeurs/ventes-zones-sensibles-tribune-amazon.jpg" style="width: 670px; height: 522px;" /></div>
  73. <p>En bref, la moyenne des ventes de nos livres est de 1588 exemplaires, mais cette moyenne ne rend pas compte des vies très diverses des livres. La médiane des ventes est de 765 exemplaires : 50 % de nos livres se sont vendus à plus de 765 ex., et 50 % se sont vendus à moins de 765 ex. Cette médiane correspond grosso modo (bien que cela dépende des coûts de production des livres – volumineux ou non, traduits ou pas, etc.) au seuil de rentabilité des ouvrages : pour aller vite, 55 % de nos livres ont été rentables, tandis que 45 % ne l’ont pas été (nous dirons de ces livres-là qu’ils ne sont pas des échecs, mais qu’ils n’ont pas marché).</p>
  74. <p>Si l’on considère les 10 meilleures ventes de la maison, elles comptent à elles seules pour 65 % de nos bénéfices, le corollaire étant que 75 % des nos ouvrages ne représentent seulement que 35 % des bénéfices. Notre économie repose donc sur quelques ouvrages de fond dont les ventes sont durables, et quelques succès occasionnels dont il faut toujours se réjouir — nous ne survivons que parce que nous vendons, parfois, des livres. (Pour les spécialistes avides de chiffres, les mises en place de nos livres oscillent entre ± 400 et ± 1200 exemplaires, et notre taux de retour moyen est de 17 %.)</p>
  75. <p>Venons-en aux librairies. Notre diffuseur-distributeur BLDD peut livrer nos ouvrages à plus de 25.000 points de vente, mais dans les faits, entre 2011 et 2020, seules 2 456 librairies ont vendu 1 ou plusieurs de nos livres, la grande majorité n’en ayant vendu qu’<em>un seul</em> (d’après le Syndicat de la librairie française, la France compte 3200 espaces de ventes dont l’activité principale est la vente de livres). Plus intéressant est de noter que les ventes principales sont le fait d’un nombre vraiment réduit de librairies : les 30 librairies où nos ouvrages ont le plus de succès génèrent 45 % des ventes ; 100 librairies génèrent 65 % des ventes ; et 250 d’entre elles génèrent 80 % des ventes.</p>
  76. <p>En résumé, 10 % des 2456 librairies qui ont vendu un ou plusieurs de nos ouvrages génèrent 80 % des ventes. Il y a donc une « concentration » des ventes, réalisées par un petit nombre de librairies — celles qui veulent bien accepter nos ouvrages dans leurs rayons, selon leur intérêt et leur spécialité. Puisque certains de nos titres, voire la plupart, peuvent être qualifiés de « pointus », il est tout à fait logique que la grande majorité des librairies ne prenne pas nos ouvrages – en dehors de la commande éventuelle et occasionnelle d’un lecteur.</p>
  77. <p>Cette situation nous convient très bien : notre objectif n’est pas d’être partout, mais plutôt d’être au <em>bon endroit</em>, et de travailler de près avec les librairies qui acceptent de défendre une matière à penser parfois difficile.</p>
  78. <p>Voilà la liste des 30 premières librairies, qui génèrent donc presque la moitié de nos ventes :</p>
  79. <p><img alt="" src="https://www.actualitte.com/images/actualites/images/editeurs/ventes-librairies-zones-sensibles-tribune-amazon.jpg" style="width: 670px; height: 628px;" /></p>
  80. <p>Au-delà du cas Amazon, qui n’est d’ailleurs pas une librairie, ce graphique montre tout autant la concentration des ventes que la diversité des « espaces » grâce auxquelles nous vendons nos ouvrages. Amazon (600.000 employés dans le monde) est en première place, suivi de fnac.com ; en troisième et cinquième place se trouvent deux grosses librairies du Sud-Ouest, qui comptent plusieurs dizaines d’employés ; la sixième position est occupée par une librairie parisienne de petite taille, comparée aux deux précédentes, mais qui défend avec force, depuis des années, nos ouvrages de fond, à la septième place se trouve une « petite » (mais pas pour nous) librairie bruxelloise, qui a à peine un employé, mais soutient, elle aussi, nos livres les plus pointus ; Servidis et Dimedia sont nos (sous-)distributeurs) suisse et canadien ; on y trouve également deux librairies plutôt « universitaires » (Gibert Joseph et la librairie de l’Université libre de Bruxelles, ULB). </p>
  81. <p>Sur ces 30 librairies, une vingtaine font partie de ce que l’on pourrait qualifier de « librairies indépendantes », c’est-à-dire n’appartenant à aucun groupe « capitalistique » (des librairies historiquement familiales, ou appartenant à un ou deux associés, ou dans lesquelles les employés ont des participations ; etc.). En complément du graphique précédent, voilà la répartition des ventes de nos ouvrages réalisées par les 250 premières librairies, ventes qui correspondent donc à 80 % de notre chiffre d’affaires :</p>
  82. <p><img alt="" src="https://www.actualitte.com/images/actualites/images/editeurs/librairie-zones-sensibles-ventes-amazon-tribune.jpg" style="width: 670px; height: 401px;" /></p>
  83. <p>La première barre de ce graphique, qui correspond à Amazon, est outrageusement haute. Amazon est malheureusement devenu notre premier « vendeur de livres » au fur et à mesure des années, et représente entre 10 % et 17 % de nos ventes, pour une moyenne de l’ordre de 14 % pour les années 2011-2020. Mais la bonne nouvelle est que, contre toute attente, Amazon est descendu à 10 % en 2020, une baisse sans doute corrélée à la baisse globale des ventes de cette année, compte tenu du confinement, bien visible dans ce graphique :</p>
  84. <p>Mais à y regarder de plus près, cette baisse est significative et va au-delà de l’effondrement des ventes lors du confinement. Nous avons eu la chance (heureux hasard), début juin, au moment du (premier) déconfinement, de publier un ouvrage prévu de longue date sur les risques de pandémies mondiales engendrées par des virus en provenance d’Asie, <a href="http://www.zones-sensibles.org/frederic-keck-les-sentinelles-des-pandemies/"><em>Les Sentinelles des pandémies</em></a>, de Frédéric Keck, qui s’est écoulé à 4000 exemplaires. Le plus souvent, en cas de succès d’un livre, les ventes d’Amazon ont tendance à être supérieures à la moyenne, mais dans le cas de ce livre la part d’Amazon dans les ventes est tombée à 6 %, soit plus de deux fois moins que la moyenne habituelle, et c’est une bonne nouvelle. Notre appel à se passer d’Amazon, et une réelle volonté de certains lecteurs de soutenir leurs librairies locales, semblent avoir eu des conséquences positives. Malgré cela, Amazon reste notre premier « vendeur ».</p>
  85. <p>De nombreuses raisons expliquent pourquoi un site de vente américain, dont certaines filiales sont domiciliées au Luxembourg ou en Angleterre, est devenu le premier « libraire » de la majorité des éditeurs. (D’après nos informations, et quand bien même beaucoup de confrères, un peu honteux, rechignent à communiquer, pour certains d’entre eux la part d’Amazon serait de l’ordre de 20, 25 voire 30 %.). Le positionnement d’Amazon consiste à proposer <em>tout</em> ou presque à <em>tout le monde</em> et dans les <em>meilleurs délais</em>. La facilité de la commande (le « click ») induite par ce positionnement explique en grande partie pourquoi Amazon est devenu indispensable à certains lecteurs, notamment ceux vivant dans des régions où l’offre des libraires physiques est très limitée. Il convient toutefois de regarder les chiffres de plus près.</p>
  86. <p>Les sites de vente d’Amazon (amazon.com, amazon.fr, etc.) ne représentent qu’une part minoritaire des gains de la compagnie, dont la division Amazon Web Services (services de cloud) engendre la majorité du chiffre d’affaires de la société. Faute de chiffres publics disponibles, il est difficile de savoir exactement combien rapporte à Amazon la vente de livres en France, mais c’est sans doute insignifiant. Plus important : la marge d’Amazon sur la vente d’un livre est négligeable, en raison du coût de transport (de type Prime) qu’Amazon ne répercute pas réellement sur la facture d’un lecteur, mais aussi en raison du coût de leur infrastructure (entrepôts, etc.). Il se murmure même que la vente d’un livre par Amazon coûte davantage à la société qu’elle ne rapporte…</p>
  87. <p>Nous sommes donc dans une situation (pour le moins paradoxale, voire absurde) où Amazon engendre la plus grande part des ventes des éditeurs français alors que, pour la compagnie, ces ventes ne représentent quasiment rien. Si l’on ajoute à cela qu’Amazon fait, comme d’autres multinationales, de l’optimisation fiscale, ce qui lui permet de payer moins d’impôts sur ces ventes que ne le font les librairies « physiques », et si l’on se rappelle qu’aux États-Unis, où le droit du travail est quasi inexistant, certains employés d’Amazon sont obligés d’aller chercher de quoi se nourrir dans des banques alimentaires faute d’être rémunérés correctement, nous en arrivons à une situation insoutenable : le premier vendeur de livres des éditeurs français est une société qui ne gagne rien sur ces ventes, tout en ne payant que très peu d’impôts et en exploitant à outrance des êtres humains, surveillés par des robots qui sont sous pression dans un hangar pour qu’un livre arrive <em>le lendemain</em> chez celle ou celui qui l’a commandé.</p>
  88. <p>La seule riposte possible à cette situation, pour les éditeurs ayant un minimum d’éthique et de respect du bien commun, est très simple : ne pas vendre de livre sur Amazon. De prime abord ce choix paraît compliqué, car la majorité des éditeurs (dont nous faisons partie) n’a pas de lien direct avec la plateforme : ce sont en effet les diffuseurs-distributeurs qui négocient les conditions de vente avec leurs revendeurs, dont la majorité est constituée de librairies physiques, mais aussi d’Amazon, de Fnac.com, etc. Les éditeurs n’ont donc que peu de marge de manœuvre, et dépendent des choix de leur diffuseur-distributeur (dont certains ont d’ores et déjà décidé de ne pas accepter les conditions commerciales financièrement brutales d’Amazon, ce qui de fait exclut de la plateforme les catalogues de leurs éditeurs).</p>
  89. <p>Il y a pourtant une solution assez simple qui permet de pallier cette situation et d’éviter que le diffuseur-distributeur ne soit confronté à un problème juridique de « refus de vente » dans le cas où un éditeur voudrait se passer de tel ou tel espace de ventes : le code-barre du livre. Comme l’a relevé avec sagacité notre confrère belge des éditions Vies parallèles, le fait de ne pas mettre le code-barre à l’<em>extérieur</em> du livre le rend inexploitable par (les robots d’) Amazon. Zones sensibles a donc décidé de placer ce code-barre en deuxième de couverture, au bas du colophon qui se trouve sur cette page, et ce à partir de notre prochaine parution, <a href="http://www.zones-sensibles.org/sylvain-piron-genealogie-de-la-morale-economique/"><em>Généalogie de la morale économique</em></a> de Sylvain Piron, prévue pour le 20 novembre. Il en sera de même pour tous nos ouvrages à venir. Cette simple et élégante solution — qui permet par ailleurs d’éviter de ruiner le graphisme de certaines couvertures en raison de l’inélégance du code-barre — fait que nos ouvrages ne seront donc plus commercialisés par Amazon. </p>
  90. <p>Ce choix est évidemment politique, car nous refusons que nos livres soient vendus par une telle plateforme. Zones sensibles, dès ses débuts, a décidé d’adopter un fonctionnement, disons, « déontologique » : nous n’avons aucun prêt ni découvert bancaire (nous n’avons vu aucun banquier en presque 10 ans) ; tous nos fournisseurs (imprimeurs, brocheurs, photograveur, etc.) sont belges, afin de soutenir l’industrie locale (nous n’imprimons pas dans les pays de l’Est) et de limiter le plus possible de longs transports inutiles (et polluants) ; les papiers utilisés sont tous issus de forêts durables ; tous nos collaborateurs (traducteurs, etc.) sont rémunérés à des tarifs supérieurs à la moyenne, <em>et caetera</em>.</p>
  91. <p>Il est donc particulièrement incohérent, compte tenu de ces choix faits en amont, que nos livres finissent chez Amazon… Mais c’est aussi, et surtout, un choix collectif, car si nous ne vendons plus nos livres chez Amazon, en toute logique cela devrait bénéficier à l’ensemble de la communauté des libraires « physiques » — qui en ont particulièrement besoin en ce moment. La question n’est donc pas de ne plus travailler avec Amazon (cette question est vite répondue, et désormais réglée), mais de convaincre les lecteurs de faire leurs achats dans des librairies qui nous soutiennent et où les conditions de travail sont plus éthiques que celles d’Amazon — et quand bien même beaucoup de libraires, comme nous, ont souvent des salaires misérables.</p>
  92. <p>Les alternatives à Amazon sont désormais bien connues : si un lecteur n’a pas de librairie « de proximité », un site comme <a href="https://www.librairiesindependantes.com/">librairiesindependantes.com</a> permet, outre le fait de savoir si un ouvrage recherché est en stock chez telle ou telle librairie, de connaître celles qui peuvent expédier l’ouvrage (l’équivalent belge francophone est <a href="https://www.librel.be/">librel.be</a>). Maintenant qu’en France les frais de port d’un livre bénéficient d’un tarif de 0,01 € (espérons que ce tarif s’imposera au-delà des confinements actuels), de nombreuses libraires peuvent offrir <em>exactement</em> le même service qu’Amazon et au même coût, la seule différence étant qu’il n’est pas assuré qu’un livre arrive le lendemain de sa commande — mais après tout, avant qu’Amazon n’existe, aucun lecteur n’exigeait qu’un livre commandé via la poste n’arrive dans les 24 heures… (À propos des tarifs postaux, il serait bien que la Belgique adopte un « tarif livre et brochure » comme il en existe un en France ; quand nous devons envoyer un livre de 28 cm d’épaisseur en Belgique, depuis la Belgique, cela nous coûte plus cher que si vous envoyons ce même livre vers la Belgique <em>depuis la France</em> ; nous faisons donc envoyer nos livres à destination de la Belgique depuis la France… bienvenue en Absurdistan !)</p>
  93. <p>La décision de se passer de notre premier « vendeur de livres » n’est pas sans risque, mais nous comptons sur la conscience de nos lecteurs pour nous accompagner dans cette direction. Soyons lucides : Amazon n’en a rien à cirer de nous (nous, Zones sensibles, et nous tous, collectivement, éditeurs). Si demain l’intégralité des éditeurs français ne vendent plus leurs ouvrages sur la plateforme, le service comptabilité de la société, à Seattle, ne s’en apercevra même pas au moment de faire le bilan financier de la société, car ce que nous tous, éditeurs, rapportons à Amazon, est littéralement <em>insignifiant</em> rapporté au chiffre d’affaires de la compagnie. En revanche, si tous les éditeurs français décident, demain, de se passer d’Amazon, le report des ventes auprès des véritables librairies serait considérable. S’il y a bien un moment où prendre cette décision, c’est bien en ces temps chahutés.</p>
  94. <p>Il en va de la responsabilité de chaque éditeur. Nous n’appelons pas nos confrères à faire le même choix que le nôtre, mais en revanche nous demandons à ceux qui tiennent de grands discours « anti-capitalistes », et particulièrement à ceux qui se disent « indépendants » et publient des textes politiquement « critiques » (ce qui est très peu souvent notre cas), de cesser leurs sempiternels discours « anti-Amazon » tant qu’ils continueront à vendre leurs ouvrages sur la plateforme (un éditeur ne peut décemment se déclarer « indépendant » quand Amazon est son premier vendeur).</p>
  95. <p>Que ces éditeurs transforment leurs discours en actes, sinon quoi nous leur disons, pour reprendre la célèbre formule d’un pseudo-philosophe : « <em>TAISEZ-VOUS !!!</em> ». En ce qui nous concerne, compte tenu de notre fonctionnement déontologique, notre monde d’après ne sera pas bien différent du monde d’avant, si ce n’est désormais que nous nous passerons d’Amazon. Notre monde d’après sera donc un peu moins pire que notre monde d’avant. Et nous en sommes très heureux.</p>
  96. <p><em>Pactum serva</em>.</p>
  97. <p>Zones sensibles, 10 novembre 2020.</p>
  98. </main>
  99. </article>
  100. <hr>
  101. <footer>
  102. <p>
  103. <a href="/david/" title="Aller à l’accueil">🏠</a> •
  104. <a href="/david/log/" title="Accès au flux RSS">🤖</a> •
  105. <a href="http://larlet.com" title="Go to my English profile" data-instant>🇨🇦</a> •
  106. <a href="mailto:david%40larlet.fr" title="Envoyer un courriel">📮</a> •
  107. <abbr title="Hébergeur : Alwaysdata, 62 rue Tiquetonne 75002 Paris, +33184162340">🧚</abbr>
  108. </p>
  109. <template id="theme-selector">
  110. <form>
  111. <fieldset>
  112. <legend>Thème</legend>
  113. <label>
  114. <input type="radio" value="auto" name="chosen-color-scheme" checked> Auto
  115. </label>
  116. <label>
  117. <input type="radio" value="dark" name="chosen-color-scheme"> Foncé
  118. </label>
  119. <label>
  120. <input type="radio" value="light" name="chosen-color-scheme"> Clair
  121. </label>
  122. </fieldset>
  123. </form>
  124. </template>
  125. </footer>
  126. <script type="text/javascript">
  127. function loadThemeForm(templateName) {
  128. const themeSelectorTemplate = document.querySelector(templateName)
  129. const form = themeSelectorTemplate.content.firstElementChild
  130. themeSelectorTemplate.replaceWith(form)
  131. form.addEventListener('change', (e) => {
  132. const chosenColorScheme = e.target.value
  133. localStorage.setItem('theme', chosenColorScheme)
  134. toggleTheme(chosenColorScheme)
  135. })
  136. const selectedTheme = localStorage.getItem('theme')
  137. if (selectedTheme && selectedTheme !== 'undefined') {
  138. form.querySelector(`[value="${selectedTheme}"]`).checked = true
  139. }
  140. }
  141. const prefersColorSchemeDark = '(prefers-color-scheme: dark)'
  142. window.addEventListener('load', () => {
  143. let hasDarkRules = false
  144. for (const styleSheet of Array.from(document.styleSheets)) {
  145. let mediaRules = []
  146. for (const cssRule of styleSheet.cssRules) {
  147. if (cssRule.type !== CSSRule.MEDIA_RULE) {
  148. continue
  149. }
  150. // WARNING: Safari does not have/supports `conditionText`.
  151. if (cssRule.conditionText) {
  152. if (cssRule.conditionText !== prefersColorSchemeDark) {
  153. continue
  154. }
  155. } else {
  156. if (cssRule.cssText.startsWith(prefersColorSchemeDark)) {
  157. continue
  158. }
  159. }
  160. mediaRules = mediaRules.concat(Array.from(cssRule.cssRules))
  161. }
  162. // WARNING: do not try to insert a Rule to a styleSheet you are
  163. // currently iterating on, otherwise the browser will be stuck
  164. // in a infinite loop…
  165. for (const mediaRule of mediaRules) {
  166. styleSheet.insertRule(mediaRule.cssText)
  167. hasDarkRules = true
  168. }
  169. }
  170. if (hasDarkRules) {
  171. loadThemeForm('#theme-selector')
  172. }
  173. })
  174. </script>
  175. </body>
  176. </html>