@hanzo/ui 8.29.10 → 8.29.11

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 (382) hide show
  1. package/dist/agents/Attachments.cjs +1 -1
  2. package/dist/agents/Attachments.js +1 -1
  3. package/dist/agents/Attachments.js.map +1 -1
  4. package/dist/agents/Board.cjs +3 -2
  5. package/dist/agents/Board.d.ts.map +1 -1
  6. package/dist/agents/Board.js +3 -2
  7. package/dist/agents/Board.js.map +1 -1
  8. package/dist/agents/ChannelMembers.cjs +1 -1
  9. package/dist/agents/ChannelMembers.js +1 -1
  10. package/dist/agents/ChannelMembers.js.map +1 -1
  11. package/dist/agents/DirectoryModal.cjs +1 -1
  12. package/dist/agents/DirectoryModal.js +1 -1
  13. package/dist/agents/DirectoryModal.js.map +1 -1
  14. package/dist/agents/DriveViewer.cjs +6 -5
  15. package/dist/agents/DriveViewer.d.ts.map +1 -1
  16. package/dist/agents/DriveViewer.js +6 -5
  17. package/dist/agents/DriveViewer.js.map +1 -1
  18. package/dist/agents/FileTabs.cjs +5 -3
  19. package/dist/agents/FileTabs.d.ts.map +1 -1
  20. package/dist/agents/FileTabs.js +5 -3
  21. package/dist/agents/FileTabs.js.map +1 -1
  22. package/dist/agents/FileTree.cjs +3 -2
  23. package/dist/agents/FileTree.d.ts.map +1 -1
  24. package/dist/agents/FileTree.js +3 -2
  25. package/dist/agents/FileTree.js.map +1 -1
  26. package/dist/agents/LiveVoiceCall.cjs +1 -1
  27. package/dist/agents/LiveVoiceCall.js +1 -1
  28. package/dist/agents/LiveVoiceCall.js.map +1 -1
  29. package/dist/agents/Pane.cjs +1 -1
  30. package/dist/agents/Pane.js +1 -1
  31. package/dist/agents/Pane.js.map +1 -1
  32. package/dist/agents/Progress.cjs +2 -1
  33. package/dist/agents/Progress.d.ts.map +1 -1
  34. package/dist/agents/Progress.js +2 -1
  35. package/dist/agents/Progress.js.map +1 -1
  36. package/dist/agents/ShortcutsSheet.cjs +1 -1
  37. package/dist/agents/ShortcutsSheet.js +1 -1
  38. package/dist/agents/ShortcutsSheet.js.map +1 -1
  39. package/dist/agents/Workspace.cjs +6 -4
  40. package/dist/agents/Workspace.d.ts.map +1 -1
  41. package/dist/agents/Workspace.js +6 -4
  42. package/dist/agents/Workspace.js.map +1 -1
  43. package/dist/auth/SignIn.cjs +2 -1
  44. package/dist/auth/SignIn.d.ts.map +1 -1
  45. package/dist/auth/SignIn.js +2 -1
  46. package/dist/auth/SignIn.js.map +1 -1
  47. package/dist/backends/gui/alert.cjs +3 -3
  48. package/dist/backends/gui/alert.js +3 -3
  49. package/dist/backends/gui/alert.js.map +1 -1
  50. package/dist/backends/gui/avatar-group.cjs +2 -2
  51. package/dist/backends/gui/avatar-group.d.ts +1 -1
  52. package/dist/backends/gui/avatar-group.js +2 -2
  53. package/dist/backends/gui/avatar-group.js.map +1 -1
  54. package/dist/backends/gui/banner.cjs +3 -3
  55. package/dist/backends/gui/banner.js +3 -3
  56. package/dist/backends/gui/banner.js.map +1 -1
  57. package/dist/backends/gui/button-group.cjs +1 -1
  58. package/dist/backends/gui/button-group.js +1 -1
  59. package/dist/backends/gui/button-group.js.map +1 -1
  60. package/dist/backends/gui/calendar.cjs +4 -2
  61. package/dist/backends/gui/calendar.d.ts.map +1 -1
  62. package/dist/backends/gui/calendar.js +4 -2
  63. package/dist/backends/gui/calendar.js.map +1 -1
  64. package/dist/backends/gui/carousel.cjs +4 -3
  65. package/dist/backends/gui/carousel.d.ts.map +1 -1
  66. package/dist/backends/gui/carousel.js +4 -3
  67. package/dist/backends/gui/carousel.js.map +1 -1
  68. package/dist/backends/gui/chip.cjs +1 -1
  69. package/dist/backends/gui/chip.js +1 -1
  70. package/dist/backends/gui/chip.js.map +1 -1
  71. package/dist/backends/gui/choice.cjs +2 -2
  72. package/dist/backends/gui/choice.js +2 -2
  73. package/dist/backends/gui/choice.js.map +1 -1
  74. package/dist/backends/gui/code-block.cjs +25 -33
  75. package/dist/backends/gui/code-block.d.ts.map +1 -1
  76. package/dist/backends/gui/code-block.js +25 -33
  77. package/dist/backends/gui/code-block.js.map +1 -1
  78. package/dist/backends/gui/code-editor.cjs +26 -20
  79. package/dist/backends/gui/code-editor.d.ts +3 -3
  80. package/dist/backends/gui/code-editor.d.ts.map +1 -1
  81. package/dist/backends/gui/code-editor.js +26 -20
  82. package/dist/backends/gui/code-editor.js.map +1 -1
  83. package/dist/backends/gui/code-surface.cjs +65 -0
  84. package/dist/backends/gui/code-surface.d.ts +32 -0
  85. package/dist/backends/gui/code-surface.d.ts.map +1 -0
  86. package/dist/backends/gui/code-surface.js +60 -0
  87. package/dist/backends/gui/code-surface.js.map +1 -0
  88. package/dist/backends/gui/command.cjs +2 -1
  89. package/dist/backends/gui/command.d.ts.map +1 -1
  90. package/dist/backends/gui/command.js +2 -1
  91. package/dist/backends/gui/command.js.map +1 -1
  92. package/dist/backends/gui/context-menu.cjs +10 -9
  93. package/dist/backends/gui/context-menu.d.ts +1 -1
  94. package/dist/backends/gui/context-menu.d.ts.map +1 -1
  95. package/dist/backends/gui/context-menu.js +10 -9
  96. package/dist/backends/gui/context-menu.js.map +1 -1
  97. package/dist/backends/gui/country-select.cjs +2 -1
  98. package/dist/backends/gui/country-select.d.ts.map +1 -1
  99. package/dist/backends/gui/country-select.js +2 -1
  100. package/dist/backends/gui/country-select.js.map +1 -1
  101. package/dist/backends/gui/data-table.cjs +1 -1
  102. package/dist/backends/gui/data-table.js +1 -1
  103. package/dist/backends/gui/data-table.js.map +1 -1
  104. package/dist/backends/gui/dialog.cjs +1 -1
  105. package/dist/backends/gui/dialog.js +1 -1
  106. package/dist/backends/gui/dialog.js.map +1 -1
  107. package/dist/backends/gui/dir.cjs +67 -0
  108. package/dist/backends/gui/dir.d.ts +57 -0
  109. package/dist/backends/gui/dir.d.ts.map +1 -0
  110. package/dist/backends/gui/dir.js +61 -0
  111. package/dist/backends/gui/dir.js.map +1 -0
  112. package/dist/backends/gui/dropdown-menu.cjs +13 -12
  113. package/dist/backends/gui/dropdown-menu.d.ts +1 -1
  114. package/dist/backends/gui/dropdown-menu.d.ts.map +1 -1
  115. package/dist/backends/gui/dropdown-menu.js +13 -12
  116. package/dist/backends/gui/dropdown-menu.js.map +1 -1
  117. package/dist/backends/gui/field.cjs +1 -1
  118. package/dist/backends/gui/field.js +1 -1
  119. package/dist/backends/gui/field.js.map +1 -1
  120. package/dist/backends/gui/grip.cjs +20 -10
  121. package/dist/backends/gui/grip.d.ts +8 -5
  122. package/dist/backends/gui/grip.d.ts.map +1 -1
  123. package/dist/backends/gui/grip.js +20 -10
  124. package/dist/backends/gui/grip.js.map +1 -1
  125. package/dist/backends/gui/image-zoom.cjs +1 -1
  126. package/dist/backends/gui/image-zoom.js +1 -1
  127. package/dist/backends/gui/image-zoom.js.map +1 -1
  128. package/dist/backends/gui/input.cjs +7 -5
  129. package/dist/backends/gui/input.d.ts.map +1 -1
  130. package/dist/backends/gui/input.js +7 -5
  131. package/dist/backends/gui/input.js.map +1 -1
  132. package/dist/backends/gui/item.cjs +2 -1
  133. package/dist/backends/gui/item.d.ts.map +1 -1
  134. package/dist/backends/gui/item.js +2 -1
  135. package/dist/backends/gui/item.js.map +1 -1
  136. package/dist/backends/gui/json-tree.cjs +8 -6
  137. package/dist/backends/gui/json-tree.d.ts +1 -1
  138. package/dist/backends/gui/json-tree.d.ts.map +1 -1
  139. package/dist/backends/gui/json-tree.js +8 -6
  140. package/dist/backends/gui/json-tree.js.map +1 -1
  141. package/dist/backends/gui/kanban.cjs +1 -1
  142. package/dist/backends/gui/kanban.js +1 -1
  143. package/dist/backends/gui/kanban.js.map +1 -1
  144. package/dist/backends/gui/kbd.cjs +3 -2
  145. package/dist/backends/gui/kbd.d.ts.map +1 -1
  146. package/dist/backends/gui/kbd.js +3 -2
  147. package/dist/backends/gui/kbd.js.map +1 -1
  148. package/dist/backends/gui/limelight-nav.cjs +4 -2
  149. package/dist/backends/gui/limelight-nav.d.ts.map +1 -1
  150. package/dist/backends/gui/limelight-nav.js +4 -2
  151. package/dist/backends/gui/limelight-nav.js.map +1 -1
  152. package/dist/backends/gui/link.cjs +1 -1
  153. package/dist/backends/gui/link.js +1 -1
  154. package/dist/backends/gui/link.js.map +1 -1
  155. package/dist/backends/gui/menu-dock.cjs +1 -1
  156. package/dist/backends/gui/menu-dock.js +1 -1
  157. package/dist/backends/gui/menu-dock.js.map +1 -1
  158. package/dist/backends/gui/menubar.cjs +14 -10
  159. package/dist/backends/gui/menubar.d.ts +1 -1
  160. package/dist/backends/gui/menubar.d.ts.map +1 -1
  161. package/dist/backends/gui/menubar.js +14 -10
  162. package/dist/backends/gui/menubar.js.map +1 -1
  163. package/dist/backends/gui/message-dock.cjs +9 -5
  164. package/dist/backends/gui/message-dock.d.ts +2 -2
  165. package/dist/backends/gui/message-dock.d.ts.map +1 -1
  166. package/dist/backends/gui/message-dock.js +9 -5
  167. package/dist/backends/gui/message-dock.js.map +1 -1
  168. package/dist/backends/gui/navigation-bar.cjs +3 -2
  169. package/dist/backends/gui/navigation-bar.d.ts.map +1 -1
  170. package/dist/backends/gui/navigation-bar.js +3 -2
  171. package/dist/backends/gui/navigation-bar.js.map +1 -1
  172. package/dist/backends/gui/pagination.cjs +3 -2
  173. package/dist/backends/gui/pagination.d.ts.map +1 -1
  174. package/dist/backends/gui/pagination.js +3 -2
  175. package/dist/backends/gui/pagination.js.map +1 -1
  176. package/dist/backends/gui/phone-country-picker.cjs +2 -2
  177. package/dist/backends/gui/phone-country-picker.js +2 -2
  178. package/dist/backends/gui/phone-country-picker.js.map +1 -1
  179. package/dist/backends/gui/progress-ring.cjs +1 -1
  180. package/dist/backends/gui/progress-ring.js +1 -1
  181. package/dist/backends/gui/progress-ring.js.map +1 -1
  182. package/dist/backends/gui/resizable.cjs +8 -4
  183. package/dist/backends/gui/resizable.d.ts.map +1 -1
  184. package/dist/backends/gui/resizable.js +8 -4
  185. package/dist/backends/gui/resizable.js.map +1 -1
  186. package/dist/backends/gui/scroll-area.cjs +2 -2
  187. package/dist/backends/gui/scroll-area.d.ts.map +1 -1
  188. package/dist/backends/gui/scroll-area.js +2 -2
  189. package/dist/backends/gui/scroll-area.js.map +1 -1
  190. package/dist/backends/gui/search-list.cjs +1 -1
  191. package/dist/backends/gui/search-list.js +1 -1
  192. package/dist/backends/gui/search-list.js.map +1 -1
  193. package/dist/backends/gui/select.cjs +2 -2
  194. package/dist/backends/gui/select.js +2 -2
  195. package/dist/backends/gui/select.js.map +1 -1
  196. package/dist/backends/gui/sheet.cjs +9 -1
  197. package/dist/backends/gui/sheet.d.ts +6 -1
  198. package/dist/backends/gui/sheet.d.ts.map +1 -1
  199. package/dist/backends/gui/sheet.js +9 -1
  200. package/dist/backends/gui/sheet.js.map +1 -1
  201. package/dist/backends/gui/shortcut.cjs +3 -2
  202. package/dist/backends/gui/shortcut.d.ts.map +1 -1
  203. package/dist/backends/gui/shortcut.js +3 -2
  204. package/dist/backends/gui/shortcut.js.map +1 -1
  205. package/dist/backends/gui/snippet.cjs +24 -30
  206. package/dist/backends/gui/snippet.d.ts.map +1 -1
  207. package/dist/backends/gui/snippet.js +24 -30
  208. package/dist/backends/gui/snippet.js.map +1 -1
  209. package/dist/backends/gui/status.cjs +1 -1
  210. package/dist/backends/gui/status.js +1 -1
  211. package/dist/backends/gui/status.js.map +1 -1
  212. package/dist/backends/gui/step-indicator.cjs +3 -2
  213. package/dist/backends/gui/step-indicator.d.ts.map +1 -1
  214. package/dist/backends/gui/step-indicator.js +3 -2
  215. package/dist/backends/gui/step-indicator.js.map +1 -1
  216. package/dist/backends/gui/table.cjs +1 -1
  217. package/dist/backends/gui/table.js +1 -1
  218. package/dist/backends/gui/table.js.map +1 -1
  219. package/dist/backends/gui/tabs.cjs +2 -2
  220. package/dist/backends/gui/tabs.js +2 -2
  221. package/dist/backends/gui/tabs.js.map +1 -1
  222. package/dist/backends/gui/terminal.cjs +58 -41
  223. package/dist/backends/gui/terminal.d.ts +9 -4
  224. package/dist/backends/gui/terminal.d.ts.map +1 -1
  225. package/dist/backends/gui/terminal.js +59 -42
  226. package/dist/backends/gui/terminal.js.map +1 -1
  227. package/dist/backends/gui/timeline.cjs +5 -5
  228. package/dist/backends/gui/timeline.js +5 -5
  229. package/dist/backends/gui/timeline.js.map +1 -1
  230. package/dist/backends/gui/toaster.cjs +2 -2
  231. package/dist/backends/gui/toaster.js +2 -2
  232. package/dist/backends/gui/toaster.js.map +1 -1
  233. package/dist/catalog/Shelf.cjs +4 -2
  234. package/dist/catalog/Shelf.d.ts.map +1 -1
  235. package/dist/catalog/Shelf.js +4 -2
  236. package/dist/catalog/Shelf.js.map +1 -1
  237. package/dist/catalog/Tile.cjs +1 -1
  238. package/dist/catalog/Tile.js +1 -1
  239. package/dist/catalog/Tile.js.map +1 -1
  240. package/dist/chat/Composer.cjs +1 -1
  241. package/dist/chat/Composer.js +1 -1
  242. package/dist/chat/Composer.js.map +1 -1
  243. package/dist/chat/Header.cjs +3 -2
  244. package/dist/chat/Header.d.ts.map +1 -1
  245. package/dist/chat/Header.js +3 -2
  246. package/dist/chat/Header.js.map +1 -1
  247. package/dist/chat/SessionRail.cjs +3 -2
  248. package/dist/chat/SessionRail.d.ts.map +1 -1
  249. package/dist/chat/SessionRail.js +3 -2
  250. package/dist/chat/SessionRail.js.map +1 -1
  251. package/dist/chat/Sidebar.cjs +4 -3
  252. package/dist/chat/Sidebar.d.ts.map +1 -1
  253. package/dist/chat/Sidebar.js +4 -3
  254. package/dist/chat/Sidebar.js.map +1 -1
  255. package/dist/code-theme.cjs +78 -37
  256. package/dist/code-theme.d.ts +86 -34
  257. package/dist/code-theme.d.ts.map +1 -1
  258. package/dist/code-theme.js +77 -36
  259. package/dist/code-theme.js.map +1 -1
  260. package/dist/consent/Consent.cjs +1 -1
  261. package/dist/consent/Consent.js +1 -1
  262. package/dist/consent/Consent.js.map +1 -1
  263. package/dist/core/index.cjs +2 -1
  264. package/dist/core/index.d.ts +1 -1
  265. package/dist/core/index.d.ts.map +1 -1
  266. package/dist/core/index.js +1 -1
  267. package/dist/core/index.js.map +1 -1
  268. package/dist/framework/DocTypeDetail.cjs +3 -2
  269. package/dist/framework/DocTypeDetail.d.ts.map +1 -1
  270. package/dist/framework/DocTypeDetail.js +3 -2
  271. package/dist/framework/DocTypeDetail.js.map +1 -1
  272. package/dist/framework/RecordCards.cjs +2 -1
  273. package/dist/framework/RecordCards.d.ts.map +1 -1
  274. package/dist/framework/RecordCards.js +2 -1
  275. package/dist/framework/RecordCards.js.map +1 -1
  276. package/dist/gallery/feedback.cjs +9 -2
  277. package/dist/gallery/feedback.d.ts.map +1 -1
  278. package/dist/gallery/feedback.js +10 -3
  279. package/dist/gallery/feedback.js.map +1 -1
  280. package/dist/gallery/frames.cjs +1 -1
  281. package/dist/gallery/frames.js +1 -1
  282. package/dist/gallery/frames.js.map +1 -1
  283. package/dist/gallery.html +543 -281
  284. package/dist/gui-config.cjs +21 -18
  285. package/dist/gui-config.d.ts +8 -8
  286. package/dist/gui-config.d.ts.map +1 -1
  287. package/dist/gui-config.js +22 -19
  288. package/dist/gui-config.js.map +1 -1
  289. package/dist/index.cjs +6 -5
  290. package/dist/index.d.ts +1 -1
  291. package/dist/index.d.ts.map +1 -1
  292. package/dist/index.js +5 -5
  293. package/dist/index.js.map +1 -1
  294. package/dist/index.node.cjs +6 -5
  295. package/dist/index.node.js +5 -5
  296. package/dist/lang.css +143 -0
  297. package/dist/marketing/Footer.cjs +1 -1
  298. package/dist/marketing/Footer.js +1 -1
  299. package/dist/marketing/Footer.js.map +1 -1
  300. package/dist/marketing/Plans.cjs +1 -1
  301. package/dist/marketing/Plans.js +1 -1
  302. package/dist/marketing/Plans.js.map +1 -1
  303. package/dist/masthead/Masthead.cjs +5 -5
  304. package/dist/masthead/Masthead.js +5 -5
  305. package/dist/masthead/Masthead.js.map +1 -1
  306. package/dist/onboarding/frame.cjs +2 -1
  307. package/dist/onboarding/frame.d.ts.map +1 -1
  308. package/dist/onboarding/frame.js +2 -1
  309. package/dist/onboarding/frame.js.map +1 -1
  310. package/dist/product/Charts.cjs +2 -1
  311. package/dist/product/Charts.d.ts.map +1 -1
  312. package/dist/product/Charts.js +2 -1
  313. package/dist/product/Charts.js.map +1 -1
  314. package/dist/product/CommandMenu.cjs +3 -2
  315. package/dist/product/CommandMenu.d.ts.map +1 -1
  316. package/dist/product/CommandMenu.js +3 -2
  317. package/dist/product/CommandMenu.js.map +1 -1
  318. package/dist/product/ConnectionBadge.cjs +2 -1
  319. package/dist/product/ConnectionBadge.d.ts.map +1 -1
  320. package/dist/product/ConnectionBadge.js +2 -1
  321. package/dist/product/ConnectionBadge.js.map +1 -1
  322. package/dist/product/DetailPane.cjs +5 -4
  323. package/dist/product/DetailPane.d.ts.map +1 -1
  324. package/dist/product/DetailPane.js +5 -4
  325. package/dist/product/DetailPane.js.map +1 -1
  326. package/dist/product/EmptyState.cjs +2 -1
  327. package/dist/product/EmptyState.d.ts.map +1 -1
  328. package/dist/product/EmptyState.js +2 -1
  329. package/dist/product/EmptyState.js.map +1 -1
  330. package/dist/product/Filters.cjs +3 -1
  331. package/dist/product/Filters.d.ts.map +1 -1
  332. package/dist/product/Filters.js +3 -1
  333. package/dist/product/Filters.js.map +1 -1
  334. package/dist/product/MenuRow.cjs +3 -2
  335. package/dist/product/MenuRow.d.ts.map +1 -1
  336. package/dist/product/MenuRow.js +3 -2
  337. package/dist/product/MenuRow.js.map +1 -1
  338. package/dist/product/Pagination.cjs +2 -1
  339. package/dist/product/Pagination.d.ts.map +1 -1
  340. package/dist/product/Pagination.js +2 -1
  341. package/dist/product/Pagination.js.map +1 -1
  342. package/dist/product/Palette.cjs +1 -1
  343. package/dist/product/Palette.js +1 -1
  344. package/dist/product/Palette.js.map +1 -1
  345. package/dist/product/SiteFooter.cjs +1 -1
  346. package/dist/product/SiteFooter.js +1 -1
  347. package/dist/product/SiteFooter.js.map +1 -1
  348. package/dist/product/SiteNav.cjs +3 -3
  349. package/dist/product/SiteNav.js +3 -3
  350. package/dist/product/SiteNav.js.map +1 -1
  351. package/dist/product/SlideOver.cjs +12 -6
  352. package/dist/product/SlideOver.d.ts +9 -4
  353. package/dist/product/SlideOver.d.ts.map +1 -1
  354. package/dist/product/SlideOver.js +12 -6
  355. package/dist/product/SlideOver.js.map +1 -1
  356. package/dist/product/Split.cjs +9 -3
  357. package/dist/product/Split.d.ts.map +1 -1
  358. package/dist/product/Split.js +9 -3
  359. package/dist/product/Split.js.map +1 -1
  360. package/dist/product/Toast.cjs +2 -2
  361. package/dist/product/Toast.js +2 -2
  362. package/dist/product/Toast.js.map +1 -1
  363. package/dist/product/account.cjs +2 -1
  364. package/dist/product/account.d.ts.map +1 -1
  365. package/dist/product/account.js +2 -1
  366. package/dist/product/account.js.map +1 -1
  367. package/dist/product/menu/items.cjs +2 -1
  368. package/dist/product/menu/items.d.ts.map +1 -1
  369. package/dist/product/menu/items.js +2 -1
  370. package/dist/product/menu/items.js.map +1 -1
  371. package/dist/product/social/SocialResource.cjs +3 -2
  372. package/dist/product/social/SocialResource.d.ts.map +1 -1
  373. package/dist/product/social/SocialResource.js +3 -2
  374. package/dist/product/social/SocialResource.js.map +1 -1
  375. package/dist/settings/Settings.cjs +1 -1
  376. package/dist/settings/Settings.js +1 -1
  377. package/dist/settings/Settings.js.map +1 -1
  378. package/dist/styles/document.css +1 -1
  379. package/dist/styles/motion.css +25 -0
  380. package/dist/styles.css +410 -148
  381. package/dist/theme.css +192 -3
  382. package/package.json +4 -1
package/dist/theme.css CHANGED
@@ -2115,7 +2115,12 @@
2115
2115
 
2116
2116
  @layer hanzo.font {
2117
2117
  :root {
2118
- --font-sans: var(--font-sans-provided, 'Zen', ui-sans-serif, system-ui, sans-serif);
2118
+ /* `--font-script` is the face for the page's writing system, which
2119
+ lang.css sets per :lang() — Arabic, Hebrew, Devanagari, Thai, CJK and the
2120
+ rest. It follows the brand face, so Latin keeps Zen and every glyph Zen
2121
+ lacks falls through to a face drawn for it. Unset, the stack is the one
2122
+ this always was. */
2123
+ --font-sans: var(--font-sans-provided, 'Zen'), var(--font-script, ui-sans-serif), system-ui, sans-serif;
2119
2124
  --font-mono: var(--font-mono-provided, 'Zen Mono', ui-monospace, monospace);
2120
2125
  }
2121
2126
  }
@@ -2328,14 +2333,15 @@
2328
2333
  color: var(--foreground);
2329
2334
  font-family: var(--font-sans), sans-serif;
2330
2335
  font-size: var(--text-base);
2331
- line-height: var(--leading-base, var(--leading-normal));
2336
+ /* `--leading-lang` opens the line for scripts with tall marks (lang.css). */
2337
+ line-height: calc(var(--leading-base, var(--leading-normal)) * var(--leading-lang, 1));
2332
2338
  }
2333
2339
 
2334
2340
  [data-slot='prose'] > h1, [data-slot='prose'] > h2, [data-slot='prose'] > h3,
2335
2341
  [data-slot='prose'] > h4, [data-slot='prose'] > h5, [data-slot='prose'] > h6 {
2336
2342
  font-family: var(--font-display, var(--font-sans)), sans-serif;
2337
2343
  font-weight: 606;
2338
- line-height: var(--leading-tight);
2344
+ line-height: calc(var(--leading-tight) * var(--leading-lang, 1));
2339
2345
  letter-spacing: var(--tracking-tight);
2340
2346
  margin: 0;
2341
2347
  }
@@ -2438,6 +2444,20 @@
2438
2444
  [data-slot='prose'][data-size='responsive'] > h2 { font-size: var(--text-5xl) }
2439
2445
  }
2440
2446
 
2447
+ /* DIRECTION. Sides are logical properties throughout, so a page follows
2448
+ <html dir="rtl"> with no rule here. An icon whose meaning is a direction along
2449
+ the line (back, forward, next, a drill-in chevron, send) carries
2450
+ `data-i18n-mirror` (the `mirror` helper) and turns with the line. `:dir()`
2451
+ rather than `html[dir]`, so an LTR island inside an RTL page keeps its
2452
+ arrows; the same declaration @hanzo/i18n's rtl.css and @hanzo/gui's base sheet
2453
+ state, so any number of them on one page mirror an icon once. */
2454
+ [data-i18n-mirror]:dir(rtl) { transform: scaleX(-1) }
2455
+
2456
+ /* Text whose order is not language (a shortcut, a key chord, an email or URL
2457
+ field) carries `data-i18n-ltr` (the `ltr` helper) and stays left to right,
2458
+ isolated so the line around it keeps its own order. */
2459
+ [data-i18n-ltr] { direction: ltr; unicode-bidi: isolate }
2460
+
2441
2461
  /* Glass — the material floating chrome is made of, and the ladder it stands on.
2442
2462
  *
2443
2463
  * import '@hanzo/ui/glass.css' // this slice alone
@@ -2839,6 +2859,16 @@
2839
2859
  will-change: transform;
2840
2860
  }
2841
2861
 
2862
+ /* Where a panel waits off screen, by the edge it slides from. A translate has no
2863
+ logical form, so the reading edges resolve here: `end` is off the right under
2864
+ LTR and off the left under RTL. */
2865
+ [data-slide-from='end'],
2866
+ [data-slide-from='right'] { --slide-off: 100%; }
2867
+ [data-slide-from='start'],
2868
+ [data-slide-from='left'] { --slide-off: -100%; }
2869
+ [data-slide-from='end']:dir(rtl) { --slide-off: -100%; }
2870
+ [data-slide-from='start']:dir(rtl) { --slide-off: 100%; }
2871
+
2842
2872
  [data-motion='drag'] {
2843
2873
  touch-action: none;
2844
2874
  transition: transform 180ms cubic-bezier(0.16, 1, 0.3, 1);
@@ -3018,6 +3048,16 @@
3018
3048
  animation: sweep var(--duration-loop, 1.5s) ease-in-out infinite;
3019
3049
  }
3020
3050
 
3051
+ /* Under RTL the bar starts at the right edge and crosses the way the line reads. */
3052
+ @keyframes sweep-rtl {
3053
+ from { transform: translateX(100%); }
3054
+ to { transform: translateX(-400%); }
3055
+ }
3056
+
3057
+ [data-motion='sweep']:dir(rtl) {
3058
+ animation-name: sweep-rtl;
3059
+ }
3060
+
3021
3061
  @keyframes orbit {
3022
3062
  from { transform: rotate(-90deg); }
3023
3063
  to { transform: rotate(270deg); }
@@ -3037,6 +3077,11 @@
3037
3077
  animation: drain var(--drain, 6000ms) linear forwards;
3038
3078
  }
3039
3079
 
3080
+ /* A fill empties toward the inline start: the right edge under RTL. */
3081
+ [data-motion='drain']:dir(rtl) {
3082
+ transform-origin: right center;
3083
+ }
3084
+
3040
3085
  [data-motion='drain'][data-paused] {
3041
3086
  animation-play-state: paused;
3042
3087
  }
@@ -3053,3 +3098,147 @@
3053
3098
  animation-play-state: paused;
3054
3099
  }
3055
3100
  }
3101
+
3102
+ /**
3103
+ * @hanzo/ui/lang.css — type for every writing system the interface ships in.
3104
+ *
3105
+ * import '@hanzo/ui/lang.css' (theme.css already carries it)
3106
+ *
3107
+ * Driven by the document's language, `<html lang>`, which @hanzo/i18n sets
3108
+ * together with `dir`. Direction itself lives in @hanzo/i18n's rtl.css and in
3109
+ * the components' logical properties; this file is the TYPE half:
3110
+ *
3111
+ * 1. a face per script (`--font-script`). theme.css puts it after the brand
3112
+ * face, so Latin stays Zen and every glyph Zen lacks falls through to a
3113
+ * face drawn for its script. Noto first, because it covers every script
3114
+ * here at one weight axis, then the face each platform ships, so a machine
3115
+ * without Noto still renders the script as its own people expect.
3116
+ * 2. line height for scripts whose marks stand above or hang below the
3117
+ * Latin line (`--leading-lang`, a multiplier the type ladder and prose
3118
+ * read). Latin, Cyrillic, Greek, Hebrew, Georgian, Armenian: 1.
3119
+ * 3. no letter-spacing on connected scripts. Arabic joins letter to letter
3120
+ * and the Indic headstroke runs across a word; tracking pulls both apart.
3121
+ * 4. no brand tweaks on Arabic-script text: the `ss01` stylistic set and
3122
+ * `text-transform` are Latin ideas (a single-storey a, capitals).
3123
+ * 5. numerals that line up in tables in every script.
3124
+ *
3125
+ * Every selector is `:lang()`, which matches by prefix: `:lang(fa)` takes fa-IR
3126
+ * and fa-AF, `:lang(pa-Arab)` takes pa-Arab-PK and leaves Gurmukhi pa alone.
3127
+ */
3128
+
3129
+ /* ── 1. Faces ──────────────────────────────────────────────────────────── */
3130
+
3131
+ /* Arabic script, Naskh: Arabic, Persian (Iran and Afghanistan), Pashto,
3132
+ Sorani Kurdish, Uyghur. Noto Sans Arabic for the interface, Noto Naskh Arabic
3133
+ behind it for the letters Sans lacks. */
3134
+ :is(:lang(ar), :lang(fa), :lang(prs), :lang(ps), :lang(ckb), :lang(ku-Arab), :lang(ug), :lang(ks), :lang(bal), :lang(glk), :lang(mzn)) {
3135
+ --font-script: 'Noto Sans Arabic', 'Noto Naskh Arabic', 'SF Arabic', 'Geeza Pro', 'Segoe UI', Tahoma, ui-sans-serif;
3136
+ }
3137
+
3138
+ /* Sindhi is set in Naskh, whose letter forms it was drawn in; Sans lacks
3139
+ several of its dotted letters. */
3140
+ :lang(sd) {
3141
+ --font-script: 'Noto Naskh Arabic', 'Noto Sans Arabic', 'Segoe UI', Tahoma, ui-sans-serif;
3142
+ }
3143
+
3144
+ /* Nastaliq: Urdu and Shahmukhi Punjabi read in it, and Naskh reads to them as
3145
+ Arabic. Naskh behind it for anything Nastaliq does not cover. */
3146
+ :is(:lang(ur), :lang(pa-Arab), :lang(pnb), :lang(skr)) {
3147
+ --font-script: 'Noto Nastaliq Urdu', 'Urdu Typesetting', 'Jameel Noori Nastaleeq', 'Noto Naskh Arabic', 'Noto Sans Arabic', 'Segoe UI', Tahoma, ui-sans-serif;
3148
+ }
3149
+
3150
+ :is(:lang(he), :lang(yi)) {
3151
+ --font-script: 'Noto Sans Hebrew', 'Arial Hebrew', 'Segoe UI', ui-sans-serif;
3152
+ }
3153
+
3154
+ :is(:lang(hi), :lang(mr), :lang(ne), :lang(sa), :lang(bho), :lang(mai), :lang(kok), :lang(doi)) {
3155
+ --font-script: 'Noto Sans Devanagari', 'Kohinoor Devanagari', 'Devanagari Sangam MN', 'Nirmala UI', 'Mangal', ui-sans-serif;
3156
+ }
3157
+ :is(:lang(bn), :lang(as), :lang(mni)) {
3158
+ --font-script: 'Noto Sans Bengali', 'Kohinoor Bangla', 'Bangla Sangam MN', 'Nirmala UI', 'Vrinda', ui-sans-serif;
3159
+ }
3160
+ :lang(ta) { --font-script: 'Noto Sans Tamil', 'Tamil Sangam MN', 'Nirmala UI', 'Latha', ui-sans-serif; }
3161
+ :lang(te) { --font-script: 'Noto Sans Telugu', 'Kohinoor Telugu', 'Telugu Sangam MN', 'Nirmala UI', 'Gautami', ui-sans-serif; }
3162
+ :lang(kn) { --font-script: 'Noto Sans Kannada', 'Kannada Sangam MN', 'Nirmala UI', 'Tunga', ui-sans-serif; }
3163
+ :lang(ml) { --font-script: 'Noto Sans Malayalam', 'Malayalam Sangam MN', 'Nirmala UI', 'Kartika', ui-sans-serif; }
3164
+ :lang(gu) { --font-script: 'Noto Sans Gujarati', 'Kohinoor Gujarati', 'Gujarati Sangam MN', 'Nirmala UI', 'Shruti', ui-sans-serif; }
3165
+ /* Gurmukhi is Punjabi's default script; Shahmukhi took pa-Arab above. */
3166
+ :is(:lang(pa), :lang(pa-Guru)):not(:lang(pa-Arab)) {
3167
+ --font-script: 'Noto Sans Gurmukhi', 'Gurmukhi Sangam MN', 'Nirmala UI', 'Raavi', ui-sans-serif;
3168
+ }
3169
+ :lang(si) { --font-script: 'Noto Sans Sinhala', 'Sinhala Sangam MN', 'Nirmala UI', 'Iskoola Pota', ui-sans-serif; }
3170
+ :lang(th) { --font-script: 'Noto Sans Thai', 'Thonburi', 'Leelawadee UI', 'Tahoma', ui-sans-serif; }
3171
+ :lang(lo) { --font-script: 'Noto Sans Lao', 'Lao Sangam MN', 'Leelawadee UI', 'Lao UI', ui-sans-serif; }
3172
+ :lang(km) { --font-script: 'Noto Sans Khmer', 'Khmer Sangam MN', 'Leelawadee UI', 'Khmer UI', ui-sans-serif; }
3173
+ :lang(my) { --font-script: 'Noto Sans Myanmar', 'Myanmar Sangam MN', 'Myanmar Text', ui-sans-serif; }
3174
+ :is(:lang(bo), :lang(dz)) { --font-script: 'Noto Serif Tibetan', 'Noto Sans Tibetan', 'Kailasa', 'Microsoft Himalaya', ui-sans-serif; }
3175
+ :lang(ka) { --font-script: 'Noto Sans Georgian', 'Helvetica Neue', 'Sylfaen', ui-sans-serif; }
3176
+ :lang(hy) { --font-script: 'Noto Sans Armenian', 'Mshtakan', 'Sylfaen', ui-sans-serif; }
3177
+ :is(:lang(am), :lang(ti), :lang(om-Ethi)) { --font-script: 'Noto Sans Ethiopic', 'Kefa', 'Nyala', 'Ebrima', ui-sans-serif; }
3178
+
3179
+ /* Han is unified across Chinese, Japanese and Korean, and each reads the
3180
+ others' forms of the same character as foreign. So the face is chosen by
3181
+ language, never by script alone. */
3182
+ :is(:lang(zh-Hans), :lang(zh-CN), :lang(zh-SG), :lang(zh)) {
3183
+ --font-script: 'Noto Sans SC', 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', ui-sans-serif;
3184
+ }
3185
+ :is(:lang(zh-Hant), :lang(zh-TW)) {
3186
+ --font-script: 'Noto Sans TC', 'PingFang TC', 'Microsoft JhengHei', ui-sans-serif;
3187
+ }
3188
+ :is(:lang(zh-HK), :lang(zh-MO)) { --font-script: 'Noto Sans HK', 'PingFang HK', 'Microsoft JhengHei', ui-sans-serif; }
3189
+ :lang(ja) { --font-script: 'Noto Sans JP', 'Hiragino Sans', 'Hiragino Kaku Gothic ProN', 'Yu Gothic UI', 'Meiryo', ui-sans-serif; }
3190
+ :lang(ko) { --font-script: 'Noto Sans KR', 'Apple SD Gothic Neo', 'Malgun Gothic', ui-sans-serif; }
3191
+
3192
+ /* ── 2. Line height ─────────────────────────────────────────────────────── */
3193
+
3194
+ /* Marks above and below the line: Arabic harakat, the Indic matras and
3195
+ conjuncts, Thai and Lao tone marks stacked over vowels, Khmer subscripts,
3196
+ Burmese medials, Tibetan stacks. Measured against the Latin ladder, which
3197
+ sets 14px on 20px: these need roughly 1.15x to 1.5x the space to keep one
3198
+ line's marks out of the next. */
3199
+ :is(:lang(ar), :lang(fa), :lang(prs), :lang(ps), :lang(ckb), :lang(ku-Arab), :lang(ug), :lang(sd), :lang(ks), :lang(bal), :lang(glk), :lang(mzn)) { --leading-lang: 1.15; }
3200
+ :is(:lang(hi), :lang(mr), :lang(ne), :lang(sa), :lang(bho), :lang(mai), :lang(kok), :lang(doi), :lang(bn), :lang(as), :lang(mni), :lang(gu), :lang(pa), :lang(ta), :lang(te), :lang(kn), :lang(ml), :lang(si)) { --leading-lang: 1.2; }
3201
+ :is(:lang(th), :lang(lo)) { --leading-lang: 1.25; }
3202
+ :is(:lang(km), :lang(my)) { --leading-lang: 1.35; }
3203
+ :is(:lang(bo), :lang(dz)) { --leading-lang: 1.4; }
3204
+ :is(:lang(zh), :lang(ja), :lang(ko), :lang(am), :lang(ti)) { --leading-lang: 1.1; }
3205
+ /* Nastaliq descends along a diagonal baseline; each word steps down from its
3206
+ first letter, so a line needs half again its Latin height. After the Naskh
3207
+ rule so pa-Arab takes this one rather than Gurmukhi's. */
3208
+ :is(:lang(ur), :lang(pa-Arab), :lang(pnb), :lang(skr)) { --leading-lang: 1.5; }
3209
+
3210
+ /* The body's own leading, for content that arrives as bare tags. Only where a
3211
+ script above asked for more, so a host that brings its own body leading and
3212
+ no tall script keeps it untouched. */
3213
+ :root:is(:lang(ar), :lang(fa), :lang(prs), :lang(ps), :lang(ckb), :lang(ku-Arab), :lang(ug), :lang(sd), :lang(ks), :lang(bal), :lang(glk), :lang(mzn), :lang(ur), :lang(pa-Arab), :lang(pnb), :lang(skr), :lang(hi), :lang(mr), :lang(ne), :lang(sa), :lang(bho), :lang(mai), :lang(kok), :lang(doi), :lang(bn), :lang(as), :lang(mni), :lang(gu), :lang(pa), :lang(ta), :lang(te), :lang(kn), :lang(ml), :lang(si), :lang(th), :lang(lo), :lang(km), :lang(my), :lang(bo), :lang(dz), :lang(zh), :lang(ja), :lang(ko), :lang(am), :lang(ti)) body {
3214
+ line-height: calc(var(--leading-base, 1.35rem) * var(--leading-lang));
3215
+ }
3216
+
3217
+ /* ── 3 and 4. Connected scripts: no tracking, no Latin tweaks ───────────── */
3218
+
3219
+ /* !important because the type ladder states its tracking as an atomic class
3220
+ on the element itself (-0.025em on headline rungs), and a class on the
3221
+ element beats anything inherited. Tracking a connected script is never a
3222
+ choice; it breaks the joins. */
3223
+ :is(:lang(ar), :lang(fa), :lang(prs), :lang(ps), :lang(ckb), :lang(ku-Arab), :lang(ug), :lang(sd), :lang(ks), :lang(bal), :lang(glk), :lang(mzn), :lang(ur), :lang(pa-Arab), :lang(pnb), :lang(skr), :lang(syr), :lang(nqo), :lang(mn-Mong)) {
3224
+ letter-spacing: 0 !important;
3225
+ /* `ss01` is the brand's single-storey a; in an Arabic face the same tag
3226
+ names an unrelated alternate, or a different letter entirely. */
3227
+ --font-feature-settings: normal;
3228
+ font-feature-settings: normal;
3229
+ text-transform: none !important;
3230
+ }
3231
+ /* The headstroke of Devanagari, Bengali and Gurmukhi is one line across a
3232
+ word; tracking breaks it into letters. */
3233
+ :is(:lang(hi), :lang(mr), :lang(ne), :lang(sa), :lang(bho), :lang(mai), :lang(kok), :lang(doi), :lang(bn), :lang(as), :lang(mni), :lang(pa)) {
3234
+ letter-spacing: 0 !important;
3235
+ }
3236
+
3237
+ /* ── 5. Numerals ────────────────────────────────────────────────────────── */
3238
+
3239
+ /* Tables and counters align digits whatever the language, and Persian and
3240
+ Arabic-Indic digits come in a tabular form in the same faces. Code, URLs and
3241
+ email stay left to right with their own numerals (rtl.css isolates them). */
3242
+ :is(:lang(ar), :lang(fa), :lang(prs), :lang(ps), :lang(ckb), :lang(ug), :lang(sd), :lang(ur), :lang(pa-Arab), :lang(pnb), :lang(he)) :where(td, th, data, time, output, meter, .hz-tnum, [data-numeric]) {
3243
+ font-variant-numeric: tabular-nums;
3244
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.29.10",
3
+ "version": "8.29.11",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {
@@ -85,6 +85,7 @@
85
85
  },
86
86
  "./theme.css": "./dist/theme.css",
87
87
  "./glass.css": "./dist/glass.css",
88
+ "./lang.css": "./dist/lang.css",
88
89
  "./glass": {
89
90
  "types": "./dist/glass.d.ts",
90
91
  "import": "./dist/glass.js",
@@ -434,6 +435,8 @@
434
435
  "test:responsive": "node scripts/responsive.mjs",
435
436
  "test:contain": "node scripts/contain.mjs",
436
437
  "test:corner": "node scripts/corner.mjs",
438
+ "test:code": "node scripts/code.mjs",
439
+ "test:rtl": "node scripts/compose-theme.mjs && node scripts/rtl.mjs",
437
440
  "test:consumer": "node scripts/consumer-test.mjs",
438
441
  "test:unit": "vitest run",
439
442
  "test:consumer:webpack": "node scripts/consumer-webpack.mjs"