@cardstack/boxel-cli 0.12.0 → 0.13.0-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 (178) hide show
  1. package/bundled-realms/pretui/components/chip.gts +47 -2
  2. package/bundled-realms/pretui/components/chip.md +5 -2
  3. package/bundled-realms/pretui/components/chip.usage.gts +37 -2
  4. package/bundled-realms/pretui/components/status-chip.gts +12 -2
  5. package/bundled-realms/pretui/components/status-chip.md +2 -1
  6. package/bundled-realms/pretui/components/status-chip.usage.gts +2 -0
  7. package/bundled-test-harness/assets/{ai-module-creation-test-B9lSKNq1.js → ai-module-creation-test-Czsh1MyP.js} +1 -1
  8. package/bundled-test-harness/assets/{aibot-message-LXV0UlzI.js → aibot-message-Dg5nzE1b.js} +1 -1
  9. package/bundled-test-harness/assets/{app-BIQcKrVT.js → app-hXF_bqWy.js} +6 -6
  10. package/bundled-test-harness/assets/{assistant-transcript-test-CG_2-bog.js → assistant-transcript-test-kILRv_pf.js} +1 -1
  11. package/bundled-test-harness/assets/{binary-upload-dedupe-test-Q7e6bzl1.js → binary-upload-dedupe-test-Bt5RqtEk.js} +1 -1
  12. package/bundled-test-harness/assets/{bundled-base-DldokUSJ.js → bundled-base-DtxlKFXx.js} +3 -3
  13. package/bundled-test-harness/assets/{bundled-base-modules-test-VAlRx4t3.js → bundled-base-modules-test-D1fXHMTE.js} +1 -1
  14. package/bundled-test-harness/assets/{can-invoke-test-BGmUJHxo.js → can-invoke-test-DqBuecdl.js} +1 -1
  15. package/bundled-test-harness/assets/{card-chooser-paging-test-CzooKL4I.js → card-chooser-paging-test-Cf8r032c.js} +1 -1
  16. package/bundled-test-harness/assets/{card-chooser-test-C3fjaDYi.js → card-chooser-test-q_qnUKxi.js} +1 -1
  17. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-yqv8ir8Y.js → card-def-field-def-relationships-test-C5xkWMZi.js} +1 -1
  18. package/bundled-test-harness/assets/{card-delete-test-BtjqrqKO.js → card-delete-test-KB4aJuv_.js} +1 -1
  19. package/bundled-test-harness/assets/{chip-D6Xffhjx.css → chip-B2Ns53A6.css} +35 -9
  20. package/bundled-test-harness/assets/{chip-BydgljDL.js → chip-DVJE_YDh.js} +11 -3
  21. package/bundled-test-harness/assets/{choreo-D7dLCdGB.js → choreo-CIrop3HM.js} +16 -35
  22. package/bundled-test-harness/assets/choreo-Ca2Y2sF3.js +2 -0
  23. package/bundled-test-harness/assets/{choreo-feature-reel-test--x-L3ZKc.js → choreo-feature-reel-test-CJHms7Sf.js} +2 -2
  24. package/bundled-test-harness/assets/{choreo-gallery-ZO9vXOxd.js → choreo-gallery-DZm1KZ20.js} +3 -3
  25. package/bundled-test-harness/assets/{choreo-gallery-build-order-test-DG5UTyc9.js → choreo-gallery-build-order-test-QKyMWELN.js} +4 -4
  26. package/bundled-test-harness/assets/{choreo-gallery-compositor-test-DJP80SNj.js → choreo-gallery-compositor-test-BQDptxfE.js} +1 -1
  27. package/bundled-test-harness/assets/{choreo-gallery-cover-test-CHYz7sM4.js → choreo-gallery-cover-test-Do-HYF96.js} +1 -1
  28. package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-BuinlINr.js → choreo-gallery-crossing-stage-test-yJVXghRc.js} +10 -10
  29. package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-BjNCGfH9.js → choreo-gallery-demos-alive-test-BCeaaZye.js} +1 -1
  30. package/bundled-test-harness/assets/{choreo-gallery-drift-test-BJ17f3yv.js → choreo-gallery-drift-test-CJ1yq6R0.js} +1 -1
  31. package/bundled-test-harness/assets/{choreo-gallery-escort-test-Dadih8-S.js → choreo-gallery-escort-test-DypqSgvs.js} +1 -1
  32. package/bundled-test-harness/assets/{choreo-gallery-films-test-CCXty_WI.js → choreo-gallery-films-test-ClMy5M_p.js} +2 -2
  33. package/bundled-test-harness/assets/{choreo-gallery-filter-test-BozCoT_M.js → choreo-gallery-filter-test-CzOmgqgl.js} +1 -1
  34. package/bundled-test-harness/assets/{choreo-gallery-fold-test-Kez2P3_Y.js → choreo-gallery-fold-test-qNnH6wtC.js} +2 -2
  35. package/bundled-test-harness/assets/{choreo-gallery-guide-pages-test-BV5oxrYA.js → choreo-gallery-guide-pages-test-BtKWMkTv.js} +1 -1
  36. package/bundled-test-harness/assets/{choreo-gallery-guides-test-DwYBDgKi.js → choreo-gallery-guides-test-CXMsuDYi.js} +4 -3
  37. package/bundled-test-harness/assets/{choreo-gallery-hang-test-B-5u7cGJ.js → choreo-gallery-hang-test-BD4JQ04e.js} +2 -2
  38. package/bundled-test-harness/assets/{choreo-gallery-highlight-test-BZ5Lg8V6.js → choreo-gallery-highlight-test-BK280K2W.js} +2 -2
  39. package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-wSlSI-VM.js → choreo-gallery-inline-edit-test-DAgUcaaw.js} +2 -2
  40. package/bundled-test-harness/assets/{choreo-gallery-interruption-test-DBpCEiro.js → choreo-gallery-interruption-test-DY5KUilC.js} +4 -4
  41. package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-aMLrHsns.js → choreo-gallery-lone-stack-test-Dxd_Nb0-.js} +4 -4
  42. package/bundled-test-harness/assets/{choreo-gallery-navigation-test-B8b-2ZTz.js → choreo-gallery-navigation-test-DWJq12PN.js} +1 -1
  43. package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-B95CYBh7.js → choreo-gallery-playhead-transport-test-DlQ6yTKW.js} +1 -1
  44. package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-jZAAICV6.js → choreo-gallery-poplayout-subtree-test-D59W8gYt.js} +5 -5
  45. package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BawIKB-a.js → choreo-gallery-presence-modes-test-BAU-dggP.js} +2 -2
  46. package/bundled-test-harness/assets/{choreo-gallery-presentation-test-CYIb-8ML.js → choreo-gallery-presentation-test-BqGsinE0.js} +2 -2
  47. package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-C6Vi1WYr.js → choreo-gallery-reduced-motion-test-By0rb2Ai.js} +4 -3
  48. package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-_e4T5KDI.js → choreo-gallery-sheet-standalone-test-Cfw-4ULF.js} +2 -2
  49. package/bundled-test-harness/assets/{choreo-gallery-sheet-test-Cv51Te3G.js → choreo-gallery-sheet-test-dm53Pdzb.js} +2 -2
  50. package/bundled-test-harness/assets/{choreo-gallery-site-test-Cm35kHu_.js → choreo-gallery-site-test-SAlqtZgL.js} +3 -2
  51. package/bundled-test-harness/assets/{choreo-gallery-stage-Bp6QVqlI.js → choreo-gallery-stage-CU8LvQqX.js} +2 -2
  52. package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-DDX2cuMa.js → choreo-gallery-stage-keyboard-test-DQ4v5qA4.js} +2 -2
  53. package/bundled-test-harness/assets/{choreo-gallery-stages-test-Dfa_33_4.js → choreo-gallery-stages-test-CRvaS6w6.js} +2 -2
  54. package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-CgR3WdcT.js → choreo-gallery-subdivision-test-CtOm-U35.js} +3 -3
  55. package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-DF-cE3J9.js → choreo-gallery-table-plan-test-_0koIm2u.js} +1 -1
  56. package/bundled-test-harness/assets/{choreo-gallery-theater-test-BuIyb2ke.js → choreo-gallery-theater-test-yedwQVyP.js} +4 -4
  57. package/bundled-test-harness/assets/{choreo-gallery-tuning-test-BdZ45YBK.js → choreo-gallery-tuning-test-CmMtfJ5a.js} +1 -1
  58. package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-HcPX75Dg.js → choreo-gallery-widget-room-test-jnYOas5x.js} +2 -2
  59. package/bundled-test-harness/assets/{choreo-gallery-wires-test-BhFCIjB1.js → choreo-gallery-wires-test-CSyqjVnm.js} +2 -2
  60. package/bundled-test-harness/assets/clip--wioup_3.js +2 -0
  61. package/bundled-test-harness/assets/{clip-BmBVqUyU.js → clip-Cm32sLyn.js} +3 -3
  62. package/bundled-test-harness/assets/{codeblocks-test-DbZYlmG_.js → codeblocks-test-DLVRpBAl.js} +1 -1
  63. package/bundled-test-harness/assets/{compaction-test-D1G3KCSe.js → compaction-test-zX01t57K.js} +1 -1
  64. package/bundled-test-harness/assets/{container-XSX5809v.js → container-CXZoEvul.js} +10 -9
  65. package/bundled-test-harness/assets/{create-listing-modal-test--oGT9P_F.js → create-listing-modal-test-DPgVovcL.js} +1 -1
  66. package/bundled-test-harness/assets/{debug-message-test-C8UZUtCt.js → debug-message-test-CWl-ido2.js} +1 -1
  67. package/bundled-test-harness/assets/{externals--YMzwHwd.js → externals-Ddhtv753.js} +37 -37
  68. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-DPK_coJY.js → fallback-banner-live-delete-test-CFbMEFHo.js} +1 -1
  69. package/bundled-test-harness/assets/{fallback-banner-test-C2wi6Lu6.js → fallback-banner-test-3O0imkxJ.js} +1 -1
  70. package/bundled-test-harness/assets/{fallback-models-test-SqdXWB1Z.js → fallback-models-test-hyQfQLuM.js} +1 -1
  71. package/bundled-test-harness/assets/{file-attachment-test-DT0HK6yS.js → file-attachment-test-C63Ttyaj.js} +1 -1
  72. package/bundled-test-harness/assets/{film-Zt2YoVoG.js → film-9V69qBWw.js} +6 -6
  73. package/bundled-test-harness/assets/{film-77OfTGL7.js → film-Z87hSVo_.js} +8 -8
  74. package/bundled-test-harness/assets/film-h1N8vUjG.js +2 -0
  75. package/bundled-test-harness/assets/{formatted-aibot-message-test-B6i0k9wW.js → formatted-aibot-message-test-DH3WPvU1.js} +1 -1
  76. package/bundled-test-harness/assets/{general-test-C0Xb2Idr.js → general-test-wrSeNkrm.js} +1 -1
  77. package/bundled-test-harness/assets/{glimmer-motion-and-choreo-in-cards-test-DFlkZtek.js → glimmer-motion-and-choreo-in-cards-test-Byg3fSOY.js} +32 -32
  78. package/bundled-test-harness/assets/{glimmer-motion-and-choreo-test-B2ustNm9.js → glimmer-motion-and-choreo-test-BM7uX8k4.js} +10 -10
  79. package/bundled-test-harness/assets/group-Cgg5RLul.js +2 -0
  80. package/bundled-test-harness/assets/{group-BNxp6qON.js → group-DL-b_Hzj.js} +2 -2
  81. package/bundled-test-harness/assets/{index-query-engine-test-BKOqgBMv.js → index-query-engine-test-DvfKgn6s.js} +1 -1
  82. package/bundled-test-harness/assets/{instance-filter-matcher-test-CNIzKZvP.js → instance-filter-matcher-test-KqGi-K79.js} +1 -1
  83. package/bundled-test-harness/assets/item-Bu9hhPf2.js +2 -0
  84. package/bundled-test-harness/assets/{item-BDyVqxdA.js → item-CBEoTOyj.js} +2 -2
  85. package/bundled-test-harness/assets/{main-BiI-FhMc.js → main-CoUo04VF.js} +1 -1
  86. package/bundled-test-harness/assets/{markdown-preview-BItI_AEl.js → markdown-preview-D_QssEOi.js} +1 -1
  87. package/bundled-test-harness/assets/{markdown-preview-test-Bntyikh1.js → markdown-preview-test-nljzB8o_.js} +1 -1
  88. package/bundled-test-harness/assets/memory-B73-H_Rp.js +223 -0
  89. package/bundled-test-harness/assets/{model-cost-tier-test-Hu2-LpEw.js → model-cost-tier-test-B5ByLtAP.js} +1 -1
  90. package/bundled-test-harness/assets/{motion-DeM7UCtd.js → motion-BiMvMS08.js} +1 -1
  91. package/bundled-test-harness/assets/{node-BAM535H5.js → node-BWOLCOMI.js} +95 -6
  92. package/bundled-test-harness/assets/{operation-lowering-test-CG1gatuH.js → operation-lowering-test-Bz81V0Gt.js} +1 -1
  93. package/bundled-test-harness/assets/{operator-mode-card-chooser-test-Bo5ZnF_x.js → operator-mode-card-chooser-test-DNOnplV8.js} +1 -1
  94. package/bundled-test-harness/assets/{operator-mode-links-test-DVx_LQOU.js → operator-mode-links-test-BeXsOYMU.js} +1 -1
  95. package/bundled-test-harness/assets/{operator-mode-test-CCbFrYgN.js → operator-mode-test-jdeCXqhV.js} +1 -1
  96. package/bundled-test-harness/assets/{operator-mode-ui-test-Dm2Bf6Vn.js → operator-mode-ui-test-DdiFZylM.js} +1 -1
  97. package/bundled-test-harness/assets/{overlay-menu-items-test-Bk5AidFD.js → overlay-menu-items-test-C_Q4sJlC.js} +1 -1
  98. package/bundled-test-harness/assets/{overlays-CY7IgeOl.js → overlays-DZXjQykn.js} +3 -3
  99. package/bundled-test-harness/assets/{overlays-DhVKmSP-.js → overlays-hrAO43jG.js} +1 -1
  100. package/bundled-test-harness/assets/{panel-t9QyU1lY.js → panel-CXmB6GMs.js} +15 -75
  101. package/bundled-test-harness/assets/{panel-CUYJ8oHS.css → panel-D2zkZoIr.css} +39 -31
  102. package/bundled-test-harness/assets/{past-sessions-test-Dq-Y9T6W.js → past-sessions-test-Bm1UiLD0.js} +1 -1
  103. package/bundled-test-harness/assets/{permission-checking-realm-test-CuImx8ie.js → permission-checking-realm-test-Jq7R-yRT.js} +1 -1
  104. package/bundled-test-harness/assets/pill-menu-Ctn3JNqG.js +154 -0
  105. package/bundled-test-harness/assets/{pill-menu-test-kpWBGrX5.js → pill-menu-test-Cf2xO2w6.js} +1 -1
  106. package/bundled-test-harness/assets/plate-CnatwP3n.js +2 -0
  107. package/bundled-test-harness/assets/{plate-B4Lz2Ulo.js → plate-Cu5EnXQZ.js} +3 -3
  108. package/bundled-test-harness/assets/player-Bwn5tEsh.js +2 -0
  109. package/bundled-test-harness/assets/{player-B965XH82.js → player-CVdsx7Ng.js} +3 -3
  110. package/bundled-test-harness/assets/presence-BKkR2au7.js +553 -0
  111. package/bundled-test-harness/assets/presence-CcEXVges.js +2 -0
  112. package/bundled-test-harness/assets/{quick-look-test-VW5_W7dm.js → quick-look-test-BrnxRRsq.js} +1 -1
  113. package/bundled-test-harness/assets/{realm-api-keys-sg--fohv.js → realm-api-keys-CHPnfcko.js} +1 -1
  114. package/bundled-test-harness/assets/realm-api-keys-GLBmvu4U.js +2 -0
  115. package/bundled-test-harness/assets/{realm-api-keys-test-Cy7qSoAd.js → realm-api-keys-test-CHBGOFcx.js} +1 -1
  116. package/bundled-test-harness/assets/{realm-config-DvpP1xf-.js → realm-config-C7c3B2er.js} +1 -1
  117. package/bundled-test-harness/assets/{realm-config-policy-standing-test-DJk-ftgH.js → realm-config-policy-standing-test-C8aNeb6_.js} +1 -1
  118. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-CTPiJrAL.js → realm-config-routing-rule-edit-test-Dmnw-VQz.js} +1 -1
  119. package/bundled-test-harness/assets/{realm-config-settings-test-CUa-PjMC.js → realm-config-settings-test-C6V0Mx35.js} +1 -1
  120. package/bundled-test-harness/assets/{reasoning-test-CeeGGwvf.js → reasoning-test-Dn0Xb42V.js} +1 -1
  121. package/bundled-test-harness/assets/{rendered-markdown-B8TH0yN4.js → rendered-markdown-DPEXS7MQ.js} +1 -1
  122. package/bundled-test-harness/assets/{rendered-markdown-test-CBRsIBqW.js → rendered-markdown-test-DxbJ1nFX.js} +1 -1
  123. package/bundled-test-harness/assets/{room-message-test-BTxZ_W74.js → room-message-test-BBE8UIPX.js} +1 -1
  124. package/bundled-test-harness/assets/{run-BSEzn_PH.js → run-CfyzhBXb.js} +2 -2
  125. package/bundled-test-harness/assets/{scrolling-test-C7R0UASi.js → scrolling-test-sLBz7Gxv.js} +2 -2
  126. package/bundled-test-harness/assets/{searchable-option-test-BiOqxIIs.js → searchable-option-test-Ix9_H5QV.js} +1 -1
  127. package/bundled-test-harness/assets/{sending-test-DOXQ0Tvx.js → sending-test-_Pqzq1bN.js} +1 -1
  128. package/bundled-test-harness/assets/{skills-test-BjCYI4Z_.js → skills-test-DUHRQGiC.js} +1 -1
  129. package/bundled-test-harness/assets/src-CEw1V0fi.js +11 -0
  130. package/bundled-test-harness/assets/{src-Bhefkhqj.js → src-CbBcj3xm.js} +11 -5
  131. package/bundled-test-harness/assets/{src-BDDYD1rs.js → src-D8bpj2tb.js} +2 -2
  132. package/bundled-test-harness/assets/{src-DySBAkac.js → src-Df4Vutrk.js} +3 -3
  133. package/bundled-test-harness/assets/{stick-to-bottom-resize-test-hN0AjdXP.js → stick-to-bottom-resize-test-Du4B3w2x.js} +4 -4
  134. package/bundled-test-harness/assets/{store-test-BD99H9dQ.js → store-test-9C-s0-H6.js} +1 -1
  135. package/bundled-test-harness/assets/{test-support-BcjhIHQa.js → test-support-BOFeeYuE.js} +25 -2
  136. package/bundled-test-harness/assets/test-support-CXESl4Wf.js +3 -0
  137. package/bundled-test-harness/assets/test-support-CgWmpebE.js +3 -0
  138. package/bundled-test-harness/assets/{test-support-Dl6FChlV.js → test-support-xTaMuaOA.js} +4 -27
  139. package/bundled-test-harness/assets/{tests-BqLDuQog.js → tests-CVpu0hZj.js} +437 -437
  140. package/bundled-test-harness/assets/{text-input-validator-test-CW6Ay7bo.js → text-input-validator-test-CcVh-MFa.js} +1 -1
  141. package/bundled-test-harness/assets/{titles-CFt3dEls.js → titles-BUbpcMoe.js} +3 -3
  142. package/bundled-test-harness/assets/titles-D80DwOQU.js +2 -0
  143. package/bundled-test-harness/assets/{to-device-streaming-test-DRxNCi7Z.js → to-device-streaming-test-RFHD62PN.js} +1 -1
  144. package/bundled-test-harness/assets/{token-usage-test-Ck9rB3Ie.js → token-usage-test-B2iJC-UX.js} +1 -1
  145. package/bundled-test-harness/assets/{tools-test-B3zniq10.js → tools-test-BZOWfXML.js} +1 -1
  146. package/bundled-test-harness/assets/{turn-settling-test-C0X6hL7x.js → turn-settling-test-Cvu2rvzM.js} +1 -1
  147. package/bundled-test-harness/assets/{turn-summary-0XOoAv3j.js → turn-summary-CAZVdcBd.js} +1 -1
  148. package/bundled-test-harness/index.html +26 -25
  149. package/bundled-test-harness/tests/index.html +26 -25
  150. package/bundled-types/choreo/choreo.gts +21 -42
  151. package/bundled-types/choreo/test-support/index.ts +9 -30
  152. package/bundled-types/glimmer-motion/index.ts +11 -3
  153. package/bundled-types/glimmer-motion/memory.ts +302 -0
  154. package/bundled-types/glimmer-motion/node.ts +125 -14
  155. package/bundled-types/glimmer-motion/presence-types.ts +13 -5
  156. package/bundled-types/glimmer-motion/presence.gts +199 -11
  157. package/bundled-types/glimmer-motion/snapshot.ts +280 -0
  158. package/bundled-types/glimmer-motion/test-support/index.ts +36 -4
  159. package/bundled-types/host-app/components/ai-assistant/llm-select.gts +3 -0
  160. package/bundled-types/host-app/components/ai-assistant/skill-menu/index.gts +3 -0
  161. package/bundled-types/host-app/components/matrix/room.gts +15 -3
  162. package/bundled-types/host-app/components/pill-menu/index.gts +74 -23
  163. package/package.json +1 -1
  164. package/bundled-test-harness/assets/choreo-Cd9yKlEK.js +0 -2
  165. package/bundled-test-harness/assets/clip-DnEy6oK5.js +0 -2
  166. package/bundled-test-harness/assets/film-C4NJTl9U.js +0 -2
  167. package/bundled-test-harness/assets/group-CPQojb-T.js +0 -2
  168. package/bundled-test-harness/assets/item-DGzMAZ9K.js +0 -2
  169. package/bundled-test-harness/assets/pill-menu-DaRpDMUm.js +0 -68
  170. package/bundled-test-harness/assets/plate-B7JjCVMj.js +0 -2
  171. package/bundled-test-harness/assets/player-DpGXST02.js +0 -2
  172. package/bundled-test-harness/assets/presence-CmLmFwhO.js +0 -2
  173. package/bundled-test-harness/assets/presence-Sv4y4tQy.js +0 -230
  174. package/bundled-test-harness/assets/realm-api-keys-DkdlXgAg.js +0 -2
  175. package/bundled-test-harness/assets/src-BpmcuCfH.js +0 -10
  176. package/bundled-test-harness/assets/test-support-CB3auo8h.js +0 -2
  177. package/bundled-test-harness/assets/test-support-DfGKwg35.js +0 -3
  178. package/bundled-test-harness/assets/titles-DVhrJZzS.js +0 -2
@@ -8,6 +8,9 @@ import {
8
8
  type PretuiToneArg,
9
9
  } from '../pretui-primitives';
10
10
 
11
+ export const PRETUI_CHIP_APPEARANCES = ['outlined', 'soft', 'plain'] as const;
12
+ export type PretuiChipAppearance = (typeof PRETUI_CHIP_APPEARANCES)[number];
13
+
11
14
  export interface ChipSignature {
12
15
  Args: {
13
16
  label?: string;
@@ -16,6 +19,10 @@ export interface ChipSignature {
16
19
  /** neutral (the default) is the muted pill; any other tone is outlined in
17
20
  * that tone, with its -ink as the text */
18
21
  tone?: PretuiToneArg;
22
+ /** 'outlined' (the default) keeps the treatment above; 'soft' tints the
23
+ * fill with the tone and drops the ring; 'plain' drops the whole frame to
24
+ * dot + text, for dense tables and lists. The tone's -ink stays the text */
25
+ appearance?: PretuiChipAppearance;
19
26
  dot?: boolean;
20
27
  };
21
28
  Blocks: { default: [] };
@@ -23,12 +30,20 @@ export interface ChipSignature {
23
30
  }
24
31
 
25
32
  export class Chip extends Component<ChipSignature> {
33
+ // plain has no frame, so the dot always stays: never hue or fill alone
26
34
  get showDot() {
27
- return this.args.dot ?? true;
35
+ return this.appearance === 'plain' || (this.args.dot ?? true);
28
36
  }
29
37
  get tone(): PretuiTone {
30
38
  return resolveTone(this.args.tone, PRETUI_TONES, 'neutral');
31
39
  }
40
+ get appearance(): PretuiChipAppearance {
41
+ return resolveTone(
42
+ this.args.appearance,
43
+ PRETUI_CHIP_APPEARANCES,
44
+ 'outlined',
45
+ );
46
+ }
32
47
  get style() {
33
48
  return hueStyle('--pretui-chip-hue', this.args.hue);
34
49
  }
@@ -37,10 +52,14 @@ export class Chip extends Component<ChipSignature> {
37
52
  class='pretui-chip'
38
53
  style={{this.style}}
39
54
  data-tone={{this.tone}}
55
+ data-appearance={{this.appearance}}
40
56
  data-test-pretui-chip
41
57
  ...attributes
42
58
  >
43
- {{#if this.showDot}}<span class='pretui-chip-dot'></span>{{/if}}
59
+ {{#if this.showDot}}<span
60
+ class='pretui-chip-dot'
61
+ data-test-pretui-chip-dot
62
+ ></span>{{/if}}
44
63
  {{#if @label}}{{@label}}{{else}}{{yield}}{{/if}}
45
64
  </span>
46
65
  <style scoped>
@@ -95,34 +114,60 @@ export class Chip extends Component<ChipSignature> {
95
114
  }
96
115
  .pretui-chip[data-tone='primary'] {
97
116
  --pretui-chip-hue: var(--primary);
117
+ --pretui-chip-tone: var(--primary);
98
118
 
99
119
  color: var(--primary-ink);
100
120
  }
101
121
  .pretui-chip[data-tone='info'] {
102
122
  --pretui-chip-hue: var(--info);
123
+ --pretui-chip-tone: var(--info);
103
124
 
104
125
  color: var(--info-ink);
105
126
  }
106
127
  .pretui-chip[data-tone='success'] {
107
128
  --pretui-chip-hue: var(--success);
129
+ --pretui-chip-tone: var(--success);
108
130
 
109
131
  color: var(--success-ink);
110
132
  }
111
133
  .pretui-chip[data-tone='warning'] {
112
134
  --pretui-chip-hue: var(--warning);
135
+ --pretui-chip-tone: var(--warning);
113
136
 
114
137
  color: var(--warning-ink);
115
138
  }
116
139
  .pretui-chip[data-tone='danger'] {
117
140
  --pretui-chip-hue: var(--destructive);
141
+ --pretui-chip-tone: var(--destructive);
118
142
 
119
143
  color: var(--destructive-ink);
120
144
  }
121
145
  .pretui-chip[data-tone='attention'] {
122
146
  --pretui-chip-hue: var(--attention);
147
+ --pretui-chip-tone: var(--attention);
123
148
 
124
149
  color: var(--attention-ink);
125
150
  }
151
+ /* soft: the tone tints the fill and the ring drops; the tone's -ink
152
+ (or --foreground when neutral) stays the text. The tone, not the
153
+ hue, so an @hue on a toned chip still recolors only the dot; a
154
+ neutral chip has no tone and tints from its hue */
155
+ .pretui-chip[data-appearance='soft'] {
156
+ background-color: color-mix(
157
+ in oklch,
158
+ var(--pretui-chip-tone, var(--pretui-chip-hue))
159
+ var(--pretui-chip-soft-mix, 12%),
160
+ var(--card)
161
+ );
162
+ box-shadow: none;
163
+ }
164
+ /* plain: no fill, ring or radius, just dot + text in the tone's -ink */
165
+ .pretui-chip[data-appearance='plain'] {
166
+ padding-inline: 0;
167
+ border-radius: 0;
168
+ background: none;
169
+ box-shadow: none;
170
+ }
126
171
  .pretui-chip-dot {
127
172
  width: var(--pretui-chip-dot-size);
128
173
  height: var(--pretui-chip-dot-size);
@@ -5,12 +5,15 @@ A small pill for a categorical value: a status, a tag, a label. It is display on
5
5
  ## The contract
6
6
 
7
7
  ```
8
- @label?, @tone? (default neutral), @hue?, @dot? (default true)
8
+ @label?, @tone? (default neutral), @hue?, @dot? (default true),
9
+ @appearance? ('outlined' default | 'soft' | 'plain')
9
10
  <:default> — used when @label is absent
10
11
  ```
11
12
 
12
13
  **Tone outlines, hue colors the dot.** A neutral chip (the default) is the theme's `--muted` surface with `--foreground` text. Any other `@tone` outlines it on `--card` instead: the tone's `-ink` (`--success-ink`, `--destructive-ink` for `danger`…) for the text and the ring, and the tone itself for the dot, the same tone names and inks Button and Alert use. `@hue` recolors only the dot (any CSS color, or a `var(--chart-3)`).
13
14
 
15
+ **`@appearance` picks the frame.** `soft` tints instead of outlining: the fill becomes the tone mixed 12% into `--card` (the hue on a neutral chip, which has no tone) and the ring drops, so `@hue` on a toned chip still recolors only the dot. `plain` drops the frame entirely, with no fill, ring, radius or side padding, leaving dot + text as one compound unit. Use it in table cells and dense lists, where a frame inside an already-rounded card is noise. The dot is always shown on a plain chip, even with `@dot={{false}}`, so the category never rests on colour alone. In every appearance the text stays the tone's `-ink` (`--foreground` when neutral). `outlined` is the default and is unchanged.
16
+
14
17
  **The dot is on by default.** That is the decision most kits get backwards: without it, a row of chips is distinguished only by fill colour, and colour alone is a WCAG 1.4.1 problem _and_ hard to scan. The dot gives the hue a saturated anchor next to muted ink, so the category reads at a glance even when the fills are close. Turn it off (`@dot={{false}}`) only when the chip's own text already names the category unambiguously.
15
18
 
16
19
  ## Prior art
@@ -36,7 +39,7 @@ That is the right answer for a static chip, and it means the accessibility quest
36
39
 
37
40
  ## Theming
38
41
 
39
- `--muted` / `--foreground` (a neutral pill and its text), `--card` with each tone's `--x-ink` (text and ring) and `--x` (dot) for a toned chip, `--pretui-chip-hue` (the dot, defaulting to `--muted-foreground`, or the tone on a toned chip), `--boxel-border-radius-xs`, `--boxel-font-size-2xs`, `--boxel-lsp-xs`, and the `--boxel-sp-*` spacing scale. `--pretui-chip-height`, `--pretui-chip-dot-size` and `--pretui-chip-font-size` set the pill height, dot size and text size.
42
+ `--muted` / `--foreground` (a neutral pill and its text), `--card` with each tone's `--x-ink` (text and ring) and `--x` (dot) for a toned chip, `--pretui-chip-hue` (the dot, defaulting to `--muted-foreground`, or the tone on a toned chip), `--boxel-border-radius-xs`, `--boxel-font-size-2xs`, `--boxel-lsp-xs`, and the `--boxel-sp-*` spacing scale. `--pretui-chip-height`, `--pretui-chip-dot-size` and `--pretui-chip-font-size` set the pill height, dot size and text size. `--pretui-chip-soft-mix` (default `12%`) sets how strongly a soft chip's fill is tinted.
40
43
 
41
44
  A theme restyles every chip through `--muted` and `--foreground`, and the dot colors through the `--chart-*` tokens. Dark mode needs nothing extra: the theme's dark `--muted` / `--foreground` pair applies.
42
45
 
@@ -2,11 +2,20 @@
2
2
  import GlimmerComponent from '@glimmer/component';
3
3
  import { tracked } from '@glimmer/tracking';
4
4
  import { FreestyleUsage } from './freestyle-usage';
5
- import { Chip } from './chip';
5
+ import {
6
+ Chip,
7
+ PRETUI_CHIP_APPEARANCES,
8
+ type PretuiChipAppearance,
9
+ } from './chip';
6
10
  import { HUE_OPTIONS } from '../demo-ink-feedback';
7
- import { PRETUI_TONES, type PretuiTone } from '../pretui-primitives';
11
+ import {
12
+ PRETUI_TONES,
13
+ resolveTone,
14
+ type PretuiTone,
15
+ } from '../pretui-primitives';
8
16
 
9
17
  const TONE_OPTIONS = [...PRETUI_TONES];
18
+ const APPEARANCE_OPTIONS = [...PRETUI_CHIP_APPEARANCES];
10
19
 
11
20
  // ── Chip ← pill/usage.gts + tag/usage.gts ────────────────────────────────
12
21
  // Dropped knobs: kind (Chip is never a button), variant + size (no
@@ -18,6 +27,9 @@ class ChipUsage extends GlimmerComponent {
18
27
  @tracked hue = '';
19
28
  @tracked tone: PretuiTone = 'neutral';
20
29
  @tracked dot = true;
30
+ @tracked appearance: PretuiChipAppearance = 'outlined';
31
+ setAppearance = (v: string) =>
32
+ (this.appearance = resolveTone(v, PRETUI_CHIP_APPEARANCES, 'outlined'));
21
33
  setLabel = (v: string) => (this.label = v);
22
34
  setHue = (v: string) => (this.hue = v);
23
35
  setTone = (v: string) => (this.tone = v as PretuiTone);
@@ -33,6 +45,9 @@ class ChipUsage extends GlimmerComponent {
33
45
  if (this.hue) {
34
46
  bits.push(`@hue='${this.hue}'`);
35
47
  }
48
+ if (this.appearance !== 'outlined') {
49
+ bits.push(`@appearance='${this.appearance}'`);
50
+ }
36
51
  if (!this.dot) {
37
52
  bits.push('@dot={{false}}');
38
53
  }
@@ -50,6 +65,7 @@ class ChipUsage extends GlimmerComponent {
50
65
  @tone={{this.tone}}
51
66
  @hue={{this.hueVal}}
52
67
  @dot={{this.dot}}
68
+ @appearance={{this.appearance}}
53
69
  />
54
70
  <Chip @label='Gelato' @hue='var(--chart-3)' />
55
71
  <Chip @label='Catering' @hue='var(--chart-4)' />
@@ -57,6 +73,17 @@ class ChipUsage extends GlimmerComponent {
57
73
  <Chip @label='draft' />
58
74
  <Chip @label='live' @tone='success' />
59
75
  <Chip @label='blocked' @tone='danger' />
76
+ <Chip @label='hired' @tone='success' @appearance='soft' />
77
+ <Chip @label='on hold' @tone='warning' @appearance='soft' />
78
+ <Chip @label='rejected' @tone='danger' @appearance='soft' />
79
+ <Chip @label='screening' @tone='info' @appearance='plain' />
80
+ <Chip
81
+ @label='flagged'
82
+ @tone='danger'
83
+ @hue='var(--chart-2)'
84
+ @appearance='soft'
85
+ />
86
+ <Chip @label='archived' @appearance='plain' />
60
87
  </:example>
61
88
  <:api as |Args|>
62
89
  <Args.String
@@ -80,6 +107,14 @@ class ChipUsage extends GlimmerComponent {
80
107
  @value={{this.tone}}
81
108
  @onInput={{this.setTone}}
82
109
  />
110
+ <Args.String
111
+ @name='appearance'
112
+ @description='outlined (default) keeps the tone treatment; soft tints the fill with the tone and drops the ring; plain is dot + text with no frame, for dense tables.'
113
+ @options={{APPEARANCE_OPTIONS}}
114
+ @defaultValue='outlined'
115
+ @value={{this.appearance}}
116
+ @onInput={{this.setAppearance}}
117
+ />
83
118
  <Args.Bool
84
119
  @name='dot'
85
120
  @description='Leading status dot (Pretui addition).'
@@ -1,6 +1,6 @@
1
1
  // Pretui — StatusChip: a Chip whose hue is derived from its status value, stable across cards.
2
2
  import Component from '@glimmer/component';
3
- import { Chip } from './chip';
3
+ import { Chip, type PretuiChipAppearance } from './chip';
4
4
  import { statusHue } from '../internal/ink';
5
5
  import {
6
6
  PRETUI_TONES,
@@ -9,7 +9,15 @@ import {
9
9
  } from '../pretui-primitives';
10
10
 
11
11
  export interface StatusChipSignature {
12
- Args: { value: string; hue?: string; tone?: PretuiToneArg };
12
+ Args: {
13
+ value: string;
14
+ hue?: string;
15
+ tone?: PretuiToneArg;
16
+ /** passed to Chip: 'outlined' (default), 'soft' or 'plain' */
17
+ appearance?: PretuiChipAppearance;
18
+ /** passed to Chip: false drops the dot (default true) */
19
+ dot?: boolean;
20
+ };
13
21
  Element: HTMLSpanElement;
14
22
  }
15
23
 
@@ -30,6 +38,8 @@ export class StatusChip extends Component<StatusChipSignature> {
30
38
  @label={{@value}}
31
39
  @hue={{this.dotHue}}
32
40
  @tone={{@tone}}
41
+ @appearance={{@appearance}}
42
+ @dot={{@dot}}
33
43
  data-test-pretui-status-chip
34
44
  ...attributes
35
45
  />
@@ -8,9 +8,10 @@ A **Chip** whose color is derived from the value rather than chosen. Pass `@valu
8
8
  @value: string (required)
9
9
  @hue? — override; the exception, not the norm
10
10
  @tone? — Chip's tone (default neutral)
11
+ @appearance?, @dot? — passed straight to Chip
11
12
  ```
12
13
 
13
- Three args, and the last two you should rarely reach for. A toned StatusChip is outlined in that tone and its dot takes the tone unless `@hue` is passed, so `@tone` is for a status whose meaning is fixed, like `live`; the hash hue stays on a neutral chip.
14
+ `@value` is the one that matters; `@hue` and `@tone` you should rarely reach for, and `@appearance` / `@dot` are Chip's look knobs, forwarded unchanged. A toned StatusChip is outlined in that tone and its dot takes the tone unless `@hue` is passed, so `@tone` is for a status whose meaning is fixed, like `live`; the hash hue stays on a neutral chip.
14
15
 
15
16
  **The hue is a hash, and the hash is the point.** `statusHue()` runs a 32-bit polynomial rolling hash (`h * 31 + charCode`, unsigned) over the string and takes `h % 5` to index `--chart-1` … `--chart-5`. Deterministic, dependency-free, and — the property that matters — **stable across cards, realms and sessions**. No registry, no config, no design review to add a status.
16
17
 
@@ -17,6 +17,8 @@ class StatusChipUsage extends GlimmerComponent {
17
17
  <StatusChip @value='overdue' />
18
18
  <StatusChip @value='review' />
19
19
  <StatusChip @value='active' />
20
+ <StatusChip @value='interviewing' @appearance='soft' />
21
+ <StatusChip @value='offer' @appearance='plain' />
20
22
  </:example>
21
23
  <:api as |Args|>
22
24
  <Args.String
@@ -8,7 +8,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
8
8
  import "./component-BJO47HTh.js";
9
9
  import { t as Component } from "./dist-CkA1rgqO.js";
10
10
  import "./template-factory-ds9s0u8l.js";
11
- import { t as OperatorModeContainer } from "./container-XSX5809v.js";
11
+ import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
12
12
  import { d as click, i as findAll, o as waitFor } from "./dist-BOAdzfkP.js";
13
13
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
14
14
  import { F as setupLocalIndexing, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";
@@ -46,7 +46,7 @@ import { t as IconComponent$310 } from "./search-BDcFn7oI.js";
46
46
  import { t as IconComponent$311 } from "./shield-check-BrDqWC6I.js";
47
47
  import { t as Spinner } from "./spinner-DtpQhFga.js";
48
48
  import { n as markReplyFurniture, t as cardRefLabel } from "./reply-furniture-Cu7OoDDn.js";
49
- import { t as RenderedMarkdown } from "./rendered-markdown-B8TH0yN4.js";
49
+ import { t as RenderedMarkdown } from "./rendered-markdown-DPEXS7MQ.js";
50
50
  import "./sanitized-html-DK1gR9yP.js";
51
51
  import { t as IconComponent$312 } from "./circle-check-DuIm6oML.js";
52
52
  import { t as IconComponent$313 } from "./file-BeJnCIX2.js";
@@ -49,10 +49,10 @@ import { r as modifier, t as ClassBasedModifier } from "./dist-nMt-N14r.js";
49
49
  import { n as isPresent, r as isBlank$1 } from "./is-equal-CgIVjIN-.js";
50
50
  import { i as all, r as timeout } from "./dist-DEVZvbin.js";
51
51
  import { t as buildWaiter } from "./dist-CSQ-y1Ft.js";
52
- import { C as auto_attached_card_exports, S as tool_service_exports, _ as FocusPill, b as AiAssistantAttachmentPicker, c as ai_assist_icon_2x_default, d as AiAssistantConversation, f as AiAssistantMessage, l as AiAssistantSkillMenu, v as AiAssistantComposerCap, y as AiAssistantChatInput } from "./panel-t9QyU1lY.js";
52
+ import { c as ai_assist_icon_2x_default, d as AiAssistantConversation, f as AiAssistantMessage, g as AiAssistantAttachmentPicker, h as AiAssistantChatInput, l as AiAssistantSkillMenu, m as AiAssistantComposerCap, p as FocusPill, v as tool_service_exports, y as auto_attached_card_exports } from "./panel-CXmB6GMs.js";
53
53
  import { n as getCardCollection, t as card_collection_exports } from "./card-collection-DROiEsNV.js";
54
54
  import { n as getCard, t as card_resource_exports } from "./card-resource-BF1P-sI3.js";
55
- import { C as directory_exports, S as inheritance_chain_exports, _ as titleize_exports, a as CardChooserModal, b as moduleContentsResource, c as run_while_active_exports, d as id_from_card_or_url_exports, f as clipboard_exports, g as titleize, h as ai_assistant_panel_service_exports, i as SearchSheetModes, l as publish_progress_exports, m as card_type_service_exports, n as HostModeContent, o as stack_item_focus_exports, p as search_sheet_state_exports, r as SearchSheet, s as schema_editor_exports, t as OperatorModeContainer, u as idFromCardOrURL, v as url_bar_exports, w as card_type_exports, x as module_contents_exports, y as stack_backgrounds_exports } from "./container-XSX5809v.js";
55
+ import { C as directory_exports, S as inheritance_chain_exports, _ as titleize_exports, a as CardChooserModal, b as moduleContentsResource, c as run_while_active_exports, d as id_from_card_or_url_exports, f as clipboard_exports, g as titleize, h as ai_assistant_panel_service_exports, i as SearchSheetModes, l as publish_progress_exports, m as card_type_service_exports, n as HostModeContent, o as stack_item_focus_exports, p as search_sheet_state_exports, r as SearchSheet, s as schema_editor_exports, t as OperatorModeContainer, u as idFromCardOrURL, v as url_bar_exports, w as card_type_exports, x as module_contents_exports, y as stack_backgrounds_exports } from "./container-CXZoEvul.js";
56
56
  import { n as element_tracker_exports } from "./element-tracker-CT_tRvjz.js";
57
57
  import { n as file_tree_from_index_exports } from "./file-tree-from-index-BDO4hYe_.js";
58
58
  import { a as normalized_dir_path_exports, c as isReady, o as maybe_exports, r as operator_mode_state_service_exports, s as file_exports } from "./operator-mode-state-service-BWfXVE95.js";
@@ -90,9 +90,9 @@ import { d as PERSONAL_REALM_ENDPOINT, f as getRandomBackgroundURL, o as skillsI
90
90
  import { t as decideRoomInvite } from "./room-invite-policy-B8_Ewl1p.js";
91
91
  import { t as getUniqueValidToolDefinitions } from "./tool-definitions-Bhcf5vKh.js";
92
92
  import { n as monaco_test_waiter_exports, t as createMonacoWaiterManager } from "./monaco-test-waiter-lvFEYpFj.js";
93
- import { r as shimBundledBase } from "./bundled-base-DldokUSJ.js";
93
+ import { r as shimBundledBase } from "./bundled-base-DtxlKFXx.js";
94
94
  import "./dist-BOAdzfkP.js";
95
- import { a as microwait, i as allSettled, n as task, o as rAF, r as afterRender, t as shimExternals } from "./externals--YMzwHwd.js";
95
+ import { a as microwait, i as allSettled, n as task, o as rAF, r as afterRender, t as shimExternals } from "./externals-Ddhtv753.js";
96
96
  import { t as file_name_exports } from "./file-name-BBWa-sfG.js";
97
97
  import { n as write_text_file_exports } from "./write-text-file-_xf3REMH.js";
98
98
  import { n as add_field_to_card_definition_exports } from "./add-field-to-card-definition-Dh-2u-FW.js";
@@ -193,9 +193,9 @@ import { o as sections_exports } from "./sections-a1Q3Clrw.js";
193
193
  import { r as text_suggestion_exports } from "./text-suggestion-Dja5vvDZ.js";
194
194
  import { n as trusted_message_origin_exports } from "./trusted-message-origin-C7kiFszV.js";
195
195
  import { a as _defineProperty$10, i as _applyDecoratedDescriptor$19, n as isKey, r as listenerName } from "./on-key-lN1E-7x2.js";
196
- import { u as AiAssistantApplyButton } from "./aibot-message-LXV0UlzI.js";
196
+ import { u as AiAssistantApplyButton } from "./aibot-message-Dg5nzE1b.js";
197
197
  import { t as ModalContainer } from "./modal-container-YcHMXQhl.js";
198
- import { t as PillMenu } from "./pill-menu-DaRpDMUm.js";
198
+ import { t as PillMenu } from "./pill-menu-Ctn3JNqG.js";
199
199
  import { t as MiniFileChooser } from "./mini-C3GO7Nt2.js";
200
200
  import { n as EmbedFormatSelection, t as MarkdownEmbedPreviewPane } from "./pane-Bx9vM9qf.js";
201
201
  import { t as MarkdownEmbedPreview } from "./preview-De0kL7qt.js";
@@ -1,6 +1,6 @@
1
1
  import { s as __toESM } from "./chunk-Rp0pCe6z.js";
2
2
  import { c as resultDiff, i as compactDiff, n as DIFF_IN_DETAIL } from "./edits-D50tA7_G.js";
3
- import { r as settledTitle, t as turnSummary } from "./turn-summary-0XOoAv3j.js";
3
+ import { r as settledTitle, t as turnSummary } from "./turn-summary-CAZVdcBd.js";
4
4
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
5
5
  //#region tests/unit/lib/assistant-transcript-test.ts
6
6
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-CgzbilMy.js";
6
6
  import "./component-BJO47HTh.js";
7
7
  import { t as Component } from "./dist-CkA1rgqO.js";
8
8
  import "./template-factory-ds9s0u8l.js";
9
- import { t as OperatorModeContainer } from "./container-XSX5809v.js";
9
+ import { t as OperatorModeContainer } from "./container-CXZoEvul.js";
10
10
  import { T as settled, d as click, o as waitFor, s as fillIn } from "./dist-BOAdzfkP.js";
11
11
  import { t as require_qunit } from "./qunit-C-Foo4Nd.js";
12
12
  import { Ct as getTestRealmRegistry, D as realmConfigCardJSON, F as setupLocalIndexing, I as setupOnSave, M as setupCardLogs, P as setupIntegrationTestRealm, lt as setupRenderingTest, ot as setupOperatorModeStateCleanup, t as setupMockMatrix } from "./mock-matrix-Ci72h1Wf.js";