@prestack/thread-ui 0.1.10 → 0.1.11

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 (209) hide show
  1. package/CHANGELOG.md +187 -0
  2. package/dist/ui/attach.js +6 -7
  3. package/dist/ui/compositions.d.ts +0 -8
  4. package/dist/ui/compositions.js +3 -166
  5. package/dist/ui/generators/routes.js +1 -0
  6. package/package.json +2 -2
  7. package/dist/ui/animations/anm_appear.ts +0 -13
  8. package/dist/ui/animations/anm_blur_in.ts +0 -19
  9. package/dist/ui/animations/anm_blur_out.ts +0 -18
  10. package/dist/ui/animations/anm_dismiss.ts +0 -18
  11. package/dist/ui/animations/anm_drop.ts +0 -19
  12. package/dist/ui/animations/anm_fall.ts +0 -18
  13. package/dist/ui/animations/anm_flash.ts +0 -18
  14. package/dist/ui/animations/anm_glow.ts +0 -16
  15. package/dist/ui/animations/anm_lift.ts +0 -16
  16. package/dist/ui/animations/anm_nudge.ts +0 -16
  17. package/dist/ui/animations/anm_pop_in.ts +0 -23
  18. package/dist/ui/animations/anm_pop_out.ts +0 -22
  19. package/dist/ui/animations/anm_press.ts +0 -12
  20. package/dist/ui/animations/anm_pulse.ts +0 -13
  21. package/dist/ui/animations/anm_rise.ts +0 -19
  22. package/dist/ui/animations/anm_shake.ts +0 -13
  23. package/dist/ui/animations/anm_slide_in_left.ts +0 -19
  24. package/dist/ui/animations/anm_slide_in_right.ts +0 -19
  25. package/dist/ui/animations/anm_slide_out_left.ts +0 -18
  26. package/dist/ui/animations/anm_slide_out_right.ts +0 -18
  27. package/dist/ui/animations/anm_spin.ts +0 -12
  28. package/dist/ui/animations/anm_swell.ts +0 -16
  29. package/dist/ui/animations/anm_wobble.ts +0 -24
  30. package/dist/ui/animations/anm_zoom_in.ts +0 -19
  31. package/dist/ui/animations/anm_zoom_out.ts +0 -18
  32. package/dist/ui/animations.ts +0 -308
  33. package/dist/ui/attach.ts +0 -553
  34. package/dist/ui/charts.tsx +0 -69
  35. package/dist/ui/checked.ts +0 -32
  36. package/dist/ui/collector.ts +0 -140
  37. package/dist/ui/compositions.ts +0 -613
  38. package/dist/ui/consent.ts +0 -55
  39. package/dist/ui/content.tsx +0 -27
  40. package/dist/ui/contrast.ts +0 -27
  41. package/dist/ui/controls.tsx +0 -25
  42. package/dist/ui/disclosure.tsx +0 -20
  43. package/dist/ui/dismiss-layer.ts +0 -87
  44. package/dist/ui/door.ts +0 -140
  45. package/dist/ui/drag.ts +0 -316
  46. package/dist/ui/elements/accordion.tsx +0 -47
  47. package/dist/ui/elements/accordion.works.ts +0 -66
  48. package/dist/ui/elements/aspect-ratio.tsx +0 -31
  49. package/dist/ui/elements/aspect-ratio.works.ts +0 -5
  50. package/dist/ui/elements/avatar.tsx +0 -34
  51. package/dist/ui/elements/avatar.works.ts +0 -16
  52. package/dist/ui/elements/badge.tsx +0 -33
  53. package/dist/ui/elements/badge.works.ts +0 -9
  54. package/dist/ui/elements/bars.tsx +0 -50
  55. package/dist/ui/elements/bars.works.ts +0 -29
  56. package/dist/ui/elements/box.tsx +0 -36
  57. package/dist/ui/elements/breadcrumb.tsx +0 -38
  58. package/dist/ui/elements/breadcrumb.works.ts +0 -24
  59. package/dist/ui/elements/button.tsx +0 -46
  60. package/dist/ui/elements/button.works.tsx +0 -52
  61. package/dist/ui/elements/column.tsx +0 -29
  62. package/dist/ui/elements/consent.tsx +0 -71
  63. package/dist/ui/elements/consent.works.tsx +0 -132
  64. package/dist/ui/elements/donut.tsx +0 -45
  65. package/dist/ui/elements/donut.works.ts +0 -42
  66. package/dist/ui/elements/each.tsx +0 -34
  67. package/dist/ui/elements/each.works.tsx +0 -82
  68. package/dist/ui/elements/empty.tsx +0 -33
  69. package/dist/ui/elements/field.tsx +0 -45
  70. package/dist/ui/elements/field.works.ts +0 -65
  71. package/dist/ui/elements/funnel.tsx +0 -50
  72. package/dist/ui/elements/funnel.works.ts +0 -37
  73. package/dist/ui/elements/gauge.tsx +0 -40
  74. package/dist/ui/elements/gauge.works.ts +0 -42
  75. package/dist/ui/elements/glyph.tsx +0 -30
  76. package/dist/ui/elements/glyph.works.tsx +0 -42
  77. package/dist/ui/elements/grid.tsx +0 -29
  78. package/dist/ui/elements/heatmap.tsx +0 -48
  79. package/dist/ui/elements/heatmap.works.ts +0 -24
  80. package/dist/ui/elements/hit-box.tsx +0 -47
  81. package/dist/ui/elements/hit-box.works.tsx +0 -576
  82. package/dist/ui/elements/image.tsx +0 -29
  83. package/dist/ui/elements/line-chart.tsx +0 -45
  84. package/dist/ui/elements/line-chart.works.ts +0 -41
  85. package/dist/ui/elements/link.tsx +0 -38
  86. package/dist/ui/elements/link.works.ts +0 -25
  87. package/dist/ui/elements/media.tsx +0 -57
  88. package/dist/ui/elements/menu.tsx +0 -51
  89. package/dist/ui/elements/menu.works.tsx +0 -154
  90. package/dist/ui/elements/money.tsx +0 -36
  91. package/dist/ui/elements/money.works.ts +0 -9
  92. package/dist/ui/elements/pagination.tsx +0 -39
  93. package/dist/ui/elements/pagination.works.ts +0 -20
  94. package/dist/ui/elements/progress.tsx +0 -34
  95. package/dist/ui/elements/progress.works.ts +0 -8
  96. package/dist/ui/elements/radio-group.tsx +0 -50
  97. package/dist/ui/elements/radio-group.works.ts +0 -33
  98. package/dist/ui/elements/row.tsx +0 -29
  99. package/dist/ui/elements/scatter.tsx +0 -42
  100. package/dist/ui/elements/scatter.works.ts +0 -38
  101. package/dist/ui/elements/select.tsx +0 -43
  102. package/dist/ui/elements/select.works.ts +0 -5
  103. package/dist/ui/elements/separator.tsx +0 -31
  104. package/dist/ui/elements/skeleton.tsx +0 -31
  105. package/dist/ui/elements/slider.tsx +0 -34
  106. package/dist/ui/elements/slider.works.ts +0 -5
  107. package/dist/ui/elements/sparkline.tsx +0 -37
  108. package/dist/ui/elements/sparkline.works.ts +0 -32
  109. package/dist/ui/elements/spinner.tsx +0 -33
  110. package/dist/ui/elements/stack.tsx +0 -29
  111. package/dist/ui/elements/stat.tsx +0 -36
  112. package/dist/ui/elements/stat.works.ts +0 -14
  113. package/dist/ui/elements/surface.tsx +0 -36
  114. package/dist/ui/elements/surface.works.ts +0 -9
  115. package/dist/ui/elements/table.tsx +0 -62
  116. package/dist/ui/elements/table.works.ts +0 -30
  117. package/dist/ui/elements/tabs.tsx +0 -47
  118. package/dist/ui/elements/tabs.works.ts +0 -84
  119. package/dist/ui/elements/text.tsx +0 -33
  120. package/dist/ui/elements/textarea.tsx +0 -38
  121. package/dist/ui/elements/textarea.works.ts +0 -5
  122. package/dist/ui/elements/time.tsx +0 -40
  123. package/dist/ui/elements/time.works.ts +0 -29
  124. package/dist/ui/elements/toggle.tsx +0 -34
  125. package/dist/ui/elements/toggle.works.ts +0 -5
  126. package/dist/ui/elements/tooltip.tsx +0 -40
  127. package/dist/ui/elements/tooltip.works.ts +0 -77
  128. package/dist/ui/elements/value.tsx +0 -38
  129. package/dist/ui/elements/value.works.ts +0 -9
  130. package/dist/ui/elements.ts +0 -127
  131. package/dist/ui/focus-scope.ts +0 -121
  132. package/dist/ui/fonts.ts +0 -355
  133. package/dist/ui/generators/dev.d.ts +0 -1
  134. package/dist/ui/generators/dev.js +0 -62
  135. package/dist/ui/generators/dev.ts +0 -75
  136. package/dist/ui/generators/elements.ts +0 -796
  137. package/dist/ui/generators/i18n.ts +0 -283
  138. package/dist/ui/generators/icons.ts +0 -207
  139. package/dist/ui/generators/react.ts +0 -267
  140. package/dist/ui/generators/routes.ts +0 -847
  141. package/dist/ui/generators/show.ts +0 -261
  142. package/dist/ui/generators/styles.ts +0 -677
  143. package/dist/ui/generators/variants.ts +0 -196
  144. package/dist/ui/i18n/catalogs/en.ts +0 -191
  145. package/dist/ui/i18n/format.ts +0 -221
  146. package/dist/ui/i18n/locales.ts +0 -33
  147. package/dist/ui/i18n/parse.ts +0 -315
  148. package/dist/ui/i18n/translator.ts +0 -31
  149. package/dist/ui/i18n/types.ts +0 -96
  150. package/dist/ui/icons.ts +0 -331
  151. package/dist/ui/islands/map.ts +0 -58
  152. package/dist/ui/localizations.ts +0 -75
  153. package/dist/ui/material.ts +0 -236
  154. package/dist/ui/materials/mat_bordered.ts +0 -13
  155. package/dist/ui/materials/mat_ceramic.ts +0 -13
  156. package/dist/ui/materials/mat_clay.ts +0 -13
  157. package/dist/ui/materials/mat_elevated.ts +0 -24
  158. package/dist/ui/materials/mat_flat.ts +0 -34
  159. package/dist/ui/materials/mat_glass.ts +0 -20
  160. package/dist/ui/materials/mat_lit.ts +0 -13
  161. package/dist/ui/materials/mat_moulded.ts +0 -11
  162. package/dist/ui/materials.ts +0 -197
  163. package/dist/ui/modes.ts +0 -44
  164. package/dist/ui/navigation.tsx +0 -29
  165. package/dist/ui/positioning.ts +0 -90
  166. package/dist/ui/presented.tsx +0 -119
  167. package/dist/ui/provider.tsx +0 -184
  168. package/dist/ui/render-loop.ts +0 -133
  169. package/dist/ui/roving-focus.ts +0 -161
  170. package/dist/ui/screens.ts +0 -141
  171. package/dist/ui/scroll-lock.ts +0 -28
  172. package/dist/ui/series.ts +0 -97
  173. package/dist/ui/signals.ts +0 -386
  174. package/dist/ui/styleguide.ts +0 -231
  175. package/dist/ui/styleguides.ts +0 -374
  176. package/dist/ui/themes.ts +0 -22
  177. package/dist/ui/token.ts +0 -78
  178. package/dist/ui/tokens/shadow.ts +0 -25
  179. package/dist/ui/tokens.ts +0 -234
  180. package/dist/ui/validators.ts +0 -232
  181. package/dist/ui/variant.ts +0 -349
  182. package/dist/ui/variants/var_avatar-round.ts +0 -14
  183. package/dist/ui/variants/var_bubble-me.ts +0 -14
  184. package/dist/ui/variants/var_bubble-them.ts +0 -13
  185. package/dist/ui/variants/var_button-border.ts +0 -76
  186. package/dist/ui/variants/var_button-cta.ts +0 -76
  187. package/dist/ui/variants/var_button-destructive-ghost.ts +0 -72
  188. package/dist/ui/variants/var_button-destructive.ts +0 -76
  189. package/dist/ui/variants/var_button-fill.ts +0 -76
  190. package/dist/ui/variants/var_button-ghost.ts +0 -72
  191. package/dist/ui/variants/var_button-glass.ts +0 -55
  192. package/dist/ui/variants/var_button-normal.ts +0 -76
  193. package/dist/ui/variants/var_button-quiet.ts +0 -74
  194. package/dist/ui/variants/var_card.ts +0 -17
  195. package/dist/ui/variants/var_chip.ts +0 -13
  196. package/dist/ui/variants/var_choice.ts +0 -15
  197. package/dist/ui/variants/var_framed.ts +0 -10
  198. package/dist/ui/variants/var_glyph-plain.ts +0 -11
  199. package/dist/ui/variants/var_input.ts +0 -43
  200. package/dist/ui/variants/var_link-inline.ts +0 -29
  201. package/dist/ui/variants/var_list-row.ts +0 -34
  202. package/dist/ui/variants/var_rule.ts +0 -10
  203. package/dist/ui/variants/var_skeleton-block.ts +0 -12
  204. package/dist/ui/variants/var_spinner-turning.ts +0 -12
  205. package/dist/ui/variants/var_stat-tile.ts +0 -13
  206. package/dist/ui/variants/var_tab-bar.ts +0 -15
  207. package/dist/ui/variants/var_tap-target.ts +0 -25
  208. package/dist/ui/variants.ts +0 -64
  209. package/dist/ui/wrappers.tsx +0 -429
package/CHANGELOG.md CHANGED
@@ -1,5 +1,192 @@
1
1
  # @prestack/thread-ui
2
2
 
3
+ ## 0.1.10
4
+
5
+ something it shipped is gone or is not the shape it was, so taking this one can stop your code compiling.
6
+
7
+ ### Changed
8
+
9
+ - `variant-shape` — `ui/variant#Variant` is not the shape it was. Read it before upgrading: a change that still compiles is the dangerous one, because nothing tells you at build time. An option added here is one nothing passes yet.
10
+
11
+ ### Added
12
+
13
+ - `compositions` now exports `ui/compositions#reachedIn`.
14
+
15
+ ### Fixed
16
+
17
+ - `dev-runner` — its code moved and what it exports did not.
18
+ - `ui-attach` — its code moved and what it exports did not.
19
+
20
+ <!-- release 0.1.10 -->
21
+ <!-- holds
22
+ accordion 315747ae9d69 ui/elements/accordion#AccordionProps:73ce472833d3 ui/elements/accordion#Accordion:83e995f2269f ui/elements/accordion.works#uses:5d3b00d92875 ui/elements/accordion.works#section:4ae99f778938 ui/elements/accordion.works#header:4ae99f778938 ui/elements/accordion.works#region:4ae99f778938 ui/elements/accordion.works#shown:2b4a0795f92f
23
+ animations-writer 6b745ed8eb50 ui/animations#BOUND:903de4e047f6 ui/animations#AnimationSetting:e4c302183d8e ui/animations#Animation:5212a1aa8d74 ui/animations#keyframeName:ff8fa0760be2 ui/animations#stopsOf:b2c6e0e60a68 ui/animations#shorthandOf:6a990de10b41 ui/animations#declares:cad46cab877c ui/animations#ANIMATIONS:a836915082b0 ui/animations#nameOf:ff8fa0760be2 ui/animations#seeds:e5c803f28183 ui/animations#mismatched:5679b09f6252 ui/animations#orphaned:8865319ec4c3
24
+ appear f2488319c0c9 ui/animations/anm_appear#APPEAR:301afe9bf4dc
25
+ aspect-ratio 4a4c4ec6e61d ui/elements/aspect-ratio#AspectRatioProps:0847ecebf249 ui/elements/aspect-ratio#AspectRatio:080b92fde974 ui/elements/aspect-ratio.works#measured:c68e17838e54
26
+ avatar 3c5e9c201758 ui/elements/avatar#AvatarProps:036f319489f5 ui/elements/avatar#Avatar:0aa8f982e898 ui/elements/avatar.works#shown:71384a69d3af
27
+ avatar-round da7acf061c62 ui/variants/var_avatar-round#AVATAR_ROUND:ccce1a17f0bf
28
+ badge 5b2fdfcfbcf3 ui/elements/badge#BadgeProps:735de9042fa4 ui/elements/badge#Badge:2e5b7c04041c ui/elements/badge.works#shows:fdabcaaa1a37
29
+ bars a728d4c0efc7 ui/elements/bars#BarsProps:429c72e96da9 ui/elements/bars#Bars:45ece6c69851 ui/elements/bars.works#uses:21c0411bcd1a ui/elements/bars.works#sized:4fbc468fd612 ui/elements/bars.works#shown:71800d3c3261
30
+ blur-in 1311ce3a3fda ui/animations/anm_blur_in#BLUR_IN:6892dfe198c0
31
+ blur-out f8c4f2cdff1e ui/animations/anm_blur_out#BLUR_OUT:bf564f95f617
32
+ bordered ed33d5c9bcd8 ui/materials/mat_bordered#BORDERED:ae68626a835b
33
+ box 9135e63049fc ui/elements/box#BoxProps:bc6d4d90848d ui/elements/box#Box:71451d7d0d75
34
+ breadcrumb 66bf516f8183 ui/elements/breadcrumb#BreadcrumbProps:90326c0e741c ui/elements/breadcrumb#Breadcrumb:7fa664c4c672 ui/elements/breadcrumb.works#steps:1143e7397f7e ui/elements/breadcrumb.works#crumb:2d47ada157f0
35
+ bubble-me 5a742c2ed7a7 ui/variants/var_bubble-me#BUBBLE_ME:ad950ac45abe
36
+ bubble-them 728e1129e2a9 ui/variants/var_bubble-them#BUBBLE_THEM:e4ca2cde9739
37
+ button 29cf957dbfa1 ui/elements/button#ButtonProps:3dd153481c9c ui/elements/button#Button:5c5b34292c8c ui/elements/button.works#uses:3e0750aa8681 ui/elements/button.works#wires:0b5df5218d63 ui/elements/button.works#iconed:c2caebd886f9 ui/elements/button.works#worded:c2caebd886f9 ui/elements/button.works#shown:2d2723ffce9f
38
+ button-border 6e6bf634e1c6 ui/variants/var_button-border#BUTTON_BORDER:5c178d7beb57
39
+ button-cta 01e30d4ec68d ui/variants/var_button-cta#BUTTON_CTA:970026cce345
40
+ button-destructive 96ec12dd1acf ui/variants/var_button-destructive#BUTTON_DESTRUCTIVE:1a01bdef3004
41
+ button-destructive-ghost 50791a7ec41c ui/variants/var_button-destructive-ghost#BUTTON_DESTRUCTIVE_GHOST:6418dad96469
42
+ button-fill 7f6509f2bcd8 ui/variants/var_button-fill#BUTTON_FILL:01446b8623cb
43
+ button-ghost 81ab88717b77 ui/variants/var_button-ghost#BUTTON_GHOST:4629e6de0279
44
+ button-glass da9a524fd64d ui/variants/var_button-glass#BUTTON_GLASS:bb95b54e94b6
45
+ button-normal 79d08fe4779f ui/variants/var_button-normal#BUTTON_NORMAL:8e300f205850
46
+ button-quiet 3ad6cdd1794e ui/variants/var_button-quiet#BUTTON_QUIET:015eee9c6a9d
47
+ card cd72fc4eb250 ui/variants/var_card#CARD:11d65ea74e1e
48
+ ceramic 4922d7156e24 ui/materials/mat_ceramic#CERAMIC:a1df3c22029a
49
+ charts 799a8177e784 ui/charts#Row:eee0c117177a ui/charts#WhenTight:17ade237b678 ui/charts#ChartBase:5c23cd2a9e3f ui/charts#num:bf021c1a2c8c ui/charts#str:28fd80e9f148 ui/charts#useRamp:f6fdb5be0c84 ui/charts#placed:fe15c30aa6bf ui/charts#measured:4d39d48edd1d ui/charts#SeriesProps:0fa5db4164e4 ui/charts#polyline:ccbb1fdf9a3a ui/charts#CategoryProps:9c091b968226 ui/charts#TwoAxisProps:6d05ba489e28
50
+ checked b3db1ccbae77 ui/checked#Wearing:deebde0237b4 ui/checked#Dispatching:deebde0237b4 ui/checked#VariantsFor:20a411132cb6 ui/checked#ArrangementElement:4d32298786d2 ui/checked#idOf:7ad5f68e2c86
51
+ chip c23cc6dce38c ui/variants/var_chip#CHIP:65c2396c3be4
52
+ choice 96d8c5e8912a ui/variants/var_choice#CHOICE:be45a6463762
53
+ clay c0a2c9b526fc ui/materials/mat_clay#CLAY:720ba7ce183e
54
+ collector b1cb143bbc9d ui/collector#ClientEvent:eb3074274552 ui/collector#CollectorOptions:5c022ee3fd3b ui/collector#RecordedEvent:edd6c51b46bd ui/collector#Collector:bc3c96c74f1e ui/collector#INERT_COLLECTOR:50752f61c393 ui/collector#createCollector:e8bf723f970e
55
+ column 5c1a7eb179ea ui/elements/column#ColumnProps:ad269764b266 ui/elements/column#Column:1b9550e6a545
56
+ compositions 3c034f4923ba ui/compositions#REACHES:09aa52ab5287 ui/compositions#declares:cad46cab877c ui/compositions#COMPOSITIONS:2412f9a2cc25 ui/compositions#PASCAL:72b4c80878b8 ui/compositions#nameOf:38eeb450b217 ui/compositions#Listed:ebe67be9ab8b ui/compositions#sheetOf:7e68e5aa528f ui/compositions#composed:bf363b830157 ui/compositions#HOME:16475c413846 ui/compositions#DOORS:75b7a7c39b95 ui/compositions#reaching:f772a3f7a0e9 ui/compositions#compiledAt:38eeb450b217 ui/compositions#settled:c2671abe553d ui/compositions#reachedIn:36c2bfebbd8b ui/compositions#RUNTIME:4de2138e3a11 ui/compositions#emitting:12075f4c4f66 ui/compositions#stale:081f906ac9d3 ui/compositions#SCREENED_BY:3ef18e747f92 ui/compositions#handing:c2ba7db38c14 ui/compositions#undeclared:b84deaf1f67c ui/compositions#seeds:950628166bbd
57
+ consent e9a8de05e23c ui/elements/consent#ConsentProps:4d2e2c5c74ae ui/elements/consent#Consent:f288ab8ee1af
58
+ consent-categories 063d79030614 ui/consent#ConsentCategorySchema:e3521eb40a21 ui/consent#ConsentCategory:d495db30ead2 ui/consent#defineConsentCategory:dc7375e62187 ui/consent#consentCategories:fc75fbe08af8 ui/consent#consentCategory:b515e4d050f9 ui/consent#ConsentDecisionSchema:f29793770bb3 ui/consent#ConsentDecision:37669319ada2 ui/consent#consentAllows:2ce94d59b747
59
+ consent-element fa8efc39cb87 ui/elements/consent.works#uses:408a55ef20fc ui/elements/consent.works#categories:cab969c5fa8b ui/elements/consent.works#hasPolicy:41e8cd1e14fe ui/elements/consent.works#withdrawable:27a86b8e1345 ui/elements/consent.works#optional:1d0be2d81bca ui/elements/consent.works#required:1d0be2d81bca ui/elements/consent.works#title:8bb7d2c23113 ui/elements/consent.works#policy:ff8839910ba9 ui/elements/consent.works#label:b88c8ee4712f ui/elements/consent.works#describe:b88c8ee4712f ui/elements/consent.works#fixed:efa0c3794a4c ui/elements/consent.works#chooser:f06207471636 ui/elements/consent.works#withdraw:e7c5c7c955e4 ui/elements/consent.works#decline:e7c5c7c955e4 ui/elements/consent.works#accept:e7c5c7c955e4 ui/elements/consent.works#acceptAll:e7c5c7c955e4
60
+ content 46197c590f10 ui/content#MessageKey:bb3a9997b027 ui/content#ValueProps:9decf576db80 ui/content#renderValue:26dafdf7eb3f
61
+ contrast d58eef8241a7 ui/contrast#CONTRAST_LARGE:319ea26151c0 ui/contrast#luminance:7b446b9fed05 ui/contrast#contrast:8ad383dc8043
62
+ controls e64de1d19cf3 ui/controls#PressProps:d7b2a109483b ui/controls#Option:bb867d0c2790 ui/controls#Menu:99af6606ff9d ui/controls#MenuProps:e64bf652667a ui/controls#MenuItem:e6972b78d002
63
+ dev-runner 8db7c9a42314 ui/generators/dev#unrunnable:a00d94275089
64
+ disclosure 64d2ffbff21d ui/disclosure#TabItem:5637034a9966 ui/disclosure#AccordionItem:5637034a9966
65
+ dismiss 1062fb6d8d49 ui/animations/anm_dismiss#DISMISS:44547e6662ab
66
+ dismiss-layer c81dadfa632c ui/dismiss-layer#Layer:1739bdeed158 ui/dismiss-layer#useDismissLayer:fc45673b9550 ui/dismiss-layer#openLayers:dbe6494f9d41
67
+ donut 778a867b06e0 ui/elements/donut#DonutProps:3b9e7fde51af ui/elements/donut#Donut:394c3abab12b ui/elements/donut.works#uses:f8d2db81931c ui/elements/donut.works#slice:1c42064c095a
68
+ drag 0ef5149ec5b9 ui/drag#EDGE_SCROLL_DEFAULTS:162de3815f33 ui/drag#Subject:c27b664a52fd ui/drag#DragSession:6af215ec8136 ui/drag#dragSession:e84fc1b5ed17 ui/drag#subscribeDrag:c456c983029f ui/drag#DragStatus:4440e8c46de5 ui/drag#dragStatusOf:df66d31d913f ui/drag#Scroller:038eab5f1ca9 ui/drag#Layout:8a03934bc399 ui/drag#DOM_LAYOUT:a4ae951f0933 ui/drag#setLayout:5e8ae80ca924 ui/drag#currentLayout:23ed529a101a ui/drag#claimGesture:d7ff15860d3c ui/drag#releaseGesture:48d5e5330326 ui/drag#gestureClaim:65fda728778f ui/drag#DropTarget:bff392b218d8 ui/drag#registerTarget:8a22941d233a ui/drag#targetFor:ca512db492ae ui/drag#innermostTarget:8f13034f8379 ui/drag#BeginDrag:06a945bd02b8 ui/drag#beginDrag:8993a12ea898 ui/drag#MoveDrag:40d697607f2c ui/drag#moveDrag:5e744e28a670 ui/drag#collect:87adb0b806fb ui/drag#endDrag:e84fc1b5ed17 ui/drag#resetDrag:a3965c1dfabe ui/drag#dwell:696612acada0 ui/drag#accepted:b2c139a84a5a ui/drag#EdgeScrollTuning:8656a344cfa0 ui/drag#edgeScroll:54f1744007c7 ui/drag#pullEdges:93e827aaa0b8
69
+ drop 07bbafbbbfa5 ui/animations/anm_drop#DROP:28d834809d56
70
+ each 99eb68bf0b39 ui/elements/each#EachProps:83129dd2b3ac ui/elements/each#Each:e6f142a2d09c ui/elements/each.works#shows:ad356e86f65d
71
+ element-rows 17e6806e3269 ui/elements#ELEMENTS:8f09f1d86714
72
+ elements-writer 07ccd1b33b73 ui/generators/elements#pascal:ff8fa0760be2 ui/generators/elements#OWNED_AT:7fac350f2d5d ui/generators/elements#owned:19dbe2a693ea ui/generators/elements#translated:0ee7c254775e ui/generators/elements#CARRIES:4de2138e3a11 ui/generators/elements#READINGS:4de2138e3a11 ui/generators/elements#declared:74cde91fc910 ui/generators/elements#wears:a91b72bd4390
73
+ elevated 498ed7e13271 ui/materials/mat_elevated#ELEVATED:f1d54bdaf726
74
+ empty 408cc55e3924 ui/elements/empty#EmptyProps:e89b67d88a13 ui/elements/empty#Empty:02e6deb405b0
75
+ en-catalog 975f32111040 ui/i18n/catalogs/en#en:f72fd845118b ui/i18n/catalogs/en#EnCatalog:07aac6125d69
76
+ fall b9051b59c4eb ui/animations/anm_fall#FALL:de7c5232ae66
77
+ field d0f76e98261b ui/elements/field#FieldProps:f6208a53a0dd ui/elements/field#Field:38e7e6136c67 ui/elements/field.works#uses:b460b57a1079 ui/elements/field.works#entry:ed11af6bd73c ui/elements/field.works#shown:450fd3b336bc
78
+ flash 069f70cedec1 ui/animations/anm_flash#FLASH:bb0d6061b2a8
79
+ flat b77b9e10eb88 ui/materials/mat_flat#FLAT:45034ea327e8
80
+ focus-scope c872a7d46e1b ui/focus-scope#tabbables:6dc1a8ed6338 ui/focus-scope#useFocusScope:4c9b51943dba
81
+ fonts b0a63e294524 ui/fonts#FACES:d0c818c9b4e2 ui/fonts#Face:65b392495807 ui/fonts#FontFamily:a5184b2dfb4c ui/fonts#FontSet:9f12cc81549d ui/fonts#defineFontSet:28d60920ecaf ui/fonts#fontSets:b79664265bb8 ui/fonts#fontSet:d3b23f97c463 ui/fonts#fontFaces:3ccbfc44dc32 ui/fonts#fontModules:3ccbfc44dc32 ui/fonts#fontIn:947791605637 ui/fonts#fontVariable:0b2ea3f92138 ui/fonts#fontStack:0bb08ee73396 ui/fonts#fontFor:1ed2cf132c34 ui/fonts#FontRole:bcde61774ad8 ui/fonts#FontRoleId:df296a09b71d ui/fonts#ROLE_IDS:11cdcc1f7f95 ui/fonts#DEFAULT_ROLE:60b8b8b397b0 ui/fonts#SET_ROW:00b33e3ffbf1 ui/fonts#holds:66da16a1d8a6 ui/fonts#FONTS:a4cd8dbc5c1b ui/fonts#classOfRole:ff8fa0760be2 ui/fonts#settingsOf:a2e6277c42f5 ui/fonts#roleClass:b3e7d41fde38 ui/fonts#familyFor:68125aabf80b ui/fonts#setNamed:c3ef0235837e
82
+ framed 36372f49dd19 ui/variants/var_framed#FRAMED:7603b136eda5
83
+ funnel f40085ae814c ui/elements/funnel#FunnelProps:429c72e96da9 ui/elements/funnel#Funnel:346fda430d23 ui/elements/funnel.works#uses:75344a7846bb ui/elements/funnel.works#sized:26f9281d9d39 ui/elements/funnel.works#shown:cc4f256199ff
84
+ gauge cd51dc0a77fe ui/elements/gauge#GaugeProps:69bb45d0d458 ui/elements/gauge#Gauge:f3902bbbcb90 ui/elements/gauge.works#uses:1ea30b999ca0 ui/elements/gauge.works#track:9017e22c6cd9 ui/elements/gauge.works#needle:ffb05fac60d7
85
+ glass 4f712c474709 ui/materials/mat_glass#GLASS:e8983a778649
86
+ glow f27e9c60847a ui/animations/anm_glow#GLOW:b75cde1c65e8
87
+ glyph d7479eeda99b ui/elements/glyph#GlyphProps:4106330e88f5 ui/elements/glyph#Glyph:b49fddd10040 ui/elements/glyph.works#drawn:f45ca9f62049 ui/elements/glyph.works#shows:881db1c0701a
88
+ glyph-plain db2198da017a ui/variants/var_glyph-plain#GLYPH_PLAIN:d6228326b2bf
89
+ grid 3abfdec9d4bb ui/elements/grid#GridProps:ad269764b266 ui/elements/grid#Grid:8e4ad19dcc06
90
+ heatmap 9521d967dd16 ui/elements/heatmap#HeatmapProps:b147106482f2 ui/elements/heatmap#Heatmap:4eed2b5e160c ui/elements/heatmap.works#uses:a0768529ca8f ui/elements/heatmap.works#sized:55318f305b27
91
+ hit-box f48ff72bbe1f ui/elements/hit-box#HitBoxProps:3edc4ed422b1 ui/elements/hit-box#HitBox:d778244710bb ui/elements/hit-box.works#Axis:33c35b0ffe72 ui/elements/hit-box.works#uses:2a6d2c718e38 ui/elements/hit-box.works#wires:1cddad8cf225 ui/elements/hit-box.works#shown:82f106431cdf
92
+ i18n-types 2b3358461d33 ui/i18n/types#Money:5ccc2e8715d7 ui/i18n/types#Locale:bb3a9997b027 ui/i18n/types#MessageParams:c8b98c9ef662 ui/i18n/types#DeclaredMessage:15146945b7f9 ui/i18n/types#msg:6f4ce4ea0ad1 ui/i18n/types#MessageEntry:a3011654f357 ui/i18n/types#RequiresExplicitParams:9afc22df209f ui/i18n/types#ValidEntry:55d6c8d1b432 ui/i18n/types#CatalogShape:035eff70ed94 ui/i18n/types#ParamsOf:f11c778e63a5 ui/i18n/types#Translator:bc6ce843db37 ui/i18n/types#entryText:8f7f9b6fb21b ui/i18n/types#defineCatalog:67309cff79a2
93
+ i18n-writer 7326af36633d ui/generators/i18n#walk:2b0caf2efd3b ui/generators/i18n#keyProps:2c319c8c1507 ui/generators/i18n#keysIn:4c2dd7de01b6 ui/generators/i18n#readWording:97cf5049ec86 ui/generators/i18n#wordingFile:40969fbfabda
94
+ icon-sets 2ee5c4cf60f4 ui/icons#IconSet:7d3af541078c ui/icons#ICON_TARGET:0693728301e7 ui/icons#DEFAULT_ICON:b343f4fca562 ui/icons#sizeRows:6a8284e80b30 ui/icons#sizeNamed:7ad5f68e2c86 ui/icons#strokeFor:d15243b42f12 ui/icons#BRAND_MODULE:696f4addc79d ui/icons#defineIconSet:8e7d61a3595e ui/icons#defineIcon:6722a9c4f6e3 ui/icons#iconSets:2e3d0c4f422e ui/icons#iconSet:77161f6cbc87 ui/icons#iconNames:3ccbfc44dc32 ui/icons#iconIn:a393ee7ee7f8 ui/icons#brandExport:b872f6e302c0 ui/icons#SET_ROW:dcaa0bb52c1b ui/icons#SIZE_PREFIX:0ca5e5e4c9eb ui/icons#holds:66da16a1d8a6 ui/icons#ICONS:a4cd8dbc5c1b ui/icons#drawnAs:39b2d0b66e76 ui/icons#setNamed:b78f1dfb90c3 ui/icons#IconComponent:3519fd0448c9 ui/icons#installIcons:4bca1126f326 ui/icons#installedSet:ea11a029b2ff ui/icons#iconSize:051b1f5bfa93 ui/icons#drawnFor:77cf59fc0e97
95
+ icons-writer 580af8ee6f97
96
+ image 967499e9a772 ui/elements/image#ImageProps:a32890747c93 ui/elements/image#Image:cec94eb7378c
97
+ input ae7068e4a182 ui/variants/var_input#INPUT:27581d657b96
98
+ lift 8464180c5da1 ui/animations/anm_lift#LIFT:a63fd1fc6227
99
+ line-chart 6863d667c0e7 ui/elements/line-chart#LineChartProps:dae99c7ce631 ui/elements/line-chart#LineChart:15cfdd29751a ui/elements/line-chart.works#lines:68f3cc937de0 ui/elements/line-chart.works#uses:ca3cae02625f ui/elements/line-chart.works#drawing:4fc88b6eb2c8
100
+ link 13b71587b0be ui/elements/link#LinkProps:f8e3636cb290 ui/elements/link#Link:fa8f20713d7c ui/elements/link.works#uses:bafbafc2c328
101
+ link-inline 2336d8bdc7ef ui/variants/var_link-inline#LINK_INLINE:828401d1d8fc
102
+ list-row a59bce53118a ui/variants/var_list-row#LIST_ROW:002f108b821a
103
+ lit dca654b7cfdb ui/materials/mat_lit#LIT:1355d07bd5ec
104
+ locales 81f3eca3ddf7 ui/i18n/locales#REFERENCE_LOCALE:ec7df020bf1e ui/i18n/locales#LocaleDecl:bc1f89b83d74 ui/i18n/locales#defineLocale:79994004ee18 ui/i18n/locales#locales:b65c2631bfae ui/i18n/locales#locale:a1be3346f05c ui/i18n/locales#resetLocales:a3965c1dfabe
105
+ localizations 3f9e0fbb2fda ui/localizations#fileFor:ea4183b63099 ui/localizations#SOURCE_ROW:0b2b038d7a60 ui/localizations#holds:66da16a1d8a6 ui/localizations#declares:44fc181d2f2e ui/localizations#LOCALIZATIONS:5aa81ac1526e ui/localizations#languagesIn:3c191d1da982 ui/localizations#sourceIn:ca722c0439bb
106
+ material-shape 355d5d618b85 ui/material#Setting:426554dca885 ui/material#BOUND:60b3bf658f7c ui/material#Material:10384161b39a ui/material#FREE:e3380039b05d ui/material#material:1cf1cf5e74a4 ui/material#composed:40eef03784ab ui/material#compose:e3e390f844a8 ui/material#keyframesOf:d2489886fde6
107
+ materials 94fd1918bc51 ui/materials#MATERIALS:d99dbff5a125 ui/materials#nameOf:ff8fa0760be2 ui/materials#seeds:950628166bbd ui/materials#mismatched:5679b09f6252 ui/materials#orphaned:8865319ec4c3 ui/materials#unguarded:2402578021fc ui/materials#guarding:b0bd4f259649
108
+ media f10dbbca543f ui/elements/media#MediaProps:a6f78a4b17e9 ui/elements/media#Media:dcaabbc68839
109
+ menu 4f69ea6a415f ui/elements/menu#MenuProps:d36936ad43b5 ui/elements/menu#Menu:fba867d9c33c ui/elements/menu.works#MenuItem:02e633272dfb ui/elements/menu.works#Presented:5e5067bd5ae0 ui/elements/menu.works#MenuRow:a802423247f1 ui/elements/menu.works#uses:d6ce5f7df945 ui/elements/menu.works#opener:c69eaabd4bec ui/elements/menu.works#portal:52c185db8c74 ui/elements/menu.works#listing:f17800975fbc ui/elements/menu.works#row:565839797be7 ui/elements/menu.works#measured:f814b8fb25f8
110
+ message-format 093c4f86bcb3 ui/i18n/format#MissingParamError:aa7e44c63280 ui/i18n/format#ParamTypeError:c68d491e4531 ui/i18n/format#FormatOptions:78186c114b44 ui/i18n/format#formatMessage:8bcdb57eb68c
111
+ message-parse 8bed438a6add ui/i18n/parse#Money:a00bde948c6d ui/i18n/parse#Node:fb8f1cd0fbe1 ui/i18n/parse#MessageSyntaxError:f55480cb6fe5 ui/i18n/parse#parseMessage:789d981d91a9 ui/i18n/parse#messageArgs:9c3bae9eeab2
112
+ modes 8637df698b4f ui/modes#holds:09551d35202f ui/modes#MODES:bc3de2fdf92a
113
+ money 41ccdd66db7c ui/elements/money#MoneyProps:bfccaebe6f06 ui/elements/money#Money:32e4d81b941e ui/elements/money.works#shows:7ad4291b35f4
114
+ moulded 882a86e690d3 ui/materials/mat_moulded#MOULDED:f4751a918421
115
+ navigation 0e47d978cd87 ui/navigation#ScreenName:bbfc0371f587 ui/navigation#trailTo:0fb587559b4b
116
+ nudge 7f4195c8619c ui/animations/anm_nudge#NUDGE:35f48565000a
117
+ pagination c62506f06693 ui/elements/pagination#PaginationProps:ccf8727f774b ui/elements/pagination#Pagination:1c1e9106ea48 ui/elements/pagination.works#steps:61d0370471b4 ui/elements/pagination.works#step:ffee64ebf86f
118
+ pop-in 0f5ed5f1732d ui/animations/anm_pop_in#POP_IN:99aab36dd6e6
119
+ pop-out bdb26827c938 ui/animations/anm_pop_out#POP_OUT:09d7a8b68046
120
+ positioning 3a289987f9e8 ui/positioning#AnchorOptions:4c3402cd1a69 ui/positioning#Position:9c70539bcb3d ui/positioning#positionOf:3c3c43bfe549 ui/positioning#useAnchored:593ec514203e
121
+ presentation 8ed76916e8ba ui/door#PRESENTATIONS:0b4b6dd8a649 ui/door#Presentation:5378f3ae7da7 ui/door#PRESENTATION_BEHAVIOUR:11cc9a11a516 ui/door#ClockSubscriber:cd2a448da470 ui/door#Ticker:f3fd8773c688 ui/door#Clock:da7deb95122a ui/door#Surface:7d312cda7a5a
122
+ presented 67a05bb9e520 ui/presented#PresentedProps:ed075c0f7d0b ui/presented#Presented:b5610082d862
123
+ press 8570528dfb22 ui/animations/anm_press#PRESS:93f066007712
124
+ progress f79fdd4eb7bf ui/elements/progress#ProgressProps:754b505c5be3 ui/elements/progress#Progress:1072cc0de3a1 ui/elements/progress.works#measured:56dd5b194e54
125
+ provider 1ea77f0a6489 ui/provider#ThreadUiProps:f9e8a8ef7cb8 ui/provider#ThreadUi:e310895b7a7c
126
+ pulse f90915f67e93 ui/animations/anm_pulse#PULSE:6c5cbf0c4759
127
+ radio-group c903bacce153 ui/elements/radio-group#RadioGroupProps:a44a0a13b29e ui/elements/radio-group#RadioGroup:e53bf0a781d6 ui/elements/radio-group.works#uses:93b2bbc321ab ui/elements/radio-group.works#option:a16909c8c8c1 ui/elements/radio-group.works#shown:5e7a9552c0ad
128
+ react-writer b60e49e2ab21 ui/generators/react#compiled:59c5d77cc186 ui/generators/react#ungated:6de55407f5b9 ui/generators/react#loader:08e5438231dd ui/generators/react#plugin:b70a97bb6556
129
+ render-loop be960ec1a828 ui/render-loop#RenderLoop:26cd3aa222be ui/render-loop#RenderLoopError:79c4d40f96f7 ui/render-loop#useRenderLoopDetector:90e66afe4c82
130
+ rise 61ded997838c ui/animations/anm_rise#RISE:d178eebd2d96
131
+ route-grammar 908017e6633d ui/islands/map#ViewId:1803b726a3f2 ui/islands/map#ScreenName:1803b726a3f2 ui/islands/map#ScreenSchema:e34dac772797 ui/islands/map#Screen:d89925503325 ui/islands/map#LinkSchema:2cffc4530649 ui/islands/map#Link:cddf1e8c9a89 ui/islands/map#MapSchema:7534b09abac3 ui/islands/map#MapIsland:cd73cbe9975f
132
+ routes-writer 663828cf2b4f ui/generators/routes#typedRoute:b0bd4f259649 ui/generators/routes#viewsIn:9945a607f187 ui/generators/routes#holding:d2af8731dc6b
133
+ roving-focus cb0ac52a89ee ui/roving-focus#ITEM_ATTR:8b73d7f449d1 ui/roving-focus#RovingOptions:99d861749f5e ui/roving-focus#typeaheadMatch:03faca7fba5b ui/roving-focus#useRovingFocus:3b7852d6152b
134
+ row 3edfc1bb496b ui/elements/row#RowProps:ad269764b266 ui/elements/row#Row:569a64b06443
135
+ rule 378160180b5b ui/variants/var_rule#RULE:27e702157c9c
136
+ scatter 22d298a2efa2 ui/elements/scatter#ScatterProps:91be4e563d68 ui/elements/scatter#Scatter:601a9061ff54 ui/elements/scatter.works#uses:4fc5950fb41d ui/elements/scatter.works#point:d986d6e7e804
137
+ screens 87e6882810a4 ui/screens#declares:cad46cab877c ui/screens#SCREENS:2412f9a2cc25 ui/screens#nameOf:38eeb450b217 ui/screens#PAGE:b7bbe39b7b35 ui/screens#presentedIn:cb083ae57ffe ui/screens#routeFor:9212f2e08bc1 ui/screens#pageAt:8accc096b285 ui/screens#entryAmong:e8e913cd736e ui/screens#seeds:950628166bbd
138
+ scroll-lock 0f916058a352 ui/scroll-lock#lockScroll:1ebfb8414d04 ui/scroll-lock#scrollLocks:dbe6494f9d41
139
+ select 97ead0eb87a4 ui/elements/select#SelectProps:e5720f21652e ui/elements/select#Select:304fef768983 ui/elements/select.works#does:eae69973c066
140
+ separator 03aeb2b5f1bb ui/elements/separator#SeparatorProps:39c0ed47c8a0 ui/elements/separator#Separator:ef292b7118cf
141
+ series c57f94d44322 ui/series#Oklch:c89405845570 ui/series#hexToOklch:4789883600c4 ui/series#oklchToHex:addb0ebe3e77 ui/series#seriesRamp:dcbdba1604ca ui/series#seriesColour:59e2788e6eda
142
+ shadow-token a853481182c9 ui/tokens/shadow#SHADOW:4be3d61d7b28
143
+ shake 823853a54116 ui/animations/anm_shake#SHAKE:0fa001de0cc4
144
+ show-reader 265e7f6c23c6 ui/generators/show#namedBy:512bfc15cc9b
145
+ signals 71b9ca638d39 ui/signals#SignalEntry:c4df440da285 ui/signals#holds:09920a64717d ui/signals#selectorOf:3760cece0feb ui/signals#SIGNALS:1e4ed72981ce ui/signals#EXCLUSIVE:9246e03a89ae ui/signals#coexist:40aac7cabc7c ui/signals#knowSignals:d809925e46fd ui/signals#signalNames:3ccbfc44dc32 ui/signals#isSignal:7ec24fea5b8b ui/signals#PointerSample:5d35cad46706 ui/signals#GestureFrame:eaf70a3d7781 ui/signals#GesturePhase:b48b44476bac ui/signals#Recognition:5803e495593d ui/signals#IDLE:8343023bcafc ui/signals#GestureEntry:2a90384c0121 ui/signals#defineGesture:f1b67e16a59e ui/signals#gestures:19649f79edf5 ui/signals#gestureFor:978e6ce3869c ui/signals#isGesture:7ec24fea5b8b ui/signals#gestureNames:3ccbfc44dc32 ui/signals#recognise:fac5ccc84865 ui/signals#SignalIssue:4165faba45aa ui/signals#checkInteractions:09d6e5b4183b
146
+ skeleton c3c54fdabacc ui/elements/skeleton#SkeletonProps:4757f547cc95 ui/elements/skeleton#Skeleton:37f365492a9d
147
+ skeleton-block 1d031eb6fe66 ui/variants/var_skeleton-block#SKELETON_BLOCK:c18f7e7cf3dc
148
+ slide-in-left a2090e0e36e3 ui/animations/anm_slide_in_left#SLIDE_IN_LEFT:3f466d0564c7
149
+ slide-in-right 03201522158d ui/animations/anm_slide_in_right#SLIDE_IN_RIGHT:0c4d922d831e
150
+ slide-out-left e770370b0540 ui/animations/anm_slide_out_left#SLIDE_OUT_LEFT:880a18c52b89
151
+ slide-out-right c2a861af9c90 ui/animations/anm_slide_out_right#SLIDE_OUT_RIGHT:a7faf4d2b78c
152
+ slider 29d634b58d3f ui/elements/slider#SliderProps:53c464f32e4b ui/elements/slider#Slider:29e115f5629b ui/elements/slider.works#does:1c10d363e445
153
+ sparkline d000a9f40102 ui/elements/sparkline#SparklineProps:30103b965675 ui/elements/sparkline#Sparkline:541243ee9db2 ui/elements/sparkline.works#uses:b6cc82bd5732 ui/elements/sparkline.works#drawing:62c65ae3b123
154
+ spin 49b33c0bd6ae ui/animations/anm_spin#SPIN:30e735ce0bd4
155
+ spinner dc5d9825ce24 ui/elements/spinner#SpinnerProps:e89b67d88a13 ui/elements/spinner#Spinner:e38e42d0b0c5
156
+ spinner-turning 59556dee7c9f ui/variants/var_spinner-turning#SPINNER_TURNING:0c7bdb2fdf29
157
+ stack 2eeddd1a72a3 ui/elements/stack#StackProps:ad269764b266 ui/elements/stack#Stack:fdd85c412df6
158
+ stat c691e09c06e7 ui/elements/stat#StatProps:96cd57b2e8e4 ui/elements/stat#Stat:fa6a34480102 ui/elements/stat.works#shown:25c9bae03897
159
+ stat-tile c8717d893ac4 ui/variants/var_stat-tile#STAT_TILE:1b611bad8d11
160
+ styleguide-shape fc172d4e9545 ui/styleguide#StyleGuide:872bb558460e ui/styleguide#themedBy:b1e17b642d8c ui/styleguide#kindsHeld:3ccbfc44dc32 ui/styleguide#shapeOf:0191a88f5272 ui/styleguide#chosen:98aeef39cf52 ui/styleguide#shifted:9fa8d7f1bbec
161
+ styleguides c783e16f6e2e ui/styleguides#holds:66da16a1d8a6 ui/styleguides#STYLEGUIDES:e8e2b9e43e3d
162
+ styles-writer 7757e1aed2a5
163
+ surface fedb1c18423f ui/elements/surface#SurfaceProps:ad269764b266 ui/elements/surface#Surface:553e947ae889 ui/elements/surface.works#uses:8b8e3a9fe8d0
164
+ swell 55b58053ed5a ui/animations/anm_swell#SWELL:e66f7cdef31a
165
+ tab-bar 27306b5f110a ui/variants/var_tab-bar#TAB_BAR:5b7295b1d4a0
166
+ table 45e6a6608811 ui/elements/table#TableProps:96fb88caf788 ui/elements/table#Table:42c3ac158f4e ui/elements/table.works#uses:3085121fd6b4 ui/elements/table.works#shown:75fca49b7d63 ui/elements/table.works#heading:d9482c8fbf24
167
+ tabs c7b67f52b340 ui/elements/tabs#TabsProps:cf28cb6ed29f ui/elements/tabs#Tabs:bdf4c5c4a04a ui/elements/tabs.works#uses:1e91366e992b ui/elements/tabs.works#strip:24729769900c ui/elements/tabs.works#tab:13a2e9b7ad30 ui/elements/tabs.works#opened:768544dc2ba6 ui/elements/tabs.works#panel:a066bd3e1ba8 ui/elements/tabs.works#shown:c14c6452def5
168
+ tap-target 3b1d83984a4c ui/variants/var_tap-target#TAP_TARGET:f83b88aa706b
169
+ text 0f03b3b5bce7 ui/elements/text#TextProps:81c96ab6243e ui/elements/text#Text:7e9a751cc97c
170
+ textarea 76880dee05ad ui/elements/textarea#TextareaProps:9004657bc84f ui/elements/textarea#Textarea:e9304e28d0e9 ui/elements/textarea.works#does:9fddd3177d22
171
+ themes 578150eec4c9 ui/themes#holds:e5c0c9297825 ui/themes#THEMES:66852c882bbe
172
+ time 9a277ad00e23 ui/elements/time#TimeProps:c654fa2d8b40 ui/elements/time#Time:f1090f04bc57 ui/elements/time.works#uses:a10fbc45685b ui/elements/time.works#shows:c92126ddc36e
173
+ toggle 9db23c69b51c ui/elements/toggle#ToggleProps:fefe061bcc79 ui/elements/toggle#Toggle:5e938057fbfe ui/elements/toggle.works#does:9ca75ef2795c
174
+ token-shape d072589be2f5 ui/token#Token:8d672efc335b ui/token#Wearing:10a6833bf679 ui/token#Holds:e30cbdfece90 ui/token#nameOf:7ad5f68e2c86 ui/token#naming:107c722f7b02 ui/token#held:a2b8fff9fbaa ui/token#sheeted:f0b5eed68e64
175
+ tokens 8d3bdf2dc147 ui/tokens#holds:da8687a09455 ui/tokens#declares:040f49b399ed ui/tokens#TOKENS:9e4c1275ec9c ui/tokens#nameOf:ff8fa0760be2 ui/tokens#seeds:950628166bbd ui/tokens#mismatched:5679b09f6252 ui/tokens#orphaned:579e61bf7b35
176
+ tooltip c41d8c367003 ui/elements/tooltip#TooltipProps:c49189b9f17a ui/elements/tooltip#Tooltip:dea7727a0321 ui/elements/tooltip.works#uses:d00d3ada96f8 ui/elements/tooltip.works#showing:cae65122fed6 ui/elements/tooltip.works#bubble:90bd36385377 ui/elements/tooltip.works#measured:2df010cbbfb8
177
+ translator 2e6486cb17d5 ui/i18n/translator#UnknownMessageKeyError:8dd90403c7fe ui/i18n/translator#TranslatorOptions:78186c114b44 ui/i18n/translator#createTranslator:4eb69b879704
178
+ ui-attach ff591a73fcbd ui/attach#ATTACH_HOME:16475c413846 ui/attach#ATTACH:8b0b999ca5c9
179
+ validators e648b6cfc317 ui/validators#ENTRY_MODES:6238d04fe5a8 ui/validators#KEYBOARDS:38e63312aeee ui/validators#EntryMode:18d83f0e69e6 ui/validators#Keyboard:2316810a5de3 ui/validators#ValidateResult:530bdd02c4e4 ui/validators#valid:3ce6786a6b1c ui/validators#invalid:46bcfbeb6f8e ui/validators#ValidatorContext:cf494e7f96b8 ui/validators#validators:0fd6015be8fa ui/validators#hasValidator:7ec24fea5b8b ui/validators#validatorFor:eaa1acab74f0 ui/validators#runValidator:3fc93347d97f ui/validators#formatValue:062cca5c1239 ui/validators#EntryConstraints:a5662931f360 ui/validators#entryConstraints:676ee3d7fbda ui/validators#acceptsKeystroke:cb848d0041fa ui/validators#applyMask:3f93a2d6184a ui/validators#minorUnits:921fda509ea5 ui/validators#evaluateMoney:e710eca6aed8 ui/validators#limited:77aa553c4b7a
180
+ value f85e6f17b76b ui/elements/value#ValueProps:3346fb6b4e16 ui/elements/value#Value:59ceafd2bbba ui/elements/value.works#shows:07daabb6f547
181
+ variant-rows 601640ae7284 ui/variants#VARIANTS:054eaa012e24
182
+ variant-shape 175a5b8b3821 ui/variant#Variant:ab4153351f71 ui/variant#propertiesHeld:f2f795682efa ui/variant#freeHeld:3ccbfc44dc32 ui/variant#structural:74cde91fc910 ui/variant#looking:25ed76b8a1b8 ui/variant#variant:58068a021fa3 ui/variant#boundHeld:f2f795682efa ui/variant#camel:ff8fa0760be2 ui/variant#classOf:ff8fa0760be2 ui/variant#classOfElement:ff8fa0760be2 ui/variant#classOfComposition:ff8fa0760be2 ui/variant#classOfScreen:ff8fa0760be2 ui/variant#unreacted:c61cf4383338 ui/variant#complete:068de9765c79 ui/variant#statesOf:c8962010907d ui/variant#under:265eab85913f ui/variant#undeclaredStates:11961d12ec9d
183
+ variants-seeder 5d37b937c531 ui/generators/variants#nameOf:ff8fa0760be2 ui/generators/variants#seeds:e5c803f28183 ui/generators/variants#mismatched:5679b09f6252 ui/generators/variants#orphaned:8865319ec4c3 ui/generators/variants#unguarded:2402578021fc ui/generators/variants#guarding:b0bd4f259649
184
+ wobble edf6e636810f ui/animations/anm_wobble#WOBBLE:6d3b15f44665
185
+ wrappers 0328fc1efdb7 ui/wrappers#Appearance:ec3028b4b84a ui/wrappers#UiConfig:d899ce533c78 ui/wrappers#UiContext:96dbef1bc6b9 ui/wrappers#UiProvider:49c08762a14c ui/wrappers#useUi:0734231ecf54 ui/wrappers#SurfaceRequest:c8015cd4cd32 ui/wrappers#useSurface:4b8b39afaf79 ui/wrappers#Press:77733f69fb6e ui/wrappers#pressOf:4bdd7232323b ui/wrappers#PressOrigin:3daa7623dd12 ui/wrappers#pressing:65fa29c030f0 ui/wrappers#usePress:486493cd9a8b ui/wrappers#useVisibility:4d1b5ddb676e ui/wrappers#ScreenOptions:244dc14dd3b0 ui/wrappers#ElementBody:71817b4c2a87 ui/wrappers#Element:ab34dbdc55be ui/wrappers#element:a7e4708803dc ui/wrappers#composition:d129e11ec13b ui/wrappers#ScreenControls:6b17634c6ed4 ui/wrappers#useView:97298a47e810 ui/wrappers#screen:80f46a5e3cda ui/wrappers#behaviourOf:5841f6ad0abe
186
+ zoom-in de9f521f292c ui/animations/anm_zoom_in#ZOOM_IN:e39ceba8428e
187
+ zoom-out 841dc6cd15af ui/animations/anm_zoom_out#ZOOM_OUT:0c67b3faf366
188
+ -->
189
+
3
190
  ## 0.1.9
4
191
 
5
192
  what it exports is untouched and its code moved.
package/dist/ui/attach.js CHANGED
@@ -55,13 +55,7 @@ const SHIPPED = [
55
55
  into: 'ui.ts',
56
56
  list: 'GENERATORS',
57
57
  id: 'routes-generator',
58
- source: " {\n id: 'routes-generator',\n at: 'node_modules/@prestack/thread-ui/dist/ui/generators/routes.js',\n describes: 'The generator of the routes, the map, the pages a browser reaches, and the root layout. Nobody types a route. The first page an app declares answers `/`, every other page answers its own name, and a sheet, popover, overlay or toast has no route, so the page under each route follows from the screens sheet. It writes the row on each screen that names that page too, so a screen that stops being the first page, or stops being a page at all, takes its page with it. It reads every `navigateTo` the screens and their compositions hold and writes the map: from which screen, through which button, to which screen. A button is the only thing that makes a link. A press that names a sheet, popover, overlay or toast is a link like any other, and the client half opens that screen where somebody already is. A name no screen has, a destination not written out as a name, and a route typed into a screen are each refused by name. The layout imports what the other generators produce. Run with `--check`, the mode the gate runs it in, it writes nothing and refuses a hand edit to any of these files, exactly as the stylesheet is refused.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n derives: [\n {\n id: 'layout',\n at: 'app/layout.tsx',\n describes: 'The root layout — it imports what the other generators produce and hands the wording to the provider, so the one file every page passes through is a consequence of the declarations rather than something somebody keeps in step with them.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'door',\n at: 'app/_generated/door.tsx',\n describes: 'This app\\'s own client half. It is written when the app has operations a page can reach, or screens a press can move between. The provider takes something to run an operation with and something to move between screens with, and the layout cannot hand either over: the layout is a server component and the provider is a client one, and a function does not cross that line — \"Functions cannot be passed directly to Client Components\", measured 2026-09-01 as a page that returned 500 on every request while the gate was green. So both are made on the side that uses them. This file imports what the operations half derived and the map, and hands them over itself. The layout renders this and passes only the actor, which is data and crosses the way data does.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'bundler',\n at: 'next.config.js',\n describes: 'What Next reads to serve this app. It is written whenever the manifest runs Next, whether or not this app declares a screen, because it states three things a served app needs and one of them is that Next may not write files of its own into a tree where every file is declared. It also refuses to compile anything until the gate has passed, and names where the bundler resolves from when the packages live outside this app — which is when a bundler cannot see them and every import fails at run time while the compiler is content. It opens the disk itself rather than through the disk this framework declares, because Next reads this file before any TypeScript in this tree has been loaded — a file that gates the build cannot import the thing it is gating.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'map',\n at: 'app/_generated/map.ts',\n describes: 'Every screen this app has, where each one lives, and every way from one to another: from which screen, through which button, to which screen. It is read off every `navigateTo` the screens and their compositions hold, so a button is the only thing that makes a link. The client half moves through it: a press that names a page goes to the address held here, and a press that names a sheet, popover, overlay or toast opens it where somebody already is. A screen no button reaches is printed by `thread routes` rather than found by somebody looking for it.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n ],\n },",
59
- },
60
- {
61
- into: 'ui.ts',
62
- list: 'GENERATORS',
63
- id: 'dev-generator',
64
- source: " {\n id: 'dev-generator',\n at: 'node_modules/@prestack/thread-ui/dist/ui/generators/dev.js',\n describes: 'The command that runs the app, and the only one here that puts a pixel on a screen — until it existed the framework could build an interface nothing in it could start, because a gate answers whether declarations agree with files and cannot answer whether a button is where somebody says it is not. It is two halves in one word. First it settles this tree: every generator the declarations name is run until the checks stop complaining, which is what `thread create` and `thread run trial` already did and what starting the app was alone in not doing — an app had `thread gate` in front of `next dev`, and a gate refuses a stale file rather than writing it. Then it runs the gate, and then starts Next itself, because Next is what this package installs to serve an app and the manifest carries no script for it. The generators are read off the rows, and `next dev` is the one thing written down here: this package serves an app with Next and nothing else. `--ship` swaps the entry for the build. Alone among the generators it carries no `runs:`, because a server stays up until it is stopped and a gate step that never returns is a gate that hangs.',\n version: 1,\n by: 'thread dev',\n },",
58
+ source: " {\n id: 'routes-generator',\n at: 'node_modules/@prestack/thread-ui/dist/ui/generators/routes.js',\n describes: 'The generator of the routes, the map, the pages a browser reaches, and the root layout. Nobody types a route. The first page an app declares answers `/`, every other page answers its own name, and a sheet, popover, overlay or toast has no route, so the page under each route follows from the screens sheet. It writes the row on each screen that names that page too, so a screen that stops being the first page, or stops being a page at all, takes its page with it. It reads every `navigateTo` the screens and their compositions hold and writes the map: from which screen, through which button, to which screen. A button is the only thing that makes a link. A press that names a sheet, popover, overlay or toast is a link like any other, and the client half opens that screen where somebody already is. A name no screen has, a destination not written out as a name, and a route typed into a screen are each refused by name. The layout imports what the other generators produce. Run with `--check`, the mode the gate runs it in, it writes nothing and refuses a hand edit to any of these files, exactly as the stylesheet is refused.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n derives: [\n {\n id: 'layout',\n at: 'app/layout.tsx',\n describes: 'The root layout — it imports what the other generators produce and hands the wording to the provider, so the one file every page passes through is a consequence of the declarations rather than something somebody keeps in step with them.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'door',\n at: 'app/_generated/door.tsx',\n describes: 'This app\\'s own client half. It is written when the app has operations a page can reach, or screens a press can move between. The provider takes something to run an operation with and something to move between screens with, and the layout cannot hand either over: the layout is a server component and the provider is a client one, and a function does not cross that line — \"Functions cannot be passed directly to Client Components\", measured 2026-09-01 as a page that returned 500 on every request while the gate was green. So both are made on the side that uses them. This file imports what the operations half derived and the map, and hands them over itself. The layout renders this and passes only the actor, which is data and crosses the way data does.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'bundler',\n at: 'next.config.js',\n describes: 'What Next reads to serve this app. It is written whenever the manifest runs Next, whether or not this app declares a screen, because a served app needs what it says. Next may not write files of its own into a tree where every file is declared. A build compiles a server that runs on its own, so an image of this app holds that server rather than the source of the framework. It also refuses to compile anything until the gate has passed, and names where the bundler resolves from when the packages live outside this app — which is when a bundler cannot see them and every import fails at run time while the compiler is content. It opens the disk itself rather than through the disk this framework declares, because Next reads this file before any TypeScript in this tree has been loaded — a file that gates the build cannot import the thing it is gating.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n {\n id: 'map',\n at: 'app/_generated/map.ts',\n describes: 'Every screen this app has, where each one lives, and every way from one to another: from which screen, through which button, to which screen. It is read off every `navigateTo` the screens and their compositions hold, so a button is the only thing that makes a link. The client half moves through it: a press that names a page goes to the address held here, and a press that names a sheet, popover, overlay or toast opens it where somebody already is. A screen no button reaches is printed by `thread routes` rather than found by somebody looking for it.',\n version: 1,\n by: 'thread routes',\n runs: 'thread routes --check',\n },\n ],\n },",
65
59
  },
66
60
  {
67
61
  into: 'ui.ts',
@@ -409,6 +403,11 @@ const LIBRARY = setNamed(ICONS.holds.find((one) => one.id === SET_ROW)?.is ?? ''
409
403
  export const ATTACH = {
410
404
  attaches: SEEDED.attaches,
411
405
  id: SEEDED.id,
406
+ ignores: ['.next/'],
407
+ scripts: {
408
+ build: 'next build',
409
+ start: 'next start',
410
+ },
412
411
  needs: {
413
412
  '@floating-ui/dom': '^1.7.0',
414
413
  '@floating-ui/react-dom': '^2.1.0',
@@ -24,13 +24,6 @@ export declare const DOORS: ReadonlySet<string>;
24
24
  export declare function reaching(at: string, text: string, elements: ReadonlySet<string>, declared: ReadonlySet<string>): readonly string[];
25
25
  export declare function compiledAt(at: string): string;
26
26
  export declare function settled(root: string, rows: readonly Threaded[], checking: boolean, by: string, kept: Set<string>): readonly string[];
27
- interface Reached {
28
- readonly from: string;
29
- readonly typed: boolean;
30
- }
31
- export declare function reachedIn(at: string, text: string): readonly Reached[];
32
- export declare const RUNTIME: readonly string[];
33
- export declare function emitting(root: string, entries: readonly string[], checking: boolean, kept: Set<string>): readonly string[];
34
27
  export declare function stale(root: string, kept: ReadonlySet<string>, checking: boolean): readonly string[];
35
28
  export declare const SCREENED_BY = "thread screens";
36
29
  export declare function handing(at: string, text: string): readonly string[];
@@ -39,4 +32,3 @@ export declare function seeds(rows: readonly Threaded[], held: (at: string) => b
39
32
  readonly path: string;
40
33
  readonly content: string;
41
34
  }[];
42
- export {};
@@ -1,11 +1,10 @@
1
1
  import { existsSync, readFileSync, readdirSync, rmSync, writeFileSync } from '@prestack/thread/integrations/disk';
2
- import { basename, dirname, join, relative } from 'node:path';
2
+ import { basename, join, relative } from 'node:path';
3
3
  import { argv, stdout } from 'node:process';
4
- import ts from 'typescript';
5
4
  import { SHAPED } from '@prestack/thread/core/init';
6
5
  import { exit, invoked } from '@prestack/thread/core/invoked';
7
6
  import { quoted, valuesIn } from '@prestack/thread/core/rows';
8
- import { THING, named as packageOf } from '@prestack/thread/core/scope';
7
+ import { named as packageOf } from '@prestack/thread/core/scope';
9
8
  import { findTree, inTree } from '@prestack/thread/core/tree';
10
9
  import { COMPILED } from '@prestack/thread/operations/capabilities';
11
10
  import { compiled } from './generators/react.js';
@@ -112,21 +111,6 @@ const REFUSED = {
112
111
  export function compiledAt(at) {
113
112
  return `${COMPILED}/${slashed(at)}`;
114
113
  }
115
- const ENDINGS = ['.tsx', '.ts'];
116
- function beside(root, where, said) {
117
- if (!said.startsWith(`${HOME}/`))
118
- return undefined;
119
- const tail = said.slice(HOME.length + 1);
120
- for (const ending of ENDINGS) {
121
- const at = `${COMPILED}/ui/${tail}${ending}`;
122
- if (!existsSync(join(root, at)))
123
- continue;
124
- const out = slashed(relative(dirname(where), at));
125
- return out.startsWith('.') ? out : `./${out}`;
126
- }
127
- return undefined;
128
- }
129
- const NAMED_IMPORT = /(['"])(@[^'"]+)\1/g;
130
114
  export function settled(root, rows, checking, by, kept) {
131
115
  const said = [];
132
116
  for (const row of rows) {
@@ -140,10 +124,7 @@ export function settled(root, rows, checking, by, kept) {
140
124
  }
141
125
  const where = compiledAt(row.at);
142
126
  kept.add(where);
143
- const text = (held.text ?? '').replace(NAMED_IMPORT, (whole, quote, said) => {
144
- const found = beside(root, where, said);
145
- return found === undefined ? whole : `${quote}${found}${quote}`;
146
- });
127
+ const text = held.text ?? '';
147
128
  const at = join(root, where);
148
129
  if (!checking) {
149
130
  writeFileSync(at, text, 'utf8');
@@ -156,133 +137,6 @@ export function settled(root, rows, checking, by, kept) {
156
137
  }
157
138
  return said;
158
139
  }
159
- const ORG = packageOf('ui').split('/')[0] ?? '';
160
- const CORE = packageOf('core');
161
- const FROM_CORE = `${COMPILED}/${THING}/`;
162
- export function reachedIn(at, text) {
163
- const file = ts.createSourceFile(at, text, ts.ScriptTarget.Latest, false, at.endsWith('.tsx') ? ts.ScriptKind.TSX : ts.ScriptKind.TS);
164
- const found = [];
165
- for (const one of file.statements) {
166
- if (!ts.isImportDeclaration(one) && !ts.isExportDeclaration(one))
167
- continue;
168
- const said = one.moduleSpecifier;
169
- if (said === undefined || !ts.isStringLiteral(said))
170
- continue;
171
- found.push({ from: said.text, typed: ts.isImportDeclaration(one) ? one.importClause?.isTypeOnly === true : one.isTypeOnly });
172
- }
173
- return found;
174
- }
175
- export const RUNTIME = ['wrappers.tsx', 'drag.ts', 'provider.tsx', 'islands/map.ts'];
176
- const NODE = /^node:/;
177
- function installs(root) {
178
- try {
179
- const held = JSON.parse(readFileSync(join(root, 'package.json'), 'utf8'));
180
- return new Set([...Object.keys(held.dependencies ?? {}), ...Object.keys(held.devDependencies ?? {})]);
181
- }
182
- catch {
183
- return new Set();
184
- }
185
- }
186
- function packaging(said) {
187
- return said.startsWith('@') ? said.split('/').slice(0, 2).join('/') : (said.split('/')[0] ?? said);
188
- }
189
- export function emitting(root, entries, checking, kept) {
190
- const has = installs(root);
191
- const from = join(root, 'node_modules', packageOf('ui'), 'dist', 'ui');
192
- const said = [];
193
- if (!existsSync(from)) {
194
- return [
195
- `this app declares an interface and ${packageOf('ui')} is not installed, so there is nothing to emit it from. ` +
196
- `Install it and run \`thread attach ${packageOf('ui')}\` again.`,
197
- ];
198
- }
199
- const seen = new Set();
200
- const core = join(root, 'node_modules', CORE, 'dist');
201
- const copied = (path) => {
202
- const file = join(core, `${path}.ts`);
203
- if (!existsSync(file))
204
- return undefined;
205
- const text = readFileSync(file, 'utf8');
206
- if (reachedIn(path, text).length > 0)
207
- return undefined;
208
- const where = `${FROM_CORE}${path}.ts`;
209
- if (seen.has(where))
210
- return where;
211
- seen.add(where);
212
- kept.add(where);
213
- const to = join(root, where);
214
- if (checking) {
215
- if (!existsSync(to) || readFileSync(to, 'utf8') !== text) {
216
- said.push(`${where} is not what this app emits from ${CORE}. An emitted file that differs from its source is a hand ` +
217
- 'edit wearing a generated name. Run `thread compositions` and commit what it writes.');
218
- }
219
- }
220
- else {
221
- writeFileSync(to, text, 'utf8');
222
- }
223
- return where;
224
- };
225
- const walk = (at) => {
226
- if (seen.has(at))
227
- return;
228
- seen.add(at);
229
- const file = join(from, at);
230
- if (!existsSync(file)) {
231
- said.push(`${at} is part of the interface this app emits, and the installed ${packageOf('ui')} does not hold it. ` +
232
- 'Upgrade the framework packages and run this again.');
233
- return;
234
- }
235
- const text = readFileSync(file, 'utf8');
236
- const where = `${COMPILED}/ui/${at}`;
237
- let shipped = text;
238
- for (const one of reachedIn(at, text)) {
239
- const named = one.from;
240
- if (named.startsWith('.')) {
241
- const next = slashed(join(dirname(at), named));
242
- if (next.startsWith('..')) {
243
- said.push(`${at} reaches \`${named}\`, which is outside the interface this app emits.`);
244
- continue;
245
- }
246
- walk(next);
247
- continue;
248
- }
249
- if (one.typed)
250
- continue;
251
- if (!named.startsWith(`${ORG}/`)) {
252
- const held = packaging(named);
253
- if (NODE.test(named) || has.has(held))
254
- continue;
255
- said.push(`${at} reaches ${held}, and this app installs nothing by that name. An emitted interface brings ` +
256
- `what it reaches with it, so ${held} has to arrive when ` +
257
- `thread attach ${packageOf('ui')} runs.`);
258
- continue;
259
- }
260
- const copy = named.startsWith(`${CORE}/`) ? copied(named.slice(CORE.length + 1)) : undefined;
261
- if (copy !== undefined) {
262
- const near = slashed(relative(dirname(where), copy));
263
- const pointed = near.startsWith('.') ? near : `./${near}`;
264
- shipped = shipped.split(`'${named}'`).join(`'${pointed}'`).split(`"${named}"`).join(`"${pointed}"`);
265
- continue;
266
- }
267
- said.push(`${at} reaches \`${named}\`, so emitting it would leave this app importing the framework while it runs. ` +
268
- 'It reaches what is emitted beside it, or nothing of this framework at all.');
269
- }
270
- kept.add(where);
271
- const to = join(root, where);
272
- if (checking) {
273
- if (!existsSync(to) || readFileSync(to, 'utf8') !== shipped) {
274
- said.push(`${where} is not what this app emits from ${packageOf('ui')}. An emitted file that differs from ` +
275
- 'its source is a hand edit wearing a generated name. Run `thread compositions` and commit what it writes.');
276
- }
277
- }
278
- else {
279
- writeFileSync(to, shipped, 'utf8');
280
- }
281
- };
282
- for (const one of entries)
283
- walk(one);
284
- return said;
285
- }
286
140
  export function stale(root, kept, checking) {
287
141
  const said = [];
288
142
  const walk = (at) => {
@@ -311,18 +165,8 @@ export function stale(root, kept, checking) {
311
165
  const SHEET = 'compiled.ts';
312
166
  const EMITS = 'thread compositions';
313
167
  export const SCREENED_BY = 'thread screens';
314
- const SHIPS = `${COMPILED}/ui/`;
315
168
  const idFor = (at) => `compiled-${at.slice(COMPILED.length + 1).replace(/\.[^./]+$/, '').split('/').join('-')}`;
316
169
  function meaning(at, by) {
317
- if (at.startsWith(FROM_CORE)) {
318
- return ('`' + at.slice(FROM_CORE.length) + '` from ' + CORE + ', copied into this app beside the interface that imports it. ' +
319
- 'It imports nothing itself, so a page runs it with nothing of the framework installed. `' + by + '` writes it, so an ' +
320
- 'edit made here is refused.');
321
- }
322
- if (at.startsWith(SHIPS)) {
323
- return ('`' + at.slice(SHIPS.length) + '` from ' + packageOf('ui') + ', copied into this app so a page runs it with nothing of ' +
324
- 'the framework installed. `' + by + '` writes it, so an edit made here is refused.');
325
- }
326
170
  return ('`' + at.slice(COMPILED.length + 1) + '` as React runs it, compiled from the file a person wrote: a variant worn as a ' +
327
171
  'tag has become its class, and a named place the class its arrangement declares. `' + by + '` writes it, so an ' +
328
172
  'edit made here is refused.');
@@ -477,12 +321,6 @@ function run() {
477
321
  stdout.write(`thread: seeded ${one.path}\n`);
478
322
  }
479
323
  }
480
- const parts = sheetOf(tree, 'elements.ts', 'ELEMENT', 'ELEMENTS');
481
- const shipped = `node_modules/${packageOf('ui')}/dist/ui/`;
482
- const entries = [
483
- ...RUNTIME,
484
- ...parts.flatMap((one) => (one.at ?? '').startsWith(shipped) ? [(one.at ?? '').slice(shipped.length).replace(/\.js$/, '.tsx')] : []),
485
- ];
486
324
  const screened = new Set();
487
325
  for (const one of sheetOf(tree, 'screens.ts', 'SCREEN', 'SCREENS')) {
488
326
  if (one.at !== undefined && one.at !== '')
@@ -491,7 +329,6 @@ function run() {
491
329
  const kept = new Set(screened);
492
330
  const found = [
493
331
  ...undeclared(tree, rows),
494
- ...emitting(tree.at, entries, checking, kept),
495
332
  ...settled(tree.at, rows, checking, EMITS, kept),
496
333
  ];
497
334
  found.push(...declaring(tree, [...kept], checking, screened));
@@ -494,6 +494,7 @@ function config(root, external) {
494
494
  return [
495
495
  ...gate(false),
496
496
  'export default {',
497
+ " output: 'standalone',",
497
498
  ...(turbopack.length === 0 ? [] : [' turbopack: {', ...turbopack, ' },']),
498
499
  ...(external.length === 0
499
500
  ? []
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prestack/thread-ui",
3
- "version": "0.1.10",
3
+ "version": "0.1.11",
4
4
  "type": "module",
5
5
  "files": [
6
6
  "dist",
@@ -17,6 +17,6 @@
17
17
  "react-dom": "^19.0.0",
18
18
  "typescript": "^6.0.0",
19
19
  "zod": "^4.5.4",
20
- "@prestack/thread": "^0.1.21"
20
+ "@prestack/thread": "^0.1.22"
21
21
  }
22
22
  }
@@ -1,13 +0,0 @@
1
- import type { Animation } from '../animations.ts'
2
-
3
- export const APPEAR = {
4
- id: 'appear',
5
- runs: 'motion-normal',
6
- eases: 'ease-out',
7
-
8
- fills: 'backwards',
9
- stops: {
10
- '0%': [{ property: 'opacity', is: 'opacity-none' }],
11
- '100%': [{ property: 'opacity', is: 'opacity-full' }],
12
- },
13
- } as const satisfies Animation
@@ -1,19 +0,0 @@
1
- import type { Animation } from '../animations.ts'
2
-
3
- export const BLUR_IN = {
4
- id: 'blur-in',
5
- runs: 'motion-normal',
6
- eases: 'ease-out',
7
-
8
- fills: 'backwards',
9
- stops: {
10
- '0%': [
11
- { property: 'opacity', is: 'opacity-none' },
12
- { property: 'filter', is: 'filter-blurred' },
13
- ],
14
- '100%': [
15
- { property: 'opacity', is: 'opacity-full' },
16
- { property: 'filter', is: 'filter-sharp' },
17
- ],
18
- },
19
- } as const satisfies Animation
@@ -1,18 +0,0 @@
1
- import type { Animation } from '../animations.ts'
2
-
3
- export const BLUR_OUT = {
4
- id: 'blur-out',
5
- runs: 'motion-quick',
6
- eases: 'ease-in',
7
- fills: 'forwards',
8
- stops: {
9
- '0%': [
10
- { property: 'opacity', is: 'opacity-full' },
11
- { property: 'filter', is: 'filter-sharp' },
12
- ],
13
- '100%': [
14
- { property: 'opacity', is: 'opacity-none' },
15
- { property: 'filter', is: 'filter-blurred' },
16
- ],
17
- },
18
- } as const satisfies Animation
@@ -1,18 +0,0 @@
1
- import type { Animation } from '../animations.ts'
2
-
3
- export const DISMISS = {
4
- id: 'dismiss',
5
- runs: 'motion-quick',
6
- eases: 'ease-in',
7
- fills: 'forwards',
8
- stops: {
9
- '0%': [
10
- { property: 'opacity', is: 'opacity-full' },
11
- { property: 'transform', is: 'transform-rest' },
12
- ],
13
- '100%': [
14
- { property: 'opacity', is: 'opacity-none' },
15
- { property: 'transform', is: 'transform-shrink' },
16
- ],
17
- },
18
- } as const satisfies Animation
@@ -1,19 +0,0 @@
1
- import type { Animation } from '../animations.ts'
2
-
3
- export const DROP = {
4
- id: 'drop',
5
- runs: 'motion-normal',
6
- eases: 'ease-out',
7
-
8
- fills: 'backwards',
9
- stops: {
10
- '0%': [
11
- { property: 'opacity', is: 'opacity-none' },
12
- { property: 'transform', is: 'transform-above' },
13
- ],
14
- '100%': [
15
- { property: 'opacity', is: 'opacity-full' },
16
- { property: 'transform', is: 'transform-rest' },
17
- ],
18
- },
19
- } as const satisfies Animation