tosijs-ui 1.17.0 → 1.17.2

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 (824) hide show
  1. package/CHANGELOG.md +92 -0
  2. package/README.md +1 -1
  3. package/bin/make-icon-data.js +167 -1
  4. package/dist/affix.d.ts +6 -0
  5. package/dist/affix.js +19 -0
  6. package/dist/babylon-3d.js +3 -2
  7. package/dist/carousel.js +4 -3
  8. package/dist/data-table.d.ts +3 -4
  9. package/dist/data-table.js +42 -39
  10. package/dist/doc-browser.js +16 -25
  11. package/dist/doc-system/doc-title.d.ts +5 -0
  12. package/dist/doc-system/doc-title.js +10 -0
  13. package/dist/doc-system/site/a11y-audit-cli.js +5 -8
  14. package/dist/doc-system/site/a11y-audit.d.ts +8 -0
  15. package/dist/doc-system/site/a11y-audit.js +50 -13
  16. package/dist/doc-system/site/bounded-child.d.ts +10 -0
  17. package/dist/doc-system/site/bounded-child.js +44 -0
  18. package/dist/doc-system/site/config-fingerprint.d.ts +21 -0
  19. package/dist/doc-system/site/config-fingerprint.js +43 -0
  20. package/dist/doc-system/site/dev-server.js +11 -22
  21. package/dist/doc-system/site/epub-a11y.d.ts +13 -4
  22. package/dist/doc-system/site/epub-a11y.js +67 -21
  23. package/dist/doc-system/site/generate-site.js +1 -8
  24. package/dist/doc-system/site/make-llms-txt.js +3 -1
  25. package/dist/doc-system/site/orchestrator.js +38 -8
  26. package/dist/editable-rect.js +12 -8
  27. package/dist/filter-builder.js +6 -4
  28. package/dist/header.js +10 -6
  29. package/dist/icon-core.d.ts +46 -0
  30. package/dist/icon-core.js +511 -0
  31. package/dist/icon-rules.js +1 -1
  32. package/dist/icon-store.d.ts +10 -0
  33. package/dist/icon-store.js +44 -0
  34. package/dist/icon-svg.js +5 -1
  35. package/dist/icon-types.d.ts +2 -0
  36. package/dist/icons/activity.d.ts +1 -0
  37. package/dist/icons/activity.js +4 -0
  38. package/dist/icons/airplay.d.ts +1 -0
  39. package/dist/icons/airplay.js +4 -0
  40. package/dist/icons/alertCircle.d.ts +1 -0
  41. package/dist/icons/alertCircle.js +4 -0
  42. package/dist/icons/alertOctagon.d.ts +1 -0
  43. package/dist/icons/alertOctagon.js +4 -0
  44. package/dist/icons/alertTriangle.d.ts +1 -0
  45. package/dist/icons/alertTriangle.js +4 -0
  46. package/dist/icons/alignCenter.d.ts +1 -0
  47. package/dist/icons/alignCenter.js +4 -0
  48. package/dist/icons/alignJustify.d.ts +1 -0
  49. package/dist/icons/alignJustify.js +4 -0
  50. package/dist/icons/alignLeft.d.ts +1 -0
  51. package/dist/icons/alignLeft.js +4 -0
  52. package/dist/icons/alignRight.d.ts +1 -0
  53. package/dist/icons/alignRight.js +4 -0
  54. package/dist/icons/anchor.d.ts +1 -0
  55. package/dist/icons/anchor.js +4 -0
  56. package/dist/icons/aperture.d.ts +1 -0
  57. package/dist/icons/aperture.js +4 -0
  58. package/dist/icons/archive.d.ts +1 -0
  59. package/dist/icons/archive.js +4 -0
  60. package/dist/icons/arrowDown.d.ts +2 -0
  61. package/dist/icons/arrowDown.js +5 -0
  62. package/dist/icons/arrowDownCircle.d.ts +2 -0
  63. package/dist/icons/arrowDownCircle.js +5 -0
  64. package/dist/icons/arrowDownLeft.d.ts +2 -0
  65. package/dist/icons/arrowDownLeft.js +5 -0
  66. package/dist/icons/arrowDownRight.d.ts +2 -0
  67. package/dist/icons/arrowDownRight.js +5 -0
  68. package/dist/icons/arrowLeft.d.ts +2 -0
  69. package/dist/icons/arrowLeft.js +5 -0
  70. package/dist/icons/arrowLeftCircle.d.ts +2 -0
  71. package/dist/icons/arrowLeftCircle.js +5 -0
  72. package/dist/icons/arrowRight.d.ts +1 -0
  73. package/dist/icons/arrowRight.js +4 -0
  74. package/dist/icons/arrowRightCircle.d.ts +1 -0
  75. package/dist/icons/arrowRightCircle.js +4 -0
  76. package/dist/icons/arrowUp.d.ts +2 -0
  77. package/dist/icons/arrowUp.js +5 -0
  78. package/dist/icons/arrowUpCircle.d.ts +2 -0
  79. package/dist/icons/arrowUpCircle.js +5 -0
  80. package/dist/icons/arrowUpLeft.d.ts +2 -0
  81. package/dist/icons/arrowUpLeft.js +5 -0
  82. package/dist/icons/arrowUpRight.d.ts +1 -0
  83. package/dist/icons/arrowUpRight.js +4 -0
  84. package/dist/icons/atSign.d.ts +1 -0
  85. package/dist/icons/atSign.js +4 -0
  86. package/dist/icons/award.d.ts +1 -0
  87. package/dist/icons/award.js +4 -0
  88. package/dist/icons/barChart.d.ts +1 -0
  89. package/dist/icons/barChart.js +4 -0
  90. package/dist/icons/barChart2.d.ts +1 -0
  91. package/dist/icons/barChart2.js +4 -0
  92. package/dist/icons/battery.d.ts +1 -0
  93. package/dist/icons/battery.js +4 -0
  94. package/dist/icons/batteryCharging.d.ts +1 -0
  95. package/dist/icons/batteryCharging.js +4 -0
  96. package/dist/icons/bell.d.ts +1 -0
  97. package/dist/icons/bell.js +4 -0
  98. package/dist/icons/bellOff.d.ts +1 -0
  99. package/dist/icons/bellOff.js +4 -0
  100. package/dist/icons/blog.d.ts +1 -0
  101. package/dist/icons/blog.js +4 -0
  102. package/dist/icons/blueprint.d.ts +1 -0
  103. package/dist/icons/blueprint.js +4 -0
  104. package/dist/icons/bluetooth.d.ts +1 -0
  105. package/dist/icons/bluetooth.js +4 -0
  106. package/dist/icons/bold.d.ts +1 -0
  107. package/dist/icons/bold.js +4 -0
  108. package/dist/icons/book.d.ts +1 -0
  109. package/dist/icons/book.js +4 -0
  110. package/dist/icons/bookOpen.d.ts +1 -0
  111. package/dist/icons/bookOpen.js +4 -0
  112. package/dist/icons/bookmark.d.ts +1 -0
  113. package/dist/icons/bookmark.js +4 -0
  114. package/dist/icons/box.d.ts +1 -0
  115. package/dist/icons/box.js +4 -0
  116. package/dist/icons/briefcase.d.ts +1 -0
  117. package/dist/icons/briefcase.js +4 -0
  118. package/dist/icons/bug.d.ts +1 -0
  119. package/dist/icons/bug.js +4 -0
  120. package/dist/icons/calendar.d.ts +1 -0
  121. package/dist/icons/calendar.js +4 -0
  122. package/dist/icons/camera.d.ts +1 -0
  123. package/dist/icons/camera.js +4 -0
  124. package/dist/icons/cameraOff.d.ts +1 -0
  125. package/dist/icons/cameraOff.js +4 -0
  126. package/dist/icons/cast.d.ts +1 -0
  127. package/dist/icons/cast.js +4 -0
  128. package/dist/icons/check.d.ts +1 -0
  129. package/dist/icons/check.js +4 -0
  130. package/dist/icons/checkCircle.d.ts +1 -0
  131. package/dist/icons/checkCircle.js +4 -0
  132. package/dist/icons/checkSquare.d.ts +1 -0
  133. package/dist/icons/checkSquare.js +4 -0
  134. package/dist/icons/chevronDown.d.ts +2 -0
  135. package/dist/icons/chevronDown.js +5 -0
  136. package/dist/icons/chevronLeft.d.ts +2 -0
  137. package/dist/icons/chevronLeft.js +5 -0
  138. package/dist/icons/chevronRight.d.ts +1 -0
  139. package/dist/icons/chevronRight.js +4 -0
  140. package/dist/icons/chevronUp.d.ts +2 -0
  141. package/dist/icons/chevronUp.js +5 -0
  142. package/dist/icons/chevronsDown.d.ts +2 -0
  143. package/dist/icons/chevronsDown.js +5 -0
  144. package/dist/icons/chevronsLeft.d.ts +2 -0
  145. package/dist/icons/chevronsLeft.js +5 -0
  146. package/dist/icons/chevronsRight.d.ts +1 -0
  147. package/dist/icons/chevronsRight.js +4 -0
  148. package/dist/icons/chevronsUp.d.ts +2 -0
  149. package/dist/icons/chevronsUp.js +5 -0
  150. package/dist/icons/chrome.d.ts +1 -0
  151. package/dist/icons/chrome.js +4 -0
  152. package/dist/icons/circle.d.ts +1 -0
  153. package/dist/icons/circle.js +4 -0
  154. package/dist/icons/clipboard.d.ts +1 -0
  155. package/dist/icons/clipboard.js +4 -0
  156. package/dist/icons/clock.d.ts +1 -0
  157. package/dist/icons/clock.js +4 -0
  158. package/dist/icons/cloud.d.ts +1 -0
  159. package/dist/icons/cloud.js +4 -0
  160. package/dist/icons/cloudDrizzle.d.ts +1 -0
  161. package/dist/icons/cloudDrizzle.js +4 -0
  162. package/dist/icons/cloudLightning.d.ts +1 -0
  163. package/dist/icons/cloudLightning.js +4 -0
  164. package/dist/icons/cloudOff.d.ts +1 -0
  165. package/dist/icons/cloudOff.js +4 -0
  166. package/dist/icons/cloudRain.d.ts +1 -0
  167. package/dist/icons/cloudRain.js +4 -0
  168. package/dist/icons/cloudSnow.d.ts +1 -0
  169. package/dist/icons/cloudSnow.js +4 -0
  170. package/dist/icons/cmy.d.ts +1 -0
  171. package/dist/icons/cmy.js +4 -0
  172. package/dist/icons/code.d.ts +1 -0
  173. package/dist/icons/code.js +4 -0
  174. package/dist/icons/codepen.d.ts +1 -0
  175. package/dist/icons/codepen.js +4 -0
  176. package/dist/icons/codesandbox.d.ts +1 -0
  177. package/dist/icons/codesandbox.js +4 -0
  178. package/dist/icons/coffee.d.ts +1 -0
  179. package/dist/icons/coffee.js +4 -0
  180. package/dist/icons/columns.d.ts +1 -0
  181. package/dist/icons/columns.js +4 -0
  182. package/dist/icons/command.d.ts +1 -0
  183. package/dist/icons/command.js +4 -0
  184. package/dist/icons/compass.d.ts +1 -0
  185. package/dist/icons/compass.js +4 -0
  186. package/dist/icons/copy.d.ts +1 -0
  187. package/dist/icons/copy.js +4 -0
  188. package/dist/icons/cornerDownLeft.d.ts +2 -0
  189. package/dist/icons/cornerDownLeft.js +5 -0
  190. package/dist/icons/cornerDownRight.d.ts +1 -0
  191. package/dist/icons/cornerDownRight.js +4 -0
  192. package/dist/icons/cornerLeftDown.d.ts +2 -0
  193. package/dist/icons/cornerLeftDown.js +5 -0
  194. package/dist/icons/cornerLeftUp.d.ts +2 -0
  195. package/dist/icons/cornerLeftUp.js +5 -0
  196. package/dist/icons/cornerRightDown.d.ts +1 -0
  197. package/dist/icons/cornerRightDown.js +4 -0
  198. package/dist/icons/cornerRightUp.d.ts +1 -0
  199. package/dist/icons/cornerRightUp.js +4 -0
  200. package/dist/icons/cornerUpLeft.d.ts +2 -0
  201. package/dist/icons/cornerUpLeft.js +5 -0
  202. package/dist/icons/cornerUpRight.d.ts +1 -0
  203. package/dist/icons/cornerUpRight.js +4 -0
  204. package/dist/icons/cpu.d.ts +1 -0
  205. package/dist/icons/cpu.js +4 -0
  206. package/dist/icons/creditCard.d.ts +1 -0
  207. package/dist/icons/creditCard.js +4 -0
  208. package/dist/icons/crop.d.ts +1 -0
  209. package/dist/icons/crop.js +4 -0
  210. package/dist/icons/crosshair.d.ts +1 -0
  211. package/dist/icons/crosshair.js +4 -0
  212. package/dist/icons/data/arrowDown.d.ts +1 -1
  213. package/dist/icons/data/arrowDown.js +1 -1
  214. package/dist/icons/data/arrowDownCircle.d.ts +1 -1
  215. package/dist/icons/data/arrowDownCircle.js +1 -1
  216. package/dist/icons/data/arrowDownLeft.d.ts +1 -1
  217. package/dist/icons/data/arrowDownLeft.js +1 -1
  218. package/dist/icons/data/arrowDownRight.d.ts +1 -1
  219. package/dist/icons/data/arrowDownRight.js +1 -1
  220. package/dist/icons/data/arrowLeft.d.ts +1 -1
  221. package/dist/icons/data/arrowLeft.js +1 -1
  222. package/dist/icons/data/arrowLeftCircle.d.ts +1 -1
  223. package/dist/icons/data/arrowLeftCircle.js +1 -1
  224. package/dist/icons/data/arrowUp.d.ts +1 -1
  225. package/dist/icons/data/arrowUp.js +1 -1
  226. package/dist/icons/data/arrowUpCircle.d.ts +1 -1
  227. package/dist/icons/data/arrowUpCircle.js +1 -1
  228. package/dist/icons/data/arrowUpLeft.d.ts +1 -1
  229. package/dist/icons/data/arrowUpLeft.js +1 -1
  230. package/dist/icons/data/blog.d.ts +1 -1
  231. package/dist/icons/data/blog.js +1 -1
  232. package/dist/icons/data/blueprint.d.ts +1 -1
  233. package/dist/icons/data/blueprint.js +1 -1
  234. package/dist/icons/data/bug.d.ts +1 -1
  235. package/dist/icons/data/bug.js +1 -1
  236. package/dist/icons/data/chevronDown.d.ts +1 -1
  237. package/dist/icons/data/chevronDown.js +1 -1
  238. package/dist/icons/data/chevronLeft.d.ts +1 -1
  239. package/dist/icons/data/chevronLeft.js +1 -1
  240. package/dist/icons/data/chevronUp.d.ts +1 -1
  241. package/dist/icons/data/chevronUp.js +1 -1
  242. package/dist/icons/data/chevronsDown.d.ts +1 -1
  243. package/dist/icons/data/chevronsDown.js +1 -1
  244. package/dist/icons/data/chevronsLeft.d.ts +1 -1
  245. package/dist/icons/data/chevronsLeft.js +1 -1
  246. package/dist/icons/data/chevronsUp.d.ts +1 -1
  247. package/dist/icons/data/chevronsUp.js +1 -1
  248. package/dist/icons/data/cmy.d.ts +1 -1
  249. package/dist/icons/data/cmy.js +1 -1
  250. package/dist/icons/data/cornerDownLeft.d.ts +1 -1
  251. package/dist/icons/data/cornerDownLeft.js +1 -1
  252. package/dist/icons/data/cornerLeftDown.d.ts +1 -1
  253. package/dist/icons/data/cornerLeftDown.js +1 -1
  254. package/dist/icons/data/cornerLeftUp.d.ts +1 -1
  255. package/dist/icons/data/cornerLeftUp.js +1 -1
  256. package/dist/icons/data/cornerUpLeft.d.ts +1 -1
  257. package/dist/icons/data/cornerUpLeft.js +1 -1
  258. package/dist/icons/data/delete.js +1 -1
  259. package/dist/icons/data/discord.d.ts +1 -1
  260. package/dist/icons/data/discord.js +1 -1
  261. package/dist/icons/data/earth.d.ts +1 -1
  262. package/dist/icons/data/earth.js +1 -1
  263. package/dist/icons/data/facebook.d.ts +1 -1
  264. package/dist/icons/data/facebook.js +1 -1
  265. package/dist/icons/data/fatArrowDown.d.ts +1 -0
  266. package/dist/icons/data/fatArrowDown.js +1 -0
  267. package/dist/icons/data/fatArrowLeft.d.ts +1 -0
  268. package/dist/icons/data/fatArrowLeft.js +1 -0
  269. package/dist/icons/data/fatArrowRight.d.ts +1 -0
  270. package/dist/icons/data/fatArrowRight.js +1 -0
  271. package/dist/icons/data/fatArrowUp.d.ts +1 -0
  272. package/dist/icons/data/fatArrowUp.js +1 -0
  273. package/dist/icons/data/fontBold.d.ts +1 -1
  274. package/dist/icons/data/fontBold.js +1 -1
  275. package/dist/icons/data/fontItalic.d.ts +1 -1
  276. package/dist/icons/data/fontItalic.js +1 -1
  277. package/dist/icons/data/fontUnderline.d.ts +1 -1
  278. package/dist/icons/data/fontUnderline.js +1 -1
  279. package/dist/icons/data/game.d.ts +1 -1
  280. package/dist/icons/data/game.js +1 -1
  281. package/dist/icons/data/google.d.ts +1 -1
  282. package/dist/icons/data/google.js +1 -1
  283. package/dist/icons/data/indent.d.ts +1 -1
  284. package/dist/icons/data/indent.js +1 -1
  285. package/dist/icons/data/index.d.ts +644 -313
  286. package/dist/icons/data/index.js +643 -313
  287. package/dist/icons/data/info.d.ts +1 -1
  288. package/dist/icons/data/info.js +1 -1
  289. package/dist/icons/data/listBullet.d.ts +1 -1
  290. package/dist/icons/data/listBullet.js +1 -1
  291. package/dist/icons/data/listNumber.d.ts +1 -1
  292. package/dist/icons/data/listNumber.js +1 -1
  293. package/dist/icons/data/lock.d.ts +1 -1
  294. package/dist/icons/data/lock.js +1 -1
  295. package/dist/icons/data/npm.d.ts +1 -1
  296. package/dist/icons/data/npm.js +1 -1
  297. package/dist/icons/data/outdent.d.ts +1 -1
  298. package/dist/icons/data/outdent.js +1 -1
  299. package/dist/icons/data/package.js +1 -1
  300. package/dist/icons/data/pin.d.ts +1 -0
  301. package/dist/icons/data/pin.js +1 -0
  302. package/dist/icons/data/refreshCcw.d.ts +1 -1
  303. package/dist/icons/data/refreshCcw.js +1 -1
  304. package/dist/icons/data/rgb.d.ts +1 -1
  305. package/dist/icons/data/rgb.js +1 -1
  306. package/dist/icons/data/rotateCcw.d.ts +1 -1
  307. package/dist/icons/data/rotateCcw.js +1 -1
  308. package/dist/icons/data/settings.d.ts +1 -1
  309. package/dist/icons/data/settings.js +1 -1
  310. package/dist/icons/data/shift.d.ts +1 -0
  311. package/dist/icons/data/shift.js +1 -0
  312. package/dist/icons/data/skipBack.d.ts +1 -1
  313. package/dist/icons/data/skipBack.js +1 -1
  314. package/dist/icons/data/tab.d.ts +1 -0
  315. package/dist/icons/data/tab.js +1 -0
  316. package/dist/icons/data/thumbsDown.d.ts +1 -1
  317. package/dist/icons/data/thumbsDown.js +1 -1
  318. package/dist/icons/data/toggleLeft.d.ts +1 -1
  319. package/dist/icons/data/toggleLeft.js +1 -1
  320. package/dist/icons/data/tosi.d.ts +1 -1
  321. package/dist/icons/data/tosi.js +1 -1
  322. package/dist/icons/data/tosiFavicon.d.ts +1 -1
  323. package/dist/icons/data/tosiFavicon.js +1 -1
  324. package/dist/icons/data/tosiPlatform.d.ts +1 -1
  325. package/dist/icons/data/tosiPlatform.js +1 -1
  326. package/dist/icons/data/tosiUi.d.ts +1 -1
  327. package/dist/icons/data/tosiUi.js +1 -1
  328. package/dist/icons/data/tosiXr.d.ts +1 -1
  329. package/dist/icons/data/tosiXr.js +1 -1
  330. package/dist/icons/data/xrColor.d.ts +1 -1
  331. package/dist/icons/data/xrColor.js +1 -1
  332. package/dist/icons/data/youtube.d.ts +1 -1
  333. package/dist/icons/data/youtube.js +1 -1
  334. package/dist/icons/database.d.ts +1 -0
  335. package/dist/icons/database.js +4 -0
  336. package/dist/icons/delete.d.ts +1 -0
  337. package/dist/icons/delete.js +4 -0
  338. package/dist/icons/disc.d.ts +1 -0
  339. package/dist/icons/disc.js +4 -0
  340. package/dist/icons/discord.d.ts +1 -0
  341. package/dist/icons/discord.js +4 -0
  342. package/dist/icons/divide.d.ts +1 -0
  343. package/dist/icons/divide.js +4 -0
  344. package/dist/icons/divideCircle.d.ts +1 -0
  345. package/dist/icons/divideCircle.js +4 -0
  346. package/dist/icons/divideSquare.d.ts +1 -0
  347. package/dist/icons/divideSquare.js +4 -0
  348. package/dist/icons/dollarSign.d.ts +1 -0
  349. package/dist/icons/dollarSign.js +4 -0
  350. package/dist/icons/download.d.ts +1 -0
  351. package/dist/icons/download.js +4 -0
  352. package/dist/icons/downloadCloud.d.ts +1 -0
  353. package/dist/icons/downloadCloud.js +4 -0
  354. package/dist/icons/dribbble.d.ts +1 -0
  355. package/dist/icons/dribbble.js +4 -0
  356. package/dist/icons/droplet.d.ts +1 -0
  357. package/dist/icons/droplet.js +4 -0
  358. package/dist/icons/earth.d.ts +1 -0
  359. package/dist/icons/earth.js +4 -0
  360. package/dist/icons/edit.d.ts +1 -0
  361. package/dist/icons/edit.js +4 -0
  362. package/dist/icons/edit2.d.ts +1 -0
  363. package/dist/icons/edit2.js +4 -0
  364. package/dist/icons/edit3.d.ts +1 -0
  365. package/dist/icons/edit3.js +4 -0
  366. package/dist/icons/externalLink.d.ts +1 -0
  367. package/dist/icons/externalLink.js +4 -0
  368. package/dist/icons/eye.d.ts +1 -0
  369. package/dist/icons/eye.js +4 -0
  370. package/dist/icons/eyeOff.d.ts +1 -0
  371. package/dist/icons/eyeOff.js +4 -0
  372. package/dist/icons/facebook.d.ts +1 -0
  373. package/dist/icons/facebook.js +4 -0
  374. package/dist/icons/fastForward.d.ts +1 -0
  375. package/dist/icons/fastForward.js +4 -0
  376. package/dist/icons/fatArrowDown.d.ts +2 -0
  377. package/dist/icons/fatArrowDown.js +5 -0
  378. package/dist/icons/fatArrowLeft.d.ts +2 -0
  379. package/dist/icons/fatArrowLeft.js +5 -0
  380. package/dist/icons/fatArrowRight.d.ts +2 -0
  381. package/dist/icons/fatArrowRight.js +5 -0
  382. package/dist/icons/fatArrowUp.d.ts +2 -0
  383. package/dist/icons/fatArrowUp.js +5 -0
  384. package/dist/icons/feather.d.ts +1 -0
  385. package/dist/icons/feather.js +4 -0
  386. package/dist/icons/figma.d.ts +1 -0
  387. package/dist/icons/figma.js +4 -0
  388. package/dist/icons/file.d.ts +1 -0
  389. package/dist/icons/file.js +4 -0
  390. package/dist/icons/fileMinus.d.ts +1 -0
  391. package/dist/icons/fileMinus.js +4 -0
  392. package/dist/icons/filePlus.d.ts +1 -0
  393. package/dist/icons/filePlus.js +4 -0
  394. package/dist/icons/fileText.d.ts +1 -0
  395. package/dist/icons/fileText.js +4 -0
  396. package/dist/icons/film.d.ts +1 -0
  397. package/dist/icons/film.js +4 -0
  398. package/dist/icons/filter.d.ts +1 -0
  399. package/dist/icons/filter.js +4 -0
  400. package/dist/icons/flag.d.ts +1 -0
  401. package/dist/icons/flag.js +4 -0
  402. package/dist/icons/folder.d.ts +1 -0
  403. package/dist/icons/folder.js +4 -0
  404. package/dist/icons/folderMinus.d.ts +1 -0
  405. package/dist/icons/folderMinus.js +4 -0
  406. package/dist/icons/folderPlus.d.ts +1 -0
  407. package/dist/icons/folderPlus.js +4 -0
  408. package/dist/icons/fontBold.d.ts +1 -0
  409. package/dist/icons/fontBold.js +4 -0
  410. package/dist/icons/fontItalic.d.ts +1 -0
  411. package/dist/icons/fontItalic.js +4 -0
  412. package/dist/icons/fontUnderline.d.ts +1 -0
  413. package/dist/icons/fontUnderline.js +4 -0
  414. package/dist/icons/framer.d.ts +1 -0
  415. package/dist/icons/framer.js +4 -0
  416. package/dist/icons/frown.d.ts +1 -0
  417. package/dist/icons/frown.js +4 -0
  418. package/dist/icons/game.d.ts +1 -0
  419. package/dist/icons/game.js +4 -0
  420. package/dist/icons/gift.d.ts +1 -0
  421. package/dist/icons/gift.js +4 -0
  422. package/dist/icons/gitBranch.d.ts +1 -0
  423. package/dist/icons/gitBranch.js +4 -0
  424. package/dist/icons/gitCommit.d.ts +1 -0
  425. package/dist/icons/gitCommit.js +4 -0
  426. package/dist/icons/gitMerge.d.ts +1 -0
  427. package/dist/icons/gitMerge.js +4 -0
  428. package/dist/icons/gitPullRequest.d.ts +1 -0
  429. package/dist/icons/gitPullRequest.js +4 -0
  430. package/dist/icons/github.d.ts +1 -0
  431. package/dist/icons/github.js +4 -0
  432. package/dist/icons/gitlab.d.ts +1 -0
  433. package/dist/icons/gitlab.js +4 -0
  434. package/dist/icons/globe.d.ts +1 -0
  435. package/dist/icons/globe.js +4 -0
  436. package/dist/icons/google.d.ts +1 -0
  437. package/dist/icons/google.js +4 -0
  438. package/dist/icons/grid.d.ts +1 -0
  439. package/dist/icons/grid.js +4 -0
  440. package/dist/icons/hardDrive.d.ts +1 -0
  441. package/dist/icons/hardDrive.js +4 -0
  442. package/dist/icons/hash.d.ts +1 -0
  443. package/dist/icons/hash.js +4 -0
  444. package/dist/icons/headphones.d.ts +1 -0
  445. package/dist/icons/headphones.js +4 -0
  446. package/dist/icons/heart.d.ts +1 -0
  447. package/dist/icons/heart.js +4 -0
  448. package/dist/icons/helpCircle.d.ts +1 -0
  449. package/dist/icons/helpCircle.js +4 -0
  450. package/dist/icons/hexagon.d.ts +1 -0
  451. package/dist/icons/hexagon.js +4 -0
  452. package/dist/icons/home.d.ts +1 -0
  453. package/dist/icons/home.js +4 -0
  454. package/dist/icons/image.d.ts +1 -0
  455. package/dist/icons/image.js +4 -0
  456. package/dist/icons/inbox.d.ts +1 -0
  457. package/dist/icons/inbox.js +4 -0
  458. package/dist/icons/indent.d.ts +1 -0
  459. package/dist/icons/indent.js +4 -0
  460. package/dist/icons/info.d.ts +1 -0
  461. package/dist/icons/info.js +4 -0
  462. package/dist/icons/instagram.d.ts +1 -0
  463. package/dist/icons/instagram.js +4 -0
  464. package/dist/icons/italic.d.ts +1 -0
  465. package/dist/icons/italic.js +4 -0
  466. package/dist/icons/key.d.ts +1 -0
  467. package/dist/icons/key.js +4 -0
  468. package/dist/icons/layers.d.ts +1 -0
  469. package/dist/icons/layers.js +4 -0
  470. package/dist/icons/layout.d.ts +1 -0
  471. package/dist/icons/layout.js +4 -0
  472. package/dist/icons/lifeBuoy.d.ts +1 -0
  473. package/dist/icons/lifeBuoy.js +4 -0
  474. package/dist/icons/link.d.ts +1 -0
  475. package/dist/icons/link.js +4 -0
  476. package/dist/icons/link2.d.ts +1 -0
  477. package/dist/icons/link2.js +4 -0
  478. package/dist/icons/linkedin.d.ts +1 -0
  479. package/dist/icons/linkedin.js +4 -0
  480. package/dist/icons/list.d.ts +1 -0
  481. package/dist/icons/list.js +4 -0
  482. package/dist/icons/listBullet.d.ts +1 -0
  483. package/dist/icons/listBullet.js +4 -0
  484. package/dist/icons/listNumber.d.ts +1 -0
  485. package/dist/icons/listNumber.js +4 -0
  486. package/dist/icons/loader.d.ts +1 -0
  487. package/dist/icons/loader.js +4 -0
  488. package/dist/icons/lock.d.ts +1 -0
  489. package/dist/icons/lock.js +4 -0
  490. package/dist/icons/logIn.d.ts +1 -0
  491. package/dist/icons/logIn.js +4 -0
  492. package/dist/icons/logOut.d.ts +1 -0
  493. package/dist/icons/logOut.js +4 -0
  494. package/dist/icons/mail.d.ts +1 -0
  495. package/dist/icons/mail.js +4 -0
  496. package/dist/icons/map.d.ts +1 -0
  497. package/dist/icons/map.js +4 -0
  498. package/dist/icons/mapPin.d.ts +1 -0
  499. package/dist/icons/mapPin.js +4 -0
  500. package/dist/icons/maximize.d.ts +1 -0
  501. package/dist/icons/maximize.js +4 -0
  502. package/dist/icons/maximize2.d.ts +1 -0
  503. package/dist/icons/maximize2.js +4 -0
  504. package/dist/icons/meh.d.ts +1 -0
  505. package/dist/icons/meh.js +4 -0
  506. package/dist/icons/menu.d.ts +1 -0
  507. package/dist/icons/menu.js +4 -0
  508. package/dist/icons/messageCircle.d.ts +1 -0
  509. package/dist/icons/messageCircle.js +4 -0
  510. package/dist/icons/messageSquare.d.ts +1 -0
  511. package/dist/icons/messageSquare.js +4 -0
  512. package/dist/icons/mic.d.ts +1 -0
  513. package/dist/icons/mic.js +4 -0
  514. package/dist/icons/micOff.d.ts +1 -0
  515. package/dist/icons/micOff.js +4 -0
  516. package/dist/icons/minimize.d.ts +1 -0
  517. package/dist/icons/minimize.js +4 -0
  518. package/dist/icons/minimize2.d.ts +1 -0
  519. package/dist/icons/minimize2.js +4 -0
  520. package/dist/icons/minus.d.ts +1 -0
  521. package/dist/icons/minus.js +4 -0
  522. package/dist/icons/minusCircle.d.ts +1 -0
  523. package/dist/icons/minusCircle.js +4 -0
  524. package/dist/icons/minusSquare.d.ts +1 -0
  525. package/dist/icons/minusSquare.js +4 -0
  526. package/dist/icons/monitor.d.ts +1 -0
  527. package/dist/icons/monitor.js +4 -0
  528. package/dist/icons/moon.d.ts +1 -0
  529. package/dist/icons/moon.js +4 -0
  530. package/dist/icons/moreHorizontal.d.ts +1 -0
  531. package/dist/icons/moreHorizontal.js +4 -0
  532. package/dist/icons/moreVertical.d.ts +1 -0
  533. package/dist/icons/moreVertical.js +4 -0
  534. package/dist/icons/mousePointer.d.ts +1 -0
  535. package/dist/icons/mousePointer.js +4 -0
  536. package/dist/icons/move.d.ts +1 -0
  537. package/dist/icons/move.js +4 -0
  538. package/dist/icons/music.d.ts +1 -0
  539. package/dist/icons/music.js +4 -0
  540. package/dist/icons/navigation.d.ts +1 -0
  541. package/dist/icons/navigation.js +4 -0
  542. package/dist/icons/navigation2.d.ts +1 -0
  543. package/dist/icons/navigation2.js +4 -0
  544. package/dist/icons/npm.d.ts +1 -0
  545. package/dist/icons/npm.js +4 -0
  546. package/dist/icons/octagon.d.ts +1 -0
  547. package/dist/icons/octagon.js +4 -0
  548. package/dist/icons/outdent.d.ts +1 -0
  549. package/dist/icons/outdent.js +4 -0
  550. package/dist/icons/package.d.ts +1 -0
  551. package/dist/icons/package.js +4 -0
  552. package/dist/icons/paperclip.d.ts +1 -0
  553. package/dist/icons/paperclip.js +4 -0
  554. package/dist/icons/pause.d.ts +1 -0
  555. package/dist/icons/pause.js +4 -0
  556. package/dist/icons/pauseCircle.d.ts +1 -0
  557. package/dist/icons/pauseCircle.js +4 -0
  558. package/dist/icons/penTool.d.ts +1 -0
  559. package/dist/icons/penTool.js +4 -0
  560. package/dist/icons/percent.d.ts +1 -0
  561. package/dist/icons/percent.js +4 -0
  562. package/dist/icons/phone.d.ts +1 -0
  563. package/dist/icons/phone.js +4 -0
  564. package/dist/icons/phoneCall.d.ts +1 -0
  565. package/dist/icons/phoneCall.js +4 -0
  566. package/dist/icons/phoneForwarded.d.ts +1 -0
  567. package/dist/icons/phoneForwarded.js +4 -0
  568. package/dist/icons/phoneIncoming.d.ts +1 -0
  569. package/dist/icons/phoneIncoming.js +4 -0
  570. package/dist/icons/phoneMissed.d.ts +1 -0
  571. package/dist/icons/phoneMissed.js +4 -0
  572. package/dist/icons/phoneOff.d.ts +1 -0
  573. package/dist/icons/phoneOff.js +4 -0
  574. package/dist/icons/phoneOutgoing.d.ts +1 -0
  575. package/dist/icons/phoneOutgoing.js +4 -0
  576. package/dist/icons/pieChart.d.ts +1 -0
  577. package/dist/icons/pieChart.js +4 -0
  578. package/dist/icons/pin.d.ts +1 -0
  579. package/dist/icons/pin.js +4 -0
  580. package/dist/icons/play.d.ts +1 -0
  581. package/dist/icons/play.js +4 -0
  582. package/dist/icons/playCircle.d.ts +1 -0
  583. package/dist/icons/playCircle.js +4 -0
  584. package/dist/icons/plus.d.ts +1 -0
  585. package/dist/icons/plus.js +4 -0
  586. package/dist/icons/plusCircle.d.ts +1 -0
  587. package/dist/icons/plusCircle.js +4 -0
  588. package/dist/icons/plusSquare.d.ts +1 -0
  589. package/dist/icons/plusSquare.js +4 -0
  590. package/dist/icons/pocket.d.ts +1 -0
  591. package/dist/icons/pocket.js +4 -0
  592. package/dist/icons/power.d.ts +1 -0
  593. package/dist/icons/power.js +4 -0
  594. package/dist/icons/printer.d.ts +1 -0
  595. package/dist/icons/printer.js +4 -0
  596. package/dist/icons/radio.d.ts +1 -0
  597. package/dist/icons/radio.js +4 -0
  598. package/dist/icons/refreshCcw.d.ts +2 -0
  599. package/dist/icons/refreshCcw.js +5 -0
  600. package/dist/icons/refreshCw.d.ts +1 -0
  601. package/dist/icons/refreshCw.js +4 -0
  602. package/dist/icons/repeat.d.ts +1 -0
  603. package/dist/icons/repeat.js +4 -0
  604. package/dist/icons/resize.d.ts +1 -0
  605. package/dist/icons/resize.js +4 -0
  606. package/dist/icons/rewind.d.ts +1 -0
  607. package/dist/icons/rewind.js +4 -0
  608. package/dist/icons/rgb.d.ts +1 -0
  609. package/dist/icons/rgb.js +4 -0
  610. package/dist/icons/rotateCcw.d.ts +2 -0
  611. package/dist/icons/rotateCcw.js +5 -0
  612. package/dist/icons/rotateCw.d.ts +1 -0
  613. package/dist/icons/rotateCw.js +4 -0
  614. package/dist/icons/rss.d.ts +1 -0
  615. package/dist/icons/rss.js +4 -0
  616. package/dist/icons/save.d.ts +1 -0
  617. package/dist/icons/save.js +4 -0
  618. package/dist/icons/scissors.d.ts +1 -0
  619. package/dist/icons/scissors.js +4 -0
  620. package/dist/icons/search.d.ts +1 -0
  621. package/dist/icons/search.js +4 -0
  622. package/dist/icons/send.d.ts +1 -0
  623. package/dist/icons/send.js +4 -0
  624. package/dist/icons/server.d.ts +1 -0
  625. package/dist/icons/server.js +4 -0
  626. package/dist/icons/settings.d.ts +1 -0
  627. package/dist/icons/settings.js +4 -0
  628. package/dist/icons/share.d.ts +1 -0
  629. package/dist/icons/share.js +4 -0
  630. package/dist/icons/share2.d.ts +1 -0
  631. package/dist/icons/share2.js +4 -0
  632. package/dist/icons/shield.d.ts +1 -0
  633. package/dist/icons/shield.js +4 -0
  634. package/dist/icons/shieldOff.d.ts +1 -0
  635. package/dist/icons/shieldOff.js +4 -0
  636. package/dist/icons/shift.d.ts +1 -0
  637. package/dist/icons/shift.js +4 -0
  638. package/dist/icons/shoppingBag.d.ts +1 -0
  639. package/dist/icons/shoppingBag.js +4 -0
  640. package/dist/icons/shoppingCart.d.ts +1 -0
  641. package/dist/icons/shoppingCart.js +4 -0
  642. package/dist/icons/shuffle.d.ts +1 -0
  643. package/dist/icons/shuffle.js +4 -0
  644. package/dist/icons/sidebar.d.ts +1 -0
  645. package/dist/icons/sidebar.js +4 -0
  646. package/dist/icons/skipBack.d.ts +2 -0
  647. package/dist/icons/skipBack.js +5 -0
  648. package/dist/icons/skipForward.d.ts +1 -0
  649. package/dist/icons/skipForward.js +4 -0
  650. package/dist/icons/slack.d.ts +1 -0
  651. package/dist/icons/slack.js +4 -0
  652. package/dist/icons/slash.d.ts +1 -0
  653. package/dist/icons/slash.js +4 -0
  654. package/dist/icons/sliders.d.ts +1 -0
  655. package/dist/icons/sliders.js +4 -0
  656. package/dist/icons/smartphone.d.ts +1 -0
  657. package/dist/icons/smartphone.js +4 -0
  658. package/dist/icons/smile.d.ts +1 -0
  659. package/dist/icons/smile.js +4 -0
  660. package/dist/icons/sortAscending.d.ts +1 -0
  661. package/dist/icons/sortAscending.js +4 -0
  662. package/dist/icons/sortDescending.d.ts +1 -0
  663. package/dist/icons/sortDescending.js +4 -0
  664. package/dist/icons/speaker.d.ts +1 -0
  665. package/dist/icons/speaker.js +4 -0
  666. package/dist/icons/square.d.ts +1 -0
  667. package/dist/icons/square.js +4 -0
  668. package/dist/icons/star.d.ts +1 -0
  669. package/dist/icons/star.js +4 -0
  670. package/dist/icons/stopCircle.d.ts +1 -0
  671. package/dist/icons/stopCircle.js +4 -0
  672. package/dist/icons/sun.d.ts +1 -0
  673. package/dist/icons/sun.js +4 -0
  674. package/dist/icons/sunrise.d.ts +1 -0
  675. package/dist/icons/sunrise.js +4 -0
  676. package/dist/icons/sunset.d.ts +1 -0
  677. package/dist/icons/sunset.js +4 -0
  678. package/dist/icons/tab.d.ts +1 -0
  679. package/dist/icons/tab.js +4 -0
  680. package/dist/icons/table.d.ts +1 -0
  681. package/dist/icons/table.js +4 -0
  682. package/dist/icons/tablet.d.ts +1 -0
  683. package/dist/icons/tablet.js +4 -0
  684. package/dist/icons/tag.d.ts +1 -0
  685. package/dist/icons/tag.js +4 -0
  686. package/dist/icons/target.d.ts +1 -0
  687. package/dist/icons/target.js +4 -0
  688. package/dist/icons/terminal.d.ts +1 -0
  689. package/dist/icons/terminal.js +4 -0
  690. package/dist/icons/thermometer.d.ts +1 -0
  691. package/dist/icons/thermometer.js +4 -0
  692. package/dist/icons/thumbsDown.d.ts +2 -0
  693. package/dist/icons/thumbsDown.js +5 -0
  694. package/dist/icons/thumbsUp.d.ts +1 -0
  695. package/dist/icons/thumbsUp.js +4 -0
  696. package/dist/icons/toggleLeft.d.ts +2 -0
  697. package/dist/icons/toggleLeft.js +5 -0
  698. package/dist/icons/toggleRight.d.ts +1 -0
  699. package/dist/icons/toggleRight.js +4 -0
  700. package/dist/icons/tool.d.ts +1 -0
  701. package/dist/icons/tool.js +4 -0
  702. package/dist/icons/tosi.d.ts +1 -0
  703. package/dist/icons/tosi.js +4 -0
  704. package/dist/icons/tosiFavicon.d.ts +1 -0
  705. package/dist/icons/tosiFavicon.js +4 -0
  706. package/dist/icons/tosiPlatform.d.ts +1 -0
  707. package/dist/icons/tosiPlatform.js +4 -0
  708. package/dist/icons/tosiUi.d.ts +1 -0
  709. package/dist/icons/tosiUi.js +4 -0
  710. package/dist/icons/tosiXr.d.ts +1 -0
  711. package/dist/icons/tosiXr.js +4 -0
  712. package/dist/icons/trash.d.ts +1 -0
  713. package/dist/icons/trash.js +4 -0
  714. package/dist/icons/trash2.d.ts +1 -0
  715. package/dist/icons/trash2.js +4 -0
  716. package/dist/icons/trello.d.ts +1 -0
  717. package/dist/icons/trello.js +4 -0
  718. package/dist/icons/trendingDown.d.ts +1 -0
  719. package/dist/icons/trendingDown.js +4 -0
  720. package/dist/icons/trendingUp.d.ts +1 -0
  721. package/dist/icons/trendingUp.js +4 -0
  722. package/dist/icons/triangle.d.ts +1 -0
  723. package/dist/icons/triangle.js +4 -0
  724. package/dist/icons/truck.d.ts +1 -0
  725. package/dist/icons/truck.js +4 -0
  726. package/dist/icons/tv.d.ts +1 -0
  727. package/dist/icons/tv.js +4 -0
  728. package/dist/icons/twitch.d.ts +1 -0
  729. package/dist/icons/twitch.js +4 -0
  730. package/dist/icons/twitter.d.ts +1 -0
  731. package/dist/icons/twitter.js +4 -0
  732. package/dist/icons/type.d.ts +1 -0
  733. package/dist/icons/type.js +4 -0
  734. package/dist/icons/umbrella.d.ts +1 -0
  735. package/dist/icons/umbrella.js +4 -0
  736. package/dist/icons/underline.d.ts +1 -0
  737. package/dist/icons/underline.js +4 -0
  738. package/dist/icons/unlock.d.ts +1 -0
  739. package/dist/icons/unlock.js +4 -0
  740. package/dist/icons/upload.d.ts +1 -0
  741. package/dist/icons/upload.js +4 -0
  742. package/dist/icons/uploadCloud.d.ts +1 -0
  743. package/dist/icons/uploadCloud.js +4 -0
  744. package/dist/icons/user.d.ts +1 -0
  745. package/dist/icons/user.js +4 -0
  746. package/dist/icons/userCheck.d.ts +1 -0
  747. package/dist/icons/userCheck.js +4 -0
  748. package/dist/icons/userMinus.d.ts +1 -0
  749. package/dist/icons/userMinus.js +4 -0
  750. package/dist/icons/userPlus.d.ts +1 -0
  751. package/dist/icons/userPlus.js +4 -0
  752. package/dist/icons/userX.d.ts +1 -0
  753. package/dist/icons/userX.js +4 -0
  754. package/dist/icons/users.d.ts +1 -0
  755. package/dist/icons/users.js +4 -0
  756. package/dist/icons/video.d.ts +1 -0
  757. package/dist/icons/video.js +4 -0
  758. package/dist/icons/videoOff.d.ts +1 -0
  759. package/dist/icons/videoOff.js +4 -0
  760. package/dist/icons/voicemail.d.ts +1 -0
  761. package/dist/icons/voicemail.js +4 -0
  762. package/dist/icons/volume.d.ts +1 -0
  763. package/dist/icons/volume.js +4 -0
  764. package/dist/icons/volume1.d.ts +1 -0
  765. package/dist/icons/volume1.js +4 -0
  766. package/dist/icons/volume2.d.ts +1 -0
  767. package/dist/icons/volume2.js +4 -0
  768. package/dist/icons/volumeX.d.ts +1 -0
  769. package/dist/icons/volumeX.js +4 -0
  770. package/dist/icons/watch.d.ts +1 -0
  771. package/dist/icons/watch.js +4 -0
  772. package/dist/icons/wifi.d.ts +1 -0
  773. package/dist/icons/wifi.js +4 -0
  774. package/dist/icons/wifiOff.d.ts +1 -0
  775. package/dist/icons/wifiOff.js +4 -0
  776. package/dist/icons/wind.d.ts +1 -0
  777. package/dist/icons/wind.js +4 -0
  778. package/dist/icons/x.d.ts +1 -0
  779. package/dist/icons/x.js +4 -0
  780. package/dist/icons/xCircle.d.ts +1 -0
  781. package/dist/icons/xCircle.js +4 -0
  782. package/dist/icons/xOctagon.d.ts +1 -0
  783. package/dist/icons/xOctagon.js +4 -0
  784. package/dist/icons/xSquare.d.ts +1 -0
  785. package/dist/icons/xSquare.js +4 -0
  786. package/dist/icons/xrColor.d.ts +1 -0
  787. package/dist/icons/xrColor.js +4 -0
  788. package/dist/icons/youtube.d.ts +1 -0
  789. package/dist/icons/youtube.js +4 -0
  790. package/dist/icons/zap.d.ts +1 -0
  791. package/dist/icons/zap.js +4 -0
  792. package/dist/icons/zapOff.d.ts +1 -0
  793. package/dist/icons/zapOff.js +4 -0
  794. package/dist/icons/zoomIn.d.ts +1 -0
  795. package/dist/icons/zoomIn.js +4 -0
  796. package/dist/icons/zoomOut.d.ts +1 -0
  797. package/dist/icons/zoomOut.js +4 -0
  798. package/dist/icons.d.ts +1 -45
  799. package/dist/icons.js +33 -483
  800. package/dist/iife.js +150 -150
  801. package/dist/iife.js.map +392 -32
  802. package/dist/menu.d.ts +1 -1
  803. package/dist/menu.js +3 -2
  804. package/dist/month.js +6 -4
  805. package/dist/notifications.js +5 -3
  806. package/dist/palette.js +7 -4
  807. package/dist/pocket-bar.d.ts +3 -1
  808. package/dist/pocket-bar.js +4 -1
  809. package/dist/rating.d.ts +1 -0
  810. package/dist/rating.js +3 -1
  811. package/dist/rich-text.js +20 -11
  812. package/dist/search-field.js +2 -2
  813. package/dist/segmented.js +1 -1
  814. package/dist/select.js +4 -3
  815. package/dist/sizer.js +2 -2
  816. package/dist/tab-selector.js +2 -2
  817. package/dist/tag-list.js +2 -2
  818. package/dist/tag.js +2 -2
  819. package/dist/value-renderer.d.ts +2 -0
  820. package/dist/value-renderer.js +4 -1
  821. package/dist/version.d.ts +1 -1
  822. package/dist/version.js +1 -1
  823. package/llms.txt +32 -32
  824. package/package.json +2 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,97 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.17.2
4
+
5
+ > Components carry only the icons they draw, and `<tosi-affix>` centres a caption on its
6
+ > content. Nothing to change on upgrade. An app that imports components one at a time ships
7
+ > about 20 kB gzip less per component; **`dist/iife.js` grows 1.8 kB** (508.0 kB gzip),
8
+ > because the whole set is now assembled from per-icon modules.
9
+
10
+ ### Added
11
+
12
+ - `tosijs-ui/icons/<name>` exports one icon as a function, the same one `icons.name` gives:
13
+ `import { chevronDown } from 'tosijs-ui/icons/chevronDown'`. Each module registers its icon
14
+ once however many modules import it, and imports any icon it is drawn from (`chevronDown`
15
+ brings `chevronRight`), so a bundler keeps only the icons something imports. `delete` and
16
+ `package` export `deleteIcon` and `packageIcon`.
17
+ - `tosijs-make-icons` gains `--modules <dir>` (one string module per icon, plus an index whose
18
+ default is the whole set), `--creators <dir>` (one creator module per icon) and
19
+ `--core <specifier>` (where creators import `iconCreator` from; default
20
+ `tosijs-ui/icon-core`).
21
+
22
+ ### Changed
23
+
24
+ - Components import only the icons they draw, not all 320. Measured gzip, each imported alone:
25
+ `tosiTag` 4.4 kB, `tosiCarousel` 6.2 kB (was 23.8), menu 13.9 kB (was 34.2), select 13.7
26
+ (34.0), tabs 15.1 (35.4), month 15.9 (36.1), table 29.1 (48.9), rating 5.0 (25.5). Importing
27
+ `tosijs-ui` itself still brings the whole set, so nothing changes for an app that does.
28
+ - An icon a caller names (a menu item's `icon: 'folder'`, a select option's, a rating's) still
29
+ draws. On a page that has not loaded the whole set it appears a moment late, like a web font,
30
+ while the set loads. Import the icon's module, pass the icon itself where an element is
31
+ accepted (`icon: folder()`), or import `tosijs-ui/icons` up front, to draw it at once.
32
+
33
+ ### Fixed
34
+
35
+ - `<tosi-affix>`: a centred caption is centred on its content, not on the content's cell. A
36
+ fixture wider than fixed-width content (the doc page's own "a caption, centred below")
37
+ widened the content's column, and the content sat at its start; the same happened in any
38
+ affix wider than its content, where an `ne` or `e` fixture also stood off the content's edge.
39
+ The content now takes the fixture's alignment with auto margins, which leave content that
40
+ fills its cell untouched.
41
+ - `tosijs-ui/icons/data/<name>` shipped stale icons: the per-icon modules were written once in
42
+ 1.4.1 and never regenerated, so 54 of 313 differed from the icons actually drawn (including
43
+ 1.17.0's open-path fix) and six (`fatArrowDown/Left/Right/Up`, `pin`, `shift`) had no module.
44
+ The build now writes them from the same data, and a test fails if they drift.
45
+
46
+ ## 1.17.1
47
+
48
+ > Fixes from the 1.17.0 review, plus elastic table columns that can be dragged narrower. Nothing
49
+ > to change on upgrade. **`dist/iife.js` is unchanged in size** (506.2 kB gzip).
50
+
51
+ ### Security
52
+
53
+ Both affect sites that turn on the accessibility mode in **1.17.0 and its betas**; no advisory is
54
+ filed, because each needs the build running and the reach is local. Upgrade if you build with
55
+ the accessibility mode on a shared machine or network.
56
+
57
+ - The accessibility audit's temporary server bound every interface, and its root check was a bare
58
+ prefix, so for the length of the audit a request like `/..%2fdocs-private/key.txt` was served a
59
+ sibling directory whose name starts with the output directory's. It now listens on localhost
60
+ only and contains paths with root + separator.
61
+ - The audit's payload and the altText corpus, which can hold hidden pages, were written to
62
+ predictable names in the shared temp directory and never removed. They now go in private
63
+ temporary directories removed when the build ends.
64
+
65
+ ### Added
66
+
67
+ - With a `dist-sizes.json` in the project root (`bun run sizes` writes one in this repo), the site
68
+ build prints the bundle's gzip size change since that baseline and the version it was recorded
69
+ at.
70
+
71
+ ### Fixed
72
+
73
+ - `<tosi-table>`: an elastic column can now be dragged narrower than the width it is drawn at.
74
+ The last elastic column's edge is the table's edge, so dragging it moved nothing and quietly
75
+ shrank its `width` to the minimum, and a middle one fought the columns beside it. A drag now
76
+ fixes the dragged column, and the elastic columns to its left, at the width they are drawn at
77
+ (it sets `width` and `elastic: false`), so the edge follows the pointer exactly. Elastic
78
+ columns to its right absorb the difference; with none, the space it gives up is left beside
79
+ the columns, painted with `--tosi-table-fill`.
80
+ - Under path or query routing, clicking a `/slug/#heading` link in a doc puts the hash in the URL
81
+ and scrolls to the heading. It pushed the page's URL without the hash and landed at the top.
82
+ - The accessibility mode's axe audit and DAISY Ace run with a time limit (the audit's worst case
83
+ plus a minute; Ace ten minutes). One that hangs is stopped and reported as not having run,
84
+ instead of hanging the build, and a build stopped with Ctrl-C or SIGTERM stops them too,
85
+ instead of leaving them and their browser running.
86
+ - The ePub accessibility check accepted any program named `ace` on PATH as DAISY Ace, so an
87
+ unrelated tool could decide whether a book claims WCAG conformance. It now accepts only an
88
+ `ace` inside a `@daisy/ace` package; another is skipped and named in the reason the check did
89
+ not run, and a real Ace later on PATH is still found.
90
+ - `llms.txt` link titles no longer carry the project suffix ("Menus — tosijs-ui" on every line).
91
+ - When a delegated build is refused because the dev server has a different site config, the
92
+ message now says that a refusal on every build means the config computes a value per process
93
+ (`Date.now()`, a random id, an environment variable one process lacks), and how to fix that.
94
+
3
95
  ## 1.17.0
4
96
 
5
97
  > Accessibility and SEO for doc sites, and the components themselves passing WCAG 2.2 AA. A doc
package/README.md CHANGED
@@ -53,7 +53,7 @@ The `tosijs-ui` iife build bundles `tosijs`, `tosijs-ui`, `marked` and — as of
53
53
  **CodeMirror** into a single minified javascript source file. You can access `xinjs` and
54
54
  `xinjsui` as globals which contain all the things exported by `tosijs` and `tosijs-ui`.
55
55
 
56
- > **Size (1.16.21):** ~484KB gzip, up from ~120KB in 1.6. Two things dominate it, and
56
+ > **Size (1.17.0):** ~506KB gzip, up from ~120KB in 1.6. Two things dominate it, and
57
57
  > `bun build --format iife` cannot
58
58
  > code-split, so `<tosi-code>`'s lazy CodeMirror import is flattened into this bundle
59
59
  > whether or not the page uses an editor. **If you don't need `<tosi-code>`, use the ESM
@@ -16,6 +16,15 @@ Ingests SVG files from icon directories and generates an icon-data module
16
16
  - `--input <dir1,dir2,...>` — directories to scan (default: `./icons`)
17
17
  - `--output <path>` — output file (default: `./src/icon-data.ts`)
18
18
  - `--optimize <true|false>` — round coordinates based on viewBox size (default: true)
19
+ - `--modules <dir>` — also write one module per icon into `dir` (`export const name = '…'`),
20
+ plus an `index`, so code can import just the icons it draws. tosijs-ui's own build writes
21
+ `src/icons/data/` this way; files there that are no longer icons are removed.
22
+ - `--creators <dir>` — with `--modules`, also write one module per icon that exports it as a
23
+ function, `export const chevronDown = iconCreator(…)`, registering it once when it loads.
24
+ A redirect's module imports the icon it redirects to. tosijs-ui's own build writes
25
+ `src/icons/` this way, published as `tosijs-ui/icons/<name>`.
26
+ - `--core <specifier>` — where `--creators` modules import `iconCreator` from (default
27
+ `tosijs-ui/icon-core`)
19
28
 
20
29
  ### Examples
21
30
 
@@ -99,6 +108,9 @@ const defaultOptions = {
99
108
  input: './icons',
100
109
  output: './src/icon-data.ts',
101
110
  optimize: true, // Optimize coordinate precision based on viewBox size
111
+ modules: '', // A directory to also write one module per icon into
112
+ creators: '', // A directory to also write one creator module per icon into
113
+ core: 'tosijs-ui/icon-core', // Where creator modules import iconCreator from
102
114
  }
103
115
  const flags = Object.keys(defaultOptions)
104
116
 
@@ -128,7 +140,14 @@ for (const flag of flags) {
128
140
  }
129
141
 
130
142
  // Destructure options for easier use
131
- const { input: iconDirectories, output: outputFilePath, optimize } = options
143
+ const {
144
+ input: iconDirectories,
145
+ output: outputFilePath,
146
+ optimize,
147
+ modules: modulesDir,
148
+ creators: creatorsDir,
149
+ core: coreSpecifier,
150
+ } = options
132
151
  const isTypescript = outputFilePath.endsWith('.ts')
133
152
  const shouldOptimize = optimize === true || optimize === 'true'
134
153
 
@@ -484,4 +503,151 @@ try {
484
503
 
485
504
  fs.writeFileSync(outputFilePath, source, 'utf8')
486
505
 
506
+ /*
507
+ One module per icon, so a component can import the handful it draws instead of all of them
508
+ (tosijs-ui#3885). They are written from the same data in the same run, so they cannot drift
509
+ from the combined module: the 1.4.1 copies were written once, by hand, and by 1.17 a sixth of
510
+ them were wrong. A redirect's module holds the redirect, not its target; whoever registers
511
+ it registers the target too.
512
+
513
+ Files in the directory that are not icons any more are removed, but only ones this generator
514
+ writes (a module that starts `export const` or an index of `export {` lines), so a stray file
515
+ of someone else's survives.
516
+ */
517
+ if (typeof modulesDir === 'string' && modulesDir !== '') {
518
+ const ext = isTypescript ? '.ts' : '.js'
519
+ fs.mkdirSync(modulesDir, { recursive: true })
520
+ /*
521
+ The export is the icon's name, unless that is not a name a module can bind: `delete` and (in
522
+ a module) `package` look like identifiers and are reserved, so they export `deleteIcon` and
523
+ `packageIcon` from `delete` and `package`, as the 1.4.1 modules did. Ask the parser, not a
524
+ pattern.
525
+ */
526
+ const bindable = (name) => {
527
+ try {
528
+ new Function(`"use strict"; let ${name}`)
529
+ return true
530
+ } catch {
531
+ return false
532
+ }
533
+ }
534
+ const valid = (name) => /^[A-Za-z_$][\w$]*$/.test(name)
535
+ const names = Object.keys(iconData).filter(valid)
536
+ const exportName = (name) => (bindable(name) ? name : name + 'Icon')
537
+ const skipped = Object.keys(iconData).filter((name) => !valid(name))
538
+ if (skipped.length > 0) {
539
+ console.warn(
540
+ `make-icon-data: no module for ${skipped.join(', ')} (not an identifier)`
541
+ )
542
+ }
543
+ const wanted = new Set([...names.map((n) => n + ext), 'index' + ext])
544
+ for (const file of fs.readdirSync(modulesDir)) {
545
+ if (wanted.has(file) || !file.endsWith(ext)) continue
546
+ const full = path.join(modulesDir, file)
547
+ const head = fs.readFileSync(full, 'utf8').slice(0, 13)
548
+ if (head.startsWith('export const') || head.startsWith('export {')) {
549
+ fs.rmSync(full)
550
+ }
551
+ }
552
+ for (const name of names) {
553
+ const file = path.join(modulesDir, name + ext)
554
+ const text = `export const ${exportName(name)} = ${JSON.stringify(
555
+ iconData[name]
556
+ )}\n`
557
+ if (!fs.existsSync(file) || fs.readFileSync(file, 'utf8') !== text) {
558
+ fs.writeFileSync(file, text, 'utf8')
559
+ }
560
+ }
561
+ /*
562
+ The index re-exports every icon by name and, as its default, the whole set keyed by icon
563
+ name (so `delete`, not `deleteIcon`). Code that needs every icon imports the default, which
564
+ is built from the same modules a component imports one at a time: one copy of each string in
565
+ a bundle that has both, not two.
566
+ */
567
+ const key = (n) => (/^[A-Za-z_$][\w$]*$/.test(n) ? n : quote(n))
568
+ fs.writeFileSync(
569
+ path.join(modulesDir, 'index' + ext),
570
+ names
571
+ .map((n) => `import { ${exportName(n)} } from './${n}.js'\n`)
572
+ .join('') +
573
+ `\nexport {\n${names.map((n) => ` ${exportName(n)},\n`).join('')}}\n` +
574
+ `\nexport default {\n${names
575
+ .map((n) =>
576
+ exportName(n) === n ? ` ${n},\n` : ` ${key(n)}: ${exportName(n)},\n`
577
+ )
578
+ .join('')}}\n`,
579
+ 'utf8'
580
+ )
581
+ if (typeof creatorsDir === 'string' && creatorsDir !== '') {
582
+ writeCreators(creatorsDir, names, exportName, ext)
583
+ }
584
+ }
585
+
487
586
  console.log(`Successfully generated icon data to: ${outputFilePath}`)
587
+
588
+ /*
589
+ A redirect draws another icon (`chevronDown` is `chevronRight90r`), so its creator module
590
+ imports that icon's, and registering one registers what it needs. The icon a redirect draws
591
+ is the longest icon name its value starts with, per `$`-stacked layer; a value that names no
592
+ icon (a composition rule's) imports nothing and resolves the way any unregistered name does.
593
+ */
594
+ function redirectTargets(name) {
595
+ const spec = iconData[name]
596
+ if (spec.startsWith('<')) return []
597
+ const targets = new Set()
598
+ for (const layer of spec.split('$')) {
599
+ let best = ''
600
+ for (const other of Object.keys(iconData)) {
601
+ if (
602
+ other !== name &&
603
+ layer.startsWith(other) &&
604
+ other.length > best.length
605
+ )
606
+ best = other
607
+ }
608
+ if (best) targets.add(best)
609
+ }
610
+ return [...targets]
611
+ }
612
+
613
+ function writeCreators(dir, names, exportName, ext) {
614
+ if (typeof modulesDir !== 'string' || modulesDir === '') {
615
+ throw new Error('make-icon-data: --creators needs --modules')
616
+ }
617
+ fs.mkdirSync(dir, { recursive: true })
618
+ let dataPath = path.relative(dir, modulesDir).split(path.sep).join('/')
619
+ if (!dataPath.startsWith('.')) dataPath = './' + dataPath
620
+ const named = new Set(names)
621
+ for (const name of names) {
622
+ const exported = exportName(name)
623
+ const lines = [
624
+ '// Generated by make-icon-data. One icon, registered when this module loads.',
625
+ `import { iconCreator } from ${quote(coreSpecifier)}`,
626
+ ...redirectTargets(name)
627
+ .filter((t) => named.has(t))
628
+ .map((t) => `import './${t}.js'`),
629
+ `import { ${exported} as spec } from '${dataPath}/${name}.js'`,
630
+ '',
631
+ `export const ${exported} = iconCreator(${quote(name)}, spec)`,
632
+ '',
633
+ ]
634
+ const file = path.join(dir, name + ext)
635
+ const text = lines.join('\n')
636
+ if (!fs.existsSync(file) || fs.readFileSync(file, 'utf8') !== text) {
637
+ fs.writeFileSync(file, text, 'utf8')
638
+ }
639
+ }
640
+ const wanted = new Set(names.map((n) => n + ext))
641
+ for (const file of fs.readdirSync(dir)) {
642
+ if (wanted.has(file) || !file.endsWith(ext)) continue
643
+ const full = path.join(dir, file)
644
+ if (!fs.statSync(full).isFile()) continue
645
+ if (
646
+ fs
647
+ .readFileSync(full, 'utf8')
648
+ .startsWith('// Generated by make-icon-data.')
649
+ ) {
650
+ fs.rmSync(full)
651
+ }
652
+ }
653
+ }
package/dist/affix.d.ts CHANGED
@@ -50,6 +50,12 @@ export declare class TosiAffix extends Component<AffixParts> {
50
50
  minHeight: string;
51
51
  position: string;
52
52
  };
53
+ ':host > [part="content"][data-align="center"]::slotted(*)': {
54
+ marginInline: string;
55
+ };
56
+ ':host > [part="content"][data-align="end"]::slotted(*)': {
57
+ marginInlineStart: string;
58
+ };
53
59
  ':host > [part="fixture"]': {
54
60
  display: string;
55
61
  flexDirection: string;
package/dist/affix.js CHANGED
@@ -259,6 +259,17 @@ export class TosiAffix extends Component {
259
259
  // a positioned child of the content is placed against the content, not the fixture
260
260
  position: 'relative',
261
261
  },
262
+ /*
263
+ Content narrower than its cell — a fixed width in a wider affix, or under a fixture wider
264
+ than it — follows the fixture, so a centred caption is centred on the content and not on
265
+ the cell. Auto margins do nothing to content that fills its cell.
266
+ */
267
+ ':host > [part="content"][data-align="center"]::slotted(*)': {
268
+ marginInline: 'auto',
269
+ },
270
+ ':host > [part="content"][data-align="end"]::slotted(*)': {
271
+ marginInlineStart: 'auto',
272
+ },
262
273
  ':host > [part="fixture"]': {
263
274
  display: 'flex',
264
275
  flexDirection: 'var(--tosi-affix-direction)',
@@ -436,6 +447,14 @@ export class TosiAffix extends Component {
436
447
  borderRadius: outerCorners(cell.edge, placement.inside, 'var(--tosi-affix-radius, var(--tosi-border-radius, 4px))'),
437
448
  });
438
449
  this.style.setProperty('--tosi-affix-direction', cell.direction);
450
+ // beside the content, it hugs the edge it is on; above, below or inside, it lines up with it
451
+ const side = cell.edge === 'e' || cell.edge === 'w';
452
+ this.parts.content.dataset.align =
453
+ side && !placement.inside
454
+ ? cell.edge === 'e'
455
+ ? 'end'
456
+ : 'start'
457
+ : cell.justifySelf;
439
458
  }
440
459
  render() {
441
460
  super.render();
@@ -223,7 +223,8 @@ be used to load `.glb` files. Setting `src` calls this for you on connect.
223
223
  /*{ "parent": "Components", "headTitle": "<tosi-3d> Babylon.js wrapper (deprecated) — tosijs-ui", "description": "Deprecated: <tosi-3d> is a thin Babylon.js wrapper kept for compatibility. New 3D work should use the tosijs-3d package." }*/
224
224
  import { elements, withAttributes } from 'tosijs';
225
225
  import { scriptTag } from './via-tag.js';
226
- import { icons, svg2DataUrl } from './icons.js';
226
+ import { svg2DataUrl } from './icon-core.js';
227
+ import { xrColor as xrColorIcon } from './icons/xrColor.js';
227
228
  const noop = () => {
228
229
  /* do not care */
229
230
  };
@@ -310,7 +311,7 @@ export class B3d extends withAttributes({
310
311
  width: 80,
311
312
  backgroundColor: 'transparent',
312
313
  filter: 'drop-shadow(0 0 4px #000c)',
313
- backgroundImage: svg2DataUrl(icons.xrColor()),
314
+ backgroundImage: svg2DataUrl(xrColorIcon()),
314
315
  backgroundPosition: 'center',
315
316
  backgroundRepeat: 'no-repeat',
316
317
  border: 'none',
package/dist/carousel.js CHANGED
@@ -72,7 +72,8 @@ This is a minimalist carousel component that supports the usual stuff.
72
72
  */
73
73
  /*{ "parent": "Components", "description": "A minimal carousel with optional arrows and dots, several items per page, looping, and auto-advance that holds still while someone is looking." }*/
74
74
  import { elements, vars, withAttributes } from 'tosijs';
75
- import { icons } from './icons.js';
75
+ import { chevronLeft as chevronLeftIcon } from './icons/chevronLeft.js';
76
+ import { chevronRight as chevronRightIcon } from './icons/chevronRight.js';
76
77
  import { prefersReducedMotion } from './reduced-motion.js';
77
78
  const { button, slot, div } = elements;
78
79
  export class TosiCarousel extends withAttributes({
@@ -382,12 +383,12 @@ export class TosiCarousel extends withAttributes({
382
383
  }
383
384
  }
384
385
  content = () => [
385
- div({ part: 'pager' }, button({ title: 'previous slide', part: 'back' }, icons.chevronLeft()), div(
386
+ div({ part: 'pager' }, button({ title: 'previous slide', part: 'back' }, chevronLeftIcon()), div(
386
387
  /*
387
388
  Focusable, so the strip can be scrolled from the keyboard (#3573); ← and → page it,
388
389
  like the arrow buttons.
389
390
  */
390
- { title: 'slides', role: 'group', part: 'scroller', tabindex: 0 }, div({ part: 'grid' }, slot())), button({ title: 'next slide', part: 'forward' }, icons.chevronRight())),
391
+ { title: 'slides', role: 'group', part: 'scroller', tabindex: 0 }, div({ part: 'grid' }, slot())), button({ title: 'next slide', part: 'forward' }, chevronRightIcon())),
391
392
  div({ title: 'choose slide to display', role: 'group', part: 'progress' }),
392
393
  ];
393
394
  connectedCallback() {
@@ -15,7 +15,8 @@ export interface ColumnOptions {
15
15
  * Whether this column takes a share of the space left over when the columns add up to
16
16
  * less than the table's width. Elastic columns grow in proportion to their `width`, and
17
17
  * never shrink below it. Defaults to the table's `elastic`. A pinned column is never
18
- * elastic: its sticky offset is its width.
18
+ * elastic: its sticky offset is its width. Resizing a column by dragging sets this to
19
+ * `false` on it and on the elastic columns to its left, at the widths they were drawn at.
19
20
  */
20
21
  elastic?: boolean;
21
22
  sort?: false | 'ascending' | 'descending';
@@ -502,9 +503,7 @@ export declare class TosiTable extends TosiTable_base {
502
503
  private focusCell;
503
504
  private handleKeyNav;
504
505
  connectedCallback(): void;
505
- /** Where `col`'s right edge is drawn, from the left of the columns. */
506
- private drawnEdge;
507
- private widthForEdge;
506
+ private pinElasticThrough;
508
507
  private isElastic;
509
508
  private layoutColumns;
510
509
  setColumnWidths(): void;
@@ -1000,8 +1000,11 @@ creator) and every column is elastic unless it says `elastic: false`, which is t
1000
1000
  get it for columns inferred from the data. Pinned columns are never elastic. Elastic
1001
1001
  columns take precedence over `full-width-header`.
1002
1002
 
1003
- Dragging an elastic column's edge keeps the edge under the pointer; the other elastic
1004
- columns give up or take the difference.
1003
+ Dragging a column's edge resizes it to exactly where you drop it, narrower than its share
1004
+ included. The drag fixes that column, and any elastic columns to its left, at the width
1005
+ they were drawn at (it sets their `width` and `elastic: false`, as a resize always sets
1006
+ `width`): elastic columns to its right take up or give back the difference, and with none
1007
+ to its right, the space it gives up is left beside the columns.
1005
1008
 
1006
1009
  ### Filling the space beside the columns
1007
1010
 
@@ -1310,7 +1313,10 @@ import { elements, vars, varDefault, tosiValue, getListItem, getListBinding, tos
1310
1313
  import { trackDrag } from './track-drag.js';
1311
1314
  import { naturalSorter } from './natural-compare.js';
1312
1315
  import { resolveRowGroupId, withForcedGroups, clusterByGroup, groupRenderMeta, groupCounts, } from './row-grouping.js';
1313
- import { icons } from './icons.js';
1316
+ import { chevronRight as chevronRightIcon } from './icons/chevronRight.js';
1317
+ import { sortAscending as sortAscendingIcon } from './icons/sortAscending.js';
1318
+ import { sortDescending as sortDescendingIcon } from './icons/sortDescending.js';
1319
+ import { moreVertical as moreVerticalIcon } from './icons/moreVertical.js';
1314
1320
  import { valueRenderer, } from './value-renderer.js';
1315
1321
  import { fieldForProperty, collectErrors, coerceToSchema, fieldEditable, } from './schema-form/fields.js';
1316
1322
  import { getSchemaValidator, warnNoValidator } from './schema-form/validator.js';
@@ -2824,7 +2830,7 @@ export class TosiTable extends withAttributes({
2824
2830
  if (item != null)
2825
2831
  this.toggleRowDetail(item);
2826
2832
  },
2827
- }, icons.chevronRight()));
2833
+ }, chevronRightIcon()));
2828
2834
  return cell;
2829
2835
  }
2830
2836
  if (this.columnEditable(col)) {
@@ -2946,12 +2952,12 @@ export class TosiTable extends withAttributes({
2946
2952
  let sortIcon;
2947
2953
  switch (col.sort) {
2948
2954
  case 'ascending':
2949
- sortIcon = icons.sortAscending();
2955
+ sortIcon = sortAscendingIcon();
2950
2956
  ariaSort = 'descending';
2951
2957
  break;
2952
2958
  case 'descending':
2953
2959
  ariaSort = 'ascending';
2954
- sortIcon = icons.sortDescending();
2960
+ sortIcon = sortDescendingIcon();
2955
2961
  break;
2956
2962
  }
2957
2963
  // An expander column has nothing to sort by and should not be hidden by accident.
@@ -2963,7 +2969,7 @@ export class TosiTable extends withAttributes({
2963
2969
  popColumnMenu(event.target, col);
2964
2970
  event.stopPropagation();
2965
2971
  },
2966
- }, sortIcon || icons.moreVertical())
2972
+ }, sortIcon || moreVerticalIcon())
2967
2973
  : {};
2968
2974
  const cell = col.headerCell !== undefined
2969
2975
  ? col.headerCell(col)
@@ -3091,9 +3097,8 @@ export class TosiTable extends withAttributes({
3091
3097
  first drag on a fresh page into a text selection. See track-drag.ts, and #107.)
3092
3098
  */
3093
3099
  const prop = grabbed.prop;
3094
- let anchor = grabbed;
3095
- let anchorWidth = Number(grabbed.width);
3096
- let anchorEdge = this.drawnEdge(grabbed);
3100
+ let anchor;
3101
+ let anchorWidth = 0;
3097
3102
  let anchorDx = 0;
3098
3103
  const isTouchEvent = event.touches !== undefined;
3099
3104
  const touchIdentifier = isTouchEvent
@@ -3109,15 +3114,18 @@ export class TosiTable extends withAttributes({
3109
3114
  const live = this.columns.find((c) => c.prop === prop);
3110
3115
  if (!live)
3111
3116
  return true;
3117
+ // A click on the edge changes nothing: pin the columns on the first movement.
3118
+ if (anchor === undefined && dx === 0) {
3119
+ return event.type === 'mouseup' || undefined;
3120
+ }
3112
3121
  if (live !== anchor) {
3122
+ this.pinElasticThrough(live);
3123
+ // The drag measures from where it started; a replaced column rebases on this step.
3124
+ anchorDx = anchor === undefined ? 0 : dx;
3113
3125
  anchor = live;
3114
3126
  anchorWidth = Number(live.width);
3115
- anchorEdge = this.drawnEdge(live);
3116
- anchorDx = dx;
3117
3127
  }
3118
- const width = this.isElastic(live)
3119
- ? this.widthForEdge(live, anchorEdge + (dx - anchorDx))
3120
- : anchorWidth + (dx - anchorDx);
3128
+ const width = anchorWidth + (dx - anchorDx);
3121
3129
  live.width = width > this.minColumnWidth ? width : this.minColumnWidth;
3122
3130
  this.setColumnWidths();
3123
3131
  if (event.type === 'mouseup') {
@@ -3656,33 +3664,28 @@ export class TosiTable extends withAttributes({
3656
3664
  this.addEventListener('touchend', this.updateSelection);
3657
3665
  this.addEventListener('keydown', this.handleKeyNav);
3658
3666
  }
3659
- /** Where `col`'s right edge is drawn, from the left of the columns. */
3660
- drawnEdge(col) {
3661
- const cols = this.visibleColumns;
3662
- const { drawn } = this.layoutColumns(cols);
3663
- const index = cols.indexOf(col);
3664
- return drawn.slice(0, index + 1).reduce((sum, w) => sum + w, 0);
3665
- }
3666
3667
  /*
3667
- The width that draws an elastic column's right edge at `edge`, so a resize drag keeps the edge
3668
- under the pointer. An elastic column is drawn wider than its width and shares the leftover with
3669
- the others, so `width + dx` would move the edge by some fraction of dx. Its edge only ever
3670
- moves right as its width grows, so a bisection finds it.
3668
+ Before a drag resizes `col`, fix it and every elastic column to its left at the width they are
3669
+ drawn at. An elastic column's drawn width is not its width: the table's leftover space is shared
3670
+ out over the elastic columns, so the last one's right edge is the table's right edge whatever
3671
+ its width says, and dragging it narrower moved nothing (its width shrank to the minimum while
3672
+ it stayed drawn wide). Once they are fixed, the dragged edge is the sum of fixed widths and
3673
+ follows the pointer exactly; elastic columns to its right still share the leftover, and with
3674
+ none, the leftover is the space beside the columns. Nothing moves when the drag starts: the
3675
+ columns to the right are drawn at the same widths as before.
3671
3676
  */
3672
- widthForEdge(col, edge) {
3673
- const original = col.width;
3674
- let lo = this.minColumnWidth;
3675
- let hi = Math.max(lo, edge) * 64;
3676
- for (let i = 0; i < 40; i++) {
3677
- const mid = (lo + hi) / 2;
3678
- col.width = mid;
3679
- if (this.drawnEdge(col) < edge)
3680
- lo = mid;
3681
- else
3682
- hi = mid;
3677
+ pinElasticThrough(col) {
3678
+ const cols = this.visibleColumns;
3679
+ const index = cols.indexOf(col);
3680
+ if (index === -1)
3681
+ return;
3682
+ const { drawn } = this.layoutColumns(cols);
3683
+ for (let i = 0; i <= index; i++) {
3684
+ if (!this.isElastic(cols[i]))
3685
+ continue;
3686
+ cols[i].width = Math.round(drawn[i]);
3687
+ cols[i].elastic = false;
3683
3688
  }
3684
- col.width = original;
3685
- return Math.round(hi);
3686
3689
  }
3687
3690
  isElastic(col) {
3688
3691
  return !col.pinned && (col.elastic ?? this.elastic);
@@ -1011,7 +1011,14 @@ export function createDocBrowser(options) {
1011
1011
  const scrollToHashExample = () => {
1012
1012
  if (memoryRouting)
1013
1013
  return;
1014
- let hash = location.hash.replace(/^#/, '');
1014
+ scrollToTarget(location.hash);
1015
+ };
1016
+ /*
1017
+ Scroll to the element a `#hash` names in the content: the URL's hash on arrival (path and
1018
+ query routing), or a clicked link's (memory routing, which never touches the URL).
1019
+ */
1020
+ const scrollToTarget = (rawHash) => {
1021
+ let hash = rawHash.replace(/^#/, '');
1015
1022
  if (!hash)
1016
1023
  return;
1017
1024
  try {
@@ -1173,7 +1180,7 @@ export function createDocBrowser(options) {
1173
1180
  // User-initiated navigation: record the new location (history for path/query,
1174
1181
  // the onRouteChange callback for memory) and then render the doc. Every nav
1175
1182
  // click funnels through here so memory mode never touches window.history.
1176
- const go = (filename) => {
1183
+ const go = (filename, hash = '') => {
1177
1184
  // If the source editor is open with unsaved changes, confirm before leaving;
1178
1185
  // on confirm it discards + closes, otherwise navigation is aborted (false).
1179
1186
  if (!confirmLeaveEditor())
@@ -1182,7 +1189,8 @@ export function createDocBrowser(options) {
1182
1189
  onRouteChange?.(slugFor(filename));
1183
1190
  }
1184
1191
  else {
1185
- const href = hrefFor(filename);
1192
+ // The link's `#heading` goes into the URL, where showDoc's scrollToHashExample finds it.
1193
+ const href = hrefFor(filename) + hash;
1186
1194
  /*
1187
1195
  A link to the document already showing REPLACES the entry rather than pushing one, as a
1188
1196
  native same-URL navigation does. Pushing left a duplicate the reader had to Back
@@ -1194,10 +1202,13 @@ export function createDocBrowser(options) {
1194
1202
  may want to come Back from.
1195
1203
  */
1196
1204
  const same = filename === String(app.currentDoc.filename) &&
1197
- document.location.hash === '';
1205
+ document.location.hash === '' &&
1206
+ hash === '';
1198
1207
  window.history[same ? 'replaceState' : 'pushState']({ href }, '', href);
1199
1208
  }
1200
1209
  navigateTo(filename);
1210
+ if (memoryRouting)
1211
+ scrollToTarget(hash);
1201
1212
  return true;
1202
1213
  };
1203
1214
  // Intercept clicks on internal doc links anywhere in the rendered content so
@@ -1222,27 +1233,7 @@ export function createDocBrowser(options) {
1222
1233
  if (filename === null)
1223
1234
  return;
1224
1235
  event.preventDefault();
1225
- if (!go(filename))
1226
- return;
1227
- /*
1228
- `/slug/#heading`: path routing gets the scroll from the URL (scrollToHashExample); memory
1229
- routing never touches the URL, so it goes to the heading itself, once the doc has drawn.
1230
- */
1231
- const hash = new URL(anchor.href, document.location.href).hash.slice(1);
1232
- if (memoryRouting && hash) {
1233
- requestAnimationFrame(() => requestAnimationFrame(() => {
1234
- let id = hash;
1235
- try {
1236
- id = decodeURIComponent(hash);
1237
- }
1238
- catch {
1239
- // a stray % — look it up as written
1240
- }
1241
- docContent
1242
- .querySelector(`#${CSS.escape(id)}`)
1243
- ?.scrollIntoView({ block: 'start' });
1244
- }));
1245
- }
1236
+ go(filename, new URL(anchor.href, document.location.href).hash);
1246
1237
  });
1247
1238
  // ── Edit page source (Foundation B / #4) ──────────────────────────────────
1248
1239
  // The "view source" affordance opens a menu: edit the whole source file in a
@@ -17,3 +17,8 @@ export interface TitledDoc {
17
17
  * more specific label, so use it alone.
18
18
  */
19
19
  export declare function pageTitle(doc: TitledDoc, projectName?: string): string;
20
+ /**
21
+ * "Menus — tosijs-ui" → "Menus": a `headTitle` often carries the suffix a headline or an index
22
+ * entry must not (the structured data's headline; llms.txt's link titles, #3867).
23
+ */
24
+ export declare function withoutProjectSuffix(title: string, projectName: string | undefined): string;