NpmJS.com – Dark [Ath]

Dark theme for NPM (NpmJS.com). Includes styling of documentation.

  1. /* ==UserStyle==
  2. @name NpmJS.com – Dark [Ath]
  3. @namespace athari
  4. @version 1.1.1
  5. @description Dark theme for NPM (NpmJS.com). Includes styling of documentation.
  6. @author Athari (https://github.com/Athari)
  7. @homepageURL https://github.com/Athari/AthariUserCSS
  8. @supportURL https://github.com/Athari/AthariUserCSS/issues
  9. @license MIT
  10. @preprocessor default
  11. ==/UserStyle== */
  12.  
  13. @-moz-document domain("npmjs.com") {
  14. :root {
  15. color-scheme: dark;
  16. }
  17. :root {
  18. --color-fg-default: #eee; /*262626*/
  19. --color-fg-muted: #ccc; /*4d4d4d*/
  20. --color-fg-subtle: #999; /*666666*/
  21. --color-fg-on-emphasis: #ffffff;
  22. --color-fg-brand: #cb3837;
  23. --color-fg-accent: #196cb2;
  24. --color-fg-success: #107010;
  25. --color-fg-attention: #886701;
  26. --color-fg-danger: #bb2e3e;
  27.  
  28. --color-bg-default: #111; /*ffffff*/
  29. --color-bg-subtle: #1f1f1f; /*f7f7f7*/
  30. --color-bg-inset: #222; /*f2f2f2*/
  31. --color-bg-emphasis: #262626;
  32. --color-bg-accent: oklch(from #f2f9ff 0.3 c h); /*f2f9ff*/
  33. --color-bg-success: oklch(from #dcfdd9 0.3 c h); /*dcfdd9*/
  34. --color-bg-attention: oklch(from #fff5d8 0.3 c h); /*fff5d8*/
  35. --color-bg-danger: oklch(from #ffdbdb 0.3 c h); /*ffdbdb*/
  36.  
  37. --color-border-default: #444; /*e6e6e6*/
  38. --color-border-muted: #333; /*f2f2f2*/
  39. --color-border-strong: #666; /*8f8f8f*/
  40. --color-border-accent: #afcee9;
  41. --color-border-accent-emphasis: #0969da;
  42. --color-border-success: #93d58a;
  43. --color-border-success-emphasis: #107010;
  44. --color-border-attention: oklch(from #efd88f 0.5 c h); /*efd88f*/
  45. --color-border-danger: #f1b8bc;
  46. /* missing wtf?? */
  47. --color-canvas-default: #111;
  48. --color-canvas-overlay: #333;
  49. --color-accent-muted: #334;
  50. --color-accent-subtle: #223;
  51. --shadow-floating-small: 1px 1px 2px 2px #0004;
  52.  
  53. --color-shadow-large: 0 8px 24px rgba(140, 149, 159, 0.2);
  54.  
  55. /*
  56. Legacy color variables — please avoid!
  57. */
  58. --button-green: #00c642;
  59. --npmRed: #cb3837;
  60. --npmLightRed: #fb3e44;
  61. --wombat-red: #cb3837;
  62. --wombat-red-hover: #c40b0a;
  63. --wombat-yellow: #ffcd3a;
  64. --wombat-violet: #8956ff;
  65. --wombat-purple: #c836c3;
  66. --wombat-green: #00c642;
  67. --wombat-teal: #29abe2;
  68. --blue: #357edd;
  69. --light-blue: #70b8ff;
  70. --header-color: #eee;
  71. --bg: #111;
  72. --bg-dark: #cb3837;
  73. --background-color: #000; /*fafafa*/
  74. --wombat-bg-red: rgba(203, 55, 56, 0.1);
  75.  
  76. --code: 'Cascadia Code', 'Fira Mono', 'Andale Mono', 'Consolas', monospace;
  77. --code-ls: 0px;
  78. --code-lh: 24px;
  79.  
  80. --standardCardTransition: all 0.2s ease;
  81.  
  82. --header-letter-spacing: 0.015625em;
  83.  
  84. --readme-font-size: 16px;
  85. --readme-line-height: 1.3;
  86.  
  87. --code-font-size: 13px;
  88. --copy-color: #eee;
  89. --code-bg: #222;
  90. --code-box-radius: 2px;
  91.  
  92. /* docs */
  93. --fontStack-monospace: var(--code);
  94. /*--fgColor-default: #eee;
  95. --bgColor-default: #111;
  96. --borderColor-default: #444;
  97. --borderColor-muted: #333;*/
  98. }
  99.  
  100. :not(#\0) {
  101. word-break: normal;
  102. }
  103.  
  104. input {
  105. color: #eee !important;
  106. background: #222 !important;
  107. &::placeholder {
  108. color: #888 !important;
  109. }
  110. }
  111.  
  112. h1, h2, h3, h4, h5, h6 {
  113. span {
  114. color: inherit !important;
  115. }
  116. }
  117.  
  118. form#search > .relative {
  119. border-color: #333 !important;
  120. > .nowrap {
  121. background: #222;
  122. }
  123. }
  124.  
  125. footer {
  126. background: #000 !important;
  127. #footer {
  128. h3 {
  129. color: #bbb;
  130. }
  131. a {
  132. color: var(--wombat-red);
  133. }
  134. }
  135. }
  136.  
  137. .black {
  138. color: #eee;
  139. }
  140. .hover-black:is(:hover, :focus) {
  141. color: #eee;
  142. }
  143. .black-90 {
  144. color: #ddd;
  145. }
  146. .black-80 {
  147. color: #ccc;
  148. svg {
  149. color: inherit;
  150. g {
  151. fill: currentcolor;
  152. }
  153. }
  154. button {
  155. color: inherit;
  156. }
  157. }
  158. .black-70 {
  159. color: #bbb;
  160. }
  161. .black-60 {
  162. color: #aaa;
  163. }
  164. .bg-black-05 {
  165. background: #222;
  166. }
  167. .hover-bg-black-10:is(:hover, :focus) {
  168. background: #444;
  169. }
  170. .b--black-30 {
  171. border-color: #333;
  172. }
  173. .b--black-20 {
  174. border-color: #2f2f2f;
  175. }
  176. .b--black-10 {
  177. border-color: #222;
  178. }
  179. .bg-white {
  180. background-color: #111;
  181. }
  182. .bg-washed-red {
  183. background-color: #311;
  184. }
  185.  
  186. .button-reset {
  187. opacity: 0.7;
  188. }
  189.  
  190. #readme {
  191. color: var(--copy-color);
  192. line-height: var(--readme-line-height);
  193. p, li,
  194. h1, h2, h3, h4, h5, h6,
  195. strong, em, del, ins, b, i, s,
  196. code, pre,
  197. .highlight {
  198. color: inherit;
  199. }
  200. .highlight {
  201. code, pre {
  202. font-size: var(--code-font-size);
  203. .pl-s, .pl-pds, .pl-s .pl-pse .pl-s1, .pl-sr, .pl-sr .pl-cce, .pl-sr .pl-sre, .pl-sr .pl-sra {
  204. color: oklch(from #032f62 0.6 c h);
  205. }
  206. .pl-e, .pl-en {
  207. color: oklch(from #6f42c1 0.7 c h);
  208. }
  209. .pl-c1, .pl-s .pl-v {
  210. color: oklch(from #005cc5 0.6 c h);
  211. }
  212. .pl-smi, .pl-s .pl-s1, .pl-mi, .pl-mb {
  213. color: oklch(from #24292e 0.8 c h);
  214. }
  215. .pl-corl {
  216. color: oklch(from #032f62 0.7 c h);
  217. }
  218. .gutter {
  219. color: #eee;
  220. background: #333;
  221. }
  222. .source.gfm {
  223. color: #bbb;
  224. }
  225. .gfm .markup.heading {
  226. color: #eee;
  227. }
  228. .markdown {
  229. .paragraph {
  230. color: #bbb;
  231. }
  232. .heading {
  233. color: #eee;
  234. }
  235. }
  236. .keyword, .storage, .storage.type {
  237. color: oklch(from #222 0.9 c h);
  238. }
  239. .entity {
  240. &.name {
  241. &.function {
  242. color: oklch(from #900 0.6 c h);
  243. }
  244. &.tag {
  245. color: oklch(from #008080 0.7 c h);
  246. }
  247. }
  248. &.other {
  249. &.attribute-name {
  250. color: oklch(from #458 0.7 c h);
  251. }
  252. }
  253. }
  254. .string {
  255. color: oklch(from #d14 0.7 c h);
  256. }
  257. .variable {
  258. color: oklch(from #008080 0.7 c h);
  259. }
  260. .support:is(.constant, .function, .type) {
  261. color: oklch(from #458 0.7 c h);
  262. }
  263. }
  264. }
  265. .editor-colors {
  266. .keyword,
  267. .storage,
  268. .storage.type {
  269. color: oklch(from #222 0.7 c h);
  270. }
  271. .meta.structure.dictionary.json > .string.quoted.double.json,
  272. .meta.structure.dictionary.json > .string.quoted.double.json .punctuation.string {
  273. color: oklch(from #000080 0.6 c h);
  274. }
  275. .css.support.property-name {
  276. color: oklch(from #333 0.8 c h);
  277. }
  278. .support.constant,
  279. .support.function,
  280. .support.type {
  281. color: oklch(from #458 0.7 c h);
  282. }
  283. .variable {
  284. color: oklch(from #008080 0.7 c h);
  285. }
  286. .constant.language {
  287. color: oklch(from #606aa1 0.7 c h);
  288. }
  289. }
  290. code, pre {
  291. background: var(--code-bg);
  292. font-size: var(--code-font-size);
  293. word-break: normal !important;
  294. }
  295. blockquote {
  296. background: #222;
  297. border-color: #333;
  298. }
  299. table, tr, th, td {
  300. border-color: #333;
  301. }
  302. td {
  303. background: #111;
  304. tr:nth-child(even) & {
  305. background: #181818;
  306. }
  307. }
  308. th {
  309. background: #222;
  310. }
  311. }
  312.  
  313. #tabpanel-explore {
  314. pre {
  315. filter: invert(1);
  316. -webkit-text-stroke: 0.5px;
  317. code {
  318. font-size: 13px;
  319. }
  320. }
  321. }
  322.  
  323. #tabpanel-readme,
  324. #tabpanel-dependents,
  325. #tabpanel-dependencies {
  326. h2.b--black-10,
  327. h3.b--black-10 {
  328. color: #eee;
  329. }
  330. }
  331.  
  332. [aria-labelledby="package-settings_publishingAccess_radiogroup_label"] {
  333. background: var(--color-bg-subtle);
  334. }
  335. [aria-label="Pagination Navigation"] {
  336. > div > a {
  337. color: #eee;
  338. background: #333;
  339. border-color: #444;
  340. &:hover {
  341. background: #444;
  342. }
  343. &[aria-current="true"] {
  344. background: #777;
  345. }
  346. }
  347. }
  348. [id="pkg-list-exact-match"] {
  349. background: #334;
  350. }
  351. [aria-owns^="package-tab-readme"] {
  352. > li {
  353. a {
  354. &#package-tab-dependencies {
  355. color: oklch(from #782075 0.6 c h);
  356. }
  357. &#package-tab-dependents {
  358. color: oklch(from #290089 0.6 c h);
  359. }
  360. &#package-tab-versions {
  361. color: oklch(from #146c91 0.6 c h);
  362. }
  363. }
  364. &:not(:has(a[aria-selected="true"])):hover {
  365. background: #222;
  366. }
  367. }
  368. }
  369. #main > .center-ns > .bg-washed-red.b--black-10:has(.b--black-10) code.b--black-30 /* deprecated warning */ {
  370. background: #222;
  371. }
  372.  
  373. /* docs */
  374. [style="color: rgb(57, 58, 52); background-color: rgb(246, 248, 250);"],
  375. [style="color:#393A34;background-color:#f6f8fa"] {
  376. color: var(--copy-color) !important;
  377. background: var(--code-bg) !important;
  378. }
  379. [style="color: rgb(57, 58, 52);"] {
  380. color: var(--copy-color) !important;
  381. }
  382. [style="color:#393A34"] {
  383. color: oklch(from #393A34 0.8 c h) !important;
  384. }
  385. }