@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,1336 @@
1
+ // Pretui — the Component card: one card per catalog entry, each rendering
2
+ // its ember-freestyle usage page (ported machinery in freestyle.gts — the
3
+ // verbatim-reuse directive) inside Boxel. It extends the base Spec card, so
4
+ // every instance is findable by Spec type queries and carries a `ref` to the
5
+ // module that exports the component. Instances live in whichever realm
6
+ // catalogs the kit and adopt from this module. The isolated view loads the
7
+ // component's usage page when it renders (demo-locations.ts says where it
8
+ // lives). Components without a page fall back to an EmptyState; host-retained
9
+ // entries state the goal-2 split.
10
+ import {
11
+ Component,
12
+ contains,
13
+ containsMany,
14
+ field,
15
+ linksTo,
16
+ } from '@cardstack/base/card-api';
17
+ import { Spec } from '@cardstack/base/spec';
18
+ import { MarkdownDef } from '@cardstack/base/markdown-file-def';
19
+ import { MarkdownPreview } from '@cardstack/base/file-formats/index';
20
+ import StringField from '@cardstack/base/string';
21
+ import enumField from '@cardstack/base/enum';
22
+ import BooleanField from '@cardstack/base/boolean';
23
+ import NumberField from '@cardstack/base/number';
24
+ import GlimmerComponent from '@glimmer/component';
25
+ import { guidFor } from '@ember/object/internals';
26
+ import { tracked } from '@glimmer/tracking';
27
+ import { on } from '@ember/modifier';
28
+ import { modifier } from 'ember-modifier';
29
+ import { fn } from '@ember/helper';
30
+ import { not } from '@cardstack/boxel-ui/helpers';
31
+ import StarIcon from '@cardstack/boxel-icons/star';
32
+ import { ThemeFrame } from './components/theme-frame';
33
+ import { EmptyState } from './components/empty-state';
34
+ import { LoadingState } from './components/loading-state';
35
+ import { StatusChip } from './components/status-chip';
36
+ import { Chip } from './components/chip';
37
+ import { Token } from './components/token';
38
+ import { Button } from './components/button';
39
+ import { Switch } from './components/switch';
40
+ import { Tooltip } from './components/tooltip';
41
+ import { VisuallyHidden } from './components/visually-hidden';
42
+ import { StepList } from './components/step-list';
43
+ import type { StepItem, StepState } from './components/step-list';
44
+ import { demoModuleFor, loadDemo, loadExamples } from './demo-locations';
45
+ import type { DemoSubject } from './demo-locations';
46
+ import { iconFor } from './icon-registry';
47
+ import { ExampleGallery } from './example-gallery';
48
+ import type { ExampleSpec } from './examples-kit';
49
+
50
+ // A stored enum value as shown, from its option label; '—' when unset.
51
+ function optionLabel(
52
+ options: { value: string; label: string }[],
53
+ value: string | undefined,
54
+ ): string {
55
+ if (!value) return '—';
56
+ return options.find((option) => option.value === value)?.label ?? value;
57
+ }
58
+
59
+ // The status chip's label: the adoption status, or the implementation status
60
+ // for a component nobody has adopted yet; undefined hides the chip.
61
+ function statusLabel(
62
+ adoptionStatus: string | undefined,
63
+ implementationStatus: string | undefined,
64
+ ): string | undefined {
65
+ if (adoptionStatus) return optionLabel(ADOPTION_OPTIONS, adoptionStatus);
66
+ if (implementationStatus) {
67
+ return optionLabel(IMPLEMENTATION_OPTIONS, implementationStatus);
68
+ }
69
+ return undefined;
70
+ }
71
+
72
+ function isInUse(status: string | undefined): boolean {
73
+ return status === 'in-use';
74
+ }
75
+
76
+ // An in-use component's status chip takes the success tone and a deprecated
77
+ // one the danger tone (warning is the Featured star's); every other status
78
+ // keeps StatusChip's muted pill with its name-derived dot.
79
+ function adoptionTone(
80
+ status: string | undefined,
81
+ ): 'success' | 'danger' | undefined {
82
+ if (isInUse(status)) return 'success';
83
+ return status === 'deprecated' ? 'danger' : undefined;
84
+ }
85
+
86
+ // The kit release the "New" chip marks: a component introduced in it is new.
87
+ // Bump this with each release so the chip clears itself.
88
+ export const CURRENT_RELEASE = '0.4.0';
89
+ function isNewIn(introducedVersion: string | undefined): boolean {
90
+ return introducedVersion === CURRENT_RELEASE;
91
+ }
92
+
93
+ // A component name split at its camel-case humps ("ApprovalFooter" →
94
+ // "Approval", "Footer"), so a narrow title breaks between words.
95
+ const NAME_HUMP_RE = new RegExp('(?<=[a-z0-9])(?=[A-Z])');
96
+ function nameParts(name: string): string[] {
97
+ return name.split(NAME_HUMP_RE);
98
+ }
99
+
100
+ // The write-up shows its first lines under a fade, with a centered toggle
101
+ // over the fade; opening it grows the region to the content's height. Its own
102
+ // component because reactive state can't live in a format-class expression
103
+ // (`static isolated = class …`).
104
+ interface WriteupFoldSignature {
105
+ Args: { writeup: MarkdownDef };
106
+ Element: HTMLDivElement;
107
+ }
108
+
109
+ class WriteupFold extends GlimmerComponent<WriteupFoldSignature> {
110
+ @tracked open = false;
111
+ @tracked overflows = false;
112
+ regionId = `${guidFor(this)}-writeup`;
113
+ toggle = () => (this.open = !this.open);
114
+ get showToggle(): boolean {
115
+ return this.open || this.overflows;
116
+ }
117
+ // The toggle and its fade only matter when the closed region clips the
118
+ // prose; measured while closed, so opening keeps "Show less".
119
+ measureOverflow = modifier((region: HTMLElement) => {
120
+ let prose = region.firstElementChild;
121
+ let check = () => {
122
+ if (!this.open && prose) {
123
+ this.overflows = prose.scrollHeight > region.clientHeight;
124
+ }
125
+ };
126
+ let observer = new ResizeObserver(check);
127
+ observer.observe(region);
128
+ if (prose) observer.observe(prose);
129
+ return () => observer.disconnect();
130
+ });
131
+
132
+ <template>
133
+ <div class='wb-fold' data-open={{if this.open 'true'}} ...attributes>
134
+ {{! the write-up's prose only — the panel owns the padding, so the
135
+ file's own embedded chrome and surface stay out }}
136
+ <div id={{this.regionId}} class='wb-fold-region' {{this.measureOverflow}}>
137
+ <div class='wb-fold-prose'>
138
+ <MarkdownPreview
139
+ @model={{@writeup}}
140
+ @format='isolated'
141
+ @displayContainer={{false}}
142
+ />
143
+ </div>
144
+ </div>
145
+ {{#if this.showToggle}}
146
+ <div class='wb-fold-more'>
147
+ <Button
148
+ @tone='neutral'
149
+ @appearance='outlined'
150
+ @size='xs'
151
+ aria-expanded={{if this.open 'true' 'false'}}
152
+ aria-controls={{this.regionId}}
153
+ {{on 'click' this.toggle}}
154
+ data-test-pretui-writeup-toggle
155
+ >{{if this.open 'Show less' 'Show more'}}</Button>
156
+ </div>
157
+ {{/if}}
158
+ </div>
159
+ <style scoped>
160
+ /* closed, the preview fills whatever height the fold is given, never
161
+ less than --_wb-fold-preview-h; open, it grows to the content */
162
+ .wb-fold {
163
+ --_wb-fold-preview-h: 14rem;
164
+ --_wb-fold-fade-h: 2rem;
165
+
166
+ position: relative;
167
+ display: flex;
168
+ flex-direction: column;
169
+ }
170
+ .wb-fold-region {
171
+ flex: 1 1 0;
172
+ min-block-size: var(--_wb-fold-preview-h);
173
+ overflow: hidden;
174
+ /* the open state changes the flex basis and grow, not height, so those
175
+ are what animate; interpolate-size lets the basis reach auto */
176
+ interpolate-size: allow-keywords;
177
+ transition:
178
+ flex-basis 250ms ease,
179
+ flex-grow 250ms ease;
180
+ }
181
+ .wb-fold[data-open='true'] .wb-fold-region {
182
+ flex: 0 0 auto;
183
+ }
184
+ /* mono reads larger than sans at the same size; a step down in em
185
+ matches the prose around it optically */
186
+ .wb-fold-prose {
187
+ --markdown-code-font-size: 0.875em;
188
+ --markdown-pre-font-size: 0.875em;
189
+ --markdown-pre-border-radius: var(--boxel-border-radius-sm);
190
+
191
+ padding: var(--boxel-sp-sm);
192
+ }
193
+ /* highlighted code joins its words with non-breaking spaces, so a long
194
+ line can't wrap; it scrolls inside its block instead of being
195
+ clipped by the fold */
196
+ .wb-fold-prose :deep(pre) {
197
+ overflow-x: auto;
198
+ }
199
+ /* closed, the toggle sits over a fade into the panel's surface; open,
200
+ it follows the content */
201
+ .wb-fold-more {
202
+ display: flex;
203
+ justify-content: center;
204
+ position: absolute;
205
+ inset-inline: 0;
206
+ inset-block-end: 0;
207
+ padding: var(--_wb-fold-fade-h) var(--boxel-sp-sm) var(--boxel-sp-xs);
208
+ background-image: linear-gradient(transparent, var(--card) 70%);
209
+ }
210
+ .wb-fold[data-open='true'] .wb-fold-more {
211
+ position: static;
212
+ padding-block-start: 0;
213
+ background-image: none;
214
+ }
215
+ @media (prefers-reduced-motion: reduce) {
216
+ .wb-fold-region {
217
+ transition: none;
218
+ }
219
+ }
220
+ </style>
221
+ </template>
222
+ }
223
+
224
+ // ── Usage pages, loaded when a Spec renders ──────────────────────────────
225
+
226
+ class Loaded<T> {
227
+ @tracked state: 'loading' | 'loaded' | 'missing' = 'loading';
228
+ @tracked value: T | undefined;
229
+
230
+ constructor(load: Promise<T | undefined>) {
231
+ load.then(
232
+ (value) => {
233
+ this.value = value;
234
+ this.state = value ? 'loaded' : 'missing';
235
+ },
236
+ () => {
237
+ this.state = 'missing';
238
+ },
239
+ );
240
+ }
241
+ }
242
+
243
+ const demoLoads = new Map<string, Loaded<unknown>>();
244
+ const exampleLoads = new Map<string, Loaded<ExampleSpec[]>>();
245
+
246
+ function demoLoadFor(subject: DemoSubject): Loaded<unknown> | undefined {
247
+ let path = demoModuleFor(subject);
248
+ if (!path) {
249
+ return undefined;
250
+ }
251
+ let key = `${path}#${subject.name}`;
252
+ let load = demoLoads.get(key);
253
+ if (!load) {
254
+ load = new Loaded(loadDemo(subject));
255
+ demoLoads.set(key, load);
256
+ }
257
+ return load;
258
+ }
259
+
260
+ function examplesLoadFor(name: string): Loaded<ExampleSpec[]> {
261
+ let load = exampleLoads.get(name);
262
+ if (!load) {
263
+ load = new Loaded(loadExamples(name));
264
+ exampleLoads.set(name, load);
265
+ }
266
+ return load;
267
+ }
268
+
269
+ // ── The card ─────────────────────────────────────────────────────────────
270
+
271
+ // Closed vocabularies for the Spec's classification fields: the edit form
272
+ // offers these as dropdowns. Each list covers every value the catalog's
273
+ // Specs store, so existing instances read unchanged, plus the taxonomy's
274
+ // values (host, planned, designed, deprecated; docs/catalog-taxonomy.md).
275
+ const CATEGORY_OPTIONS = [
276
+ 'Actions',
277
+ 'Agentic',
278
+ 'Authoring Tools',
279
+ 'Containers',
280
+ 'Data Display',
281
+ 'Feedback',
282
+ 'Forms',
283
+ 'Foundations',
284
+ 'Inputs',
285
+ 'Layout',
286
+ 'Media',
287
+ 'Motion & Effects',
288
+ 'Navigation',
289
+ 'Overlays',
290
+ ].map((value) => ({ value, label: value }));
291
+ const TIER_OPTIONS = [
292
+ 'Primitive',
293
+ 'Element',
294
+ 'Compound',
295
+ 'Block',
296
+ 'Surface',
297
+ 'Runtime',
298
+ ].map((value) => ({ value, label: value }));
299
+ const OWNERSHIP_OPTIONS = [
300
+ { value: 'pretui', label: 'Pret UI' },
301
+ { value: 'boxel-ui', label: 'boxel-ui' },
302
+ { value: 'host', label: 'Host' },
303
+ ];
304
+ const IMPLEMENTATION_OPTIONS = [
305
+ { value: 'planned', label: 'Planned' },
306
+ { value: 'designed', label: 'Designed' },
307
+ { value: 'implemented', label: 'Implemented' },
308
+ ];
309
+ const ADOPTION_OPTIONS = [
310
+ { value: 'in-use', label: 'In use' },
311
+ { value: 'demo-ready', label: 'Demo ready' },
312
+ { value: 'experimental', label: 'Experimental' },
313
+ { value: 'deprecated', label: 'Deprecated' },
314
+ ];
315
+ const SOURCE_OPTIONS = [
316
+ { value: 'design-v1', label: 'design-v1' },
317
+ { value: 'react-ecosystem', label: 'React ecosystem' },
318
+ { value: 'boxel-ui', label: 'boxel-ui' },
319
+ { value: 'ember-freestyle', label: 'ember-freestyle' },
320
+ { value: 'webawesome', label: 'Web Awesome' },
321
+ { value: 'pretui', label: 'Pret UI' },
322
+ ];
323
+ const DEMAND_OPTIONS = [1, 2, 3, 4, 5].map((value) => ({
324
+ value,
325
+ label: String(value),
326
+ }));
327
+
328
+ export class PretUISpec extends Spec {
329
+ static displayName = 'Pret UI Spec';
330
+ static prefersWideFormat = true;
331
+
332
+ @field componentName = contains(StringField);
333
+ // boxel-ui icon export name ('@cardstack/boxel-ui/icons'), resolved at
334
+ // render time via icon-registry.gts — data, never a static icon
335
+ @field icon = contains(StringField);
336
+ // ── taxonomy axes (docs/catalog-taxonomy.md) ──
337
+ // category = the primary user-facing home; tier = compositional
338
+ // complexity; tags = cross-cutting capabilities. Independent axes — never
339
+ // infer one from another.
340
+ @field category = contains(
341
+ enumField(StringField, { options: CATEGORY_OPTIONS }),
342
+ );
343
+ @field tier = contains(enumField(StringField, { options: TIER_OPTIONS }));
344
+ @field tags = containsMany(StringField);
345
+ @field ownership = contains(
346
+ enumField(StringField, { options: OWNERSHIP_OPTIONS }),
347
+ );
348
+ @field implementationStatus = contains(
349
+ enumField(StringField, { options: IMPLEMENTATION_OPTIONS }),
350
+ );
351
+ @field adoptionStatus = contains(
352
+ enumField(StringField, { options: ADOPTION_OPTIONS }),
353
+ );
354
+ @field introducedVersion = contains(StringField);
355
+ // ── provenance ──
356
+ @field source = contains(enumField(StringField, { options: SOURCE_OPTIONS }));
357
+ @field lineage = contains(StringField);
358
+ @field version = contains(StringField);
359
+ @field brief = contains(StringField);
360
+ // prose citation ('shadcn Button · wa-button'), not Spec's `ref` CodeRef
361
+ @field refs = contains(StringField);
362
+ @field buildsOn = contains(StringField);
363
+ /** a hand-picked flagship of the kit, the components to look at first;
364
+ * shown as a gold star on the Spec page and its fitted card */
365
+ @field featured = contains(BooleanField);
366
+ @field hasDesign = contains(BooleanField);
367
+ @field hasExamples = contains(BooleanField);
368
+ // cross-library demand signal, 1-5 — how many independent kits converged
369
+ // on this component (sourcing/index.md dupe density)
370
+ @field demand = contains(enumField(NumberField, { options: DEMAND_OPTIONS }));
371
+ // the write-up lives in the sibling <name>.md; the indexer extracts its
372
+ // content into the linked MarkdownDef, so the .md stays the single source.
373
+ // searchable puts that content in the spec's search doc, once.
374
+ @field writeup = linksTo(() => MarkdownDef, { searchable: true });
375
+
376
+ // each format is cast: Spec's format classes carry getters these views do not use
377
+ static isolated = class Isolated extends Component<typeof PretUISpec> {
378
+ writeupHeadingId = `${guidFor(this)}-writeup-heading`;
379
+ provenanceHeadingId = `${guidFor(this)}-provenance-heading`;
380
+ get demoLoad() {
381
+ let m = this.args.model;
382
+ return m.componentName
383
+ ? demoLoadFor({
384
+ name: m.componentName,
385
+ implementationStatus: m.implementationStatus,
386
+ ownership: m.ownership,
387
+ tier: m.tier,
388
+ })
389
+ : undefined;
390
+ }
391
+ get demo() {
392
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
393
+ return this.demoLoad?.value as any;
394
+ }
395
+ // the brief stands in for a missing usage page; hidden while one loads,
396
+ // so it doesn't show and then vanish
397
+ get showBrief() {
398
+ return (
399
+ Boolean(this.args.model.brief) && !this.demo && !this.isDemoLoading
400
+ );
401
+ }
402
+ get examples() {
403
+ let name = this.args.model.componentName;
404
+ return name ? examplesLoadFor(name).value : undefined;
405
+ }
406
+ get isDemoLoading() {
407
+ return this.demoLoad?.state === 'loading';
408
+ }
409
+ get isHost() {
410
+ return this.args.model.ownership === 'host';
411
+ }
412
+ get isDemoExcluded() {
413
+ return this.isHost || this.args.model.tier === 'Runtime';
414
+ }
415
+ get demoPolicy() {
416
+ if (this.demo) return 'included';
417
+ if (this.isDemoLoading) return 'loading';
418
+ return this.isDemoExcluded ? 'excluded' : 'missing';
419
+ }
420
+ get metaItems() {
421
+ let m = this.args.model;
422
+ let rows: { key: string; value: string; dots?: boolean[] }[] = [
423
+ { key: 'Category', value: m.category ?? '—' },
424
+ { key: 'Tier', value: m.tier ?? '—' },
425
+ {
426
+ key: 'Implementation',
427
+ value: optionLabel(IMPLEMENTATION_OPTIONS, m.implementationStatus),
428
+ },
429
+ {
430
+ key: 'Adoption',
431
+ value: optionLabel(ADOPTION_OPTIONS, m.adoptionStatus),
432
+ },
433
+ {
434
+ key: 'Ownership',
435
+ value: optionLabel(OWNERSHIP_OPTIONS, m.ownership),
436
+ },
437
+ // versions are earned by use — nothing worn shows no number
438
+ ...(isInUse(m.adoptionStatus)
439
+ ? [{ key: 'Version', value: m.version || '0.0.0' }]
440
+ : []),
441
+ { key: 'Source', value: m.source ?? '—' },
442
+ ];
443
+ if (m.buildsOn) {
444
+ rows.push({ key: 'Builds on', value: m.buildsOn });
445
+ }
446
+ if (m.lineage) {
447
+ rows.push({ key: 'boxel-ui lineage', value: m.lineage });
448
+ }
449
+ if (m.refs) {
450
+ rows.push({ key: 'Elsewhere', value: m.refs });
451
+ }
452
+ if (this.demand) {
453
+ rows.push({
454
+ key: 'Demand',
455
+ value: `${this.demand} of 5`,
456
+ dots: [1, 2, 3, 4, 5].map((i) => i <= this.demand!),
457
+ });
458
+ }
459
+ return rows;
460
+ }
461
+ get facetPills() {
462
+ let m = this.args.model;
463
+ return [
464
+ { label: 'design', on: m.hasDesign },
465
+ { label: 'brief', on: Boolean(m.brief) },
466
+ { label: 'impl', on: m.implementationStatus === 'implemented' },
467
+ { label: 'examples', on: m.hasExamples },
468
+ { label: 'in use', on: isInUse(m.adoptionStatus) },
469
+ ];
470
+ }
471
+ // the same five facets, handed to the kit's StepList as an ordered
472
+ // pipeline: it owns the list semantics, the per-step state text and the
473
+ // '5 of 5 complete' summary
474
+ get provenanceSteps(): StepItem[] {
475
+ return this.facetPills.map((f) => ({
476
+ label: f.label,
477
+ state: (f.on ? 'complete' : 'upcoming') as StepState,
478
+ }));
479
+ }
480
+ get demand(): number | undefined {
481
+ let d = this.args.model.demand;
482
+ if (!d || d < 1) return undefined;
483
+ return Math.min(5, Math.round(d));
484
+ }
485
+
486
+ <template>
487
+ <ThemeFrame
488
+ class='wb-frame'
489
+ @theme={{@model.cardTheme}}
490
+ @context={{@context}}
491
+ @bar={{false}}
492
+ as |ThemeControls|
493
+ >
494
+ <article class='page' data-demo-policy={{this.demoPolicy}}>
495
+ <header class='wb-topbar'>
496
+ <div class='wb-crumb' data-test-pretui-spec-crumb>
497
+ <span>Pret UI</span>
498
+ <span aria-hidden='true'>/</span>
499
+ <span>{{if @model.category @model.category 'components'}}</span>
500
+ <span aria-hidden='true'>/</span>
501
+ <span class='wb-here'>{{if
502
+ @model.componentName
503
+ @model.componentName
504
+ 'Component'
505
+ }}</span>
506
+ </div>
507
+ <div class='wb-badges'>
508
+ {{#if (isInUse @model.adoptionStatus)}}
509
+ <Token
510
+ @value={{if @model.version @model.version '0.0.0'}}
511
+ data-test-pretui-version
512
+ />
513
+ {{/if}}
514
+ {{#let
515
+ (statusLabel @model.adoptionStatus @model.implementationStatus)
516
+ as |label|
517
+ }}
518
+ {{#if label}}
519
+ <StatusChip
520
+ @value={{label}}
521
+ @tone={{adoptionTone @model.adoptionStatus}}
522
+ data-test-pretui-status
523
+ />
524
+ {{/if}}
525
+ {{/let}}
526
+ {{#if (isNewIn @model.introducedVersion)}}<Chip
527
+ @label='New'
528
+ @tone='attention'
529
+ data-test-pretui-new
530
+ />{{/if}}
531
+ {{#if @model.featured}}
532
+ <Tooltip
533
+ @content='Featured: a flagship component'
534
+ @side='bottom'
535
+ >
536
+ <Chip @tone='warning' @dot={{false}}><StarIcon
537
+ class='wb-star'
538
+ width='12'
539
+ height='12'
540
+ aria-hidden='true'
541
+ /><VisuallyHidden>Featured: a flagship component</VisuallyHidden></Chip>
542
+ </Tooltip>
543
+ {{/if}}
544
+ </div>
545
+ <div class='wb-grow'></div>
546
+ <ThemeControls />
547
+ </header>
548
+
549
+ <h1 class='wb-title'>
550
+ {{#let (iconFor @model.icon) as |TitleIcon|}}
551
+ {{#if TitleIcon}}
552
+ <span class='wb-title-frame'>
553
+ <TitleIcon width='22' height='22' role='presentation' />
554
+ </span>
555
+ {{/if}}
556
+ {{/let}}
557
+ <span class='wb-title-text'>{{#each
558
+ (nameParts
559
+ (if @model.componentName @model.componentName 'Component')
560
+ )
561
+ as |part i|
562
+ }}{{#if i}}<wbr />{{/if}}{{part}}{{/each}}</span>
563
+ </h1>
564
+ {{#if this.showBrief}}
565
+ <p class='brief'>{{@model.brief}}</p>
566
+ {{/if}}
567
+ <div class='wb-work'>
568
+ {{#if this.demo}}
569
+ <this.demo />
570
+ {{else if this.isDemoLoading}}
571
+ <section class='panel'>
572
+ <LoadingState @label='Loading the usage page' />
573
+ </section>
574
+ {{else if this.isDemoExcluded}}
575
+ <section class='panel'>
576
+ {{#if this.isHost}}
577
+ <EmptyState
578
+ @title='Catalog infrastructure — demo excluded'
579
+ @message='Host chrome is indexed here for vocabulary coverage, not as a Pret UI demo target.'
580
+ />
581
+ {{else}}
582
+ <EmptyState
583
+ @title='Catalog infrastructure — demo excluded'
584
+ @message='This Runtime primitive builds the fitting room itself. It is indexed for API coverage and explicitly excluded from missing-demo QA.'
585
+ />
586
+ {{/if}}
587
+ </section>
588
+ {{else}}
589
+ <section class='panel'>
590
+ <EmptyState
591
+ @title='No usage page yet'
592
+ @message='This component has no freestyle page in the fitting room yet — see the kit showcase.'
593
+ />
594
+ </section>
595
+ {{/if}}
596
+ </div>
597
+ <ExampleGallery @specs={{this.examples}} />
598
+ <div class='wb-below'>
599
+ {{#if @model.writeup}}
600
+ <section
601
+ class='wb-panel wb-writeup-panel'
602
+ aria-labelledby={{this.writeupHeadingId}}
603
+ >
604
+ <div class='wb-panel-h'>
605
+ <h2 id={{this.writeupHeadingId}} class='wb-cap'>Write-up</h2>
606
+ </div>
607
+ <WriteupFold
608
+ class='wb-writeup-fold'
609
+ @writeup={{@model.writeup}}
610
+ />
611
+ </section>
612
+ {{/if}}
613
+ <section
614
+ class='wb-panel wb-provenance'
615
+ aria-labelledby={{this.provenanceHeadingId}}
616
+ >
617
+ <div class='wb-panel-h'>
618
+ <h2
619
+ id={{this.provenanceHeadingId}}
620
+ class='wb-cap'
621
+ >Provenance</h2>
622
+ </div>
623
+ <StepList
624
+ class='wb-pipe'
625
+ @steps={{this.provenanceSteps}}
626
+ @variant='track'
627
+ @label='Provenance pipeline'
628
+ @summary={{true}}
629
+ />
630
+ <dl class='wb-kv'>
631
+ {{#each this.metaItems as |row|}}
632
+ <div class='wb-krow'>
633
+ <dt>{{row.key}}</dt>
634
+ <dd>
635
+ {{#if row.dots}}
636
+ {{! drawn, not ●/○ glyphs, so filled and hollow share one
637
+ size and baseline }}
638
+ <span
639
+ class='wb-dots'
640
+ role='img'
641
+ aria-label={{row.value}}
642
+ >
643
+ {{#each row.dots as |on|}}
644
+ <span
645
+ class='wb-dot'
646
+ data-on={{if on 'true'}}
647
+ ></span>
648
+ {{/each}}
649
+ </span>
650
+ {{else}}
651
+ {{row.value}}
652
+ {{/if}}
653
+ </dd>
654
+ </div>
655
+ {{/each}}
656
+ </dl>
657
+ </section>
658
+ </div>
659
+ </article>
660
+ </ThemeFrame>
661
+ <style scoped>
662
+ /* the isolated root: the card's height and its scroller. No
663
+ overscroll-behavior: where a host sizes the card to its content
664
+ (code mode's preview), the frame has nothing to scroll and the
665
+ wheel has to pass up to the host's scroller. position: relative
666
+ keeps absolute descendants (visually hidden text) inside this
667
+ scroller; otherwise they overflow the card container, which then
668
+ scrolls past the frame onto its own background */
669
+ .wb-frame {
670
+ position: relative;
671
+ height: 100%;
672
+ overflow-y: auto;
673
+ }
674
+ .page {
675
+ --_wb-topbar-h: 2.75rem;
676
+ --_wb-panel-h: 2.25rem;
677
+ --_wb-title-frame-size: 3rem;
678
+ --_wb-writeup-min-w: 48rem;
679
+ /* StepList's track turns vertical at 24rem; with the panel's
680
+ padding, provenance needs 26rem to keep it horizontal */
681
+ --_wb-provenance-min-w: 26rem;
682
+ --_wb-provenance-max-w: 30rem;
683
+ --_wb-krow-label-w: 6.875rem;
684
+ --_wb-dot-size: 0.5rem;
685
+ /* the page's inline padding, which the topbar cancels and restores
686
+ to run edge to edge */
687
+ --_wb-page-gutter: var(--boxel-sp-lg);
688
+
689
+ min-height: 100%;
690
+ padding: 0 var(--_wb-page-gutter) var(--boxel-sp-2xl);
691
+ /* one column that may shrink below its content, so a long name
692
+ breaks instead of widening the page */
693
+ display: grid;
694
+ grid-template-columns: minmax(0, 1fr);
695
+ gap: var(--boxel-sp);
696
+ align-content: start;
697
+ }
698
+ /* ── workbench chrome (pretui-alert-workbench format) ── */
699
+ .wb-title {
700
+ margin: var(--boxel-sp-2xs) 0 calc(-1 * var(--boxel-sp-3xs));
701
+ font-family: var(--font-serif);
702
+ font-size: var(--boxel-font-size-xl);
703
+ font-weight: 700;
704
+ letter-spacing: var(--boxel-lsp-xs);
705
+ line-height: 1.1;
706
+ display: flex;
707
+ align-items: center;
708
+ gap: var(--boxel-sp-xs);
709
+ }
710
+ /* the component's icon beside its title: a --background tile with a
711
+ hairline ring, not a raised button */
712
+ /* the name shrinks and breaks, so a long one can't push the page
713
+ sideways at narrow widths */
714
+ .wb-title-text {
715
+ min-width: 0;
716
+ overflow-wrap: break-word;
717
+ }
718
+ .wb-title-frame {
719
+ --icon-color: currentColor;
720
+ --icon-bg: none;
721
+
722
+ display: grid;
723
+ place-items: center;
724
+ width: var(--_wb-title-frame-size);
725
+ height: var(--_wb-title-frame-size);
726
+ flex: none;
727
+ border-radius: var(--boxel-border-radius-sm);
728
+ box-shadow: inset 0 0 0 1px var(--border);
729
+ background-color: var(--background);
730
+ color: var(--muted-foreground);
731
+ }
732
+ .wb-topbar {
733
+ position: sticky;
734
+ top: 0;
735
+ /* sticky page chrome sits above content and well below every
736
+ floating surface, so a menu opened from this bar clears it */
737
+ z-index: var(--pretui-z-sticky, 10);
738
+ display: flex;
739
+ align-items: center;
740
+ gap: var(--boxel-sp-sm);
741
+ min-height: var(--_wb-topbar-h);
742
+ margin: 0 calc(-1 * var(--_wb-page-gutter));
743
+ padding: var(--boxel-sp-2xs) var(--_wb-page-gutter);
744
+ background-color: var(--card);
745
+ color: var(--card-foreground);
746
+ box-shadow: inset 0 -1px 0 var(--border);
747
+ flex-wrap: wrap;
748
+ }
749
+ .wb-crumb {
750
+ display: flex;
751
+ flex-wrap: wrap;
752
+ align-items: center;
753
+ gap: var(--boxel-sp-xs);
754
+ font-size: var(--boxel-font-size-xs);
755
+ color: var(--muted-foreground);
756
+ min-width: 0;
757
+ }
758
+ .wb-here {
759
+ min-width: 0;
760
+ overflow-wrap: break-word;
761
+ color: var(--card-foreground);
762
+ font-weight: 600;
763
+ }
764
+ .wb-badges {
765
+ display: flex;
766
+ align-items: center;
767
+ gap: var(--boxel-sp-2xs);
768
+ margin-inline-start: var(--boxel-sp-6xs);
769
+ }
770
+ .wb-grow {
771
+ flex: 1;
772
+ }
773
+ /* the icon set's star is outline-only; filled reads as a flag */
774
+ .wb-star {
775
+ fill: currentColor;
776
+ }
777
+ .wb-work {
778
+ min-width: 0;
779
+ }
780
+ /* the write-up and provenance share a row when both fit, and stack
781
+ otherwise; provenance stops at its cap and the write-up takes the
782
+ rest */
783
+ .wb-below {
784
+ container-type: inline-size;
785
+ display: flex;
786
+ flex-wrap: wrap;
787
+ gap: var(--boxel-sp);
788
+ /* on a shared row the write-up is at least as tall as provenance */
789
+ align-items: stretch;
790
+ }
791
+ .wb-below > .wb-writeup-panel {
792
+ flex: 1 1 var(--_wb-writeup-min-w);
793
+ display: flex;
794
+ flex-direction: column;
795
+ }
796
+ .wb-writeup-fold {
797
+ flex: 1;
798
+ }
799
+
800
+ .wb-below > .wb-provenance {
801
+ flex: 1 1 var(--_wb-provenance-min-w);
802
+ align-self: start;
803
+ }
804
+ /* capped only while it shares the row: 75rem is the write-up's 48rem
805
+ minimum plus provenance's 26rem plus the 1rem gap (a container query
806
+ can't read the variables). Stacked, it runs full width. Unnamed: a
807
+ named container query doesn't survive the realm's scoped-CSS
808
+ transpiler. */
809
+ @container (width >= 75rem) {
810
+ .wb-below > .wb-writeup-panel ~ .wb-provenance {
811
+ max-inline-size: var(--_wb-provenance-max-w);
812
+ }
813
+ }
814
+ .wb-panel {
815
+ background-color: var(--card);
816
+ color: var(--card-foreground);
817
+ border-radius: var(--boxel-border-radius);
818
+ box-shadow: 0 0 0 1px var(--border);
819
+ overflow: hidden;
820
+ min-width: 0;
821
+ }
822
+ .wb-panel-h {
823
+ display: flex;
824
+ align-items: center;
825
+ gap: var(--boxel-sp-xs);
826
+ min-height: var(--_wb-panel-h);
827
+ padding: var(--boxel-sp-xs) var(--boxel-sp-sm);
828
+ box-shadow: inset 0 -1px 0 var(--border);
829
+ }
830
+ /* THE caps treatment — panel and group headers only (type spec:
831
+ one caps style, everything else sentence case) */
832
+ .wb-cap {
833
+ font-family: var(--boxel-eyebrow-font-family);
834
+ font-size: var(--boxel-eyebrow-font-size);
835
+ font-weight: var(--boxel-eyebrow-font-weight);
836
+ line-height: var(--boxel-eyebrow-line-height);
837
+ letter-spacing: var(--boxel-eyebrow-letter-spacing);
838
+ text-transform: uppercase;
839
+ color: var(--muted-foreground);
840
+ }
841
+ /* the provenance rail is the kit's StepList in its track variant —
842
+ the panel only positions it; every bar, glyph, state text and the
843
+ completion summary belong to the component */
844
+ .wb-pipe {
845
+ padding: var(--boxel-sp-sm) var(--boxel-sp-sm) var(--boxel-sp-2xs);
846
+ }
847
+ .wb-kv {
848
+ margin: 0;
849
+ padding: var(--boxel-sp-3xs) 0 var(--boxel-sp-2xs);
850
+ }
851
+ .wb-krow {
852
+ display: grid;
853
+ grid-template-columns: var(--_wb-krow-label-w) minmax(0, 1fr);
854
+ gap: var(--boxel-sp-sm);
855
+ padding: var(--boxel-sp-2xs) var(--boxel-sp-sm);
856
+ align-items: baseline;
857
+ }
858
+ .wb-krow dt {
859
+ font-size: var(--boxel-ui-label-font-size);
860
+ font-weight: var(--boxel-ui-label-font-weight);
861
+ color: var(--muted-foreground);
862
+ }
863
+ .wb-dots {
864
+ display: inline-flex;
865
+ align-items: center;
866
+ gap: var(--boxel-sp-4xs);
867
+ vertical-align: middle;
868
+ }
869
+ .wb-dot {
870
+ width: var(--_wb-dot-size);
871
+ height: var(--_wb-dot-size);
872
+ border-radius: 50%;
873
+ box-shadow: inset 0 0 0 1px currentColor;
874
+ }
875
+ .wb-dot[data-on='true'] {
876
+ background-color: currentColor;
877
+ }
878
+ .wb-krow dd {
879
+ margin: 0;
880
+ font-family: var(--font-mono);
881
+ font-size: var(--boxel-font-size-xs);
882
+ line-height: 1.5;
883
+ overflow-wrap: break-word;
884
+ }
885
+ .panel {
886
+ background-color: var(--card);
887
+ color: var(--card-foreground);
888
+ border-radius: var(--boxel-border-radius);
889
+ box-shadow: 0 0 0 1px var(--border);
890
+ padding: var(--boxel-sp);
891
+ display: grid;
892
+ gap: var(--boxel-sp-sm);
893
+ align-content: start;
894
+ }
895
+ .brief {
896
+ max-width: 78ch;
897
+ font-size: var(--boxel-caption-font-size);
898
+ line-height: 1.5;
899
+ color: var(--muted-foreground);
900
+ }
901
+ </style>
902
+ </template>
903
+ } as unknown as typeof Spec.isolated;
904
+
905
+ static fitted = class Fitted extends Component<typeof PretUISpec> {
906
+ get monogram() {
907
+ return (this.args.model.componentName ?? '?').charAt(0);
908
+ }
909
+ <template>
910
+ {{! The container element and the element the queries STYLE must be
911
+ two different elements. An unnamed `@container` resolves against
912
+ the nearest ancestor container — so a rule that restyles the
913
+ container itself can never be written unnamed, and naming it is a
914
+ realm law violation that silently deletes every rule after it.
915
+ `fitted.gts` solves this with an outer container plus an inner
916
+ root; this is the same shape. }}
917
+ <div class='fit' data-test-pretui-component-fitted>
918
+ <div class='fit-root'>
919
+ <div class='mono'>
920
+ {{#let (iconFor @model.icon) as |FitIcon|}}
921
+ {{#if FitIcon}}
922
+ <FitIcon width='18' height='18' role='presentation' />
923
+ {{else}}
924
+ {{this.monogram}}
925
+ {{/if}}
926
+ {{/let}}
927
+ </div>
928
+ <div class='fit-body'>
929
+ <div class='fit-name'>
930
+ {{@model.componentName}}
931
+ {{#if @model.featured}}<span
932
+ class='fit-star'
933
+ title='Featured: a flagship component'
934
+ ><StarIcon
935
+ class='wb-star'
936
+ width='12'
937
+ height='12'
938
+ aria-hidden='true'
939
+ /><VisuallyHidden>Featured: a flagship component</VisuallyHidden></span>{{/if}}
940
+ </div>
941
+ <div class='fit-sub'>
942
+ {{#if @model.category}}<span>{{@model.category}}</span>{{/if}}
943
+ {{#if (isInUse @model.adoptionStatus)}}
944
+ <span>{{if @model.version @model.version '0.0.0'}}</span>
945
+ {{/if}}
946
+ </div>
947
+ <div class='fit-extra'>
948
+ {{#let
949
+ (statusLabel @model.adoptionStatus @model.implementationStatus)
950
+ as |label|
951
+ }}
952
+ {{#if label}}
953
+ <StatusChip
954
+ @value={{label}}
955
+ @tone={{adoptionTone @model.adoptionStatus}}
956
+ data-test-pretui-status
957
+ />
958
+ {{/if}}
959
+ {{/let}}
960
+ {{#if (isNewIn @model.introducedVersion)}}<Chip
961
+ @label='New'
962
+ @tone='attention'
963
+ data-test-pretui-new
964
+ />{{/if}}
965
+ </div>
966
+ {{#if @model.brief}}<div
967
+ class='fit-brief'
968
+ >{{@model.brief}}</div>{{/if}}
969
+ </div>
970
+ </div>
971
+ </div>
972
+ <style scoped>
973
+ .fit {
974
+ container-type: size;
975
+ width: 100%;
976
+ height: 100%;
977
+ overflow: hidden;
978
+ }
979
+ .fit-root {
980
+ --fit-mono-size: 1.875rem;
981
+ --fit-mono-font-size: var(--boxel-font-size-sm);
982
+ --fit-mono-radius: var(--boxel-border-radius);
983
+
984
+ width: 100%;
985
+ height: 100%;
986
+ display: flex;
987
+ align-items: center;
988
+ gap: var(--boxel-sp-xs);
989
+ padding: var(--boxel-sp-xs);
990
+ background-color: var(--card);
991
+ color: var(--card-foreground);
992
+ overflow: hidden;
993
+ box-sizing: border-box;
994
+ }
995
+ .mono {
996
+ --icon-color: currentColor;
997
+ --icon-bg: none;
998
+
999
+ flex: none;
1000
+ width: var(--fit-mono-size);
1001
+ height: var(--fit-mono-size);
1002
+ border-radius: var(--fit-mono-radius);
1003
+ display: grid;
1004
+ place-items: center;
1005
+ font-weight: 800;
1006
+ font-size: var(--fit-mono-font-size);
1007
+ background-color: var(--muted);
1008
+ color: var(--foreground);
1009
+ box-shadow: inset 0 0 0 1px var(--border);
1010
+ }
1011
+ .fit-body {
1012
+ min-width: 0;
1013
+ display: grid;
1014
+ gap: var(--boxel-sp-6xs);
1015
+ }
1016
+ .fit-name {
1017
+ font-weight: 600;
1018
+ font-size: var(--boxel-font-size-xs);
1019
+ white-space: nowrap;
1020
+ overflow: hidden;
1021
+ text-overflow: ellipsis;
1022
+ }
1023
+ .fit-star {
1024
+ color: var(--warning-ink);
1025
+ }
1026
+ /* the icon set's star is outline-only; filled reads as a flag */
1027
+ .wb-star {
1028
+ fill: currentColor;
1029
+ }
1030
+ .fit-sub {
1031
+ display: flex;
1032
+ gap: var(--boxel-sp-xs);
1033
+ font-family: var(--font-mono);
1034
+ font-size: var(--boxel-eyebrow-font-size);
1035
+ letter-spacing: var(--boxel-eyebrow-letter-spacing);
1036
+ text-transform: uppercase;
1037
+ color: var(--muted-foreground);
1038
+ }
1039
+ .fit-extra,
1040
+ .fit-brief {
1041
+ display: none;
1042
+ }
1043
+ /* badge: monogram + name only */
1044
+ @container ((max-width: 139px) or (max-height: 47px)) {
1045
+ .fit-root {
1046
+ --fit-mono-size: 1.375rem;
1047
+ --fit-mono-font-size: var(--boxel-font-size-xs);
1048
+ --fit-mono-radius: var(--boxel-border-radius-sm);
1049
+
1050
+ gap: var(--boxel-sp-2xs);
1051
+ padding: var(--boxel-sp-3xs) var(--boxel-sp-xs);
1052
+ }
1053
+ .fit-sub {
1054
+ display: none;
1055
+ }
1056
+ }
1057
+ /* tile & card: stack vertically, grow the monogram */
1058
+ @container ((min-width: 140px) and (min-height: 140px)) {
1059
+ .fit-root {
1060
+ --fit-mono-size: 2.75rem;
1061
+ --fit-mono-font-size: var(--boxel-font-size-lg);
1062
+ --fit-mono-radius: var(--boxel-border-radius-lg);
1063
+
1064
+ flex-direction: column;
1065
+ align-items: flex-start;
1066
+ justify-content: flex-end;
1067
+ padding: var(--boxel-sp-sm);
1068
+ gap: var(--boxel-sp-xs);
1069
+ }
1070
+ .fit-extra {
1071
+ display: flex;
1072
+ align-items: center;
1073
+ gap: var(--boxel-sp-2xs);
1074
+ }
1075
+ }
1076
+ /* full card: show the brief */
1077
+ @container ((min-width: 190px) and (min-height: 220px)) {
1078
+ .fit-brief {
1079
+ display: -webkit-box;
1080
+ -webkit-box-orient: vertical;
1081
+ -webkit-line-clamp: 3;
1082
+ overflow: hidden;
1083
+ font-size: var(--boxel-caption-font-size);
1084
+ color: var(--muted-foreground);
1085
+ line-height: 1.5;
1086
+ white-space: normal;
1087
+ }
1088
+ }
1089
+ /* last, so it beats the display rules above: a row with nothing in
1090
+ it takes no space */
1091
+ .fit-sub:not(:has(*)),
1092
+ .fit-extra:not(:has(*)) {
1093
+ display: none;
1094
+ }
1095
+ </style>
1096
+ </template>
1097
+ } as unknown as typeof Spec.fitted;
1098
+
1099
+ static embedded = class Embedded extends Component<typeof PretUISpec> {
1100
+ <template>
1101
+ <div class='tile'>
1102
+ <div class='tile-head'>
1103
+ <span class='tile-name'>{{if
1104
+ @model.componentName
1105
+ @model.componentName
1106
+ 'Component'
1107
+ }}</span>
1108
+ {{#let
1109
+ (statusLabel @model.adoptionStatus @model.implementationStatus)
1110
+ as |label|
1111
+ }}
1112
+ {{#if label}}
1113
+ <StatusChip
1114
+ @value={{label}}
1115
+ @tone={{adoptionTone @model.adoptionStatus}}
1116
+ data-test-pretui-status
1117
+ />
1118
+ {{/if}}
1119
+ {{/let}}
1120
+ </div>
1121
+ <div class='tile-meta'>
1122
+ {{! always rendered, so the source token keeps the right edge }}
1123
+ <span class='category'>{{@model.category}}</span>
1124
+ {{#if @model.source}}<Token @value={{@model.source}} />{{/if}}
1125
+ </div>
1126
+ </div>
1127
+ <style scoped>
1128
+ .tile {
1129
+ padding: var(--boxel-sp-sm) var(--boxel-sp);
1130
+ display: grid;
1131
+ gap: var(--boxel-sp-xs);
1132
+ align-content: start;
1133
+ }
1134
+ .tile-head {
1135
+ display: flex;
1136
+ align-items: center;
1137
+ justify-content: space-between;
1138
+ gap: var(--boxel-sp-xs);
1139
+ }
1140
+ .tile-name {
1141
+ min-width: 0;
1142
+ overflow-wrap: break-word;
1143
+ font-weight: 600;
1144
+ font-size: var(--boxel-font-size-xs);
1145
+ }
1146
+ .tile-meta {
1147
+ display: flex;
1148
+ align-items: center;
1149
+ justify-content: space-between;
1150
+ gap: var(--boxel-sp-xs);
1151
+ }
1152
+ .category {
1153
+ font-family: var(--font-mono);
1154
+ font-size: var(--boxel-eyebrow-font-size);
1155
+ letter-spacing: var(--boxel-eyebrow-letter-spacing);
1156
+ text-transform: uppercase;
1157
+ color: var(--muted-foreground);
1158
+ }
1159
+ </style>
1160
+ </template>
1161
+ } as unknown as typeof Spec.embedded;
1162
+
1163
+ // Hand-written: Spec's own edit template throws without a resolved ref, and
1164
+ // the default field editor surfaces ten inherited fields this card never sets.
1165
+ static edit = class Edit extends Component<typeof PretUISpec> {
1166
+ // ids for the captions that name editors a <label> can't wrap
1167
+ captionId = (key: string) => `${guidFor(this)}-${key}`;
1168
+ // the yes/no signals are switches that write the field directly
1169
+ setFlag = (key: 'featured' | 'hasDesign' | 'hasExamples', on: boolean) => {
1170
+ this.args.model[key] = on;
1171
+ };
1172
+ <template>
1173
+ <div class='wb-edit'>
1174
+ <fieldset class='wb-group'>
1175
+ <legend>Identity</legend>
1176
+ <div class='wb-fields'>
1177
+ <label><span class='wb-cap'>Name</span>
1178
+ <@fields.componentName /></label>
1179
+ <label><span class='wb-cap'>Icon</span> <@fields.icon /></label>
1180
+ <label class='wb-wide'><span class='wb-cap'>Brief</span>
1181
+ <@fields.brief /></label>
1182
+ </div>
1183
+ </fieldset>
1184
+
1185
+ <fieldset class='wb-group'>
1186
+ <legend>Taxonomy</legend>
1187
+ <div class='wb-fields'>
1188
+ <label><span class='wb-cap'>Category</span>
1189
+ <@fields.category /></label>
1190
+ <label><span class='wb-cap'>Tier</span> <@fields.tier /></label>
1191
+ <label><span class='wb-cap'>Ownership</span>
1192
+ <@fields.ownership /></label>
1193
+ <label><span class='wb-cap'>Implementation</span>
1194
+ <@fields.implementationStatus /></label>
1195
+ <label><span class='wb-cap'>Adoption</span>
1196
+ <@fields.adoptionStatus /></label>
1197
+ <label><span class='wb-cap'>Introduced in</span>
1198
+ <@fields.introducedVersion /></label>
1199
+ <div
1200
+ class='wb-wide'
1201
+ role='group'
1202
+ aria-labelledby={{this.captionId 'tags'}}
1203
+ >
1204
+ <span id={{this.captionId 'tags'}} class='wb-cap'>Tags</span>
1205
+ <@fields.tags />
1206
+ </div>
1207
+ </div>
1208
+ </fieldset>
1209
+
1210
+ <fieldset class='wb-group'>
1211
+ <legend>Provenance</legend>
1212
+ <div class='wb-fields'>
1213
+ <label><span class='wb-cap'>Source</span> <@fields.source /></label>
1214
+ <label><span class='wb-cap'>Lineage</span>
1215
+ <@fields.lineage /></label>
1216
+ <label><span class='wb-cap'>Version</span>
1217
+ <@fields.version /></label>
1218
+ <label><span class='wb-cap'>Builds on</span>
1219
+ <@fields.buildsOn /></label>
1220
+ <label class='wb-wide'><span class='wb-cap'>References</span>
1221
+ <@fields.refs /></label>
1222
+ </div>
1223
+ </fieldset>
1224
+
1225
+ {{! editors a <label> can't wrap (the tag list, the linked file with
1226
+ its Remove button) sit in a named group instead: a wrapping label
1227
+ would activate their first control on any click. The yes/no
1228
+ signals are single switches, so their label does wrap them. }}
1229
+ <fieldset class='wb-group'>
1230
+ <legend>Signals</legend>
1231
+ <div class='wb-fields'>
1232
+ <label><span class='wb-cap'>Demand (1-5)</span>
1233
+ <@fields.demand /></label>
1234
+ <label class='wb-switch-row'>
1235
+ <Switch
1236
+ @checked={{@model.featured}}
1237
+ @onCheckedChange={{fn this.setFlag 'featured'}}
1238
+ @disabled={{not @canEdit}}
1239
+ />
1240
+ <span class='wb-cap'>Featured</span>
1241
+ </label>
1242
+ <label class='wb-switch-row'>
1243
+ <Switch
1244
+ @checked={{@model.hasDesign}}
1245
+ @onCheckedChange={{fn this.setFlag 'hasDesign'}}
1246
+ @disabled={{not @canEdit}}
1247
+ />
1248
+ <span class='wb-cap'>Has design</span>
1249
+ </label>
1250
+ <label class='wb-switch-row'>
1251
+ <Switch
1252
+ @checked={{@model.hasExamples}}
1253
+ @onCheckedChange={{fn this.setFlag 'hasExamples'}}
1254
+ @disabled={{not @canEdit}}
1255
+ />
1256
+ <span class='wb-cap'>Has examples</span>
1257
+ </label>
1258
+ </div>
1259
+ </fieldset>
1260
+
1261
+ <fieldset class='wb-group'>
1262
+ <legend>Write-up</legend>
1263
+ <div class='wb-fields'>
1264
+ <div
1265
+ class='wb-wide'
1266
+ role='group'
1267
+ aria-labelledby={{this.captionId 'writeup'}}
1268
+ >
1269
+ <span id={{this.captionId 'writeup'}} class='wb-cap'>Linked file</span>
1270
+ <@fields.writeup />
1271
+ </div>
1272
+ </div>
1273
+ </fieldset>
1274
+ </div>
1275
+ <style scoped>
1276
+ .wb-edit {
1277
+ --_wb-field-min-w: 12.5rem;
1278
+
1279
+ display: grid;
1280
+ gap: var(--boxel-sp);
1281
+ padding: var(--boxel-sp);
1282
+ }
1283
+ .wb-group {
1284
+ border: 1px solid var(--border);
1285
+ border-radius: var(--boxel-border-radius-sm);
1286
+ padding: var(--boxel-sp-sm) var(--boxel-sp) var(--boxel-sp);
1287
+ margin: 0;
1288
+ min-width: 0;
1289
+ }
1290
+ .wb-group > legend {
1291
+ font-family: var(--boxel-eyebrow-font-family);
1292
+ font-size: var(--boxel-eyebrow-font-size);
1293
+ font-weight: var(--boxel-eyebrow-font-weight);
1294
+ line-height: var(--boxel-eyebrow-line-height);
1295
+ letter-spacing: var(--boxel-eyebrow-letter-spacing);
1296
+ text-transform: uppercase;
1297
+ color: var(--muted-foreground);
1298
+ padding-inline: var(--boxel-sp-2xs);
1299
+ }
1300
+ .wb-fields {
1301
+ display: grid;
1302
+ grid-template-columns: repeat(
1303
+ auto-fit,
1304
+ minmax(min(var(--_wb-field-min-w), 100%), 1fr)
1305
+ );
1306
+ gap: var(--boxel-sp-xs) var(--boxel-sp-sm);
1307
+ }
1308
+ .wb-fields > label,
1309
+ .wb-fields > div {
1310
+ display: grid;
1311
+ gap: var(--boxel-sp-2xs);
1312
+ min-width: 0;
1313
+ }
1314
+ .wb-wide {
1315
+ grid-column: 1 / -1;
1316
+ }
1317
+ .wb-fields > .wb-switch-row {
1318
+ display: flex;
1319
+ align-items: center;
1320
+ gap: var(--boxel-sp-xs);
1321
+ cursor: pointer;
1322
+ }
1323
+ /* field captions are sentence-case labels; the caps style is the
1324
+ group legends' alone */
1325
+ .wb-cap {
1326
+ display: block;
1327
+ font-size: var(--boxel-ui-label-font-size);
1328
+ font-weight: var(--boxel-ui-label-font-weight);
1329
+ line-height: var(--boxel-ui-label-line-height);
1330
+ letter-spacing: var(--boxel-ui-label-letter-spacing);
1331
+ color: var(--muted-foreground);
1332
+ }
1333
+ </style>
1334
+ </template>
1335
+ } as unknown as typeof Spec.edit;
1336
+ }