cursedbelt 5.87.0 → 5.89.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 (594) hide show
  1. package/dist/looks.css +4 -4
  2. package/dist/react/Toast.js +2 -2
  3. package/dist/react/Toast.js.map +1 -1
  4. package/dist/react/VirtualCardGrid.d.ts +1 -1
  5. package/dist/react/VirtualCardGrid.js +1 -1
  6. package/dist/react/activity-bar/ActivityBar.d.ts +2 -2
  7. package/dist/react/activity-bar/ActivityBar.js +1 -1
  8. package/dist/react/activity-bar/activityBar.css +4 -4
  9. package/dist/react/analytics/AnalyticsPanel.d.ts +1 -1
  10. package/dist/react/analytics/AnalyticsPanel.js +1 -1
  11. package/dist/react/canvas-hud/CanvasMinimap.d.ts +1 -1
  12. package/dist/react/canvas-hud/HudControls.d.ts +2 -2
  13. package/dist/react/canvas-hud/alignment.d.ts +2 -2
  14. package/dist/react/canvas-hud/alignment.js +3 -3
  15. package/dist/react/canvas-hud/alignment.js.map +1 -1
  16. package/dist/react/canvas-hud/viewport.d.ts +1 -1
  17. package/dist/react/canvas-hud/viewport.js +1 -1
  18. package/dist/react/charts/BarChart.d.ts +2 -2
  19. package/dist/react/charts/HeatmapChart.d.ts +1 -1
  20. package/dist/react/charts/HeatmapChart.js +1 -1
  21. package/dist/react/charts/IntervalTimeline.d.ts +2 -2
  22. package/dist/react/charts/IntervalTimeline.d.ts.map +1 -1
  23. package/dist/react/charts/categorical.d.ts +11 -11
  24. package/dist/react/charts/categorical.js +9 -9
  25. package/dist/react/charts/categorical.js.map +1 -1
  26. package/dist/react/charts/ink.d.ts +5 -5
  27. package/dist/react/charts/ink.js +5 -5
  28. package/dist/react/charts/tokens.d.ts +1 -1
  29. package/dist/react/charts/tokens.js +1 -1
  30. package/dist/react/chat/Bubble.js +1 -1
  31. package/dist/react/chat/Bubble.js.map +1 -1
  32. package/dist/react/chat/DateMarker.js +1 -1
  33. package/dist/react/chat/MessageComposer.d.ts +1 -1
  34. package/dist/react/chat/types.d.ts +1 -1
  35. package/dist/react/chat/usePresence.d.ts +2 -2
  36. package/dist/react/chat/usePresence.js +1 -1
  37. package/dist/react/code-editor/markdownRules.js +1 -1
  38. package/dist/react/code-editor/markdownRules.js.map +1 -1
  39. package/dist/react/components/Badge.js +1 -1
  40. package/dist/react/components/Badge.js.map +1 -1
  41. package/dist/react/components/Button.js +5 -5
  42. package/dist/react/components/Button.js.map +1 -1
  43. package/dist/react/components/ChartTablePanel.js +1 -1
  44. package/dist/react/components/ChartTablePanel.js.map +1 -1
  45. package/dist/react/components/Checkbox.js +2 -2
  46. package/dist/react/components/Checkbox.js.map +1 -1
  47. package/dist/react/components/ChoiceGroup.d.ts +1 -1
  48. package/dist/react/components/ChoiceGroup.js +1 -1
  49. package/dist/react/components/CodeChip.d.ts +1 -1
  50. package/dist/react/components/CodeChip.js +1 -1
  51. package/dist/react/components/ColorSwatches.d.ts +10 -10
  52. package/dist/react/components/ColorSwatches.d.ts.map +1 -1
  53. package/dist/react/components/ColorSwatches.js +10 -10
  54. package/dist/react/components/ColorSwatches.js.map +1 -1
  55. package/dist/react/components/DataTable/DataTable.d.ts +2 -2
  56. package/dist/react/components/DataTable/DataTable.js +8 -8
  57. package/dist/react/components/DataTable/DataTable.js.map +1 -1
  58. package/dist/react/components/DataTable/SearchBox.js +2 -2
  59. package/dist/react/components/DataTable/SortHeader.js +1 -1
  60. package/dist/react/components/DataTable/SortHeader.js.map +1 -1
  61. package/dist/react/components/DataTable/TableFilterBuilder.d.ts +1 -1
  62. package/dist/react/components/DataTable/TableFilterBuilder.js +1 -1
  63. package/dist/react/components/DropdownMenu.js +1 -1
  64. package/dist/react/components/Field.d.ts +1 -1
  65. package/dist/react/components/FormPreviewLayout.d.ts +1 -1
  66. package/dist/react/components/FormPreviewLayout.js +1 -1
  67. package/dist/react/components/Heat.d.ts +6 -6
  68. package/dist/react/components/Heat.js +1 -1
  69. package/dist/react/components/IconPicker.d.ts +8 -8
  70. package/dist/react/components/IconPicker.d.ts.map +1 -1
  71. package/dist/react/components/IconPicker.js +6 -6
  72. package/dist/react/components/IconPicker.js.map +1 -1
  73. package/dist/react/components/InfoHint.d.ts +1 -1
  74. package/dist/react/components/InfoHint.js +1 -1
  75. package/dist/react/components/InheritBadge.js +2 -2
  76. package/dist/react/components/ListToolbar.d.ts +1 -1
  77. package/dist/react/components/ListToolbar.js +1 -1
  78. package/dist/react/components/Menu.d.ts +1 -1
  79. package/dist/react/components/Menu.d.ts.map +1 -1
  80. package/dist/react/components/Modal.js +5 -5
  81. package/dist/react/components/Modal.js.map +1 -1
  82. package/dist/react/components/Page.d.ts +1 -1
  83. package/dist/react/components/Page.js +1 -1
  84. package/dist/react/components/PaneSplit.d.ts +1 -1
  85. package/dist/react/components/PathText.d.ts +1 -1
  86. package/dist/react/components/PathText.js +1 -1
  87. package/dist/react/components/Popover.d.ts +1 -1
  88. package/dist/react/components/PropertyList.d.ts +1 -1
  89. package/dist/react/components/PropertyList.js +1 -1
  90. package/dist/react/components/PropertyPicker.d.ts +2 -2
  91. package/dist/react/components/PropertyPicker.js +2 -2
  92. package/dist/react/components/RatingField.js +1 -1
  93. package/dist/react/components/RatingField.js.map +1 -1
  94. package/dist/react/components/SaveIndicator.d.ts +2 -2
  95. package/dist/react/components/SaveIndicator.js +2 -2
  96. package/dist/react/components/SearchInput.d.ts +1 -1
  97. package/dist/react/components/SearchInput.d.ts.map +1 -1
  98. package/dist/react/components/SecretInput.d.ts +1 -1
  99. package/dist/react/components/Section.d.ts +1 -1
  100. package/dist/react/components/SectionNav.d.ts +3 -3
  101. package/dist/react/components/SectionNav.d.ts.map +1 -1
  102. package/dist/react/components/SectionNav.js +2 -2
  103. package/dist/react/components/Slider.js +1 -1
  104. package/dist/react/components/StarRating.js +1 -1
  105. package/dist/react/components/SwatchPicker.d.ts +6 -6
  106. package/dist/react/components/SwatchPicker.d.ts.map +1 -1
  107. package/dist/react/components/SwatchPicker.js +3 -3
  108. package/dist/react/components/SwatchPicker.js.map +1 -1
  109. package/dist/react/components/Tooltip.js +1 -1
  110. package/dist/react/components/TreeView.js +1 -1
  111. package/dist/react/components/TreeView.js.map +1 -1
  112. package/dist/react/components/TruncatedText.d.ts +1 -1
  113. package/dist/react/components/TruncatedText.js +1 -1
  114. package/dist/react/components/UnstyledButton.d.ts +2 -2
  115. package/dist/react/components/UnstyledButton.js +2 -2
  116. package/dist/react/components/auth/AuthCard.js +1 -1
  117. package/dist/react/components/auth/AuthCard.js.map +1 -1
  118. package/dist/react/components/buildFreshness.css +2 -2
  119. package/dist/react/components/calendar/MonthGrid.js +2 -2
  120. package/dist/react/components/calendar/MonthGrid.js.map +1 -1
  121. package/dist/react/components/calendar/colorUtils.js +2 -2
  122. package/dist/react/components/dialog.js +1 -1
  123. package/dist/react/components/fieldErrorText.d.ts +1 -1
  124. package/dist/react/components/fieldErrorText.js +1 -1
  125. package/dist/react/components/paneSplit.css +1 -1
  126. package/dist/react/components/sharing/ShareEditor.d.ts +5 -1
  127. package/dist/react/components/sharing/ShareEditor.d.ts.map +1 -1
  128. package/dist/react/components/sharing/ShareEditor.js +2 -2
  129. package/dist/react/components/sharing/ShareEditor.js.map +1 -1
  130. package/dist/react/deep-link/links.d.ts +1 -1
  131. package/dist/react/deep-link/resume.js +1 -1
  132. package/dist/react/diff-viewer/DiffViewer.css +1 -1
  133. package/dist/react/file-tree/FileTree.d.ts +9 -9
  134. package/dist/react/file-tree/FileTree.js +13 -13
  135. package/dist/react/file-tree/FileTree.js.map +1 -1
  136. package/dist/react/file-tree/FolderViewMenus.d.ts +3 -3
  137. package/dist/react/file-tree/FolderViewMenus.d.ts.map +1 -1
  138. package/dist/react/file-tree/FolderViewMenus.js +1 -1
  139. package/dist/react/file-tree/FolderViewMenus.js.map +1 -1
  140. package/dist/react/file-tree/fileTree.css +14 -14
  141. package/dist/react/file-tree/fileTreeSelection.d.ts +3 -3
  142. package/dist/react/file-tree/fileTreeSelection.js +4 -4
  143. package/dist/react/file-tree/folderView.d.ts +3 -3
  144. package/dist/react/file-tree/folderView.d.ts.map +1 -1
  145. package/dist/react/file-tree/folderView.js +3 -3
  146. package/dist/react/file-tree/folderView.js.map +1 -1
  147. package/dist/react/filter-rail/FilterRail.d.ts +3 -3
  148. package/dist/react/filter-rail/FilterRail.d.ts.map +1 -1
  149. package/dist/react/filter-rail/FilterRail.js +1 -1
  150. package/dist/react/filter-rail/RailSection.d.ts +1 -1
  151. package/dist/react/filter-rail/railResize.d.ts +1 -1
  152. package/dist/react/filter-rail/railResize.js +1 -1
  153. package/dist/react/folder-tree/FolderBreadcrumb.d.ts +1 -1
  154. package/dist/react/folder-tree/NewFolderControl.js +1 -1
  155. package/dist/react/hooks/keyboardDnd.d.ts +1 -1
  156. package/dist/react/hooks/keyboardDnd.d.ts.map +1 -1
  157. package/dist/react/hooks/keyboardDnd.js +2 -2
  158. package/dist/react/hooks/keyboardDnd.js.map +1 -1
  159. package/dist/react/hooks/pointerDnd.d.ts +2 -2
  160. package/dist/react/hooks/pointerDnd.d.ts.map +1 -1
  161. package/dist/react/hooks/pointerDnd.js +1 -1
  162. package/dist/react/hooks/usePointerDrag.d.ts +2 -2
  163. package/dist/react/icons.d.ts +16 -9
  164. package/dist/react/icons.d.ts.map +1 -1
  165. package/dist/react/icons.js +17 -10
  166. package/dist/react/icons.js.map +1 -1
  167. package/dist/react/layoutEngine/LayoutRenderer.js +1 -1
  168. package/dist/react/layoutEngine/LayoutRenderer.js.map +1 -1
  169. package/dist/react/lib/cn.d.ts +3 -3
  170. package/dist/react/lib/cn.js +4 -4
  171. package/dist/react/lib/field.d.ts +1 -1
  172. package/dist/react/lib/floatingContainer.d.ts +1 -1
  173. package/dist/react/lib/floatingContainer.js +1 -1
  174. package/dist/react/lib/floatingStyles.d.ts +1 -1
  175. package/dist/react/lib/floatingStyles.js +2 -2
  176. package/dist/react/lib/floatingStyles.js.map +1 -1
  177. package/dist/react/lib/hoverIntent.d.ts +6 -6
  178. package/dist/react/lib/hoverIntent.js +6 -6
  179. package/dist/react/lib/infoHint.d.ts +1 -1
  180. package/dist/react/lib/infoHint.js +1 -1
  181. package/dist/react/lib/overlayMotion.d.ts +1 -1
  182. package/dist/react/lib/overlayMotion.d.ts.map +1 -1
  183. package/dist/react/lib/overlayMotion.js +1 -1
  184. package/dist/react/lib/overlayMotion.js.map +1 -1
  185. package/dist/react/lib/press.d.ts +1 -1
  186. package/dist/react/lib/press.js +1 -1
  187. package/dist/react/lib/selectField.d.ts +2 -2
  188. package/dist/react/lib/selectField.d.ts.map +1 -1
  189. package/dist/react/lib/selectField.js +2 -2
  190. package/dist/react/lib/selectField.js.map +1 -1
  191. package/dist/react/look/AppearanceMenu.d.ts +1 -1
  192. package/dist/react/look/AppearanceMenu.js +1 -1
  193. package/dist/react/look/LookPicker.d.ts +3 -3
  194. package/dist/react/look/LookPicker.js +3 -3
  195. package/dist/react/look/lookStore.d.ts +1 -1
  196. package/dist/react/look/lookStore.js +4 -4
  197. package/dist/react/look/lookStore.js.map +1 -1
  198. package/dist/react/master-lock/MasterLockDialog.js +2 -2
  199. package/dist/react/master-lock/MasterLockDialog.js.map +1 -1
  200. package/dist/react/master-lock/MasterLockProvider.d.ts +1 -1
  201. package/dist/react/media/DenseGalleryShell.d.ts +3 -3
  202. package/dist/react/media/FocusViewer.js +3 -3
  203. package/dist/react/media/FocusViewer.js.map +1 -1
  204. package/dist/react/media/FrameGrabber.js +3 -3
  205. package/dist/react/media/FrameGrabber.js.map +1 -1
  206. package/dist/react/media/HoverScrubVideoThumb.d.ts +1 -1
  207. package/dist/react/media/HoverScrubVideoThumb.js +1 -1
  208. package/dist/react/media/HoverScrubVideoThumb.js.map +1 -1
  209. package/dist/react/media/MediaCell.d.ts +1 -1
  210. package/dist/react/media/MediaCell.js +1 -1
  211. package/dist/react/media/MediaResize.d.ts +1 -1
  212. package/dist/react/media/MediaThumb.d.ts +1 -1
  213. package/dist/react/media/PictureControls.d.ts +1 -1
  214. package/dist/react/media/PictureControls.js +2 -2
  215. package/dist/react/media/PictureControls.js.map +1 -1
  216. package/dist/react/media/PictureEditor.js +2 -2
  217. package/dist/react/media/PictureEditor.js.map +1 -1
  218. package/dist/react/media/PlayerStrip.d.ts +4 -4
  219. package/dist/react/media/PlayerStrip.d.ts.map +1 -1
  220. package/dist/react/media/PlayerStrip.js +2 -2
  221. package/dist/react/media/VideoPlayer.d.ts +3 -3
  222. package/dist/react/media/VideoPlayer.js +5 -5
  223. package/dist/react/media/VideoTurner.js +1 -1
  224. package/dist/react/media/VideoTurner.js.map +1 -1
  225. package/dist/react/media/VirtualizedRows.d.ts +1 -1
  226. package/dist/react/media/denseGallery.css +7 -7
  227. package/dist/react/media/focusViewer.css +2 -2
  228. package/dist/react/media/gifEncode.d.ts +4 -4
  229. package/dist/react/media/gifEncode.d.ts.map +1 -1
  230. package/dist/react/media/gifEncode.js +8 -8
  231. package/dist/react/media/gifEncode.js.map +1 -1
  232. package/dist/react/media/gifRecord.js +1 -1
  233. package/dist/react/media/gifRecord.js.map +1 -1
  234. package/dist/react/media/hlsSource.js +2 -2
  235. package/dist/react/media/hlsSource.js.map +1 -1
  236. package/dist/react/media/mediaResize.css +3 -3
  237. package/dist/react/media/pictureEdit.d.ts +1 -1
  238. package/dist/react/media/pictureEdit.js +4 -4
  239. package/dist/react/media/pictureEdit.js.map +1 -1
  240. package/dist/react/media/pictureEditor.css +6 -6
  241. package/dist/react/media/playerSpaceKey.js +3 -3
  242. package/dist/react/media/playerStrip.css +11 -11
  243. package/dist/react/media/posterFraming.d.ts +2 -2
  244. package/dist/react/media/posterFraming.d.ts.map +1 -1
  245. package/dist/react/media/posterFraming.js +4 -4
  246. package/dist/react/media/posterFraming.js.map +1 -1
  247. package/dist/react/media/sourceFault.d.ts +2 -2
  248. package/dist/react/media/sourceFault.js +1 -1
  249. package/dist/react/media/stageResize.d.ts +1 -1
  250. package/dist/react/media/stageResize.js +1 -1
  251. package/dist/react/media/surfaceGesture.d.ts +1 -1
  252. package/dist/react/media/surfaceGesture.js +1 -1
  253. package/dist/react/media/types.d.ts +1 -1
  254. package/dist/react/media/videoChapterEditor.css +1 -1
  255. package/dist/react/media/videoChapters.d.ts +1 -1
  256. package/dist/react/media/videoChapters.js +1 -1
  257. package/dist/react/media/videoCutEditor.css +2 -2
  258. package/dist/react/media/videoEnhance.d.ts +2 -2
  259. package/dist/react/media/videoEnhance.js +2 -2
  260. package/dist/react/media/videoPoster.d.ts +3 -3
  261. package/dist/react/media/videoPoster.d.ts.map +1 -1
  262. package/dist/react/media/videoPoster.js +4 -4
  263. package/dist/react/media/videoPoster.js.map +1 -1
  264. package/dist/react/media/videoRegion.d.ts +8 -8
  265. package/dist/react/media/videoRegion.js +8 -8
  266. package/dist/react/media-gallery/MediaGallery.d.ts +2 -2
  267. package/dist/react/media-gallery/MediaGallery.d.ts.map +1 -1
  268. package/dist/react/media-gallery/MediaGallery.js +17 -17
  269. package/dist/react/media-gallery/MediaGallery.js.map +1 -1
  270. package/dist/react/media-gallery/MediaMetaEditor.js +1 -1
  271. package/dist/react/media-gallery/galleryDeepLink.d.ts +1 -1
  272. package/dist/react/media-gallery/galleryDeepLink.js +2 -2
  273. package/dist/react/media-gallery/galleryItemMedia.d.ts +1 -1
  274. package/dist/react/media-gallery/galleryItemMedia.js +1 -1
  275. package/dist/react/media-gallery/galleryReturn.d.ts +1 -1
  276. package/dist/react/media-gallery/galleryReturn.js +2 -2
  277. package/dist/react/media-gallery/mediaGallery.css +10 -10
  278. package/dist/react/media-gallery/mediaGalleryModel.d.ts +1 -1
  279. package/dist/react/media-gallery/mediaGalleryModel.js +1 -1
  280. package/dist/react/media-gallery/playbackPreferences.d.ts +3 -3
  281. package/dist/react/media-gallery/playbackPreferences.js +2 -2
  282. package/dist/react/media-gallery/playbackRun.d.ts +1 -1
  283. package/dist/react/media-gallery/playbackRun.js +1 -1
  284. package/dist/react/media-gallery/preferenceSync.js +1 -1
  285. package/dist/react/namespace/NamespaceTargetCapsule.d.ts +1 -1
  286. package/dist/react/nav/BreadcrumbTrail.d.ts +1 -1
  287. package/dist/react/nav/BreadcrumbTrail.js +1 -1
  288. package/dist/react/nav/Breadcrumbs.d.ts +1 -1
  289. package/dist/react/nav/Breadcrumbs.js +1 -1
  290. package/dist/react/nav/HeaderSearch.d.ts +3 -3
  291. package/dist/react/nav/HeaderSearch.d.ts.map +1 -1
  292. package/dist/react/nav/HeaderSearch.js +2 -2
  293. package/dist/react/nav/PlaceBar.d.ts +1 -1
  294. package/dist/react/nav/PlaceBar.js +2 -2
  295. package/dist/react/nav/SearchResults.d.ts +2 -2
  296. package/dist/react/nav/SearchResults.d.ts.map +1 -1
  297. package/dist/react/nav/SearchResults.js +1 -1
  298. package/dist/react/nav/TopBar.js +1 -1
  299. package/dist/react/nav/breadcrumbStore.js +1 -1
  300. package/dist/react/nav/navShared.d.ts +1 -1
  301. package/dist/react/palette/CommandPalette.js +1 -1
  302. package/dist/react/palette/CommandPalette.js.map +1 -1
  303. package/dist/react/pdf-viewer/PdfPage.js +1 -1
  304. package/dist/react/pdf-viewer/PdfPage.js.map +1 -1
  305. package/dist/react/spreadsheet/SpreadsheetGrid.d.ts +1 -1
  306. package/dist/react/spreadsheet/useGlideTheme.js +2 -2
  307. package/dist/react/workbook-viewer/WorkbookViewer.js +1 -1
  308. package/dist/react/workbook-viewer/WorkbookViewer.js.map +1 -1
  309. package/dist/styles-areas/notifications.css +1 -1
  310. package/dist/styles-static.css +1 -1
  311. package/dist/styles.css +1 -1
  312. package/dist/testing/designAudit.d.ts +2 -2
  313. package/dist/testing/designAudit.js +3 -3
  314. package/dist/testing/designAudit.js.map +1 -1
  315. package/dist/testing/phoneRules.d.ts +4 -4
  316. package/dist/testing/phoneRules.js +4 -4
  317. package/dist/testing/phoneRules.js.map +1 -1
  318. package/dist/theme.css +10 -10
  319. package/package.json +1 -1
  320. package/scripts/attributesForwarded.ts +1 -1
  321. package/scripts/checkAreaStyles.ts +2 -2
  322. package/scripts/cssRules.ts +2 -2
  323. package/scripts/demoCoverage.ts +1 -1
  324. package/scripts/demoServer.ts +1 -1
  325. package/scripts/generateStaticStyles.ts +1 -1
  326. package/scripts/guardrailsEnforce.spec.ts +14 -14
  327. package/scripts/guardrailsEnforce.ts +25 -25
  328. package/scripts/paths.ts +1 -1
  329. package/scripts/styleAreas.ts +2 -2
  330. package/scripts/testTmpRoot.ts +1 -1
  331. package/src/buildIsStaged.spec.ts +1 -1
  332. package/src/iframesMakeNoRealRequest.spec.ts +1 -1
  333. package/src/looks.css +4 -4
  334. package/src/looks.spec.ts +3 -3
  335. package/src/namedSubpathsResolve.spec.ts +2 -2
  336. package/src/publishShape.spec.ts +1 -1
  337. package/src/react/Toast.spec.tsx +1 -1
  338. package/src/react/Toast.tsx +2 -2
  339. package/src/react/VirtualCardGrid.spec.tsx +1 -1
  340. package/src/react/VirtualCardGrid.tsx +3 -3
  341. package/src/react/activity-bar/ActivityBar.spec.tsx +2 -2
  342. package/src/react/activity-bar/ActivityBar.tsx +4 -4
  343. package/src/react/activity-bar/activityBar.css +4 -4
  344. package/src/react/analytics/AnalyticsPanel.tsx +1 -1
  345. package/src/react/canvas-hud/CanvasMinimap.tsx +1 -1
  346. package/src/react/canvas-hud/HudControls.spec.tsx +1 -1
  347. package/src/react/canvas-hud/HudControls.tsx +2 -2
  348. package/src/react/canvas-hud/alignment.spec.tsx +4 -4
  349. package/src/react/canvas-hud/alignment.ts +3 -3
  350. package/src/react/canvas-hud/viewport.spec.ts +1 -1
  351. package/src/react/canvas-hud/viewport.ts +1 -1
  352. package/src/react/charts/BarChart.tsx +2 -2
  353. package/src/react/charts/HeatmapChart.spec.ts +1 -1
  354. package/src/react/charts/HeatmapChart.tsx +1 -1
  355. package/src/react/charts/IntervalTimeline.color.spec.tsx +6 -6
  356. package/src/react/charts/IntervalTimeline.tsx +2 -2
  357. package/src/react/charts/Treemap.tsx +1 -1
  358. package/src/react/charts/accentCollision.spec.ts +1 -1
  359. package/src/react/charts/categorical.spec.ts +3 -3
  360. package/src/react/charts/categorical.ts +12 -12
  361. package/src/react/charts/ink.spec.ts +1 -1
  362. package/src/react/charts/ink.ts +5 -5
  363. package/src/react/charts/tokens.ts +1 -1
  364. package/src/react/chat/Bubble.tsx +1 -1
  365. package/src/react/chat/DateMarker.tsx +2 -2
  366. package/src/react/chat/MessageComposer.tsx +1 -1
  367. package/src/react/chat/PresenceRoster.tsx +2 -2
  368. package/src/react/chat/types.ts +1 -1
  369. package/src/react/chat/usePresence.ts +2 -2
  370. package/src/react/code-editor/markdownRules.ts +1 -1
  371. package/src/react/components/AvatarStack.spec.tsx +2 -2
  372. package/src/react/components/AvatarStack.tsx +2 -2
  373. package/src/react/components/Badge.capsule.spec.ts +6 -6
  374. package/src/react/components/Badge.tsx +1 -1
  375. package/src/react/components/Button.spec.tsx +1 -1
  376. package/src/react/components/Button.tsx +5 -5
  377. package/src/react/components/ChartTablePanel.tsx +1 -1
  378. package/src/react/components/Checkbox.spec.tsx +2 -2
  379. package/src/react/components/Checkbox.tsx +2 -2
  380. package/src/react/components/ChoiceGroup.tsx +1 -1
  381. package/src/react/components/CodeChip.spec.tsx +1 -1
  382. package/src/react/components/CodeChip.tsx +1 -1
  383. package/src/react/components/ColorSwatches.spec.tsx +9 -9
  384. package/src/react/components/ColorSwatches.tsx +16 -16
  385. package/src/react/components/CommentThread.tsx +1 -1
  386. package/src/react/components/ConnectionHealer.tsx +1 -1
  387. package/src/react/components/DataTable/DataTable.spec.tsx +2 -2
  388. package/src/react/components/DataTable/DataTable.tsx +10 -10
  389. package/src/react/components/DataTable/SearchBox.tsx +2 -2
  390. package/src/react/components/DataTable/SortHeader.tsx +1 -1
  391. package/src/react/components/DataTable/TableFilterBuilder.tsx +1 -1
  392. package/src/react/components/DataTable/selection.spec.tsx +1 -1
  393. package/src/react/components/DataTable/virtualize.spec.tsx +1 -1
  394. package/src/react/components/DropdownMenu.tsx +1 -1
  395. package/src/react/components/Field.tsx +1 -1
  396. package/src/react/components/FormPreviewLayout.tsx +1 -1
  397. package/src/react/components/Heat.spec.tsx +1 -1
  398. package/src/react/components/Heat.tsx +6 -6
  399. package/src/react/components/IconPicker.spec.tsx +1 -1
  400. package/src/react/components/IconPicker.tsx +9 -9
  401. package/src/react/components/InfoHint.spec.tsx +2 -2
  402. package/src/react/components/InfoHint.tsx +1 -1
  403. package/src/react/components/InheritBadge.tsx +2 -2
  404. package/src/react/components/IsolatedFrame.tsx +1 -1
  405. package/src/react/components/ListToolbar.tsx +1 -1
  406. package/src/react/components/Menu.tsx +1 -1
  407. package/src/react/components/Modal.tsx +5 -5
  408. package/src/react/components/Page.spec.tsx +1 -1
  409. package/src/react/components/Page.tsx +2 -2
  410. package/src/react/components/PaneSplit.tsx +1 -1
  411. package/src/react/components/PathText.tsx +1 -1
  412. package/src/react/components/PointerDrag.spec.tsx +1 -1
  413. package/src/react/components/Popover.spec.tsx +2 -2
  414. package/src/react/components/Popover.tsx +1 -1
  415. package/src/react/components/PropertyList.tsx +1 -1
  416. package/src/react/components/PropertyPicker.tsx +2 -2
  417. package/src/react/components/RatingField.tsx +1 -1
  418. package/src/react/components/SaveIndicator.tsx +2 -2
  419. package/src/react/components/SearchInput.tsx +1 -1
  420. package/src/react/components/SecretInput.tsx +1 -1
  421. package/src/react/components/Section.tsx +1 -1
  422. package/src/react/components/SectionNav.spec.tsx +3 -3
  423. package/src/react/components/SectionNav.tsx +3 -3
  424. package/src/react/components/SelectField.spec.tsx +1 -1
  425. package/src/react/components/Slider.tsx +1 -1
  426. package/src/react/components/StarRating.spec.tsx +4 -4
  427. package/src/react/components/StarRating.tsx +3 -3
  428. package/src/react/components/SwatchPicker.spec.tsx +4 -4
  429. package/src/react/components/SwatchPicker.tsx +9 -9
  430. package/src/react/components/Tooltip.spec.tsx +3 -3
  431. package/src/react/components/Tooltip.tsx +1 -1
  432. package/src/react/components/TreeView.tsx +1 -1
  433. package/src/react/components/TruncatedText.tsx +1 -1
  434. package/src/react/components/UnstyledButton.tsx +2 -2
  435. package/src/react/components/auth/AuthCard.tsx +1 -1
  436. package/src/react/components/buildFreshness.css +2 -2
  437. package/src/react/components/calendar/EventChip.spec.tsx +2 -2
  438. package/src/react/components/calendar/MonthGrid.tsx +2 -2
  439. package/src/react/components/calendar/colorUtils.ts +2 -2
  440. package/src/react/components/dialog.tsx +1 -1
  441. package/src/react/components/fieldErrorText.tsx +1 -1
  442. package/src/react/components/paneSplit.css +1 -1
  443. package/src/react/components/sharing/ShareEditor.spec.tsx +15 -0
  444. package/src/react/components/sharing/ShareEditor.tsx +14 -3
  445. package/src/react/deep-link/links.spec.ts +1 -1
  446. package/src/react/deep-link/links.ts +1 -1
  447. package/src/react/deep-link/resume.spec.tsx +1 -1
  448. package/src/react/deep-link/resume.ts +1 -1
  449. package/src/react/diff-viewer/DiffViewer.css +1 -1
  450. package/src/react/file-tree/FileTree.spec.tsx +13 -13
  451. package/src/react/file-tree/FileTree.tsx +22 -22
  452. package/src/react/file-tree/FolderViewMenus.tsx +3 -3
  453. package/src/react/file-tree/FolderViewPanels.tsx +1 -1
  454. package/src/react/file-tree/fileTree.css +14 -14
  455. package/src/react/file-tree/fileTreeGeometry.spec.ts +5 -5
  456. package/src/react/file-tree/fileTreeSelection.ts +4 -4
  457. package/src/react/file-tree/folderView.spec.ts +1 -1
  458. package/src/react/file-tree/folderView.ts +3 -3
  459. package/src/react/filter-rail/FilterRail.spec.tsx +1 -1
  460. package/src/react/filter-rail/FilterRail.tsx +4 -4
  461. package/src/react/filter-rail/RailSection.spec.tsx +2 -2
  462. package/src/react/filter-rail/RailSection.tsx +1 -1
  463. package/src/react/filter-rail/railResize.tsx +1 -1
  464. package/src/react/folder-tree/FolderBreadcrumb.tsx +1 -1
  465. package/src/react/folder-tree/NewFolderControl.tsx +1 -1
  466. package/src/react/hooks/keyboardDnd.spec.tsx +1 -1
  467. package/src/react/hooks/keyboardDnd.tsx +2 -2
  468. package/src/react/hooks/pointerDnd.spec.ts +3 -3
  469. package/src/react/hooks/pointerDnd.ts +2 -2
  470. package/src/react/hooks/useOutsidePress.spec.tsx +1 -1
  471. package/src/react/hooks/usePointerDrag.ts +2 -2
  472. package/src/react/icons.tsx +18 -11
  473. package/src/react/keep-awake/keepAwakeEngine.spec.ts +1 -1
  474. package/src/react/layoutEngine/LayoutConfigDialog.tsx +1 -1
  475. package/src/react/layoutEngine/LayoutRenderer.tsx +1 -1
  476. package/src/react/layoutEngine/gridClasses.spec.ts +3 -3
  477. package/src/react/lib/cn.spec.ts +1 -1
  478. package/src/react/lib/cn.ts +4 -4
  479. package/src/react/lib/directUpload.spec.ts +1 -1
  480. package/src/react/lib/field.ts +1 -1
  481. package/src/react/lib/floatingContainer.ts +1 -1
  482. package/src/react/lib/floatingStyles.spec.ts +1 -1
  483. package/src/react/lib/floatingStyles.ts +2 -2
  484. package/src/react/lib/hoverIntent.ts +6 -6
  485. package/src/react/lib/infoHint.ts +1 -1
  486. package/src/react/lib/overlayMotion.ts +1 -1
  487. package/src/react/lib/press.ts +1 -1
  488. package/src/react/lib/selectField.ts +2 -2
  489. package/src/react/lib/zodResolver.ts +1 -1
  490. package/src/react/look/AppearanceMenu.tsx +1 -1
  491. package/src/react/look/LookPicker.tsx +3 -3
  492. package/src/react/look/lookStore.ts +4 -4
  493. package/src/react/markdown/MarkdownDoc.spec.tsx +1 -1
  494. package/src/react/master-detail/MasterDetail.tsx +1 -1
  495. package/src/react/master-lock/MasterLockDialog.tsx +2 -2
  496. package/src/react/master-lock/MasterLockProvider.spec.tsx +1 -1
  497. package/src/react/master-lock/MasterLockProvider.tsx +1 -1
  498. package/src/react/media/DenseGalleryShell.tsx +3 -3
  499. package/src/react/media/FocusViewer.tsx +3 -3
  500. package/src/react/media/FrameGrabber.spec.tsx +2 -2
  501. package/src/react/media/FrameGrabber.tsx +3 -3
  502. package/src/react/media/HoverScrubVideoThumb.tsx +3 -3
  503. package/src/react/media/MediaCell.tsx +1 -1
  504. package/src/react/media/MediaResize.spec.tsx +4 -4
  505. package/src/react/media/MediaResize.tsx +1 -1
  506. package/src/react/media/MediaThumb.tsx +1 -1
  507. package/src/react/media/PictureControls.tsx +2 -2
  508. package/src/react/media/PictureEditor.tsx +2 -2
  509. package/src/react/media/PlayerStrip.tsx +9 -9
  510. package/src/react/media/VideoChapterEditor.tsx +1 -1
  511. package/src/react/media/VideoCutEditor.spec.tsx +1 -1
  512. package/src/react/media/VideoCutEditor.tsx +1 -1
  513. package/src/react/media/VideoPlayer.spec.tsx +7 -7
  514. package/src/react/media/VideoPlayer.tsx +6 -6
  515. package/src/react/media/VideoTurner.tsx +1 -1
  516. package/src/react/media/VirtualizedRows.tsx +1 -1
  517. package/src/react/media/denseGallery.css +7 -7
  518. package/src/react/media/focusViewer.css +2 -2
  519. package/src/react/media/focusViewer.css.spec.ts +1 -1
  520. package/src/react/media/gifEncode.spec.ts +2 -2
  521. package/src/react/media/gifEncode.ts +9 -9
  522. package/src/react/media/gifRecord.ts +1 -1
  523. package/src/react/media/hlsSource.recovery.spec.ts +2 -2
  524. package/src/react/media/hlsSource.spec.ts +1 -1
  525. package/src/react/media/hlsSource.ts +2 -2
  526. package/src/react/media/mediaResize.css +3 -3
  527. package/src/react/media/pictureEdit.spec.ts +5 -5
  528. package/src/react/media/pictureEdit.ts +4 -4
  529. package/src/react/media/pictureEditor.css +6 -6
  530. package/src/react/media/playerSpaceKey.ts +3 -3
  531. package/src/react/media/playerStrip.css +11 -11
  532. package/src/react/media/playerStrip.spec.tsx +17 -13
  533. package/src/react/media/posterFraming.spec.ts +4 -4
  534. package/src/react/media/posterFraming.ts +5 -5
  535. package/src/react/media/sourceFault.tsx +2 -2
  536. package/src/react/media/stageResize.ts +1 -1
  537. package/src/react/media/surfaceGesture.ts +1 -1
  538. package/src/react/media/types.ts +1 -1
  539. package/src/react/media/videoChapterEditor.css +1 -1
  540. package/src/react/media/videoChapters.spec.ts +1 -1
  541. package/src/react/media/videoChapters.ts +1 -1
  542. package/src/react/media/videoCutEditor.css +2 -2
  543. package/src/react/media/videoEnhance.spec.ts +1 -1
  544. package/src/react/media/videoEnhance.ts +2 -2
  545. package/src/react/media/videoPoster.spec.ts +3 -3
  546. package/src/react/media/videoPoster.ts +5 -5
  547. package/src/react/media/videoRegion.spec.ts +7 -7
  548. package/src/react/media/videoRegion.ts +8 -8
  549. package/src/react/media-gallery/GalleryTable.tsx +1 -1
  550. package/src/react/media-gallery/MediaGallery.spec.tsx +11 -11
  551. package/src/react/media-gallery/MediaGallery.tsx +23 -23
  552. package/src/react/media-gallery/MediaMetaEditor.tsx +1 -1
  553. package/src/react/media-gallery/galleryDeepLink.ts +2 -2
  554. package/src/react/media-gallery/galleryItemMedia.spec.tsx +1 -1
  555. package/src/react/media-gallery/galleryItemMedia.tsx +1 -1
  556. package/src/react/media-gallery/galleryReturn.ts +2 -2
  557. package/src/react/media-gallery/mediaGallery.css +10 -10
  558. package/src/react/media-gallery/mediaGalleryModel.ts +1 -1
  559. package/src/react/media-gallery/playbackPreferences.ts +3 -3
  560. package/src/react/media-gallery/playbackRun.spec.ts +1 -1
  561. package/src/react/media-gallery/playbackRun.ts +1 -1
  562. package/src/react/media-gallery/preferenceSync.ts +1 -1
  563. package/src/react/namespace/NamespaceTargetCapsule.tsx +1 -1
  564. package/src/react/nav/BreadcrumbTrail.tsx +1 -1
  565. package/src/react/nav/Breadcrumbs.tsx +1 -1
  566. package/src/react/nav/HeaderSearch.tsx +3 -3
  567. package/src/react/nav/PlaceBar.spec.tsx +4 -4
  568. package/src/react/nav/PlaceBar.tsx +4 -4
  569. package/src/react/nav/SearchResults.tsx +2 -2
  570. package/src/react/nav/TopBar.spec.tsx +1 -1
  571. package/src/react/nav/TopBar.tsx +1 -1
  572. package/src/react/nav/breadcrumbStore.ts +1 -1
  573. package/src/react/nav/breadcrumbSystem.spec.tsx +1 -1
  574. package/src/react/nav/navShared.tsx +1 -1
  575. package/src/react/palette/CommandPalette.spec.tsx +1 -1
  576. package/src/react/palette/CommandPalette.tsx +1 -1
  577. package/src/react/pdf-viewer/PdfPage.tsx +1 -1
  578. package/src/react/spreadsheet/SpreadsheetGrid.tsx +1 -1
  579. package/src/react/spreadsheet/useGlideTheme.ts +2 -2
  580. package/src/react/workbook-viewer/WorkbookViewer.tsx +1 -1
  581. package/src/shippedFilesAreTracked.spec.ts +2 -2
  582. package/src/styles-areas/notifications.css +1 -1
  583. package/src/styles-static.css +1 -1
  584. package/src/styles.css +1 -1
  585. package/src/stylesAreas.spec.ts +1 -1
  586. package/src/stylesStaticMatches.spec.ts +2 -2
  587. package/src/stylesUtilitiesMatches.spec.ts +4 -4
  588. package/src/testing/designAudit.ts +4 -4
  589. package/src/testing/phoneRules.spec.ts +1 -1
  590. package/src/testing/phoneRules.ts +7 -7
  591. package/src/theme.css +10 -10
  592. package/src/themeColorsResolve.spec.ts +5 -5
  593. package/src/themeDarkScopeAliases.spec.ts +1 -1
  594. package/src/verifyGraph.spec.ts +1 -1
@@ -258,7 +258,7 @@ export interface DynamicIconProps {
258
258
  *
259
259
  * 🔴 Omitted, it is `defaultIconMap` — NOT "nothing registered". Until 5.15.1 a missing
260
260
  * `iconMap` resolved every token to the letter fallback, so vault's header, which renders
261
- * `<DynamicIcon token="unlock" />` and its neighbours with no map, painted the letters
261
+ * `<DynamicIcon token="unlock" />` and its neighbors with no map, painted the letters
262
262
  * "U W S" where its lock, generator and settings icons belonged, on every screen, from the
263
263
  * day it adopted the component. A registry that was never passed is not a registry that was
264
264
  * cleared; only an explicit map may leave a token unresolved.
@@ -503,7 +503,7 @@ export const IconCheck = handDrawnIcon(() => <path d="m5 13 4 4L19 7" />);
503
503
  * A pin, as a drawing pin seen from the side — the shape every application
504
504
  * uses for "keep this where I can reach it".
505
505
  *
506
- * Two of them, filled and struck through, rather than one that changes colour:
506
+ * Two of them, filled and struck through, rather than one that changes color:
507
507
  * a control whose only state signal is a tint is one nobody can read at a
508
508
  * glance in either theme, and the pinned/unpinned pair is the state somebody
509
509
  * checks fastest of anything in this sidebar.
@@ -535,7 +535,7 @@ export const IconMusic = handDrawnIcon(() => <><path d="M9 18V6l11-2v12" /><circ
535
535
  * three of those, and at 13px a fourth would be a shape nobody can separate
536
536
  * from the other three while scrolling. A timeline is the one thing a
537
537
  * `.context` file is that no other document in this app is, so that is what the
538
- * mark draws. See `fileKinds.tsx` on why colour is never the only cue.
538
+ * mark draws. See `fileKinds.tsx` on why color is never the only cue.
539
539
  */
540
540
  /** A list — three lines, the first two ticked. The `.list` note's mark. */
541
541
  export const IconChecklist = handDrawnIcon(() => <><path d="m3 6.5 1.6 1.6L7.6 5" /><path d="m3 13 1.6 1.6L7.6 11.5" /><path d="M11 6.5h10" /><path d="M11 13h10" /><path d="M11 19h7" /><circle cx="5" cy="19" r="1.2" fill="currentColor" stroke="none" /></>);
@@ -603,6 +603,13 @@ export const IconCode = handDrawnIcon(() => <><path d="m9 8-5 4 5 4" /><path d="
603
603
  */
604
604
  export const IconSplitRow = handDrawnIcon(() => <><rect x="3" y="4" width="18" height="16" rx="2" /><path d="M12 4v16" /></>);
605
605
  export const IconSplitColumn = handDrawnIcon(() => <><rect x="3" y="4" width="18" height="16" rx="2" /><path d="M3 12h18" /></>);
606
+ /**
607
+ * A spreadsheet's Merge Cells and Unmerge Cells (forge task 3569), Lucide's `table-cells-merge`
608
+ * and `table-cells-split`: a three-row table whose middle row has lost its divider, and one whose
609
+ * middle row has it back.
610
+ */
611
+ export const IconMergeCells = handDrawnIcon(() => <><rect x="3" y="3" width="18" height="18" rx="2" /><path d="M3 9h18" /><path d="M3 15h18" /><path d="M12 3v6" /><path d="M12 15v6" /></>);
612
+ export const IconUnmergeCells = handDrawnIcon(() => <><rect x="3" y="3" width="18" height="18" rx="2" /><path d="M3 9h18" /><path d="M3 15h18" /><path d="M12 9v6" /></>);
606
613
  /** A pane closing: the frame, with the corner taken out of it. */
607
614
  export const IconPaneClose = handDrawnIcon(() => <><rect x="3" y="4" width="18" height="16" rx="2" /><path d="m9.5 10.5 5 5" /><path d="m14.5 10.5-5 5" /></>);
608
615
  /**
@@ -623,9 +630,9 @@ export const IconCamera = handDrawnIcon(() => <><path d="M4 8h3l1.5-2h7L17 8h3a1
623
630
 
624
631
  // ── Formatting ──────────────────────────────────────────────────────────────
625
632
  //
626
- // Drawn rather than lettered, with two exceptions: bold and font colour are a
633
+ // Drawn rather than lettered, with two exceptions: bold and font color are a
627
634
  // glyph everywhere a spreadsheet has ever existed, and a pictogram of them
628
- // would be less recognisable than the letter itself.
635
+ // would be less recognizable than the letter itself.
629
636
 
630
637
  export const IconBold = handDrawnIcon(() => <><path d="M7 5h6a3.5 3.5 0 0 1 0 7H7Z" /><path d="M7 12h7a3.5 3.5 0 0 1 0 7H7Z" /></>);
631
638
  /** A slanted stroke between two serifs — the letter, for the same reason. */
@@ -638,15 +645,15 @@ export const IconStrikethrough = handDrawnIcon(() => <><path d="M16 4H9a3 3 0 0
638
645
  * The three alignments, drawn as four lines of text with a ragged edge.
639
646
  *
640
647
  * Left and right rag on one side and stay flush on the other, so the flush
641
- * edge is the meaning. Centre has no flush edge, which leaves only the
648
+ * edge is the meaning. Center has no flush edge, which leaves only the
642
649
  * *contrast* between long and short lines to say "ragged on both sides" — and
643
650
  * that is why it alternates one full line with one short one instead of
644
- * cascading like its neighbours. A cascade centred (16, 10, 14, 8 units) puts
651
+ * cascading like its neighbors. A cascade centered (16, 10, 14, 8 units) puts
645
652
  * two nearly equal long lines on top of each other: at the 14px this renders
646
653
  * at, two units is under a pixel, so the icon read as a solid block and told
647
654
  * the user nothing. Every ribbon that has ever shipped alternates here.
648
655
  *
649
- * The lines span y 4.5–19.5 rather than 6–21, which centres them in the 24-box
656
+ * The lines span y 4.5–19.5 rather than 6–21, which centers them in the 24-box
650
657
  * the rest of the set uses; before, these three sat visibly low in their
651
658
  * buttons next to bold and italic.
652
659
  */
@@ -703,14 +710,14 @@ export const IconBorderRight = borderIcon(() => <path d="M20 4v16" />);
703
710
  /** Nothing over the ghost — the eraser, and the only preset that removes. */
704
711
  export const IconBorderNone = borderIcon(() => null);
705
712
 
706
- /** The paint bucket — a fill, which is what Excel calls a cell colour. */
713
+ /** The paint bucket — a fill, which is what Excel calls a cell color. */
707
714
  /* The rich text toolbar's own marks (file `36`) — a table, the two indents and
708
715
  a horizontal rule, drawn at the same 24-unit scale as everything above. */
709
716
  export const IconIndent = handDrawnIcon(() => <><path d="M4 5h16" /><path d="M10 10h10" /><path d="M10 15h10" /><path d="M4 20h16" /><path d="m4 9.5 3 2.5-3 2.5Z" fill="currentColor" /></>);
710
717
  export const IconOutdent = handDrawnIcon(() => <><path d="M4 5h16" /><path d="M10 10h10" /><path d="M10 15h10" /><path d="M4 20h16" /><path d="m7 9.5-3 2.5 3 2.5Z" fill="currentColor" /></>);
711
718
  export const IconRule = handDrawnIcon(() => <><path d="M4 12h16" /><path d="M6 6.5h12" opacity="0.35" /><path d="M6 17.5h12" opacity="0.35" /></>);
712
719
  export const IconFill = handDrawnIcon(() => <><path d="m5 12 7-7 7 7-7 7z" /><path d="M5 12h14" /><path d="M19.5 16.5c0 1-.7 1.8-1.5 1.8s-1.5-.8-1.5-1.8c0-.9 1.5-2.8 1.5-2.8s1.5 1.9 1.5 2.8Z" /></>);
713
- /** A letter with a bar under it — Excel's font colour, drawn the same way. */
720
+ /** A letter with a bar under it — Excel's font color, drawn the same way. */
714
721
  export const IconFontColor = handDrawnIcon(() => <><path d="m6 16 5-11 5 11" /><path d="M7.8 12.5h6.4" /><path d="M4 20h16" /></>);
715
722
  /* A number wearing a decimal point — the Format menu, in one glyph. */
716
723
  export const IconNumberFormat = handDrawnIcon(() => <><path d="M4 8h2v9" /><path d="M9.5 8.5a2 2 0 1 1 3 1.7L9.5 17h5" /><circle cx="17.5" cy="16" r="1.2" fill="currentColor" stroke="none" /><path d="M20 8v9" /></>);
@@ -730,7 +737,7 @@ export const IconFreeze = handDrawnIcon(() => <><rect x="3" y="3" width="18" hei
730
737
  *
731
738
  * Nobody under thirty has held one and every application on this machine draws
732
739
  * save as this shape anyway, which is the whole argument: an icon's job is to be
733
- * recognised, and a more *honest* mark — a downward arrow, a hard drive — is one
740
+ * recognized, and a more *honest* mark — a downward arrow, a hard drive — is one
734
741
  * people would have to learn. It arrives with the owner's explicit save.
735
742
  */
736
743
  /**
@@ -62,7 +62,7 @@ afterEach(() => {
62
62
  describe('createKeepAwakeEngine', () => {
63
63
  /**
64
64
  * 🔴 The `data-keep-awake` stamp, and this is the only case in the file whose subject is
65
- * OBSERVABILITY rather than behaviour.
65
+ * OBSERVABILITY rather than behavior.
66
66
  *
67
67
  * Everything else about this component is invisible: it renders nothing, a
68
68
  * `WakeLockSentinel` is not a node, and the fallback element is equally present playing or
@@ -178,7 +178,7 @@ export function LayoutConfigDialog<F extends LayoutField = LayoutField>({
178
178
  <div className='flex shrink-0 items-center justify-between gap-3 border-b border-border px-5 py-3'>
179
179
  <DialogTitle className='text-lg font-semibold'>{title}</DialogTitle>
180
180
  {/* Undo, redo and close are one row of `sm` glyph squares, as in Figma's and Notion's
181
- editors: as labelled buttons they took 200px of a 390px header and broke the title
181
+ editors: as labeled buttons they took 200px of a 390px header and broke the title
182
182
  over two lines, and the 28px close sat beside 32px buttons (FND-4, forge task 2594). */}
183
183
  <div className='flex shrink-0 items-center gap-1'>
184
184
  <IconButton size='sm' label='Undo' tooltip='Undo the last change' disabled={!editor.canUndo} onClick={editor.undo}>
@@ -51,7 +51,7 @@ type RenderCtx<F extends LayoutField> = {
51
51
  // @lg:col-span-11 @lg:row-span-2 @lg:row-span-3
52
52
  // And every class the style maps (`nodeBoxClass`/`nodeTextClass`) can return — the tones ride the
53
53
  // theme's `--tone-<hue>-*` roles since cwip 4.11.1; as raw palette classes no toned block was ever
54
- // coloured (forge task 2661). The same spec derives these from the maps.
54
+ // colored (forge task 2661). The same spec derives these from the maps.
55
55
  // bg-card bg-muted bg-muted/40 bg-muted/60 bg-tone-amber-bg bg-tone-amber-bg/50 bg-tone-cyan-bg
56
56
  // bg-tone-cyan-bg/50 bg-tone-emerald-bg bg-tone-emerald-bg/50 bg-tone-purple-bg
57
57
  // bg-tone-purple-bg/50 bg-tone-rose-bg bg-tone-rose-bg/50 bg-tone-sky-bg bg-tone-sky-bg/50
@@ -40,7 +40,7 @@ const STYLE_VALUES: { [K in keyof NodeStyle]-?: (NodeStyle[K] | undefined)[] } =
40
40
  };
41
41
 
42
42
  /**
43
- * Every class the style maps (`nodeBoxClass`/`nodeTextClass`) can return: tone × fill × text colour
43
+ * Every class the style maps (`nodeBoxClass`/`nodeTextClass`) can return: tone × fill × text color
44
44
  * together (the tone's text role depends on the fill), and each other key on its own.
45
45
  */
46
46
  function everyStyleClass(): string[] {
@@ -67,9 +67,9 @@ describe('layout engine grid classes ship in the stylesheet', () => {
67
67
  expect(everyGridClass().filter((cls) => !selector(cls).test(css))).toEqual([]);
68
68
  });
69
69
 
70
- test('styles-utilities.css has a rule for every style class too — a toned block is coloured', () => {
70
+ test('styles-utilities.css has a rule for every style class too — a toned block is colored', () => {
71
71
  const css = readFileSync(join(SRC, 'styles-utilities.css'), 'utf8');
72
- // A raw Tailwind palette tone (emerald fifty) had no rule, so every toned block drew uncoloured (forge task 2661).
72
+ // A raw Tailwind palette tone (emerald fifty) had no rule, so every toned block drew uncolored (forge task 2661).
73
73
  expect(everyStyleClass().filter((cls) => !selector(cls).test(css))).toEqual([]);
74
74
  });
75
75
 
@@ -19,7 +19,7 @@ describe('cn', () => {
19
19
  expect(cn()).toBe('');
20
20
  expect(cn(false, null, undefined)).toBe('');
21
21
  });
22
- test('🔴 a named type step survives a colour after it — the scale is font-size, not colour (task 2460)', () => {
22
+ test('🔴 a named type step survives a color after it — the scale is font-size, not color (task 2460)', () => {
23
23
  expect(cn('text-caption', 'text-muted-foreground')).toBe('text-caption text-muted-foreground');
24
24
  expect(cn('text-data text-foreground')).toBe('text-data text-foreground');
25
25
  // …and still conflicts with a size, last wins.
@@ -3,7 +3,7 @@ import { extendTailwindMerge } from 'tailwind-merge';
3
3
 
4
4
  /**
5
5
  * The type scale's named steps (`theme.css` → `--text-*`). tailwind-merge knows only Tailwind's
6
- * own sizes, so it read `text-caption` as a COLOUR and dropped it the moment a real colour
6
+ * own sizes, so it read `text-caption` as a COLOR and dropped it the moment a real color
7
7
  * followed — `cn('text-caption', 'text-muted-foreground')` was `'text-muted-foreground'`, and
8
8
  * every DataTable header rendered at the inherited 14px instead of its 12px caption step. The
9
9
  * design audit found it (forge task 2460); `cn.spec.ts` pins it.
@@ -29,16 +29,16 @@ export function cn(...inputs: ClassValue[]): string {
29
29
 
30
30
  /**
31
31
  * What Tailwind's preflight gives every `<button>`, stated on the button itself: no margin, no
32
- * border, no fill, no padding, and the host's font and colour.
32
+ * border, no fill, no padding, and the host's font and color.
33
33
  *
34
34
  * A host may load the belt's utilities WITHOUT preflight (desk compiles only theme + utilities
35
35
  * under `.cs-root`). There a raw `<button>` that does not reset itself draws the browser's own
36
- * control — a grey filled, outset-bordered box in system-ui 13.33px, black text in dark mode.
36
+ * control — a gray filled, outset-bordered box in system-ui 13.33px, black text in dark mode.
37
37
  * desk's folder list showed it on every sortable header and on the search-scope trigger, and its
38
38
  * filter chips wore an outset border (forge task 2749; 2748, 2752 and 2757 fixed the same thing
39
39
  * one component at a time).
40
40
  *
41
- * Put it FIRST in `cn(…)`, so the button's own padding, border, fill and colour win the merge.
41
+ * Put it FIRST in `cn(…)`, so the button's own padding, border, fill and color win the merge.
42
42
  * The `raw-button-resets-face` guardrail counts the belt's raw buttons that carry neither this
43
43
  * nor `font-[inherit]`, and its baseline only falls.
44
44
  *
@@ -2,7 +2,7 @@
2
2
  * `cursedbelt/react/upload-direct` — the browser half of a resumable upload to binary-server.
3
3
  *
4
4
  * Neither app that carried this module (collections, family) had a test of it, so these pin the
5
- * behaviours a 10 GB upload depends on, against a scripted `fetch`: resume skips delivered parts,
5
+ * behaviors a 10 GB upload depends on, against a scripted `fetch`: resume skips delivered parts,
6
6
  * parts are PUT with their bytes, a 403 re-mints the token, a 507 is terminal and never retried, a
7
7
  * dropped part is retried, low disk only WARNS, and a lost final response is recovered by asking.
8
8
  */
@@ -87,7 +87,7 @@ export function fieldControlClass(size: ControlSize = 'md'): string {
87
87
  *
88
88
  * | width | cap | for |
89
89
  * |---|---|---|
90
- * | `xs` | 10rem | a number, a colour, a short code |
90
+ * | `xs` | 10rem | a number, a color, a short code |
91
91
  * | `sm` | 20rem | a date, a time, a short choice |
92
92
  * | `md` | 28rem | a name, a title, a single-line choice — the default for one-line controls |
93
93
  * | `lg` | 32rem | a URL, an email, a longer one-line value |
@@ -38,7 +38,7 @@ const AppContainer = createContext<Element | null>(null);
38
38
  *
39
39
  * For an app whose design tokens are scoped to its own root rather than `:root` — desk
40
40
  * keeps every `--cs-*` variable on `.cs-root`, so a panel portalled to `body` draws with
41
- * no colours, no radius and no z-index. It also keeps a panel OUT of whatever opened it:
41
+ * no colors, no radius and no z-index. It also keeps a panel OUT of whatever opened it:
42
42
  * rendering in place (`portal={false}`) made a focused field inside the panel scroll the
43
43
  * grid it was a descendant of (desk, file `77`). A full-screen element still wins, for
44
44
  * the reason {@link fullscreenElement} gives. `null` (the host not mounted yet) means
@@ -61,7 +61,7 @@ describe('the floating layer — DESIGN.md §5 containment', () => {
61
61
  });
62
62
 
63
63
  test('a menu row clears 44px on a touch pointer', () => {
64
- // A mis-tap in a MENU costs the most: the neighbouring row is a different action.
64
+ // A mis-tap in a MENU costs the most: the neighboring row is a different action.
65
65
  expect(FLOATING_ITEM_BASE).toContain(TAP_TARGET_HEIGHT);
66
66
  });
67
67
  });
@@ -51,14 +51,14 @@ export const FLOATING_CONTENT_BASE =
51
51
  * Base row for a selectable/actionable item inside a floating panel.
52
52
  *
53
53
  * It does NOT take the press dip (`lib/press.ts`) on purpose: a full-width row in a scrolling
54
- * list that scales pulls its edges in from its neighbours and reads as the list wobbling; the
54
+ * list that scales pulls its edges in from its neighbors and reads as the list wobbling; the
55
55
  * highlight already answers, and the menu closes on the press (forge task 2912).
56
56
  */
57
57
  export const FLOATING_ITEM_BASE =
58
58
  'relative flex cursor-default select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none ' +
59
59
  // DESIGN.md §5's 44px floor, on coarse pointers only so the dense desktop menu
60
60
  // keeps its rhythm. A 32px menu row is a miss on a phone, and a menu is exactly
61
- // where a mis-tap costs the most: the neighbouring row is a different action.
61
+ // where a mis-tap costs the most: the neighboring row is a different action.
62
62
  `${TAP_TARGET_HEIGHT} ` +
63
63
  'data-[disabled]:pointer-events-none data-[disabled]:opacity-50 ' +
64
64
  'focus:bg-accent/10 focus:text-accent';
@@ -22,13 +22,13 @@ import { createContext, createElement, type ReactNode, useContext } from 'react'
22
22
  * 120ms: a tooltip is not a thing you go and read, it is a thing you needed
23
23
  * ONCE. After that first read it is pure occlusion — it paints over the control
24
24
  * next to the one you are aiming at, on a toolbar where the controls are 32px
25
- * apart. Optimising its open time for the first minute of a user's life costs
25
+ * apart. Optimizing its open time for the first minute of a user's life costs
26
26
  * them every minute after it.
27
27
  *
28
28
  * So the delay is deliberately long enough that a pointer merely CROSSING a
29
- * control never reaches it. A cursor travelling to a target passes over its
30
- * neighbours in well under 100ms; a person who has actually stopped, because
31
- * they do not recognise an icon, rests for far longer than half a second before
29
+ * control never reaches it. A cursor traveling to a target passes over its
30
+ * neighbors in well under 100ms; a person who has actually stopped, because
31
+ * they do not recognize an icon, rests for far longer than half a second before
32
32
  * they start wondering. 500ms sits in the gap and is the same number the native
33
33
  * `title` tooltip trained everyone on for thirty years.
34
34
  *
@@ -51,7 +51,7 @@ export const HOVER_HINT_DELAY_MS = 500;
51
51
  * A gesture that IS the request — a tap or click on a disclosure control whose
52
52
  * only job is to reveal the hint. Named rather than written as a bare `0` so
53
53
  * that reading `delayDuration={HOVER_HINT_INSTANT_MS}` says *why* it is instant,
54
- * and so `no-fast-tooltip` has an allowed spelling to recognise instead of every
54
+ * and so `no-fast-tooltip` has an allowed spelling to recognize instead of every
55
55
  * touch branch needing an opt-out comment.
56
56
  */
57
57
  export const HOVER_HINT_INSTANT_MS = 0;
@@ -65,7 +65,7 @@ const HoverHintDelayContext = createContext<number | null>(null);
65
65
  * desk carries a "Tooltip delay" setting the owner asked for by name (*"slowing down
66
66
  * tooltip times later when I know what most things do, or speeding them up to learn the
67
67
  * icons myself"*). That is the same owner and the same rule as above, pointed the other
68
- * way: a delay the person at the keyboard dialled in is a deliberate REQUEST, not a
68
+ * way: a delay the person at the keyboard dialed in is a deliberate REQUEST, not a
69
69
  * default somebody re-tuned. So the value arrives from a setting at runtime, and
70
70
  * `no-fast-tooltip` still refuses any literal below the floor written in code.
71
71
  *
@@ -27,7 +27,7 @@ export interface InfoHintImplProps extends InfoHintProps {
27
27
  * and the swap between them moves nothing. ≥44px touch target on coarse pointers (the same
28
28
  * `TAP_TARGET` floor Button/IconButton carry — a bare `size-4` glyph measured 16×16px, cc/197).
29
29
  * `border-0 bg-transparent p-0 font-[inherit]`: it is a raw `<button>`, and a host without
30
- * Tailwind's preflight (desk) drew the browser's own chrome around the glyph — a grey filled
30
+ * Tailwind's preflight (desk) drew the browser's own chrome around the glyph — a gray filled
31
31
  * 44px box on a phone, a bordered one on a desktop (forge task 2752, PlaceBar's More had the
32
32
  * same fix in 2748). The ring is the focus mark that chrome used to be. */
33
33
  export const INFO_HINT_TRIGGER = `inline-flex items-center justify-center rounded-sm border-0 bg-transparent p-0 font-[inherit] text-muted-foreground hover:text-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring ${TAP_TARGET}`;
@@ -33,7 +33,7 @@ const CLOSED_PASSTHROUGH = 'data-[state=closed]:pointer-events-none!';
33
33
 
34
34
  /** A tooltip: the fast speed, a fade and a 4px rise from its trigger's side. Only a DELAYED
35
35
  * open animates — moving between triggers inside the skip-delay window (`instant-open`) swaps
36
- * the bubble in place, the way Linear's do, instead of re-fading it on every neighbour. */
36
+ * the bubble in place, the way Linear's do, instead of re-fading it on every neighbor. */
37
37
  export const TOOLTIP_MOTION =
38
38
  'duration-[var(--duration-fast)] ease-[var(--ease-out)] motion-reduce:duration-0 ' +
39
39
  'data-[state=delayed-open]:animate-in data-[state=delayed-open]:fade-in-0 data-[state=delayed-open]:zoom-in-[0.985] ' +
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * The press contract, written once (forge task 2912): every pressable surface answers a finger.
3
3
  *
4
- * While held, a control dips to `--press-scale` and eases its colours AND that dip over
4
+ * While held, a control dips to `--press-scale` and eases its colors AND that dip over
5
5
  * `--duration-fast` on `--ease-out` — the way Linear's and Obsidian's controls do, and the brief's
6
6
  * `.tactile` class (`owner-drafting-area/linear-art.md/app.css`) as a token instead of a class. A
7
7
  * control that changes nothing under the finger reads as dead on a phone.
@@ -80,12 +80,12 @@ export function selectTriggerClass({
80
80
  }
81
81
 
82
82
  /** The value's text wrapper. One line, ellipsized, left-aligned: a long value (a deep path) used to
83
- * wrap to three centred lines and spill out of a 36px trigger at 390px (Radix Themes' Select
83
+ * wrap to three centered lines and spill out of a 36px trigger at 390px (Radix Themes' Select
84
84
  * truncates the same way, forge task 2594). Radix's Value drops `className`, so the truncation
85
85
  * lives on a wrapper. */
86
86
  export const SELECT_VALUE_CLASS = 'block min-w-0 flex-1 truncate text-left';
87
87
 
88
- /** `groups` when given, else `options` as one unlabelled group. */
88
+ /** `groups` when given, else `options` as one unlabeled group. */
89
89
  export function selectGroupsOf({ options = [], groups = [] }: Pick<SelectFieldProps, 'options' | 'groups'>): SelectGroup[] {
90
90
  return groups.length > 0 ? groups : options.length > 0 ? [{ options }] : [];
91
91
  }
@@ -20,7 +20,7 @@ import type { z } from 'zod';
20
20
  * `validateFieldsNatively` (MIT, © 2019-present Beier (Bill) Luo), reduced to the one schema
21
21
  * library this package peers on (`zod ^4.4.0`) and the one call shape {@link makeFormConfig}
22
22
  * makes. `react-hook-form` is already a dependency, and supplies `get`, `set` and
23
- * `appendErrors`. `zodResolver.spec.ts` pins the behaviours that matter: nested paths, the
23
+ * `appendErrors`. `zodResolver.spec.ts` pins the behaviors that matter: nested paths, the
24
24
  * closest union branch, `criteriaMode: 'all'`, a field-array root error, and parsed output.
25
25
  */
26
26
 
@@ -27,7 +27,7 @@ export interface AppearanceMenuProps
27
27
  * instead (family, vault).
28
28
  *
29
29
  * Why a panel and not a second toggle: a look is a choice among four, and the scheme a choice
30
- * among three, and Linear (Preferences → Interface theme) and Obsidian (Appearance → Base colour
30
+ * among three, and Linear (Preferences → Interface theme) and Obsidian (Appearance → Base color
31
31
  * scheme + Themes) both answer them together in one place. One press more to flip dark mode buys
32
32
  * the reader every look without a Settings page (forge task 2916).
33
33
  *
@@ -26,14 +26,14 @@ export interface LookPickerProps {
26
26
  /**
27
27
  * Pick the app's look: one card per look, each a small picture of itself drawn with that look's
28
28
  * OWN tokens (the card wears the `cb-<look>` scope, so what it shows is what you get, in the
29
- * colour scheme the page is in right now). Reads and writes the shared look store itself, like
30
- * `ThemeToggle` does the colour scheme, so dropping it into Settings is the whole integration.
29
+ * color scheme the page is in right now). Reads and writes the shared look store itself, like
30
+ * `ThemeToggle` does the color scheme, so dropping it into Settings is the whole integration.
31
31
  *
32
32
  * Linear's Preferences → Theme and Obsidian's Appearance both draw their themes as swatch cards,
33
33
  * which is why this is cards and not a select (REV-5). Radix `RadioGroup`: each card IS the
34
34
  * focusable element (roving tabindex, arrow keys), nothing hidden is drawn anywhere else — the
35
35
  * same reason `ChoiceGroup` is built on it. The checked card is marked by its accent edge AND a
36
- * check mark, never by colour alone.
36
+ * check mark, never by color alone.
37
37
  */
38
38
  export function LookPicker({
39
39
  looks: offered,
@@ -4,7 +4,7 @@
4
4
  * A look is one of the `cb-<id>` scopes the stylesheets define: `cb-aurora` in `theme.css`, and
5
5
  * `cb-obsidian`, `cb-nord` and `cb-dracula` in `looks.css`. Every look re-binds the SAME semantic
6
6
  * surface tokens (`--background`, `--card`, `--border`, the shadows, the glass, the field aliases),
7
- * so a component never knows which look it is in — and light/dark stays the colour-scheme store's
7
+ * so a component never knows which look it is in — and light/dark stays the color-scheme store's
8
8
  * business: `.dark` sits beside the look class on `<html>`, and each look declares both schemes.
9
9
  *
10
10
  * This holds the chosen look, persists it under {@link LOOK_STORAGE_KEY}, applies it as exactly ONE
@@ -30,10 +30,10 @@ export interface Look {
30
30
 
31
31
  /** Every look the stylesheets ship, in the order a picker offers them. `looks.spec.ts` holds the CSS to this list. */
32
32
  export const LOOKS: readonly Look[] = [
33
- { id: 'obsidian', label: 'Obsidian', description: 'Monochrome and quiet. Colour only where it means something.' },
33
+ { id: 'obsidian', label: 'Obsidian', description: 'Monochrome and quiet. Color only where it means something.' },
34
34
  { id: 'aurora', label: 'Aurora', description: 'Glass panels over a field of ambient light.' },
35
- { id: 'nord', label: 'Nord', description: 'Cool blue-grey, soft on the eyes.' },
36
- { id: 'dracula', label: 'Dracula', description: 'Deep violet-grey with warm text.' },
35
+ { id: 'nord', label: 'Nord', description: 'Cool blue-gray, soft on the eyes.' },
36
+ { id: 'dracula', label: 'Dracula', description: 'Deep violet-gray with warm text.' },
37
37
  ];
38
38
 
39
39
  export const LOOK_STORAGE_KEY = 'cwip.look';
@@ -44,7 +44,7 @@ describe('MarkdownDoc', () => {
44
44
 
45
45
  test('javascript: and unknown-scheme links are neutralized to plain text', () => {
46
46
  const { container } = render(
47
- <MarkdownDoc markdown={'[bad](javascript:alert(1)) and [weird](vbscript:x) and [ok](docs/x.md)'} />, // check-doc-citations:ignore markdown fixture for the link sanitiser
47
+ <MarkdownDoc markdown={'[bad](javascript:alert(1)) and [weird](vbscript:x) and [ok](docs/x.md)'} />, // check-doc-citations:ignore markdown fixture for the link sanitizer
48
48
  );
49
49
  const anchors = Array.from(container.querySelectorAll('a'));
50
50
  expect(anchors).toHaveLength(1);
@@ -240,7 +240,7 @@ export function MasterDetail({
240
240
  {selectedId ? (
241
241
  <div className="min-h-full">{detail}</div>
242
242
  ) : (
243
- // Centred in the pane, as Linear's empty detail is: at the top it read as a
243
+ // Centered in the pane, as Linear's empty detail is: at the top it read as a
244
244
  // stray caption over a blank pane (forge task 2594).
245
245
  <div className="flex min-h-full items-center justify-center p-6">
246
246
  {emptyDetail ?? (
@@ -82,7 +82,7 @@ export function MasterLockDialog({
82
82
  if (!res.ok || typeof body?.idleMs !== "number") throw new Error("refused");
83
83
  onIdleSaved(body.idleMs);
84
84
  // Echo the SERVER's number, not the typed one: it clamps, and a field that keeps
85
- // showing an out-of-range value the app is not honouring is a lie.
85
+ // showing an out-of-range value the app is not honoring is a lie.
86
86
  setMinutes(Math.max(MIN_MINUTES, Math.round(body.idleMs / 60_000)));
87
87
  setNote({ text: "Timeout saved for this app.", tone: "ok" });
88
88
  } catch {
@@ -121,7 +121,7 @@ export function MasterLockDialog({
121
121
  * at once — rotating account 2 would silently lock him out of account 1.
122
122
  *
123
123
  * `cursedbelt-server`'s guard refuses the old shape with `409 {"error":"stale-client"}`
124
- * rather than honouring it, so this dialog did not corrupt anything; it simply
124
+ * rather than honoring it, so this dialog did not corrupt anything; it simply
125
125
  * stopped working, and the owner could not change his master password from inside
126
126
  * any app. The salt never rotating is the accepted cost — it is 16 random bytes
127
127
  * whose job is to stop precomputation across apps, and it does that for as long as
@@ -95,7 +95,7 @@ describe("the idle watcher", () => {
95
95
  * shape from before accounts existed. Every account on an app now derives under one shared
96
96
  * descriptor, so a fresh salt stores a verifier hash nothing can ever match: the owner sets a
97
97
  * new password, the rotation logs him out, and neither the old nor the new one opens the app.
98
- * `cursedbelt-server`'s guard answers that shape `409 stale-client` rather than honouring it,
98
+ * `cursedbelt-server`'s guard answers that shape `409 stale-client` rather than honoring it,
99
99
  * so the dialog did not corrupt anything — it simply refused, and the owner could not change
100
100
  * his master password from inside any app for as long as it shipped.
101
101
  *
@@ -232,7 +232,7 @@ export interface MasterLockMenuItemsProps {
232
232
  /** Dismiss the menu these sit in. `AccountMenu` hands it to its `children` render prop. */
233
233
  close?: () => void;
234
234
  /**
235
- * The HOST menu's own item class, so the entries look like their neighbours —
235
+ * The HOST menu's own item class, so the entries look like their neighbors —
236
236
  * `"sam-item"` for `satellite-kit`'s `AccountMenu`.
237
237
  */
238
238
  itemClassName?: string;
@@ -49,7 +49,7 @@ export interface GalleryActionButtonProps
49
49
  /** Hover/focus explanation. A pill with a non-obvious effect should always carry one. */
50
50
  tooltip?: ReactNode;
51
51
  /**
52
- * Draw `children` as a bare glyph in a square pill instead of a labelled one — the shape
52
+ * Draw `children` as a bare glyph in a square pill instead of a labeled one — the shape
53
53
  * the whole gallery toolbar uses since 2026-09-16 (owner: *"Make it have icons only,
54
54
  * instead of words in the strip of tools"*).
55
55
  *
@@ -222,7 +222,7 @@ export interface DenseGalleryShellProps<O extends string = string> {
222
222
  *
223
223
  * A slot rather than a `viewMode` prop because the shell has no business knowing what the
224
224
  * alternative view IS. It owns the chrome; whoever passes `body` owns the rows. `empty`,
225
- * `loading` and `onNearEnd` become that caller's to honour, which is the honest split:
225
+ * `loading` and `onNearEnd` become that caller's to honor, which is the honest split:
226
226
  * a table paginates and measures differently from a virtualized grid of tiles.
227
227
  */
228
228
  body?: ReactNode;
@@ -359,7 +359,7 @@ export interface DenseGalleryDetailProps {
359
359
  actions?: ReactNode;
360
360
  /**
361
361
  * Step to the previous/next item. Given, the stage draws overlay arrows on its left
362
- * and right edges — vertically centred on a frame whose height never changes, so
362
+ * and right edges — vertically centered on a frame whose height never changes, so
363
363
  * "next, look, next, look" is one pointer position for the whole set.
364
364
  *
365
365
  * Owner report, 2026-08-23: *"It stops me from being able to press next button
@@ -521,7 +521,7 @@ export function FocusViewer({
521
521
  setNote(`GIF downloaded — ${weight}.`);
522
522
  }
523
523
  } catch (err) {
524
- if (err instanceof DOMException && err.name === "AbortError") setNote("GIF cancelled.");
524
+ if (err instanceof DOMException && err.name === "AbortError") setNote("GIF canceled.");
525
525
  else setError(err instanceof Error ? err.message : "The GIF could not be made.");
526
526
  } finally {
527
527
  if (gifAbort.current === abort) gifAbort.current = null;
@@ -753,7 +753,7 @@ export function FocusViewer({
753
753
  * It used to sit in the `else` chain below, behind a guard that stood down for any
754
754
  * focused button. This viewer's transport is made of buttons, so the shortcut was off
755
755
  * exactly where the hand had just been: press a control, then press Space, and the
756
- * control fires again instead of playback toggling. Cancelling the KEYDOWN is what
756
+ * control fires again instead of playback toggling. Canceling the KEYDOWN is what
757
757
  * stops that, because a button activates on the keyup.
758
758
  */
759
759
  if (isPlayPauseSpace(event)) {
@@ -802,7 +802,7 @@ export function FocusViewer({
802
802
  /*
803
803
  * 🔴 The PICTURE takes the region's shape, which is what makes a fraction of what you see
804
804
  * and a fraction of the region the same number — see `stageAspectFor`. Without it a
805
- * marquee over the centre of a letterboxed picture resolves to a region off to one side.
805
+ * marquee over the center of a letterboxed picture resolves to a region off to one side.
806
806
  *
807
807
  * 16/9 until the video reports its decoded size: a shape has to be chosen for the first
808
808
  * paint, and this one is corrected on `loadedmetadata` a moment later.
@@ -77,7 +77,7 @@ describe('🔴 FrameGrabber — Space toggles the clip you are scrubbing', () =>
77
77
  });
78
78
 
79
79
  test('🔴 …and it still toggles while one of the dialog’s own buttons has focus', () => {
80
- // The state the hand is actually in: Cancel, Centre it, a crop pill or the segment was the
80
+ // The state the hand is actually in: Cancel, Center it, a crop pill or the segment was the
81
81
  // last thing pressed, and the browser would otherwise activate it on the Space KEYUP. That
82
82
  // inversion is the whole point of `playerSpaceKey` — see its header.
83
83
  open();
@@ -128,7 +128,7 @@ describe('🔴 FrameGrabber — Space toggles the clip you are scrubbing', () =>
128
128
 
129
129
  test('🔴 the rule is IMPORTED from playerSpaceKey, not re-implemented here', () => {
130
130
  // The three previous copies of this rule disagreed in the one case the owner hits, which is
131
- // why `playerSpaceKey.ts` exists. A behavioural test cannot tell a fourth copy that happens
131
+ // why `playerSpaceKey.ts` exists. A behavioral test cannot tell a fourth copy that happens
132
132
  // to agree today from the shared rule; this can.
133
133
  const source = readFileSync(resolve(import.meta.dir, 'FrameGrabber.tsx'), 'utf8');
134
134
  expect(source).toInclude("from './playerSpaceKey.js'");
@@ -634,7 +634,7 @@ export function FrameGrabber({
634
634
  </label>
635
635
  <button
636
636
  // guardrails-ignore no-raw-action-button: toolbar pill styled by this module's
637
- // own plain CSS, matching the gallery's `.cbgd-order-btn` neighbours.
637
+ // own plain CSS, matching the gallery's `.cbgd-order-btn` neighbors.
638
638
  type='button'
639
639
  className={cn(RAW_BUTTON, 'cbpe-btn')}
640
640
  // 🔴 Gated on `isFramed`, which counts the PAN as well as the zoom. The old
@@ -643,7 +643,7 @@ export function FrameGrabber({
643
643
  disabled={!isFramed(framing)}
644
644
  onClick={() => setFraming(DEFAULT_FRAMING)}
645
645
  >
646
- Centre it
646
+ Center it
647
647
  </button>
648
648
  </div>
649
649
  ) : (
@@ -689,7 +689,7 @@ export function FrameGrabber({
689
689
  [
690
690
  ['brightness', 'Brightness'],
691
691
  ['contrast', 'Contrast'],
692
- ['saturation', 'Colour'],
692
+ ['saturation', 'Color'],
693
693
  ] as const
694
694
  ).map(([key, label]) => (
695
695
  <label className='cbpe-slider' key={key}>
@@ -42,7 +42,7 @@ const SCRUB_STEP_MS = 900;
42
42
  /** How long a finger rests on a tile before it counts as a hold rather than a tap. */
43
43
  const TOUCH_HOLD_MS = 300;
44
44
  /** How far a finger may wander during a hold before it is a scroll instead — a resting thumb is
45
- * never perfectly still, and a hold that any jitter cancelled would read as one that never works. */
45
+ * never perfectly still, and a hold that any jitter canceled would read as one that never works. */
46
46
  const TOUCH_HOLD_SLOP_PX = 10;
47
47
 
48
48
  /**
@@ -127,7 +127,7 @@ export interface HoverScrubVideoThumbProps {
127
127
  * `PREVIEW_SETTLE_MS` (`previewGate.ts`), so a grid scrolled past fast never opens a stream
128
128
  * per row. Without an `IntersectionObserver` the tile counts as visible.
129
129
  *
130
- * 🔴 Honoured on a TOUCH screen too. It was suppressed under a coarse pointer until
130
+ * 🔴 Honored on a TOUCH screen too. It was suppressed under a coarse pointer until
131
131
  * 2026-10-10, so the "Preview all" button on a phone lit up and nothing moved — owner, on an
132
132
  * iPhone: *"The play icon above the player clicked but it did not make all the video
133
133
  * thumbnails start playing like I thought it would."* A control the reader pressed is the
@@ -324,7 +324,7 @@ export function HoverScrubVideoThumb({
324
324
  *
325
325
  * Three things about this badge are deliberate:
326
326
  *
327
- * · **It is drawn OVER the poster, centred, in a filled disc** rather than as a
327
+ * · **It is drawn OVER the poster, centered, in a filled disc** rather than as a
328
328
  * tint on the tile. A shade reads as a state (selected, disabled, still
329
329
  * uploading) and competes with the `optimizing…` chip directly below it; a play
330
330
  * triangle means one thing and means it at any tile size, in either theme, and
@@ -17,7 +17,7 @@ export interface MediaCellProps {
17
17
  }
18
18
 
19
19
  /**
20
- * One catalogue tile: the thumbnail, a play/audio badge + duration for time-based
20
+ * One catalog tile: the thumbnail, a play/audio badge + duration for time-based
21
21
  * media, and hover edit/delete actions. The single render unit shared by the
22
22
  * virtualized rows renderer AND react-photo-album's `render.photo`, so the grid looks
23
23
  * identical regardless of layout driver.