@cardstack/boxel-cli 0.10.0 → 0.10.1-unstable.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1070) hide show
  1. package/bundled-realms/pretui/README.md +49 -0
  2. package/bundled-realms/pretui/color/LICENSE +21 -0
  3. package/bundled-realms/pretui/color/README.md +155 -0
  4. package/bundled-realms/pretui/color/index.js +78 -0
  5. package/bundled-realms/pretui/color-engine.ts +1243 -0
  6. package/bundled-realms/pretui/components/accordion.gts +58 -0
  7. package/bundled-realms/pretui/components/accordion.md +60 -0
  8. package/bundled-realms/pretui/components/accordion.usage.gts +129 -0
  9. package/bundled-realms/pretui/components/action-bar.gts +407 -0
  10. package/bundled-realms/pretui/components/action-bar.md +48 -0
  11. package/bundled-realms/pretui/components/action-bar.usage.gts +213 -0
  12. package/bundled-realms/pretui/components/affix.gts +116 -0
  13. package/bundled-realms/pretui/components/affix.md +54 -0
  14. package/bundled-realms/pretui/components/affix.usage.gts +73 -0
  15. package/bundled-realms/pretui/components/agent-question.gts +116 -0
  16. package/bundled-realms/pretui/components/agent-question.md +50 -0
  17. package/bundled-realms/pretui/components/agent-question.usage.gts +22 -0
  18. package/bundled-realms/pretui/components/ai-instructions.gts +378 -0
  19. package/bundled-realms/pretui/components/ai-instructions.md +49 -0
  20. package/bundled-realms/pretui/components/ai-instructions.usage.gts +101 -0
  21. package/bundled-realms/pretui/components/alert-dialog.gts +223 -0
  22. package/bundled-realms/pretui/components/alert-dialog.md +76 -0
  23. package/bundled-realms/pretui/components/alert-dialog.usage.gts +128 -0
  24. package/bundled-realms/pretui/components/alert.gts +163 -0
  25. package/bundled-realms/pretui/components/alert.md +57 -0
  26. package/bundled-realms/pretui/components/alert.usage.gts +99 -0
  27. package/bundled-realms/pretui/components/amount-input.gts +621 -0
  28. package/bundled-realms/pretui/components/amount-input.md +63 -0
  29. package/bundled-realms/pretui/components/amount-input.usage.gts +170 -0
  30. package/bundled-realms/pretui/components/angle-dial.gts +367 -0
  31. package/bundled-realms/pretui/components/angle-dial.md +56 -0
  32. package/bundled-realms/pretui/components/angle-dial.usage.gts +166 -0
  33. package/bundled-realms/pretui/components/animated-image.gts +291 -0
  34. package/bundled-realms/pretui/components/animated-image.md +49 -0
  35. package/bundled-realms/pretui/components/animated-image.usage.gts +127 -0
  36. package/bundled-realms/pretui/components/app-shell.gts +19 -0
  37. package/bundled-realms/pretui/components/app-shell.md +43 -0
  38. package/bundled-realms/pretui/components/app-shell.usage.gts +52 -0
  39. package/bundled-realms/pretui/components/approval-footer.gts +69 -0
  40. package/bundled-realms/pretui/components/approval-footer.md +49 -0
  41. package/bundled-realms/pretui/components/approval-footer.usage.gts +22 -0
  42. package/bundled-realms/pretui/components/aspect-ratio.gts +328 -0
  43. package/bundled-realms/pretui/components/aspect-ratio.md +72 -0
  44. package/bundled-realms/pretui/components/aspect-ratio.usage.gts +174 -0
  45. package/bundled-realms/pretui/components/asset-grid.gts +542 -0
  46. package/bundled-realms/pretui/components/asset-grid.md +54 -0
  47. package/bundled-realms/pretui/components/asset-grid.usage.gts +171 -0
  48. package/bundled-realms/pretui/components/asset-well.gts +731 -0
  49. package/bundled-realms/pretui/components/asset-well.md +72 -0
  50. package/bundled-realms/pretui/components/asset-well.usage.gts +264 -0
  51. package/bundled-realms/pretui/components/audio-player.gts +152 -0
  52. package/bundled-realms/pretui/components/audio-player.md +51 -0
  53. package/bundled-realms/pretui/components/audio-player.usage.gts +118 -0
  54. package/bundled-realms/pretui/components/autocomplete.gts +1150 -0
  55. package/bundled-realms/pretui/components/autocomplete.md +67 -0
  56. package/bundled-realms/pretui/components/autocomplete.usage.gts +339 -0
  57. package/bundled-realms/pretui/components/avatar-group.gts +30 -0
  58. package/bundled-realms/pretui/components/avatar-group.md +48 -0
  59. package/bundled-realms/pretui/components/avatar-group.usage.gts +39 -0
  60. package/bundled-realms/pretui/components/avatar.gts +134 -0
  61. package/bundled-realms/pretui/components/avatar.md +69 -0
  62. package/bundled-realms/pretui/components/avatar.usage.gts +101 -0
  63. package/bundled-realms/pretui/components/backdrop.gts +179 -0
  64. package/bundled-realms/pretui/components/backdrop.md +56 -0
  65. package/bundled-realms/pretui/components/backdrop.usage.gts +223 -0
  66. package/bundled-realms/pretui/components/background-field.gts +743 -0
  67. package/bundled-realms/pretui/components/background-field.md +62 -0
  68. package/bundled-realms/pretui/components/background-field.usage.gts +328 -0
  69. package/bundled-realms/pretui/components/badge.gts +188 -0
  70. package/bundled-realms/pretui/components/badge.md +62 -0
  71. package/bundled-realms/pretui/components/badge.usage.gts +73 -0
  72. package/bundled-realms/pretui/components/bar-list.gts +255 -0
  73. package/bundled-realms/pretui/components/bar-list.md +49 -0
  74. package/bundled-realms/pretui/components/bar-list.usage.gts +129 -0
  75. package/bundled-realms/pretui/components/board.gts +108 -0
  76. package/bundled-realms/pretui/components/board.md +54 -0
  77. package/bundled-realms/pretui/components/board.usage.gts +321 -0
  78. package/bundled-realms/pretui/components/bottom-nav.gts +217 -0
  79. package/bundled-realms/pretui/components/bottom-nav.md +64 -0
  80. package/bundled-realms/pretui/components/bottom-nav.usage.gts +68 -0
  81. package/bundled-realms/pretui/components/breadcrumb.gts +56 -0
  82. package/bundled-realms/pretui/components/breadcrumb.md +52 -0
  83. package/bundled-realms/pretui/components/breadcrumb.usage.gts +24 -0
  84. package/bundled-realms/pretui/components/broken-link.gts +46 -0
  85. package/bundled-realms/pretui/components/broken-link.md +50 -0
  86. package/bundled-realms/pretui/components/broken-link.usage.gts +57 -0
  87. package/bundled-realms/pretui/components/button-group.gts +246 -0
  88. package/bundled-realms/pretui/components/button-group.md +46 -0
  89. package/bundled-realms/pretui/components/button-group.usage.gts +137 -0
  90. package/bundled-realms/pretui/components/button.examples.gts +67 -0
  91. package/bundled-realms/pretui/components/button.gts +594 -0
  92. package/bundled-realms/pretui/components/button.md +81 -0
  93. package/bundled-realms/pretui/components/button.usage.gts +159 -0
  94. package/bundled-realms/pretui/components/calendar.gts +457 -0
  95. package/bundled-realms/pretui/components/calendar.md +57 -0
  96. package/bundled-realms/pretui/components/calendar.usage.gts +161 -0
  97. package/bundled-realms/pretui/components/callout.gts +2 -0
  98. package/bundled-realms/pretui/components/callout.md +40 -0
  99. package/bundled-realms/pretui/components/callout.usage.gts +48 -0
  100. package/bundled-realms/pretui/components/card.gts +637 -0
  101. package/bundled-realms/pretui/components/card.md +105 -0
  102. package/bundled-realms/pretui/components/card.usage.gts +279 -0
  103. package/bundled-realms/pretui/components/carousel.gts +583 -0
  104. package/bundled-realms/pretui/components/carousel.md +53 -0
  105. package/bundled-realms/pretui/components/carousel.usage.gts +220 -0
  106. package/bundled-realms/pretui/components/cascader.gts +436 -0
  107. package/bundled-realms/pretui/components/cascader.md +61 -0
  108. package/bundled-realms/pretui/components/cascader.usage.gts +79 -0
  109. package/bundled-realms/pretui/components/channel-slider.gts +251 -0
  110. package/bundled-realms/pretui/components/channel-slider.md +51 -0
  111. package/bundled-realms/pretui/components/channel-slider.usage.gts +104 -0
  112. package/bundled-realms/pretui/components/chart.gts +1011 -0
  113. package/bundled-realms/pretui/components/chart.md +60 -0
  114. package/bundled-realms/pretui/components/chart.usage.gts +660 -0
  115. package/bundled-realms/pretui/components/checkbox-card.gts +82 -0
  116. package/bundled-realms/pretui/components/checkbox-card.md +73 -0
  117. package/bundled-realms/pretui/components/checkbox-card.usage.gts +114 -0
  118. package/bundled-realms/pretui/components/checkbox.examples.gts +61 -0
  119. package/bundled-realms/pretui/components/checkbox.gts +123 -0
  120. package/bundled-realms/pretui/components/checkbox.md +55 -0
  121. package/bundled-realms/pretui/components/checkbox.usage.gts +31 -0
  122. package/bundled-realms/pretui/components/chip.gts +136 -0
  123. package/bundled-realms/pretui/components/chip.md +54 -0
  124. package/bundled-realms/pretui/components/chip.usage.gts +97 -0
  125. package/bundled-realms/pretui/components/code-block.gts +888 -0
  126. package/bundled-realms/pretui/components/code-block.md +61 -0
  127. package/bundled-realms/pretui/components/code-block.usage.gts +374 -0
  128. package/bundled-realms/pretui/components/collapsed-turn.gts +44 -0
  129. package/bundled-realms/pretui/components/collapsed-turn.md +48 -0
  130. package/bundled-realms/pretui/components/collapsed-turn.usage.gts +21 -0
  131. package/bundled-realms/pretui/components/collapsible.gts +283 -0
  132. package/bundled-realms/pretui/components/collapsible.md +69 -0
  133. package/bundled-realms/pretui/components/collapsible.usage.gts +173 -0
  134. package/bundled-realms/pretui/components/color-area.gts +339 -0
  135. package/bundled-realms/pretui/components/color-area.md +49 -0
  136. package/bundled-realms/pretui/components/color-area.usage.gts +72 -0
  137. package/bundled-realms/pretui/components/color-field.gts +179 -0
  138. package/bundled-realms/pretui/components/color-field.md +47 -0
  139. package/bundled-realms/pretui/components/color-field.usage.gts +87 -0
  140. package/bundled-realms/pretui/components/color-palette.gts +198 -0
  141. package/bundled-realms/pretui/components/color-palette.md +48 -0
  142. package/bundled-realms/pretui/components/color-picker.gts +721 -0
  143. package/bundled-realms/pretui/components/color-picker.md +59 -0
  144. package/bundled-realms/pretui/components/color-picker.usage.gts +122 -0
  145. package/bundled-realms/pretui/components/color-stop-editor.gts +184 -0
  146. package/bundled-realms/pretui/components/color-stop-editor.md +46 -0
  147. package/bundled-realms/pretui/components/color-stop-editor.usage.gts +75 -0
  148. package/bundled-realms/pretui/components/combobox.gts +333 -0
  149. package/bundled-realms/pretui/components/combobox.md +49 -0
  150. package/bundled-realms/pretui/components/combobox.usage.gts +143 -0
  151. package/bundled-realms/pretui/components/command-palette.gts +982 -0
  152. package/bundled-realms/pretui/components/command-palette.md +47 -0
  153. package/bundled-realms/pretui/components/command-palette.usage.gts +95 -0
  154. package/bundled-realms/pretui/components/command.gts +2 -0
  155. package/bundled-realms/pretui/components/command.md +45 -0
  156. package/bundled-realms/pretui/components/command.usage.gts +58 -0
  157. package/bundled-realms/pretui/components/compaction-chip.gts +273 -0
  158. package/bundled-realms/pretui/components/compaction-chip.md +45 -0
  159. package/bundled-realms/pretui/components/compaction-chip.usage.gts +110 -0
  160. package/bundled-realms/pretui/components/comparison.gts +223 -0
  161. package/bundled-realms/pretui/components/comparison.md +46 -0
  162. package/bundled-realms/pretui/components/comparison.usage.gts +148 -0
  163. package/bundled-realms/pretui/components/composer.gts +566 -0
  164. package/bundled-realms/pretui/components/composer.md +59 -0
  165. package/bundled-realms/pretui/components/composer.usage.gts +173 -0
  166. package/bundled-realms/pretui/components/compound-field.gts +289 -0
  167. package/bundled-realms/pretui/components/compound-field.md +66 -0
  168. package/bundled-realms/pretui/components/compound-field.usage.gts +378 -0
  169. package/bundled-realms/pretui/components/contact-link.gts +583 -0
  170. package/bundled-realms/pretui/components/contact-link.md +53 -0
  171. package/bundled-realms/pretui/components/contact-link.usage.gts +273 -0
  172. package/bundled-realms/pretui/components/context-menu.gts +811 -0
  173. package/bundled-realms/pretui/components/context-menu.md +74 -0
  174. package/bundled-realms/pretui/components/context-menu.usage.gts +244 -0
  175. package/bundled-realms/pretui/components/copy-button.gts +237 -0
  176. package/bundled-realms/pretui/components/copy-button.md +71 -0
  177. package/bundled-realms/pretui/components/copy-button.usage.gts +135 -0
  178. package/bundled-realms/pretui/components/copy-fit.gts +396 -0
  179. package/bundled-realms/pretui/components/copy-fit.md +60 -0
  180. package/bundled-realms/pretui/components/copy-fit.usage.gts +200 -0
  181. package/bundled-realms/pretui/components/cta-band.gts +285 -0
  182. package/bundled-realms/pretui/components/cta-band.md +50 -0
  183. package/bundled-realms/pretui/components/cta-band.usage.gts +208 -0
  184. package/bundled-realms/pretui/components/cue.gts +180 -0
  185. package/bundled-realms/pretui/components/cue.md +53 -0
  186. package/bundled-realms/pretui/components/cue.usage.gts +88 -0
  187. package/bundled-realms/pretui/components/cursor-trail.gts +221 -0
  188. package/bundled-realms/pretui/components/cursor-trail.md +56 -0
  189. package/bundled-realms/pretui/components/cursor-trail.usage.gts +218 -0
  190. package/bundled-realms/pretui/components/dashboard-grid.gts +939 -0
  191. package/bundled-realms/pretui/components/dashboard-grid.md +60 -0
  192. package/bundled-realms/pretui/components/dashboard-grid.usage.gts +307 -0
  193. package/bundled-realms/pretui/components/dashboard-item.gts +286 -0
  194. package/bundled-realms/pretui/components/dashboard-item.md +52 -0
  195. package/bundled-realms/pretui/components/dashboard-item.usage.gts +87 -0
  196. package/bundled-realms/pretui/components/data-grid.gts +263 -0
  197. package/bundled-realms/pretui/components/data-grid.md +64 -0
  198. package/bundled-realms/pretui/components/data-grid.usage.gts +50 -0
  199. package/bundled-realms/pretui/components/data-table.gts +1618 -0
  200. package/bundled-realms/pretui/components/data-table.md +104 -0
  201. package/bundled-realms/pretui/components/data-table.usage.gts +324 -0
  202. package/bundled-realms/pretui/components/date-picker.gts +98 -0
  203. package/bundled-realms/pretui/components/date-picker.md +59 -0
  204. package/bundled-realms/pretui/components/date-picker.usage.gts +66 -0
  205. package/bundled-realms/pretui/components/date-range-picker.gts +131 -0
  206. package/bundled-realms/pretui/components/date-range-picker.md +55 -0
  207. package/bundled-realms/pretui/components/date-range-picker.usage.gts +125 -0
  208. package/bundled-realms/pretui/components/date-time-picker.gts +227 -0
  209. package/bundled-realms/pretui/components/date-time-picker.md +60 -0
  210. package/bundled-realms/pretui/components/date-time-picker.usage.gts +64 -0
  211. package/bundled-realms/pretui/components/defer.gts +374 -0
  212. package/bundled-realms/pretui/components/defer.md +61 -0
  213. package/bundled-realms/pretui/components/defer.usage.gts +174 -0
  214. package/bundled-realms/pretui/components/delta.gts +45 -0
  215. package/bundled-realms/pretui/components/delta.md +53 -0
  216. package/bundled-realms/pretui/components/delta.usage.gts +31 -0
  217. package/bundled-realms/pretui/components/descriptions.gts +365 -0
  218. package/bundled-realms/pretui/components/descriptions.md +73 -0
  219. package/bundled-realms/pretui/components/descriptions.usage.gts +123 -0
  220. package/bundled-realms/pretui/components/dialog.gts +153 -0
  221. package/bundled-realms/pretui/components/dialog.md +60 -0
  222. package/bundled-realms/pretui/components/dialog.usage.gts +86 -0
  223. package/bundled-realms/pretui/components/diff-block.gts +89 -0
  224. package/bundled-realms/pretui/components/diff-block.md +51 -0
  225. package/bundled-realms/pretui/components/diff-block.usage.gts +27 -0
  226. package/bundled-realms/pretui/components/disclosure.gts +2 -0
  227. package/bundled-realms/pretui/components/disclosure.md +45 -0
  228. package/bundled-realms/pretui/components/disclosure.usage.gts +47 -0
  229. package/bundled-realms/pretui/components/divider.gts +75 -0
  230. package/bundled-realms/pretui/components/divider.md +49 -0
  231. package/bundled-realms/pretui/components/divider.usage.gts +98 -0
  232. package/bundled-realms/pretui/components/doc-report.gts +306 -0
  233. package/bundled-realms/pretui/components/doc-report.md +45 -0
  234. package/bundled-realms/pretui/components/doc-report.usage.gts +126 -0
  235. package/bundled-realms/pretui/components/dock.gts +165 -0
  236. package/bundled-realms/pretui/components/dock.md +42 -0
  237. package/bundled-realms/pretui/components/dock.usage.gts +114 -0
  238. package/bundled-realms/pretui/components/drawer.gts +166 -0
  239. package/bundled-realms/pretui/components/drawer.md +66 -0
  240. package/bundled-realms/pretui/components/drawer.usage.gts +111 -0
  241. package/bundled-realms/pretui/components/dropzone.gts +314 -0
  242. package/bundled-realms/pretui/components/dropzone.md +56 -0
  243. package/bundled-realms/pretui/components/dropzone.usage.gts +203 -0
  244. package/bundled-realms/pretui/components/dueling-picklist.gts +991 -0
  245. package/bundled-realms/pretui/components/dueling-picklist.md +67 -0
  246. package/bundled-realms/pretui/components/dueling-picklist.usage.gts +182 -0
  247. package/bundled-realms/pretui/components/dynamic-island.gts +264 -0
  248. package/bundled-realms/pretui/components/dynamic-island.md +45 -0
  249. package/bundled-realms/pretui/components/dynamic-island.usage.gts +195 -0
  250. package/bundled-realms/pretui/components/easing-curve.gts +629 -0
  251. package/bundled-realms/pretui/components/easing-curve.md +46 -0
  252. package/bundled-realms/pretui/components/easing-curve.usage.gts +122 -0
  253. package/bundled-realms/pretui/components/edit-in-place.gts +559 -0
  254. package/bundled-realms/pretui/components/edit-in-place.md +63 -0
  255. package/bundled-realms/pretui/components/edit-in-place.usage.gts +209 -0
  256. package/bundled-realms/pretui/components/editable.gts +299 -0
  257. package/bundled-realms/pretui/components/editable.md +79 -0
  258. package/bundled-realms/pretui/components/editable.usage.gts +68 -0
  259. package/bundled-realms/pretui/components/email-input.gts +83 -0
  260. package/bundled-realms/pretui/components/email-input.md +52 -0
  261. package/bundled-realms/pretui/components/email-input.usage.gts +90 -0
  262. package/bundled-realms/pretui/components/emoji-button.gts +162 -0
  263. package/bundled-realms/pretui/components/emoji-button.md +46 -0
  264. package/bundled-realms/pretui/components/emoji-button.usage.gts +174 -0
  265. package/bundled-realms/pretui/components/emoji-picker.gts +1396 -0
  266. package/bundled-realms/pretui/components/emoji-picker.md +53 -0
  267. package/bundled-realms/pretui/components/emoji-picker.usage.gts +235 -0
  268. package/bundled-realms/pretui/components/empty-state.gts +162 -0
  269. package/bundled-realms/pretui/components/empty-state.md +63 -0
  270. package/bundled-realms/pretui/components/empty-state.usage.gts +113 -0
  271. package/bundled-realms/pretui/components/empty.gts +2 -0
  272. package/bundled-realms/pretui/components/empty.md +43 -0
  273. package/bundled-realms/pretui/components/empty.usage.gts +33 -0
  274. package/bundled-realms/pretui/components/entity-display.gts +126 -0
  275. package/bundled-realms/pretui/components/entity-display.md +50 -0
  276. package/bundled-realms/pretui/components/error-summary.gts +321 -0
  277. package/bundled-realms/pretui/components/error-summary.md +60 -0
  278. package/bundled-realms/pretui/components/error-summary.usage.gts +155 -0
  279. package/bundled-realms/pretui/components/expression-builder.gts +1211 -0
  280. package/bundled-realms/pretui/components/expression-builder.md +60 -0
  281. package/bundled-realms/pretui/components/expression-builder.usage.gts +246 -0
  282. package/bundled-realms/pretui/components/fab.gts +2 -0
  283. package/bundled-realms/pretui/components/fab.md +38 -0
  284. package/bundled-realms/pretui/components/fab.usage.gts +38 -0
  285. package/bundled-realms/pretui/components/feature-voting.gts +365 -0
  286. package/bundled-realms/pretui/components/feature-voting.md +44 -0
  287. package/bundled-realms/pretui/components/feature-voting.usage.gts +114 -0
  288. package/bundled-realms/pretui/components/feed.gts +244 -0
  289. package/bundled-realms/pretui/components/feed.md +56 -0
  290. package/bundled-realms/pretui/components/feed.usage.gts +250 -0
  291. package/bundled-realms/pretui/components/field-error.gts +127 -0
  292. package/bundled-realms/pretui/components/field-error.md +60 -0
  293. package/bundled-realms/pretui/components/field-error.usage.gts +146 -0
  294. package/bundled-realms/pretui/components/field.gts +185 -0
  295. package/bundled-realms/pretui/components/field.md +60 -0
  296. package/bundled-realms/pretui/components/field.usage.gts +73 -0
  297. package/bundled-realms/pretui/components/fieldset.gts +124 -0
  298. package/bundled-realms/pretui/components/fieldset.md +65 -0
  299. package/bundled-realms/pretui/components/fieldset.usage.gts +105 -0
  300. package/bundled-realms/pretui/components/file-trigger.gts +185 -0
  301. package/bundled-realms/pretui/components/file-trigger.md +53 -0
  302. package/bundled-realms/pretui/components/file-trigger.usage.gts +121 -0
  303. package/bundled-realms/pretui/components/file-upload.gts +353 -0
  304. package/bundled-realms/pretui/components/file-upload.md +63 -0
  305. package/bundled-realms/pretui/components/file-upload.usage.gts +64 -0
  306. package/bundled-realms/pretui/components/filmstrip.gts +465 -0
  307. package/bundled-realms/pretui/components/filmstrip.md +53 -0
  308. package/bundled-realms/pretui/components/filmstrip.usage.gts +115 -0
  309. package/bundled-realms/pretui/components/filter-chips.gts +236 -0
  310. package/bundled-realms/pretui/components/filter-chips.md +58 -0
  311. package/bundled-realms/pretui/components/filter-chips.usage.gts +102 -0
  312. package/bundled-realms/pretui/components/filter-set.gts +293 -0
  313. package/bundled-realms/pretui/components/filter-set.md +60 -0
  314. package/bundled-realms/pretui/components/filter-set.usage.gts +145 -0
  315. package/bundled-realms/pretui/components/float-button.gts +339 -0
  316. package/bundled-realms/pretui/components/float-button.md +69 -0
  317. package/bundled-realms/pretui/components/float-button.usage.gts +134 -0
  318. package/bundled-realms/pretui/components/fold.gts +86 -0
  319. package/bundled-realms/pretui/components/fold.md +54 -0
  320. package/bundled-realms/pretui/components/fold.usage.gts +19 -0
  321. package/bundled-realms/pretui/components/form-field.gts +609 -0
  322. package/bundled-realms/pretui/components/form-field.md +77 -0
  323. package/bundled-realms/pretui/components/form-field.usage.gts +279 -0
  324. package/bundled-realms/pretui/components/form-footer.gts +246 -0
  325. package/bundled-realms/pretui/components/form-footer.md +59 -0
  326. package/bundled-realms/pretui/components/form-footer.usage.gts +217 -0
  327. package/bundled-realms/pretui/components/form-layout.gts +130 -0
  328. package/bundled-realms/pretui/components/form-layout.md +52 -0
  329. package/bundled-realms/pretui/components/form-layout.usage.gts +200 -0
  330. package/bundled-realms/pretui/components/form-section.gts +434 -0
  331. package/bundled-realms/pretui/components/form-section.md +67 -0
  332. package/bundled-realms/pretui/components/form-section.usage.gts +402 -0
  333. package/bundled-realms/pretui/components/form.gts +315 -0
  334. package/bundled-realms/pretui/components/form.md +82 -0
  335. package/bundled-realms/pretui/components/form.usage.gts +306 -0
  336. package/bundled-realms/pretui/components/format-bytes.gts +212 -0
  337. package/bundled-realms/pretui/components/format-bytes.md +47 -0
  338. package/bundled-realms/pretui/components/format-bytes.usage.gts +274 -0
  339. package/bundled-realms/pretui/components/format-date.gts +249 -0
  340. package/bundled-realms/pretui/components/format-date.md +55 -0
  341. package/bundled-realms/pretui/components/format-date.usage.gts +245 -0
  342. package/bundled-realms/pretui/components/format-number.gts +138 -0
  343. package/bundled-realms/pretui/components/format-number.md +51 -0
  344. package/bundled-realms/pretui/components/format-number.usage.gts +261 -0
  345. package/bundled-realms/pretui/components/formatted-value.gts +65 -0
  346. package/bundled-realms/pretui/components/freestyle-usage.gts +311 -0
  347. package/bundled-realms/pretui/components/freestyle-usage.md +49 -0
  348. package/bundled-realms/pretui/components/gallery.gts +819 -0
  349. package/bundled-realms/pretui/components/gallery.md +65 -0
  350. package/bundled-realms/pretui/components/gallery.usage.gts +212 -0
  351. package/bundled-realms/pretui/components/gradient-editor.gts +682 -0
  352. package/bundled-realms/pretui/components/gradient-editor.md +43 -0
  353. package/bundled-realms/pretui/components/gradient-editor.usage.gts +69 -0
  354. package/bundled-realms/pretui/components/graph-layout.md +54 -0
  355. package/bundled-realms/pretui/components/graph-layout.usage.gts +343 -0
  356. package/bundled-realms/pretui/components/graph-outline.gts +553 -0
  357. package/bundled-realms/pretui/components/graph-outline.md +50 -0
  358. package/bundled-realms/pretui/components/graph-outline.usage.gts +88 -0
  359. package/bundled-realms/pretui/components/grid.gts +68 -0
  360. package/bundled-realms/pretui/components/grid.md +54 -0
  361. package/bundled-realms/pretui/components/grid.usage.gts +144 -0
  362. package/bundled-realms/pretui/components/handle.gts +192 -0
  363. package/bundled-realms/pretui/components/handle.md +55 -0
  364. package/bundled-realms/pretui/components/handle.usage.gts +174 -0
  365. package/bundled-realms/pretui/components/hero-split.gts +307 -0
  366. package/bundled-realms/pretui/components/hero-split.md +50 -0
  367. package/bundled-realms/pretui/components/hero-split.usage.gts +200 -0
  368. package/bundled-realms/pretui/components/hover-actions.gts +485 -0
  369. package/bundled-realms/pretui/components/hover-actions.md +55 -0
  370. package/bundled-realms/pretui/components/hover-actions.usage.gts +224 -0
  371. package/bundled-realms/pretui/components/hover-card.gts +347 -0
  372. package/bundled-realms/pretui/components/hover-card.md +72 -0
  373. package/bundled-realms/pretui/components/hover-card.usage.gts +174 -0
  374. package/bundled-realms/pretui/components/hover-video-player.gts +315 -0
  375. package/bundled-realms/pretui/components/hover-video-player.md +57 -0
  376. package/bundled-realms/pretui/components/hover-video-player.usage.gts +152 -0
  377. package/bundled-realms/pretui/components/icon-button.examples.gts +69 -0
  378. package/bundled-realms/pretui/components/icon-button.gts +153 -0
  379. package/bundled-realms/pretui/components/icon-button.md +72 -0
  380. package/bundled-realms/pretui/components/icon-button.usage.gts +208 -0
  381. package/bundled-realms/pretui/components/image-cropper.gts +693 -0
  382. package/bundled-realms/pretui/components/image-cropper.md +52 -0
  383. package/bundled-realms/pretui/components/image-cropper.usage.gts +108 -0
  384. package/bundled-realms/pretui/components/image-frame.gts +91 -0
  385. package/bundled-realms/pretui/components/image-frame.md +42 -0
  386. package/bundled-realms/pretui/components/image-frame.usage.gts +28 -0
  387. package/bundled-realms/pretui/components/image.gts +326 -0
  388. package/bundled-realms/pretui/components/image.md +71 -0
  389. package/bundled-realms/pretui/components/image.usage.gts +126 -0
  390. package/bundled-realms/pretui/components/in-view.gts +245 -0
  391. package/bundled-realms/pretui/components/in-view.md +53 -0
  392. package/bundled-realms/pretui/components/in-view.usage.gts +264 -0
  393. package/bundled-realms/pretui/components/indicator.gts +137 -0
  394. package/bundled-realms/pretui/components/indicator.md +60 -0
  395. package/bundled-realms/pretui/components/indicator.usage.gts +66 -0
  396. package/bundled-realms/pretui/components/infinite-scroll.gts +163 -0
  397. package/bundled-realms/pretui/components/infinite-scroll.md +54 -0
  398. package/bundled-realms/pretui/components/infinite-scroll.usage.gts +73 -0
  399. package/bundled-realms/pretui/components/input-group.gts +264 -0
  400. package/bundled-realms/pretui/components/input-group.md +55 -0
  401. package/bundled-realms/pretui/components/input-group.usage.gts +283 -0
  402. package/bundled-realms/pretui/components/input.examples.gts +61 -0
  403. package/bundled-realms/pretui/components/input.gts +202 -0
  404. package/bundled-realms/pretui/components/input.md +67 -0
  405. package/bundled-realms/pretui/components/input.usage.gts +208 -0
  406. package/bundled-realms/pretui/components/interactive-input.gts +343 -0
  407. package/bundled-realms/pretui/components/interactive-input.md +45 -0
  408. package/bundled-realms/pretui/components/interactive-input.usage.gts +98 -0
  409. package/bundled-realms/pretui/components/item.gts +218 -0
  410. package/bundled-realms/pretui/components/item.md +66 -0
  411. package/bundled-realms/pretui/components/item.usage.gts +121 -0
  412. package/bundled-realms/pretui/components/joystick.gts +381 -0
  413. package/bundled-realms/pretui/components/joystick.md +52 -0
  414. package/bundled-realms/pretui/components/joystick.usage.gts +140 -0
  415. package/bundled-realms/pretui/components/json-editor.gts +1016 -0
  416. package/bundled-realms/pretui/components/json-editor.md +51 -0
  417. package/bundled-realms/pretui/components/json-editor.usage.gts +230 -0
  418. package/bundled-realms/pretui/components/json-tree.gts +596 -0
  419. package/bundled-realms/pretui/components/json-tree.md +52 -0
  420. package/bundled-realms/pretui/components/json-tree.usage.gts +217 -0
  421. package/bundled-realms/pretui/components/jump-chip.gts +230 -0
  422. package/bundled-realms/pretui/components/jump-chip.md +44 -0
  423. package/bundled-realms/pretui/components/jump-chip.usage.gts +151 -0
  424. package/bundled-realms/pretui/components/kbd.gts +60 -0
  425. package/bundled-realms/pretui/components/kbd.md +50 -0
  426. package/bundled-realms/pretui/components/kbd.usage.gts +98 -0
  427. package/bundled-realms/pretui/components/key-value.gts +150 -0
  428. package/bundled-realms/pretui/components/key-value.md +81 -0
  429. package/bundled-realms/pretui/components/key-value.usage.gts +125 -0
  430. package/bundled-realms/pretui/components/known-date.gts +770 -0
  431. package/bundled-realms/pretui/components/known-date.md +56 -0
  432. package/bundled-realms/pretui/components/known-date.usage.gts +192 -0
  433. package/bundled-realms/pretui/components/label.gts +60 -0
  434. package/bundled-realms/pretui/components/label.md +56 -0
  435. package/bundled-realms/pretui/components/label.usage.gts +63 -0
  436. package/bundled-realms/pretui/components/layer-manager.gts +1884 -0
  437. package/bundled-realms/pretui/components/layer-manager.md +59 -0
  438. package/bundled-realms/pretui/components/layer-manager.usage.gts +233 -0
  439. package/bundled-realms/pretui/components/lightbox.gts +461 -0
  440. package/bundled-realms/pretui/components/lightbox.md +57 -0
  441. package/bundled-realms/pretui/components/lightbox.usage.gts +180 -0
  442. package/bundled-realms/pretui/components/line-grid.examples.gts +156 -0
  443. package/bundled-realms/pretui/components/line-grid.gts +523 -0
  444. package/bundled-realms/pretui/components/line-grid.md +55 -0
  445. package/bundled-realms/pretui/components/line-grid.usage.gts +181 -0
  446. package/bundled-realms/pretui/components/list.gts +679 -0
  447. package/bundled-realms/pretui/components/list.md +90 -0
  448. package/bundled-realms/pretui/components/list.usage.gts +203 -0
  449. package/bundled-realms/pretui/components/loader.gts +2 -0
  450. package/bundled-realms/pretui/components/loader.md +33 -0
  451. package/bundled-realms/pretui/components/loader.usage.gts +35 -0
  452. package/bundled-realms/pretui/components/loading-overlay.gts +120 -0
  453. package/bundled-realms/pretui/components/loading-overlay.md +68 -0
  454. package/bundled-realms/pretui/components/loading-overlay.usage.gts +102 -0
  455. package/bundled-realms/pretui/components/loading-state.gts +124 -0
  456. package/bundled-realms/pretui/components/loading-state.md +48 -0
  457. package/bundled-realms/pretui/components/loading-state.usage.gts +16 -0
  458. package/bundled-realms/pretui/components/lookup.gts +451 -0
  459. package/bundled-realms/pretui/components/lookup.md +59 -0
  460. package/bundled-realms/pretui/components/lookup.usage.gts +235 -0
  461. package/bundled-realms/pretui/components/magnetic.gts +158 -0
  462. package/bundled-realms/pretui/components/magnetic.md +48 -0
  463. package/bundled-realms/pretui/components/magnetic.usage.gts +125 -0
  464. package/bundled-realms/pretui/components/marquee.gts +141 -0
  465. package/bundled-realms/pretui/components/marquee.md +43 -0
  466. package/bundled-realms/pretui/components/marquee.usage.gts +116 -0
  467. package/bundled-realms/pretui/components/masonry.gts +95 -0
  468. package/bundled-realms/pretui/components/masonry.md +59 -0
  469. package/bundled-realms/pretui/components/masonry.usage.gts +238 -0
  470. package/bundled-realms/pretui/components/media-inspector.gts +145 -0
  471. package/bundled-realms/pretui/components/media-inspector.md +46 -0
  472. package/bundled-realms/pretui/components/media-inspector.usage.gts +83 -0
  473. package/bundled-realms/pretui/components/media-player.gts +1133 -0
  474. package/bundled-realms/pretui/components/media-player.md +74 -0
  475. package/bundled-realms/pretui/components/media-player.usage.gts +265 -0
  476. package/bundled-realms/pretui/components/media-viewer.gts +136 -0
  477. package/bundled-realms/pretui/components/media-viewer.md +47 -0
  478. package/bundled-realms/pretui/components/media-viewer.usage.gts +70 -0
  479. package/bundled-realms/pretui/components/mentions.gts +340 -0
  480. package/bundled-realms/pretui/components/mentions.md +65 -0
  481. package/bundled-realms/pretui/components/mentions.usage.gts +73 -0
  482. package/bundled-realms/pretui/components/menu-panel.gts +367 -0
  483. package/bundled-realms/pretui/components/menu.gts +652 -0
  484. package/bundled-realms/pretui/components/menu.md +69 -0
  485. package/bundled-realms/pretui/components/menu.usage.gts +116 -0
  486. package/bundled-realms/pretui/components/menubar.gts +1200 -0
  487. package/bundled-realms/pretui/components/menubar.md +49 -0
  488. package/bundled-realms/pretui/components/menubar.usage.gts +220 -0
  489. package/bundled-realms/pretui/components/meter.gts +113 -0
  490. package/bundled-realms/pretui/components/meter.md +50 -0
  491. package/bundled-realms/pretui/components/meter.usage.gts +50 -0
  492. package/bundled-realms/pretui/components/modal.gts +2 -0
  493. package/bundled-realms/pretui/components/modal.md +41 -0
  494. package/bundled-realms/pretui/components/modal.usage.gts +50 -0
  495. package/bundled-realms/pretui/components/model-viewer.gts +658 -0
  496. package/bundled-realms/pretui/components/model-viewer.md +57 -0
  497. package/bundled-realms/pretui/components/model-viewer.usage.gts +123 -0
  498. package/bundled-realms/pretui/components/money-input.gts +66 -0
  499. package/bundled-realms/pretui/components/money-input.md +43 -0
  500. package/bundled-realms/pretui/components/money-input.usage.gts +293 -0
  501. package/bundled-realms/pretui/components/morphing-dialog.gts +173 -0
  502. package/bundled-realms/pretui/components/morphing-dialog.md +46 -0
  503. package/bundled-realms/pretui/components/morphing-dialog.usage.gts +168 -0
  504. package/bundled-realms/pretui/components/morphing-popover.gts +245 -0
  505. package/bundled-realms/pretui/components/morphing-popover.md +47 -0
  506. package/bundled-realms/pretui/components/morphing-popover.usage.gts +176 -0
  507. package/bundled-realms/pretui/components/multi-select.gts +392 -0
  508. package/bundled-realms/pretui/components/multi-select.md +57 -0
  509. package/bundled-realms/pretui/components/multi-select.usage.gts +97 -0
  510. package/bundled-realms/pretui/components/native-select.gts +212 -0
  511. package/bundled-realms/pretui/components/native-select.md +77 -0
  512. package/bundled-realms/pretui/components/native-select.usage.gts +109 -0
  513. package/bundled-realms/pretui/components/navigation-menu.gts +351 -0
  514. package/bundled-realms/pretui/components/navigation-menu.md +65 -0
  515. package/bundled-realms/pretui/components/navigation-menu.usage.gts +61 -0
  516. package/bundled-realms/pretui/components/node-canvas.gts +1174 -0
  517. package/bundled-realms/pretui/components/node-canvas.md +57 -0
  518. package/bundled-realms/pretui/components/node-canvas.usage.gts +548 -0
  519. package/bundled-realms/pretui/components/node-card.gts +181 -0
  520. package/bundled-realms/pretui/components/node-card.md +53 -0
  521. package/bundled-realms/pretui/components/node-card.usage.gts +156 -0
  522. package/bundled-realms/pretui/components/notification.gts +242 -0
  523. package/bundled-realms/pretui/components/notification.md +69 -0
  524. package/bundled-realms/pretui/components/notification.usage.gts +125 -0
  525. package/bundled-realms/pretui/components/number-input.gts +191 -0
  526. package/bundled-realms/pretui/components/number-input.md +54 -0
  527. package/bundled-realms/pretui/components/number-input.usage.gts +132 -0
  528. package/bundled-realms/pretui/components/odometer.gts +349 -0
  529. package/bundled-realms/pretui/components/odometer.md +55 -0
  530. package/bundled-realms/pretui/components/odometer.usage.gts +258 -0
  531. package/bundled-realms/pretui/components/onboarding.gts +298 -0
  532. package/bundled-realms/pretui/components/onboarding.md +48 -0
  533. package/bundled-realms/pretui/components/onboarding.usage.gts +155 -0
  534. package/bundled-realms/pretui/components/origin-grid.gts +486 -0
  535. package/bundled-realms/pretui/components/origin-grid.md +47 -0
  536. package/bundled-realms/pretui/components/origin-grid.usage.gts +87 -0
  537. package/bundled-realms/pretui/components/otp-input.gts +289 -0
  538. package/bundled-realms/pretui/components/otp-input.md +47 -0
  539. package/bundled-realms/pretui/components/otp-input.usage.gts +131 -0
  540. package/bundled-realms/pretui/components/page-scaffold.gts +343 -0
  541. package/bundled-realms/pretui/components/page-scaffold.md +57 -0
  542. package/bundled-realms/pretui/components/page-scaffold.usage.gts +391 -0
  543. package/bundled-realms/pretui/components/pagination.gts +150 -0
  544. package/bundled-realms/pretui/components/pagination.md +56 -0
  545. package/bundled-realms/pretui/components/pagination.usage.gts +33 -0
  546. package/bundled-realms/pretui/components/panel-section.gts +301 -0
  547. package/bundled-realms/pretui/components/panel-section.md +48 -0
  548. package/bundled-realms/pretui/components/panel-section.usage.gts +137 -0
  549. package/bundled-realms/pretui/components/panel.gts +158 -0
  550. package/bundled-realms/pretui/components/panel.md +58 -0
  551. package/bundled-realms/pretui/components/panel.usage.gts +82 -0
  552. package/bundled-realms/pretui/components/password-input.gts +329 -0
  553. package/bundled-realms/pretui/components/password-input.md +58 -0
  554. package/bundled-realms/pretui/components/password-input.usage.gts +156 -0
  555. package/bundled-realms/pretui/components/password-strength.gts +485 -0
  556. package/bundled-realms/pretui/components/password-strength.md +50 -0
  557. package/bundled-realms/pretui/components/password-strength.usage.gts +34 -0
  558. package/bundled-realms/pretui/components/path-text.gts +288 -0
  559. package/bundled-realms/pretui/components/path-text.md +58 -0
  560. package/bundled-realms/pretui/components/path-text.usage.gts +239 -0
  561. package/bundled-realms/pretui/components/period-input.gts +1100 -0
  562. package/bundled-realms/pretui/components/period-input.md +54 -0
  563. package/bundled-realms/pretui/components/period-input.usage.gts +299 -0
  564. package/bundled-realms/pretui/components/phone-input.gts +80 -0
  565. package/bundled-realms/pretui/components/phone-input.md +55 -0
  566. package/bundled-realms/pretui/components/phone-input.usage.gts +91 -0
  567. package/bundled-realms/pretui/components/pin-input.gts +2 -0
  568. package/bundled-realms/pretui/components/pin-input.md +45 -0
  569. package/bundled-realms/pretui/components/pin-input.usage.gts +39 -0
  570. package/bundled-realms/pretui/components/pip-scale.gts +717 -0
  571. package/bundled-realms/pretui/components/pip-scale.md +55 -0
  572. package/bundled-realms/pretui/components/pip-scale.usage.gts +318 -0
  573. package/bundled-realms/pretui/components/popconfirm.gts +380 -0
  574. package/bundled-realms/pretui/components/popconfirm.md +78 -0
  575. package/bundled-realms/pretui/components/popconfirm.usage.gts +171 -0
  576. package/bundled-realms/pretui/components/popover.gts +198 -0
  577. package/bundled-realms/pretui/components/popover.md +57 -0
  578. package/bundled-realms/pretui/components/popover.usage.gts +106 -0
  579. package/bundled-realms/pretui/components/popup.gts +85 -0
  580. package/bundled-realms/pretui/components/popup.md +42 -0
  581. package/bundled-realms/pretui/components/popup.usage.gts +23 -0
  582. package/bundled-realms/pretui/components/presence.gts +156 -0
  583. package/bundled-realms/pretui/components/presence.md +55 -0
  584. package/bundled-realms/pretui/components/presence.usage.gts +204 -0
  585. package/bundled-realms/pretui/components/progress-bar.gts +177 -0
  586. package/bundled-realms/pretui/components/progress-bar.md +63 -0
  587. package/bundled-realms/pretui/components/progress-bar.usage.gts +172 -0
  588. package/bundled-realms/pretui/components/progress-radial.gts +67 -0
  589. package/bundled-realms/pretui/components/progress-radial.md +55 -0
  590. package/bundled-realms/pretui/components/progress-radial.usage.gts +76 -0
  591. package/bundled-realms/pretui/components/prompt-library.gts +358 -0
  592. package/bundled-realms/pretui/components/prompt-library.md +45 -0
  593. package/bundled-realms/pretui/components/prompt-library.usage.gts +117 -0
  594. package/bundled-realms/pretui/components/property-row.gts +316 -0
  595. package/bundled-realms/pretui/components/property-row.md +55 -0
  596. package/bundled-realms/pretui/components/property-row.usage.gts +146 -0
  597. package/bundled-realms/pretui/components/property-sheet.gts +133 -0
  598. package/bundled-realms/pretui/components/property-sheet.md +48 -0
  599. package/bundled-realms/pretui/components/property-sheet.usage.gts +132 -0
  600. package/bundled-realms/pretui/components/prose.gts +31 -0
  601. package/bundled-realms/pretui/components/prose.md +57 -0
  602. package/bundled-realms/pretui/components/prose.usage.gts +15 -0
  603. package/bundled-realms/pretui/components/pulsing-border.gts +297 -0
  604. package/bundled-realms/pretui/components/pulsing-border.md +65 -0
  605. package/bundled-realms/pretui/components/pulsing-border.usage.gts +253 -0
  606. package/bundled-realms/pretui/components/qr-code.gts +660 -0
  607. package/bundled-realms/pretui/components/qr-code.md +58 -0
  608. package/bundled-realms/pretui/components/qr-code.usage.gts +224 -0
  609. package/bundled-realms/pretui/components/queued-message.gts +83 -0
  610. package/bundled-realms/pretui/components/queued-message.md +53 -0
  611. package/bundled-realms/pretui/components/queued-message.usage.gts +21 -0
  612. package/bundled-realms/pretui/components/radio-card.gts +88 -0
  613. package/bundled-realms/pretui/components/radio-card.md +72 -0
  614. package/bundled-realms/pretui/components/radio-card.usage.gts +148 -0
  615. package/bundled-realms/pretui/components/radio-group.gts +119 -0
  616. package/bundled-realms/pretui/components/radio-group.md +46 -0
  617. package/bundled-realms/pretui/components/radio-group.usage.gts +80 -0
  618. package/bundled-realms/pretui/components/range-slider.gts +34 -0
  619. package/bundled-realms/pretui/components/range-slider.md +47 -0
  620. package/bundled-realms/pretui/components/range-slider.usage.gts +46 -0
  621. package/bundled-realms/pretui/components/rating.examples.gts +67 -0
  622. package/bundled-realms/pretui/components/rating.gts +266 -0
  623. package/bundled-realms/pretui/components/rating.md +55 -0
  624. package/bundled-realms/pretui/components/rating.usage.gts +96 -0
  625. package/bundled-realms/pretui/components/readiness-panel.gts +856 -0
  626. package/bundled-realms/pretui/components/readiness-panel.md +64 -0
  627. package/bundled-realms/pretui/components/readiness-panel.usage.gts +372 -0
  628. package/bundled-realms/pretui/components/recommendation.gts +316 -0
  629. package/bundled-realms/pretui/components/recommendation.md +49 -0
  630. package/bundled-realms/pretui/components/recommendation.usage.gts +103 -0
  631. package/bundled-realms/pretui/components/record-detail.gts +1170 -0
  632. package/bundled-realms/pretui/components/record-detail.md +63 -0
  633. package/bundled-realms/pretui/components/record-detail.usage.gts +533 -0
  634. package/bundled-realms/pretui/components/record-face.gts +153 -0
  635. package/bundled-realms/pretui/components/record-pill.gts +116 -0
  636. package/bundled-realms/pretui/components/record-pill.md +55 -0
  637. package/bundled-realms/pretui/components/record-pill.usage.gts +108 -0
  638. package/bundled-realms/pretui/components/relative-time.gts +88 -0
  639. package/bundled-realms/pretui/components/relative-time.md +58 -0
  640. package/bundled-realms/pretui/components/relative-time.usage.gts +89 -0
  641. package/bundled-realms/pretui/components/reorder.gts +620 -0
  642. package/bundled-realms/pretui/components/reorder.md +47 -0
  643. package/bundled-realms/pretui/components/reorder.usage.gts +171 -0
  644. package/bundled-realms/pretui/components/resizable.gts +2 -0
  645. package/bundled-realms/pretui/components/resizable.md +37 -0
  646. package/bundled-realms/pretui/components/resizable.usage.gts +53 -0
  647. package/bundled-realms/pretui/components/result-card.gts +68 -0
  648. package/bundled-realms/pretui/components/result-card.md +45 -0
  649. package/bundled-realms/pretui/components/result-card.usage.gts +29 -0
  650. package/bundled-realms/pretui/components/result.gts +204 -0
  651. package/bundled-realms/pretui/components/result.md +67 -0
  652. package/bundled-realms/pretui/components/result.usage.gts +85 -0
  653. package/bundled-realms/pretui/components/rule-row.gts +462 -0
  654. package/bundled-realms/pretui/components/rule-row.md +60 -0
  655. package/bundled-realms/pretui/components/rule-row.usage.gts +157 -0
  656. package/bundled-realms/pretui/components/scroll-area.gts +121 -0
  657. package/bundled-realms/pretui/components/scroll-area.md +59 -0
  658. package/bundled-realms/pretui/components/scroll-area.usage.gts +175 -0
  659. package/bundled-realms/pretui/components/scroll-progress.gts +222 -0
  660. package/bundled-realms/pretui/components/scroll-progress.md +48 -0
  661. package/bundled-realms/pretui/components/scroll-progress.usage.gts +162 -0
  662. package/bundled-realms/pretui/components/scroller.gts +323 -0
  663. package/bundled-realms/pretui/components/scroller.md +44 -0
  664. package/bundled-realms/pretui/components/scroller.usage.gts +184 -0
  665. package/bundled-realms/pretui/components/scrub-input.gts +691 -0
  666. package/bundled-realms/pretui/components/scrub-input.md +61 -0
  667. package/bundled-realms/pretui/components/scrub-input.usage.gts +275 -0
  668. package/bundled-realms/pretui/components/search-input.gts +141 -0
  669. package/bundled-realms/pretui/components/search-input.md +56 -0
  670. package/bundled-realms/pretui/components/search-input.usage.gts +91 -0
  671. package/bundled-realms/pretui/components/segmented-control.gts +198 -0
  672. package/bundled-realms/pretui/components/segmented-control.md +39 -0
  673. package/bundled-realms/pretui/components/segmented-control.usage.gts +66 -0
  674. package/bundled-realms/pretui/components/select.examples.gts +80 -0
  675. package/bundled-realms/pretui/components/select.gts +481 -0
  676. package/bundled-realms/pretui/components/select.md +71 -0
  677. package/bundled-realms/pretui/components/select.usage.gts +109 -0
  678. package/bundled-realms/pretui/components/separator.gts +2 -0
  679. package/bundled-realms/pretui/components/separator.md +36 -0
  680. package/bundled-realms/pretui/components/separator.usage.gts +32 -0
  681. package/bundled-realms/pretui/components/session-prep.gts +164 -0
  682. package/bundled-realms/pretui/components/session-prep.md +48 -0
  683. package/bundled-realms/pretui/components/session-prep.usage.gts +122 -0
  684. package/bundled-realms/pretui/components/sheet-toolbar.gts +130 -0
  685. package/bundled-realms/pretui/components/sheet-toolbar.md +51 -0
  686. package/bundled-realms/pretui/components/sheet-toolbar.usage.gts +151 -0
  687. package/bundled-realms/pretui/components/sheet.gts +1166 -0
  688. package/bundled-realms/pretui/components/sheet.md +78 -0
  689. package/bundled-realms/pretui/components/sheet.usage.gts +318 -0
  690. package/bundled-realms/pretui/components/sidebar.gts +1165 -0
  691. package/bundled-realms/pretui/components/sidebar.md +88 -0
  692. package/bundled-realms/pretui/components/sidebar.usage.gts +360 -0
  693. package/bundled-realms/pretui/components/signature-pad.gts +840 -0
  694. package/bundled-realms/pretui/components/signature-pad.md +57 -0
  695. package/bundled-realms/pretui/components/signature-pad.usage.gts +222 -0
  696. package/bundled-realms/pretui/components/skeleton.gts +46 -0
  697. package/bundled-realms/pretui/components/skeleton.md +56 -0
  698. package/bundled-realms/pretui/components/skeleton.usage.gts +56 -0
  699. package/bundled-realms/pretui/components/skip-link.gts +65 -0
  700. package/bundled-realms/pretui/components/skip-link.md +49 -0
  701. package/bundled-realms/pretui/components/skip-link.usage.gts +47 -0
  702. package/bundled-realms/pretui/components/slide-over.gts +2 -0
  703. package/bundled-realms/pretui/components/slide-over.md +41 -0
  704. package/bundled-realms/pretui/components/slide-over.usage.gts +50 -0
  705. package/bundled-realms/pretui/components/slider.examples.gts +61 -0
  706. package/bundled-realms/pretui/components/slider.gts +331 -0
  707. package/bundled-realms/pretui/components/slider.md +59 -0
  708. package/bundled-realms/pretui/components/slider.usage.gts +99 -0
  709. package/bundled-realms/pretui/components/sliding-highlight.gts +249 -0
  710. package/bundled-realms/pretui/components/sliding-highlight.md +58 -0
  711. package/bundled-realms/pretui/components/sliding-highlight.usage.gts +184 -0
  712. package/bundled-realms/pretui/components/snackbar.gts +2 -0
  713. package/bundled-realms/pretui/components/snackbar.md +34 -0
  714. package/bundled-realms/pretui/components/snackbar.usage.gts +31 -0
  715. package/bundled-realms/pretui/components/sonner.gts +2 -0
  716. package/bundled-realms/pretui/components/sonner.md +42 -0
  717. package/bundled-realms/pretui/components/sonner.usage.gts +43 -0
  718. package/bundled-realms/pretui/components/sparkline.gts +233 -0
  719. package/bundled-realms/pretui/components/sparkline.md +58 -0
  720. package/bundled-realms/pretui/components/sparkline.usage.gts +74 -0
  721. package/bundled-realms/pretui/components/spinner.gts +57 -0
  722. package/bundled-realms/pretui/components/spinner.md +49 -0
  723. package/bundled-realms/pretui/components/spinner.usage.gts +65 -0
  724. package/bundled-realms/pretui/components/split-panes.gts +69 -0
  725. package/bundled-realms/pretui/components/split-panes.md +54 -0
  726. package/bundled-realms/pretui/components/split-panes.usage.gts +171 -0
  727. package/bundled-realms/pretui/components/spotlight.gts +174 -0
  728. package/bundled-realms/pretui/components/spotlight.md +51 -0
  729. package/bundled-realms/pretui/components/spotlight.usage.gts +197 -0
  730. package/bundled-realms/pretui/components/stack-divider.gts +58 -0
  731. package/bundled-realms/pretui/components/stack.gts +284 -0
  732. package/bundled-realms/pretui/components/stack.md +81 -0
  733. package/bundled-realms/pretui/components/stack.usage.gts +228 -0
  734. package/bundled-realms/pretui/components/stacking-cards.gts +137 -0
  735. package/bundled-realms/pretui/components/stacking-cards.md +40 -0
  736. package/bundled-realms/pretui/components/stacking-cards.usage.gts +124 -0
  737. package/bundled-realms/pretui/components/stat.gts +216 -0
  738. package/bundled-realms/pretui/components/stat.md +57 -0
  739. package/bundled-realms/pretui/components/stat.usage.gts +16 -0
  740. package/bundled-realms/pretui/components/statement-table.examples.gts +185 -0
  741. package/bundled-realms/pretui/components/statement-table.gts +792 -0
  742. package/bundled-realms/pretui/components/statement-table.md +58 -0
  743. package/bundled-realms/pretui/components/statement-table.usage.gts +252 -0
  744. package/bundled-realms/pretui/components/status-chip.gts +37 -0
  745. package/bundled-realms/pretui/components/status-chip.md +48 -0
  746. package/bundled-realms/pretui/components/status-chip.usage.gts +36 -0
  747. package/bundled-realms/pretui/components/step-list.gts +624 -0
  748. package/bundled-realms/pretui/components/step-list.md +50 -0
  749. package/bundled-realms/pretui/components/step-list.usage.gts +166 -0
  750. package/bundled-realms/pretui/components/stepper.gts +201 -0
  751. package/bundled-realms/pretui/components/stepper.md +54 -0
  752. package/bundled-realms/pretui/components/stepper.usage.gts +103 -0
  753. package/bundled-realms/pretui/components/steps-with-media.gts +254 -0
  754. package/bundled-realms/pretui/components/steps-with-media.md +54 -0
  755. package/bundled-realms/pretui/components/steps-with-media.usage.gts +208 -0
  756. package/bundled-realms/pretui/components/streaming-text.gts +77 -0
  757. package/bundled-realms/pretui/components/streaming-text.md +55 -0
  758. package/bundled-realms/pretui/components/streaming-text.usage.gts +15 -0
  759. package/bundled-realms/pretui/components/swatch-chip.gts +104 -0
  760. package/bundled-realms/pretui/components/swatch-chip.md +47 -0
  761. package/bundled-realms/pretui/components/swatch-chip.usage.gts +21 -0
  762. package/bundled-realms/pretui/components/swatch.gts +141 -0
  763. package/bundled-realms/pretui/components/swatch.md +50 -0
  764. package/bundled-realms/pretui/components/swatch.usage.gts +80 -0
  765. package/bundled-realms/pretui/components/switch.examples.gts +53 -0
  766. package/bundled-realms/pretui/components/switch.gts +118 -0
  767. package/bundled-realms/pretui/components/switch.md +62 -0
  768. package/bundled-realms/pretui/components/switch.usage.gts +59 -0
  769. package/bundled-realms/pretui/components/table-of-contents.gts +384 -0
  770. package/bundled-realms/pretui/components/table-of-contents.md +75 -0
  771. package/bundled-realms/pretui/components/table-of-contents.usage.gts +270 -0
  772. package/bundled-realms/pretui/components/table.gts +158 -0
  773. package/bundled-realms/pretui/components/table.md +80 -0
  774. package/bundled-realms/pretui/components/table.usage.gts +44 -0
  775. package/bundled-realms/pretui/components/tabs.gts +117 -0
  776. package/bundled-realms/pretui/components/tabs.md +58 -0
  777. package/bundled-realms/pretui/components/tabs.usage.gts +94 -0
  778. package/bundled-realms/pretui/components/tags-input.gts +52 -0
  779. package/bundled-realms/pretui/components/tags-input.md +48 -0
  780. package/bundled-realms/pretui/components/tags-input.usage.gts +56 -0
  781. package/bundled-realms/pretui/components/task-row.gts +483 -0
  782. package/bundled-realms/pretui/components/task-row.md +48 -0
  783. package/bundled-realms/pretui/components/task-row.usage.gts +119 -0
  784. package/bundled-realms/pretui/components/terminal-animation.gts +355 -0
  785. package/bundled-realms/pretui/components/terminal-animation.md +49 -0
  786. package/bundled-realms/pretui/components/terminal-animation.usage.gts +110 -0
  787. package/bundled-realms/pretui/components/text-effects.gts +339 -0
  788. package/bundled-realms/pretui/components/text-effects.md +49 -0
  789. package/bundled-realms/pretui/components/text-effects.usage.gts +192 -0
  790. package/bundled-realms/pretui/components/text-morph.gts +292 -0
  791. package/bundled-realms/pretui/components/text-morph.md +45 -0
  792. package/bundled-realms/pretui/components/text-morph.usage.gts +117 -0
  793. package/bundled-realms/pretui/components/text-rotate.gts +121 -0
  794. package/bundled-realms/pretui/components/text-rotate.md +44 -0
  795. package/bundled-realms/pretui/components/text-rotate.usage.gts +73 -0
  796. package/bundled-realms/pretui/components/text-scramble.gts +189 -0
  797. package/bundled-realms/pretui/components/text-scramble.md +42 -0
  798. package/bundled-realms/pretui/components/text-scramble.usage.gts +80 -0
  799. package/bundled-realms/pretui/components/text-shimmer.gts +89 -0
  800. package/bundled-realms/pretui/components/text-shimmer.md +42 -0
  801. package/bundled-realms/pretui/components/text-shimmer.usage.gts +69 -0
  802. package/bundled-realms/pretui/components/textarea.gts +112 -0
  803. package/bundled-realms/pretui/components/textarea.md +51 -0
  804. package/bundled-realms/pretui/components/textarea.usage.gts +100 -0
  805. package/bundled-realms/pretui/components/theme-frame.gts +272 -0
  806. package/bundled-realms/pretui/components/theme-frame.md +48 -0
  807. package/bundled-realms/pretui/components/thinking.gts +431 -0
  808. package/bundled-realms/pretui/components/thinking.md +47 -0
  809. package/bundled-realms/pretui/components/thinking.usage.gts +134 -0
  810. package/bundled-realms/pretui/components/tilt.gts +194 -0
  811. package/bundled-realms/pretui/components/tilt.md +50 -0
  812. package/bundled-realms/pretui/components/tilt.usage.gts +174 -0
  813. package/bundled-realms/pretui/components/time-input.gts +583 -0
  814. package/bundled-realms/pretui/components/time-input.md +51 -0
  815. package/bundled-realms/pretui/components/time-input.usage.gts +110 -0
  816. package/bundled-realms/pretui/components/timeline.gts +269 -0
  817. package/bundled-realms/pretui/components/timeline.md +63 -0
  818. package/bundled-realms/pretui/components/timeline.usage.gts +180 -0
  819. package/bundled-realms/pretui/components/toast.gts +85 -0
  820. package/bundled-realms/pretui/components/toast.md +57 -0
  821. package/bundled-realms/pretui/components/toast.usage.gts +18 -0
  822. package/bundled-realms/pretui/components/toaster.gts +808 -0
  823. package/bundled-realms/pretui/components/toaster.md +83 -0
  824. package/bundled-realms/pretui/components/toaster.usage.gts +256 -0
  825. package/bundled-realms/pretui/components/toggle-group.gts +435 -0
  826. package/bundled-realms/pretui/components/toggle-group.md +59 -0
  827. package/bundled-realms/pretui/components/toggle-group.usage.gts +260 -0
  828. package/bundled-realms/pretui/components/toggle-matrix.gts +994 -0
  829. package/bundled-realms/pretui/components/toggle-matrix.md +44 -0
  830. package/bundled-realms/pretui/components/toggle-matrix.usage.gts +243 -0
  831. package/bundled-realms/pretui/components/toggle.gts +235 -0
  832. package/bundled-realms/pretui/components/toggle.md +59 -0
  833. package/bundled-realms/pretui/components/toggle.usage.gts +244 -0
  834. package/bundled-realms/pretui/components/token-input.gts +483 -0
  835. package/bundled-realms/pretui/components/token-input.md +50 -0
  836. package/bundled-realms/pretui/components/token-input.usage.gts +137 -0
  837. package/bundled-realms/pretui/components/token.gts +197 -0
  838. package/bundled-realms/pretui/components/token.md +63 -0
  839. package/bundled-realms/pretui/components/token.usage.gts +128 -0
  840. package/bundled-realms/pretui/components/toolbar.gts +62 -0
  841. package/bundled-realms/pretui/components/toolbar.md +50 -0
  842. package/bundled-realms/pretui/components/toolbar.usage.gts +78 -0
  843. package/bundled-realms/pretui/components/tooltip.gts +212 -0
  844. package/bundled-realms/pretui/components/tooltip.md +53 -0
  845. package/bundled-realms/pretui/components/tooltip.usage.gts +64 -0
  846. package/bundled-realms/pretui/components/tour.gts +436 -0
  847. package/bundled-realms/pretui/components/tour.md +62 -0
  848. package/bundled-realms/pretui/components/tour.usage.gts +70 -0
  849. package/bundled-realms/pretui/components/transfer.gts +2 -0
  850. package/bundled-realms/pretui/components/transfer.md +39 -0
  851. package/bundled-realms/pretui/components/transfer.usage.gts +52 -0
  852. package/bundled-realms/pretui/components/transmute.gts +103 -0
  853. package/bundled-realms/pretui/components/transmute.md +49 -0
  854. package/bundled-realms/pretui/components/transmute.usage.gts +16 -0
  855. package/bundled-realms/pretui/components/tree-select.gts +596 -0
  856. package/bundled-realms/pretui/components/tree-select.md +70 -0
  857. package/bundled-realms/pretui/components/tree-select.usage.gts +75 -0
  858. package/bundled-realms/pretui/components/tree.gts +532 -0
  859. package/bundled-realms/pretui/components/tree.md +68 -0
  860. package/bundled-realms/pretui/components/tree.usage.gts +278 -0
  861. package/bundled-realms/pretui/components/trim-bar.gts +611 -0
  862. package/bundled-realms/pretui/components/trim-bar.md +48 -0
  863. package/bundled-realms/pretui/components/trim-bar.usage.gts +112 -0
  864. package/bundled-realms/pretui/components/typewriter.gts +122 -0
  865. package/bundled-realms/pretui/components/typewriter.md +45 -0
  866. package/bundled-realms/pretui/components/typewriter.usage.gts +105 -0
  867. package/bundled-realms/pretui/components/typography.gts +379 -0
  868. package/bundled-realms/pretui/components/typography.md +77 -0
  869. package/bundled-realms/pretui/components/typography.usage.gts +52 -0
  870. package/bundled-realms/pretui/components/url-input.gts +130 -0
  871. package/bundled-realms/pretui/components/url-input.md +58 -0
  872. package/bundled-realms/pretui/components/url-input.usage.gts +97 -0
  873. package/bundled-realms/pretui/components/usage-action.gts +16 -0
  874. package/bundled-realms/pretui/components/usage-argument.gts +109 -0
  875. package/bundled-realms/pretui/components/usage-argument.md +44 -0
  876. package/bundled-realms/pretui/components/usage-array.gts +80 -0
  877. package/bundled-realms/pretui/components/usage-array.md +47 -0
  878. package/bundled-realms/pretui/components/usage-bool.gts +62 -0
  879. package/bundled-realms/pretui/components/usage-bool.md +47 -0
  880. package/bundled-realms/pretui/components/usage-component-arg.gts +16 -0
  881. package/bundled-realms/pretui/components/usage-css-variable.gts +56 -0
  882. package/bundled-realms/pretui/components/usage-css-variable.md +48 -0
  883. package/bundled-realms/pretui/components/usage-number.gts +127 -0
  884. package/bundled-realms/pretui/components/usage-number.md +48 -0
  885. package/bundled-realms/pretui/components/usage-object.gts +58 -0
  886. package/bundled-realms/pretui/components/usage-object.md +48 -0
  887. package/bundled-realms/pretui/components/usage-string.gts +89 -0
  888. package/bundled-realms/pretui/components/usage-string.md +46 -0
  889. package/bundled-realms/pretui/components/usage-yield.gts +16 -0
  890. package/bundled-realms/pretui/components/value-input.gts +265 -0
  891. package/bundled-realms/pretui/components/value-input.md +49 -0
  892. package/bundled-realms/pretui/components/value-input.usage.gts +176 -0
  893. package/bundled-realms/pretui/components/video-player.gts +80 -0
  894. package/bundled-realms/pretui/components/video-player.md +46 -0
  895. package/bundled-realms/pretui/components/video-player.usage.gts +107 -0
  896. package/bundled-realms/pretui/components/viewport.gts +520 -0
  897. package/bundled-realms/pretui/components/viewport.md +55 -0
  898. package/bundled-realms/pretui/components/visually-hidden.gts +49 -0
  899. package/bundled-realms/pretui/components/visually-hidden.md +47 -0
  900. package/bundled-realms/pretui/components/visually-hidden.usage.gts +27 -0
  901. package/bundled-realms/pretui/components/watermark.gts +141 -0
  902. package/bundled-realms/pretui/components/watermark.md +58 -0
  903. package/bundled-realms/pretui/components/watermark.usage.gts +63 -0
  904. package/bundled-realms/pretui/components/waveform.gts +376 -0
  905. package/bundled-realms/pretui/components/waveform.md +56 -0
  906. package/bundled-realms/pretui/components/waveform.usage.gts +131 -0
  907. package/bundled-realms/pretui/components/wizard.gts +677 -0
  908. package/bundled-realms/pretui/components/wizard.md +58 -0
  909. package/bundled-realms/pretui/components/wizard.usage.gts +188 -0
  910. package/bundled-realms/pretui/components/work-item.gts +207 -0
  911. package/bundled-realms/pretui/components/work-item.md +58 -0
  912. package/bundled-realms/pretui/components/work-item.usage.gts +103 -0
  913. package/bundled-realms/pretui/components/zoomable-frame.gts +541 -0
  914. package/bundled-realms/pretui/components/zoomable-frame.md +50 -0
  915. package/bundled-realms/pretui/components/zoomable-frame.usage.gts +175 -0
  916. package/bundled-realms/pretui/cropper/LICENSE +21 -0
  917. package/bundled-realms/pretui/cropper/README.md +92 -0
  918. package/bundled-realms/pretui/cropper/index.js +81 -0
  919. package/bundled-realms/pretui/data-component.gts +1161 -0
  920. package/bundled-realms/pretui/demo-design-layers.gts +112 -0
  921. package/bundled-realms/pretui/demo-design-tools.gts +463 -0
  922. package/bundled-realms/pretui/demo-design-value.gts +9 -0
  923. package/bundled-realms/pretui/demo-forms-core.gts +82 -0
  924. package/bundled-realms/pretui/demo-forms-expression.gts +76 -0
  925. package/bundled-realms/pretui/demo-forms-record.gts +16 -0
  926. package/bundled-realms/pretui/demo-foundations-more.gts +10 -0
  927. package/bundled-realms/pretui/demo-foundations.gts +8 -0
  928. package/bundled-realms/pretui/demo-ink-feedback.gts +12 -0
  929. package/bundled-realms/pretui/demo-json.gts +17 -0
  930. package/bundled-realms/pretui/demo-locations.ts +103 -0
  931. package/bundled-realms/pretui/demo-media-library.gts +101 -0
  932. package/bundled-realms/pretui/demo-media.gts +6 -0
  933. package/bundled-realms/pretui/demo-menu.gts +182 -0
  934. package/bundled-realms/pretui/demo-motion-core.gts +4 -0
  935. package/bundled-realms/pretui/demo-motion-pointer.gts +21 -0
  936. package/bundled-realms/pretui/demo-reading-format.gts +10 -0
  937. package/bundled-realms/pretui/demo-structure-dashboard.gts +212 -0
  938. package/bundled-realms/pretui/demo-structure-data.gts +4 -0
  939. package/bundled-realms/pretui/demo-structure-scroll.gts +19 -0
  940. package/bundled-realms/pretui/demo-structure.gts +21 -0
  941. package/bundled-realms/pretui/demo-surfaces-grid.gts +104 -0
  942. package/bundled-realms/pretui/demo-texture.gts +21 -0
  943. package/bundled-realms/pretui/docs/catalog-taxonomy.md +200 -0
  944. package/bundled-realms/pretui/docs/composites.md +13 -0
  945. package/bundled-realms/pretui/docs/reading.md +12 -0
  946. package/bundled-realms/pretui/docs/structure.md +8 -0
  947. package/bundled-realms/pretui/emoji-data/LICENSE +202 -0
  948. package/bundled-realms/pretui/emoji-data/LICENSE.data +202 -0
  949. package/bundled-realms/pretui/emoji-data/LICENSE.emojibase +21 -0
  950. package/bundled-realms/pretui/emoji-data/LICENSE.unicode +39 -0
  951. package/bundled-realms/pretui/emoji-data/README.md +360 -0
  952. package/bundled-realms/pretui/emoji-data/data.ts +45 -0
  953. package/bundled-realms/pretui/emoji-data/engine.ts +465 -0
  954. package/bundled-realms/pretui/example-gallery.gts +129 -0
  955. package/bundled-realms/pretui/examples-kit.gts +228 -0
  956. package/bundled-realms/pretui/examples-listing.gts +51 -0
  957. package/bundled-realms/pretui/examples.gts +584 -0
  958. package/bundled-realms/pretui/focus.gts +459 -0
  959. package/bundled-realms/pretui/gridstack/LICENSE +21 -0
  960. package/bundled-realms/pretui/gridstack/README.md +103 -0
  961. package/bundled-realms/pretui/gridstack/index.js +169 -0
  962. package/bundled-realms/pretui/icon-registry.gts +753 -0
  963. package/bundled-realms/pretui/index.json +11 -0
  964. package/bundled-realms/pretui/internal/agentic-chat.gts +101 -0
  965. package/bundled-realms/pretui/internal/blocks.gts +35 -0
  966. package/bundled-realms/pretui/internal/choice-cards.gts +258 -0
  967. package/bundled-realms/pretui/internal/color-fixtures.gts +3 -0
  968. package/bundled-realms/pretui/internal/composites-fixtures.gts +16 -0
  969. package/bundled-realms/pretui/internal/corner-mark.gts +83 -0
  970. package/bundled-realms/pretui/internal/design-tools.gts +881 -0
  971. package/bundled-realms/pretui/internal/extras.gts +31 -0
  972. package/bundled-realms/pretui/internal/feedback.gts +27 -0
  973. package/bundled-realms/pretui/internal/file-intake-fixtures.gts +17 -0
  974. package/bundled-realms/pretui/internal/file-intake.gts +193 -0
  975. package/bundled-realms/pretui/internal/forms-core.gts +394 -0
  976. package/bundled-realms/pretui/internal/forms-expression.gts +837 -0
  977. package/bundled-realms/pretui/internal/forms-picker-fixtures.gts +10 -0
  978. package/bundled-realms/pretui/internal/forms-picker.gts +129 -0
  979. package/bundled-realms/pretui/internal/forms-record.gts +173 -0
  980. package/bundled-realms/pretui/internal/freestyle.gts +117 -0
  981. package/bundled-realms/pretui/internal/ink.gts +25 -0
  982. package/bundled-realms/pretui/internal/json-tree.gts +526 -0
  983. package/bundled-realms/pretui/internal/keep-style.gts +168 -0
  984. package/bundled-realms/pretui/internal/media-assets.gts +10 -0
  985. package/bundled-realms/pretui/internal/media-library.gts +14 -0
  986. package/bundled-realms/pretui/internal/media-viewer.gts +322 -0
  987. package/bundled-realms/pretui/internal/media-wave.gts +270 -0
  988. package/bundled-realms/pretui/internal/menu.gts +522 -0
  989. package/bundled-realms/pretui/internal/money-fixtures.gts +6 -0
  990. package/bundled-realms/pretui/internal/money.gts +477 -0
  991. package/bundled-realms/pretui/internal/motion-core.gts +54 -0
  992. package/bundled-realms/pretui/internal/motion-pointer.gts +234 -0
  993. package/bundled-realms/pretui/internal/overlay-confirm.gts +35 -0
  994. package/bundled-realms/pretui/internal/overlay.gts +291 -0
  995. package/bundled-realms/pretui/internal/reading-extras.gts +56 -0
  996. package/bundled-realms/pretui/internal/reading-format.gts +232 -0
  997. package/bundled-realms/pretui/internal/reading-listing.gts +232 -0
  998. package/bundled-realms/pretui/internal/structure-chart.gts +414 -0
  999. package/bundled-realms/pretui/internal/structure-dashboard.gts +503 -0
  1000. package/bundled-realms/pretui/internal/structure-flow.gts +48 -0
  1001. package/bundled-realms/pretui/internal/structure-layout-fixtures.gts +36 -0
  1002. package/bundled-realms/pretui/internal/structure-layout.gts +99 -0
  1003. package/bundled-realms/pretui/internal/structure-morph.gts +140 -0
  1004. package/bundled-realms/pretui/internal/structure-scenes.gts +25 -0
  1005. package/bundled-realms/pretui/internal/structure-scroll.gts +72 -0
  1006. package/bundled-realms/pretui/internal/structure-shell-fixtures.gts +25 -0
  1007. package/bundled-realms/pretui/internal/surfaces-canvas-fixtures.gts +5 -0
  1008. package/bundled-realms/pretui/internal/surfaces-canvas.gts +283 -0
  1009. package/bundled-realms/pretui/internal/texture.gts +81 -0
  1010. package/bundled-realms/pretui/internal/toggle-controls-fixtures.gts +7 -0
  1011. package/bundled-realms/pretui/internal/toggle-controls.gts +81 -0
  1012. package/bundled-realms/pretui/json-model.ts +1981 -0
  1013. package/bundled-realms/pretui/media-chrome/LICENSE +19 -0
  1014. package/bundled-realms/pretui/media-chrome/README.md +111 -0
  1015. package/bundled-realms/pretui/media-chrome/index.js +1647 -0
  1016. package/bundled-realms/pretui/media-examples.gts +315 -0
  1017. package/bundled-realms/pretui/model-viewer/LICENSE +202 -0
  1018. package/{LICENSE → bundled-realms/pretui/model-viewer/LICENSE-gainmap-js} +1 -1
  1019. package/bundled-realms/pretui/model-viewer/LICENSE-lit +28 -0
  1020. package/bundled-realms/pretui/model-viewer/LICENSE-three +21 -0
  1021. package/bundled-realms/pretui/model-viewer/NOTICE +67 -0
  1022. package/bundled-realms/pretui/model-viewer/README.md +122 -0
  1023. package/bundled-realms/pretui/model-viewer/index.js +6413 -0
  1024. package/bundled-realms/pretui/package.json +51 -0
  1025. package/bundled-realms/pretui/photoswipe/LICENSE +21 -0
  1026. package/bundled-realms/pretui/photoswipe/README.md +91 -0
  1027. package/bundled-realms/pretui/photoswipe/index.js +149 -0
  1028. package/bundled-realms/pretui/photoswipe/style.ts +465 -0
  1029. package/bundled-realms/pretui/plot/LICENSE +13 -0
  1030. package/bundled-realms/pretui/plot/LICENSE.d3 +13 -0
  1031. package/bundled-realms/pretui/plot/LICENSE.interval-tree-1d +22 -0
  1032. package/bundled-realms/pretui/plot/LICENSE.isoformat +13 -0
  1033. package/bundled-realms/pretui/plot/README.md +35 -0
  1034. package/bundled-realms/pretui/plot/index.d.ts +31 -0
  1035. package/bundled-realms/pretui/plot/index.js +449 -0
  1036. package/bundled-realms/pretui/pretui-component.gts +1336 -0
  1037. package/bundled-realms/pretui/pretui-css.gts +380 -0
  1038. package/bundled-realms/pretui/pretui-primitives.gts +162 -0
  1039. package/bundled-realms/pretui/qrcode/LICENSE +34 -0
  1040. package/bundled-realms/pretui/qrcode/README.md +87 -0
  1041. package/bundled-realms/pretui/qrcode/index.js +35 -0
  1042. package/bundled-realms/pretui/realm.json +16 -0
  1043. package/bundled-realms/pretui/registry.ts +40 -0
  1044. package/bundled-realms/pretui/sigpad/LICENSE +21 -0
  1045. package/bundled-realms/pretui/sigpad/README.md +103 -0
  1046. package/bundled-realms/pretui/sigpad/index.js +30 -0
  1047. package/bundled-realms/pretui/structure-dashboard-css.ts +166 -0
  1048. package/bundled-realms/pretui/surfaces/README.md +37 -0
  1049. package/bundled-realms/pretui/surfaces/canvas/LICENSE.d3 +168 -0
  1050. package/bundled-realms/pretui/surfaces/canvas/LICENSE.xyflow +21 -0
  1051. package/bundled-realms/pretui/surfaces/canvas/index.js +25420 -0
  1052. package/bundled-realms/pretui/surfaces/grid/LICENSE.tanstack +50 -0
  1053. package/bundled-realms/pretui/surfaces/grid/index.js +21478 -0
  1054. package/bundled-realms/pretui/surfaces/layout/index.js +9036 -0
  1055. package/bundled-realms/pretui/surfaces-canvas-css.ts +1640 -0
  1056. package/bundled-realms/pretui/surfaces-canvas-layout.ts +607 -0
  1057. package/bundled-realms/pretui/tsconfig.json +54 -0
  1058. package/bundled-realms/pretui/wavesurfer/LICENSE +29 -0
  1059. package/bundled-realms/pretui/wavesurfer/README.md +85 -0
  1060. package/bundled-realms/pretui/wavesurfer/index.js +184 -0
  1061. package/bundled-realms/pretui/zxcvbn/LICENSE +21 -0
  1062. package/bundled-realms/pretui/zxcvbn/README.md +192 -0
  1063. package/bundled-realms/pretui/zxcvbn/index.d.ts +28 -0
  1064. package/bundled-realms/pretui/zxcvbn/index.js +5931 -0
  1065. package/bundled-test-harness/index.html +1 -1
  1066. package/bundled-test-harness/tests/index.html +1 -1
  1067. package/dist/api.js +1 -1
  1068. package/dist/index.js +33 -33
  1069. package/package.json +1 -1
  1070. package/src/lib/test-engine.ts +14 -4
@@ -0,0 +1,1150 @@
1
+ // Pretui — Autocomplete: free text with suggestions beside it.
2
+ import Component from '@glimmer/component';
3
+ import { tracked } from '@glimmer/tracking';
4
+ import { fn } from '@ember/helper';
5
+ import { on } from '@ember/modifier';
6
+ import { guidFor } from '@ember/object/internals';
7
+ import XIcon from '@cardstack/boxel-icons/x';
8
+ import { OwnedTimers, listen, ownsTimers } from '../focus';
9
+ import { Button } from './button';
10
+ import { VisuallyHidden } from './visually-hidden';
11
+ import { PRETUI_TONES, emit, firstDefined, resolveSize, resolveTone } from '../pretui-primitives';
12
+ import type {
13
+ ControlAliasArgs,
14
+ PretuiAppearance,
15
+ PretuiSize,
16
+ PretuiSizeArg,
17
+ PretuiToneArg,
18
+ PretuiTone,
19
+ } from '../pretui-primitives';
20
+
21
+ // ═════════════════════════════════════════════════════════════════════════
22
+ // Autocomplete — pure helpers
23
+ // ═════════════════════════════════════════════════════════════════════════
24
+
25
+ export interface AutocompleteItem {
26
+ /** what lands in the field when this suggestion is chosen */
27
+ value: string;
28
+ /** visible text; defaults to `value` */
29
+ label?: string;
30
+ /** secondary line in the row */
31
+ meta?: string;
32
+ /** announced and skipped by the arrows, but still rendered */
33
+ disabled?: boolean;
34
+ }
35
+
36
+ /** `contains` (default) is what every React kit ships; `starts-with` is the
37
+ * prefix behaviour a code/identifier field wants; `none` means the caller has
38
+ * already filtered — the correct mode for an async `@onSearch`, where
39
+ * re-filtering the server's answer against the current keystroke hides rows
40
+ * the server deliberately returned. */
41
+ export type AutocompleteFilter = 'contains' | 'starts-with' | 'none';
42
+
43
+ export function filterItems(
44
+ items: readonly AutocompleteItem[],
45
+ query: string,
46
+ mode: AutocompleteFilter = 'contains',
47
+ ): AutocompleteItem[] {
48
+ let needle = (query ?? '').trim().toLowerCase();
49
+ if (mode === 'none' || needle === '') {
50
+ return [...items];
51
+ }
52
+ return items.filter((item) => {
53
+ let hay = (item.label ?? item.value).toLowerCase();
54
+ return mode === 'starts-with'
55
+ ? hay.startsWith(needle)
56
+ : hay.includes(needle);
57
+ });
58
+ }
59
+
60
+ export interface LabelParts {
61
+ before: string;
62
+ hit: string;
63
+ after: string;
64
+ }
65
+
66
+ /** Splits a label around the first case-insensitive occurrence of the query,
67
+ * so the matched run can be emphasised. Returns the whole label as `before`
68
+ * when there is no match, which is what makes it safe to render
69
+ * unconditionally. */
70
+ export function matchSpan(label: string, query: string): LabelParts {
71
+ let text = label ?? '';
72
+ let needle = (query ?? '').trim();
73
+ if (!needle) {
74
+ return { before: text, hit: '', after: '' };
75
+ }
76
+ let at = text.toLowerCase().indexOf(needle.toLowerCase());
77
+ if (at < 0) {
78
+ return { before: text, hit: '', after: '' };
79
+ }
80
+ return {
81
+ before: text.slice(0, at),
82
+ hit: text.slice(at, at + needle.length),
83
+ after: text.slice(at + needle.length),
84
+ };
85
+ }
86
+
87
+ /** Where the highlight came from. This is the whole reason Enter can be
88
+ * unambiguous: a highlight the COMPONENT put there (`auto`) or the POINTER
89
+ * put there does not speak for the keyboard. */
90
+ export type HighlightSource = 'none' | 'auto' | 'pointer' | 'user';
91
+
92
+ /** What Enter means when the highlighted suggestion and the typed text
93
+ * disagree. `deliberate` (default) is the honest answer; `highlight` is the
94
+ * strict listbox behaviour; `text` never lets a suggestion win. */
95
+ export type EnterMode = 'deliberate' | 'highlight' | 'text';
96
+
97
+ export type CommitTarget = 'highlight' | 'text' | 'none';
98
+
99
+ /**
100
+ * Identity on `text`, with a second parameter that exists only to be READ.
101
+ *
102
+ * React snaps a controlled input back when the owner declines a keystroke;
103
+ * Glimmer does not, because the bound reference never became dirty — which is
104
+ * how a "controlled" field in most Ember kits quietly stops being controlled
105
+ * after the first rejected character. Passing a revision counter through here
106
+ * makes the value reference re-validate on a rejection, so the caller's value
107
+ * is written back into the field. The parameter is deliberately unused.
108
+ */
109
+ export function valueAt(text: string, _revision: number): string {
110
+ return text;
111
+ }
112
+
113
+ /**
114
+ * THE hard decision of a free-text autocomplete, isolated as six lines of
115
+ * pure function so it can be proven without a DOM.
116
+ *
117
+ * MUI arrives at the same rule (`useAutocomplete.js`, the
118
+ * `hasProgrammaticHighlight` branch) but reaches it through four interacting
119
+ * flags — `freeSolo`, `autoHighlight`, `inputPristine`, `autoSelect` — and
120
+ * never states it. Stated: **a suggestion wins Enter only when the reader put
121
+ * the highlight there with the keyboard.** Typing "chart" while row 0 sits
122
+ * pre-highlighted commits "chart", not row 0. Arrowing down to row 0 commits
123
+ * row 0. Hovering row 0 with the mouse and then pressing Enter commits
124
+ * "chart", because a hand on the keyboard is not looking at the pointer.
125
+ */
126
+ export function commitTarget(
127
+ mode: EnterMode,
128
+ source: HighlightSource,
129
+ ): CommitTarget {
130
+ if (mode === 'text') {
131
+ return 'text';
132
+ }
133
+ let highlighted = source !== 'none';
134
+ if (mode === 'highlight') {
135
+ return highlighted ? 'highlight' : 'none';
136
+ }
137
+ return source === 'user' ? 'highlight' : 'text';
138
+ }
139
+
140
+ /** Wrapping step, with `-1` meaning "nothing highlighted": stepping forward
141
+ * from nothing lands on the first row, backward on the last. */
142
+ export function stepIndex(
143
+ current: number,
144
+ count: number,
145
+ step: number,
146
+ ): number {
147
+ if (count <= 0) {
148
+ return -1;
149
+ }
150
+ if (current < 0) {
151
+ return step > 0 ? 0 : count - 1;
152
+ }
153
+ return (current + step + count) % count;
154
+ }
155
+
156
+ /** The next index the arrows may land on, skipping disabled rows. Returns
157
+ * `-1` when every row is disabled, rather than parking the highlight on a row
158
+ * Enter would refuse. */
159
+ export function nextEnabled(
160
+ disabled: readonly boolean[],
161
+ current: number,
162
+ step: number,
163
+ ): number {
164
+ let count = disabled.length;
165
+ if (count === 0) {
166
+ return -1;
167
+ }
168
+ let at = current;
169
+ for (let hop = 0; hop < count; hop++) {
170
+ at = stepIndex(at, count, step);
171
+ if (!disabled[at]) {
172
+ return at;
173
+ }
174
+ }
175
+ return -1;
176
+ }
177
+
178
+ // ═════════════════════════════════════════════════════════════════════════
179
+ // Autocomplete
180
+ // ═════════════════════════════════════════════════════════════════════════
181
+
182
+ interface AutocompleteRow {
183
+ id: string;
184
+ index: number;
185
+ value: string;
186
+ label: string;
187
+ meta: string | undefined;
188
+ disabled: boolean;
189
+ active: boolean;
190
+ parts: LabelParts;
191
+ item: AutocompleteItem;
192
+ }
193
+
194
+ export interface AutocompleteSignature {
195
+ Args: ControlAliasArgs & {
196
+ /** CONTROLLED text. In an autocomplete the value IS what the reader
197
+ * typed — that is the whole difference from `Combobox`, whose value is
198
+ * constrained to its listbox. */
199
+ value?: string;
200
+ /** uncontrolled seed */
201
+ defaultValue?: string;
202
+ /** the suggestion collection (canonical noun, react-ecosystem-gap) */
203
+ items?: readonly AutocompleteItem[];
204
+ /** alias — the `options` spelling every React kit uses */
205
+ options?: readonly AutocompleteItem[];
206
+ /** CONTROLLED suggestion layer */
207
+ open?: boolean;
208
+ /** uncontrolled seed for the layer */
209
+ defaultOpen?: boolean;
210
+ /** fires whenever the suggestion layer opens or closes */
211
+ onOpenChange?: (open: boolean) => void;
212
+ /** the debounced query, for a caller that fetches suggestions. Pair with
213
+ * `@filter='none'`, since the caller has already decided what matches. */
214
+ onSearch?: (query: string) => void;
215
+ /** fires when a value is COMMITTED — Enter, a click, or blur — with the
216
+ * suggestion when one was chosen and `undefined` for free text. This is
217
+ * the callback that distinguishes "typing" from "meaning it". */
218
+ onCommit?: (value: string, item?: AutocompleteItem) => void;
219
+ /** SECONDS of quiet before `@onSearch` fires (kit law: seconds
220
+ * everywhere). `0`, the default, fires on every keystroke and schedules
221
+ * no timer at all. */
222
+ debounce?: number;
223
+ filter?: AutocompleteFilter;
224
+ /** what Enter means when the highlight and the typed text disagree */
225
+ enterCommits?: EnterMode;
226
+ /** pre-highlight the first row when suggestions appear. Note that an
227
+ * automatic highlight still does NOT win Enter under the default
228
+ * `@enterCommits='deliberate'`. */
229
+ autoHighlight?: boolean;
230
+ /** open the layer when the field receives focus (default `true`) */
231
+ openOnFocus?: boolean;
232
+ /** suppress the layer until this many characters are typed */
233
+ minChars?: number;
234
+ /** cap on rendered rows; the rest are reachable by narrowing */
235
+ maxVisible?: number;
236
+ /** show a clear button once the field has text */
237
+ clearable?: boolean;
238
+ /** pending: `aria-busy` on the field, a progress line on the layer, and
239
+ * focus RETAINED (react-ecosystem-gap axis 12) */
240
+ busy?: boolean;
241
+ loading?: boolean;
242
+ isPending?: boolean;
243
+ invalid?: boolean;
244
+ isInvalid?: boolean;
245
+ disabled?: boolean;
246
+ required?: boolean;
247
+ readonly?: boolean;
248
+ placeholder?: string;
249
+ /** accessible name. Rendered as a real `sr-only` `<label for>` unless a
250
+ * wrapper claims the field with `@controlId`. */
251
+ label?: string;
252
+ /** a wrapper (Field, PropertyRow) that owns the visible label passes the
253
+ * id it points at; the component then renders no label of its own */
254
+ controlId?: string;
255
+ describedBy?: string;
256
+ /** replaces the built-in "No matches" line */
257
+ emptyText?: string;
258
+ tone?: PretuiToneArg;
259
+ appearance?: PretuiAppearance;
260
+ size?: PretuiSizeArg;
261
+ };
262
+ Blocks: {
263
+ /** replaces the default row body. Yields the item and the live query.
264
+ * Rendered inside an `aria-hidden` face, so any markup is legal here —
265
+ * the option's accessible name is computed, not scraped. */
266
+ item: [AutocompleteItem, { query: string; active: boolean }];
267
+ /** replaces the built-in empty line */
268
+ empty: [];
269
+ };
270
+ Element: HTMLDivElement;
271
+ }
272
+
273
+ /**
274
+ * Free text with suggestions beside it.
275
+ *
276
+ * **From:** MUI `useAutocomplete` (`freeSolo`), Mantine `Autocomplete`, Base
277
+ * UI `Autocomplete` (`mode='list'`), Ant `AutoComplete`.
278
+ *
279
+ * **What this fixes relative to those.**
280
+ *
281
+ * · **Enter is stated, not emergent.** MUI's answer lives in four interacting
282
+ * flags and one undocumented `hasProgrammaticHighlight` branch; here it is
283
+ * `commitTarget()`, six lines, one knob (`@enterCommits`), and a unit test.
284
+ * · **Home and End are left alone.** MUI defaults `handleHomeEndKeys` to
285
+ * `false` under `freeSolo` and Mantine binds them anyway; in a field whose
286
+ * value is prose, Home and End belong to the CARET. Stealing them to jump
287
+ * the listbox breaks text editing in a control whose entire premise is that
288
+ * you are editing text.
289
+ * · **The typed value is never silently reverted.** MUI's `clearOnBlur`
290
+ * defaults to `!freeSolo`, so the same component throws typed text away in
291
+ * one mode and keeps it in the other. Here blur always COMMITS, and Escape
292
+ * is the explicit undo: once to close the layer, again to restore the last
293
+ * committed value.
294
+ * · **Async without a wall-clock lie.** `@debounce` is in SECONDS (kit law)
295
+ * and the handle is owned by an `ember-modifier`, so it cannot outlive the
296
+ * element. With `@debounce={{0}}` — the default — no timer is scheduled at
297
+ * all, and if the modifier never installs, `OwnedTimers` degrades to firing
298
+ * immediately rather than to firing never.
299
+ * · **The rows are lint-safe for callers.** Realm lint's
300
+ * `require-presentational-children` errors on any component or `<svg>`
301
+ * inside a `role='option'` — and because `{{yield}}` is invisible to it, an
302
+ * avatar in a caller's `<:item>` block would fail the CALLER's file with a
303
+ * position pointing at nothing. The row is split into an `aria-hidden` face
304
+ * (any markup) and a bare option overlay (the computed name), so the block
305
+ * is free.
306
+ * · **Empty is deliberate** and yields `<:empty>`, rather
307
+ * than an open popup containing nothing.
308
+ */
309
+ export class Autocomplete extends Component<AutocompleteSignature> {
310
+ private guid = guidFor(this);
311
+ private timers = new OwnedTimers();
312
+ private searchHandle: ReturnType<typeof setTimeout> | undefined;
313
+
314
+ @tracked private internalValue: string = this.args.defaultValue ?? '';
315
+ @tracked private internalOpen: boolean = this.args.defaultOpen ?? false;
316
+ @tracked private highlight = -1;
317
+ @tracked private source: HighlightSource = 'none';
318
+ @tracked private committed: string = this.args.defaultValue ?? '';
319
+ /** Bumped whenever a CONTROLLED caller declined a keystroke. See `valueAt`. */
320
+ @tracked private rejections = 0;
321
+
322
+ // ── identity ──────────────────────────────────────────────────────────
323
+ get inputId(): string {
324
+ return this.args.controlId ?? this.guid + '-ac';
325
+ }
326
+ get listId(): string {
327
+ return this.guid + '-list';
328
+ }
329
+ /** A wrapper that supplies `@controlId` owns the visible label, so this
330
+ * renders none. Two names on one field is a defect — and realm lint's
331
+ * `require-input-label` counts an `id` plus an `aria-label` as exactly
332
+ * that, so this branch is also the only shape that passes the gate. */
333
+ get ownsLabel(): boolean {
334
+ return this.args.controlId === undefined;
335
+ }
336
+ get fieldLabel(): string {
337
+ return this.args.label ?? 'Search';
338
+ }
339
+ get listLabel(): string {
340
+ return this.fieldLabel + ' suggestions';
341
+ }
342
+
343
+ // ── resolved state ────────────────────────────────────────────────────
344
+ get value(): string {
345
+ return valueAt(this.args.value ?? this.internalValue, this.rejections);
346
+ }
347
+ get items(): readonly AutocompleteItem[] {
348
+ return this.args.items ?? this.args.options ?? [];
349
+ }
350
+ get filterMode(): AutocompleteFilter {
351
+ return this.args.filter ?? 'contains';
352
+ }
353
+ get enterMode(): EnterMode {
354
+ return this.args.enterCommits ?? 'deliberate';
355
+ }
356
+ get inert(): boolean {
357
+ return firstDefined(this.args.disabled, this.args.isDisabled) ?? false;
358
+ }
359
+ get readonly(): boolean {
360
+ return (
361
+ firstDefined(
362
+ this.args.readonly,
363
+ this.args.isReadOnly,
364
+ this.args.readOnly,
365
+ ) ?? false
366
+ );
367
+ }
368
+ get invalid(): boolean {
369
+ return firstDefined(this.args.invalid, this.args.isInvalid) ?? false;
370
+ }
371
+ get required(): boolean {
372
+ return firstDefined(this.args.required, this.args.isRequired) ?? false;
373
+ }
374
+ get busy(): boolean {
375
+ return (
376
+ firstDefined(this.args.busy, this.args.loading, this.args.isPending) ??
377
+ false
378
+ );
379
+ }
380
+ get tone(): PretuiTone {
381
+ return resolveTone(this.args.tone, PRETUI_TONES, 'neutral');
382
+ }
383
+ get appearance(): PretuiAppearance {
384
+ return this.args.appearance ?? 'filled-outlined';
385
+ }
386
+ get size(): PretuiSize {
387
+ return resolveSize(this.args.size);
388
+ }
389
+ get minChars(): number {
390
+ let raw = this.args.minChars;
391
+ return raw !== undefined && raw > 0 ? raw : 0;
392
+ }
393
+ get maxVisible(): number {
394
+ let raw = this.args.maxVisible;
395
+ return raw !== undefined && raw > 0 ? raw : 8;
396
+ }
397
+ get emptyText(): string {
398
+ return this.args.emptyText ?? 'No matches';
399
+ }
400
+ // a disabled field shows no Clear, since Clear can't act on it
401
+ get clearable(): boolean {
402
+ return (
403
+ (this.args.clearable ?? false) && !this.inert && this.value.length > 0
404
+ );
405
+ }
406
+ // Disabled stays focusable (aria-disabled, not the native attribute), so
407
+ // readonly is what stops the browser editing the text.
408
+ get blocksTyping(): boolean {
409
+ return this.inert || this.readonly;
410
+ }
411
+ get clearLabel(): string {
412
+ return 'Clear ' + this.fieldLabel;
413
+ }
414
+
415
+ // ── rows ──────────────────────────────────────────────────────────────
416
+ get matches(): AutocompleteItem[] {
417
+ return filterItems(this.items, this.value, this.filterMode).slice(
418
+ 0,
419
+ this.maxVisible,
420
+ );
421
+ }
422
+ get rows(): AutocompleteRow[] {
423
+ let query = this.value;
424
+ return this.matches.map((item, index) => {
425
+ let label = item.label ?? item.value;
426
+ return {
427
+ id: this.guid + '-o' + String(index),
428
+ index,
429
+ value: item.value,
430
+ label,
431
+ meta: item.meta,
432
+ disabled: item.disabled === true,
433
+ active: index === this.highlight,
434
+ parts: matchSpan(label, query),
435
+ item,
436
+ };
437
+ });
438
+ }
439
+ private get disabledFlags(): boolean[] {
440
+ return this.rows.map((row) => row.disabled);
441
+ }
442
+ get hasRows(): boolean {
443
+ return this.rows.length > 0;
444
+ }
445
+ /** The layer is open when the caller says so (controlled) or when the
446
+ * component opened it AND the minimum-characters gate is satisfied. */
447
+ get popupOpen(): boolean {
448
+ if (this.inert || this.readonly) {
449
+ return false;
450
+ }
451
+ let wanted = this.args.open ?? this.internalOpen;
452
+ return wanted && this.value.length >= this.minChars;
453
+ }
454
+ get expandedAttr(): string {
455
+ return this.popupOpen ? 'true' : 'false';
456
+ }
457
+ get activeId(): string | undefined {
458
+ if (!this.popupOpen || this.highlight < 0) {
459
+ return undefined;
460
+ }
461
+ return this.rows[this.highlight]?.id;
462
+ }
463
+ /** APG asks a combobox to announce how many suggestions arrived. Computed
464
+ * rather than written into tracked state, so nothing here can backtrack. */
465
+ get suggestionStatus(): string {
466
+ if (!this.popupOpen) {
467
+ return '';
468
+ }
469
+ if (this.busy) {
470
+ return 'Loading suggestions';
471
+ }
472
+ let total = this.rows.length;
473
+ if (total === 0) {
474
+ return this.emptyText;
475
+ }
476
+ return String(total) + (total === 1 ? ' suggestion' : ' suggestions');
477
+ }
478
+ rowState = (row: AutocompleteRow) => ({
479
+ query: this.value,
480
+ active: row.active,
481
+ });
482
+
483
+ // ── writes ────────────────────────────────────────────────────────────
484
+ private writeValue(next: string) {
485
+ if (this.args.value === undefined) {
486
+ this.internalValue = next;
487
+ } else {
488
+ // Controlled: the caller decides. Dirty the value reference so the
489
+ // field is repainted with whatever the caller still holds — otherwise
490
+ // the DOM keeps the rejected keystroke and the contract is a lie.
491
+ this.rejections = this.rejections + 1;
492
+ }
493
+ emit([this.args.onChange, this.args.onValueChange], next);
494
+ }
495
+ private setOpen(next: boolean) {
496
+ // Compare against what was ASKED for, not against `popupOpen` — the
497
+ // minimum-characters gate can hold the layer shut while the component
498
+ // legitimately wants it open, and comparing to the visible state there
499
+ // would make every keystroke re-fire `@onOpenChange`.
500
+ if (next === (this.args.open ?? this.internalOpen)) {
501
+ return;
502
+ }
503
+ if (this.args.open === undefined) {
504
+ this.internalOpen = next;
505
+ }
506
+ if (!next) {
507
+ this.highlight = -1;
508
+ this.source = 'none';
509
+ }
510
+ this.args.onOpenChange?.(next);
511
+ }
512
+ private commit(next: string, item?: AutocompleteItem) {
513
+ this.committed = next;
514
+ if (next !== this.value) {
515
+ this.writeValue(next);
516
+ }
517
+ this.args.onCommit?.(next, item);
518
+ }
519
+ private focusField() {
520
+ document.getElementById(this.inputId)?.focus();
521
+ }
522
+ /** Debounce that terminates: the handle is cancelled and rescheduled from a
523
+ * user event, never from its own callback, so it can never re-arm and
524
+ * cannot strand `await settled()`. Same shape as `TypeaheadBuffer`. */
525
+ private scheduleSearch(query: string) {
526
+ let ask = this.args.onSearch;
527
+ if (!ask) {
528
+ return;
529
+ }
530
+ let seconds = this.args.debounce ?? 0;
531
+ let ms = Math.round(seconds * 1000);
532
+ this.timers.cancel(this.searchHandle);
533
+ this.searchHandle = undefined;
534
+ if (ms <= 0 || !this.timers.active) {
535
+ ask(query);
536
+ return;
537
+ }
538
+ this.searchHandle = this.timers.after(ms, () => {
539
+ this.searchHandle = undefined;
540
+ ask(query);
541
+ });
542
+ }
543
+
544
+ // ── handlers ──────────────────────────────────────────────────────────
545
+ handleInput = (event: Event) => {
546
+ if (this.inert || this.readonly) {
547
+ return;
548
+ }
549
+ let text = (event.target as HTMLInputElement).value;
550
+ this.writeValue(text);
551
+ this.highlight = this.args.autoHighlight ? 0 : -1;
552
+ this.source = this.args.autoHighlight ? 'auto' : 'none';
553
+ this.setOpen(true);
554
+ this.scheduleSearch(text);
555
+ };
556
+
557
+ handleFieldFocus = () => {
558
+ if (this.inert || this.readonly) {
559
+ return;
560
+ }
561
+ if ((this.args.openOnFocus ?? true) && this.items.length > 0) {
562
+ this.setOpen(true);
563
+ }
564
+ };
565
+
566
+ private move(step: number) {
567
+ if (!this.popupOpen) {
568
+ this.setOpen(true);
569
+ }
570
+ let next = nextEnabled(this.disabledFlags, this.highlight, step);
571
+ this.highlight = next;
572
+ this.source = next < 0 ? 'none' : 'user';
573
+ }
574
+
575
+ handleKeyDown = (event: Event) => {
576
+ let key = event as KeyboardEvent;
577
+ if (key.altKey || key.metaKey || key.ctrlKey) {
578
+ return;
579
+ }
580
+ // Home and End are NOT bound. In a field whose value is free text they
581
+ // belong to the caret; MUI reaches the same conclusion under freeSolo.
582
+ if (key.key === 'ArrowDown') {
583
+ event.preventDefault();
584
+ this.move(1);
585
+ return;
586
+ }
587
+ if (key.key === 'ArrowUp') {
588
+ event.preventDefault();
589
+ this.move(-1);
590
+ return;
591
+ }
592
+ if (key.key === 'Escape') {
593
+ if (this.popupOpen) {
594
+ event.preventDefault();
595
+ this.setOpen(false);
596
+ return;
597
+ }
598
+ if (this.value !== this.committed) {
599
+ event.preventDefault();
600
+ this.writeValue(this.committed);
601
+ }
602
+ return;
603
+ }
604
+ if (key.key === 'Enter') {
605
+ let target = commitTarget(this.enterMode, this.source);
606
+ if (target === 'highlight') {
607
+ let row = this.rows[this.highlight];
608
+ if (row && !row.disabled) {
609
+ event.preventDefault();
610
+ this.chooseRow(row);
611
+ }
612
+ return;
613
+ }
614
+ if (target === 'none') {
615
+ if (this.popupOpen) {
616
+ event.preventDefault();
617
+ }
618
+ return;
619
+ }
620
+ // Free text. The layer is consumed, but a closed layer must let Enter
621
+ // reach an enclosing form — swallowing it would break submit.
622
+ if (this.popupOpen) {
623
+ event.preventDefault();
624
+ this.setOpen(false);
625
+ }
626
+ this.commit(this.value);
627
+ }
628
+ };
629
+
630
+ /** One delegated listener rather than one per row, and it is the reason a
631
+ * pointer highlight is distinguishable from a keyboard one. */
632
+ handleHover = (event: Event) => {
633
+ let target = event.target as HTMLElement | null;
634
+ let row = target?.closest('[data-ac-index]') as HTMLElement | null;
635
+ if (!row) {
636
+ return;
637
+ }
638
+ let index = Number(row.dataset['acIndex']);
639
+ if (Number.isNaN(index) || index === this.highlight) {
640
+ return;
641
+ }
642
+ if (this.rows[index]?.disabled) {
643
+ return;
644
+ }
645
+ this.highlight = index;
646
+ this.source = 'pointer';
647
+ };
648
+
649
+ /**
650
+ * Keeps focus in the field while a suggestion is being clicked.
651
+ *
652
+ * A pointer press on a non-focusable element blurs the input, the blur
653
+ * closes the layer, the layer leaves the DOM, and the click that was about
654
+ * to land has no target — the classic combobox race. Every kit solves it by
655
+ * cancelling the default focus move on the press, and this does the same.
656
+ *
657
+ * It is bound through the kit's `listen` modifier rather than `{{on}}` on
658
+ * purpose: `{{on 'mousedown'}}` is rejected by realm lint's
659
+ * `no-pointer-down-event-binding`, whose premise is that an ACTION must not
660
+ * fire on the down edge. No action fires here — the action is on `click`,
661
+ * where it belongs — and the only thing the handler does is decline to move
662
+ * focus. Removing this line does not make the rule's concern go away; it
663
+ * makes the component unusable with a mouse.
664
+ */
665
+ handlePress = (event: Event) => {
666
+ let target = event.target as HTMLElement | null;
667
+ if (target?.closest('[data-ac-popup]')) {
668
+ event.preventDefault();
669
+ }
670
+ };
671
+
672
+ handleFocusOut = (event: Event) => {
673
+ let leaving = event as FocusEvent;
674
+ let root = leaving.currentTarget as HTMLElement | null;
675
+ let next = leaving.relatedTarget as Node | null;
676
+ if (root && next && root.contains(next)) {
677
+ return;
678
+ }
679
+ this.setOpen(false);
680
+ // Blur COMMITS. A typed word abandoned by a Tab or a click elsewhere is
681
+ // still what the reader meant; MUI throws it away under clearOnBlur.
682
+ if (this.value !== this.committed) {
683
+ this.commit(this.value);
684
+ }
685
+ };
686
+
687
+ chooseRow = (row: AutocompleteRow) => {
688
+ if (this.inert || this.readonly || row.disabled) {
689
+ return;
690
+ }
691
+ this.setOpen(false);
692
+ this.commit(row.value, row.item);
693
+ this.focusField();
694
+ };
695
+
696
+ clear = () => {
697
+ if (this.inert || this.readonly) {
698
+ return;
699
+ }
700
+ this.setOpen(false);
701
+ this.commit('');
702
+ this.focusField();
703
+ };
704
+
705
+ <template>
706
+ <div
707
+ class='pretui-ac'
708
+ data-tone={{this.tone}}
709
+ data-appearance={{this.appearance}}
710
+ data-size={{this.size}}
711
+ data-open={{if this.popupOpen 'true' 'false'}}
712
+ data-busy={{if this.busy 'true'}}
713
+ data-invalid={{if this.invalid 'true'}}
714
+ data-disabled={{if this.inert 'true'}}
715
+ {{ownsTimers this.timers}}
716
+ {{listen 'focusout' this.handleFocusOut}}
717
+ {{listen 'mouseover' this.handleHover}}
718
+ {{listen 'mousedown' this.handlePress}}
719
+ data-test-pretui-autocomplete
720
+ ...attributes
721
+ >
722
+ {{#if this.ownsLabel}}
723
+ <label for={{this.inputId}}><VisuallyHidden
724
+ >{{this.fieldLabel}}</VisuallyHidden></label>
725
+ {{/if}}
726
+
727
+ <div class='pretui-ac-field'>
728
+ <input
729
+ type='text'
730
+ class='pretui-ac-input'
731
+ id={{this.inputId}}
732
+ role='combobox'
733
+ autocomplete='off'
734
+ aria-autocomplete='list'
735
+ aria-expanded={{this.expandedAttr}}
736
+ aria-controls={{this.listId}}
737
+ aria-activedescendant={{this.activeId}}
738
+ aria-describedby={{@describedBy}}
739
+ aria-invalid={{if this.invalid 'true'}}
740
+ aria-required={{if this.required 'true'}}
741
+ aria-disabled={{if this.inert 'true'}}
742
+ aria-busy={{if this.busy 'true'}}
743
+ placeholder={{@placeholder}}
744
+ readonly={{this.blocksTyping}}
745
+ value={{this.value}}
746
+ {{on 'input' this.handleInput}}
747
+ {{on 'focus' this.handleFieldFocus}}
748
+ {{on 'keydown' this.handleKeyDown}}
749
+ data-test-pretui-autocomplete-input
750
+ />
751
+ {{#if this.busy}}
752
+ <span class='pretui-ac-spin' aria-hidden='true'></span>
753
+ {{else if this.clearable}}
754
+ <Button
755
+ class='pretui-ac-clear'
756
+ @tone='neutral'
757
+ @appearance='plain'
758
+ @size='xs'
759
+ aria-label={{this.clearLabel}}
760
+ {{on 'click' this.clear}}
761
+ data-test-pretui-autocomplete-clear
762
+ ><XIcon width='12' height='12' aria-hidden='true' /></Button>
763
+ {{/if}}
764
+ </div>
765
+
766
+ {{#if this.popupOpen}}
767
+ <ul
768
+ class='pretui-ac-list'
769
+ id={{this.listId}}
770
+ role='listbox'
771
+ aria-label={{this.listLabel}}
772
+ data-ac-popup='true'
773
+ data-test-pretui-autocomplete-list
774
+ >
775
+ {{#if this.hasRows}}
776
+ {{#each this.rows key='id' as |row|}}
777
+ <li
778
+ class='pretui-ac-row'
779
+ role='presentation'
780
+ data-ac-index={{row.index}}
781
+ data-active={{if row.active 'true'}}
782
+ >
783
+ {{!-- the face carries the chrome and is invisible to AT, so a
784
+ caller may yield ANY markup into it without tripping
785
+ require-presentational-children in their own file --}}
786
+ <span
787
+ class='pretui-ac-face'
788
+ aria-hidden='true'
789
+ data-test-pretui-autocomplete-face
790
+ >
791
+ {{#if (has-block 'item')}}
792
+ {{yield row.item (this.rowState row) to='item'}}
793
+ {{else}}
794
+ <span
795
+ class='pretui-ac-label'
796
+ >{{row.parts.before}}<span
797
+ class='pretui-ac-hit'
798
+ >{{row.parts.hit}}</span>{{row.parts.after}}</span>
799
+ {{#if row.meta}}
800
+ <span class='pretui-ac-meta'>{{row.meta}}</span>
801
+ {{/if}}
802
+ {{/if}}
803
+ </span>
804
+ <span
805
+ class='pretui-ac-option'
806
+ role='option'
807
+ id={{row.id}}
808
+ aria-label={{row.label}}
809
+ aria-selected={{if row.active 'true' 'false'}}
810
+ aria-disabled={{if row.disabled 'true'}}
811
+ {{on 'click' (fn this.chooseRow row)}}
812
+ data-test-pretui-autocomplete-option={{row.value}}
813
+ ></span>
814
+ </li>
815
+ {{/each}}
816
+ {{else}}
817
+ <li class='pretui-ac-none' role='presentation'>
818
+ {{#if (has-block 'empty')}}
819
+ {{yield to='empty'}}
820
+ {{else}}
821
+ <span class='pretui-ac-none-glyph' aria-hidden='true'></span>
822
+ <span class='pretui-ac-none-text'>{{this.emptyText}}</span>
823
+ <span class='pretui-ac-none-hint'>Press Enter to keep what you
824
+ typed.</span>
825
+ {{/if}}
826
+ </li>
827
+ {{/if}}
828
+ </ul>
829
+ {{/if}}
830
+
831
+ <VisuallyHidden
832
+ role='status'
833
+ data-test-pretui-autocomplete-status
834
+ >{{this.suggestionStatus}}</VisuallyHidden>
835
+ </div>
836
+ <style scoped>
837
+ @layer PretComponent {
838
+ .pretui-ac {
839
+ position: relative;
840
+ display: block;
841
+ min-width: 0;
842
+ font-size: var(--pretui-size-m, var(--boxel-font-size-xs));
843
+ letter-spacing: var(--boxel-lsp-xs);
844
+ }
845
+ /* the ladder has no step under 11px, so xs and s share it */
846
+ .pretui-ac[data-size='xs'] {
847
+ font-size: var(--pretui-size-xs, var(--boxel-font-size-2xs));
848
+ }
849
+ .pretui-ac[data-size='s'] {
850
+ font-size: var(--pretui-size-s, var(--boxel-font-size-2xs));
851
+ }
852
+ .pretui-ac[data-size='l'] {
853
+ font-size: var(--pretui-size-l, var(--boxel-font-size-sm));
854
+ }
855
+ .pretui-ac[data-size='xl'] {
856
+ font-size: var(--pretui-size-xl, var(--boxel-font-size));
857
+ }
858
+ /* tone sets custom properties only: the fill hue for tints, its -ink
859
+ for text and lines, and the default field's edge (--input when
860
+ neutral, the -ink otherwise, so a tone shows in both schemes) */
861
+ .pretui-ac {
862
+ --pretui-ac-edge: var(--pretui-tone-ink);
863
+ }
864
+ .pretui-ac[data-tone='neutral'] {
865
+ --pretui-tone: var(--foreground);
866
+ --pretui-tone-ink: var(--foreground);
867
+ --pretui-ac-edge: var(--input);
868
+ }
869
+ .pretui-ac[data-tone='primary'] {
870
+ --pretui-tone: var(--primary);
871
+ --pretui-tone-ink: var(--primary-ink);
872
+ }
873
+ .pretui-ac[data-tone='info'] {
874
+ --pretui-tone: var(--info);
875
+ --pretui-tone-ink: var(--info-ink);
876
+ }
877
+ .pretui-ac[data-tone='success'] {
878
+ --pretui-tone: var(--success);
879
+ --pretui-tone-ink: var(--success-ink);
880
+ }
881
+ .pretui-ac[data-tone='warning'] {
882
+ --pretui-tone: var(--warning);
883
+ --pretui-tone-ink: var(--warning-ink);
884
+ }
885
+ .pretui-ac[data-tone='danger'] {
886
+ --pretui-tone: var(--destructive);
887
+ --pretui-tone-ink: var(--destructive-ink);
888
+ }
889
+ .pretui-ac[data-tone='attention'] {
890
+ --pretui-tone: var(--attention);
891
+ --pretui-tone-ink: var(--attention-ink);
892
+ }
893
+ /* the edge is one variable: appearances and states set it, and only
894
+ this rule draws it, so no selector has to outrank another */
895
+ .pretui-ac-field {
896
+ position: relative;
897
+ display: flex;
898
+ align-items: center;
899
+ gap: 0.3em;
900
+ min-width: 0;
901
+ /* other sizes keep size m's height-to-text ratio */
902
+ min-height: var(--pretui-ac-h, calc(7em / 3));
903
+ padding-inline: 0.5em;
904
+ border-radius: calc(var(--radius) - 2px);
905
+ box-shadow: 0 0 0 1px var(--pretui-ac-edge);
906
+ }
907
+ /* Select's trigger height and inset, whatever --pretui-size-m is */
908
+ .pretui-ac[data-size='m'] .pretui-ac-field {
909
+ min-height: var(--pretui-ac-h, var(--boxel-form-control-height-sm));
910
+ padding-inline: 0.625rem;
911
+ }
912
+ /* edges are drawn in the tone's -ink: the fill hue misses the 3:1 a
913
+ field boundary needs */
914
+ .pretui-ac[data-appearance='outlined'],
915
+ .pretui-ac[data-appearance='accent'] {
916
+ --pretui-ac-edge: var(--pretui-tone-ink);
917
+ }
918
+ .pretui-ac[data-appearance='filled'],
919
+ .pretui-ac[data-appearance='plain'] {
920
+ --pretui-ac-edge: transparent;
921
+ }
922
+ .pretui-ac[data-appearance='filled-outlined'] .pretui-ac-field {
923
+ background-color: color-mix(
924
+ in oklch,
925
+ var(--pretui-tone) 6%,
926
+ var(--field)
927
+ );
928
+ color: var(--foreground);
929
+ }
930
+ /* the default neutral field is the plain --field face, as on Input
931
+ and Select */
932
+ .pretui-ac[data-tone='neutral'][data-appearance='filled-outlined']
933
+ .pretui-ac-field {
934
+ background-color: var(--field);
935
+ }
936
+ .pretui-ac[data-appearance='outlined'] .pretui-ac-field {
937
+ background-color: var(--card);
938
+ color: var(--card-foreground);
939
+ }
940
+ .pretui-ac[data-appearance='filled'] .pretui-ac-field {
941
+ background-color: color-mix(
942
+ in oklch,
943
+ var(--pretui-tone) 15%,
944
+ var(--card)
945
+ );
946
+ color: var(--card-foreground);
947
+ }
948
+ .pretui-ac[data-appearance='plain'] .pretui-ac-field {
949
+ background-color: transparent;
950
+ }
951
+ .pretui-ac[data-appearance='accent'] .pretui-ac-field {
952
+ background-color: var(--field);
953
+ color: var(--foreground);
954
+ }
955
+ /* hover strengthens a neutral field's gray edge; a toned or inked
956
+ edge is already strong. Pointer-only, so the edge doesn't stick
957
+ after a tap. */
958
+ @media (hover: hover) {
959
+ .pretui-ac[data-tone='neutral']:not([data-appearance='outlined'], [data-appearance='accent'], [data-invalid='true'])
960
+ .pretui-ac-field:hover {
961
+ /* Select's hover edge: toward --foreground, in both schemes */
962
+ --pretui-ac-edge: color-mix(in oklch, var(--foreground) 30%, var(--input));
963
+ }
964
+ }
965
+ .pretui-ac[data-invalid='true'] .pretui-ac-field {
966
+ --pretui-ac-edge: var(--destructive-ink);
967
+ }
968
+ /* focus draws the box-shadow itself, so it wins over hover and the
969
+ invalid edge: a reader must always see where they are */
970
+ .pretui-ac-field:focus-within {
971
+ /* forced-colors paints no box-shadow, so a transparent outline
972
+ keeps a focus indicator there */
973
+ outline: 1.5px solid transparent;
974
+ outline-offset: 1px;
975
+ box-shadow: 0 0 0 1.5px var(--ring);
976
+ }
977
+ .pretui-ac[data-disabled='true'] {
978
+ opacity: 0.45;
979
+ }
980
+ .pretui-ac-input {
981
+ flex: 1 1 auto;
982
+ min-width: 0;
983
+ /* fills the field's height, so a larger touch-screen font never
984
+ makes the field taller */
985
+ align-self: stretch;
986
+ border: 0;
987
+ background-color: transparent;
988
+ color: inherit;
989
+ font-family: inherit;
990
+ font-size: inherit;
991
+ font-weight: inherit;
992
+ outline: none;
993
+ }
994
+ .pretui-ac-input::placeholder {
995
+ color: var(--muted-foreground);
996
+ }
997
+ /* a square 1.5rem target: Button's xs height, with no inline padding */
998
+ .pretui-ac-clear {
999
+ --pretui-button-px: 0;
1000
+ --pretui-button-min-w: 1.5rem;
1001
+
1002
+ flex: none;
1003
+ }
1004
+ @keyframes pretui-ac-spin {
1005
+ to {
1006
+ transform: rotate(360deg);
1007
+ }
1008
+ }
1009
+ .pretui-ac-spin {
1010
+ flex: none;
1011
+ width: 1.04em;
1012
+ height: 1.04em;
1013
+ border-radius: 50%;
1014
+ border: 1.5px solid color-mix(in oklch, currentColor 25%, transparent);
1015
+ border-top-color: var(--pretui-tone-ink);
1016
+ animation: pretui-ac-spin 0.7s linear infinite;
1017
+ }
1018
+ /* The layer renders IN PLACE: a portaled surface cannot
1019
+ inherit the theme's tokens, which is the whole theming contract. */
1020
+ .pretui-ac-list {
1021
+ position: absolute;
1022
+ z-index: var(--pretui-z-dropdown, 60);
1023
+ inset-inline: 0;
1024
+ inset-block-start: calc(100% + var(--boxel-sp-4xs));
1025
+ margin: 0;
1026
+ padding: 0.25em;
1027
+ max-height: 16em;
1028
+ overflow-y: auto;
1029
+ list-style: none;
1030
+ border-radius: calc(var(--radius) - 2px);
1031
+ background-color: var(--popover);
1032
+ color: var(--popover-foreground);
1033
+ box-shadow:
1034
+ 0 0 0 1px var(--border),
1035
+ var(--shadow-md);
1036
+ animation: pretui-ac-drop var(--pretui-dur-snap, 180ms)
1037
+ var(--pretui-ease-snap, ease) both;
1038
+ }
1039
+ @keyframes pretui-ac-drop {
1040
+ from {
1041
+ opacity: 0;
1042
+ transform: translateY(-0.1875rem);
1043
+ }
1044
+ }
1045
+ .pretui-ac-row {
1046
+ position: relative;
1047
+ display: flex;
1048
+ align-items: baseline;
1049
+ gap: 0.5em;
1050
+ min-width: 0;
1051
+ padding: 0.34em 0.5em;
1052
+ border-radius: var(--boxel-border-radius-sm);
1053
+ cursor: pointer;
1054
+ }
1055
+ .pretui-ac-row[data-active='true'] {
1056
+ background-color: var(--hover);
1057
+ }
1058
+ .pretui-ac-face {
1059
+ position: relative;
1060
+ z-index: 1;
1061
+ display: flex;
1062
+ align-items: baseline;
1063
+ gap: 0.5em;
1064
+ min-width: 0;
1065
+ flex: 1 1 auto;
1066
+ pointer-events: none;
1067
+ }
1068
+ .pretui-ac-option {
1069
+ position: absolute;
1070
+ z-index: 0;
1071
+ inset: 0;
1072
+ display: block;
1073
+ }
1074
+ .pretui-ac-option[aria-disabled='true'] {
1075
+ cursor: default;
1076
+ }
1077
+ .pretui-ac-row:has(.pretui-ac-option[aria-disabled='true']) {
1078
+ opacity: 0.45;
1079
+ cursor: default;
1080
+ }
1081
+ /* the truncation triple, never min-width alone */
1082
+ .pretui-ac-label {
1083
+ flex: 1 1 auto;
1084
+ min-width: 0;
1085
+ overflow: hidden;
1086
+ text-overflow: ellipsis;
1087
+ white-space: nowrap;
1088
+ }
1089
+ .pretui-ac-hit {
1090
+ font-weight: 600;
1091
+ /* the tone's -ink: the fill hue misses 4.5:1 as text */
1092
+ color: var(--pretui-tone-ink);
1093
+ }
1094
+ .pretui-ac-meta {
1095
+ flex: none;
1096
+ font-size: var(--boxel-font-size-2xs);
1097
+ font-variant-numeric: tabular-nums;
1098
+ color: var(--muted-foreground);
1099
+ }
1100
+ /* A deliberate empty state: a mark, the reason, and the
1101
+ next action — never a bare "no results". */
1102
+ .pretui-ac-none {
1103
+ display: grid;
1104
+ justify-items: center;
1105
+ gap: 0.2em;
1106
+ padding: 0.9em 0.6em;
1107
+ text-align: center;
1108
+ }
1109
+ .pretui-ac-none-glyph {
1110
+ width: 1.5em;
1111
+ height: 1.5em;
1112
+ border-radius: 50%;
1113
+ box-shadow: inset 0 0 0 1.5px var(--border);
1114
+ }
1115
+ .pretui-ac-none-text {
1116
+ font-weight: 500;
1117
+ }
1118
+ .pretui-ac-none-hint {
1119
+ font-size: var(--boxel-font-size-2xs);
1120
+ color: var(--muted-foreground);
1121
+ }
1122
+ @media (pointer: coarse) {
1123
+ /* iOS zooms into inputs under 16px on focus; the suggestions
1124
+ follow the input, as Select's options follow its trigger.
1125
+ Input's line-height keeps the rows as tall as Select's options. */
1126
+ .pretui-ac-input,
1127
+ .pretui-ac-row {
1128
+ font-size: var(--boxel-form-control-touch-font-size);
1129
+ line-height: var(--boxel-form-control-line-height-sm);
1130
+ }
1131
+ .pretui-ac-row {
1132
+ padding-block: 0.6em;
1133
+ }
1134
+ }
1135
+ @media (prefers-reduced-motion: reduce) {
1136
+ .pretui-ac-list {
1137
+ animation: none;
1138
+ }
1139
+ .pretui-ac-spin {
1140
+ animation: none;
1141
+ transform: rotate(135deg);
1142
+ }
1143
+ }
1144
+ }
1145
+ </style>
1146
+ </template>
1147
+ }
1148
+
1149
+ // Free-string chips with suggestions: compose Autocomplete over TagsInput
1150
+ // (tags-input.gts), which maps the Mantine/Ant/Chakra tag-field arguments.