react-cheminfo 0.8.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +60 -2
  2. package/bin/check-tokens.mjs +105 -0
  3. package/lib/about/core/about.d.ts +95 -0
  4. package/lib/about/core/about.d.ts.map +1 -0
  5. package/lib/about/core/about.js +78 -0
  6. package/lib/about/core/about.js.map +1 -0
  7. package/lib/about/core/index.d.ts +3 -0
  8. package/lib/about/core/index.d.ts.map +1 -0
  9. package/lib/about/core/index.js +2 -0
  10. package/lib/about/core/index.js.map +1 -0
  11. package/lib/about/ui/AboutCitations.d.ts +14 -0
  12. package/lib/about/ui/AboutCitations.d.ts.map +1 -0
  13. package/lib/about/ui/AboutCitations.js +40 -0
  14. package/lib/about/ui/AboutCitations.js.map +1 -0
  15. package/lib/about/ui/AboutPage.d.ts +32 -0
  16. package/lib/about/ui/AboutPage.d.ts.map +1 -0
  17. package/lib/about/ui/AboutPage.js +70 -0
  18. package/lib/about/ui/AboutPage.js.map +1 -0
  19. package/lib/about/ui/AboutSection.d.ts +23 -0
  20. package/lib/about/ui/AboutSection.d.ts.map +1 -0
  21. package/lib/about/ui/AboutSection.js +28 -0
  22. package/lib/about/ui/AboutSection.js.map +1 -0
  23. package/lib/about/ui/index.d.ts +7 -0
  24. package/lib/about/ui/index.d.ts.map +1 -0
  25. package/lib/about/ui/index.js +4 -0
  26. package/lib/about/ui/index.js.map +1 -0
  27. package/lib/chrome/ui/index.d.ts +1 -0
  28. package/lib/chrome/ui/index.d.ts.map +1 -1
  29. package/lib/chrome/ui/index.js +3 -0
  30. package/lib/chrome/ui/index.js.map +1 -1
  31. package/lib/clipboard/ui/CodeBlock.d.ts.map +1 -1
  32. package/lib/clipboard/ui/CodeBlock.js +4 -1
  33. package/lib/clipboard/ui/CodeBlock.js.map +1 -1
  34. package/lib/color/ui/ColorScaleLegend.js +1 -1
  35. package/lib/color/ui/ColorScaleLegend.js.map +1 -1
  36. package/lib/core.d.ts +3 -0
  37. package/lib/core.d.ts.map +1 -1
  38. package/lib/core.js +5 -0
  39. package/lib/core.js.map +1 -1
  40. package/lib/credits/core/credits.d.ts +36 -0
  41. package/lib/credits/core/credits.d.ts.map +1 -1
  42. package/lib/credits/core/credits.js +42 -0
  43. package/lib/credits/core/credits.js.map +1 -1
  44. package/lib/credits/ui/CreditsList.js +1 -1
  45. package/lib/credits/ui/CreditsList.js.map +1 -1
  46. package/lib/delimited/ui/DelimitedTextPanel.js +1 -1
  47. package/lib/delimited/ui/DelimitedTextPanel.js.map +1 -1
  48. package/lib/ecosystem/core/sites.d.ts +1 -1
  49. package/lib/ecosystem/core/sites.d.ts.map +1 -1
  50. package/lib/ecosystem/core/sites.js +10 -0
  51. package/lib/ecosystem/core/sites.js.map +1 -1
  52. package/lib/ecosystem/core/tokens.d.ts.map +1 -1
  53. package/lib/ecosystem/core/tokens.js +1 -0
  54. package/lib/ecosystem/core/tokens.js.map +1 -1
  55. package/lib/ecosystem/ui/EcosystemLinks.js +2 -2
  56. package/lib/ecosystem/ui/EcosystemLinks.js.map +1 -1
  57. package/lib/ecosystem/ui/EcosystemMenu.js +1 -1
  58. package/lib/ecosystem/ui/EcosystemMenu.js.map +1 -1
  59. package/lib/ecosystem/ui/SiteTile.d.ts.map +1 -1
  60. package/lib/ecosystem/ui/SiteTile.js +5 -5
  61. package/lib/ecosystem/ui/SiteTile.js.map +1 -1
  62. package/lib/ecosystem/ui/glyphs.d.ts.map +1 -1
  63. package/lib/ecosystem/ui/glyphs.js +3 -0
  64. package/lib/ecosystem/ui/glyphs.js.map +1 -1
  65. package/lib/orbital/core/index.d.ts +1 -1
  66. package/lib/orbital/core/index.d.ts.map +1 -1
  67. package/lib/orbital/core/index.js +1 -1
  68. package/lib/orbital/core/index.js.map +1 -1
  69. package/lib/orbital/core/realHarmonics.d.ts +5 -2
  70. package/lib/orbital/core/realHarmonics.d.ts.map +1 -1
  71. package/lib/orbital/core/realHarmonics.js.map +1 -1
  72. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts +18 -0
  73. package/lib/orbital/ui/AtomicOrbitalCanvas.d.ts.map +1 -1
  74. package/lib/orbital/ui/AtomicOrbitalCanvas.js +84 -7
  75. package/lib/orbital/ui/AtomicOrbitalCanvas.js.map +1 -1
  76. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts +13 -0
  77. package/lib/orbital/ui/AtomicOrbitalViewer.d.ts.map +1 -1
  78. package/lib/orbital/ui/AtomicOrbitalViewer.js +1 -1
  79. package/lib/orbital/ui/AtomicOrbitalViewer.js.map +1 -1
  80. package/lib/orbital/ui/camera.d.ts +15 -0
  81. package/lib/orbital/ui/camera.d.ts.map +1 -1
  82. package/lib/orbital/ui/camera.js +68 -0
  83. package/lib/orbital/ui/camera.js.map +1 -1
  84. package/lib/orbital/ui/renderVolume.d.ts.map +1 -1
  85. package/lib/orbital/ui/renderVolume.js +8 -1
  86. package/lib/orbital/ui/renderVolume.js.map +1 -1
  87. package/lib/orbital/ui/serial.d.ts +25 -0
  88. package/lib/orbital/ui/serial.d.ts.map +1 -0
  89. package/lib/orbital/ui/serial.js +25 -0
  90. package/lib/orbital/ui/serial.js.map +1 -0
  91. package/lib/orbital/ui/viewer.d.ts +23 -0
  92. package/lib/orbital/ui/viewer.d.ts.map +1 -1
  93. package/lib/orbital/ui/viewer.js +70 -17
  94. package/lib/orbital/ui/viewer.js.map +1 -1
  95. package/lib/pedagogy/ui/ExerciseProgressHeader.js +1 -1
  96. package/lib/pedagogy/ui/ExerciseProgressHeader.js.map +1 -1
  97. package/lib/pedagogy/ui/GlossaryText.js +2 -2
  98. package/lib/pedagogy/ui/GlossaryText.js.map +1 -1
  99. package/lib/pedagogy/ui/ReferenceSectionBlock.js +5 -2
  100. package/lib/pedagogy/ui/ReferenceSectionBlock.js.map +1 -1
  101. package/lib/pedagogy/ui/SyntaxTooltip.js +2 -2
  102. package/lib/pedagogy/ui/SyntaxTooltip.js.map +1 -1
  103. package/lib/pedagogy/ui/TutorialStepStrip.js +4 -1
  104. package/lib/pedagogy/ui/TutorialStepStrip.js.map +1 -1
  105. package/lib/periodic/ui/CategoryLegend.js +1 -1
  106. package/lib/periodic/ui/CategoryLegend.js.map +1 -1
  107. package/lib/periodic/ui/PeriodicTableChrome.js +2 -2
  108. package/lib/periodic/ui/PeriodicTableChrome.js.map +1 -1
  109. package/lib/seo/vite/ogCard.d.ts.map +1 -1
  110. package/lib/seo/vite/ogCard.js +1 -0
  111. package/lib/seo/vite/ogCard.js.map +1 -1
  112. package/lib/share/ui/ShareDialogContent.d.ts.map +1 -1
  113. package/lib/share/ui/ShareDialogContent.js +5 -2
  114. package/lib/share/ui/ShareDialogContent.js.map +1 -1
  115. package/lib/share/ui/SharePartOptions.js +1 -1
  116. package/lib/share/ui/SharePartOptions.js.map +1 -1
  117. package/lib/slides/core/demoLinks.d.ts +43 -0
  118. package/lib/slides/core/demoLinks.d.ts.map +1 -0
  119. package/lib/slides/core/demoLinks.js +104 -0
  120. package/lib/slides/core/demoLinks.js.map +1 -0
  121. package/lib/slides/core/index.d.ts +13 -0
  122. package/lib/slides/core/index.d.ts.map +1 -0
  123. package/lib/slides/core/index.js +7 -0
  124. package/lib/slides/core/index.js.map +1 -0
  125. package/lib/slides/core/sectionHeading.d.ts +19 -0
  126. package/lib/slides/core/sectionHeading.d.ts.map +1 -0
  127. package/lib/slides/core/sectionHeading.js +19 -0
  128. package/lib/slides/core/sectionHeading.js.map +1 -0
  129. package/lib/slides/core/slideNavigation.d.ts +38 -0
  130. package/lib/slides/core/slideNavigation.d.ts.map +1 -0
  131. package/lib/slides/core/slideNavigation.js +65 -0
  132. package/lib/slides/core/slideNavigation.js.map +1 -0
  133. package/lib/slides/core/talk.d.ts +82 -0
  134. package/lib/slides/core/talk.d.ts.map +1 -0
  135. package/lib/slides/core/talk.js +134 -0
  136. package/lib/slides/core/talk.js.map +1 -0
  137. package/lib/slides/core/talkManifest.d.ts +90 -0
  138. package/lib/slides/core/talkManifest.d.ts.map +1 -0
  139. package/lib/slides/core/talkManifest.js +109 -0
  140. package/lib/slides/core/talkManifest.js.map +1 -0
  141. package/lib/slides/core/talkOrigin.d.ts +50 -0
  142. package/lib/slides/core/talkOrigin.d.ts.map +1 -0
  143. package/lib/slides/core/talkOrigin.js +62 -0
  144. package/lib/slides/core/talkOrigin.js.map +1 -0
  145. package/lib/slides/ui/BackToSlides.d.ts +26 -0
  146. package/lib/slides/ui/BackToSlides.d.ts.map +1 -0
  147. package/lib/slides/ui/BackToSlides.js +24 -0
  148. package/lib/slides/ui/BackToSlides.js.map +1 -0
  149. package/lib/slides/ui/DemoLink.d.ts +42 -0
  150. package/lib/slides/ui/DemoLink.d.ts.map +1 -0
  151. package/lib/slides/ui/DemoLink.js +17 -0
  152. package/lib/slides/ui/DemoLink.js.map +1 -0
  153. package/lib/slides/ui/EmbedSlide.d.ts +19 -0
  154. package/lib/slides/ui/EmbedSlide.d.ts.map +1 -0
  155. package/lib/slides/ui/EmbedSlide.js +56 -0
  156. package/lib/slides/ui/EmbedSlide.js.map +1 -0
  157. package/lib/slides/ui/SectionSlide.d.ts +18 -0
  158. package/lib/slides/ui/SectionSlide.d.ts.map +1 -0
  159. package/lib/slides/ui/SectionSlide.js +18 -0
  160. package/lib/slides/ui/SectionSlide.js.map +1 -0
  161. package/lib/slides/ui/Slide.d.ts +52 -0
  162. package/lib/slides/ui/Slide.d.ts.map +1 -0
  163. package/lib/slides/ui/Slide.js +58 -0
  164. package/lib/slides/ui/Slide.js.map +1 -0
  165. package/lib/slides/ui/SlideBody.d.ts +32 -0
  166. package/lib/slides/ui/SlideBody.d.ts.map +1 -0
  167. package/lib/slides/ui/SlideBody.js +27 -0
  168. package/lib/slides/ui/SlideBody.js.map +1 -0
  169. package/lib/slides/ui/Slideshow.d.ts +93 -0
  170. package/lib/slides/ui/Slideshow.d.ts.map +1 -0
  171. package/lib/slides/ui/Slideshow.js +122 -0
  172. package/lib/slides/ui/Slideshow.js.map +1 -0
  173. package/lib/slides/ui/SlideshowBar.d.ts +33 -0
  174. package/lib/slides/ui/SlideshowBar.d.ts.map +1 -0
  175. package/lib/slides/ui/SlideshowBar.js +20 -0
  176. package/lib/slides/ui/SlideshowBar.js.map +1 -0
  177. package/lib/slides/ui/TalkList.d.ts +37 -0
  178. package/lib/slides/ui/TalkList.d.ts.map +1 -0
  179. package/lib/slides/ui/TalkList.js +68 -0
  180. package/lib/slides/ui/TalkList.js.map +1 -0
  181. package/lib/slides/ui/index.d.ts +19 -0
  182. package/lib/slides/ui/index.d.ts.map +1 -0
  183. package/lib/slides/ui/index.js +10 -0
  184. package/lib/slides/ui/index.js.map +1 -0
  185. package/lib/slides/vite/index.d.ts +3 -0
  186. package/lib/slides/vite/index.d.ts.map +1 -0
  187. package/lib/slides/vite/index.js +2 -0
  188. package/lib/slides/vite/index.js.map +1 -0
  189. package/lib/slides/vite/talks.d.ts +50 -0
  190. package/lib/slides/vite/talks.d.ts.map +1 -0
  191. package/lib/slides/vite/talks.js +87 -0
  192. package/lib/slides/vite/talks.js.map +1 -0
  193. package/lib/slides.d.ts +3 -0
  194. package/lib/slides.d.ts.map +1 -0
  195. package/lib/slides.js +3 -0
  196. package/lib/slides.js.map +1 -0
  197. package/lib/structure/ui/StructureEditor.js +2 -2
  198. package/lib/structure/ui/StructureEditor.js.map +1 -1
  199. package/lib/structure/ui/StructurePlaceholder.js +1 -1
  200. package/lib/structure/ui/StructurePlaceholder.js.map +1 -1
  201. package/lib/tokens/core/checkTokens.d.ts +51 -0
  202. package/lib/tokens/core/checkTokens.d.ts.map +1 -0
  203. package/lib/tokens/core/checkTokens.js +188 -0
  204. package/lib/tokens/core/checkTokens.js.map +1 -0
  205. package/lib/tokens/core/colors.d.ts +42 -0
  206. package/lib/tokens/core/colors.d.ts.map +1 -0
  207. package/lib/tokens/core/colors.js +119 -0
  208. package/lib/tokens/core/colors.js.map +1 -0
  209. package/lib/tokens/core/index.d.ts +3 -0
  210. package/lib/tokens/core/index.d.ts.map +1 -0
  211. package/lib/tokens/core/index.js +2 -0
  212. package/lib/tokens/core/index.js.map +1 -0
  213. package/lib/tokens/core/rules.d.ts +23 -0
  214. package/lib/tokens/core/rules.d.ts.map +1 -0
  215. package/lib/tokens/core/rules.js +90 -0
  216. package/lib/tokens/core/rules.js.map +1 -0
  217. package/lib/ui.d.ts +1 -0
  218. package/lib/ui.d.ts.map +1 -1
  219. package/lib/ui.js +1 -0
  220. package/lib/ui.js.map +1 -1
  221. package/lib/vite.d.ts +1 -0
  222. package/lib/vite.d.ts.map +1 -1
  223. package/lib/vite.js +1 -0
  224. package/lib/vite.js.map +1 -1
  225. package/package.json +11 -3
  226. package/src/about/core/about.ts +176 -0
  227. package/src/about/core/index.ts +2 -0
  228. package/src/about/ui/AboutCitations.tsx +79 -0
  229. package/src/about/ui/AboutPage.tsx +177 -0
  230. package/src/about/ui/AboutSection.tsx +56 -0
  231. package/src/about/ui/index.ts +6 -0
  232. package/src/chrome/ui/index.ts +3 -0
  233. package/src/clipboard/ui/CodeBlock.tsx +4 -1
  234. package/src/color/ui/ColorScaleLegend.tsx +1 -1
  235. package/src/core.ts +5 -0
  236. package/src/credits/core/credits.ts +42 -0
  237. package/src/credits/ui/CreditsList.tsx +1 -1
  238. package/src/delimited/ui/DelimitedTextPanel.tsx +1 -1
  239. package/src/ecosystem/core/sites.ts +12 -0
  240. package/src/ecosystem/core/tokens.ts +1 -0
  241. package/src/ecosystem/ui/EcosystemLinks.tsx +2 -2
  242. package/src/ecosystem/ui/EcosystemMenu.tsx +1 -1
  243. package/src/ecosystem/ui/SiteTile.tsx +7 -5
  244. package/src/ecosystem/ui/glyphs.tsx +40 -0
  245. package/src/orbital/core/index.ts +4 -1
  246. package/src/orbital/core/realHarmonics.ts +5 -2
  247. package/src/orbital/ui/AtomicOrbitalCanvas.tsx +126 -4
  248. package/src/orbital/ui/AtomicOrbitalViewer.tsx +14 -1
  249. package/src/orbital/ui/camera.ts +81 -0
  250. package/src/orbital/ui/renderVolume.ts +8 -1
  251. package/src/orbital/ui/serial.ts +35 -0
  252. package/src/orbital/ui/viewer.ts +72 -13
  253. package/src/pedagogy/ui/ExerciseProgressHeader.tsx +1 -1
  254. package/src/pedagogy/ui/GlossaryText.tsx +2 -2
  255. package/src/pedagogy/ui/ReferenceSectionBlock.tsx +5 -2
  256. package/src/pedagogy/ui/SyntaxTooltip.tsx +2 -2
  257. package/src/pedagogy/ui/TutorialStepStrip.tsx +4 -1
  258. package/src/periodic/ui/CategoryLegend.tsx +1 -1
  259. package/src/periodic/ui/PeriodicTableChrome.tsx +2 -2
  260. package/src/seo/vite/ogCard.ts +1 -0
  261. package/src/share/ui/ShareDialogContent.tsx +5 -2
  262. package/src/share/ui/SharePartOptions.tsx +1 -1
  263. package/src/slides/core/demoLinks.ts +113 -0
  264. package/src/slides/core/index.ts +22 -0
  265. package/src/slides/core/sectionHeading.ts +29 -0
  266. package/src/slides/core/slideNavigation.ts +77 -0
  267. package/src/slides/core/talk.ts +203 -0
  268. package/src/slides/core/talkManifest.ts +158 -0
  269. package/src/slides/core/talkOrigin.ts +83 -0
  270. package/src/slides/ui/BackToSlides.tsx +49 -0
  271. package/src/slides/ui/DemoLink.tsx +67 -0
  272. package/src/slides/ui/EmbedSlide.tsx +85 -0
  273. package/src/slides/ui/SectionSlide.tsx +44 -0
  274. package/src/slides/ui/Slide.tsx +143 -0
  275. package/src/slides/ui/SlideBody.tsx +64 -0
  276. package/src/slides/ui/Slideshow.tsx +282 -0
  277. package/src/slides/ui/SlideshowBar.tsx +83 -0
  278. package/src/slides/ui/TalkList.tsx +146 -0
  279. package/src/slides/ui/index.ts +18 -0
  280. package/src/slides/vite/index.ts +2 -0
  281. package/src/slides/vite/talks.ts +126 -0
  282. package/src/slides.ts +2 -0
  283. package/src/structure/ui/StructureEditor.tsx +2 -2
  284. package/src/structure/ui/StructurePlaceholder.tsx +1 -1
  285. package/src/tokens/core/checkTokens.ts +242 -0
  286. package/src/tokens/core/colors.ts +122 -0
  287. package/src/tokens/core/index.ts +6 -0
  288. package/src/tokens/core/rules.ts +103 -0
  289. package/src/ui.ts +1 -0
  290. package/src/vite.ts +1 -0
  291. package/styles/chrome.css +1 -0
  292. package/styles/slides.css +667 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slides.js","sourceRoot":"","sources":["../src/slides.ts"],"names":[],"mappings":"AAAA,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC"}
@@ -66,7 +66,7 @@ const ROOT_STYLE = {
66
66
  position: 'relative',
67
67
  overflow: 'hidden',
68
68
  boxSizing: 'border-box',
69
- border: '1px solid #d3d8de',
69
+ border: '1px solid var(--border, #d3d8de)',
70
70
  borderRadius: 6,
71
71
  background: '#fff',
72
72
  };
@@ -77,7 +77,7 @@ const LOADING_STYLE = {
77
77
  display: 'flex',
78
78
  alignItems: 'center',
79
79
  justifyContent: 'center',
80
- color: '#8a96a3',
80
+ color: 'var(--text-faint, #8a96a3)',
81
81
  fontSize: 13,
82
82
  };
83
83
  //# sourceMappingURL=StructureEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StructureEditor.js","sourceRoot":"","sources":["../../../src/structure/ui/StructureEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StructureEditor.js","sourceRoot":"","sources":["../../../src/structure/ui/StructureEditor.tsx"],"names":[],"mappings":"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"}
@@ -13,7 +13,7 @@ const PLACEHOLDER_STYLE = {
13
13
  display: 'inline-flex',
14
14
  alignItems: 'center',
15
15
  justifyContent: 'center',
16
- color: '#8a96a3',
16
+ color: 'var(--text-faint, #8a96a3)',
17
17
  fontSize: '0.75rem',
18
18
  };
19
19
  //# sourceMappingURL=StructurePlaceholder.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StructurePlaceholder.js","sourceRoot":"","sources":["../../../src/structure/ui/StructurePlaceholder.tsx"],"names":[],"mappings":";AAwBA;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1C,OAAO,CACL,eAAM,KAAK,EAAE,EAAE,GAAG,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAc,MAAM,YACrE,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,SAAS;IAChB,QAAQ,EAAE,SAAS;CACpB,CAAC"}
1
+ {"version":3,"file":"StructurePlaceholder.js","sourceRoot":"","sources":["../../../src/structure/ui/StructurePlaceholder.tsx"],"names":[],"mappings":";AAwBA;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAgC;IAEhC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1C,OAAO,CACL,eAAM,KAAK,EAAE,EAAE,GAAG,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAc,MAAM,YACrE,QAAQ,GACJ,CACR,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAkB;IACvC,OAAO,EAAE,aAAa;IACtB,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,QAAQ;IACxB,KAAK,EAAE,4BAA4B;IACnC,QAAQ,EAAE,SAAS;CACpB,CAAC"}
@@ -0,0 +1,51 @@
1
+ /** What a site got wrong where a token was called for. */
2
+ export type TokenViolationKind = 'blueprint-grey' | 'blueprint-blue' | 'retyped-token' | 'redeclared-brand';
3
+ /** One place a site writes a colour that is not its own to write. */
4
+ export interface TokenViolation {
5
+ /** The file it is written in, named as the caller named it. */
6
+ file: string;
7
+ /** Which line, counting from 1. */
8
+ line: number;
9
+ /** Which column, counting from 1. */
10
+ column: number;
11
+ /** What kind of mistake it is. */
12
+ kind: TokenViolationKind;
13
+ /** The text as written — the hex, the `rgb()` call, the property name. */
14
+ text: string;
15
+ /** The token to use instead, in one line. */
16
+ hint: string;
17
+ }
18
+ /** How forgiving a scan is. */
19
+ export interface CheckTokensOptions {
20
+ /**
21
+ * Colours the project legitimately owns — a subject-matter palette, a logo
22
+ * of somebody else.
23
+ * @default []
24
+ */
25
+ allow?: readonly string[];
26
+ /**
27
+ * Lines carrying this marker are skipped, for the rare deliberate literal.
28
+ * @default 'tokens-ok'
29
+ */
30
+ ignoreMarker?: string;
31
+ }
32
+ /**
33
+ * Every colour a set of files writes that belongs to the family rather than to
34
+ * the site.
35
+ *
36
+ * The neutrals, the geometry and the type are shared, and the two colours a
37
+ * site owns come from `<SiteTheme siteId>`; a site that re-types either — a
38
+ * Blueprint grey because a component used it, `#f5f7fa` because that is what
39
+ * the token holds today, `--brand` because the palette was declared by hand —
40
+ * leaves its page unable to follow the family. Both spellings of one colour
41
+ * are caught, `#5f6b7c` and `rgb(95 107 124)` alike, and reading a token
42
+ * through `var()` is never a violation.
43
+ * @param files - The files to read, each with the path a report names it by.
44
+ * @param options - The colours the project owns, and the marker waiving a line.
45
+ * @returns Every violation, in file order and then in reading order.
46
+ */
47
+ export declare function findTokenViolations(files: ReadonlyArray<{
48
+ path: string;
49
+ text: string;
50
+ }>, options?: CheckTokensOptions): TokenViolation[];
51
+ //# sourceMappingURL=checkTokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkTokens.d.ts","sourceRoot":"","sources":["../../../src/tokens/core/checkTokens.ts"],"names":[],"mappings":"AAIA,0DAA0D;AAC1D,MAAM,MAAM,kBAAkB,GAC5B,gBAAgB,GAAG,gBAAgB,GAAG,eAAe,GAAG,kBAAkB,CAAC;AAE7E,qEAAqE;AACrE,MAAM,WAAW,cAAc;IAC7B,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,mCAAmC;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,MAAM,EAAE,MAAM,CAAC;IACf,kCAAkC;IAClC,IAAI,EAAE,kBAAkB,CAAC;IACzB,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;CACd;AAED,+BAA+B;AAC/B,MAAM,WAAW,kBAAkB;IACjC;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1B;;;OAGG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,aAAa,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,EACpD,OAAO,GAAE,kBAAuB,GAC/B,cAAc,EAAE,CA6BlB"}
@@ -0,0 +1,188 @@
1
+ // tokens-ok: file — the checker names the colours it looks for.
2
+ import { normalizeColor, readHexColor, readRgbColor } from "./colors.js";
3
+ import { BANNED_COLORS } from "./rules.js";
4
+ /**
5
+ * Every colour a set of files writes that belongs to the family rather than to
6
+ * the site.
7
+ *
8
+ * The neutrals, the geometry and the type are shared, and the two colours a
9
+ * site owns come from `<SiteTheme siteId>`; a site that re-types either — a
10
+ * Blueprint grey because a component used it, `#f5f7fa` because that is what
11
+ * the token holds today, `--brand` because the palette was declared by hand —
12
+ * leaves its page unable to follow the family. Both spellings of one colour
13
+ * are caught, `#5f6b7c` and `rgb(95 107 124)` alike, and reading a token
14
+ * through `var()` is never a violation.
15
+ * @param files - The files to read, each with the path a report names it by.
16
+ * @param options - The colours the project owns, and the marker waiving a line.
17
+ * @returns Every violation, in file order and then in reading order.
18
+ */
19
+ export function findTokenViolations(files, options = {}) {
20
+ const marker = (options.ignoreMarker ?? DEFAULT_IGNORE_MARKER).toLowerCase();
21
+ const allowed = new Set();
22
+ for (const entry of options.allow ?? []) {
23
+ const color = normalizeColor(entry);
24
+ if (color !== null)
25
+ allowed.add(color);
26
+ }
27
+ const violations = [];
28
+ for (const file of files) {
29
+ // A file whose opening lines carry the marker defines the palette rather
30
+ // than consuming it — the token block itself, the registry of banned
31
+ // colours, an image generated outside any page.
32
+ if (waivesWholeFile(file.text, marker))
33
+ continue;
34
+ const scan = scanFile(file.text, marker);
35
+ for (const candidate of scan.candidates) {
36
+ if (scan.markedLines.has(candidate.line))
37
+ continue;
38
+ if (candidate.color !== null && allowed.has(candidate.color))
39
+ continue;
40
+ violations.push({
41
+ file: file.path,
42
+ line: candidate.line,
43
+ column: candidate.column,
44
+ kind: candidate.kind,
45
+ text: candidate.text,
46
+ hint: candidate.hint,
47
+ });
48
+ }
49
+ }
50
+ return violations;
51
+ }
52
+ const DEFAULT_IGNORE_MARKER = 'tokens-ok';
53
+ // How far into a file the whole-file waiver may sit: a licence header, an
54
+ // import or two, and the comment saying why this file writes colours.
55
+ const WAIVER_LINES = 6;
56
+ function waivesWholeFile(text, marker) {
57
+ if (marker.length === 0)
58
+ return false;
59
+ const head = text.split('\n', WAIVER_LINES).join('\n').toLowerCase();
60
+ return head.includes(`${marker}: file`);
61
+ }
62
+ // Longest first, so `--brand-alt` is never read as `--brand`.
63
+ const BRAND_PROPERTIES = ['--brand-alt', '--brand', '--accent'];
64
+ // One pass over the file: the marker, the block structure and every colour are
65
+ // all read from the same walk, so nothing is matched a second time per line.
66
+ function scanFile(text, marker) {
67
+ const lower = text.toLowerCase();
68
+ const candidates = [];
69
+ const markedLines = new Set();
70
+ const rootBlocks = [];
71
+ // Which parentheses are open, and whether each is a `var(` past its comma —
72
+ // a colour there is a fallback for the token named beside it.
73
+ const parens = [];
74
+ let selectorStart = 0;
75
+ let line = 1;
76
+ let lineStart = 0;
77
+ for (let index = 0; index < lower.length; index++) {
78
+ const char = lower[index];
79
+ if (char === '\n') {
80
+ line++;
81
+ lineStart = index + 1;
82
+ continue;
83
+ }
84
+ if (marker.length > 0 &&
85
+ char === marker[0] &&
86
+ lower.startsWith(marker, index)) {
87
+ markedLines.add(line);
88
+ index += marker.length - 1;
89
+ continue;
90
+ }
91
+ if (char === '(') {
92
+ parens.push({
93
+ isVar: lower.startsWith('var(', index - 3),
94
+ sawComma: false,
95
+ });
96
+ continue;
97
+ }
98
+ if (char === ')') {
99
+ parens.pop();
100
+ continue;
101
+ }
102
+ if (char === ',') {
103
+ const open = parens.at(-1);
104
+ if (open !== undefined)
105
+ open.sawComma = true;
106
+ continue;
107
+ }
108
+ if (char === '{') {
109
+ rootBlocks.push(lower.slice(selectorStart, index).includes(':root'));
110
+ selectorStart = index + 1;
111
+ continue;
112
+ }
113
+ if (char === '}' || char === ';') {
114
+ if (char === '}')
115
+ rootBlocks.pop();
116
+ selectorStart = index + 1;
117
+ continue;
118
+ }
119
+ if (char === '#' || char === 'r') {
120
+ const match = char === '#' ? readHexColor(lower, index) : readRgbColor(lower, index);
121
+ if (match === null)
122
+ continue;
123
+ const rule = BANNED_COLORS.get(match.color);
124
+ const open = parens.at(-1);
125
+ const isFallback = open !== undefined && open.isVar && open.sawComma;
126
+ if (rule !== undefined && !isFallback) {
127
+ candidates.push({
128
+ line,
129
+ column: index - lineStart + 1,
130
+ kind: rule.kind,
131
+ text: text.slice(index, match.end),
132
+ hint: rule.hint,
133
+ color: match.color,
134
+ });
135
+ }
136
+ index = match.end - 1;
137
+ continue;
138
+ }
139
+ if (char === '-') {
140
+ const property = readBrandDeclaration(lower, index);
141
+ if (property === null)
142
+ continue;
143
+ if (rootBlocks.includes(true)) {
144
+ candidates.push({
145
+ line,
146
+ column: index - lineStart + 1,
147
+ kind: 'redeclared-brand',
148
+ text: property.name,
149
+ hint: `render <SiteTheme siteId> instead of declaring ${property.name} in :root.`,
150
+ color: null,
151
+ });
152
+ }
153
+ index = property.end - 1;
154
+ }
155
+ }
156
+ return { candidates, markedLines };
157
+ }
158
+ // A declaration of one of the palette properties. Reading one — `var(--brand)`
159
+ // — has no colon after the name, so it never lands here.
160
+ function readBrandDeclaration(lower, start) {
161
+ for (const name of BRAND_PROPERTIES) {
162
+ if (!lower.startsWith(name, start))
163
+ continue;
164
+ const after = start + name.length;
165
+ // `--brand-alt-text` is its own property, not `--brand-alt`.
166
+ if (isNameChar(lower[after]))
167
+ return null;
168
+ let index = after;
169
+ while (isSpace(lower[index]))
170
+ index++;
171
+ if (lower[index] !== ':')
172
+ return null;
173
+ return { name, end: after };
174
+ }
175
+ return null;
176
+ }
177
+ function isNameChar(char) {
178
+ if (char === undefined)
179
+ return false;
180
+ return ((char >= '0' && char <= '9') ||
181
+ (char >= 'a' && char <= 'z') ||
182
+ char === '-' ||
183
+ char === '_');
184
+ }
185
+ function isSpace(char) {
186
+ return char === ' ' || char === '\t';
187
+ }
188
+ //# sourceMappingURL=checkTokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checkTokens.js","sourceRoot":"","sources":["../../../src/tokens/core/checkTokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Reading a colour out of source text, in both spellings the same value is
3
+ * written in: `#5f6b7c` and `rgb(95 107 124)`. Both come back as the same six
4
+ * lowercase hex digits, so a table of banned colours holds one entry per
5
+ * colour rather than one per way of typing it.
6
+ */
7
+ /** A colour found in the text, and where it ends. */
8
+ export interface ColorMatch {
9
+ /** The value, as six lowercase hex digits, without its `#`. */
10
+ color: string;
11
+ /** The index just past the last character the colour is written with. */
12
+ end: number;
13
+ }
14
+ /**
15
+ * The colour a hex literal starts at, in `#rgb`, `#rgba`, `#rrggbb` or
16
+ * `#rrggbbaa` form. The alpha, when there is one, says nothing about the
17
+ * colour and is dropped.
18
+ * @param lower - The text being scanned, already lowercased.
19
+ * @param start - The index of the `#`.
20
+ * @returns The colour and its end, or `null` when it is not a hex colour.
21
+ */
22
+ export declare function readHexColor(lower: string, start: number): ColorMatch | null;
23
+ /**
24
+ * The colour an `rgb()` or `rgba()` call starts at, in either the comma or the
25
+ * space separated spelling.
26
+ *
27
+ * Only a plain byte triple is read: a percentage, a decimal or a variable
28
+ * inside the call means the value cannot be compared with a hex literal, and
29
+ * is left alone rather than guessed at.
30
+ * @param lower - The text being scanned, already lowercased.
31
+ * @param start - The index of the `r`.
32
+ * @returns The colour and its end, or `null` when it is not one.
33
+ */
34
+ export declare function readRgbColor(lower: string, start: number): ColorMatch | null;
35
+ /**
36
+ * The `rrggbb` form of a colour written by hand — in an allow list, on a
37
+ * command line — in any of the spellings the scanner itself reads.
38
+ * @param value - The colour, with or without its `#`.
39
+ * @returns The six lowercase hex digits, or `null` when it is not a colour.
40
+ */
41
+ export declare function normalizeColor(value: string): string | null;
42
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/tokens/core/colors.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,qDAAqD;AACrD,MAAM,WAAW,UAAU;IACzB,+DAA+D;IAC/D,KAAK,EAAE,MAAM,CAAC;IACd,yEAAyE;IACzE,GAAG,EAAE,MAAM,CAAC;CACb;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAmB5E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,IAAI,CAqC5E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQ3D"}
@@ -0,0 +1,119 @@
1
+ // tokens-ok: file — the colour reader is tested against literals.
2
+ /**
3
+ * Reading a colour out of source text, in both spellings the same value is
4
+ * written in: `#5f6b7c` and `rgb(95 107 124)`. Both come back as the same six
5
+ * lowercase hex digits, so a table of banned colours holds one entry per
6
+ * colour rather than one per way of typing it.
7
+ */
8
+ /**
9
+ * The colour a hex literal starts at, in `#rgb`, `#rgba`, `#rrggbb` or
10
+ * `#rrggbbaa` form. The alpha, when there is one, says nothing about the
11
+ * colour and is dropped.
12
+ * @param lower - The text being scanned, already lowercased.
13
+ * @param start - The index of the `#`.
14
+ * @returns The colour and its end, or `null` when it is not a hex colour.
15
+ */
16
+ export function readHexColor(lower, start) {
17
+ let end = start + 1;
18
+ while (isHexDigit(lower[end]))
19
+ end++;
20
+ // A run of hex digits running straight into a word is an identifier — a
21
+ // private field, an anchor — rather than a colour.
22
+ if (isWordChar(lower[end]))
23
+ return null;
24
+ const digits = end - start - 1;
25
+ if (digits === 3 || digits === 4) {
26
+ const red = lower[start + 1];
27
+ const green = lower[start + 2];
28
+ const blue = lower[start + 3];
29
+ return { color: `${red}${red}${green}${green}${blue}${blue}`, end };
30
+ }
31
+ if (digits === 6 || digits === 8) {
32
+ return { color: lower.slice(start + 1, start + 7), end };
33
+ }
34
+ return null;
35
+ }
36
+ /**
37
+ * The colour an `rgb()` or `rgba()` call starts at, in either the comma or the
38
+ * space separated spelling.
39
+ *
40
+ * Only a plain byte triple is read: a percentage, a decimal or a variable
41
+ * inside the call means the value cannot be compared with a hex literal, and
42
+ * is left alone rather than guessed at.
43
+ * @param lower - The text being scanned, already lowercased.
44
+ * @param start - The index of the `r`.
45
+ * @returns The colour and its end, or `null` when it is not one.
46
+ */
47
+ export function readRgbColor(lower, start) {
48
+ let open = -1;
49
+ if (lower.startsWith('rgb(', start))
50
+ open = start + 3;
51
+ else if (lower.startsWith('rgba(', start))
52
+ open = start + 4;
53
+ if (open === -1)
54
+ return null;
55
+ const close = lower.indexOf(')', open);
56
+ if (close === -1)
57
+ return null;
58
+ const components = [];
59
+ let value = -1;
60
+ for (let index = open + 1; index < close; index++) {
61
+ const char = lower[index];
62
+ if (char !== undefined && char >= '0' && char <= '9') {
63
+ value = Math.max(value, 0) * 10 + Number(char);
64
+ continue;
65
+ }
66
+ if (value >= 0) {
67
+ components.push(value);
68
+ value = -1;
69
+ }
70
+ // The alpha of the modern syntax, which the colour does not depend on.
71
+ if (char === '/')
72
+ break;
73
+ if (char !== ' ' && char !== ',' && char !== '\t' && char !== '\n') {
74
+ return null;
75
+ }
76
+ }
77
+ if (value >= 0)
78
+ components.push(value);
79
+ if (components.length < 3)
80
+ return null;
81
+ let color = '';
82
+ for (let index = 0; index < 3; index++) {
83
+ const component = components[index];
84
+ if (component === undefined || component > 255)
85
+ return null;
86
+ color += component.toString(16).padStart(2, '0');
87
+ }
88
+ return { color, end: close + 1 };
89
+ }
90
+ /**
91
+ * The `rrggbb` form of a colour written by hand — in an allow list, on a
92
+ * command line — in any of the spellings the scanner itself reads.
93
+ * @param value - The colour, with or without its `#`.
94
+ * @returns The six lowercase hex digits, or `null` when it is not a colour.
95
+ */
96
+ export function normalizeColor(value) {
97
+ const text = value.trim().toLowerCase();
98
+ if (text === '')
99
+ return null;
100
+ let match = null;
101
+ if (text.startsWith('#'))
102
+ match = readHexColor(text, 0);
103
+ else if (text.startsWith('rgb'))
104
+ match = readRgbColor(text, 0);
105
+ else
106
+ match = readHexColor(`#${text}`, 0);
107
+ return match === null ? null : match.color;
108
+ }
109
+ function isHexDigit(char) {
110
+ if (char === undefined)
111
+ return false;
112
+ return (char >= '0' && char <= '9') || (char >= 'a' && char <= 'f');
113
+ }
114
+ function isWordChar(char) {
115
+ if (char === undefined)
116
+ return false;
117
+ return ((char >= '0' && char <= '9') || (char >= 'a' && char <= 'z') || char === '_');
118
+ }
119
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/tokens/core/colors.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE;;;;;GAKG;AAUH;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,OAAO,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAE,GAAG,EAAE,CAAC;IAErC,wEAAwE;IACxE,mDAAmD;IACnD,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAExC,MAAM,MAAM,GAAG,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IAC/B,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9B,OAAO,EAAE,KAAK,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,EAAE,EAAE,GAAG,EAAE,CAAC;IACtE,CAAC;IACD,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,KAAa;IACvD,IAAI,IAAI,GAAG,CAAC,CAAC,CAAC;IACd,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;SACjD,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,GAAG,KAAK,GAAG,CAAC,CAAC;IAC5D,IAAI,IAAI,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE7B,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,UAAU,GAAa,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,IAAI,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;YACrD,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/C,SAAS;QACX,CAAC;QACD,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACf,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACvB,KAAK,GAAG,CAAC,CAAC,CAAC;QACb,CAAC;QACD,uEAAuE;QACvE,IAAI,IAAI,KAAK,GAAG;YAAE,MAAM;QACxB,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,IAAI,KAAK,IAAI,CAAC;QAAE,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAEvC,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QACpC,IAAI,SAAS,KAAK,SAAS,IAAI,SAAS,GAAG,GAAG;YAAE,OAAO,IAAI,CAAC;QAC5D,KAAK,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC;AACnC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IACxC,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IAC7B,IAAI,KAAK,GAAsB,IAAI,CAAC;IACpC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;SACnD,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;;QAC1D,KAAK,GAAG,YAAY,CAAC,IAAI,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;IACzC,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;AAC7C,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,CAAC;AACtE,CAAC;AAED,SAAS,UAAU,CAAC,IAAwB;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACrC,OAAO,CACL,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,GAAG,CAC7E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { CheckTokensOptions, TokenViolation, TokenViolationKind, } from './checkTokens.ts';
2
+ export { findTokenViolations } from './checkTokens.ts';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tokens/core/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,kBAAkB,EAClB,cAAc,EACd,kBAAkB,GACnB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { findTokenViolations } from "./checkTokens.js";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tokens/core/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { TokenViolationKind } from './checkTokens.ts';
2
+ /** What a colour a site may not write should have been. */
3
+ export interface ColorRule {
4
+ /** Which kind of violation writing it raises. */
5
+ kind: TokenViolationKind;
6
+ /** The token to write instead, in one line. */
7
+ hint: string;
8
+ }
9
+ /**
10
+ * The colours a site may not write, keyed by their six lowercase hex digits.
11
+ *
12
+ * Two things land here. Blueprint's own neutrals and intent blue, which arrive
13
+ * by reading a value off a component and pasting it: they are near the
14
+ * family's greys without being them, which is what makes two of our sites
15
+ * opened side by side read as two products. And the family's own token values
16
+ * re-typed as literals, which pins the page to the colour the token held on
17
+ * the day it was copied — a retune then moves everything except it.
18
+ *
19
+ * `#ffffff` is deliberately absent: `--surface` is white, and so are a hundred
20
+ * legitimate whites in a shadow, a gradient or a `color-mix`.
21
+ */
22
+ export declare const BANNED_COLORS: ReadonlyMap<string, ColorRule>;
23
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../../src/tokens/core/rules.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,2DAA2D;AAC3D,MAAM,WAAW,SAAS;IACxB,iDAAiD;IACjD,IAAI,EAAE,kBAAkB,CAAC;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,SAAS,CA8EvD,CAAC"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * The colours a site may not write, keyed by their six lowercase hex digits.
3
+ *
4
+ * Two things land here. Blueprint's own neutrals and intent blue, which arrive
5
+ * by reading a value off a component and pasting it: they are near the
6
+ * family's greys without being them, which is what makes two of our sites
7
+ * opened side by side read as two products. And the family's own token values
8
+ * re-typed as literals, which pins the page to the colour the token held on
9
+ * the day it was copied — a retune then moves everything except it.
10
+ *
11
+ * `#ffffff` is deliberately absent: `--surface` is white, and so are a hundred
12
+ * legitimate whites in a shadow, a gradient or a `color-mix`.
13
+ */
14
+ export const BANNED_COLORS = new Map([
15
+ [
16
+ 'f6f7f9',
17
+ {
18
+ kind: 'blueprint-grey',
19
+ hint: "Blueprint's page grey — the family's page is var(--surface-sunken).",
20
+ },
21
+ ],
22
+ [
23
+ 'd3d8de',
24
+ {
25
+ kind: 'blueprint-grey',
26
+ hint: "Blueprint's light grey — the family's line is var(--border).",
27
+ },
28
+ ],
29
+ [
30
+ '5f6b7c',
31
+ {
32
+ kind: 'blueprint-grey',
33
+ hint: "Blueprint's muted text — use var(--text-muted).",
34
+ },
35
+ ],
36
+ [
37
+ '2d72d2',
38
+ {
39
+ kind: 'blueprint-blue',
40
+ hint: "Blueprint's intent blue — the site's own colour is var(--accent).",
41
+ },
42
+ ],
43
+ [
44
+ '137cbd',
45
+ {
46
+ kind: 'blueprint-blue',
47
+ hint: "Blueprint's older intent blue — the site's own colour is var(--accent).",
48
+ },
49
+ ],
50
+ [
51
+ 'f5f7fa',
52
+ {
53
+ kind: 'retyped-token',
54
+ hint: 'the value of --surface-sunken — use var(--surface-sunken).',
55
+ },
56
+ ],
57
+ [
58
+ 'dfe3e8',
59
+ {
60
+ kind: 'retyped-token',
61
+ hint: 'the value of --border — use var(--border).',
62
+ },
63
+ ],
64
+ [
65
+ 'c3cad3',
66
+ {
67
+ kind: 'retyped-token',
68
+ hint: 'the value of --border-strong — use var(--border-strong).',
69
+ },
70
+ ],
71
+ [
72
+ '16202c',
73
+ { kind: 'retyped-token', hint: 'the value of --text — use var(--text).' },
74
+ ],
75
+ [
76
+ '5b6875',
77
+ {
78
+ kind: 'retyped-token',
79
+ hint: 'the value of --text-muted — use var(--text-muted).',
80
+ },
81
+ ],
82
+ [
83
+ '8a96a3',
84
+ {
85
+ kind: 'retyped-token',
86
+ hint: 'the value of --text-faint — use var(--text-faint).',
87
+ },
88
+ ],
89
+ ]);
90
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../../src/tokens/core/rules.ts"],"names":[],"mappings":"AAWA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAmC,IAAI,GAAG,CAGlE;IACA;QACE,QAAQ;QACR;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,qEAAqE;SAC5E;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,8DAA8D;SACrE;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,iDAAiD;SACxD;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,mEAAmE;SAC1E;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,yEAAyE;SAChF;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,4DAA4D;SACnE;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,4CAA4C;SACnD;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,0DAA0D;SACjE;KACF;IACD;QACE,QAAQ;QACR,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,wCAAwC,EAAE;KAC1E;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,oDAAoD;SAC3D;KACF;IACD;QACE,QAAQ;QACR;YACE,IAAI,EAAE,eAAe;YACrB,IAAI,EAAE,oDAAoD;SAC3D;KACF;CACF,CAAC,CAAC"}
package/lib/ui.d.ts CHANGED
@@ -1,3 +1,4 @@
1
+ export * from './about/ui/index.ts';
1
2
  export * from './capsule/ui/index.ts';
2
3
  export * from './chrome/ui/index.ts';
3
4
  export * from './citation/ui/index.ts';
package/lib/ui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
package/lib/ui.js CHANGED
@@ -1,3 +1,4 @@
1
+ export * from "./about/ui/index.js";
1
2
  export * from "./capsule/ui/index.js";
2
3
  export * from "./chrome/ui/index.js";
3
4
  export * from "./citation/ui/index.js";
package/lib/ui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../src/ui.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,yBAAyB,CAAC;AACxC,cAAc,0BAA0B,CAAC;AACzC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC;AACvC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC"}