@kortix/ui 0.0.0-bootstrap.0 → 0.14.3

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 (416) hide show
  1. package/README.md +153 -2
  2. package/dist/_vendor/kortix-shared.js +341 -0
  3. package/dist/chat/agent-picker.d.ts +8 -0
  4. package/dist/chat/agent-picker.js +18 -0
  5. package/dist/chat/composer.d.ts +31 -0
  6. package/dist/chat/composer.js +114 -0
  7. package/dist/chat/index.d.ts +22 -0
  8. package/dist/chat/index.js +22 -0
  9. package/dist/chat/markdown.d.ts +10 -0
  10. package/dist/chat/markdown.js +36 -0
  11. package/dist/chat/message-list.d.ts +25 -0
  12. package/dist/chat/message-list.js +73 -0
  13. package/dist/chat/message-view.d.ts +17 -0
  14. package/dist/chat/message-view.js +86 -0
  15. package/dist/chat/model-picker.d.ts +10 -0
  16. package/dist/chat/model-picker.js +68 -0
  17. package/dist/chat/permission-prompt.d.ts +10 -0
  18. package/dist/chat/permission-prompt.js +40 -0
  19. package/dist/chat/question-prompt.d.ts +8 -0
  20. package/dist/chat/question-prompt.js +60 -0
  21. package/dist/chat/send-failure.d.ts +9 -0
  22. package/dist/chat/send-failure.js +21 -0
  23. package/dist/chat/session-thread.d.ts +28 -0
  24. package/dist/chat/session-thread.js +47 -0
  25. package/dist/chat/streaming-markdown.d.ts +21 -0
  26. package/dist/chat/streaming-markdown.js +59 -0
  27. package/dist/chat/tool-call.d.ts +4 -0
  28. package/dist/chat/tool-call.js +150 -0
  29. package/dist/chat/user-message-parts.d.ts +6 -0
  30. package/dist/chat/user-message-parts.js +11 -0
  31. package/dist/components/ui/accordion.d.ts +7 -0
  32. package/dist/components/ui/accordion.js +18 -0
  33. package/dist/components/ui/alert-dialog.d.ts +19 -0
  34. package/dist/components/ui/alert-dialog.js +48 -0
  35. package/dist/components/ui/alert.d.ts +13 -0
  36. package/dist/components/ui/alert.js +67 -0
  37. package/dist/components/ui/avatar.d.ts +11 -0
  38. package/dist/components/ui/avatar.js +23 -0
  39. package/dist/components/ui/back-pill.d.ts +13 -0
  40. package/dist/components/ui/back-pill.js +18 -0
  41. package/dist/components/ui/badge.d.ts +10 -0
  42. package/dist/components/ui/badge.js +42 -0
  43. package/dist/components/ui/breadcrumb.d.ts +11 -0
  44. package/dist/components/ui/breadcrumb.js +28 -0
  45. package/dist/components/ui/bubble.d.ts +20 -0
  46. package/dist/components/ui/bubble.js +38 -0
  47. package/dist/components/ui/button-group.d.ts +9 -0
  48. package/dist/components/ui/button-group.js +32 -0
  49. package/dist/components/ui/button.d.ts +13 -0
  50. package/dist/components/ui/button.js +67 -0
  51. package/dist/components/ui/calendar.d.ts +4 -0
  52. package/dist/components/ui/calendar.js +39 -0
  53. package/dist/components/ui/card.d.ts +96 -0
  54. package/dist/components/ui/card.js +291 -0
  55. package/dist/components/ui/chain-of-thought.d.ts +75 -0
  56. package/dist/components/ui/chain-of-thought.js +66 -0
  57. package/dist/components/ui/chart.d.ts +65 -0
  58. package/dist/components/ui/chart.js +118 -0
  59. package/dist/components/ui/checkbox-group.d.ts +19 -0
  60. package/dist/components/ui/checkbox-group.js +41 -0
  61. package/dist/components/ui/checkbox.d.ts +14 -0
  62. package/dist/components/ui/checkbox.js +27 -0
  63. package/dist/components/ui/collapsible.d.ts +5 -0
  64. package/dist/components/ui/collapsible.js +14 -0
  65. package/dist/components/ui/command.d.ts +58 -0
  66. package/dist/components/ui/command.js +135 -0
  67. package/dist/components/ui/confirm-dialog.d.ts +19 -0
  68. package/dist/components/ui/confirm-dialog.js +30 -0
  69. package/dist/components/ui/context-menu.d.ts +45 -0
  70. package/dist/components/ui/context-menu.js +93 -0
  71. package/dist/components/ui/count-badge.d.ts +26 -0
  72. package/dist/components/ui/count-badge.js +26 -0
  73. package/dist/components/ui/data-grid.d.ts +24 -0
  74. package/dist/components/ui/data-grid.js +107 -0
  75. package/dist/components/ui/date-range-picker.d.ts +119 -0
  76. package/dist/components/ui/date-range-picker.js +190 -0
  77. package/dist/components/ui/definition-list.d.ts +15 -0
  78. package/dist/components/ui/definition-list.js +26 -0
  79. package/dist/components/ui/dialog.d.ts +29 -0
  80. package/dist/components/ui/dialog.js +52 -0
  81. package/dist/components/ui/disclosure.d.ts +121 -0
  82. package/dist/components/ui/disclosure.js +138 -0
  83. package/dist/components/ui/dot-matrix/dotm-3x3-10.d.ts +4 -0
  84. package/dist/components/ui/dot-matrix/dotm-3x3-10.js +29 -0
  85. package/dist/components/ui/dot-matrix/dotm-3x3-12.d.ts +4 -0
  86. package/dist/components/ui/dot-matrix/dotm-3x3-12.js +19 -0
  87. package/dist/components/ui/dot-matrix/dotm-3x3-13.d.ts +4 -0
  88. package/dist/components/ui/dot-matrix/dotm-3x3-13.js +19 -0
  89. package/dist/components/ui/dot-matrix/dotm-3x3-15.d.ts +4 -0
  90. package/dist/components/ui/dot-matrix/dotm-3x3-15.js +22 -0
  91. package/dist/components/ui/dot-matrix/dotm-3x3-16.d.ts +4 -0
  92. package/dist/components/ui/dot-matrix/dotm-3x3-16.js +5 -0
  93. package/dist/components/ui/dot-matrix/dotm-3x3-18.d.ts +4 -0
  94. package/dist/components/ui/dot-matrix/dotm-3x3-18.js +5 -0
  95. package/dist/components/ui/dot-matrix/dotm-3x3-19.d.ts +4 -0
  96. package/dist/components/ui/dot-matrix/dotm-3x3-19.js +5 -0
  97. package/dist/components/ui/dot-matrix/dotm-3x3-2.d.ts +4 -0
  98. package/dist/components/ui/dot-matrix/dotm-3x3-2.js +3 -0
  99. package/dist/components/ui/dot-matrix/dotm-3x3-20.d.ts +4 -0
  100. package/dist/components/ui/dot-matrix/dotm-3x3-20.js +5 -0
  101. package/dist/components/ui/dot-matrix/dotm-3x3-21.d.ts +4 -0
  102. package/dist/components/ui/dot-matrix/dotm-3x3-21.js +5 -0
  103. package/dist/components/ui/dot-matrix/dotm-3x3-3.d.ts +4 -0
  104. package/dist/components/ui/dot-matrix/dotm-3x3-3.js +3 -0
  105. package/dist/components/ui/dot-matrix/dotm-3x3-4.d.ts +4 -0
  106. package/dist/components/ui/dot-matrix/dotm-3x3-4.js +3 -0
  107. package/dist/components/ui/dot-matrix/dotm-3x3-5.d.ts +4 -0
  108. package/dist/components/ui/dot-matrix/dotm-3x3-5.js +3 -0
  109. package/dist/components/ui/dot-matrix/dotm-3x3-6.d.ts +4 -0
  110. package/dist/components/ui/dot-matrix/dotm-3x3-6.js +19 -0
  111. package/dist/components/ui/dot-matrix/dotm-3x3-7.d.ts +4 -0
  112. package/dist/components/ui/dot-matrix/dotm-3x3-7.js +19 -0
  113. package/dist/components/ui/dot-matrix/dotm-3x3-8.d.ts +4 -0
  114. package/dist/components/ui/dot-matrix/dotm-3x3-8.js +19 -0
  115. package/dist/components/ui/dot-matrix/dotm-3x3-9.d.ts +4 -0
  116. package/dist/components/ui/dot-matrix/dotm-3x3-9.js +23 -0
  117. package/dist/components/ui/dot-matrix/dotm-circular-1.d.ts +4 -0
  118. package/dist/components/ui/dot-matrix/dotm-circular-1.js +28 -0
  119. package/dist/components/ui/dot-matrix/dotm-circular-10.d.ts +4 -0
  120. package/dist/components/ui/dot-matrix/dotm-circular-10.js +40 -0
  121. package/dist/components/ui/dot-matrix/dotm-circular-11.d.ts +4 -0
  122. package/dist/components/ui/dot-matrix/dotm-circular-11.js +37 -0
  123. package/dist/components/ui/dot-matrix/dotm-circular-12.d.ts +4 -0
  124. package/dist/components/ui/dot-matrix/dotm-circular-12.js +42 -0
  125. package/dist/components/ui/dot-matrix/dotm-circular-14.d.ts +4 -0
  126. package/dist/components/ui/dot-matrix/dotm-circular-14.js +37 -0
  127. package/dist/components/ui/dot-matrix/dotm-circular-15.d.ts +4 -0
  128. package/dist/components/ui/dot-matrix/dotm-circular-15.js +49 -0
  129. package/dist/components/ui/dot-matrix/dotm-circular-17.d.ts +4 -0
  130. package/dist/components/ui/dot-matrix/dotm-circular-17.js +31 -0
  131. package/dist/components/ui/dot-matrix/dotm-circular-2.d.ts +4 -0
  132. package/dist/components/ui/dot-matrix/dotm-circular-2.js +37 -0
  133. package/dist/components/ui/dot-matrix/dotm-circular-3.d.ts +4 -0
  134. package/dist/components/ui/dot-matrix/dotm-circular-3.js +54 -0
  135. package/dist/components/ui/dot-matrix/dotm-circular-4.d.ts +4 -0
  136. package/dist/components/ui/dot-matrix/dotm-circular-4.js +35 -0
  137. package/dist/components/ui/dot-matrix/dotm-circular-5.d.ts +4 -0
  138. package/dist/components/ui/dot-matrix/dotm-circular-5.js +30 -0
  139. package/dist/components/ui/dot-matrix/dotm-circular-6.d.ts +4 -0
  140. package/dist/components/ui/dot-matrix/dotm-circular-6.js +37 -0
  141. package/dist/components/ui/dot-matrix/dotm-circular-7.d.ts +4 -0
  142. package/dist/components/ui/dot-matrix/dotm-circular-7.js +25 -0
  143. package/dist/components/ui/dot-matrix/dotm-circular-8.d.ts +4 -0
  144. package/dist/components/ui/dot-matrix/dotm-circular-8.js +26 -0
  145. package/dist/components/ui/dot-matrix/dotm-circular-9.d.ts +4 -0
  146. package/dist/components/ui/dot-matrix/dotm-circular-9.js +41 -0
  147. package/dist/components/ui/dot-matrix/dotm-square-1.d.ts +4 -0
  148. package/dist/components/ui/dot-matrix/dotm-square-1.js +27 -0
  149. package/dist/components/ui/dot-matrix/dotm-square-10.d.ts +4 -0
  150. package/dist/components/ui/dot-matrix/dotm-square-10.js +27 -0
  151. package/dist/components/ui/dot-matrix/dotm-square-11.d.ts +4 -0
  152. package/dist/components/ui/dot-matrix/dotm-square-11.js +25 -0
  153. package/dist/components/ui/dot-matrix/dotm-square-12.d.ts +4 -0
  154. package/dist/components/ui/dot-matrix/dotm-square-12.js +28 -0
  155. package/dist/components/ui/dot-matrix/dotm-square-13.d.ts +4 -0
  156. package/dist/components/ui/dot-matrix/dotm-square-13.js +45 -0
  157. package/dist/components/ui/dot-matrix/dotm-square-14.d.ts +4 -0
  158. package/dist/components/ui/dot-matrix/dotm-square-14.js +38 -0
  159. package/dist/components/ui/dot-matrix/dotm-square-15.d.ts +4 -0
  160. package/dist/components/ui/dot-matrix/dotm-square-15.js +31 -0
  161. package/dist/components/ui/dot-matrix/dotm-square-16.d.ts +4 -0
  162. package/dist/components/ui/dot-matrix/dotm-square-16.js +33 -0
  163. package/dist/components/ui/dot-matrix/dotm-square-17.d.ts +4 -0
  164. package/dist/components/ui/dot-matrix/dotm-square-17.js +27 -0
  165. package/dist/components/ui/dot-matrix/dotm-square-18.d.ts +4 -0
  166. package/dist/components/ui/dot-matrix/dotm-square-18.js +29 -0
  167. package/dist/components/ui/dot-matrix/dotm-square-19.d.ts +4 -0
  168. package/dist/components/ui/dot-matrix/dotm-square-19.js +74 -0
  169. package/dist/components/ui/dot-matrix/dotm-square-2.d.ts +4 -0
  170. package/dist/components/ui/dot-matrix/dotm-square-2.js +72 -0
  171. package/dist/components/ui/dot-matrix/dotm-square-20.d.ts +4 -0
  172. package/dist/components/ui/dot-matrix/dotm-square-20.js +79 -0
  173. package/dist/components/ui/dot-matrix/dotm-square-3.d.ts +4 -0
  174. package/dist/components/ui/dot-matrix/dotm-square-3.js +23 -0
  175. package/dist/components/ui/dot-matrix/dotm-square-4.d.ts +4 -0
  176. package/dist/components/ui/dot-matrix/dotm-square-4.js +41 -0
  177. package/dist/components/ui/dot-matrix/dotm-square-5.d.ts +4 -0
  178. package/dist/components/ui/dot-matrix/dotm-square-5.js +23 -0
  179. package/dist/components/ui/dot-matrix/dotm-square-6.d.ts +4 -0
  180. package/dist/components/ui/dot-matrix/dotm-square-6.js +20 -0
  181. package/dist/components/ui/dot-matrix/dotm-square-7.d.ts +4 -0
  182. package/dist/components/ui/dot-matrix/dotm-square-7.js +43 -0
  183. package/dist/components/ui/dot-matrix/dotm-square-8.d.ts +4 -0
  184. package/dist/components/ui/dot-matrix/dotm-square-8.js +57 -0
  185. package/dist/components/ui/dot-matrix/dotm-square-9.d.ts +4 -0
  186. package/dist/components/ui/dot-matrix/dotm-square-9.js +89 -0
  187. package/dist/components/ui/dot-matrix/session-dot-matrix.d.ts +46 -0
  188. package/dist/components/ui/dot-matrix/session-dot-matrix.js +153 -0
  189. package/dist/components/ui/drawer.d.ts +15 -0
  190. package/dist/components/ui/drawer.js +35 -0
  191. package/dist/components/ui/dropdown-menu.d.ts +49 -0
  192. package/dist/components/ui/dropdown-menu.js +113 -0
  193. package/dist/components/ui/emoji-picker.d.ts +15 -0
  194. package/dist/components/ui/emoji-picker.js +137 -0
  195. package/dist/components/ui/emoji-tint.d.ts +41 -0
  196. package/dist/components/ui/emoji-tint.js +131 -0
  197. package/dist/components/ui/empty.d.ts +11 -0
  198. package/dist/components/ui/empty.js +33 -0
  199. package/dist/components/ui/entity-avatar.d.ts +84 -0
  200. package/dist/components/ui/entity-avatar.js +106 -0
  201. package/dist/components/ui/faded-scroll-area.d.ts +8 -0
  202. package/dist/components/ui/faded-scroll-area.js +80 -0
  203. package/dist/components/ui/favicon-avatar.d.ts +32 -0
  204. package/dist/components/ui/favicon-avatar.js +18 -0
  205. package/dist/components/ui/field.d.ts +15 -0
  206. package/dist/components/ui/field.js +48 -0
  207. package/dist/components/ui/file-tree.d.ts +32 -0
  208. package/dist/components/ui/file-tree.js +30 -0
  209. package/dist/components/ui/glyph-face.d.ts +18 -0
  210. package/dist/components/ui/glyph-face.js +37 -0
  211. package/dist/components/ui/glyph-paths-source.d.ts +2 -0
  212. package/dist/components/ui/glyph-paths-source.js +40 -0
  213. package/dist/components/ui/glyph-paths.generated.d.ts +2 -0
  214. package/dist/components/ui/glyph-paths.generated.js +207 -0
  215. package/dist/components/ui/glyph-picker.d.ts +22 -0
  216. package/dist/components/ui/glyph-picker.js +118 -0
  217. package/dist/components/ui/glyph-registry.d.ts +36 -0
  218. package/dist/components/ui/glyph-registry.js +479 -0
  219. package/dist/components/ui/glyph-tint.d.ts +6 -0
  220. package/dist/components/ui/glyph-tint.js +93 -0
  221. package/dist/components/ui/hint.d.ts +14 -0
  222. package/dist/components/ui/hint.js +12 -0
  223. package/dist/components/ui/histogram-bars.d.ts +38 -0
  224. package/dist/components/ui/histogram-bars.js +93 -0
  225. package/dist/components/ui/hover-card.d.ts +28 -0
  226. package/dist/components/ui/hover-card.js +35 -0
  227. package/dist/components/ui/icon-provider.d.ts +23 -0
  228. package/dist/components/ui/icon-provider.js +30 -0
  229. package/dist/components/ui/info-banner.d.ts +14 -0
  230. package/dist/components/ui/info-banner.js +72 -0
  231. package/dist/components/ui/inline-meta.d.ts +6 -0
  232. package/dist/components/ui/inline-meta.js +8 -0
  233. package/dist/components/ui/input-group.d.ts +19 -0
  234. package/dist/components/ui/input-group.js +73 -0
  235. package/dist/components/ui/input.d.ts +26 -0
  236. package/dist/components/ui/input.js +23 -0
  237. package/dist/components/ui/item.d.ts +23 -0
  238. package/dist/components/ui/item.js +67 -0
  239. package/dist/components/ui/kbd.d.ts +3 -0
  240. package/dist/components/ui/kbd.js +20 -0
  241. package/dist/components/ui/kortix-asterisk.d.ts +6 -0
  242. package/dist/components/ui/kortix-asterisk.js +17 -0
  243. package/dist/components/ui/kortix-icons.d.ts +2 -0
  244. package/dist/components/ui/kortix-icons.js +17 -0
  245. package/dist/components/ui/kortix-loader.d.ts +76 -0
  246. package/dist/components/ui/kortix-loader.js +74 -0
  247. package/dist/components/ui/kortix-logo.d.ts +30 -0
  248. package/dist/components/ui/kortix-logo.js +47 -0
  249. package/dist/components/ui/label.d.ts +4 -0
  250. package/dist/components/ui/label.js +9 -0
  251. package/dist/components/ui/list.d.ts +15 -0
  252. package/dist/components/ui/list.js +25 -0
  253. package/dist/components/ui/loading.d.ts +19 -0
  254. package/dist/components/ui/loading.js +31 -0
  255. package/dist/components/ui/local-time.d.ts +34 -0
  256. package/dist/components/ui/local-time.js +60 -0
  257. package/dist/components/ui/map.d.ts +101 -0
  258. package/dist/components/ui/map.js +257 -0
  259. package/dist/components/ui/marker.d.ts +14 -0
  260. package/dist/components/ui/marker.js +28 -0
  261. package/dist/components/ui/menu-recipe.d.ts +102 -0
  262. package/dist/components/ui/menu-recipe.js +129 -0
  263. package/dist/components/ui/mermaid-render.d.ts +51 -0
  264. package/dist/components/ui/mermaid-render.js +65 -0
  265. package/dist/components/ui/mermaid-renderer.d.ts +13 -0
  266. package/dist/components/ui/mermaid-renderer.js +340 -0
  267. package/dist/components/ui/message.d.ts +15 -0
  268. package/dist/components/ui/message.js +26 -0
  269. package/dist/components/ui/modal.d.ts +104 -0
  270. package/dist/components/ui/modal.js +180 -0
  271. package/dist/components/ui/navigation-menu.d.ts +16 -0
  272. package/dist/components/ui/navigation-menu.js +35 -0
  273. package/dist/components/ui/page-search-bar.d.ts +11 -0
  274. package/dist/components/ui/page-search-bar.js +13 -0
  275. package/dist/components/ui/phone-input.d.ts +7 -0
  276. package/dist/components/ui/phone-input.js +59 -0
  277. package/dist/components/ui/pixel-kortix-mark.d.ts +13 -0
  278. package/dist/components/ui/pixel-kortix-mark.js +40 -0
  279. package/dist/components/ui/popover.d.ts +10 -0
  280. package/dist/components/ui/popover.js +38 -0
  281. package/dist/components/ui/portal.d.ts +5 -0
  282. package/dist/components/ui/portal.js +15 -0
  283. package/dist/components/ui/preview-image.d.ts +14 -0
  284. package/dist/components/ui/preview-image.js +58 -0
  285. package/dist/components/ui/progress-ring.d.ts +6 -0
  286. package/dist/components/ui/progress-ring.js +9 -0
  287. package/dist/components/ui/progress.d.ts +6 -0
  288. package/dist/components/ui/progress.js +8 -0
  289. package/dist/components/ui/radio-group.d.ts +12 -0
  290. package/dist/components/ui/radio-group.js +20 -0
  291. package/dist/components/ui/resizable.d.ts +24 -0
  292. package/dist/components/ui/resizable.js +16 -0
  293. package/dist/components/ui/scroll-area.d.ts +5 -0
  294. package/dist/components/ui/scroll-area.js +11 -0
  295. package/dist/components/ui/section-card.d.ts +37 -0
  296. package/dist/components/ui/section-card.js +14 -0
  297. package/dist/components/ui/section.d.ts +10 -0
  298. package/dist/components/ui/section.js +22 -0
  299. package/dist/components/ui/select.d.ts +25 -0
  300. package/dist/components/ui/select.js +59 -0
  301. package/dist/components/ui/separator.d.ts +4 -0
  302. package/dist/components/ui/separator.js +8 -0
  303. package/dist/components/ui/shader-safe.d.ts +48 -0
  304. package/dist/components/ui/shader-safe.js +74 -0
  305. package/dist/components/ui/sheet.d.ts +32 -0
  306. package/dist/components/ui/sheet.js +55 -0
  307. package/dist/components/ui/sidebar-context.d.ts +72 -0
  308. package/dist/components/ui/sidebar-context.js +36 -0
  309. package/dist/components/ui/sidebar-menu-primitives.d.ts +38 -0
  310. package/dist/components/ui/sidebar-menu-primitives.js +97 -0
  311. package/dist/components/ui/sidebar-panel.d.ts +36 -0
  312. package/dist/components/ui/sidebar-panel.js +265 -0
  313. package/dist/components/ui/sidebar-peek.d.ts +27 -0
  314. package/dist/components/ui/sidebar-peek.js +70 -0
  315. package/dist/components/ui/sidebar-width.d.ts +48 -0
  316. package/dist/components/ui/sidebar-width.js +62 -0
  317. package/dist/components/ui/sidebar.d.ts +18 -0
  318. package/dist/components/ui/sidebar.js +194 -0
  319. package/dist/components/ui/skeleton.d.ts +3 -0
  320. package/dist/components/ui/skeleton.js +6 -0
  321. package/dist/components/ui/slider-native.d.ts +7 -0
  322. package/dist/components/ui/slider-native.js +16 -0
  323. package/dist/components/ui/slider.d.ts +14 -0
  324. package/dist/components/ui/slider.js +48 -0
  325. package/dist/components/ui/sliding-tab-indicator.d.ts +61 -0
  326. package/dist/components/ui/sliding-tab-indicator.js +128 -0
  327. package/dist/components/ui/split-sheet.d.ts +61 -0
  328. package/dist/components/ui/split-sheet.js +239 -0
  329. package/dist/components/ui/spotlight-card.d.ts +8 -0
  330. package/dist/components/ui/spotlight-card.js +43 -0
  331. package/dist/components/ui/status-ring.d.ts +38 -0
  332. package/dist/components/ui/status-ring.js +38 -0
  333. package/dist/components/ui/status.d.ts +58 -0
  334. package/dist/components/ui/status.js +76 -0
  335. package/dist/components/ui/stepper.d.ts +28 -0
  336. package/dist/components/ui/stepper.js +73 -0
  337. package/dist/components/ui/switch.d.ts +8 -0
  338. package/dist/components/ui/switch.js +131 -0
  339. package/dist/components/ui/system-message.d.ts +23 -0
  340. package/dist/components/ui/system-message.js +51 -0
  341. package/dist/components/ui/table.d.ts +10 -0
  342. package/dist/components/ui/table.js +28 -0
  343. package/dist/components/ui/tabs.d.ts +73 -0
  344. package/dist/components/ui/tabs.js +207 -0
  345. package/dist/components/ui/tag.d.ts +7 -0
  346. package/dist/components/ui/tag.js +22 -0
  347. package/dist/components/ui/text-shimmer.d.ts +13 -0
  348. package/dist/components/ui/text-shimmer.js +91 -0
  349. package/dist/components/ui/textarea.d.ts +33 -0
  350. package/dist/components/ui/textarea.js +87 -0
  351. package/dist/components/ui/toast.d.ts +105 -0
  352. package/dist/components/ui/toast.js +233 -0
  353. package/dist/components/ui/toggle.d.ts +12 -0
  354. package/dist/components/ui/toggle.js +26 -0
  355. package/dist/components/ui/tooltip.d.ts +9 -0
  356. package/dist/components/ui/tooltip.js +16 -0
  357. package/dist/components/ui/trigger-variants.d.ts +14 -0
  358. package/dist/components/ui/trigger-variants.js +67 -0
  359. package/dist/components/ui/type-to-confirm-dialog.d.ts +88 -0
  360. package/dist/components/ui/type-to-confirm-dialog.js +101 -0
  361. package/dist/components/ui/typed-title-logic.d.ts +22 -0
  362. package/dist/components/ui/typed-title-logic.js +33 -0
  363. package/dist/components/ui/typed-title.d.ts +38 -0
  364. package/dist/components/ui/typed-title.js +66 -0
  365. package/dist/components/ui/typing-animation.d.ts +36 -0
  366. package/dist/components/ui/typing-animation.js +141 -0
  367. package/dist/components/ui/user-avatar.d.ts +47 -0
  368. package/dist/components/ui/user-avatar.js +46 -0
  369. package/dist/hooks/use-debounce.d.ts +4 -0
  370. package/dist/hooks/use-debounce.js +17 -0
  371. package/dist/hooks/use-is-dark.d.ts +2 -0
  372. package/dist/hooks/use-is-dark.js +27 -0
  373. package/dist/hooks/use-mobile.d.ts +2 -0
  374. package/dist/hooks/use-mobile.js +15 -0
  375. package/dist/hooks/use-proximity-hover.d.ts +52 -0
  376. package/dist/hooks/use-proximity-hover.js +232 -0
  377. package/dist/icons/close.d.ts +2 -0
  378. package/dist/icons/close.js +7 -0
  379. package/dist/icons/copy.d.ts +3 -0
  380. package/dist/icons/copy.js +6 -0
  381. package/dist/icons/sidebar-toggle.d.ts +13 -0
  382. package/dist/icons/sidebar-toggle.js +13 -0
  383. package/dist/index.d.ts +24 -0
  384. package/dist/index.js +33 -0
  385. package/dist/lib/dotmatrix-core.d.ts +113 -0
  386. package/dist/lib/dotmatrix-core.js +920 -0
  387. package/dist/lib/dotmatrix-hooks.d.ts +28 -0
  388. package/dist/lib/dotmatrix-hooks.js +151 -0
  389. package/dist/lib/favicon.d.ts +4 -0
  390. package/dist/lib/favicon.js +21 -0
  391. package/dist/lib/font-weight.d.ts +6 -0
  392. package/dist/lib/font-weight.js +6 -0
  393. package/dist/lib/icon-config.d.ts +33 -0
  394. package/dist/lib/icon-config.js +22 -0
  395. package/dist/lib/icon-context.d.ts +34 -0
  396. package/dist/lib/icon-context.js +81 -0
  397. package/dist/lib/portal-root.d.ts +8 -0
  398. package/dist/lib/portal-root.js +26 -0
  399. package/dist/lib/settle.d.ts +16 -0
  400. package/dist/lib/settle.js +29 -0
  401. package/dist/lib/springs.d.ts +31 -0
  402. package/dist/lib/springs.js +29 -0
  403. package/dist/lib/utils.d.ts +2 -0
  404. package/dist/lib/utils.js +5 -0
  405. package/dist/lib/z-stack.d.ts +55 -0
  406. package/dist/lib/z-stack.js +130 -0
  407. package/dist/providers/ui-provider.d.ts +141 -0
  408. package/dist/providers/ui-provider.js +93 -0
  409. package/dist/styles/dotmatrix-loader.css +1239 -0
  410. package/dist/styles/fonts.css +46 -0
  411. package/dist/styles/tailwind.css +10 -0
  412. package/dist/styles/theme.css +1019 -0
  413. package/dist/styles/tokens.css +146 -0
  414. package/dist/styles.css +2 -0
  415. package/package.json +874 -4
  416. package/skills/kortix-ui/SKILL.md +150 -0
@@ -0,0 +1,118 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { CheckIcon, MagnifyingGlassIcon } from '@phosphor-icons/react';
4
+ import { useState } from 'react';
5
+ import { GLYPH_SEARCH, glyphComponent } from './glyph-registry.js';
6
+ import { glyphForeground, glyphTint, glyphTintHover } from './glyph-tint.js';
7
+ import { InputGroupSearch, InputGroupSearchClear, InputGroupSearchIcon, InputGroupSearchInput, } from './input-group.js';
8
+ import { cn } from '../../lib/utils.js';
9
+ import { PROJECT_GLYPH_COLORS, PROJECT_GLYPH_NAMES } from '../../_vendor/kortix-shared.js';
10
+ /**
11
+ * Glyph grid for picking a project icon. Same geometry contract as
12
+ * `emoji-picker.tsx` on purpose: `h-[368px]`, 9 columns of `size-8` cells in
13
+ * rows padded `px-1.5`. `project-icon-field.tsx` sizes the popover to that
14
+ * exact width (9 * 8 + 2 * 1.5 spacing units); a different column count or a
15
+ * different fixed height changes the popover's geometry the moment the Icon
16
+ * tab is selected, so both numbers are copied here, not re-derived.
17
+ *
18
+ * glyph-picker.test.tsx checks those same four literals — `size-8`, `px-1.5`,
19
+ * `grid-cols-9`, `h-[368px]` — but never against THIS raw, commented file: the
20
+ * three grid classes are asserted against `renderToStaticMarkup` output (real
21
+ * shipped DOM, no comments exist there at all), and the height comparison
22
+ * strips every block and line comment out of both this file and
23
+ * emoji-picker.tsx before matching. A doc comment repeating these class
24
+ * names — like this one — is deliberately safe to write and cannot make
25
+ * either test pass or fail.
26
+ *
27
+ * All 202 catalogue glyphs render in ONE `grid-cols-9`, in
28
+ * `PROJECT_GLYPH_NAMES`'s declaration order — no category headers. This
29
+ * shipped with an 8-category sub-grid (sticky header per category) first;
30
+ * review feedback was that the categories added scannable structure but no
31
+ * function — nothing filters, sorts, or navigates by category — so they were
32
+ * cut. `PROJECT_GLYPH_GROUPS` (in `@kortix/shared`) still owns the grouping
33
+ * and the ordering; `PROJECT_GLYPH_NAMES` is that same catalogue flattened in
34
+ * declaration order, so related glyphs stay adjacent even with the headers
35
+ * gone. Flattening it a second time here, instead of importing the flat
36
+ * export, would risk a reordering that drifts from the shared source.
37
+ *
38
+ * The grid IS the colour preview: every cell paints in `color`, not just the
39
+ * one the user last picked. Clicking a swatch re-tints the whole grid and
40
+ * leaves the popover open — colour is a modifier you can change your mind
41
+ * about. Clicking a glyph commits `{ name, color }` and closes it — the glyph
42
+ * is the choice. That asymmetry is deliberate, not an oversight.
43
+ *
44
+ * Unlike an emoji cell (tinted only while `data-active`, via frimousse's
45
+ * pointer/keyboard tracking), a glyph cell carries its colour in TWO layers:
46
+ * the icon itself is tinted at rest (`glyphForeground`, so the preview reads
47
+ * before you ever touch the grid), and the fill + 1px inset ring appear only
48
+ * on hover (`glyphTintHover` + a local ring map below) — the same tile
49
+ * treatment an emoji cell shows on `data-active`, so hovering either tab reads
50
+ * as the same surface.
51
+ */
52
+ /**
53
+ * Hover-only ring colour, one literal class per palette colour.
54
+ *
55
+ * `glyph-tint.ts` exports the REST tile (`glyphTint`: fill + ring, always on —
56
+ * built for a host like the project-icon trigger button that stays tinted
57
+ * once an icon is picked) and the hover FILL restated on its own
58
+ * (`glyphTintHover`, for fighting a host variant's `hover:bg-*`). Neither is a
59
+ * hover-scoped RING. A glyph cell here has no rest-state tile at all — only
60
+ * the tinted icon — so the ring has to be introduced fresh, hover-scoped, and
61
+ * it has to stay a literal string per colour: Tailwind v4 extracts class names
62
+ * by scanning source TEXT, so gluing a `hover:` prefix onto a helper's return
63
+ * value at runtime would compile to nothing.
64
+ */
65
+ const GLYPH_HOVER_RING = {
66
+ grey: 'hover:inset-ring-glyph-ring-grey',
67
+ red: 'hover:inset-ring-glyph-ring-red',
68
+ orange: 'hover:inset-ring-glyph-ring-orange',
69
+ yellow: 'hover:inset-ring-glyph-ring-yellow',
70
+ lime: 'hover:inset-ring-glyph-ring-lime',
71
+ blue: 'hover:inset-ring-glyph-ring-blue',
72
+ purple: 'hover:inset-ring-glyph-ring-purple',
73
+ magenta: 'hover:inset-ring-glyph-ring-magenta',
74
+ };
75
+ /** `color` is typed `string` at the component boundary (it round-trips through
76
+ * plain project state, same as `glyph-tint.ts`'s own props) but the hover-ring
77
+ * map above is keyed by the narrow palette type, so an unrecognised value —
78
+ * stale cached data, a hand-edited row — falls back to grey rather than
79
+ * indexing to `undefined` and silently dropping the hover ring. */
80
+ function resolveGlyphColor(color) {
81
+ return PROJECT_GLYPH_COLORS.includes(color)
82
+ ? color
83
+ : 'grey';
84
+ }
85
+ /** Ring geometry declared once — only the colour is per-instance below, same
86
+ * reasoning as EMOJI_BUTTON's single `data-[active]:inset-ring-1`. */
87
+ const GLYPH_BUTTON = cn('flex size-8 items-center justify-center rounded-md', 'cursor-pointer select-none', 'transition-[background-color,box-shadow,scale] duration-100 active:scale-[0.96]', 'hover:inset-ring-1');
88
+ /**
89
+ * A glyph's keyword list always includes its own lowercased name
90
+ * (glyph-registry.test.tsx pins this), so an empty query matches everything.
91
+ *
92
+ * `startsWith`, NOT `includes`. A substring test matches the middle of a word,
93
+ * which stayed tolerable at 64 glyphs and stopped being so at 202: "cat"
94
+ * matched `dupli(cat)e` and `notifi(cat)ion`, so searching for the cat returned
95
+ * Copy and Bell above it. Every keyword here is a whole word a person would
96
+ * actually type, so anchoring to the start costs nothing real and removes a
97
+ * class of result that reads as the search being broken.
98
+ */
99
+ export function matchesSearch(name, query) {
100
+ if (!query)
101
+ return true;
102
+ return GLYPH_SEARCH[name]?.some((keyword) => keyword.startsWith(query)) ?? false;
103
+ }
104
+ export function GlyphPicker({ color, onColorChange, onGlyphSelect, className, }) {
105
+ const [search, setSearch] = useState('');
106
+ const query = search.trim().toLowerCase();
107
+ const resolvedColor = resolveGlyphColor(color);
108
+ // Filtered even when `query` is empty — `matchesSearch` short-circuits to
109
+ // `true` there, so this is the one code path for both states rather than a
110
+ // branch that has to be proven to agree with its sibling.
111
+ const names = PROJECT_GLYPH_NAMES.filter((name) => matchesSearch(name, query));
112
+ return (_jsxs("div", { className: cn('isolate flex h-[368px] w-full flex-col', className), children: [_jsxs("div", { className: "space-y-2 p-1", children: [_jsxs(InputGroupSearch, { children: [_jsx(InputGroupSearchIcon, { children: _jsx(MagnifyingGlassIcon, {}) }), _jsx(InputGroupSearchInput, { "aria-label": "Search icons", placeholder: "Search icons", variant: "popover", size: "sm", value: search, onChange: (event) => setSearch(event.target.value) }), _jsx(InputGroupSearchClear, { onClick: () => setSearch('') })] }), _jsx("div", { className: "flex items-center justify-between gap-1.5", children: PROJECT_GLYPH_COLORS.map((paletteColor) => (_jsx("button", { type: "button", "data-swatch": paletteColor, "aria-pressed": paletteColor === resolvedColor, "aria-label": `Colour: ${paletteColor}`, onClick: () => onColorChange(paletteColor), className: cn('flex size-7 shrink-0 items-center justify-center rounded-full', 'cursor-pointer transition-[scale] duration-100 active:scale-[0.96]', glyphTint(paletteColor)), children: paletteColor === resolvedColor ? (_jsx(CheckIcon, { className: cn('size-3.5', glyphForeground(paletteColor)) })) : null }, paletteColor))) })] }), _jsx("div", { className: "relative flex-1 overflow-y-auto", children: names.length > 0 ? (_jsx("div", { className: "grid grid-cols-9 px-1.5 pb-1.5 select-none", children: names.map((name) => {
113
+ const Glyph = glyphComponent(name);
114
+ if (!Glyph)
115
+ return null;
116
+ return (_jsx("button", { type: "button", "data-glyph": name, "aria-label": name, onClick: () => onGlyphSelect({ name, color: resolvedColor }), className: cn(GLYPH_BUTTON, glyphForeground(color), glyphTintHover(color), GLYPH_HOVER_RING[resolvedColor]), children: _jsx(Glyph, { className: "size-4" }) }, name));
117
+ }) })) : (_jsxs("p", { className: "text-muted-foreground absolute inset-0 flex items-center justify-center px-6 text-center text-sm text-balance", children: ["No icons for \u201C", search, "\u201D"] })) })] }));
118
+ }
@@ -0,0 +1,36 @@
1
+ /**
2
+ * name -> Phosphor component, for the 202 glyphs in the shared catalogue.
3
+ *
4
+ * The imports are EXPLICIT and one per glyph. `import * as Phosphor` would
5
+ * resolve names dynamically and defeat tree-shaking, pulling all 1512 icons
6
+ * (~5.3 MB of path data) into the bundle instead of the 202 we use (~704 KB
7
+ * raw, well under budget gzipped).
8
+ *
9
+ * The catalogue in @kortix/shared is the source of truth for WHICH names exist;
10
+ * this file is the source of truth for what each one DRAWS. glyph-registry.test
11
+ * asserts the two agree in both directions, so a name added to one and not the
12
+ * other fails CI rather than shipping a blank tile.
13
+ */
14
+ import { type Icon } from '@phosphor-icons/react';
15
+ export declare const GLYPH_COMPONENTS: Record<string, Icon>;
16
+ /**
17
+ * `Object.hasOwn`, not a bare index. `GLYPH_COMPONENTS` is an object literal, so
18
+ * it inherits Object.prototype: a bare `GLYPH_COMPONENTS['toString']` returns a
19
+ * function — truthy, not a component — and React throws when it tries to render
20
+ * it. Same for `constructor` and `valueOf`.
21
+ *
22
+ * Not reachable through the API today: `normalizeProjectGlyph` allowlists the
23
+ * name against the catalogue on every write AND on the read path, and rejects
24
+ * all of those keys (verified). This guard exists so the helper is safe on its
25
+ * own terms rather than only because two other layers happen to hold — a future
26
+ * caller passing a name from a URL, localStorage, or a cached payload would
27
+ * otherwise turn a typo into a render crash.
28
+ */
29
+ export declare function glyphComponent(name: string): Icon | null;
30
+ /**
31
+ * Search terms per glyph. Always includes the name lowercased, plus the words a
32
+ * user would actually type — 'bin' and 'delete' for Trash, 'buy' and 'basket'
33
+ * for ShoppingCart. Without these, search matches only the Phosphor identifier,
34
+ * which is not a word most people would guess.
35
+ */
36
+ export declare const GLYPH_SEARCH: Record<string, string[]>;
@@ -0,0 +1,479 @@
1
+ 'use client';
2
+ /**
3
+ * name -> Phosphor component, for the 202 glyphs in the shared catalogue.
4
+ *
5
+ * The imports are EXPLICIT and one per glyph. `import * as Phosphor` would
6
+ * resolve names dynamically and defeat tree-shaking, pulling all 1512 icons
7
+ * (~5.3 MB of path data) into the bundle instead of the 202 we use (~704 KB
8
+ * raw, well under budget gzipped).
9
+ *
10
+ * The catalogue in @kortix/shared is the source of truth for WHICH names exist;
11
+ * this file is the source of truth for what each one DRAWS. glyph-registry.test
12
+ * asserts the two agree in both directions, so a name added to one and not the
13
+ * other fails CI rather than shipping a blank tile.
14
+ */
15
+ import { AirplaneIcon, AlienIcon, ArchiveIcon, ArrowDownIcon, ArrowLeftIcon, ArrowRightIcon, ArrowSquareOutIcon, ArrowUUpLeftIcon, ArrowUpIcon, ArrowsClockwiseIcon, ArrowsInIcon, ArrowsLeftRightIcon, ArrowsOutIcon, AsteriskIcon, AtIcon, BabyIcon, BandaidsIcon, BankIcon, BarbellIcon, BaseballIcon, BasketballIcon, BeerSteinIcon, BellIcon, BicycleIcon, BirdIcon, BoatIcon, BoneIcon, BookIcon, BookmarkIcon, BreadIcon, BriefcaseIcon, BugIcon, BusIcon, ButterflyIcon, CactusIcon, CakeIcon, CarIcon, CarrotIcon, CatIcon, ChartBarIcon, ChartLineIcon, ChartPieIcon, CheckIcon, CircleIcon, ClipboardIcon, CloudIcon, CloudLightningIcon, CloudRainIcon, CloudSnowIcon, ClubIcon, CodeIcon, CoffeeIcon, CoinsIcon, CookieIcon, CopyIcon, CowIcon, CpuIcon, CreditCardIcon, CrownIcon, CubeIcon, CurrencyDollarIcon, DatabaseIcon, DeviceMobileIcon, DiamondIcon, DiscIcon, DogIcon, DropIcon, EggIcon, EqualizerIcon, EraserIcon, EyeIcon, FeatherIcon, FileIcon, FileTextIcon, FilesIcon, FireIcon, FirstAidIcon, FishIcon, FlagIcon, FlowerIcon, FolderIcon, FolderOpenIcon, FolderPlusIcon, FootballIcon, GhostIcon, GiftIcon, GitBranchIcon, GolfIcon, GuitarIcon, HamburgerIcon, HammerIcon, HandIcon, HandshakeIcon, HashIcon, HeadphonesIcon, HeartIcon, HeartbeatIcon, HexagonIcon, HorseIcon, IceCreamIcon, InfoIcon, JeepIcon, KeyIcon, KeyboardIcon, LeafIcon, LightbulbIcon, LightningIcon, LinkSimpleIcon, LockIcon, MartiniIcon, MedalIcon, MetronomeIcon, MicrophoneIcon, MinusIcon, MonitorIcon, MoonIcon, MotorcycleIcon, MountainsIcon, MusicNoteIcon, MusicNotesIcon, NewspaperIcon, NoteIcon, NotebookIcon, NumberCircleEightIcon, NumberCircleFiveIcon, NumberCircleFourIcon, NumberCircleNineIcon, NumberCircleOneIcon, NumberCircleSevenIcon, NumberCircleSixIcon, NumberCircleThreeIcon, NumberCircleTwoIcon, NumberCircleZeroIcon, PackageIcon, PaperclipIcon, PawPrintIcon, PencilIcon, PercentIcon, PersonSimpleRunIcon, PersonSimpleSwimIcon, PiggyBankIcon, PillIcon, PingPongIcon, PizzaIcon, PlanetIcon, PlaylistIcon, PlusIcon, PolygonIcon, QuestionIcon, RabbitIcon, RacquetIcon, RadioIcon, RainbowIcon, ReceiptIcon, RobotIcon, RocketIcon, ScissorsIcon, ScooterIcon, ShareNetworkIcon, ShoppingCartIcon, ShrimpIcon, SmileyIcon, SmileyMehIcon, SmileySadIcon, SnowflakeIcon, SoccerBallIcon, SpadeIcon, SparkleIcon, SpeakerHighIcon, SquareIcon, StarIcon, StethoscopeIcon, SunIcon, SunglassesIcon, SyringeIcon, TagIcon, TargetIcon, TaxiIcon, TennisBallIcon, TerminalIcon, ThermometerIcon, ThumbsUpIcon, TrainIcon, TrashIcon, TreeIcon, TrendDownIcon, TrendUpIcon, TriangleIcon, TrophyIcon, TruckIcon, UmbrellaIcon, UserIcon, UsersIcon, VanIcon, VolleyballIcon, WalletIcon, WarningIcon, WaveformIcon, WindIcon, WineIcon, WrenchIcon, XIcon, } from '@phosphor-icons/react';
16
+ export const GLYPH_COMPONENTS = {
17
+ // Objects
18
+ Trash: TrashIcon,
19
+ ShoppingCart: ShoppingCartIcon,
20
+ Package: PackageIcon,
21
+ Briefcase: BriefcaseIcon,
22
+ Gift: GiftIcon,
23
+ Lightbulb: LightbulbIcon,
24
+ Wrench: WrenchIcon,
25
+ Hammer: HammerIcon,
26
+ Key: KeyIcon,
27
+ Lock: LockIcon,
28
+ Umbrella: UmbrellaIcon,
29
+ Trophy: TrophyIcon,
30
+ // Shapes
31
+ Circle: CircleIcon,
32
+ Square: SquareIcon,
33
+ Triangle: TriangleIcon,
34
+ Diamond: DiamondIcon,
35
+ Hexagon: HexagonIcon,
36
+ Star: StarIcon,
37
+ Heart: HeartIcon,
38
+ Lightning: LightningIcon,
39
+ Spade: SpadeIcon,
40
+ Club: ClubIcon,
41
+ Cube: CubeIcon,
42
+ Polygon: PolygonIcon,
43
+ // Files
44
+ File: FileIcon,
45
+ FileText: FileTextIcon,
46
+ Folder: FolderIcon,
47
+ FolderOpen: FolderOpenIcon,
48
+ Note: NoteIcon,
49
+ Book: BookIcon,
50
+ Newspaper: NewspaperIcon,
51
+ Paperclip: PaperclipIcon,
52
+ Archive: ArchiveIcon,
53
+ Notebook: NotebookIcon,
54
+ Files: FilesIcon,
55
+ FolderPlus: FolderPlusIcon,
56
+ // Actions
57
+ Plus: PlusIcon,
58
+ Minus: MinusIcon,
59
+ Copy: CopyIcon,
60
+ Check: CheckIcon,
61
+ X: XIcon,
62
+ Pencil: PencilIcon,
63
+ Bookmark: BookmarkIcon,
64
+ Eraser: EraserIcon,
65
+ Scissors: ScissorsIcon,
66
+ LinkSimple: LinkSimpleIcon,
67
+ ShareNetwork: ShareNetworkIcon,
68
+ Clipboard: ClipboardIcon,
69
+ // Arrows
70
+ ArrowUp: ArrowUpIcon,
71
+ ArrowDown: ArrowDownIcon,
72
+ ArrowLeft: ArrowLeftIcon,
73
+ ArrowRight: ArrowRightIcon,
74
+ ArrowsClockwise: ArrowsClockwiseIcon,
75
+ ArrowSquareOut: ArrowSquareOutIcon,
76
+ TrendUp: TrendUpIcon,
77
+ TrendDown: TrendDownIcon,
78
+ ArrowsLeftRight: ArrowsLeftRightIcon,
79
+ ArrowUUpLeft: ArrowUUpLeftIcon,
80
+ ArrowsOut: ArrowsOutIcon,
81
+ ArrowsIn: ArrowsInIcon,
82
+ // Tech
83
+ Code: CodeIcon,
84
+ Terminal: TerminalIcon,
85
+ Database: DatabaseIcon,
86
+ Cloud: CloudIcon,
87
+ Cpu: CpuIcon,
88
+ Bug: BugIcon,
89
+ GitBranch: GitBranchIcon,
90
+ Rocket: RocketIcon,
91
+ Monitor: MonitorIcon,
92
+ DeviceMobile: DeviceMobileIcon,
93
+ Keyboard: KeyboardIcon,
94
+ Robot: RobotIcon,
95
+ // Nature
96
+ Leaf: LeafIcon,
97
+ Tree: TreeIcon,
98
+ Sun: SunIcon,
99
+ Moon: MoonIcon,
100
+ Drop: DropIcon,
101
+ Fire: FireIcon,
102
+ Mountains: MountainsIcon,
103
+ Planet: PlanetIcon,
104
+ Flower: FlowerIcon,
105
+ Cactus: CactusIcon,
106
+ Snowflake: SnowflakeIcon,
107
+ Rainbow: RainbowIcon,
108
+ // Symbols
109
+ Hash: HashIcon,
110
+ At: AtIcon,
111
+ Percent: PercentIcon,
112
+ Asterisk: AsteriskIcon,
113
+ Question: QuestionIcon,
114
+ Warning: WarningIcon,
115
+ Info: InfoIcon,
116
+ Bell: BellIcon,
117
+ Crown: CrownIcon,
118
+ Flag: FlagIcon,
119
+ Medal: MedalIcon,
120
+ Sparkle: SparkleIcon,
121
+ // Food
122
+ Carrot: CarrotIcon,
123
+ Pizza: PizzaIcon,
124
+ Hamburger: HamburgerIcon,
125
+ IceCream: IceCreamIcon,
126
+ Coffee: CoffeeIcon,
127
+ BeerStein: BeerSteinIcon,
128
+ Cookie: CookieIcon,
129
+ Cake: CakeIcon,
130
+ Egg: EggIcon,
131
+ Bread: BreadIcon,
132
+ Wine: WineIcon,
133
+ Martini: MartiniIcon,
134
+ // Animals
135
+ Dog: DogIcon,
136
+ Cat: CatIcon,
137
+ Bird: BirdIcon,
138
+ Butterfly: ButterflyIcon,
139
+ Rabbit: RabbitIcon,
140
+ Horse: HorseIcon,
141
+ Cow: CowIcon,
142
+ PawPrint: PawPrintIcon,
143
+ Fish: FishIcon,
144
+ Shrimp: ShrimpIcon,
145
+ Feather: FeatherIcon,
146
+ Bone: BoneIcon,
147
+ // Transport
148
+ Car: CarIcon,
149
+ Bus: BusIcon,
150
+ Truck: TruckIcon,
151
+ Train: TrainIcon,
152
+ Airplane: AirplaneIcon,
153
+ Bicycle: BicycleIcon,
154
+ Motorcycle: MotorcycleIcon,
155
+ Boat: BoatIcon,
156
+ Scooter: ScooterIcon,
157
+ Taxi: TaxiIcon,
158
+ Van: VanIcon,
159
+ Jeep: JeepIcon,
160
+ // People
161
+ User: UserIcon,
162
+ Users: UsersIcon,
163
+ Smiley: SmileyIcon,
164
+ SmileyMeh: SmileyMehIcon,
165
+ SmileySad: SmileySadIcon,
166
+ Ghost: GhostIcon,
167
+ Alien: AlienIcon,
168
+ Baby: BabyIcon,
169
+ PersonSimpleRun: PersonSimpleRunIcon,
170
+ Hand: HandIcon,
171
+ ThumbsUp: ThumbsUpIcon,
172
+ Eye: EyeIcon,
173
+ // Music
174
+ MusicNote: MusicNoteIcon,
175
+ MusicNotes: MusicNotesIcon,
176
+ Guitar: GuitarIcon,
177
+ Microphone: MicrophoneIcon,
178
+ SpeakerHigh: SpeakerHighIcon,
179
+ Radio: RadioIcon,
180
+ Playlist: PlaylistIcon,
181
+ Metronome: MetronomeIcon,
182
+ Waveform: WaveformIcon,
183
+ Disc: DiscIcon,
184
+ Headphones: HeadphonesIcon,
185
+ Equalizer: EqualizerIcon,
186
+ // Sport
187
+ Basketball: BasketballIcon,
188
+ Football: FootballIcon,
189
+ SoccerBall: SoccerBallIcon,
190
+ Baseball: BaseballIcon,
191
+ TennisBall: TennisBallIcon,
192
+ Barbell: BarbellIcon,
193
+ Target: TargetIcon,
194
+ Golf: GolfIcon,
195
+ Volleyball: VolleyballIcon,
196
+ PingPong: PingPongIcon,
197
+ Racquet: RacquetIcon,
198
+ PersonSimpleSwim: PersonSimpleSwimIcon,
199
+ // Money
200
+ CurrencyDollar: CurrencyDollarIcon,
201
+ Wallet: WalletIcon,
202
+ CreditCard: CreditCardIcon,
203
+ PiggyBank: PiggyBankIcon,
204
+ Coins: CoinsIcon,
205
+ Receipt: ReceiptIcon,
206
+ Bank: BankIcon,
207
+ ChartLine: ChartLineIcon,
208
+ Tag: TagIcon,
209
+ ChartBar: ChartBarIcon,
210
+ ChartPie: ChartPieIcon,
211
+ Handshake: HandshakeIcon,
212
+ // Care
213
+ CloudRain: CloudRainIcon,
214
+ CloudSnow: CloudSnowIcon,
215
+ CloudLightning: CloudLightningIcon,
216
+ Wind: WindIcon,
217
+ Thermometer: ThermometerIcon,
218
+ Sunglasses: SunglassesIcon,
219
+ Heartbeat: HeartbeatIcon,
220
+ Pill: PillIcon,
221
+ FirstAid: FirstAidIcon,
222
+ Syringe: SyringeIcon,
223
+ Bandaids: BandaidsIcon,
224
+ Stethoscope: StethoscopeIcon,
225
+ // Numbers
226
+ NumberCircleZero: NumberCircleZeroIcon,
227
+ NumberCircleOne: NumberCircleOneIcon,
228
+ NumberCircleTwo: NumberCircleTwoIcon,
229
+ NumberCircleThree: NumberCircleThreeIcon,
230
+ NumberCircleFour: NumberCircleFourIcon,
231
+ NumberCircleFive: NumberCircleFiveIcon,
232
+ NumberCircleSix: NumberCircleSixIcon,
233
+ NumberCircleSeven: NumberCircleSevenIcon,
234
+ NumberCircleEight: NumberCircleEightIcon,
235
+ NumberCircleNine: NumberCircleNineIcon,
236
+ };
237
+ /**
238
+ * `Object.hasOwn`, not a bare index. `GLYPH_COMPONENTS` is an object literal, so
239
+ * it inherits Object.prototype: a bare `GLYPH_COMPONENTS['toString']` returns a
240
+ * function — truthy, not a component — and React throws when it tries to render
241
+ * it. Same for `constructor` and `valueOf`.
242
+ *
243
+ * Not reachable through the API today: `normalizeProjectGlyph` allowlists the
244
+ * name against the catalogue on every write AND on the read path, and rejects
245
+ * all of those keys (verified). This guard exists so the helper is safe on its
246
+ * own terms rather than only because two other layers happen to hold — a future
247
+ * caller passing a name from a URL, localStorage, or a cached payload would
248
+ * otherwise turn a typo into a render crash.
249
+ */
250
+ export function glyphComponent(name) {
251
+ return Object.hasOwn(GLYPH_COMPONENTS, name) ? (GLYPH_COMPONENTS[name] ?? null) : null;
252
+ }
253
+ /**
254
+ * Search terms per glyph. Always includes the name lowercased, plus the words a
255
+ * user would actually type — 'bin' and 'delete' for Trash, 'buy' and 'basket'
256
+ * for ShoppingCart. Without these, search matches only the Phosphor identifier,
257
+ * which is not a word most people would guess.
258
+ */
259
+ export const GLYPH_SEARCH = {
260
+ // Objects
261
+ Trash: ['trash', 'bin', 'delete', 'remove'],
262
+ ShoppingCart: ['shoppingcart', 'cart', 'buy', 'basket', 'shop', 'store'],
263
+ Package: ['package', 'box', 'parcel', 'ship', 'delivery'],
264
+ Briefcase: ['briefcase', 'work', 'business', 'job', 'case'],
265
+ Gift: ['gift', 'present', 'reward', 'box'],
266
+ Lightbulb: ['lightbulb', 'idea', 'bulb', 'light', 'tip'],
267
+ Wrench: ['wrench', 'tool', 'fix', 'settings', 'repair'],
268
+ Hammer: ['hammer', 'tool', 'build', 'construct'],
269
+ Key: ['key', 'unlock', 'password', 'access', 'security'],
270
+ Lock: ['lock', 'secure', 'security', 'password', 'privacy', 'locked'],
271
+ Umbrella: ['umbrella', 'rain', 'weather', 'protect', 'insurance'],
272
+ Trophy: ['trophy', 'award', 'win', 'winner', 'prize', 'achievement'],
273
+ // Shapes
274
+ Circle: ['circle', 'round', 'dot', 'shape'],
275
+ Square: ['square', 'box', 'shape'],
276
+ Triangle: ['triangle', 'shape'],
277
+ Diamond: ['diamond', 'gem', 'shape', 'rhombus'],
278
+ Hexagon: ['hexagon', 'shape', 'hex'],
279
+ Star: ['star', 'favourite', 'favorite', 'rating'],
280
+ Heart: ['heart', 'love', 'like', 'favourite', 'favorite'],
281
+ Lightning: ['lightning', 'bolt', 'fast', 'power', 'energy', 'zap'],
282
+ Spade: ['spade', 'card', 'cards', 'suit', 'poker'],
283
+ Club: ['club', 'card', 'cards', 'suit', 'poker'],
284
+ Cube: ['cube', '3d', 'box', 'shape', 'block'],
285
+ Polygon: ['polygon', 'shape', 'geometry', 'vector'],
286
+ // Files
287
+ File: ['file', 'document', 'page'],
288
+ FileText: ['filetext', 'document', 'text', 'doc', 'page'],
289
+ Folder: ['folder', 'directory'],
290
+ FolderOpen: ['folderopen', 'directory', 'open'],
291
+ Note: ['note', 'memo', 'sticky'],
292
+ Book: ['book', 'read', 'docs', 'manual', 'library'],
293
+ Newspaper: ['newspaper', 'news', 'article', 'press'],
294
+ Paperclip: ['paperclip', 'attach', 'attachment', 'clip'],
295
+ Archive: ['archive', 'zip', 'storage', 'box', 'compress'],
296
+ Notebook: ['notebook', 'journal', 'write', 'notes'],
297
+ Files: ['files', 'documents', 'multiple', 'stack'],
298
+ FolderPlus: ['folderplus', 'newfolder', 'add', 'create', 'directory'],
299
+ // Actions
300
+ Plus: ['plus', 'add', 'new', 'create'],
301
+ Minus: ['minus', 'remove', 'subtract', 'less'],
302
+ Copy: ['copy', 'duplicate', 'clone'],
303
+ Check: ['check', 'done', 'tick', 'complete', 'ok'],
304
+ X: ['x', 'close', 'cancel', 'cross', 'remove'],
305
+ Pencil: ['pencil', 'edit', 'write', 'draw'],
306
+ Bookmark: ['bookmark', 'save', 'mark', 'flag'],
307
+ Eraser: ['eraser', 'delete', 'remove', 'undo', 'clear'],
308
+ Scissors: ['scissors', 'cut', 'trim', 'snip'],
309
+ LinkSimple: ['linksimple', 'link', 'url', 'chain', 'connect'],
310
+ ShareNetwork: ['sharenetwork', 'share', 'network', 'send', 'distribute'],
311
+ Clipboard: ['clipboard', 'paste', 'copy'],
312
+ // Arrows
313
+ ArrowUp: ['arrowup', 'up', 'north', 'increase'],
314
+ ArrowDown: ['arrowdown', 'down', 'south', 'decrease'],
315
+ ArrowLeft: ['arrowleft', 'left', 'back', 'west'],
316
+ ArrowRight: ['arrowright', 'right', 'forward', 'next', 'east'],
317
+ ArrowsClockwise: ['arrowsclockwise', 'refresh', 'reload', 'sync', 'retry'],
318
+ ArrowSquareOut: ['arrowsquareout', 'external', 'open', 'link', 'launch'],
319
+ TrendUp: ['trendup', 'growth', 'increase', 'chart', 'up'],
320
+ TrendDown: ['trenddown', 'decline', 'decrease', 'chart', 'down'],
321
+ ArrowsLeftRight: ['arrowsleftright', 'swap', 'exchange', 'toggle', 'switch'],
322
+ ArrowUUpLeft: ['arrowuupleft', 'undo', 'back', 'revert'],
323
+ ArrowsOut: ['arrowsout', 'expand', 'fullscreen', 'maximize', 'resize'],
324
+ ArrowsIn: ['arrowsin', 'collapse', 'shrink', 'minimize', 'resize'],
325
+ // Tech
326
+ Code: ['code', 'develop', 'program', 'source'],
327
+ Terminal: ['terminal', 'console', 'shell', 'cli', 'command'],
328
+ Database: ['database', 'db', 'storage', 'data', 'sql'],
329
+ Cloud: ['cloud', 'server', 'hosting', 'sky'],
330
+ Cpu: ['cpu', 'chip', 'processor', 'compute', 'hardware'],
331
+ Bug: ['bug', 'issue', 'defect', 'error', 'debug'],
332
+ GitBranch: ['gitbranch', 'git', 'branch', 'repo', 'version'],
333
+ Rocket: ['rocket', 'launch', 'ship', 'deploy', 'space'],
334
+ Monitor: ['monitor', 'screen', 'display', 'computer'],
335
+ DeviceMobile: ['devicemobile', 'phone', 'mobile', 'smartphone', 'app'],
336
+ Keyboard: ['keyboard', 'type', 'keys', 'input'],
337
+ Robot: ['robot', 'ai', 'bot', 'automation', 'machine'],
338
+ // Nature
339
+ Leaf: ['leaf', 'nature', 'plant', 'eco', 'green'],
340
+ Tree: ['tree', 'nature', 'forest', 'plant'],
341
+ Sun: ['sun', 'day', 'light', 'weather', 'bright'],
342
+ Moon: ['moon', 'night', 'dark', 'sleep'],
343
+ Drop: ['drop', 'water', 'liquid', 'rain'],
344
+ Fire: ['fire', 'flame', 'hot', 'burn', 'trending'],
345
+ Mountains: ['mountains', 'mountain', 'peak', 'nature', 'hike'],
346
+ Planet: ['planet', 'space', 'world', 'globe', 'orbit'],
347
+ Flower: ['flower', 'bloom', 'plant', 'nature', 'garden'],
348
+ Cactus: ['cactus', 'plant', 'desert', 'succulent'],
349
+ Snowflake: ['snowflake', 'snow', 'winter', 'cold', 'weather'],
350
+ Rainbow: ['rainbow', 'colour', 'color', 'weather', 'pride'],
351
+ // Symbols
352
+ Hash: ['hash', 'number', 'tag', 'channel', 'pound'],
353
+ At: ['at', 'mention', 'email', 'address'],
354
+ Percent: ['percent', 'percentage', 'discount', 'rate'],
355
+ Asterisk: ['asterisk', 'star', 'required', 'wildcard'],
356
+ Question: ['question', 'help', 'ask', 'faq', 'unknown'],
357
+ Warning: ['warning', 'alert', 'caution', 'danger'],
358
+ Info: ['info', 'information', 'about', 'details'],
359
+ Bell: ['bell', 'notification', 'alert', 'reminder'],
360
+ Crown: ['crown', 'king', 'queen', 'royal', 'premium', 'vip'],
361
+ Flag: ['flag', 'mark', 'report', 'country', 'milestone'],
362
+ Medal: ['medal', 'award', 'achievement', 'win', 'honor'],
363
+ Sparkle: ['sparkle', 'shine', 'magic', 'new', 'ai', 'clean'],
364
+ // Food
365
+ Carrot: ['carrot', 'vegetable', 'food', 'healthy'],
366
+ Pizza: ['pizza', 'food', 'slice', 'italian'],
367
+ Hamburger: ['hamburger', 'burger', 'food', 'fastfood'],
368
+ IceCream: ['icecream', 'dessert', 'food', 'cold', 'sweet'],
369
+ Coffee: ['coffee', 'drink', 'cafe', 'caffeine', 'cup'],
370
+ BeerStein: ['beerstein', 'beer', 'drink', 'alcohol', 'pub'],
371
+ Cookie: ['cookie', 'dessert', 'food', 'sweet', 'snack'],
372
+ Cake: ['cake', 'dessert', 'birthday', 'celebration', 'sweet'],
373
+ Egg: ['egg', 'food', 'breakfast'],
374
+ Bread: ['bread', 'food', 'bakery', 'loaf'],
375
+ Wine: ['wine', 'drink', 'alcohol', 'glass'],
376
+ Martini: ['martini', 'cocktail', 'drink', 'alcohol', 'bar'],
377
+ // Animals
378
+ Dog: ['dog', 'pet', 'animal'],
379
+ Cat: ['cat', 'pet', 'animal'],
380
+ Bird: ['bird', 'animal', 'fly'],
381
+ Butterfly: ['butterfly', 'insect', 'animal', 'nature'],
382
+ Rabbit: ['rabbit', 'bunny', 'animal', 'pet'],
383
+ Horse: ['horse', 'animal', 'ride'],
384
+ Cow: ['cow', 'animal', 'farm', 'cattle'],
385
+ PawPrint: ['pawprint', 'paw', 'pet', 'animal', 'print'],
386
+ Fish: ['fish', 'animal', 'sea', 'aquarium', 'ocean'],
387
+ Shrimp: ['shrimp', 'seafood', 'animal', 'ocean'],
388
+ Feather: ['feather', 'bird', 'light', 'write'],
389
+ Bone: ['bone', 'dog', 'pet', 'skeleton'],
390
+ // Transport
391
+ Car: ['car', 'vehicle', 'drive', 'auto'],
392
+ Bus: ['bus', 'vehicle', 'transport', 'public'],
393
+ Truck: ['truck', 'vehicle', 'delivery', 'cargo'],
394
+ Train: ['train', 'vehicle', 'transport', 'rail'],
395
+ Airplane: ['airplane', 'plane', 'flight', 'travel', 'fly'],
396
+ Bicycle: ['bicycle', 'bike', 'cycle', 'ride'],
397
+ Motorcycle: ['motorcycle', 'bike', 'ride', 'vehicle'],
398
+ Boat: ['boat', 'ship', 'sail', 'water'],
399
+ Scooter: ['scooter', 'ride', 'vehicle'],
400
+ Taxi: ['taxi', 'cab', 'ride', 'car'],
401
+ Van: ['van', 'vehicle', 'delivery'],
402
+ Jeep: ['jeep', 'car', 'offroad', 'vehicle', 'suv'],
403
+ // People
404
+ User: ['user', 'person', 'profile', 'account'],
405
+ Users: ['users', 'people', 'team', 'group'],
406
+ Smiley: ['smiley', 'happy', 'face', 'emoji', 'smile'],
407
+ SmileyMeh: ['smileymeh', 'meh', 'neutral', 'face', 'emoji'],
408
+ SmileySad: ['smileysad', 'sad', 'face', 'emoji', 'unhappy'],
409
+ Ghost: ['ghost', 'spooky', 'halloween', 'error', '404'],
410
+ Alien: ['alien', 'space', 'ufo', 'extraterrestrial'],
411
+ Baby: ['baby', 'infant', 'child', 'kid'],
412
+ PersonSimpleRun: ['personsimplerun', 'run', 'running', 'exercise', 'fitness'],
413
+ Hand: ['hand', 'stop', 'wave', 'gesture'],
414
+ ThumbsUp: ['thumbsup', 'like', 'approve', 'good', 'vote'],
415
+ Eye: ['eye', 'view', 'see', 'watch', 'visibility'],
416
+ // Music
417
+ MusicNote: ['musicnote', 'music', 'note', 'song', 'sound'],
418
+ MusicNotes: ['musicnotes', 'music', 'notes', 'song', 'sound', 'playlist'],
419
+ Guitar: ['guitar', 'music', 'instrument', 'band'],
420
+ Microphone: ['microphone', 'mic', 'record', 'audio', 'podcast', 'sing'],
421
+ SpeakerHigh: ['speakerhigh', 'speaker', 'volume', 'sound', 'audio'],
422
+ Radio: ['radio', 'music', 'broadcast', 'audio', 'fm'],
423
+ Playlist: ['playlist', 'music', 'queue', 'songs'],
424
+ Metronome: ['metronome', 'music', 'tempo', 'beat', 'rhythm'],
425
+ Waveform: ['waveform', 'audio', 'sound', 'wave', 'music'],
426
+ Disc: ['disc', 'cd', 'vinyl', 'record', 'album'],
427
+ Headphones: ['headphones', 'music', 'audio', 'listen', 'sound'],
428
+ Equalizer: ['equalizer', 'audio', 'sound', 'mix', 'levels'],
429
+ // Sport
430
+ Basketball: ['basketball', 'sport', 'ball', 'nba'],
431
+ Football: ['football', 'sport', 'nfl', 'ball', 'american'],
432
+ SoccerBall: ['soccerball', 'soccer', 'football', 'sport', 'ball'],
433
+ Baseball: ['baseball', 'sport', 'ball', 'mlb'],
434
+ TennisBall: ['tennisball', 'tennis', 'sport', 'ball'],
435
+ Barbell: ['barbell', 'gym', 'fitness', 'weights', 'workout'],
436
+ Target: ['target', 'goal', 'aim', 'focus', 'bullseye'],
437
+ Golf: ['golf', 'sport', 'club', 'ball'],
438
+ Volleyball: ['volleyball', 'sport', 'ball'],
439
+ PingPong: ['pingpong', 'tabletennis', 'sport', 'ball', 'paddle'],
440
+ Racquet: ['racquet', 'racket', 'tennis', 'sport', 'badminton'],
441
+ PersonSimpleSwim: ['personsimpleswim', 'swim', 'swimming', 'pool', 'sport'],
442
+ // Money
443
+ CurrencyDollar: ['currencydollar', 'dollar', 'money', 'price', 'cost', 'currency'],
444
+ Wallet: ['wallet', 'money', 'payment', 'cash'],
445
+ CreditCard: ['creditcard', 'card', 'payment', 'pay', 'money'],
446
+ PiggyBank: ['piggybank', 'savings', 'budget', 'finance', 'save', 'money'],
447
+ Coins: ['coins', 'money', 'cash', 'currency', 'change'],
448
+ Receipt: ['receipt', 'invoice', 'bill', 'payment', 'order'],
449
+ Bank: ['bank', 'finance', 'money', 'institution'],
450
+ ChartLine: ['chartline', 'chart', 'graph', 'analytics', 'trend', 'stats'],
451
+ Tag: ['tag', 'price', 'label', 'discount', 'sale'],
452
+ ChartBar: ['chartbar', 'chart', 'graph', 'analytics', 'stats', 'bar'],
453
+ ChartPie: ['chartpie', 'chart', 'graph', 'analytics', 'stats', 'pie'],
454
+ Handshake: ['handshake', 'deal', 'partnership', 'agreement', 'business'],
455
+ // Care
456
+ CloudRain: ['cloudrain', 'rain', 'weather', 'storm'],
457
+ CloudSnow: ['cloudsnow', 'snow', 'weather', 'winter'],
458
+ CloudLightning: ['cloudlightning', 'lightning', 'storm', 'thunder', 'weather'],
459
+ Wind: ['wind', 'weather', 'breeze', 'air'],
460
+ Thermometer: ['thermometer', 'temperature', 'fever', 'weather', 'health'],
461
+ Sunglasses: ['sunglasses', 'shades', 'summer', 'fashion'],
462
+ Heartbeat: ['heartbeat', 'health', 'pulse', 'vitals', 'medical', 'ecg'],
463
+ Pill: ['pill', 'medicine', 'drug', 'health', 'pharmacy'],
464
+ FirstAid: ['firstaid', 'medical', 'health', 'emergency', 'kit'],
465
+ Syringe: ['syringe', 'injection', 'vaccine', 'medical', 'shot'],
466
+ Bandaids: ['bandaids', 'bandage', 'injury', 'medical'],
467
+ Stethoscope: ['stethoscope', 'doctor', 'medical', 'health', 'checkup'],
468
+ // Numbers
469
+ NumberCircleZero: ['numbercirclezero', 'zero', '0', 'number'],
470
+ NumberCircleOne: ['numbercircleone', 'one', '1', 'number'],
471
+ NumberCircleTwo: ['numbercircletwo', 'two', '2', 'number'],
472
+ NumberCircleThree: ['numbercirclethree', 'three', '3', 'number'],
473
+ NumberCircleFour: ['numbercirclefour', 'four', '4', 'number'],
474
+ NumberCircleFive: ['numbercirclefive', 'five', '5', 'number'],
475
+ NumberCircleSix: ['numbercirclesix', 'six', '6', 'number'],
476
+ NumberCircleSeven: ['numbercircleseven', 'seven', '7', 'number'],
477
+ NumberCircleEight: ['numbercircleeight', 'eight', '8', 'number'],
478
+ NumberCircleNine: ['numbercirclenine', 'nine', '9', 'number'],
479
+ };
@@ -0,0 +1,6 @@
1
+ /** The tile: fill + 1px inset ring, in the chosen colour. */
2
+ export declare function glyphTint(color: string): string;
3
+ /** Holds `glyphTint`'s fill through a host variant's own hover background. */
4
+ export declare function glyphTintHover(color: string): string;
5
+ /** The glyph itself, in the ring colour. */
6
+ export declare function glyphForeground(color: string): string;