@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,1133 @@
1
+ // Pretui — MediaPlayer: native audio and video on Media Chrome, with captions, chapters and a transcript.
2
+ //
3
+ // `MediaPlayer` is one contract for audio and video, built on Media Chrome
4
+ // 4.19.2 (MIT, vendored at ./media-chrome — see that folder's README for the
5
+ // licence, the build command and the audit). `AudioPlayer` and `VideoPlayer`
6
+ // are skins over it, in the wrap-and-curry idiom Law 10 names (Tag wraps
7
+ // Pill): they add defaults and a little chrome of their own and forward
8
+ // everything else.
9
+ //
10
+ // WHY MEDIA CHROME AND NOT A PLAYER — it is the foundation every skin can
11
+ // ride, and a checkout confirms why:
12
+ //
13
+ // • Pure Web Components. In Glimmer a custom element is just a tag, so
14
+ // there is no adapter, no wrapper component per control, and no React.
15
+ // • It is themed exclusively through `--media-*` custom properties, which
16
+ // cross the shadow boundary. That is our theming contract exactly:
17
+ // every value below is a Pretui token, so a theme change re-dresses
18
+ // the player and there is not one dark branch anywhere in this file.
19
+ // • It disposes itself. `disconnectedCallback` stops the one rAF loop
20
+ // (the time-range playhead), clears the auto-hide timeout, disconnects
21
+ // both observers and unbinds every listener. Glimmer destroying the
22
+ // element is enough: the element lifecycle owns the frame loop, so
23
+ // nothing here needs a modifier to police it.
24
+ //
25
+ // BETTER THAN THE INSPIRATION — what Media Chrome's own defaults get wrong,
26
+ // and what this file does instead:
27
+ //
28
+ // 1. `autohide` is ON by default, so after two seconds the controls are
29
+ // invisible but still focusable, which is worse than no control. Pretui defaults to `noautohide`, and
30
+ // when a caller opts into cinema behaviour an outer-tree rule re-shows
31
+ // the bar on `:focus-within`. (Outer-tree rules on a slotted child beat
32
+ // the shadow root's `::slotted()` rules, whatever their specificity.)
33
+ // 2. The captions, PiP and fullscreen buttons render whether or not they
34
+ // can do anything. Here they are conditional: no text tracks, no
35
+ // captions button.
36
+ // 3. Buffering is a spinning glyph and nothing else, and the spinner keeps
37
+ // spinning under `prefers-reduced-motion`. Here every transport state
38
+ // also has a text channel, and reduced motion hides the spinner and
39
+ // leans on the text (Law 5's end state).
40
+ // 4. There is no transcript surface at all, and a player without a track
41
+ // channel is incomplete; this one renders a real,
42
+ // seekable transcript in a native `<details>`, with the active cue
43
+ // marked by `aria-current`.
44
+ // 5. Nothing reserves space, so the layout jumps when the poster resolves.
45
+ // Here the stage carries `aspect-ratio` from the first paint.
46
+ //
47
+ // DELIBERATELY NOT HERE: autoplay (there is no `@autoplay` arg and there
48
+ // will not be one), and any object-URL creation — `@src` is passed through
49
+ // untouched, so if you hand it a blob URL you still own revoking it.
50
+ import Component from '@glimmer/component';
51
+ import { tracked } from '@glimmer/tracking';
52
+ import { on } from '@ember/modifier';
53
+ import { fn } from '@ember/helper';
54
+ import { htmlSafe } from '@ember/template';
55
+ import type { SafeString } from '@ember/template';
56
+ import { modifier } from 'ember-modifier';
57
+ import { formatClock } from '../internal/reading-format';
58
+
59
+ // Side-effect import: evaluating the bundle DEFINES the custom elements.
60
+ // It is DOM-free (Media Chrome ships a server-safe globals shim), which is
61
+ // why it is safe at module scope in a realm — verified by evaluating this
62
+ // exact file under plain Node. See ./media-chrome/README.md.
63
+ import '../media-chrome/index.js';
64
+
65
+ // ── Shared media vocabulary ──────────────────────────────────────────────
66
+
67
+ /** What a `MediaPlayer` is playing. Image and model kinds live on
68
+ * `MediaViewer`, which routes them to their own adapters. */
69
+ export type MediaKind = 'audio' | 'video';
70
+
71
+ /** Presets for how much chrome the player wears. */
72
+ export type MediaChrome = 'full' | 'compact' | 'minimal' | 'none';
73
+
74
+ /** One `<track>`. `isDefault` rather than `default` because `default` reads
75
+ * badly as a property in both TypeScript and a Glimmer path. */
76
+ export interface MediaTrackSpec {
77
+ /** URL of the WebVTT file. */
78
+ src: string;
79
+ /** Human label shown in the captions UI ("English", "Deutsch"). */
80
+ label: string;
81
+ /** BCP-47 language tag. */
82
+ srclang: string;
83
+ /** WebVTT track kind. Defaults to `'captions'`. */
84
+ kind?: 'captions' | 'subtitles' | 'descriptions' | 'chapters';
85
+ /** Mark this the default track for its kind. */
86
+ isDefault?: boolean;
87
+ }
88
+
89
+ /** One transcript line. Times are seconds from the start of the media. */
90
+ export interface TranscriptCue {
91
+ /** Start time in seconds. */
92
+ start: number;
93
+ /** End time in seconds; used only to decide which cue is current. */
94
+ end: number;
95
+ /** The spoken text. */
96
+ text: string;
97
+ /** Optional speaker attribution, rendered as a separate channel. */
98
+ speaker?: string;
99
+ }
100
+
101
+ /** The transport state a `MediaPlayer` reports. Every value has a text
102
+ * channel in the UI — none of them is signalled by colour alone. */
103
+ export type MediaPhase =
104
+ | 'idle'
105
+ | 'loading'
106
+ | 'buffering'
107
+ | 'playing'
108
+ | 'paused'
109
+ | 'ended'
110
+ | 'error';
111
+
112
+ /** An immutable read of the media element, pushed on media events only. */
113
+ export interface MediaSnapshot {
114
+ phase: MediaPhase;
115
+ currentTime: number;
116
+ duration: number;
117
+ errorMessage: string;
118
+ }
119
+
120
+ const IDLE_SNAPSHOT: MediaSnapshot = {
121
+ phase: 'idle',
122
+ currentTime: 0,
123
+ duration: 0,
124
+ errorMessage: '',
125
+ };
126
+
127
+ // Monotonic per module load; see `transcriptId`.
128
+ let TRANSCRIPT_SEQ = 0;
129
+
130
+ const EMPTY_TRACKS: readonly MediaTrackSpec[] = [];
131
+ const EMPTY_CUES: readonly TranscriptCue[] = [];
132
+
133
+ // The four `MediaError` codes, in plain language. The browser's own
134
+ // `message` is empty in most engines, so a mapping is not a nicety.
135
+ const MEDIA_ERROR_TEXT: Record<number, string> = {
136
+ 1: 'Playback was stopped before the media finished loading.',
137
+ 2: 'The network dropped while the media was loading.',
138
+ 3: 'The media is damaged, or uses a codec this browser cannot decode.',
139
+ 4: 'This media format or address cannot be played here.',
140
+ };
141
+
142
+ /** An ISO-8601 duration for `<time datetime>`, so a transcript timestamp is
143
+ * machine-readable and not just ink. */
144
+ export function isoMediaTime(seconds: number): string {
145
+ const whole = Math.max(0, Math.floor(seconds));
146
+ const hours = Math.floor(whole / 3600);
147
+ const mins = Math.floor(whole / 60) % 60;
148
+ const secs = whole % 60;
149
+ return `PT${hours}H${mins}M${secs}S`;
150
+ }
151
+
152
+ // A caller string lands in a custom property, so it is filtered rather than
153
+ // trusted: digits, dot, slash and space are everything `aspect-ratio` needs,
154
+ // and nothing in that set can close a declaration.
155
+ const ASPECT_ALLOWED = /[^0-9./ ]/g;
156
+ function safeAspect(value: string | undefined): string {
157
+ const cleaned = (value ?? '').replace(ASPECT_ALLOWED, '').trim();
158
+ return cleaned.length > 0 ? cleaned : '16 / 9';
159
+ }
160
+
161
+ // ── The one modifier: element capture + event subscription ───────────────
162
+ //
163
+ // Everything this player knows about playback arrives on media events —
164
+ // there is no polling and no frame loop, because event-driven state is
165
+ // preferred wherever it exists. The modifier
166
+ // owns the listeners and removes every one of them in its destructor.
167
+ //
168
+ // It deliberately does NOT push a snapshot on install: a modifier body runs
169
+ // inside the render transaction, and a tracked write there is the
170
+ // backtracking-rerender assertion. The first real snapshot arrives with
171
+ // `loadedmetadata`, a few milliseconds later, and `IDLE_SNAPSHOT` is a
172
+ // truthful description of the gap.
173
+ const BASE_EVENTS = [
174
+ 'loadedmetadata',
175
+ 'durationchange',
176
+ 'canplay',
177
+ 'play',
178
+ 'playing',
179
+ 'pause',
180
+ 'ended',
181
+ 'waiting',
182
+ 'stalled',
183
+ 'emptied',
184
+ 'error',
185
+ ];
186
+ const TIME_EVENTS = ['timeupdate', 'seeked'];
187
+
188
+ function readSnapshot(el: HTMLMediaElement): MediaSnapshot {
189
+ const failure = el.error;
190
+ const currentTime = Number.isFinite(el.currentTime) ? el.currentTime : 0;
191
+ const duration = Number.isFinite(el.duration) ? el.duration : 0;
192
+ if (failure) {
193
+ return {
194
+ phase: 'error',
195
+ currentTime,
196
+ duration,
197
+ errorMessage:
198
+ MEDIA_ERROR_TEXT[failure.code] ?? 'This media could not be played.',
199
+ };
200
+ }
201
+ let phase: MediaPhase;
202
+ if (el.ended) {
203
+ phase = 'ended';
204
+ } else if (el.readyState < 1 && el.networkState === 2) {
205
+ phase = 'loading';
206
+ } else if (!el.paused && el.readyState < 3) {
207
+ phase = 'buffering';
208
+ } else if (el.paused) {
209
+ phase = el.readyState < 1 ? 'idle' : 'paused';
210
+ } else {
211
+ phase = 'playing';
212
+ }
213
+ return { phase, currentTime, duration, errorMessage: '' };
214
+ }
215
+
216
+ const mediaBridge = modifier(
217
+ (
218
+ el: HTMLMediaElement,
219
+ [onElement, onSnapshot, withTime]: [
220
+ (media: HTMLMediaElement | null) => void,
221
+ (snapshot: MediaSnapshot) => void,
222
+ boolean,
223
+ ],
224
+ ) => {
225
+ // Untracked write, so this is safe inside the render transaction.
226
+ onElement(el);
227
+ const push = () => onSnapshot(readSnapshot(el));
228
+ const names = withTime ? BASE_EVENTS.concat(TIME_EVENTS) : BASE_EVENTS;
229
+ for (const name of names) {
230
+ el.addEventListener(name, push);
231
+ }
232
+ return () => {
233
+ for (const name of names) {
234
+ el.removeEventListener(name, push);
235
+ }
236
+ onElement(null);
237
+ };
238
+ },
239
+ );
240
+
241
+ // ── MediaPlayer ──────────────────────────────────────────────────────────
242
+
243
+ export interface MediaPlayerSignature {
244
+ Args: {
245
+ /** URL of the media. Passed through untouched — the player never builds
246
+ * or revokes an object URL, so a blob URL stays the caller's to revoke. */
247
+ src?: string;
248
+ /** `'video'` (default) or `'audio'`. Audio mode lays the transport out
249
+ * in normal flow instead of over a picture. */
250
+ kind?: MediaKind;
251
+ /** Accessible name for the player region, and the heading when one is
252
+ * shown. Strongly recommended: an unnamed region is a dead end for a
253
+ * screen-reader user moving by landmark. */
254
+ label?: string;
255
+ /** Poster image for video. Also the thing that makes the reserved space
256
+ * useful rather than merely blank. */
257
+ poster?: string;
258
+ /** A tiny inline placeholder (data URI or blurhash-style image) painted
259
+ * under the poster while the poster itself loads. */
260
+ placeholder?: string;
261
+ /** Aspect ratio for the stage, as a CSS `aspect-ratio` value. Reserved
262
+ * from the first paint so nothing reflows (Law 8's corollary).
263
+ * @default '16 / 9' */
264
+ aspectRatio?: string;
265
+ /** Text tracks. Captions/subtitles get a captions button; descriptions
266
+ * and chapters ride along for the browser and the scrubber. */
267
+ tracks?: readonly MediaTrackSpec[];
268
+ /** URL of a WebVTT thumbnails track. Present ⇒ the scrubber shows a
269
+ * preview image while seeking. */
270
+ thumbnails?: string;
271
+ /** A seekable transcript. Rendered in a native `<details>`; the cue
272
+ * containing the playhead carries `aria-current`. */
273
+ transcript?: readonly TranscriptCue[];
274
+ /** Open the transcript disclosure on first paint. @default false */
275
+ transcriptOpen?: boolean;
276
+ /** Turn on the first subtitles track without the reader asking.
277
+ * @default false */
278
+ captionsDefault?: boolean;
279
+ /** How much chrome to wear. `'none'` renders an empty bar for the
280
+ * `<:controls>` block to fill. @default 'full' */
281
+ chrome?: MediaChrome;
282
+ /** Seconds for the skip buttons and the ←/→ hotkeys. @default 10 */
283
+ seekOffset?: number;
284
+ /** Let the controls fade out during playback (Media Chrome's own
285
+ * default, which Pretui inverts). Focus always brings them back.
286
+ * @default false */
287
+ autoHide?: boolean;
288
+ /** Loop the media. @default false */
289
+ loop?: boolean;
290
+ /** Start muted. Not autoplay — there is no autoplay here. @default false */
291
+ muted?: boolean;
292
+ /** `<video preload>`. @default 'metadata' */
293
+ preload?: 'none' | 'metadata' | 'auto';
294
+ /** `crossorigin` on the media element. Cross-origin `<track>` files
295
+ * need `'anonymous'` here or the browser drops them silently. */
296
+ crossOrigin?: 'anonymous' | 'use-credentials';
297
+ /** Hide the status line under the transport. The line is the text
298
+ * channel for buffering and error state — turn it off only when the
299
+ * host shows the same thing elsewhere. @default false */
300
+ quietStatus?: boolean;
301
+ /** Fires on every media event with the current snapshot. */
302
+ onSnapshot?: (snapshot: MediaSnapshot) => void;
303
+ };
304
+ Blocks: {
305
+ /** Floats over the picture, top-left: a live pill, a rights badge. Not
306
+ * pointer-interactive by default so it never steals a click from the
307
+ * gesture layer — set `pointer-events: auto` on your own control. */
308
+ overlay: [];
309
+ /** Appended INSIDE the control bar, just before fullscreen. Combine
310
+ * with `@chrome='none'` to own the bar completely. */
311
+ controls: [];
312
+ /** Under the transport, above the transcript. */
313
+ footer: [];
314
+ };
315
+ Element: HTMLDivElement;
316
+ }
317
+
318
+ interface TranscriptRow {
319
+ index: number;
320
+ start: number;
321
+ clock: string;
322
+ iso: string;
323
+ speaker: string;
324
+ text: string;
325
+ isActive: boolean;
326
+ }
327
+
328
+ export class MediaPlayer extends Component<MediaPlayerSignature> {
329
+ /** Snapshot of the media element. Written only from media events, which
330
+ * are asynchronous — never during render. */
331
+ @tracked private snapshot: MediaSnapshot = IDLE_SNAPSHOT;
332
+
333
+ /** Plain field on purpose: it is a handle for event handlers to act on,
334
+ * never something the template reads, so making it tracked would turn
335
+ * every install into a re-render dependency. */
336
+ private media: HTMLMediaElement | null = null;
337
+
338
+ private takeElement = (media: HTMLMediaElement | null) => {
339
+ this.media = media;
340
+ };
341
+
342
+ private takeSnapshot = (snapshot: MediaSnapshot) => {
343
+ this.snapshot = snapshot;
344
+ this.args.onSnapshot?.(snapshot);
345
+ };
346
+
347
+ seekTo = (seconds: number) => {
348
+ const media = this.media;
349
+ if (media && Number.isFinite(seconds)) {
350
+ media.currentTime = Math.max(0, seconds);
351
+ }
352
+ };
353
+
354
+ // ── shape ──────────────────────────────────────────────────────────────
355
+
356
+ get kind(): MediaKind {
357
+ return this.args.kind ?? 'video';
358
+ }
359
+ get isAudio(): boolean {
360
+ return this.kind === 'audio';
361
+ }
362
+ get chrome(): MediaChrome {
363
+ return this.args.chrome ?? 'full';
364
+ }
365
+ get seekOffset(): number {
366
+ return this.args.seekOffset ?? 10;
367
+ }
368
+ get seekOffsetText(): string {
369
+ return String(this.seekOffset);
370
+ }
371
+ get preload(): string {
372
+ return this.args.preload ?? 'metadata';
373
+ }
374
+ get hostStyle(): SafeString {
375
+ return htmlSafe(`--pretui-media-aspect: ${safeAspect(this.args.aspectRatio)}`);
376
+ }
377
+
378
+ // Boolean attributes, and the trap under them. Glimmer binds a dynamic
379
+ // attribute through the PROPERTY when the element has one — and every
380
+ // name here is a property: `details.open`, `video.loop`, `video.muted`,
381
+ // and Media Chrome's own `audio`/`noautohide`/`defaultsubtitles`
382
+ // accessors. So the value has to be truthy as a *value*, not merely
383
+ // present as an attribute: `''` sets `el.open = ''`, which is false, and
384
+ // the element silently does nothing. `true` is correct on both paths —
385
+ // it sets the property, or writes `="true"`, which is present.
386
+ // (`false` would be wrong the other way: it writes the string "false",
387
+ // and a present attribute is true. Hence `undefined` to remove.)
388
+ private flag(wanted: boolean): true | undefined {
389
+ return wanted ? true : undefined;
390
+ }
391
+ get audioAttr(): true | undefined {
392
+ return this.flag(this.isAudio);
393
+ }
394
+ get noAutohideAttr(): true | undefined {
395
+ return this.flag(!(this.args.autoHide ?? false));
396
+ }
397
+ get defaultSubtitlesAttr(): true | undefined {
398
+ return this.flag(this.args.captionsDefault ?? false);
399
+ }
400
+ get loopAttr(): true | undefined {
401
+ return this.flag(this.args.loop ?? false);
402
+ }
403
+ get mutedAttr(): true | undefined {
404
+ return this.flag(this.args.muted ?? false);
405
+ }
406
+
407
+ // ── tracks ─────────────────────────────────────────────────────────────
408
+
409
+ get tracks(): readonly MediaTrackSpec[] {
410
+ return this.args.tracks ?? EMPTY_TRACKS;
411
+ }
412
+ get hasCaptions(): boolean {
413
+ return this.tracks.some((track) => {
414
+ const kind = track.kind ?? 'captions';
415
+ return kind === 'captions' || kind === 'subtitles';
416
+ });
417
+ }
418
+ get captionCount(): number {
419
+ return this.tracks.length;
420
+ }
421
+
422
+ // ── chrome presets ─────────────────────────────────────────────────────
423
+ // Four named steps rather than nine booleans (Law 7 wants named knobs, not
424
+ // a switchboard); anything finer is `@chrome='none'` plus `<:controls>`.
425
+
426
+ get showScrubber(): boolean {
427
+ return this.chrome !== 'none';
428
+ }
429
+ get showSkip(): boolean {
430
+ return this.chrome === 'full';
431
+ }
432
+ get showTime(): boolean {
433
+ return this.chrome === 'full' || this.chrome === 'compact';
434
+ }
435
+ get showVolume(): boolean {
436
+ return this.chrome === 'full' || this.chrome === 'compact';
437
+ }
438
+ get showRate(): boolean {
439
+ return this.chrome === 'full';
440
+ }
441
+ get showCaptions(): boolean {
442
+ return this.chrome !== 'none' && this.hasCaptions;
443
+ }
444
+ get showPip(): boolean {
445
+ return this.chrome === 'full' && !this.isAudio;
446
+ }
447
+ get showFullscreen(): boolean {
448
+ return this.chrome !== 'none' && !this.isAudio;
449
+ }
450
+
451
+ // ── status: the text channel ───────────────────────────────────────────
452
+
453
+ get phase(): MediaPhase {
454
+ return this.snapshot.phase;
455
+ }
456
+ get statusText(): string {
457
+ switch (this.phase) {
458
+ case 'loading':
459
+ return 'Loading media';
460
+ case 'buffering':
461
+ return 'Buffering';
462
+ case 'playing':
463
+ return 'Playing';
464
+ case 'paused':
465
+ return 'Paused';
466
+ case 'ended':
467
+ return 'Ended';
468
+ case 'error':
469
+ return this.snapshot.errorMessage;
470
+ default:
471
+ return 'Ready';
472
+ }
473
+ }
474
+ get statusGlyph(): string {
475
+ switch (this.phase) {
476
+ case 'loading':
477
+ case 'buffering':
478
+ return '···';
479
+ case 'playing':
480
+ return '▶';
481
+ case 'paused':
482
+ return '❚❚';
483
+ case 'ended':
484
+ return '■';
485
+ case 'error':
486
+ return '!';
487
+ default:
488
+ return '○';
489
+ }
490
+ }
491
+ get showStatus(): boolean {
492
+ return !(this.args.quietStatus ?? false);
493
+ }
494
+ /** The live region says one thing and says it rarely: a failure. Play,
495
+ * pause and seek are already announced by the transport buttons' own
496
+ * labels, and repeating them would be the "announces per keystroke"
497
+ * failure. */
498
+ get announcement(): string {
499
+ return this.phase === 'error' ? this.snapshot.errorMessage : '';
500
+ }
501
+ get durationText(): string {
502
+ return formatClock(this.snapshot.duration);
503
+ }
504
+
505
+ // ── transcript ─────────────────────────────────────────────────────────
506
+
507
+ get transcript(): readonly TranscriptCue[] {
508
+ return this.args.transcript ?? EMPTY_CUES;
509
+ }
510
+ get hasTranscript(): boolean {
511
+ return this.transcript.length > 0;
512
+ }
513
+ /** Subscribing to `timeupdate` costs a re-render four times a second, so
514
+ * it is only subscribed when something on screen actually moves with the
515
+ * playhead. */
516
+ get wantsTime(): boolean {
517
+ return this.hasTranscript;
518
+ }
519
+ /** Uncontrolled disclosure state: `undefined` means "@transcriptOpen
520
+ * still applies", so a caller flipping the arg is still obeyed until the
521
+ * reader touches the toggle. */
522
+ @tracked private transcriptToggled: boolean | undefined = undefined;
523
+
524
+ get transcriptExpanded(): boolean {
525
+ return this.transcriptToggled ?? (this.args.transcriptOpen ?? false);
526
+ }
527
+ toggleTranscript = () => {
528
+ this.transcriptToggled = !this.transcriptExpanded;
529
+ };
530
+ /** A per-instance id for `aria-controls`. A module counter, not a random
531
+ * or a timestamp — both are forbidden, and neither is needed: the id has
532
+ * to be unique in a document, not unguessable. */
533
+ private uid = ++TRANSCRIPT_SEQ;
534
+ get transcriptId(): string {
535
+ return `pretui-transcript-${this.uid}`;
536
+ }
537
+ get transcriptRows(): TranscriptRow[] {
538
+ const now = this.snapshot.currentTime;
539
+ return this.transcript.map((cue, index) => ({
540
+ index,
541
+ start: cue.start,
542
+ clock: formatClock(cue.start),
543
+ iso: isoMediaTime(cue.start),
544
+ speaker: cue.speaker ?? '',
545
+ text: cue.text,
546
+ isActive: now >= cue.start && now < cue.end,
547
+ }));
548
+ }
549
+ get transcriptSummary(): string {
550
+ const count = this.transcript.length;
551
+ return count === 1 ? '1 line' : `${count} lines`;
552
+ }
553
+
554
+ <template>
555
+ <div
556
+ class='pretui-media'
557
+ role={{if @label 'region'}}
558
+ aria-label={{@label}}
559
+ style={{this.hostStyle}}
560
+ data-kind={{this.kind}}
561
+ data-phase={{this.phase}}
562
+ data-test-pretui-media-player
563
+ ...attributes
564
+ >
565
+ <media-controller
566
+ class='pretui-media-stage'
567
+ audio={{this.audioAttr}}
568
+ noautohide={{this.noAutohideAttr}}
569
+ defaultsubtitles={{this.defaultSubtitlesAttr}}
570
+ keyboardforwardseekoffset={{this.seekOffsetText}}
571
+ keyboardbackwardseekoffset={{this.seekOffsetText}}
572
+ data-test-pretui-media-controller
573
+ >
574
+ {{#if this.isAudio}}
575
+ <audio
576
+ slot='media'
577
+ aria-label={{@label}}
578
+ src={{@src}}
579
+ preload={{this.preload}}
580
+ crossorigin={{@crossOrigin}}
581
+ loop={{this.loopAttr}}
582
+ muted={{this.mutedAttr}}
583
+ data-test-pretui-media-element
584
+ {{mediaBridge this.takeElement this.takeSnapshot this.wantsTime}}
585
+ >
586
+ {{#each this.tracks as |part|}}
587
+ <track
588
+ kind={{if part.kind part.kind 'captions'}}
589
+ src={{part.src}}
590
+ srclang={{part.srclang}}
591
+ label={{part.label}}
592
+ default={{if part.isDefault true}}
593
+ />
594
+ {{/each}}
595
+ </audio>
596
+ {{else}}
597
+ <video
598
+ slot='media'
599
+ aria-label={{@label}}
600
+ src={{@src}}
601
+ preload={{this.preload}}
602
+ crossorigin={{@crossOrigin}}
603
+ loop={{this.loopAttr}}
604
+ muted={{this.mutedAttr}}
605
+ playsinline
606
+ data-test-pretui-media-element
607
+ {{mediaBridge this.takeElement this.takeSnapshot this.wantsTime}}
608
+ >
609
+ {{#each this.tracks as |part|}}
610
+ <track
611
+ kind={{if part.kind part.kind 'captions'}}
612
+ src={{part.src}}
613
+ srclang={{part.srclang}}
614
+ label={{part.label}}
615
+ default={{if part.isDefault true}}
616
+ />
617
+ {{/each}}
618
+ {{#if @thumbnails}}
619
+ <track kind='metadata' label='thumbnails' src={{@thumbnails}} />
620
+ {{/if}}
621
+ </video>
622
+ {{/if}}
623
+
624
+ {{#unless this.isAudio}}
625
+ {{#if @poster}}
626
+ <media-poster-image
627
+ slot='poster'
628
+ src={{@poster}}
629
+ placeholdersrc={{@placeholder}}
630
+ ></media-poster-image>
631
+ {{/if}}
632
+ <media-loading-indicator
633
+ slot='centered-chrome'
634
+ noautohide
635
+ ></media-loading-indicator>
636
+ {{/unless}}
637
+
638
+ <media-error-dialog></media-error-dialog>
639
+
640
+ {{! the overlay collapses to nothing when the block is empty — see
641
+ .pretui-media-overlay:empty, which is why the yield is written
642
+ flush against the tags }}
643
+ <div
644
+ class='pretui-media-overlay'
645
+ slot='centered-chrome'
646
+ >{{yield to='overlay'}}</div>
647
+
648
+ {{#if this.showScrubber}}
649
+ <media-control-bar class='pretui-media-scrub'>
650
+ <media-time-range></media-time-range>
651
+ </media-control-bar>
652
+ {{/if}}
653
+
654
+ <media-control-bar class='pretui-media-bar'>
655
+ {{#if this.showScrubber}}
656
+ <media-play-button></media-play-button>
657
+ {{/if}}
658
+ {{#if this.showSkip}}
659
+ <media-seek-backward-button
660
+ seekoffset={{this.seekOffsetText}}
661
+ ></media-seek-backward-button>
662
+ <media-seek-forward-button
663
+ seekoffset={{this.seekOffsetText}}
664
+ ></media-seek-forward-button>
665
+ {{/if}}
666
+ {{#if this.showTime}}
667
+ <media-time-display showduration></media-time-display>
668
+ {{/if}}
669
+ <span class='pretui-media-gap'></span>
670
+ <span class='pretui-media-slot'>{{yield to='controls'}}</span>
671
+ {{#if this.showCaptions}}
672
+ <media-captions-button></media-captions-button>
673
+ {{/if}}
674
+ {{#if this.showRate}}
675
+ <media-playback-rate-button
676
+ rates='0.5 1 1.25 1.5 2'
677
+ ></media-playback-rate-button>
678
+ {{/if}}
679
+ {{#if this.showVolume}}
680
+ <media-mute-button></media-mute-button>
681
+ <media-volume-range class='pretui-media-volume'></media-volume-range>
682
+ {{/if}}
683
+ {{#if this.showPip}}
684
+ <media-pip-button></media-pip-button>
685
+ {{/if}}
686
+ {{#if this.showFullscreen}}
687
+ <media-fullscreen-button></media-fullscreen-button>
688
+ {{/if}}
689
+ </media-control-bar>
690
+ </media-controller>
691
+
692
+ {{#if this.showStatus}}
693
+ <p class='pretui-media-status' data-test-pretui-media-status>
694
+ <span class='pretui-media-statusGlyph' aria-hidden='true'>{{this.statusGlyph}}</span>
695
+ <span class='pretui-media-statusText'>{{this.statusText}}</span>
696
+ {{#if this.snapshot.duration}}
697
+ <span class='pretui-media-statusDur'>{{this.durationText}}</span>
698
+ {{/if}}
699
+ </p>
700
+ {{/if}}
701
+
702
+ {{! always present, always empty until a load fails — an aria-live
703
+ element inserted with text already in it is not reliably announced }}
704
+ <p
705
+ class='pretui-media-live'
706
+ role='status'
707
+ aria-live='polite'
708
+ >{{this.announcement}}</p>
709
+
710
+ <div class='pretui-media-footer'>{{yield to='footer'}}</div>
711
+
712
+ {{! An APG disclosure rather than <details>/<summary>, and NOT by
713
+ preference: realm lint's `no-nested-interactive` counts <details>
714
+ as interactive and rejects any <button> inside it, cue buttons
715
+ included. The platform element would have been the better answer
716
+ (platform behaviour before JS re-implementation) — it
717
+ is unavailable here, so the replacement carries the full
718
+ contract instead: a real button, aria-expanded, aria-controls,
719
+ and a region that stays in the DOM and hides with `hidden`, so
720
+ the id aria-controls names always resolves. }}
721
+ {{#if this.hasTranscript}}
722
+ <div
723
+ class='pretui-media-transcript'
724
+ data-open={{if this.transcriptExpanded 'true' 'false'}}
725
+ data-test-pretui-media-transcript
726
+ >
727
+ <button
728
+ type='button'
729
+ class='pretui-media-transcriptHead'
730
+ aria-expanded={{if this.transcriptExpanded 'true' 'false'}}
731
+ aria-controls={{this.transcriptId}}
732
+ data-test-pretui-media-transcript-toggle
733
+ {{on 'click' this.toggleTranscript}}
734
+ >
735
+ <span class='pretui-media-transcriptCaret' aria-hidden='true'>▸</span>
736
+ <span class='pretui-media-transcriptTitle'>Transcript</span>
737
+ <span class='pretui-media-transcriptCount'>{{this.transcriptSummary}}</span>
738
+ </button>
739
+ <ol
740
+ class='pretui-media-cues'
741
+ id={{this.transcriptId}}
742
+ hidden={{unless this.transcriptExpanded true}}
743
+ >
744
+ {{#each this.transcriptRows key='index' as |row|}}
745
+ <li class='pretui-media-cue'>
746
+ <button
747
+ type='button'
748
+ class='pretui-media-cueBtn'
749
+ aria-current={{if row.isActive 'true'}}
750
+ data-active={{if row.isActive 'true'}}
751
+ data-test-pretui-media-cue
752
+ {{on 'click' (fn this.seekTo row.start)}}
753
+ >
754
+ <span class='pretui-media-cueClock'>{{row.clock}}</span>
755
+ <span class='pretui-media-cueBody'>
756
+ {{#if row.speaker}}<span
757
+ class='pretui-media-cueSpeaker'
758
+ >{{row.speaker}}</span>{{/if}}
759
+ <span class='pretui-media-cueText'>{{row.text}}</span>
760
+ </span>
761
+ </button>
762
+ </li>
763
+ {{/each}}
764
+ </ol>
765
+ </div>
766
+ {{/if}}
767
+ </div>
768
+
769
+ <style scoped>
770
+ @layer PretComponent {
771
+ /* ── The token bridge ────────────────────────────────────────────
772
+ Media Chrome is themed ONLY through --media-* custom properties,
773
+ which is the one channel that crosses a shadow boundary. Every
774
+ value below is a Pretui token with a light-value fallback, so the
775
+ player re-tints with a theme it has never seen and there is not
776
+ one dark branch in this file. */
777
+ .pretui-media {
778
+ --pretui-media-aspect: 16 / 9;
779
+ --pretui-media-ink: var(--card);
780
+ --pretui-media-scrim: color-mix(
781
+ in oklch,
782
+ var(--foreground) 62%,
783
+ transparent
784
+ );
785
+ --pretui-media-radius: var(--radius);
786
+
787
+ --media-font-family: var(--font-sans);
788
+ --media-font-size: var(--text-ui-sm, 11.5px);
789
+ --media-font-weight: 500;
790
+ --media-primary-color: var(--pretui-media-ink, var(--boxel-light));
791
+ --media-secondary-color: transparent;
792
+ --media-control-background: transparent;
793
+ --media-control-hover-background: color-mix(
794
+ in oklch,
795
+ var(--pretui-media-ink, var(--boxel-light)) 18%,
796
+ transparent
797
+ );
798
+ --media-control-height: 16px;
799
+ --media-control-padding: 8px;
800
+ --media-focus-box-shadow: inset 0 0 0 2px var(--ring);
801
+ --media-range-track-height: 4px;
802
+ --media-range-track-border-radius: 999px;
803
+ --media-range-track-background: color-mix(
804
+ in oklch,
805
+ var(--pretui-media-ink, var(--boxel-light)) 26%,
806
+ transparent
807
+ );
808
+ --media-range-bar-color: var(--primary);
809
+ --media-time-range-buffered-color: color-mix(
810
+ in oklch,
811
+ var(--pretui-media-ink, var(--boxel-light)) 42%,
812
+ transparent
813
+ );
814
+ --media-range-thumb-background: var(--pretui-media-ink, var(--boxel-light));
815
+ --media-range-thumb-width: 12px;
816
+ --media-range-thumb-height: 12px;
817
+ --media-tooltip-background: var(--popover);
818
+ --media-tooltip-border-radius: var(--radius-sm, 6px);
819
+ --media-object-fit: contain;
820
+
821
+ container-type: inline-size;
822
+ display: flex;
823
+ flex-direction: column;
824
+ gap: 8px;
825
+ min-width: 0;
826
+ font-family: var(--font-sans);
827
+ }
828
+
829
+ /* Audio wears the page's ink, because its transport sits on the page
830
+ rather than over a picture. One property flip, no second theme. */
831
+ .pretui-media[data-kind='audio'] {
832
+ --pretui-media-ink: var(--foreground);
833
+ --media-control-hover-background: var(
834
+ --hover,
835
+ color-mix(in oklch, var(--foreground) 8%, transparent)
836
+ );
837
+ }
838
+
839
+ .pretui-media-stage {
840
+ --media-background-color: color-mix(
841
+ in oklch,
842
+ var(--foreground) 92%,
843
+ var(--card)
844
+ );
845
+ aspect-ratio: var(--pretui-media-aspect);
846
+ width: 100%;
847
+ overflow: hidden;
848
+ border-radius: var(--pretui-media-radius);
849
+ box-shadow: var(--pretui-shadow-card, 0 0 0 1px var(--border));
850
+ }
851
+
852
+ .pretui-media[data-kind='audio'] .pretui-media-stage {
853
+ --media-background-color: transparent;
854
+ aspect-ratio: auto;
855
+ background: var(--card);
856
+ padding: 4px 4px 2px;
857
+ }
858
+
859
+ /* Law 8 — the picture is judged in a still frame, so the transport
860
+ gets a legible ground rather than relying on the video being dark
861
+ under it. A gradient, not a bar: the picture keeps its edge. */
862
+ .pretui-media[data-kind='video'] .pretui-media-bar,
863
+ .pretui-media[data-kind='video'] .pretui-media-scrub {
864
+ background: linear-gradient(
865
+ to top,
866
+ var(--pretui-media-scrim),
867
+ transparent
868
+ );
869
+ }
870
+ .pretui-media[data-kind='video'] .pretui-media-scrub {
871
+ background: none;
872
+ padding-bottom: 0;
873
+ }
874
+
875
+ .pretui-media-bar {
876
+ --media-control-bar-display: flex;
877
+ align-items: center;
878
+ gap: 2px;
879
+ padding: 4px 6px 6px;
880
+ }
881
+ .pretui-media-scrub {
882
+ padding: 0 6px;
883
+ }
884
+ .pretui-media-scrub media-time-range {
885
+ width: 100%;
886
+ }
887
+ .pretui-media-gap {
888
+ flex: 1 1 auto;
889
+ }
890
+ /* display: contents so an unfilled slot adds no box to the flex row */
891
+ .pretui-media-slot {
892
+ display: contents;
893
+ }
894
+ .pretui-media-volume {
895
+ width: 68px;
896
+ }
897
+
898
+ /* A control that is focusable and invisible is worse
899
+ than no control. When a caller opts into auto-hide, focus brings the
900
+ bar straight back. Rules in the outer tree beat the shadow root's
901
+ ::slotted() rules on a slotted child, so this needs no !important
902
+ and no :deep(). */
903
+ .pretui-media-stage:focus-within .pretui-media-bar,
904
+ .pretui-media-stage:focus-within .pretui-media-scrub {
905
+ opacity: 1;
906
+ pointer-events: auto;
907
+ visibility: visible;
908
+ }
909
+
910
+ .pretui-media-overlay {
911
+ display: flex;
912
+ align-self: start;
913
+ justify-self: start;
914
+ gap: 6px;
915
+ margin: 8px;
916
+ pointer-events: none;
917
+ }
918
+ .pretui-media-overlay:empty {
919
+ display: none;
920
+ }
921
+
922
+ /* ── the text channel ─────────────────────────────────────────── */
923
+ .pretui-media-status {
924
+ display: flex;
925
+ align-items: baseline;
926
+ gap: 8px;
927
+ margin: 0;
928
+ min-height: 1.4em;
929
+ font-size: var(--text-ui-sm, 11.5px);
930
+ color: var(--muted-foreground);
931
+ }
932
+ .pretui-media-statusGlyph {
933
+ font-size: 9px;
934
+ line-height: 1;
935
+ color: var(--muted-foreground);
936
+ }
937
+ .pretui-media-statusText {
938
+ min-width: 0;
939
+ }
940
+ .pretui-media[data-phase='error'] .pretui-media-statusText,
941
+ .pretui-media[data-phase='error'] .pretui-media-statusGlyph {
942
+ color: var(--pretui-destructive-ink, var(--boxel-danger));
943
+ font-weight: 600;
944
+ }
945
+ .pretui-media-statusDur {
946
+ margin-inline-start: auto;
947
+ font-variant-numeric: tabular-nums;
948
+ letter-spacing: 0.01em;
949
+ }
950
+ .pretui-media-live {
951
+ position: absolute;
952
+ width: 1px;
953
+ height: 1px;
954
+ margin: -1px;
955
+ padding: 0;
956
+ overflow: hidden;
957
+ clip-path: inset(50%);
958
+ white-space: nowrap;
959
+ }
960
+ .pretui-media-footer:empty {
961
+ display: none;
962
+ }
963
+
964
+ /* ── transcript ───────────────────────────────────────────────── */
965
+ .pretui-media-transcript {
966
+ border-radius: var(--radius);
967
+ box-shadow: var(--pretui-shadow-hairline, 0 0 0 1px var(--border));
968
+ background: var(--card);
969
+ }
970
+ .pretui-media-transcriptHead {
971
+ display: flex;
972
+ align-items: baseline;
973
+ gap: 10px;
974
+ width: 100%;
975
+ padding: 8px 12px;
976
+ margin: 0;
977
+ border: 0;
978
+ background: transparent;
979
+ cursor: pointer;
980
+ font-family: inherit;
981
+ font-size: var(--text-ui-sm, 11.5px);
982
+ font-weight: 600;
983
+ letter-spacing: 0.06em;
984
+ text-align: start;
985
+ text-transform: uppercase;
986
+ color: var(--foreground);
987
+ border-radius: var(--radius);
988
+ }
989
+ .pretui-media-transcriptHead:hover {
990
+ background: var(
991
+ --hover,
992
+ color-mix(in oklch, var(--foreground) 5%, transparent)
993
+ );
994
+ }
995
+ .pretui-media-transcriptHead:focus-visible {
996
+ outline: 2px solid var(--ring);
997
+ outline-offset: -2px;
998
+ }
999
+ /* The caret turns because the disclosure changed state — Law 5's
1000
+ "encodes a state transition", and the end state under reduced
1001
+ motion is simply the turned caret. */
1002
+ .pretui-media-transcriptCaret {
1003
+ display: inline-block;
1004
+ font-size: 9px;
1005
+ color: var(--muted-foreground);
1006
+ transition: rotate 140ms ease;
1007
+ }
1008
+ .pretui-media-transcript[data-open='true'] .pretui-media-transcriptCaret {
1009
+ rotate: 90deg;
1010
+ }
1011
+ .pretui-media-transcriptCount {
1012
+ font-weight: 400;
1013
+ letter-spacing: 0;
1014
+ text-transform: none;
1015
+ color: var(--muted-foreground);
1016
+ font-variant-numeric: tabular-nums;
1017
+ }
1018
+ .pretui-media-cues {
1019
+ list-style: none;
1020
+ margin: 0;
1021
+ padding: 0 6px 6px;
1022
+ max-height: 15rem;
1023
+ overflow-y: auto;
1024
+ }
1025
+ .pretui-media-cueBtn {
1026
+ display: flex;
1027
+ gap: 10px;
1028
+ width: 100%;
1029
+ padding: 5px 8px;
1030
+ border: 0;
1031
+ border-radius: var(--radius-sm, 6px);
1032
+ background: transparent;
1033
+ color: var(--foreground);
1034
+ font: inherit;
1035
+ font-size: var(--text-body, 14px);
1036
+ line-height: 1.5;
1037
+ text-align: start;
1038
+ cursor: pointer;
1039
+ }
1040
+ .pretui-media-cueBtn:hover {
1041
+ background: var(
1042
+ --hover,
1043
+ color-mix(in oklch, var(--foreground) 6%, transparent)
1044
+ );
1045
+ }
1046
+ .pretui-media-cueBtn:focus-visible {
1047
+ outline: 2px solid var(--ring);
1048
+ outline-offset: -2px;
1049
+ }
1050
+ /* The active cue is marked three ways — weight, a rule down the
1051
+ inline start, and aria-current — because state is never colour
1052
+ alone and this one has to survive greyscale. */
1053
+ .pretui-media-cueBtn[data-active='true'] {
1054
+ background: color-mix(
1055
+ in oklch,
1056
+ var(--primary) 10%,
1057
+ var(--card)
1058
+ );
1059
+ box-shadow: inset 2px 0 0 0 var(--primary);
1060
+ font-weight: 600;
1061
+ }
1062
+ .pretui-media-cueClock {
1063
+ flex: 0 0 auto;
1064
+ min-width: 4ch;
1065
+ font-family: var(--font-mono);
1066
+ font-size: var(--text-ui-sm, 11.5px);
1067
+ font-variant-numeric: tabular-nums;
1068
+ color: var(--muted-foreground);
1069
+ padding-top: 0.15em;
1070
+ }
1071
+ .pretui-media-cueBody {
1072
+ min-width: 0;
1073
+ }
1074
+ .pretui-media-cueSpeaker {
1075
+ display: block;
1076
+ font-size: var(--text-ui-sm, 11.5px);
1077
+ font-weight: 600;
1078
+ letter-spacing: 0.04em;
1079
+ text-transform: uppercase;
1080
+ color: var(--muted-foreground);
1081
+ }
1082
+ .pretui-media-cueText {
1083
+ display: block;
1084
+ }
1085
+
1086
+ /* ── touch ────────────────────────────────────────────────────── */
1087
+ @media (any-pointer: coarse) {
1088
+ .pretui-media {
1089
+ --media-control-height: 22px;
1090
+ --media-control-padding: 11px;
1091
+ --media-range-thumb-width: 16px;
1092
+ --media-range-thumb-height: 16px;
1093
+ }
1094
+ .pretui-media-cueBtn {
1095
+ padding: 11px 8px;
1096
+ }
1097
+ }
1098
+
1099
+ /* ── narrow panes ─────────────────────────────────────────────
1100
+ Unnamed container query only: a named one silently deletes every
1101
+ rule after it. Rules match descendants of the container, never the
1102
+ container element itself. */
1103
+ @container (max-width: 420px) {
1104
+ .pretui-media-volume {
1105
+ display: none;
1106
+ }
1107
+ .pretui-media-statusDur {
1108
+ display: none;
1109
+ }
1110
+ }
1111
+
1112
+ /* ── Law 5 ────────────────────────────────────────────────────
1113
+ Reduced motion lands on the END state: the transport stops
1114
+ transitioning, and the spinner — which cannot be slowed from out
1115
+ here, it lives in a shadow root — is replaced by the text channel
1116
+ that is already on screen. */
1117
+ @media (prefers-reduced-motion: reduce) {
1118
+ .pretui-media {
1119
+ --media-control-transition-in: none;
1120
+ --media-control-transition-out: none;
1121
+ --media-range-thumb-transition: none;
1122
+ --media-range-track-transition: none;
1123
+ --media-loading-indicator-display: none;
1124
+ }
1125
+ .pretui-media-cueBtn,
1126
+ .pretui-media-transcriptCaret {
1127
+ transition: none;
1128
+ }
1129
+ }
1130
+ }
1131
+ </style>
1132
+ </template>
1133
+ }