@blotch/dolan 22.2.3 → 22.2.5

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 (227) hide show
  1. package/dist/commands/add.js +9 -1
  2. package/dist/commands/add.js.map +1 -1
  3. package/dist/commands/add.test.js +38 -3
  4. package/dist/commands/add.test.js.map +1 -1
  5. package/dist/commands/doctor.js +258 -21
  6. package/dist/commands/doctor.js.map +1 -1
  7. package/dist/commands/doctor.test.js +425 -11
  8. package/dist/commands/doctor.test.js.map +1 -1
  9. package/dist/commands/init.d.ts +2 -2
  10. package/dist/commands/init.js +38 -18
  11. package/dist/commands/init.js.map +1 -1
  12. package/dist/commands/init.test.js +105 -2
  13. package/dist/commands/init.test.js.map +1 -1
  14. package/dist/commands/theme.js +1 -1
  15. package/dist/commands/theme.js.map +1 -1
  16. package/dist/commands/update.d.ts +7 -0
  17. package/dist/commands/update.js +194 -50
  18. package/dist/commands/update.js.map +1 -1
  19. package/dist/commands/update.test.js +570 -3
  20. package/dist/commands/update.test.js.map +1 -1
  21. package/dist/lockfile.d.ts +17 -0
  22. package/dist/lockfile.js +56 -1
  23. package/dist/lockfile.js.map +1 -1
  24. package/dist/lockfile.test.d.ts +1 -0
  25. package/dist/lockfile.test.js +65 -0
  26. package/dist/lockfile.test.js.map +1 -0
  27. package/dist/registry.d.ts +6 -0
  28. package/dist/registry.js +119 -11
  29. package/dist/registry.js.map +1 -1
  30. package/dist/registry.test.js +61 -6
  31. package/dist/registry.test.js.map +1 -1
  32. package/dist/test-utils.d.ts +27 -0
  33. package/dist/test-utils.js +45 -1
  34. package/dist/test-utils.js.map +1 -1
  35. package/dist/testing/fire-lynx-event.d.ts +14 -0
  36. package/dist/testing/fire-lynx-event.js +19 -0
  37. package/dist/testing/fire-lynx-event.js.map +1 -0
  38. package/dist/testing/fire-lynx-event.test.d.ts +1 -0
  39. package/dist/testing/fire-lynx-event.test.js +44 -0
  40. package/dist/testing/fire-lynx-event.test.js.map +1 -0
  41. package/dist/testing/lynx-main-thread.d.ts +22 -0
  42. package/dist/testing/lynx-main-thread.js +11 -0
  43. package/dist/testing/lynx-main-thread.js.map +1 -0
  44. package/dist/testing/lynx-main-thread.test.d.ts +1 -0
  45. package/dist/testing/lynx-main-thread.test.js +24 -0
  46. package/dist/testing/lynx-main-thread.test.js.map +1 -0
  47. package/dist/testing/set-input-signal.d.ts +5 -4
  48. package/dist/testing/set-input-signal.js +5 -4
  49. package/dist/testing/set-input-signal.js.map +1 -1
  50. package/dist/ui/boolean-inputs.test.ts +76 -0
  51. package/dist/ui/components/accordion/accordion.test.ts +158 -144
  52. package/dist/ui/components/accordion/accordion.ts +19 -14
  53. package/dist/ui/components/action-sheet/action-sheet.test.ts +637 -183
  54. package/dist/ui/components/action-sheet/action-sheet.ts +339 -55
  55. package/dist/ui/components/action-sheet/index.ts +1 -0
  56. package/dist/ui/components/alert/alert.test.ts +67 -19
  57. package/dist/ui/components/alert/alert.ts +14 -16
  58. package/dist/ui/components/alert-dialog/alert-dialog.test.ts +740 -129
  59. package/dist/ui/components/alert-dialog/alert-dialog.ts +672 -58
  60. package/dist/ui/components/alert-dialog/index.ts +5 -0
  61. package/dist/ui/components/area-chart/area-chart.test.ts +81 -1
  62. package/dist/ui/components/area-chart/area-chart.ts +3 -2
  63. package/dist/ui/components/avatar/avatar.test.ts +89 -45
  64. package/dist/ui/components/badge/badge.test.ts +57 -23
  65. package/dist/ui/components/badge/badge.ts +14 -15
  66. package/dist/ui/components/bar-chart/bar-chart.test.ts +82 -1
  67. package/dist/ui/components/bottom-sheet/bottom-sheet.test.ts +1314 -273
  68. package/dist/ui/components/bottom-sheet/bottom-sheet.ts +1046 -119
  69. package/dist/ui/components/bottom-sheet/index.ts +7 -1
  70. package/dist/ui/components/button/button.test.ts +646 -2
  71. package/dist/ui/components/button/button.ts +443 -64
  72. package/dist/ui/components/button/index.ts +2 -0
  73. package/dist/ui/components/button-group/button-group.test.ts +528 -2
  74. package/dist/ui/components/button-group/button-group.ts +428 -70
  75. package/dist/ui/components/button-group/index.ts +3 -0
  76. package/dist/ui/components/candlestick-chart/candlestick-chart.test.ts +82 -1
  77. package/dist/ui/components/card/card.test.ts +97 -61
  78. package/dist/ui/components/card/card.ts +2 -1
  79. package/dist/ui/components/chart/chart-presets.test.ts +197 -1
  80. package/dist/ui/components/chart/chart-presets.ts +14 -7
  81. package/dist/ui/components/chart/chart-theme.ts +12 -0
  82. package/dist/ui/components/chart/chart.test.ts +1031 -0
  83. package/dist/ui/components/chart/chart.ts +66 -46
  84. package/dist/ui/components/checkbox/checkbox.test.ts +124 -42
  85. package/dist/ui/components/checkbox/checkbox.ts +25 -24
  86. package/dist/ui/components/collapsible/collapsible.test.ts +158 -81
  87. package/dist/ui/components/collapsible/collapsible.ts +21 -15
  88. package/dist/ui/components/context-menu/context-menu.test.ts +224 -0
  89. package/dist/ui/components/context-menu/context-menu.ts +110 -0
  90. package/dist/ui/components/context-menu/index.ts +1 -0
  91. package/dist/ui/components/dialog/dialog.test.ts +210 -152
  92. package/dist/ui/components/dialog/dialog.ts +35 -29
  93. package/dist/ui/components/dock/dock-scroll.test.ts +130 -0
  94. package/dist/ui/components/dock/dock-scroll.ts +142 -0
  95. package/dist/ui/components/dock/dock-search.test.ts +594 -0
  96. package/dist/ui/components/dock/dock.test.ts +752 -0
  97. package/dist/ui/components/dock/dock.ts +1438 -0
  98. package/dist/ui/components/dock/index.ts +2 -0
  99. package/dist/ui/components/dynamic-color/dynamic-color.test.ts +144 -0
  100. package/dist/ui/components/dynamic-color/dynamic-color.ts +146 -0
  101. package/dist/ui/components/dynamic-color/index.ts +5 -0
  102. package/dist/ui/components/empty-state/empty-state.test.ts +28 -39
  103. package/dist/ui/components/glass/concentric-radius.test.ts +13 -0
  104. package/dist/ui/components/glass/concentric-radius.ts +17 -0
  105. package/dist/ui/components/glass/glass-design.test.ts +78 -0
  106. package/dist/ui/components/glass/glass-design.ts +119 -0
  107. package/dist/ui/components/glass/glass.test.ts +376 -0
  108. package/dist/ui/components/glass/glass.ts +430 -0
  109. package/dist/ui/components/glass/index.ts +19 -0
  110. package/dist/ui/components/icon/icon-theme.test.ts +64 -0
  111. package/dist/ui/components/icon/icon-theme.ts +70 -16
  112. package/dist/ui/components/icon/icon.test.ts +52 -41
  113. package/dist/ui/components/input/input.test.ts +178 -101
  114. package/dist/ui/components/input/input.ts +17 -13
  115. package/dist/ui/components/label/label.test.ts +11 -24
  116. package/dist/ui/components/label/label.ts +8 -2
  117. package/dist/ui/components/line-chart/line-chart.test.ts +76 -1
  118. package/dist/ui/components/line-chart/line-chart.ts +3 -2
  119. package/dist/ui/components/list/list.test.ts +80 -49
  120. package/dist/ui/components/list/list.ts +5 -4
  121. package/dist/ui/components/menu/index.ts +25 -0
  122. package/dist/ui/components/menu/menu-placement.test.ts +153 -0
  123. package/dist/ui/components/menu/menu-placement.ts +159 -0
  124. package/dist/ui/components/menu/menu-popup.test.ts +636 -0
  125. package/dist/ui/components/menu/menu-popup.ts +565 -0
  126. package/dist/ui/components/menu/menu.test.ts +523 -0
  127. package/dist/ui/components/menu/menu.ts +455 -0
  128. package/dist/ui/components/nav-drawer/nav-drawer.test.ts +425 -260
  129. package/dist/ui/components/nav-drawer/nav-drawer.ts +75 -58
  130. package/dist/ui/components/navigation-bar/index.ts +1 -0
  131. package/dist/ui/components/navigation-bar/navigation-bar.test.ts +425 -0
  132. package/dist/ui/components/navigation-bar/navigation-bar.ts +411 -0
  133. package/dist/ui/components/pagination/pagination.test.ts +136 -86
  134. package/dist/ui/components/popover/index.ts +9 -0
  135. package/dist/ui/components/popover/popover-panel.test.ts +735 -0
  136. package/dist/ui/components/popover/popover-panel.ts +603 -0
  137. package/dist/ui/components/popover/popover.test.ts +286 -0
  138. package/dist/ui/components/popover/popover.ts +207 -0
  139. package/dist/ui/components/progress/progress.test.ts +102 -46
  140. package/dist/ui/components/progress/progress.ts +54 -55
  141. package/dist/ui/components/radio-group/radio-group.test.ts +128 -83
  142. package/dist/ui/components/radio-group/radio-group.ts +26 -25
  143. package/dist/ui/components/scatter-chart/scatter-chart.test.ts +74 -1
  144. package/dist/ui/components/scroll-area/scroll-area.test.ts +72 -36
  145. package/dist/ui/components/scroll-area/scroll-area.ts +4 -3
  146. package/dist/ui/components/search-field/index.ts +15 -0
  147. package/dist/ui/components/search-field/keyboard.test.ts +147 -0
  148. package/dist/ui/components/search-field/keyboard.ts +123 -0
  149. package/dist/ui/components/search-field/search-field.test.ts +549 -0
  150. package/dist/ui/components/search-field/search-field.ts +628 -0
  151. package/dist/ui/components/segmented-control/index.ts +8 -0
  152. package/dist/ui/components/segmented-control/segmented-control.test.ts +861 -0
  153. package/dist/ui/components/segmented-control/segmented-control.ts +884 -0
  154. package/dist/ui/components/select/select.test.ts +138 -78
  155. package/dist/ui/components/select/select.ts +19 -12
  156. package/dist/ui/components/separator/separator.test.ts +18 -17
  157. package/dist/ui/components/sheet/sheet.test.ts +151 -11
  158. package/dist/ui/components/sheet/sheet.ts +68 -5
  159. package/dist/ui/components/skeleton/skeleton.test.ts +24 -7
  160. package/dist/ui/components/skeleton/skeleton.ts +10 -16
  161. package/dist/ui/components/slider/index.ts +1 -0
  162. package/dist/ui/components/slider/slider.test.ts +695 -0
  163. package/dist/ui/components/slider/slider.ts +901 -0
  164. package/dist/ui/components/spinner/spinner.test.ts +64 -46
  165. package/dist/ui/components/spinner/spinner.ts +16 -19
  166. package/dist/ui/components/switch/index.ts +1 -1
  167. package/dist/ui/components/switch/switch.test.ts +534 -48
  168. package/dist/ui/components/switch/switch.ts +613 -48
  169. package/dist/ui/components/tab-bar/index.ts +1 -0
  170. package/dist/ui/components/tab-bar/tab-bar.test.ts +280 -0
  171. package/dist/ui/components/tab-bar/tab-bar.ts +230 -0
  172. package/dist/ui/components/tabs/index.ts +7 -1
  173. package/dist/ui/components/tabs/tabs.test.ts +484 -150
  174. package/dist/ui/components/tabs/tabs.ts +344 -149
  175. package/dist/ui/components/textarea/textarea.test.ts +206 -100
  176. package/dist/ui/components/textarea/textarea.ts +16 -13
  177. package/dist/ui/components/toast/toast.test.ts +434 -350
  178. package/dist/ui/components/toast/toast.ts +42 -51
  179. package/dist/ui/components/toggle/index.ts +1 -0
  180. package/dist/ui/components/toggle/toggle.test.ts +559 -146
  181. package/dist/ui/components/toggle/toggle.ts +241 -26
  182. package/dist/ui/components/toolbar/bar-scroll.test.ts +310 -0
  183. package/dist/ui/components/toolbar/bar-scroll.ts +372 -0
  184. package/dist/ui/components/toolbar/index.ts +12 -0
  185. package/dist/ui/components/toolbar/toolbar.test.ts +438 -0
  186. package/dist/ui/components/toolbar/toolbar.ts +535 -0
  187. package/dist/ui/theme/chart-colors.test.ts +8 -3
  188. package/dist/ui/theme/dark.css +38 -2
  189. package/dist/ui/theme/default.css +55 -7
  190. package/dist/ui/theme/icon-colors.test.ts +8 -3
  191. package/dist/ui/theme/rgb-channels.test.ts +84 -0
  192. package/dist/ui/theme/tailwind-build.test.ts +114 -0
  193. package/dist/ui/theme/tailwind-css.test.ts +83 -0
  194. package/dist/ui/theme/tailwind-plugin.test.ts +42 -2
  195. package/dist/ui/theme/tailwind-plugin.ts +93 -29
  196. package/dist/ui/theme/tailwind.css +113 -0
  197. package/dist/ui/utils/animate.test.ts +13 -1
  198. package/dist/utils/analyze.d.ts +19 -0
  199. package/dist/utils/analyze.js +16 -0
  200. package/dist/utils/analyze.js.map +1 -1
  201. package/dist/utils/analyze.test.js +14 -1
  202. package/dist/utils/analyze.test.js.map +1 -1
  203. package/dist/utils/installed.d.ts +25 -1
  204. package/dist/utils/installed.js +33 -0
  205. package/dist/utils/installed.js.map +1 -1
  206. package/dist/utils/installed.test.js +55 -1
  207. package/dist/utils/installed.test.js.map +1 -1
  208. package/dist/utils/resolve-paths.d.ts +4 -4
  209. package/dist/utils/resolve-paths.js +5 -7
  210. package/dist/utils/resolve-paths.js.map +1 -1
  211. package/dist/utils/resolve-paths.test.js +9 -5
  212. package/dist/utils/resolve-paths.test.js.map +1 -1
  213. package/dist/utils/tailwind.d.ts +45 -0
  214. package/dist/utils/tailwind.js +90 -0
  215. package/dist/utils/tailwind.js.map +1 -0
  216. package/dist/utils/tailwind.test.d.ts +1 -0
  217. package/dist/utils/tailwind.test.js +134 -0
  218. package/dist/utils/tailwind.test.js.map +1 -0
  219. package/package.json +9 -1
  220. package/dist/ui/components/area-chart/area-chart-render.test.ts +0 -63
  221. package/dist/ui/components/bar-chart/bar-chart-render.test.ts +0 -58
  222. package/dist/ui/components/button/button-render.test.ts +0 -132
  223. package/dist/ui/components/button-group/button-group-render.test.ts +0 -146
  224. package/dist/ui/components/candlestick-chart/candlestick-chart-render.test.ts +0 -59
  225. package/dist/ui/components/chart/chart-render.test.ts +0 -730
  226. package/dist/ui/components/line-chart/line-chart-render.test.ts +0 -83
  227. package/dist/ui/components/scatter-chart/scatter-chart-render.test.ts +0 -64
package/dist/registry.js CHANGED
@@ -8,51 +8,159 @@ const CHART_PACKAGES = ['@tanstack/charts@^1.1.0', 'd3-shape@^3.2.0'];
8
8
  * inputs. Kept in step with packages/ui/package.json by the same test.
9
9
  */
10
10
  const CVA_PACKAGES = ['class-variance-authority@^0.7.1'];
11
+ /**
12
+ * The Liquid Glass colors, which the theme gained with the glass component.
13
+ */
14
+ const GLASS_COLORS = [
15
+ 'glass-tint',
16
+ 'glass-tint-foreground',
17
+ 'glass-foreground',
18
+ 'glass-muted-foreground',
19
+ 'glass-clear-foreground',
20
+ 'glass-dim',
21
+ ];
11
22
  export const registry = [
12
- { name: 'action-sheet', dependencies: [] },
23
+ // Opened from a control, the action sheet is a popover: glass on iOS 26
24
+ // and a Material menu on Android, whose actions take the glass colors.
25
+ {
26
+ name: 'action-sheet',
27
+ dependencies: ['glass', 'popover'],
28
+ themeColors: ['glass-foreground', 'glass-muted-foreground'],
29
+ },
13
30
  { name: 'accordion', dependencies: [] },
14
31
  { name: 'alert', dependencies: [], packages: CVA_PACKAGES },
15
- { name: 'alert-dialog', dependencies: [] },
32
+ // The glass variant's panel is glass, and its text and buttons take the
33
+ // glass foreground and tint.
34
+ {
35
+ name: 'alert-dialog',
36
+ dependencies: ['glass'],
37
+ themeColors: [
38
+ 'glass-tint',
39
+ 'glass-tint-foreground',
40
+ 'glass-foreground',
41
+ 'glass-muted-foreground',
42
+ ],
43
+ },
16
44
  // The chart presets are TanStack Charts definitions drawn by <ui-chart>.
17
45
  { name: 'area-chart', dependencies: ['chart'] },
18
46
  { name: 'aspect-ratio', dependencies: [] },
19
47
  { name: 'avatar', dependencies: ['skeleton'] },
20
48
  { name: 'badge', dependencies: [], packages: CVA_PACKAGES },
21
49
  { name: 'bar-chart', dependencies: ['chart'] },
22
- { name: 'bottom-sheet', dependencies: [] },
23
- { name: 'button', dependencies: ['spinner'], packages: CVA_PACKAGES },
24
- { name: 'button-group', dependencies: [], packages: CVA_PACKAGES },
50
+ // The glass variant draws its sheet on `glass`, in the platform's design.
51
+ { name: 'bottom-sheet', dependencies: ['glass'] },
52
+ // The glass variants draw on `glass`, and projected icons take the label's
53
+ // color through icon's UI_ICON_COLOR.
54
+ {
55
+ name: 'button',
56
+ dependencies: ['spinner', 'glass', 'icon'],
57
+ packages: CVA_PACKAGES,
58
+ themeColors: GLASS_COLORS,
59
+ },
60
+ {
61
+ name: 'button-group',
62
+ dependencies: ['glass', 'icon'],
63
+ packages: CVA_PACKAGES,
64
+ themeColors: GLASS_COLORS,
65
+ },
25
66
  { name: 'candlestick-chart', dependencies: ['chart'] },
26
67
  { name: 'card', dependencies: [] },
27
68
  // Renders any TanStack Charts definition with Lynx elements; the presets
28
- // below build on it.
29
- { name: 'chart', dependencies: [], packages: CHART_PACKAGES },
69
+ // below build on it. Colors set at runtime above a chart, such as
70
+ // dynamic-color's, reach its marks through icon-theme.ts.
71
+ { name: 'chart', dependencies: ['icon'], packages: CHART_PACKAGES },
30
72
  { name: 'checkbox', dependencies: [] },
31
73
  { name: 'collapsible', dependencies: [] },
74
+ // The context menu is a menu that opens on a long press: it shares the
75
+ // menu's items and its overlay.
76
+ { name: 'context-menu', dependencies: ['menu'] },
32
77
  { name: 'dialog', dependencies: [] },
78
+ // Gives icons, glass tints and charts the wallpaper's colors through
79
+ // icon-theme.ts, and follows its color scheme.
80
+ { name: 'dynamic-color', dependencies: ['icon'] },
81
+ // The dock's bar, button and accessory are glass, and its items draw their
82
+ // icons from icon's set. Its selection capsule and the items on glass take
83
+ // the glass foreground. It holds a search field in its glass, and rises
84
+ // above the keyboard with search-field's keyboard.ts.
85
+ {
86
+ name: 'dock',
87
+ dependencies: ['glass', 'icon', 'search-field'],
88
+ themeColors: ['glass-foreground'],
89
+ },
33
90
  { name: 'empty-state', dependencies: ['icon'] },
91
+ // Glass resolves its tint with the icons' copy of the theme, and hands
92
+ // projected icons its foreground.
93
+ { name: 'glass', dependencies: ['icon'], themeColors: GLASS_COLORS },
34
94
  { name: 'input', dependencies: [] },
35
95
  { name: 'label', dependencies: [] },
36
96
  { name: 'line-chart', dependencies: ['chart'] },
37
97
  { name: 'list', dependencies: [] },
98
+ // The menu is glass, and its items draw their icons from icon's set.
99
+ {
100
+ name: 'menu',
101
+ dependencies: ['glass', 'icon'],
102
+ themeColors: ['glass-foreground', 'glass-muted-foreground', 'glass-dim'],
103
+ },
38
104
  // nav-drawer renders a hamburger trigger via <ui-icon>, so it pulls in `icon`.
39
105
  { name: 'nav-drawer', dependencies: ['icon'] },
106
+ // The navigation bar's Back button and items are toolbar items, it shares
107
+ // the toolbar's scroll view, and the frosted bar's material is glass.
108
+ { name: 'navigation-bar', dependencies: ['glass', 'toolbar'] },
40
109
  // Pagination and the spinner draw SVGs in theme colors with icon-theme.ts.
41
110
  { name: 'pagination', dependencies: ['icon'] },
111
+ // The popover is glass, placed by the menu's placement, and its content
112
+ // reads the glass colors.
113
+ {
114
+ name: 'popover',
115
+ dependencies: ['glass', 'menu'],
116
+ themeColors: ['glass-foreground', 'glass-muted-foreground'],
117
+ },
42
118
  { name: 'progress', dependencies: [] },
43
119
  { name: 'radio-group', dependencies: [] },
44
120
  { name: 'scatter-chart', dependencies: ['chart'] },
45
121
  { name: 'scroll-area', dependencies: [] },
122
+ // The search field is glass on iOS 26 and later, and draws its icons from
123
+ // icon's set in theme colors resolved by icon-theme.ts.
124
+ {
125
+ name: 'search-field',
126
+ dependencies: ['glass', 'icon'],
127
+ themeColors: ['glass-foreground', 'glass-muted-foreground'],
128
+ },
129
+ // The segmented control that tabs and toggle groups draw with
130
+ // `variant="segmented"`: its indicator lifts into glass on iOS 26, and it
131
+ // picks the thumb's color for the app's color scheme with icon-theme.ts.
132
+ { name: 'segmented-control', dependencies: ['glass', 'icon'] },
46
133
  { name: 'select', dependencies: ['bottom-sheet'] },
47
134
  { name: 'separator', dependencies: [] },
48
- { name: 'sheet', dependencies: ['bottom-sheet'] },
135
+ // Its specs present a sheet from a glass button (`uiSheetSource`), which
136
+ // the sheet grows out of.
137
+ { name: 'sheet', dependencies: ['bottom-sheet', 'glass'] },
49
138
  { name: 'skeleton', dependencies: [] },
139
+ // The glass variant's thumb turns into a glass lens while it's dragged,
140
+ // and its iOS colors follow the app's color scheme through icon-theme.ts.
141
+ { name: 'slider', dependencies: ['glass', 'icon'] },
50
142
  { name: 'spinner', dependencies: ['icon'] },
51
- { name: 'switch', dependencies: [] },
52
- { name: 'tabs', dependencies: [] },
143
+ // As the slider.
144
+ { name: 'switch', dependencies: ['glass', 'icon'] },
145
+ // The tab bar draws its items' icons from icon's set, in theme colors
146
+ // resolved by icon-theme.ts.
147
+ { name: 'tab-bar', dependencies: ['icon'] },
148
+ { name: 'tabs', dependencies: ['segmented-control'] },
53
149
  { name: 'textarea', dependencies: [] },
54
150
  { name: 'toast', dependencies: [] },
55
- { name: 'toggle', dependencies: [], packages: CVA_PACKAGES },
151
+ // A segmented toggle group's icons take the segment's content color.
152
+ {
153
+ name: 'toggle',
154
+ dependencies: ['icon', 'segmented-control'],
155
+ packages: CVA_PACKAGES,
156
+ },
157
+ // Toolbar items are glass on iOS 26 and later, a prominent one in the glass
158
+ // tint, and they draw their icons from icon's set.
159
+ {
160
+ name: 'toolbar',
161
+ dependencies: ['glass', 'icon'],
162
+ themeColors: ['glass-foreground', 'glass-tint', 'glass-tint-foreground'],
163
+ },
56
164
  { name: 'typography', dependencies: [], packages: CVA_PACKAGES },
57
165
  { name: 'icon', dependencies: [] },
58
166
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,16 @@ describe('getEntry', () => {
15
15
  const entry = getEntry('button');
16
16
  expect(entry).toEqual({
17
17
  name: 'button',
18
- dependencies: ['spinner'],
18
+ dependencies: ['spinner', 'glass', 'icon'],
19
19
  packages: ['class-variance-authority@^0.7.1'],
20
+ themeColors: [
21
+ 'glass-tint',
22
+ 'glass-tint-foreground',
23
+ 'glass-foreground',
24
+ 'glass-muted-foreground',
25
+ 'glass-clear-foreground',
26
+ 'glass-dim',
27
+ ],
20
28
  });
21
29
  });
22
30
  it('returns undefined for non-existent component', () => {
@@ -29,11 +37,11 @@ describe('resolveDependencies', () => {
29
37
  });
30
38
  it('resolves transitive dependencies in dependency-first order', () => {
31
39
  const resolved = resolveDependencies(['button']);
32
- expect(resolved).toEqual(['icon', 'spinner', 'button']);
40
+ expect(resolved).toEqual(['icon', 'spinner', 'glass', 'button']);
33
41
  });
34
42
  it('deduplicates when dependency is also explicitly listed', () => {
35
43
  const resolved = resolveDependencies(['button', 'spinner']);
36
- expect(resolved).toEqual(['icon', 'spinner', 'button']);
44
+ expect(resolved).toEqual(['icon', 'spinner', 'glass', 'button']);
37
45
  });
38
46
  it('handles empty input', () => {
39
47
  expect(resolveDependencies([])).toEqual([]);
@@ -43,10 +51,20 @@ describe('resolveDependencies', () => {
43
51
  expect(resolved).toEqual(['icon', 'empty-state']);
44
52
  });
45
53
  it('resolves select with its bottom-sheet dependency', () => {
46
- expect(resolveDependencies(['select'])).toEqual(['bottom-sheet', 'select']);
54
+ expect(resolveDependencies(['select'])).toEqual([
55
+ 'icon',
56
+ 'glass',
57
+ 'bottom-sheet',
58
+ 'select',
59
+ ]);
47
60
  });
48
61
  it('resolves sheet with its bottom-sheet dependency', () => {
49
- expect(resolveDependencies(['sheet'])).toEqual(['bottom-sheet', 'sheet']);
62
+ expect(resolveDependencies(['sheet'])).toEqual([
63
+ 'icon',
64
+ 'glass',
65
+ 'bottom-sheet',
66
+ 'sheet',
67
+ ]);
50
68
  });
51
69
  it.each([
52
70
  'line-chart',
@@ -55,10 +73,13 @@ describe('resolveDependencies', () => {
55
73
  'scatter-chart',
56
74
  'candlestick-chart',
57
75
  ])('resolves %s with the chart it builds on first', (preset) => {
58
- expect(resolveDependencies([preset])).toEqual(['chart', preset]);
76
+ // The chart reads colors set at runtime through icon's icon-theme.ts.
77
+ expect(resolveDependencies([preset])).toEqual(['icon', 'chart', preset]);
59
78
  });
60
79
  it('deduplicates bottom-sheet when both select and sheet are selected', () => {
61
80
  expect(resolveDependencies(['select', 'sheet'])).toEqual([
81
+ 'icon',
82
+ 'glass',
62
83
  'bottom-sheet',
63
84
  'select',
64
85
  'sheet',
@@ -131,4 +152,38 @@ describe('resolvePackages', () => {
131
152
  }
132
153
  });
133
154
  });
155
+ describe('themeColors', () => {
156
+ it("names colors dolan's theme sets in both schemes and maps for both Tailwinds", () => {
157
+ // doctor checks an app's theme for these, and quotes dolan's lines.
158
+ const theme = new URL('../../ui/src/lib/theme/', import.meta.url);
159
+ const read = (file) => readFileSync(new URL(file, theme), 'utf-8');
160
+ const [light, dark, plugin, css] = [
161
+ 'default.css',
162
+ 'dark.css',
163
+ 'tailwind-plugin.ts',
164
+ 'tailwind.css',
165
+ ].map(read);
166
+ const colors = registry.flatMap((entry) => entry.themeColors ?? []);
167
+ expect(colors).toContain('glass-foreground');
168
+ for (const color of colors) {
169
+ expect(light, color).toContain(`--${color}:`);
170
+ expect(dark, color).toContain(`--${color}:`);
171
+ expect(plugin, color).toMatch(new RegExp(`'${color}'|'var\\(--${color}\\)'`));
172
+ expect(css, color).toContain(`var(--${color})`);
173
+ }
174
+ });
175
+ it("lists every glass color the glass component's code names", () => {
176
+ const folder = new URL('../../ui/src/lib/components/glass/', import.meta.url);
177
+ const named = new Set();
178
+ for (const file of readdirSync(folder)) {
179
+ if (file.endsWith('.test.ts'))
180
+ continue;
181
+ const source = readFileSync(new URL(file, folder), 'utf-8');
182
+ for (const [color] of source.matchAll(/glass-(?:[a-z]+-)*foreground|glass-tint|glass-dim/g)) {
183
+ named.add(color);
184
+ }
185
+ }
186
+ expect(getEntry('glass').themeColors).toEqual(expect.arrayContaining([...named]));
187
+ });
188
+ });
134
189
  //# sourceMappingURL=registry.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../src/registry.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"registry.test.js","sourceRoot":"","sources":["../src/registry.test.ts"],"names":[],"mappings":"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"}
@@ -13,4 +13,31 @@ export type Fixture = {
13
13
  cleanup: () => void;
14
14
  };
15
15
  export declare const createFixture: (options?: FixtureOptions) => Fixture;
16
+ /**
17
+ * Puts a package in `dir`'s node_modules, as installing it would: its
18
+ * package.json, with an entry point for `require.resolve` to find. Returns
19
+ * the package's folder, so a test can put a dependency in the package's own
20
+ * node_modules, out of the app's reach, as pnpm's layout leaves it (and npm's
21
+ * leaves a version that conflicts with the hoisted one).
22
+ */
23
+ export declare const installPackage: (dir: string, name: string, version: string) => string;
16
24
  export declare const DEFAULT_CONFIG: DolanConfig;
25
+ /**
26
+ * Sets the project in `dir` up for a Tailwind version as apps have it:
27
+ * Tailwind 4 as `ng add` installs it (`tailwindcss` and `@tailwindcss/postcss`,
28
+ * no Tailwind config), or Tailwind 3 with a `tailwind.config.ts`. Tailwind is
29
+ * listed and installed, as in an app: dolan reads the installed version (see
30
+ * installPackage). `testing` adds the testing library, so dolan copies tests,
31
+ * and `dependencies` are listed as well.
32
+ */
33
+ export declare const onTailwind: (dir: string, version: 3 | 4, { testing, dependencies, }?: {
34
+ testing?: boolean;
35
+ dependencies?: Record<string, string>;
36
+ }) => void;
37
+ /**
38
+ * A theme file exactly as 22.2.2's `init` copied it (from the v22.2.2 tag),
39
+ * which left the lockfile without its hash. lockfile.ts knows its hash. The
40
+ * plugin is stored as `.txt`, so the build, lint, format and coverage, which
41
+ * would each take it for dolan's own source, leave it alone.
42
+ */
43
+ export declare const shippedTheme: (file: "default.css" | "dark.css" | "tailwind-plugin.ts") => string;
@@ -1,4 +1,4 @@
1
- import { mkdirSync, writeFileSync, rmSync } from 'node:fs';
1
+ import { mkdirSync, readFileSync, writeFileSync, rmSync } from 'node:fs';
2
2
  import { join } from 'node:path';
3
3
  import { tmpdir } from 'node:os';
4
4
  import { randomUUID } from 'node:crypto';
@@ -55,6 +55,20 @@ export const createFixture = (options = {}) => {
55
55
  cleanup: () => rmSync(dir, { recursive: true, force: true }),
56
56
  };
57
57
  };
58
+ /**
59
+ * Puts a package in `dir`'s node_modules, as installing it would: its
60
+ * package.json, with an entry point for `require.resolve` to find. Returns
61
+ * the package's folder, so a test can put a dependency in the package's own
62
+ * node_modules, out of the app's reach, as pnpm's layout leaves it (and npm's
63
+ * leaves a version that conflicts with the hoisted one).
64
+ */
65
+ export const installPackage = (dir, name, version) => {
66
+ const packageDir = join(dir, 'node_modules', name);
67
+ mkdirSync(packageDir, { recursive: true });
68
+ writeFileSync(join(packageDir, 'package.json'), JSON.stringify({ name, version, main: 'index.js' }));
69
+ writeFileSync(join(packageDir, 'index.js'), '');
70
+ return packageDir;
71
+ };
58
72
  export const DEFAULT_CONFIG = {
59
73
  aliases: {
60
74
  components: 'src/components/ui',
@@ -62,4 +76,34 @@ export const DEFAULT_CONFIG = {
62
76
  theme: 'src/styles',
63
77
  },
64
78
  };
79
+ /**
80
+ * Sets the project in `dir` up for a Tailwind version as apps have it:
81
+ * Tailwind 4 as `ng add` installs it (`tailwindcss` and `@tailwindcss/postcss`,
82
+ * no Tailwind config), or Tailwind 3 with a `tailwind.config.ts`. Tailwind is
83
+ * listed and installed, as in an app: dolan reads the installed version (see
84
+ * installPackage). `testing` adds the testing library, so dolan copies tests,
85
+ * and `dependencies` are listed as well.
86
+ */
87
+ export const onTailwind = (dir, version, { testing = false, dependencies = {}, } = {}) => {
88
+ const installed = version === 4 ? '4.3.3' : '3.4.19';
89
+ writeFileSync(join(dir, 'package.json'), JSON.stringify({
90
+ dependencies,
91
+ devDependencies: {
92
+ tailwindcss: `^${installed}`,
93
+ ...(version === 4 && { '@tailwindcss/postcss': `^${installed}` }),
94
+ ...(testing && { '@blotch/angular-lynx-testing-library': '^22.2.4' }),
95
+ },
96
+ }));
97
+ installPackage(dir, 'tailwindcss', installed);
98
+ if (version === 3) {
99
+ writeFileSync(join(dir, 'tailwind.config.ts'), 'export default {};');
100
+ }
101
+ };
102
+ /**
103
+ * A theme file exactly as 22.2.2's `init` copied it (from the v22.2.2 tag),
104
+ * which left the lockfile without its hash. lockfile.ts knows its hash. The
105
+ * plugin is stored as `.txt`, so the build, lint, format and coverage, which
106
+ * would each take it for dolan's own source, leave it alone.
107
+ */
108
+ export const shippedTheme = (file) => readFileSync(new URL(`./fixtures/theme-22.2.2/${file.endsWith('.ts') ? `${file}.txt` : file}`, import.meta.url), 'utf-8');
65
109
  //# sourceMappingURL=test-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"test-utils.js","sourceRoot":"","sources":["../src/test-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Fires a Lynx event on an element the way Lynx dispatches it, for the events
3
+ * the testing library's `fireEvent` has no shortcut for: `mouseleave`, an
4
+ * image's `load` and `error`, an accessibility action, and so on. `fields` go
5
+ * on the event, where Lynx puts its `detail`. `eventType` picks the kind of
6
+ * listener: `bindEvent` for `(bindtap)`, `catchEvent` for `(catchtap)`.
7
+ *
8
+ * fireLynxEvent(view, 'mouseleave');
9
+ * fireLynxEvent(image, 'error', { detail: { errMsg: 'Not found' } });
10
+ *
11
+ * dolan copies component tests into apps with an import of
12
+ * `@blotch/dolan/testing/fire-lynx-event`, a copy of this file.
13
+ */
14
+ export declare const fireLynxEvent: (element: EventTarget, name: string, fields?: Record<string, unknown>, eventType?: string) => boolean;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Fires a Lynx event on an element the way Lynx dispatches it, for the events
3
+ * the testing library's `fireEvent` has no shortcut for: `mouseleave`, an
4
+ * image's `load` and `error`, an accessibility action, and so on. `fields` go
5
+ * on the event, where Lynx puts its `detail`. `eventType` picks the kind of
6
+ * listener: `bindEvent` for `(bindtap)`, `catchEvent` for `(catchtap)`.
7
+ *
8
+ * fireLynxEvent(view, 'mouseleave');
9
+ * fireLynxEvent(image, 'error', { detail: { errMsg: 'Not found' } });
10
+ *
11
+ * dolan copies component tests into apps with an import of
12
+ * `@blotch/dolan/testing/fire-lynx-event`, a copy of this file.
13
+ */
14
+ export const fireLynxEvent = (element, name, fields = {}, eventType = 'bindEvent') => element.dispatchEvent(Object.assign(new Event(`${eventType}:${name}`), {
15
+ eventType,
16
+ eventName: name,
17
+ ...fields,
18
+ }));
19
+ //# sourceMappingURL=fire-lynx-event.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fire-lynx-event.js","sourceRoot":"","sources":["../../src/testing/fire-lynx-event.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAAoB,EACpB,IAAY,EACZ,SAAkC,EAAE,EACpC,SAAS,GAAG,WAAW,EACd,EAAE,CACX,OAAO,CAAC,aAAa,CACnB,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC,EAAE;IAC/C,SAAS;IACT,SAAS,EAAE,IAAI;IACf,GAAG,MAAM;CACV,CAAC,CACH,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,44 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { describe, expect, it } from 'vitest';
3
+ import { fireLynxEvent } from './fire-lynx-event';
4
+ /**
5
+ * An element stand-in that records the events dispatched on it.
6
+ */
7
+ const target = () => {
8
+ const element = new EventTarget();
9
+ const events = [];
10
+ for (const type of ['bindEvent:mouseleave', 'catchEvent:tap']) {
11
+ element.addEventListener(type, (event) => events.push(event));
12
+ }
13
+ return { element, events };
14
+ };
15
+ describe('fireLynxEvent', () => {
16
+ it('dispatches a bindEvent with its name, as Lynx does', () => {
17
+ const { element, events } = target();
18
+ expect(fireLynxEvent(element, 'mouseleave')).toBe(true);
19
+ expect(events).toHaveLength(1);
20
+ expect(events[0]).toMatchObject({
21
+ type: 'bindEvent:mouseleave',
22
+ eventType: 'bindEvent',
23
+ eventName: 'mouseleave',
24
+ });
25
+ });
26
+ it("puts the fields on the event, for the listener's kind", () => {
27
+ const { element, events } = target();
28
+ fireLynxEvent(element, 'tap', { detail: { x: 1 } }, 'catchEvent');
29
+ expect(events[0]).toMatchObject({
30
+ type: 'catchEvent:tap',
31
+ eventType: 'catchEvent',
32
+ detail: { x: 1 },
33
+ });
34
+ });
35
+ it('is the helper the component tests import from packages/ui', () => {
36
+ // Copied tests import `../../../test-utils/fire-lynx-event`, which dolan
37
+ // rewrites to this file. A copy that drifted would test differently in an
38
+ // app than in the library.
39
+ const shipped = readFileSync(new URL('./fire-lynx-event.ts', import.meta.url), 'utf-8');
40
+ const library = readFileSync(new URL('../../../ui/src/test-utils/fire-lynx-event.ts', import.meta.url), 'utf-8');
41
+ expect(shipped).toBe(library);
42
+ });
43
+ });
44
+ //# sourceMappingURL=fire-lynx-event.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fire-lynx-event.test.js","sourceRoot":"","sources":["../../src/testing/fire-lynx-event.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAElD;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,EAAE;IAClB,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,MAAM,GAAY,EAAE,CAAC;IAC3B,KAAK,MAAM,IAAI,IAAI,CAAC,sBAAsB,EAAE,gBAAgB,CAAC,EAAE,CAAC;QAC9D,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;AAC7B,CAAC,CAAC;AAEF,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACrC,MAAM,CAAC,aAAa,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxD,MAAM,CAAC,MAAM,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAC/B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9B,IAAI,EAAE,sBAAsB;YAC5B,SAAS,EAAE,WAAW;YACtB,SAAS,EAAE,YAAY;SACxB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAAC;QACrC,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC;QAClE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC;YAC9B,IAAI,EAAE,gBAAgB;YACtB,SAAS,EAAE,YAAY;YACvB,MAAM,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE;SACjB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,yEAAyE;QACzE,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,OAAO,GAAG,YAAY,CAC1B,IAAI,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAChD,OAAO,CACR,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAC1B,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACzE,OAAO,CACR,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The Lynx element functions a test watches with `vi.spyOn()`, as the testing
3
+ * library's main thread runs them.
4
+ */
5
+ export type LynxMainThread = {
6
+ /** Starts, plays, pauses or cancels an element's animation. */
7
+ __ElementAnimate: (element: Element, args: unknown[]) => void;
8
+ /** Sets an attribute, such as a boolean jsdom doesn't keep as Lynx does. */
9
+ __SetAttribute: (element: Element, name: string, value: unknown) => void;
10
+ /** Sets one inline style, including those jsdom drops. */
11
+ __AddInlineStyle: (element: Element, name: string | number, value: unknown) => void;
12
+ };
13
+ /**
14
+ * The testing library's Lynx main thread, to watch what reaches Lynx where
15
+ * the rendered element can't show it: an animation, or a value jsdom drops.
16
+ *
17
+ * const animate = vi.spyOn(lynxMainThread(), '__ElementAnimate');
18
+ *
19
+ * dolan copies component tests into apps with an import of
20
+ * `@blotch/dolan/testing/lynx-main-thread`, a copy of this file.
21
+ */
22
+ export declare const lynxMainThread: () => LynxMainThread;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The testing library's Lynx main thread, to watch what reaches Lynx where
3
+ * the rendered element can't show it: an animation, or a value jsdom drops.
4
+ *
5
+ * const animate = vi.spyOn(lynxMainThread(), '__ElementAnimate');
6
+ *
7
+ * dolan copies component tests into apps with an import of
8
+ * `@blotch/dolan/testing/lynx-main-thread`, a copy of this file.
9
+ */
10
+ export const lynxMainThread = () => globalThis.lynxTestingEnv.mainThread.globalThis;
11
+ //# sourceMappingURL=lynx-main-thread.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lynx-main-thread.js","sourceRoot":"","sources":["../../src/testing/lynx-main-thread.ts"],"names":[],"mappings":"AAiBA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,GAAmB,EAAE,CAE/C,UAGD,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,24 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { afterEach, describe, expect, it } from 'vitest';
3
+ import { lynxMainThread } from './lynx-main-thread';
4
+ describe('lynxMainThread', () => {
5
+ afterEach(() => {
6
+ delete globalThis.lynxTestingEnv;
7
+ });
8
+ it("is the testing library's main thread globals", () => {
9
+ const globals = { __ElementAnimate: () => { } };
10
+ globalThis.lynxTestingEnv = {
11
+ mainThread: { globalThis: globals },
12
+ };
13
+ expect(lynxMainThread()).toBe(globals);
14
+ });
15
+ it('is the helper the component tests import from packages/ui', () => {
16
+ // Copied tests import `../../../test-utils/lynx-main-thread`, which dolan
17
+ // rewrites to this file. A copy that drifted would test differently in an
18
+ // app than in the library.
19
+ const shipped = readFileSync(new URL('./lynx-main-thread.ts', import.meta.url), 'utf-8');
20
+ const library = readFileSync(new URL('../../../ui/src/test-utils/lynx-main-thread.ts', import.meta.url), 'utf-8');
21
+ expect(shipped).toBe(library);
22
+ });
23
+ });
24
+ //# sourceMappingURL=lynx-main-thread.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lynx-main-thread.test.js","sourceRoot":"","sources":["../../src/testing/lynx-main-thread.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEpD,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,SAAS,CAAC,GAAG,EAAE;QACb,OAAQ,UAA2C,CAAC,cAAc,CAAC;IACrE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,OAAO,GAAG,EAAE,gBAAgB,EAAE,GAAG,EAAE,GAAE,CAAC,EAAE,CAAC;QAC9C,UAA2C,CAAC,cAAc,GAAG;YAC5D,UAAU,EAAE,EAAE,UAAU,EAAE,OAAO,EAAE;SACpC,CAAC;QACF,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;QACnE,0EAA0E;QAC1E,0EAA0E;QAC1E,2BAA2B;QAC3B,MAAM,OAAO,GAAG,YAAY,CAC1B,IAAI,GAAG,CAAC,uBAAuB,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EACjD,OAAO,CACR,CAAC;QACF,MAAM,OAAO,GAAG,YAAY,CAC1B,IAAI,GAAG,CACL,gDAAgD,EAChD,MAAM,CAAC,IAAI,CAAC,GAAG,CAChB,EACD,OAAO,CACR,CAAC;QACF,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}