History

Replace sprockets-sass with dartsass-sprockets.

Add manual precompile of .scss.erb files to thor task, since dart-sass is no longer responsible for it. Remove @import statements deprecated by dart-sass, and add them as @use clauses in individual modules. Replace deprecated darken() functions with color.adjust(). Update copyright year in README.

spamguy committed 9 months ago

Commit baffc7d1 parent be50790127 files · +564 −217Browse files

Unified · Split

127 files
  1. Gemfile +1 −2
  2. Gemfile.lock +90 −15
  3. README.md +48 −48
  4. assets/stylesheets/application.css.scss +121 −132
  5. assets/stylesheets/components/_app.scss +2 −0
  6. assets/stylesheets/components/_content.scss +6 −1
  7. assets/stylesheets/components/_fail.scss +2 −0
  8. assets/stylesheets/components/_header.scss +5 −1
  9. assets/stylesheets/components/_notice.scss +3 −1
  10. assets/stylesheets/components/_notif.scss +3 −0
  11. assets/stylesheets/components/_page.scss +3 −0
  12. assets/stylesheets/components/_path.scss +4 −1
  13. assets/stylesheets/components/_settings.scss +3 −0
  14. assets/stylesheets/components/_sidebar.scss +6 −2
  15. assets/stylesheets/global/_base.scss +7 −3
  16. assets/stylesheets/global/_print.scss +3 −1
  17. assets/stylesheets/global/_variables-dark.scss +4 −2
  18. assets/stylesheets/global/_variables-light.scss +4 −2
  19. assets/stylesheets/global/_variables.scss +3 −0
  20. assets/stylesheets/pages/_angular.scss +3 −0
  21. assets/stylesheets/pages/_angularjs.scss +2 −0
  22. assets/stylesheets/pages/_apache.scss +2 −0
  23. assets/stylesheets/pages/_async.scss +2 −0
  24. assets/stylesheets/pages/_bash.scss +2 −0
  25. assets/stylesheets/pages/_bootstrap.scss +2 −0
  26. assets/stylesheets/pages/_cakephp.scss +2 −0
  27. assets/stylesheets/pages/_chef.scss +2 −0
  28. assets/stylesheets/pages/_clojure.scss +2 −0
  29. assets/stylesheets/pages/_codeception.scss +2 −0
  30. assets/stylesheets/pages/_coffeescript.scss +3 −0
  31. assets/stylesheets/pages/_cordova.scss +2 −0
  32. assets/stylesheets/pages/_cppref.scss +2 −0
  33. assets/stylesheets/pages/_crystal.scss +3 −0
  34. assets/stylesheets/pages/_cypress.scss +2 −0
  35. assets/stylesheets/pages/_d.scss +2 −0
  36. assets/stylesheets/pages/_d3.scss +2 −0
  37. assets/stylesheets/pages/_dart.scss +2 −0
  38. assets/stylesheets/pages/_dojo.scss +2 −0
  39. assets/stylesheets/pages/_drupal.scss +2 −0
  40. assets/stylesheets/pages/_elisp.scss +2 −0
  41. assets/stylesheets/pages/_elixir.scss +2 −0
  42. assets/stylesheets/pages/_ember.scss +2 −0
  43. assets/stylesheets/pages/_erlang.scss +2 −0
  44. assets/stylesheets/pages/_express.scss +2 −0
  45. assets/stylesheets/pages/_fastapi.scss +2 −0
  46. assets/stylesheets/pages/_fluture.scss +2 −0
  47. assets/stylesheets/pages/_git.scss +2 −0
  48. assets/stylesheets/pages/_github.scss +2 −0
  49. assets/stylesheets/pages/_gnu_make.scss +2 −0
  50. assets/stylesheets/pages/_gnuplot.scss +2 −0
  51. assets/stylesheets/pages/_go.scss +2 −0
  52. assets/stylesheets/pages/_graphite.scss +2 −0
  53. assets/stylesheets/pages/_groovy.scss +2 −0
  54. assets/stylesheets/pages/_gtk.scss +2 −0
  55. assets/stylesheets/pages/_hapi.scss +2 −0
  56. assets/stylesheets/pages/_haproxy.scss +2 −0
  57. assets/stylesheets/pages/_haskell.scss +2 −0
  58. assets/stylesheets/pages/_jasmine.scss +2 −0
  59. assets/stylesheets/pages/_jekyll.scss +2 −0
  60. assets/stylesheets/pages/_joi.scss +2 −0
  61. assets/stylesheets/pages/_jq.scss +3 −0
  62. assets/stylesheets/pages/_jquery.scss +2 −0
  63. assets/stylesheets/pages/_julia.scss +2 −0
  64. assets/stylesheets/pages/_knockout.scss +2 −0
  65. assets/stylesheets/pages/_kotlin.scss +2 −0
  66. assets/stylesheets/pages/_kubectl.scss +2 −1
  67. assets/stylesheets/pages/_kubernetes.scss +2 −1
  68. assets/stylesheets/pages/_laravel.scss +2 −0
  69. assets/stylesheets/pages/_liquid.scss +2 −0
  70. assets/stylesheets/pages/_lit.scss +2 −0
  71. assets/stylesheets/pages/_love.scss +2 −0
  72. assets/stylesheets/pages/_lua.scss +2 −0
  73. assets/stylesheets/pages/_mariadb.scss +2 −0
  74. assets/stylesheets/pages/_mdn.scss +2 −0
  75. assets/stylesheets/pages/_meteor.scss +2 −0
  76. assets/stylesheets/pages/_mkdocs.scss +2 −0
  77. assets/stylesheets/pages/_modernizr.scss +2 −0
  78. assets/stylesheets/pages/_moment.scss +2 −0
  79. assets/stylesheets/pages/_nginx.scss +2 −0
  80. assets/stylesheets/pages/_node.scss +2 −0
  81. assets/stylesheets/pages/_npm.scss +2 −0
  82. assets/stylesheets/pages/_nushell.scss +2 −0
  83. assets/stylesheets/pages/_octave.scss +2 −0
  84. assets/stylesheets/pages/_openjdk.scss +2 −0
  85. assets/stylesheets/pages/_openlayers.scss +3 −0
  86. assets/stylesheets/pages/_perl.scss +2 −0
  87. assets/stylesheets/pages/_phalcon.scss +2 −0
  88. assets/stylesheets/pages/_phaser.scss +2 −0
  89. assets/stylesheets/pages/_php.scss +3 −0
  90. assets/stylesheets/pages/_phpunit.scss +2 −0
  91. assets/stylesheets/pages/_postgres.scss +2 −0
  92. assets/stylesheets/pages/_pug.scss +2 −0
  93. assets/stylesheets/pages/_pygame.scss +2 −0
  94. assets/stylesheets/pages/_python.scss +2 −0
  95. assets/stylesheets/pages/_qt.scss +2 −0
  96. assets/stylesheets/pages/_ramda.scss +3 −0
  97. assets/stylesheets/pages/_rdoc.scss +4 −1
  98. assets/stylesheets/pages/_react.scss +2 −0
  99. assets/stylesheets/pages/_react_native.scss +2 −0
  100. assets/stylesheets/pages/_reactivex.scss +2 −0
  101. assets/stylesheets/pages/_redis.scss +3 −0
  102. assets/stylesheets/pages/_rethinkdb.scss +2 −0
  103. assets/stylesheets/pages/_rfc.scss +2 −0
  104. assets/stylesheets/pages/_rubydoc.scss +2 −0
  105. assets/stylesheets/pages/_rust.scss +3 −0
  106. assets/stylesheets/pages/_rxjs.scss +2 −0
  107. assets/stylesheets/pages/_sanctuary.scss +2 −0
  108. assets/stylesheets/pages/_sanctuary_def.scss +2 −0
  109. assets/stylesheets/pages/_sanctuary_type_classes.scss +2 −0
  110. assets/stylesheets/pages/_scala.scss +6 −2
  111. assets/stylesheets/pages/_simple.scss +2 −0
  112. assets/stylesheets/pages/_sinon.scss +2 −0
  113. assets/stylesheets/pages/_sphinx.scss +2 −0
  114. assets/stylesheets/pages/_sphinx_simple.scss +2 −0
  115. assets/stylesheets/pages/_sqlite.scss +2 −0
  116. assets/stylesheets/pages/_support_tables.scss +2 −0
  117. assets/stylesheets/pages/_tcl_tk.scss +2 −0
  118. assets/stylesheets/pages/_tensorflow.scss +2 −0
  119. assets/stylesheets/pages/_terraform.scss +2 −0
  120. assets/stylesheets/pages/_typescript.scss +2 −0
  121. assets/stylesheets/pages/_underscore.scss +2 −0
  122. assets/stylesheets/pages/_vue.scss +2 −0
  123. assets/stylesheets/pages/_webpack.scss +2 −0
  124. assets/stylesheets/pages/_wordpress.scss +3 −1
  125. assets/stylesheets/pages/_yard.scss +3 −0
  126. assets/stylesheets/pages/_yii.scss +2 −0
  127. lib/tasks/sprites.thor +15 −0
Gemfile+1−2
@@ -15,16 +15,15 @@ group :app do · 14 unmodified lines
1515 gem 'browser'
1616 gem 'chunky_png'
1717 gem 'erubi'
18+ gem 'dartsass-sprockets'
1819 gem 'image_optim_pack', platforms: :ruby
1920 gem 'image_optim'
2021 gem 'rack-ssl-enforcer'
2122 gem 'rack'
2223 gem 'rss'
23− gem 'sass'
2424 gem 'sinatra-contrib'
2525 gem 'sinatra'
2626 gem 'sprockets-helpers'
27− gem 'sprockets-sass'
2827 gem 'sprockets'
2928 gem 'thin'
3029 end
Gemfile.lock+90−15
@@ -1,6 +1,25 @@
11 GEM
22 remote: https://rubygems.org/
33 specs:
4+ actionpack (7.2.3)
5+ actionview (= 7.2.3)
6+ activesupport (= 7.2.3)
7+ cgi
8+ nokogiri (>= 1.8.5)
9+ racc
10+ rack (>= 2.2.4, < 3.3)
11+ rack-session (>= 1.0.1)
12+ rack-test (>= 0.6.3)
13+ rails-dom-testing (~> 2.2)
14+ rails-html-sanitizer (~> 1.6)
15+ useragent (~> 0.16)
16+ actionview (7.2.3)
17+ activesupport (= 7.2.3)
18+ builder (~> 3.1)
19+ cgi
20+ erubi (~> 1.11)
21+ rails-dom-testing (~> 2.2)
22+ rails-html-sanitizer (~> 1.6)
423 activesupport (7.2.3)
524 base64
625 benchmark (>= 0.3)
@@ -21,13 +40,24 @@ GEM · 14 unmodified lines
2140 rouge (>= 1.0.0)
2241 bigdecimal (3.1.9)
2342 browser (5.3.1)
43+ builder (3.3.0)
2444 byebug (12.0.0)
45+ cgi (0.5.1)
2546 chunky_png (1.4.0)
2647 coderay (1.1.3)
2748 concurrent-ruby (1.3.5)
2849 connection_pool (2.4.1)
50+ crass (1.0.6)
2951 daemons (1.4.1)
52+ dartsass-sprockets (3.2.1)
53+ railties (>= 4.0.0)
54+ sassc-embedded (~> 1.80.1)
55+ sprockets (> 3.0)
56+ sprockets-rails
57+ tilt
58+ date (3.5.1)
3059 drb (2.2.3)
60+ erb (6.0.1)
3161 erubi (1.13.1)
3262 ethon (0.18.0)
3363 ffi (>= 1.15.0)
@@ -37,6 +67,9 @@ GEM · 3 unmodified lines
3767 exifr (1.4.0)
3868 ffi (1.17.3)
3969 fspath (3.1.2)
70+ google-protobuf (4.33.4)
71+ bigdecimal
72+ rake (>= 13)
4073 highline (3.1.2)
4174 reline
4275 html-pipeline (2.14.3)
@@ -56,7 +89,14 @@ GEM · 13 unmodified lines
5689 image_size (3.3.0)
5790 in_threads (1.6.0)
5891 io-console (0.8.0)
92+ irb (1.16.0)
93+ pp (>= 0.6.0)
94+ rdoc (>= 4.0.0)
95+ reline (>= 0.4.2)
5996 logger (1.6.6)
97+ loofah (2.25.0)
98+ crass (~> 1.0.2)
99+ nokogiri (>= 1.12.0)
60100 method_source (1.1.0)
61101 mini_portile2 (2.8.9)
62102 minitest (5.27.0)
@@ -68,6 +108,9 @@ GEM · 5 unmodified lines
68108 mini_portile2 (~> 2.8.2)
69109 racc (~> 1.4)
70110 options (2.3.2)
111+ pp (0.6.3)
112+ prettyprint
113+ prettyprint (0.2.0)
71114 progress (3.6.0)
72115 progress_bar (1.3.4)
73116 highline (>= 1.6)
@@ -78,18 +121,44 @@ GEM · 4 unmodified lines
78121 pry-byebug (3.11.0)
79122 byebug (~> 12.0)
80123 pry (>= 0.13, < 0.16)
124+ psych (5.3.1)
125+ date
126+ stringio
81127 racc (1.8.1)
82128 rack (2.2.22)
83129 rack-protection (3.2.0)
84130 base64 (>= 0.1.0)
85131 rack (~> 2.2, >= 2.2.4)
132+ rack-session (1.0.2)
133+ rack (< 3)
86134 rack-ssl-enforcer (0.2.9)
87135 rack-test (2.2.0)
88136 rack (>= 1.3)
137+ rackup (1.0.1)
138+ rack (< 3)
139+ webrick
140+ rails-dom-testing (2.3.0)
141+ activesupport (>= 5.0.0)
142+ minitest
143+ nokogiri (>= 1.6)
144+ rails-html-sanitizer (1.6.2)
145+ loofah (~> 2.21)
146+ nokogiri (>= 1.15.7, != 1.16.7, != 1.16.6, != 1.16.5, != 1.16.4, != 1.16.3, != 1.16.2, != 1.16.1, != 1.16.0.rc1, != 1.16.0)
147+ railties (7.2.3)
148+ actionpack (= 7.2.3)
149+ activesupport (= 7.2.3)
150+ cgi
151+ irb (~> 1.13)
152+ rackup (>= 1.0.0)
153+ rake (>= 12.2)
154+ thor (~> 1.0, >= 1.2.2)
155+ tsort (>= 0.2)
156+ zeitwerk (~> 2.6)
89157 rake (13.3.1)
90− rb-fsevent (0.11.2)
91− rb-inotify (0.10.1)
92− ffi (~> 1.0)
158+ rdoc (7.1.0)
159+ erb
160+ psych (>= 4.0.0)
161+ tsort
93162 redcarpet (3.6.1)
94163 reline (0.6.0)
95164 io-console (~> 0.5)
@@ -99,11 +168,11 @@ GEM · 3 unmodified lines
99168 rss (0.3.1)
100169 rexml
101170 ruby2_keywords (0.0.5)
102− sass (3.7.4)
103− sass-listen (~> 4.0.0)
104− sass-listen (4.0.0)
105− rb-fsevent (~> 0.9, >= 0.9.4)
106− rb-inotify (~> 0.9, >= 0.9.7)
171+ sass-embedded (1.97.3)
172+ google-protobuf (~> 4.31)
173+ rake (>= 13)
174+ sassc-embedded (1.80.8)
175+ sass-embedded (~> 1.80)
107176 securerandom (0.3.2)
108177 sinatra (3.2.0)
109178 mustermann (~> 3.0)
@@ -116,14 +185,17 @@ GEM · 6 unmodified lines
116185 rack-protection (= 3.2.0)
117186 sinatra (= 3.2.0)
118187 tilt (~> 2.0)
119− sprockets (3.7.5)
120− base64
188+ sprockets (4.2.2)
121189 concurrent-ruby (~> 1.0)
122− rack (> 1, < 3)
190+ logger
191+ rack (>= 2.2.4, < 4)
123192 sprockets-helpers (1.4.0)
124193 sprockets (>= 2.2)
125− sprockets-sass (2.0.0.beta2)
126− sprockets (>= 2.0, < 4.0)
194+ sprockets-rails (3.5.2)
195+ actionpack (>= 6.1)
196+ activesupport (>= 6.1)
197+ sprockets (>= 3.0.0)
198+ stringio (3.2.0)
127199 strings (0.2.1)
128200 strings-ansi (~> 0.2)
129201 unicode-display_width (>= 1.5, < 3.0)
@@ -139,6 +211,7 @@ GEM · 9 unmodified lines
139211 rack (>= 1, < 3)
140212 thor (1.4.0)
141213 tilt (2.6.0)
214+ tsort (0.2.0)
142215 tty-pager (0.14.0)
143216 strings (~> 0.2.0)
144217 tty-screen (~> 0.8)
@@ -150,7 +223,10 @@ GEM · 5 unmodified lines
150223 unicode-display_width (2.3.0)
151224 unicode_utils (1.4.0)
152225 unix_utils (0.0.15)
226+ useragent (0.16.11)
227+ webrick (1.9.2)
153228 yajl-ruby (1.4.3)
229+ zeitwerk (2.7.4)
154230
155231 PLATFORMS
156232 ruby
@@ -160,6 +236,7 @@ DEPENDENCIES · 3 unmodified lines
160236 better_errors
161237 browser
162238 chunky_png
239+ dartsass-sprockets
163240 erubi
164241 html-pipeline
165242 image_optim
@@ -176,12 +253,10 @@ DEPENDENCIES · 10 unmodified lines
176253 redcarpet
177254 rr
178255 rss
179− sass
180256 sinatra
181257 sinatra-contrib
182258 sprockets
183259 sprockets-helpers
184− sprockets-sass
185260 terminal-table
186261 terser
187262 thin
README.md+48−48
@@ -10,9 +10,9 @@ Please reach out to the community on [Discord](https://discord.gg/PRyKn3Vbay) if · 9 unmodified lines
1010
1111 Keep track of development news:
1212
13−* Join the `#contributors` chat room on [Discord](https://discord.gg/PRyKn3Vbay)
14−* Watch the repository on [GitHub](https://github.com/freeCodeCamp/devdocs/subscription)
15−* Follow [@DevDocs](https://twitter.com/DevDocs) on Twitter
13+- Join the `#contributors` chat room on [Discord](https://discord.gg/PRyKn3Vbay)
14+- Watch the repository on [GitHub](https://github.com/freeCodeCamp/devdocs/subscription)
15+- Follow [@DevDocs](https://twitter.com/DevDocs) on Twitter
1616
1717 **Table of Contents:** [Quick Start](#quick-start) · [Vision](#vision) · [App](#app) · [Scraper](#scraper) · [Commands](#available-commands) · [Contributing](#contributing) · [Documentation](#documentation) · [Related Projects](#related-projects) · [License](#copyright--license) · [Questions?](#questions)
1818
@@ -29,6 +29,7 @@ docker run --name devdocs -d -p 9292:9292 ghcr.io/freecodecamp/devdocs:latest · 10 unmodified lines
2929 ```
3030
3131 This will start DevDocs at [localhost:9292](http://localhost:9292). We provide both regular and Alpine-based images:
32+
3233 - `ghcr.io/freecodecamp/devdocs:latest` - Standard image
3334 - `ghcr.io/freecodecamp/devdocs:latest-alpine` - Alpine-based (smaller size)
3435
@@ -70,14 +71,14 @@ DevDocs aims to make reading and searching reference documentation fast, easy an · 35 unmodified lines
7071
7172 The app's main goals are to:
7273
73−* Keep load times as short as possible
74−* Improve the quality, speed, and order of search results
75−* Maximize the use of caching and other performance optimizations
76−* Maintain a clean and readable user interface
77−* Be fully functional offline
78−* Support full keyboard navigation
79−* Reduce “context switch” by using a consistent typography and design across all documentations
80−* Reduce clutter by focusing on a specific category of content (API/reference) and indexing only the minimum useful to most developers.
74+- Keep load times as short as possible
75+- Improve the quality, speed, and order of search results
76+- Maximize the use of caching and other performance optimizations
77+- Maintain a clean and readable user interface
78+- Be fully functional offline
79+- Support full keyboard navigation
80+- Reduce “context switch” by using a consistent typography and design across all documentations
81+- Reduce clutter by focusing on a specific category of content (API/reference) and indexing only the minimum useful to most developers.
8182
8283 **Note:** DevDocs is neither a programming guide nor a search engine. All our content is pulled from third-party sources and the project doesn't intend to compete with full-text search engines. Its backbone is metadata; each piece of content is identified by a unique, "obvious" and short string. Tutorials, guides and other content that don't meet this requirement are outside the scope of the project.
8384
@@ -91,10 +92,10 @@ Another driving factor is performance and the fact that everything happens in th · 7 unmodified lines
9192
9293 DevDocs being a developer tool, the browser requirements are high:
9394
94−* Recent versions of Firefox, Chrome, or Opera
95−* Safari 11.1+
96−* Edge 17+
97−* iOS 11.3+
95+- Recent versions of Firefox, Chrome, or Opera
96+- Safari 11.1+
97+- Edge 17+
98+- iOS 11.3+
9899
99100 This allows the code to take advantage of the latest DOM and HTML5 APIs and make developing DevDocs a lot more fun!
100101
@@ -106,12 +107,12 @@ There are currently two kinds of scrapers: `UrlScraper` which downloads files vi · 5 unmodified lines
106107
107108 Modifications made to each document include:
108109
109−* removing content such as the document structure (`<html>`, `<head>`, etc.), comments, empty nodes, etc.
110−* fixing links (e.g. to remove duplicates)
111−* replacing all external (not scraped) URLs with their fully qualified counterpart
112−* replacing all internal (scraped) URLs with their unqualified and relative counterpart
113−* adding content, such as a title and link to the original document
114−* ensuring correct syntax highlighting using [Prism](http://prismjs.com/)
110+- removing content such as the document structure (`<html>`, `<head>`, etc.), comments, empty nodes, etc.
111+- fixing links (e.g. to remove duplicates)
112+- replacing all external (not scraped) URLs with their fully qualified counterpart
113+- replacing all internal (scraped) URLs with their unqualified and relative counterpart
114+- adding content, such as a title and link to the original document
115+- ensuring correct syntax highlighting using [Prism](http://prismjs.com/)
115116
116117 These modifications are applied via a set of filters using the [HTML::Pipeline](https://github.com/jch/html-pipeline) library. Each scraper includes filters specific to itself, one of which is tasked with figuring out the pages' metadata.
117118
@@ -160,10 +161,10 @@ Contributions are welcome. Please read the [contributing guidelines](./.github/C · 42 unmodified lines
160161
161162 ## Documentation
162163
163−* [Adding documentations to DevDocs](./docs/adding-docs.md)
164−* [Scraper Reference](./docs/scraper-reference.md)
165−* [Filter Reference](./docs/filter-reference.md)
166−* [Maintainers’ Guide](./docs/maintainers.md)
164+- [Adding documentations to DevDocs](./docs/adding-docs.md)
165+- [Scraper Reference](./docs/scraper-reference.md)
166+- [Filter Reference](./docs/filter-reference.md)
167+- [Maintainers’ Guide](./docs/maintainers.md)
167168
168169 ## DevDocs Quick Usage Cheatsheet
169170
@@ -182,35 +183,34 @@ Below are some helpful shortcuts and usage tips that are not immediately obvious · 12 unmodified lines
182183
183184 These shortcuts make DevDocs faster to navigate and more efficient for daily use.
184185
185−
186186 ## Related Projects
187187
188188 Made something cool? Feel free to open a PR to add a new row to this table! You might want to discover new projects via https://github.com/topics/devdocs.
189189
190190 <!-- table is sorted by description -->
191191
192−| Project | Description | Last commit | Stars |
193−| ------------------------------------------------------------------------------------------- | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
194−| [yannickglt/alfred-devdocs](https://github.com/yannickglt/alfred-devdocs) | Alfred workflow | ![Latest GitHub commit](https://img.shields.io/github/last-commit/yannickglt/alfred-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/yannickglt/alfred-devdocs?logo=github&label) |
195−| [Merith-TK/devdocs_webapp_kotlin](https://github.com/Merith-TK/devdocs_webapp_kotlin) | Android application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/Merith-TK/devdocs_webapp_kotlin?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/Merith-TK/devdocs_webapp_kotlin?logo=github&label) |
196−| [gruehle/dev-docs-viewer](https://github.com/gruehle/dev-docs-viewer) | Brackets extension | ![Latest GitHub commit](https://img.shields.io/github/last-commit/gruehle/dev-docs-viewer?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/gruehle/dev-docs-viewer?logo=github&label) |
197−| [egoist/devdocs-desktop](https://github.com/egoist/devdocs-desktop) | Electron application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/egoist/devdocs-desktop?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/egoist/devdocs-desktop?logo=github&label) |
198−| [skeeto/devdocs-lookup](https://github.com/skeeto/devdocs-lookup) | Emacs function | ![Latest GitHub commit](https://img.shields.io/github/last-commit/skeeto/devdocs-lookup?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/skeeto/devdocs-lookup?logo=github&label) |
199−| [astoff/devdocs.el](https://github.com/astoff/devdocs.el) | Emacs viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/astoff/devdocs.el?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/astoff/devdocs.el?logo=github&label) |
200−| [naquad/devdocs-shell](https://github.com/naquad/devdocs-shell) | GTK shell with Vim integration | ![Latest GitHub commit](https://img.shields.io/github/last-commit/naquad/devdocs-shell?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/naquad/devdocs-shell?logo=github&label) |
201−| [hardpixel/devdocs-desktop](https://github.com/hardpixel/devdocs-desktop) | GTK application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/hardpixel/devdocs-desktop?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/hardpixel/devdocs-desktop?logo=github&label) |
202−| [qwfy/doc-browser](https://github.com/qwfy/doc-browser) | Linux application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/qwfy/doc-browser?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/qwfy/doc-browser?logo=github&label) |
203−| [dteoh/devdocs-macos](https://github.com/dteoh/devdocs-macos) | macOS application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/dteoh/devdocs-macos?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/dteoh/devdocs-macos?logo=github&label) |
204−| [Sublime Text plugin](https://sublime.wbond.net/packages/DevDocs) | Sublime Text plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/vitorbritto/sublime-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/vitorbritto/sublime-devdocs?logo=github&label) |
205−| [mohamed3nan/DevDocs-Tab](https://github.com/mohamed3nan/DevDocs-Tab) | VS Code extension (view as tab) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mohamed3nan/DevDocs-Tab?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mohamed3nan/DevDocs-Tab?logo=github&label) |
206−| [deibit/vscode-devdocs](https://marketplace.visualstudio.com/items?itemName=deibit.devdocs) | VS Code extension (open the browser) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/deibit/vscode-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/deibit/vscode-devdocs?logo=github&label) |
207−| [mdh34/quickDocs](https://github.com/mdh34/quickDocs) | Vala/Python based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mdh34/quickDocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mdh34/quickDocs?logo=github&label) |
208−| [girishji/devdocs.vim](https://github.com/girishji/devdocs.vim) | Vim plugin & TUI (browse inside Vim) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/girishji/devdocs.vim?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/girishji/devdocs.vim?logo=github&label) |
209−| [romainl/vim-devdocs](https://github.com/romainl/vim-devdocs) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/romainl/vim-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/romainl/vim-devdocs?logo=github&label) |
210−| [waiting-for-dev/vim-www](https://github.com/waiting-for-dev/vim-www) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/waiting-for-dev/vim-www?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/waiting-for-dev/vim-www?logo=github&label) |
211−| [emmanueltouzery/apidocs.nvim](https://github.com/emmanueltouzery/apidocs.nvim) | Neovim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/emmanueltouzery/apidocs.nvim?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/emmanueltouzery/apidocs.nvim?logo=github&label) |
212−| [toiletbril/dedoc](https://github.com/toiletbril/dedoc) | Terminal based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/toiletbril/dedoc?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/toiletbril/dedoc?logo=github&label) |
213−| [Raycast Devdocs](https://www.raycast.com/djpowers/devdocs) | Raycast extension | Unavailable | Unavailable |
192+| Project | Description | Last commit | Stars |
193+| ------------------------------------------------------------------------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------- |
194+| [yannickglt/alfred-devdocs](https://github.com/yannickglt/alfred-devdocs) | Alfred workflow | ![Latest GitHub commit](https://img.shields.io/github/last-commit/yannickglt/alfred-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/yannickglt/alfred-devdocs?logo=github&label) |
195+| [Merith-TK/devdocs_webapp_kotlin](https://github.com/Merith-TK/devdocs_webapp_kotlin) | Android application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/Merith-TK/devdocs_webapp_kotlin?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/Merith-TK/devdocs_webapp_kotlin?logo=github&label) |
196+| [gruehle/dev-docs-viewer](https://github.com/gruehle/dev-docs-viewer) | Brackets extension | ![Latest GitHub commit](https://img.shields.io/github/last-commit/gruehle/dev-docs-viewer?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/gruehle/dev-docs-viewer?logo=github&label) |
197+| [egoist/devdocs-desktop](https://github.com/egoist/devdocs-desktop) | Electron application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/egoist/devdocs-desktop?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/egoist/devdocs-desktop?logo=github&label) |
198+| [skeeto/devdocs-lookup](https://github.com/skeeto/devdocs-lookup) | Emacs function | ![Latest GitHub commit](https://img.shields.io/github/last-commit/skeeto/devdocs-lookup?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/skeeto/devdocs-lookup?logo=github&label) |
199+| [astoff/devdocs.el](https://github.com/astoff/devdocs.el) | Emacs viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/astoff/devdocs.el?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/astoff/devdocs.el?logo=github&label) |
200+| [naquad/devdocs-shell](https://github.com/naquad/devdocs-shell) | GTK shell with Vim integration | ![Latest GitHub commit](https://img.shields.io/github/last-commit/naquad/devdocs-shell?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/naquad/devdocs-shell?logo=github&label) |
201+| [hardpixel/devdocs-desktop](https://github.com/hardpixel/devdocs-desktop) | GTK application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/hardpixel/devdocs-desktop?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/hardpixel/devdocs-desktop?logo=github&label) |
202+| [qwfy/doc-browser](https://github.com/qwfy/doc-browser) | Linux application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/qwfy/doc-browser?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/qwfy/doc-browser?logo=github&label) |
203+| [dteoh/devdocs-macos](https://github.com/dteoh/devdocs-macos) | macOS application | ![Latest GitHub commit](https://img.shields.io/github/last-commit/dteoh/devdocs-macos?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/dteoh/devdocs-macos?logo=github&label) |
204+| [Sublime Text plugin](https://sublime.wbond.net/packages/DevDocs) | Sublime Text plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/vitorbritto/sublime-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/vitorbritto/sublime-devdocs?logo=github&label) |
205+| [mohamed3nan/DevDocs-Tab](https://github.com/mohamed3nan/DevDocs-Tab) | VS Code extension (view as tab) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mohamed3nan/DevDocs-Tab?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mohamed3nan/DevDocs-Tab?logo=github&label) |
206+| [deibit/vscode-devdocs](https://marketplace.visualstudio.com/items?itemName=deibit.devdocs) | VS Code extension (open the browser) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/deibit/vscode-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/deibit/vscode-devdocs?logo=github&label) |
207+| [mdh34/quickDocs](https://github.com/mdh34/quickDocs) | Vala/Python based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/mdh34/quickDocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/mdh34/quickDocs?logo=github&label) |
208+| [girishji/devdocs.vim](https://github.com/girishji/devdocs.vim) | Vim plugin & TUI (browse inside Vim) | ![Latest GitHub commit](https://img.shields.io/github/last-commit/girishji/devdocs.vim?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/girishji/devdocs.vim?logo=github&label) |
209+| [romainl/vim-devdocs](https://github.com/romainl/vim-devdocs) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/romainl/vim-devdocs?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/romainl/vim-devdocs?logo=github&label) |
210+| [waiting-for-dev/vim-www](https://github.com/waiting-for-dev/vim-www) | Vim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/waiting-for-dev/vim-www?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/waiting-for-dev/vim-www?logo=github&label) |
211+| [emmanueltouzery/apidocs.nvim](https://github.com/emmanueltouzery/apidocs.nvim) | Neovim plugin | ![Latest GitHub commit](https://img.shields.io/github/last-commit/emmanueltouzery/apidocs.nvim?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/emmanueltouzery/apidocs.nvim?logo=github&label) |
212+| [toiletbril/dedoc](https://github.com/toiletbril/dedoc) | Terminal based viewer | ![Latest GitHub commit](https://img.shields.io/github/last-commit/toiletbril/dedoc?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/toiletbril/dedoc?logo=github&label) |
213+| [Raycast Devdocs](https://www.raycast.com/djpowers/devdocs) | Raycast extension | Unavailable | Unavailable |
214214 | [chrisgrieser/alfred-docs-searches](https://github.com/chrisgrieser/alfred-docs-searches) | Alfred workflow | ![Latest GitHub commit](https://img.shields.io/github/last-commit/chrisgrieser/alfred-docs-searches?logo=github&label) | ![GitHub stars](https://img.shields.io/github/stars/chrisgrieser/alfred-docs-searches?logo=github&label) |
215215
216216 ## Copyright / License
assets/stylesheets/application.css.scss+121−132
@@ -1,7 +1,3 @@
1−//= depend_on sprites/docs.png
2−//= depend_on sprites/docs@2x.png
3−//= depend_on sprites/docs.json
4−
51 /*!
62 * Copyright 2013-2026 Thibaut Courouble and other contributors
73 *
@@ -10,133 +6,126 @@ · 2 unmodified lines
106 * http://mozilla.org/MPL/2.0/
117 */
128
13−@import 'global/variables-light',
14− 'global/variables-dark',
15− 'global/variables',
16− 'global/mixins',
17− 'global/icons',
18− 'global/classes',
19− 'global/base';
9+ // SCSS partials that were formerly imported here are now invoked on an as-needed, per-file basis.
2010
21−@import 'components/app',
22− 'components/header',
23− 'components/notif',
24− 'components/sidebar',
25− 'components/settings',
26− 'components/content',
27− 'components/page',
28− 'components/fail',
29− 'components/path',
30− 'components/notice',
31− 'components/prism',
32− 'components/mobile',
33− 'components/environment';
11+@use 'components/app';
12+@use 'components/header';
13+@use 'components/notif';
14+@use 'components/sidebar';
15+@use 'components/settings';
16+@use 'components/content';
17+@use 'components/page';
18+@use 'components/fail';
19+@use 'components/path';
20+@use 'components/notice';
21+@use 'components/prism';
22+@use 'components/mobile';
23+@use 'components/environment';
3424
35−@import 'pages/simple',
36− 'pages/angular',
37− 'pages/angularjs',
38− 'pages/apache',
39− 'pages/async',
40− 'pages/bash',
41− 'pages/bootstrap',
42− 'pages/cppref',
43− 'pages/cakephp',
44− 'pages/clojure',
45− 'pages/codeception',
46− 'pages/coffeescript',
47− 'pages/cordova',
48− 'pages/crystal',
49− 'pages/cypress',
50− 'pages/d',
51− 'pages/d3',
52− 'pages/dart',
53− 'pages/dojo',
54− 'pages/drupal',
55− 'pages/eigen3',
56− 'pages/elixir',
57− 'pages/elisp',
58− 'pages/ember',
59− 'pages/erlang',
60− 'pages/express',
61− 'pages/fastapi',
62− 'pages/fluture',
63− 'pages/git',
64− 'pages/github',
65− 'pages/gnuplot',
66− 'pages/go',
67− 'pages/graphite',
68− 'pages/groovy',
69− 'pages/gtk',
70− 'pages/hapi',
71− 'pages/haproxy',
72− 'pages/haskell',
73− 'pages/jasmine',
74− 'pages/jekyll',
75− 'pages/joi',
76− 'pages/jq',
77− 'pages/jquery',
78− 'pages/julia',
79− 'pages/knockout',
80− 'pages/kotlin',
81− 'pages/kubectl',
82− 'pages/kubernetes',
83− 'pages/laravel',
84− 'pages/liquid',
85− 'pages/lit',
86− 'pages/love',
87− 'pages/lua',
88− 'pages/gnu_make',
89− 'pages/mariadb',
90− 'pages/mdn',
91− 'pages/meteor',
92− 'pages/mkdocs',
93− 'pages/modernizr',
94− 'pages/moment',
95− 'pages/nginx',
96− 'pages/node',
97− 'pages/npm',
98− 'pages/nushell',
99− 'pages/octave',
100− 'pages/openjdk',
101− 'pages/openlayers',
102− 'pages/perl',
103− 'pages/phalcon',
104− 'pages/phaser',
105− 'pages/php',
106− 'pages/phpunit',
107− 'pages/postgres',
108− 'pages/pug',
109− 'pages/pygame',
110− 'pages/python',
111− 'pages/qt',
112− 'pages/ramda',
113− 'pages/rdoc',
114− 'pages/react',
115− 'pages/react_native',
116− 'pages/reactivex',
117− 'pages/redis',
118− 'pages/rethinkdb',
119− 'pages/rfc',
120− 'pages/rubydoc',
121− 'pages/rust',
122− 'pages/rxjs',
123− 'pages/sanctuary',
124− 'pages/sanctuary_def',
125− 'pages/sanctuary_type_classes',
126− 'pages/scala',
127− 'pages/sinon',
128− 'pages/sphinx',
129− 'pages/sphinx_simple',
130− 'pages/sqlite',
131− 'pages/support_tables',
132− 'pages/tailwindcss',
133− 'pages/tcl_tk',
134− 'pages/tensorflow',
135− 'pages/terraform',
136− 'pages/typescript',
137− 'pages/underscore',
138− 'pages/vue',
139− 'pages/webpack',
140− 'pages/wordpress',
141− 'pages/yard',
142− 'pages/yii';
25+@use 'pages/angular';
26+@use 'pages/angularjs';
27+@use 'pages/apache';
28+@use 'pages/async';
29+@use 'pages/bash';
30+@use 'pages/bootstrap';
31+@use 'pages/cppref';
32+@use 'pages/cakephp';
33+@use 'pages/clojure';
34+@use 'pages/codeception';
35+@use 'pages/coffeescript';
36+@use 'pages/cordova';
37+@use 'pages/crystal';
38+@use 'pages/cypress';
39+@use 'pages/d';
40+@use 'pages/d3';
41+@use 'pages/dart';
42+@use 'pages/dojo';
43+@use 'pages/drupal';
44+@use 'pages/eigen3';
45+@use 'pages/elixir';
46+@use 'pages/elisp';
47+@use 'pages/ember';
48+@use 'pages/erlang';
49+@use 'pages/express';
50+@use 'pages/fastapi';
51+@use 'pages/fluture';
52+@use 'pages/git';
53+@use 'pages/github';
54+@use 'pages/gnuplot';
55+@use 'pages/go';
56+@use 'pages/graphite';
57+@use 'pages/groovy';
58+@use 'pages/gtk';
59+@use 'pages/hapi';
60+@use 'pages/haproxy';
61+@use 'pages/haskell';
62+@use 'pages/jasmine';
63+@use 'pages/jekyll';
64+@use 'pages/joi';
65+@use 'pages/jq';
66+@use 'pages/jquery';
67+@use 'pages/julia';
68+@use 'pages/knockout';
69+@use 'pages/kotlin';
70+@use 'pages/kubectl';
71+@use 'pages/kubernetes';
72+@use 'pages/laravel';
73+@use 'pages/liquid';
74+@use 'pages/lit';
75+@use 'pages/love';
76+@use 'pages/lua';
77+@use 'pages/gnu_make';
78+@use 'pages/mariadb';
79+@use 'pages/mdn';
80+@use 'pages/meteor';
81+@use 'pages/mkdocs';
82+@use 'pages/modernizr';
83+@use 'pages/moment';
84+@use 'pages/nginx';
85+@use 'pages/node';
86+@use 'pages/npm';
87+@use 'pages/nushell';
88+@use 'pages/octave';
89+@use 'pages/openjdk';
90+@use 'pages/openlayers';
91+@use 'pages/perl';
92+@use 'pages/phalcon';
93+@use 'pages/phaser';
94+@use 'pages/php';
95+@use 'pages/phpunit';
96+@use 'pages/postgres';
97+@use 'pages/pug';
98+@use 'pages/pygame';
99+@use 'pages/python';
100+@use 'pages/qt';
101+@use 'pages/ramda';
102+@use 'pages/rdoc';
103+@use 'pages/react';
104+@use 'pages/react_native';
105+@use 'pages/reactivex';
106+@use 'pages/redis';
107+@use 'pages/rethinkdb';
108+@use 'pages/rfc';
109+@use 'pages/rubydoc';
110+@use 'pages/rust';
111+@use 'pages/rxjs';
112+@use 'pages/sanctuary';
113+@use 'pages/sanctuary_def';
114+@use 'pages/sanctuary_type_classes';
115+@use 'pages/scala';
116+@use 'pages/sinon';
117+@use 'pages/sphinx';
118+@use 'pages/sphinx_simple';
119+@use 'pages/sqlite';
120+@use 'pages/support_tables';
121+@use 'pages/tailwindcss';
122+@use 'pages/tcl_tk';
123+@use 'pages/tensorflow';
124+@use 'pages/terraform';
125+@use 'pages/typescript';
126+@use 'pages/underscore';
127+@use 'pages/vue';
128+@use 'pages/webpack';
129+@use 'pages/wordpress';
130+@use 'pages/yard';
131+@use 'pages/yii';
assets/stylesheets/components/_app.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 html._booting { background: var(--contentBackground); }
24 body._max-width { background: none; }
35 html._booting body._max-width { background: var(--documentBackground); }
assets/stylesheets/components/_content.scss+6−1
@@ -2,6 +2,11 @@ · 1 unmodified line
22 // Content
33 //
44
5+@use 'global/base';
6+@use 'global/icons';
7+@use 'global/mixins' as m;
8+@use 'global/classes';
9+
510 ._container {
611 position: relative;
712 z-index: var(--contentZ);
@@ -10,7 +15,7 @@ · 2 unmodified lines
1015 pointer-events: none;
1116 @extend %border-box;
1217
13− @include mobile { margin-left: var(--sidebarMediumWidth); }
18+ @include m.mobile { margin-left: var(--sidebarMediumWidth); }
1419
1520 ._sidebar-hidden & { margin-left: 0; }
1621 body:not(._native-scrollbars) & { -webkit-margin-end: -1px; }
assets/stylesheets/components/_fail.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._fail { // Don't use CSS variables, in case the browser doesn't support them.
24 display: block;
35 position: relative;
assets/stylesheets/components/_header.scss+5−1
@@ -2,6 +2,10 @@ · 1 unmodified line
22 // Header
33 //
44
5+@use 'global/icons';
6+@use 'global/mixins' as m;
7+@use 'global/classes';
8+
59 ._header {
610 position: absolute;
711 z-index: var(--headerZ);
@@ -17,7 +21,7 @@ · 9 unmodified lines
1721 @extend %border-box;
1822 @extend %user-select-none;
1923
20− @include mobile { width: var(--sidebarMediumWidth); }
24+ @include m.mobile { width: var(--sidebarMediumWidth); }
2125 }
2226
2327 ._header-left {
assets/stylesheets/components/_notice.scss+3−1
@@ -1,3 +1,5 @@
1+@use 'global/mixins' as m;
2+
13 ._notice {
24 position: absolute;
35 z-index: var(--noticeZ);
@@ -9,7 +11,7 @@ · 5 unmodified lines
911 background: var(--noticeBackground);
1012 box-shadow: inset 0 1px var(--noticeBorder);
1113
12− @include mobile { left: var(--sidebarMediumWidth); }
14+ @include m.mobile { left: var(--sidebarMediumWidth); }
1315
1416 ._sidebar-hidden & { left: 0; }
1517
assets/stylesheets/components/_notif.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/classes';
2+@use 'global/icons';
3+
14 ._notif, %notif {
25 position: absolute;
36 z-index: 2;
assets/stylesheets/components/_page.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/classes';
2+@use 'components/content';
3+
14 //
25 // Page
36 //
assets/stylesheets/components/_path.scss+4−1
@@ -1,3 +1,6 @@
1+@use 'global/mixins' as m;
2+@use 'global/icons';
3+
14 ._path {
25 position: absolute;
36 z-index: var(--headerZ);
@@ -11,7 +14,7 @@ · 7 unmodified lines
1114 background: var(--pathBackground);
1215 box-shadow: inset 0 1px var(--pathBorder);
1316
14− @include mobile { left: var(--sidebarMediumWidth); }
17+ @include m.mobile { left: var(--sidebarMediumWidth); }
1518
1619 ._sidebar-hidden & { left: 0; }
1720
assets/stylesheets/components/_settings.scss+3−0
@@ -2,6 +2,9 @@ · 1 unmodified line
22 // Settings
33 //
44
5+@use 'global/classes';
6+@use 'global/icons';
7+
58 ._settings {
69 display: none;
710 position: absolute;
assets/stylesheets/components/_sidebar.scss+6−2
@@ -2,6 +2,10 @@ · 1 unmodified line
22 // Sidebar
33 //
44
5+@use 'global/classes';
6+@use 'global/icons';
7+@use 'global/mixins' as m;
8+
59 ._sidebar {
610 position: absolute;
711 z-index: var(--sidebarZ);
@@ -76,7 +80,7 @@ · 68 unmodified lines
7680 box-shadow: inset -1px 0 var(--sidebarBorder);
7781 @extend %border-box;
7882
79− @include mobile { width: var(--sidebarMediumWidth); }
83+ @include m.mobile { width: var(--sidebarMediumWidth); }
8084
8185 ._sidebar > & { min-height: 100%; }
8286
@@ -311,7 +315,7 @@ · 228 unmodified lines
311315 transform: translate3d(0, 0, 0);
312316 @extend %border-box;
313317
314− @include mobile { min-width: var(--sidebarMediumWidth); }
318+ @include m.mobile { min-width: var(--sidebarMediumWidth); }
315319
316320 > ._list-text { display: inline; }
317321
assets/stylesheets/global/_base.scss+7−3
@@ -1,13 +1,17 @@
1+@use 'global/classes';
2+@use 'global/mixins' as m;
3+@use 'global/variables' as *;
4+@use 'global/print';
5+
16 html {
27 height: 100%;
38 font-size: 100%;
49 background: #fff; // fallback to show the error message to browsers that don't support CSS variables.
510 background: var(--documentBackground);
611
7− @include mobile { font-size: 93.75%; }
12+ @include m.mobile { font-size: 93.75%; }
813
9− @include print { background: none; }
10− @import 'global/print';
14+ @include m.print { background: none; }
1115 }
1216
1317 html._theme-default {
assets/stylesheets/global/_print.scss+3−1
@@ -1,4 +1,6 @@
1−@include print {
1+@use 'global/mixins' as m;
2+
3+@include m.print {
24 ._header, ._sidebar, ._path, ._notif, ._toc, ._pre-clip, ._notice, ._links {
35 display: none !important;
46 }
assets/stylesheets/global/_variables-dark.scss+4−2
@@ -1,3 +1,5 @@
1+@use 'sass:color';
2+
13 html._theme-dark {
24 --absolute: white;
35
@@ -29,8 +31,8 @@ html._theme-dark { · 25 unmodified lines
2931
3032 --headerBackground: #1c1c1c;
3133 --headerBorder: #000;
32− --searchTagBackground: #{darken(#1c1c1c, 5%)};
33− --searchBorder: #{darken(#000, 2%)};
34+ --searchTagBackground: #{color.adjust(#1c1c1c, $lightness: -5%)};
35+ --searchBorder: #{color.adjust(#000, $lightness: -2%)};
3436
3537 --sidebarBackground: #24282a;
3638 --transparentSidebarBackground: #{rgba(#24282a, 0)};
assets/stylesheets/global/_variables-light.scss+4−2
@@ -1,3 +1,5 @@
1+@use 'sass:color';
2+
13 html._theme-default {
24 --absolute: black;
35
@@ -29,8 +31,8 @@ html._theme-default { · 25 unmodified lines
2931
3032 --headerBackground: #eee;
3133 --headerBorder: #d7d7d7;
32− --searchTagBackground: #{darken(#eee, 5%)};
33− --searchBorder: #{darken(#d7d7d7, 2%)};
34+ --searchTagBackground: #{color.adjust(#eee, $lightness: -5%)};
35+ --searchBorder: #{color.adjust(#d7d7d7, $lightness: -2%)};
3436
3537 --sidebarBackground: #f9f9f9;
3638 --transparentSidebarBackground: #{rgba(#f9f9f9, 0)};
assets/stylesheets/global/_variables.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/variables-light';
2+@use 'global/variables-dark';
3+
14 // Variables needed to style the error message for browsers that don't support CSS variables.
25 $baseFont: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, Ubuntu, 'Helvetica Neue', Arial, sans-serif;
36 $textColor: #333;
assets/stylesheets/pages/_angular.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._angular {
25 @extend %simple;
36
assets/stylesheets/pages/_angularjs.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._angularjs {
24 h2 { @extend %block-heading; }
35
assets/stylesheets/pages/_apache.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._apache {
24 @extend %simple;
35
assets/stylesheets/pages/_async.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._async {
24 @extend %simple;
35
assets/stylesheets/pages/_bash.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._bash {
24 dl > dt > code,
35 dl > dt > kbd {
assets/stylesheets/pages/_bootstrap.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._bootstrap {
24 @extend %simple;
35
assets/stylesheets/pages/_cakephp.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._cakephp {
24 @extend %simple;
35
assets/stylesheets/pages/_chef.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._chef {
24 @extend %simple;
35
assets/stylesheets/pages/_clojure.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._clojure {
24 h2:not([id]) { @extend %block-heading; }
35 h2[id], h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_codeception.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._codeception {
24 @extend %simple;
35
assets/stylesheets/pages/_coffeescript.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'pages/simple';
2+
3+
14 ._coffeescript {
25 @extend %simple;
36
assets/stylesheets/pages/_cordova.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._cordova {
24 @extend %simple;
35
assets/stylesheets/pages/_cppref.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/base';
2+
13 ._cppref {
24 > h2, > h3 { @extend %block-heading; }
35 > h4 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_crystal.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._crystal {
25 @extend %simple;
36
assets/stylesheets/pages/_cypress.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._cypress {
24 @extend %simple;
35
assets/stylesheets/pages/_d.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/base';
2+
13 ._d {
24 h2 { @extend %block-heading; }
35 h3, .d_decl { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_d3.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._d3 {
24 > h2 { @extend %block-heading; }
35 > h3 { @extend %block-label; }
assets/stylesheets/pages/_dart.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._dart {
24 @extend %simple;
35
assets/stylesheets/pages/_dojo.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._dojo {
24 @extend %simple;
35
assets/stylesheets/pages/_drupal.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._drupal {
24 h3 { @extend %block-heading; }
35 .signature { @extend %note, %note-blue; }
assets/stylesheets/pages/_elisp.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._elisp {
24 dl > dt {
35 @extend %block-label, %label-blue;
assets/stylesheets/pages/_elixir.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._elixir {
24 @extend %simple;
35
assets/stylesheets/pages/_ember.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._ember {
24 @extend %simple;
35
assets/stylesheets/pages/_erlang.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._erlang {
24 @extend %simple;
35
assets/stylesheets/pages/_express.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._express {
24 @extend %simple;
35
assets/stylesheets/pages/_fastapi.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._fastapi {
24 > h2 { @extend %block-heading; }
35 > h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_fluture.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._fluture {
24 @extend %simple;
35
assets/stylesheets/pages/_git.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._git {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_github.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._github {
24 @extend %simple;
35
assets/stylesheets/pages/_gnu_make.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._gnu_make {
24 dl dt {
35 @extend %block-label, %label-blue;
assets/stylesheets/pages/_gnuplot.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._gnuplot {
24 .CENTER {
35 text-align: center;
assets/stylesheets/pages/_go.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._go {
24 @extend %simple;
35
assets/stylesheets/pages/_graphite.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._graphite {
24 @extend %simple;
35
assets/stylesheets/pages/_groovy.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._groovy {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_gtk.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._gtk {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_hapi.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._hapi {
24 @extend %simple;
35
assets/stylesheets/pages/_haproxy.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._haproxy {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_haskell.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/base';
2+
13 ._haskell-api {
24 > h2 { @extend %block-heading; }
35 > h3 { @extend %block-label; }
assets/stylesheets/pages/_jasmine.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._jasmine {
24 .subsection-title, h2 { @extend %block-heading; }
35 h4 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_jekyll.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._jekyll {
24 @extend %simple;
35
assets/stylesheets/pages/_joi.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._joi {
24 @extend %simple;
35
assets/stylesheets/pages/_jq.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._jq {
25 @extend %simple;
36
assets/stylesheets/pages/_jquery.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._jquery {
24 //
35 // Index page
assets/stylesheets/pages/_julia.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._julia {
24 @extend %simple;
35
assets/stylesheets/pages/_knockout.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._knockout {
24 > h2 { @extend %block-heading; }
35 > h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_kotlin.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._kotlin {
24 h2 { @extend %block-heading; }
35 h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_kubectl.scss+2−1
@@ -1,4 +1,5 @@
1+@use 'pages/simple';
2+
13 ._kubectl {
24 @extend %simple;
3−
45 }
assets/stylesheets/pages/_kubernetes.scss+2−1
@@ -1,4 +1,5 @@
1+@use 'pages/simple';
2+
13 ._kubernetes {
24 @extend %simple;
3−
45 }
assets/stylesheets/pages/_laravel.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._laravel {
24 h2 { @extend %block-heading; }
35 h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_liquid.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._liquid {
24 @extend %simple;
35
assets/stylesheets/pages/_lit.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._lit {
24 @extend %simple;
35
assets/stylesheets/pages/_love.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._love {
24 @extend %simple;
35
assets/stylesheets/pages/_lua.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._lua {
24 @extend %simple;
35
assets/stylesheets/pages/_mariadb.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._mariadb {
24 @extend %simple;
35
assets/stylesheets/pages/_mdn.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._mdn {
24 container-type: inline-size;
35
assets/stylesheets/pages/_meteor.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._meteor {
24 @extend %simple;
35
assets/stylesheets/pages/_mkdocs.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._mkdocs {
24 h2 { @extend %block-heading; }
35 h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_modernizr.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._modernizr {
24 h2 { @extend %block-heading; }
35 h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_moment.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._moment {
24 > h2 { @extend %block-heading; }
35 > h3 { @extend %block-label, %label-blue; }
assets/stylesheets/pages/_nginx.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._nginx {
24 h4 { @extend %block-heading; }
35 .note { @extend %note; }
assets/stylesheets/pages/_node.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._node {
24 // https://nodejs.org/api/documentation.html#stability-index
35 .api_stability { clear: both; }
assets/stylesheets/pages/_npm.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._npm {
24 @extend %simple;
35
assets/stylesheets/pages/_nushell.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._nushell {
24 @extend %simple;
35
assets/stylesheets/pages/_octave.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._octave {
24 @extend %simple;
35
assets/stylesheets/pages/_openjdk.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._openjdk {
24 @extend %simple;
35 > .inheritance { @extend %note; }
assets/stylesheets/pages/_openlayers.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._openlayers {
25 @extend %simple;
36 .nameContainer {
assets/stylesheets/pages/_perl.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._perl {
24 @extend %simple;
35
assets/stylesheets/pages/_phalcon.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._phalcon {
24 @extend %simple;
35
assets/stylesheets/pages/_phaser.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._phaser {
24 @extend %simple;
35
assets/stylesheets/pages/_php.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/classes';
2+@use 'components/content';
3+
14 ._php {
25 h1 {
36 margin-top: 0;
assets/stylesheets/pages/_phpunit.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._phpunit {
24 @extend %simple;
35
assets/stylesheets/pages/_postgres.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._postgres {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_pug.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._pug {
24 @extend %simple;
35
assets/stylesheets/pages/_pygame.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._pygame {
24 @extend %simple;
35
assets/stylesheets/pages/_python.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/sphinx';
2+
13 ._python {
24 @extend %sphinx;
35
assets/stylesheets/pages/_qt.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._qt {
24 @extend %simple;
35
assets/stylesheets/pages/_ramda.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._ramda {
25 @extend %simple;
36
assets/stylesheets/pages/_rdoc.scss+4−1
@@ -1,3 +1,6 @@
1+@use 'global/classes';
2+@use 'global/mixins' as m;
3+
14 ._rdoc {
25 > .description, > .documentation-section { padding-left: 1rem; }
36 > .description > h2, header > h3, > h2 { @extend %block-heading; }
@@ -28,7 +31,7 @@ · 24 unmodified lines
2831
2932 &:hover { text-decoration: underline; }
3033
31− @include print {
34+ @include m.print {
3235 display: none;
3336 }
3437 }
assets/stylesheets/pages/_react.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._react {
24 @extend %simple;
35
assets/stylesheets/pages/_react_native.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._react_native {
24 @extend %simple;
35
assets/stylesheets/pages/_reactivex.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._reactivex {
24 @extend %simple;
35
assets/stylesheets/pages/_redis.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'global/classes';
3+
14 ._redis {
25 padding-left: 1rem;
36
assets/stylesheets/pages/_rethinkdb.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._rethinkdb {
24 @extend %simple;
35
assets/stylesheets/pages/_rfc.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/base';
2+
13 ._rfc-pre {
24 font-size: .8125rem;
35 min-width: 38rem;
assets/stylesheets/pages/_rubydoc.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._rubydoc {
24 @extend %simple;
35
assets/stylesheets/pages/_rust.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/base';
2+@use 'pages/simple';
3+
14 ._rust {
25 @extend %simple;
36
assets/stylesheets/pages/_rxjs.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._rxjs {
24 @extend %simple;
35
assets/stylesheets/pages/_sanctuary.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sanctuary {
24 @extend %simple;
35
assets/stylesheets/pages/_sanctuary_def.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sanctuary_def {
24 @extend %simple;
35
assets/stylesheets/pages/_sanctuary_type_classes.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sanctuary_type_classes {
24 @extend %simple;
35
assets/stylesheets/pages/_scala.scss+6−2
@@ -1,3 +1,7 @@
1+@use 'global/base';
2+@use 'global/mixins' as m;
3+@use 'pages/simple';
4+
15 ._scala {
26 @extend %simple;
37
@@ -22,7 +26,7 @@ · 18 unmodified lines
2226
2327 a { padding: .4em }
2428
25− @include print {
29+ @include m.print {
2630 display: none;
2731 }
2832 }
@@ -36,7 +40,7 @@ · 7 unmodified lines
3640
3741 &:hover { text-decoration: underline; }
3842
39− @include print {
43+ @include m.print {
4044 display: none;
4145 }
4246 }
assets/stylesheets/pages/_simple.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 %simple {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_sinon.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sinon {
24 @extend %simple;
35
assets/stylesheets/pages/_sphinx.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 %sphinx {
24 h2 { @extend %block-heading; }
35 h3 { @extend %block-label; }
assets/stylesheets/pages/_sphinx_simple.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sphinx_simple {
24 @extend %simple;
35
assets/stylesheets/pages/_sqlite.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._sqlite {
24 @extend %simple;
35
assets/stylesheets/pages/_support_tables.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._support_tables {
24 h2 { @extend %block-heading; }
35 code { @extend %label; }
assets/stylesheets/pages/_tcl_tk.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._tcl_tk {
24 @extend %simple;
35
assets/stylesheets/pages/_tensorflow.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._tensorflow {
24 @extend %simple;
35
assets/stylesheets/pages/_terraform.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._terraform {
24 @extend %simple;
35 .note, .alert { @extend %note; }
assets/stylesheets/pages/_typescript.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._typescript {
24 @extend %simple;
35 .deprecated { @extend %label-red; }
assets/stylesheets/pages/_underscore.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'global/classes';
2+
13 ._underscore {
24 padding-left: 1rem;
35
assets/stylesheets/pages/_vue.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._vue {
24 @extend %simple;
35
assets/stylesheets/pages/_webpack.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._webpack {
24 @extend %simple;
35
assets/stylesheets/pages/_wordpress.scss+3−1
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._wordpress {
24 @extend %simple;
35
@@ -12,4 +14,4 @@ · 8 unmodified lines
1214 .callout-alert {
1315 @extend %note, %note-orange;
1416 }
15−}
17+}
assets/stylesheets/pages/_yard.scss+3−0
@@ -1,3 +1,6 @@
1+@use 'global/classes';
2+@use 'pages/simple';
3+
14 ._yard {
25 @extend %simple;
36
assets/stylesheets/pages/_yii.scss+2−0
@@ -1,3 +1,5 @@
1+@use 'pages/simple';
2+
13 ._yii {
24 @extend %simple;
35
lib/tasks/sprites.thor+15−0
@@ -56,6 +56,9 @@ class SpritesCLI < Thor · 55 unmodified lines
5656
5757 save_manifest(items, icons_per_row, 'assets/images/sprites/docs.json')
5858
59+ # SCSS wrapped in ERB templates must be compiled manually.
60+ compile_scss_erb
61+
5962 if options[:remove_public_icons]
6063 logger.info('Removing public/icons')
6164 FileUtils.rm_rf('public/icons')
@@ -213,6 +216,18 @@ class SpritesCLI < Thor · 151 unmodified lines
213216 "assets/images/sprites/docs#{size == 32 ? '@2x' : ''}.png"
214217 end
215218
219+ def compile_scss_erb
220+ scss_erb_files = Dir['assets/stylesheets/**/*.scss.erb']
221+
222+ scss_erb_files.each do |erb_path|
223+ scss_path = erb_path.gsub('.erb', '')
224+ File.open(scss_path, 'w') do |f|
225+ f.write(ERB.new(File.open(erb_path).read).result)
226+ logger.info("Compiling #{erb_path} to #{scss_path}")
227+ end
228+ end
229+ end
230+
216231 def image_optim
217232 @image_optim ||= ImageOptim.new(
218233 :config_paths => [],