@lo-tek/interfaces 0.0.0 → 0.38.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (456) hide show
  1. package/CHANGELOG.md +3389 -0
  2. package/LICENSE +21 -0
  3. package/README.md +129 -1
  4. package/agent/astro.md +400 -0
  5. package/agent/bundles.md +429 -0
  6. package/agent/datastar.md +409 -0
  7. package/agent/html.md +388 -0
  8. package/agent/react.md +440 -0
  9. package/agent/templates.md +472 -0
  10. package/core/lotek-core.wasm +0 -0
  11. package/core/lotek.wasm +0 -0
  12. package/dist/cli.d.ts +12 -0
  13. package/dist/cli.d.ts.map +1 -0
  14. package/dist/cli.js +14 -0
  15. package/dist/cli.js.map +1 -0
  16. package/dist/components/css/accordion/accordion.d.ts +37 -0
  17. package/dist/components/css/accordion/accordion.d.ts.map +1 -0
  18. package/dist/components/css/accordion/accordion.js +31 -0
  19. package/dist/components/css/accordion/accordion.js.map +1 -0
  20. package/dist/components/css/alert/alert.d.ts +35 -0
  21. package/dist/components/css/alert/alert.d.ts.map +1 -0
  22. package/dist/components/css/alert/alert.js +29 -0
  23. package/dist/components/css/alert/alert.js.map +1 -0
  24. package/dist/components/css/avatar/avatar.d.ts +40 -0
  25. package/dist/components/css/avatar/avatar.d.ts.map +1 -0
  26. package/dist/components/css/avatar/avatar.js +30 -0
  27. package/dist/components/css/avatar/avatar.js.map +1 -0
  28. package/dist/components/css/badge/badge.d.ts +24 -0
  29. package/dist/components/css/badge/badge.d.ts.map +1 -0
  30. package/dist/components/css/badge/badge.js +24 -0
  31. package/dist/components/css/badge/badge.js.map +1 -0
  32. package/dist/components/css/breadcrumbs/breadcrumbs.d.ts +26 -0
  33. package/dist/components/css/breadcrumbs/breadcrumbs.d.ts.map +1 -0
  34. package/dist/components/css/breadcrumbs/breadcrumbs.js +24 -0
  35. package/dist/components/css/breadcrumbs/breadcrumbs.js.map +1 -0
  36. package/dist/components/css/button/button.d.ts +26 -0
  37. package/dist/components/css/button/button.d.ts.map +1 -0
  38. package/dist/components/css/button/button.js +25 -0
  39. package/dist/components/css/button/button.js.map +1 -0
  40. package/dist/components/css/card/card.d.ts +36 -0
  41. package/dist/components/css/card/card.d.ts.map +1 -0
  42. package/dist/components/css/card/card.js +28 -0
  43. package/dist/components/css/card/card.js.map +1 -0
  44. package/dist/components/css/checkbox/checkbox.d.ts +32 -0
  45. package/dist/components/css/checkbox/checkbox.d.ts.map +1 -0
  46. package/dist/components/css/checkbox/checkbox.js +27 -0
  47. package/dist/components/css/checkbox/checkbox.js.map +1 -0
  48. package/dist/components/css/divider/divider.d.ts +29 -0
  49. package/dist/components/css/divider/divider.d.ts.map +1 -0
  50. package/dist/components/css/divider/divider.js +23 -0
  51. package/dist/components/css/divider/divider.js.map +1 -0
  52. package/dist/components/css/error-text/error-text.d.ts +24 -0
  53. package/dist/components/css/error-text/error-text.d.ts.map +1 -0
  54. package/dist/components/css/error-text/error-text.js +18 -0
  55. package/dist/components/css/error-text/error-text.js.map +1 -0
  56. package/dist/components/css/fieldset/fieldset.d.ts +55 -0
  57. package/dist/components/css/fieldset/fieldset.d.ts.map +1 -0
  58. package/dist/components/css/fieldset/fieldset.js +39 -0
  59. package/dist/components/css/fieldset/fieldset.js.map +1 -0
  60. package/dist/components/css/file-upload/file-upload.d.ts +41 -0
  61. package/dist/components/css/file-upload/file-upload.d.ts.map +1 -0
  62. package/dist/components/css/file-upload/file-upload.js +32 -0
  63. package/dist/components/css/file-upload/file-upload.js.map +1 -0
  64. package/dist/components/css/heading/heading.d.ts +29 -0
  65. package/dist/components/css/heading/heading.d.ts.map +1 -0
  66. package/dist/components/css/heading/heading.js +23 -0
  67. package/dist/components/css/heading/heading.js.map +1 -0
  68. package/dist/components/css/help-text/help-text.d.ts +24 -0
  69. package/dist/components/css/help-text/help-text.d.ts.map +1 -0
  70. package/dist/components/css/help-text/help-text.js +23 -0
  71. package/dist/components/css/help-text/help-text.js.map +1 -0
  72. package/dist/components/css/icon/icon.d.ts +34 -0
  73. package/dist/components/css/icon/icon.d.ts.map +1 -0
  74. package/dist/components/css/icon/icon.js +25 -0
  75. package/dist/components/css/icon/icon.js.map +1 -0
  76. package/dist/components/css/input/input.d.ts +40 -0
  77. package/dist/components/css/input/input.d.ts.map +1 -0
  78. package/dist/components/css/input/input.js +45 -0
  79. package/dist/components/css/input/input.js.map +1 -0
  80. package/dist/components/css/label/label.d.ts +33 -0
  81. package/dist/components/css/label/label.d.ts.map +1 -0
  82. package/dist/components/css/label/label.js +23 -0
  83. package/dist/components/css/label/label.js.map +1 -0
  84. package/dist/components/css/link/link.d.ts +28 -0
  85. package/dist/components/css/link/link.d.ts.map +1 -0
  86. package/dist/components/css/link/link.js +20 -0
  87. package/dist/components/css/link/link.js.map +1 -0
  88. package/dist/components/css/list/list.d.ts +31 -0
  89. package/dist/components/css/list/list.d.ts.map +1 -0
  90. package/dist/components/css/list/list.js +25 -0
  91. package/dist/components/css/list/list.js.map +1 -0
  92. package/dist/components/css/pagination/pagination.d.ts +27 -0
  93. package/dist/components/css/pagination/pagination.d.ts.map +1 -0
  94. package/dist/components/css/pagination/pagination.js +25 -0
  95. package/dist/components/css/pagination/pagination.js.map +1 -0
  96. package/dist/components/css/paragraph/paragraph.d.ts +36 -0
  97. package/dist/components/css/paragraph/paragraph.d.ts.map +1 -0
  98. package/dist/components/css/paragraph/paragraph.js +26 -0
  99. package/dist/components/css/paragraph/paragraph.js.map +1 -0
  100. package/dist/components/css/progress/progress.d.ts +53 -0
  101. package/dist/components/css/progress/progress.d.ts.map +1 -0
  102. package/dist/components/css/progress/progress.js +38 -0
  103. package/dist/components/css/progress/progress.js.map +1 -0
  104. package/dist/components/css/radio/radio.d.ts +32 -0
  105. package/dist/components/css/radio/radio.d.ts.map +1 -0
  106. package/dist/components/css/radio/radio.js +27 -0
  107. package/dist/components/css/radio/radio.js.map +1 -0
  108. package/dist/components/css/search/search.d.ts +34 -0
  109. package/dist/components/css/search/search.d.ts.map +1 -0
  110. package/dist/components/css/search/search.js +32 -0
  111. package/dist/components/css/search/search.js.map +1 -0
  112. package/dist/components/css/select/select.d.ts +40 -0
  113. package/dist/components/css/select/select.d.ts.map +1 -0
  114. package/dist/components/css/select/select.js +31 -0
  115. package/dist/components/css/select/select.js.map +1 -0
  116. package/dist/components/css/shared.d.ts +90 -0
  117. package/dist/components/css/shared.d.ts.map +1 -0
  118. package/dist/components/css/shared.js +167 -0
  119. package/dist/components/css/shared.js.map +1 -0
  120. package/dist/components/css/skeleton/skeleton.d.ts +29 -0
  121. package/dist/components/css/skeleton/skeleton.d.ts.map +1 -0
  122. package/dist/components/css/skeleton/skeleton.js +23 -0
  123. package/dist/components/css/skeleton/skeleton.js.map +1 -0
  124. package/dist/components/css/skip-link/skip-link.d.ts +18 -0
  125. package/dist/components/css/skip-link/skip-link.d.ts.map +1 -0
  126. package/dist/components/css/skip-link/skip-link.js +16 -0
  127. package/dist/components/css/skip-link/skip-link.js.map +1 -0
  128. package/dist/components/css/spinner/spinner.d.ts +33 -0
  129. package/dist/components/css/spinner/spinner.d.ts.map +1 -0
  130. package/dist/components/css/spinner/spinner.js +25 -0
  131. package/dist/components/css/spinner/spinner.js.map +1 -0
  132. package/dist/components/css/sr-only/sr-only.d.ts +17 -0
  133. package/dist/components/css/sr-only/sr-only.d.ts.map +1 -0
  134. package/dist/components/css/sr-only/sr-only.js +15 -0
  135. package/dist/components/css/sr-only/sr-only.js.map +1 -0
  136. package/dist/components/css/switch/switch.d.ts +37 -0
  137. package/dist/components/css/switch/switch.d.ts.map +1 -0
  138. package/dist/components/css/switch/switch.js +29 -0
  139. package/dist/components/css/switch/switch.js.map +1 -0
  140. package/dist/components/css/table/table.d.ts +76 -0
  141. package/dist/components/css/table/table.d.ts.map +1 -0
  142. package/dist/components/css/table/table.js +59 -0
  143. package/dist/components/css/table/table.js.map +1 -0
  144. package/dist/components/css/tag/tag.d.ts +35 -0
  145. package/dist/components/css/tag/tag.d.ts.map +1 -0
  146. package/dist/components/css/tag/tag.js +27 -0
  147. package/dist/components/css/tag/tag.js.map +1 -0
  148. package/dist/components/css/textarea/textarea.d.ts +23 -0
  149. package/dist/components/css/textarea/textarea.d.ts.map +1 -0
  150. package/dist/components/css/textarea/textarea.js +18 -0
  151. package/dist/components/css/textarea/textarea.js.map +1 -0
  152. package/dist/components/css/toggle-group/toggle-group.d.ts +31 -0
  153. package/dist/components/css/toggle-group/toggle-group.d.ts.map +1 -0
  154. package/dist/components/css/toggle-group/toggle-group.js +29 -0
  155. package/dist/components/css/toggle-group/toggle-group.js.map +1 -0
  156. package/dist/components/css/tooltip/tooltip.d.ts +31 -0
  157. package/dist/components/css/tooltip/tooltip.d.ts.map +1 -0
  158. package/dist/components/css/tooltip/tooltip.js +29 -0
  159. package/dist/components/css/tooltip/tooltip.js.map +1 -0
  160. package/dist/components/default-texts.d.ts +41 -0
  161. package/dist/components/default-texts.d.ts.map +1 -0
  162. package/dist/components/default-texts.js +41 -0
  163. package/dist/components/default-texts.js.map +1 -0
  164. package/dist/components/events.d.ts +77 -0
  165. package/dist/components/events.d.ts.map +1 -0
  166. package/dist/components/events.js +3 -0
  167. package/dist/components/events.js.map +1 -0
  168. package/dist/components/frame/dialog/dialog.d.ts +122 -0
  169. package/dist/components/frame/dialog/dialog.d.ts.map +1 -0
  170. package/dist/components/frame/dialog/dialog.js +112 -0
  171. package/dist/components/frame/dialog/dialog.js.map +1 -0
  172. package/dist/components/frame/dialog/lt-dialog.d.ts +104 -0
  173. package/dist/components/frame/dialog/lt-dialog.d.ts.map +1 -0
  174. package/dist/components/frame/dialog/lt-dialog.js +434 -0
  175. package/dist/components/frame/dialog/lt-dialog.js.map +1 -0
  176. package/dist/components/frame/error-summary/error-summary.d.ts +53 -0
  177. package/dist/components/frame/error-summary/error-summary.d.ts.map +1 -0
  178. package/dist/components/frame/error-summary/error-summary.js +54 -0
  179. package/dist/components/frame/error-summary/error-summary.js.map +1 -0
  180. package/dist/components/frame/error-summary/lt-error-summary.d.ts +93 -0
  181. package/dist/components/frame/error-summary/lt-error-summary.d.ts.map +1 -0
  182. package/dist/components/frame/error-summary/lt-error-summary.js +408 -0
  183. package/dist/components/frame/error-summary/lt-error-summary.js.map +1 -0
  184. package/dist/components/frame/field/field-core.d.ts +92 -0
  185. package/dist/components/frame/field/field-core.d.ts.map +1 -0
  186. package/dist/components/frame/field/field-core.js +63 -0
  187. package/dist/components/frame/field/field-core.js.map +1 -0
  188. package/dist/components/frame/field/lt-field.d.ts +173 -0
  189. package/dist/components/frame/field/lt-field.d.ts.map +1 -0
  190. package/dist/components/frame/field/lt-field.js +600 -0
  191. package/dist/components/frame/field/lt-field.js.map +1 -0
  192. package/dist/components/frame/popover/lt-popover.d.ts +136 -0
  193. package/dist/components/frame/popover/lt-popover.d.ts.map +1 -0
  194. package/dist/components/frame/popover/lt-popover.js +520 -0
  195. package/dist/components/frame/popover/lt-popover.js.map +1 -0
  196. package/dist/components/frame/popover/popover.d.ts +49 -0
  197. package/dist/components/frame/popover/popover.d.ts.map +1 -0
  198. package/dist/components/frame/popover/popover.js +64 -0
  199. package/dist/components/frame/popover/popover.js.map +1 -0
  200. package/dist/components/frame/session-timeout/lt-session-timeout.d.ts +198 -0
  201. package/dist/components/frame/session-timeout/lt-session-timeout.d.ts.map +1 -0
  202. package/dist/components/frame/session-timeout/lt-session-timeout.js +610 -0
  203. package/dist/components/frame/session-timeout/lt-session-timeout.js.map +1 -0
  204. package/dist/components/frame/session-timeout/session-timeout.d.ts +113 -0
  205. package/dist/components/frame/session-timeout/session-timeout.d.ts.map +1 -0
  206. package/dist/components/frame/session-timeout/session-timeout.js +101 -0
  207. package/dist/components/frame/session-timeout/session-timeout.js.map +1 -0
  208. package/dist/components/frame/suggestion/lt-suggestion.d.ts +367 -0
  209. package/dist/components/frame/suggestion/lt-suggestion.d.ts.map +1 -0
  210. package/dist/components/frame/suggestion/lt-suggestion.js +1171 -0
  211. package/dist/components/frame/suggestion/lt-suggestion.js.map +1 -0
  212. package/dist/components/frame/suggestion/suggestion.d.ts +143 -0
  213. package/dist/components/frame/suggestion/suggestion.d.ts.map +1 -0
  214. package/dist/components/frame/suggestion/suggestion.js +127 -0
  215. package/dist/components/frame/suggestion/suggestion.js.map +1 -0
  216. package/dist/components/frame/tabs/lt-tabs.d.ts +426 -0
  217. package/dist/components/frame/tabs/lt-tabs.d.ts.map +1 -0
  218. package/dist/components/frame/tabs/lt-tabs.js +1265 -0
  219. package/dist/components/frame/tabs/lt-tabs.js.map +1 -0
  220. package/dist/components/frame/tabs/tabs.d.ts +112 -0
  221. package/dist/components/frame/tabs/tabs.d.ts.map +1 -0
  222. package/dist/components/frame/tabs/tabs.js +107 -0
  223. package/dist/components/frame/tabs/tabs.js.map +1 -0
  224. package/dist/components/host-element.d.ts +184 -0
  225. package/dist/components/host-element.d.ts.map +1 -0
  226. package/dist/components/host-element.js +440 -0
  227. package/dist/components/host-element.js.map +1 -0
  228. package/dist/components/standalone/connection-status/connection-status.d.ts +32 -0
  229. package/dist/components/standalone/connection-status/connection-status.d.ts.map +1 -0
  230. package/dist/components/standalone/connection-status/connection-status.js +26 -0
  231. package/dist/components/standalone/connection-status/connection-status.js.map +1 -0
  232. package/dist/components/standalone/connection-status/lt-connection-status.d.ts +86 -0
  233. package/dist/components/standalone/connection-status/lt-connection-status.d.ts.map +1 -0
  234. package/dist/components/standalone/connection-status/lt-connection-status.js +240 -0
  235. package/dist/components/standalone/connection-status/lt-connection-status.js.map +1 -0
  236. package/dist/components/standalone/toast/lt-toast.d.ts +109 -0
  237. package/dist/components/standalone/toast/lt-toast.d.ts.map +1 -0
  238. package/dist/components/standalone/toast/lt-toast.js +256 -0
  239. package/dist/components/standalone/toast/lt-toast.js.map +1 -0
  240. package/dist/components/standalone/toast/toast.d.ts +52 -0
  241. package/dist/components/standalone/toast/toast.d.ts.map +1 -0
  242. package/dist/components/standalone/toast/toast.js +42 -0
  243. package/dist/components/standalone/toast/toast.js.map +1 -0
  244. package/dist/diagnostics/core.d.ts +171 -0
  245. package/dist/diagnostics/core.d.ts.map +1 -0
  246. package/dist/diagnostics/core.js +84 -0
  247. package/dist/diagnostics/core.js.map +1 -0
  248. package/dist/diagnostics/default-core.d.ts +10 -0
  249. package/dist/diagnostics/default-core.d.ts.map +1 -0
  250. package/dist/diagnostics/default-core.js +72 -0
  251. package/dist/diagnostics/default-core.js.map +1 -0
  252. package/dist/diagnostics/index.d.ts +84 -0
  253. package/dist/diagnostics/index.d.ts.map +1 -0
  254. package/dist/diagnostics/index.js +106 -0
  255. package/dist/diagnostics/index.js.map +1 -0
  256. package/dist/dom.d.ts +55 -0
  257. package/dist/dom.d.ts.map +1 -0
  258. package/dist/dom.js +162 -0
  259. package/dist/dom.js.map +1 -0
  260. package/dist/index.d.ts +97 -0
  261. package/dist/index.d.ts.map +1 -0
  262. package/dist/index.js +58 -0
  263. package/dist/index.js.map +1 -0
  264. package/dist/jsx/react.d.ts +180 -0
  265. package/dist/jsx/react.d.ts.map +1 -0
  266. package/dist/jsx/react.js +2 -0
  267. package/dist/jsx/react.js.map +1 -0
  268. package/dist/lotek.css +3617 -0
  269. package/dist/lt.d.ts +325 -0
  270. package/dist/lt.d.ts.map +1 -0
  271. package/dist/lt.js +183 -0
  272. package/dist/lt.js.map +1 -0
  273. package/dist/react.d.ts +494 -0
  274. package/dist/react.d.ts.map +1 -0
  275. package/dist/react.js +296 -0
  276. package/dist/react.js.map +1 -0
  277. package/dist/register.d.ts +17 -0
  278. package/dist/register.d.ts.map +1 -0
  279. package/dist/register.js +35 -0
  280. package/dist/register.js.map +1 -0
  281. package/dist/tokens/color.d.ts +43 -0
  282. package/dist/tokens/color.d.ts.map +1 -0
  283. package/dist/tokens/color.js +123 -0
  284. package/dist/tokens/color.js.map +1 -0
  285. package/dist/tokens/contract.d.ts +18 -0
  286. package/dist/tokens/contract.d.ts.map +1 -0
  287. package/dist/tokens/contract.js +18 -0
  288. package/dist/tokens/contract.js.map +1 -0
  289. package/dist/tokens/matrix-cells.d.ts +30 -0
  290. package/dist/tokens/matrix-cells.d.ts.map +1 -0
  291. package/dist/tokens/matrix-cells.js +273 -0
  292. package/dist/tokens/matrix-cells.js.map +1 -0
  293. package/dist/tokens/matrix.d.ts +18 -0
  294. package/dist/tokens/matrix.d.ts.map +1 -0
  295. package/dist/tokens/matrix.js +21 -0
  296. package/dist/tokens/matrix.js.map +1 -0
  297. package/dist/tokens/theme-check.d.ts +42 -0
  298. package/dist/tokens/theme-check.d.ts.map +1 -0
  299. package/dist/tokens/theme-check.js +10 -0
  300. package/dist/tokens/theme-check.js.map +1 -0
  301. package/dist/tokens/theme.d.ts +94 -0
  302. package/dist/tokens/theme.d.ts.map +1 -0
  303. package/dist/tokens/theme.js +14 -0
  304. package/dist/tokens/theme.js.map +1 -0
  305. package/dist/tokens/tokens.d.ts +122 -0
  306. package/dist/tokens/tokens.d.ts.map +1 -0
  307. package/dist/tokens/tokens.js +158 -0
  308. package/dist/tokens/tokens.js.map +1 -0
  309. package/dist/vocabulary/classes.d.ts +3 -0
  310. package/dist/vocabulary/classes.d.ts.map +1 -0
  311. package/dist/vocabulary/classes.js +1354 -0
  312. package/dist/vocabulary/classes.js.map +1 -0
  313. package/dist/vocabulary/elements.d.ts +3 -0
  314. package/dist/vocabulary/elements.d.ts.map +1 -0
  315. package/dist/vocabulary/elements.js +490 -0
  316. package/dist/vocabulary/elements.js.map +1 -0
  317. package/dist/vocabulary/types.d.ts +229 -0
  318. package/dist/vocabulary/types.d.ts.map +1 -0
  319. package/dist/vocabulary/types.js +11 -0
  320. package/dist/vocabulary/types.js.map +1 -0
  321. package/dist/wasi-host.d.ts +24 -0
  322. package/dist/wasi-host.d.ts.map +1 -0
  323. package/dist/wasi-host.js +140 -0
  324. package/dist/wasi-host.js.map +1 -0
  325. package/live-templates.xml +63 -0
  326. package/manifest/files.json +373 -0
  327. package/manifest/manifest.json +5090 -0
  328. package/manifest/manifest.schema.json +586 -0
  329. package/package.json +399 -5
  330. package/src/cli.ts +21 -0
  331. package/src/components/css/accordion/accordion.css +102 -0
  332. package/src/components/css/accordion/accordion.ts +50 -0
  333. package/src/components/css/alert/alert.css +53 -0
  334. package/src/components/css/alert/alert.ts +48 -0
  335. package/src/components/css/avatar/avatar.css +96 -0
  336. package/src/components/css/avatar/avatar.ts +57 -0
  337. package/src/components/css/badge/badge.css +42 -0
  338. package/src/components/css/badge/badge.ts +43 -0
  339. package/src/components/css/breadcrumbs/breadcrumbs.css +62 -0
  340. package/src/components/css/breadcrumbs/breadcrumbs.ts +30 -0
  341. package/src/components/css/button/button.css +128 -0
  342. package/src/components/css/button/button.ts +44 -0
  343. package/src/components/css/card/card.css +65 -0
  344. package/src/components/css/card/card.ts +50 -0
  345. package/src/components/css/checkbox/checkbox.css +114 -0
  346. package/src/components/css/checkbox/checkbox.ts +50 -0
  347. package/src/components/css/divider/divider.css +38 -0
  348. package/src/components/css/divider/divider.ts +42 -0
  349. package/src/components/css/error-text/error-text.css +21 -0
  350. package/src/components/css/error-text/error-text.ts +37 -0
  351. package/src/components/css/fieldset/fieldset.css +72 -0
  352. package/src/components/css/fieldset/fieldset.ts +87 -0
  353. package/src/components/css/file-upload/file-upload.css +102 -0
  354. package/src/components/css/file-upload/file-upload.ts +65 -0
  355. package/src/components/css/heading/heading.css +33 -0
  356. package/src/components/css/heading/heading.ts +42 -0
  357. package/src/components/css/help-text/help-text.css +24 -0
  358. package/src/components/css/help-text/help-text.ts +42 -0
  359. package/src/components/css/icon/icon.css +20 -0
  360. package/src/components/css/icon/icon.ts +44 -0
  361. package/src/components/css/input/input.css +145 -0
  362. package/src/components/css/input/input.ts +77 -0
  363. package/src/components/css/label/label.css +42 -0
  364. package/src/components/css/label/label.ts +51 -0
  365. package/src/components/css/link/link.css +38 -0
  366. package/src/components/css/link/link.ts +38 -0
  367. package/src/components/css/list/list.css +53 -0
  368. package/src/components/css/list/list.ts +44 -0
  369. package/src/components/css/pagination/pagination.css +95 -0
  370. package/src/components/css/pagination/pagination.ts +33 -0
  371. package/src/components/css/paragraph/paragraph.css +31 -0
  372. package/src/components/css/paragraph/paragraph.ts +53 -0
  373. package/src/components/css/progress/progress.css +161 -0
  374. package/src/components/css/progress/progress.ts +78 -0
  375. package/src/components/css/radio/radio.css +94 -0
  376. package/src/components/css/radio/radio.ts +50 -0
  377. package/src/components/css/search/search.css +50 -0
  378. package/src/components/css/search/search.ts +56 -0
  379. package/src/components/css/select/select.css +321 -0
  380. package/src/components/css/select/select.ts +63 -0
  381. package/src/components/css/shared.ts +199 -0
  382. package/src/components/css/skeleton/skeleton.css +62 -0
  383. package/src/components/css/skeleton/skeleton.ts +43 -0
  384. package/src/components/css/skip-link/skip-link.css +41 -0
  385. package/src/components/css/skip-link/skip-link.ts +22 -0
  386. package/src/components/css/spinner/spinner.css +48 -0
  387. package/src/components/css/spinner/spinner.ts +48 -0
  388. package/src/components/css/sr-only/sr-only.css +16 -0
  389. package/src/components/css/sr-only/sr-only.ts +21 -0
  390. package/src/components/css/switch/switch.css +105 -0
  391. package/src/components/css/switch/switch.ts +50 -0
  392. package/src/components/css/table/table.css +159 -0
  393. package/src/components/css/table/table.ts +107 -0
  394. package/src/components/css/tag/tag.css +58 -0
  395. package/src/components/css/tag/tag.ts +49 -0
  396. package/src/components/css/textarea/textarea.css +83 -0
  397. package/src/components/css/textarea/textarea.ts +40 -0
  398. package/src/components/css/toggle-group/toggle-group.css +92 -0
  399. package/src/components/css/toggle-group/toggle-group.ts +37 -0
  400. package/src/components/css/tooltip/tooltip.css +89 -0
  401. package/src/components/css/tooltip/tooltip.ts +37 -0
  402. package/src/components/default-texts.ts +41 -0
  403. package/src/components/events.ts +68 -0
  404. package/src/components/frame/dialog/dialog.css +306 -0
  405. package/src/components/frame/dialog/dialog.ts +166 -0
  406. package/src/components/frame/dialog/lt-dialog.ts +513 -0
  407. package/src/components/frame/error-summary/error-summary.css +47 -0
  408. package/src/components/frame/error-summary/error-summary.ts +90 -0
  409. package/src/components/frame/error-summary/lt-error-summary.ts +458 -0
  410. package/src/components/frame/field/field-core.ts +152 -0
  411. package/src/components/frame/field/field.css +17 -0
  412. package/src/components/frame/field/lt-field.ts +790 -0
  413. package/src/components/frame/popover/lt-popover.ts +586 -0
  414. package/src/components/frame/popover/popover.css +50 -0
  415. package/src/components/frame/popover/popover.ts +102 -0
  416. package/src/components/frame/session-timeout/lt-session-timeout.ts +715 -0
  417. package/src/components/frame/session-timeout/session-timeout.css +50 -0
  418. package/src/components/frame/session-timeout/session-timeout.ts +156 -0
  419. package/src/components/frame/suggestion/lt-suggestion.ts +1379 -0
  420. package/src/components/frame/suggestion/suggestion.css +132 -0
  421. package/src/components/frame/suggestion/suggestion.ts +172 -0
  422. package/src/components/frame/tabs/lt-tabs.ts +1395 -0
  423. package/src/components/frame/tabs/tabs.css +128 -0
  424. package/src/components/frame/tabs/tabs.ts +188 -0
  425. package/src/components/host-element.ts +493 -0
  426. package/src/components/standalone/connection-status/connection-status.css +41 -0
  427. package/src/components/standalone/connection-status/connection-status.ts +47 -0
  428. package/src/components/standalone/connection-status/lt-connection-status.ts +268 -0
  429. package/src/components/standalone/toast/lt-toast.ts +300 -0
  430. package/src/components/standalone/toast/toast.css +78 -0
  431. package/src/components/standalone/toast/toast.ts +70 -0
  432. package/src/diagnostics/core.ts +227 -0
  433. package/src/diagnostics/default-core.ts +81 -0
  434. package/src/diagnostics/index.ts +150 -0
  435. package/src/dom.ts +185 -0
  436. package/src/index.ts +218 -0
  437. package/src/jsx/react.ts +212 -0
  438. package/src/lt.ts +192 -0
  439. package/src/react.ts +411 -0
  440. package/src/register.ts +43 -0
  441. package/src/tailwind/tailwind.css +169 -0
  442. package/src/tokens/boundary.css +104 -0
  443. package/src/tokens/color-contract.json +231 -0
  444. package/src/tokens/color.ts +150 -0
  445. package/src/tokens/contract.ts +24 -0
  446. package/src/tokens/matrix-cells.ts +375 -0
  447. package/src/tokens/matrix.ts +32 -0
  448. package/src/tokens/theme-check.ts +51 -0
  449. package/src/tokens/theme.ts +104 -0
  450. package/src/tokens/tokens.css +569 -0
  451. package/src/tokens/tokens.ts +223 -0
  452. package/src/vocabulary/classes.ts +1356 -0
  453. package/src/vocabulary/elements.ts +492 -0
  454. package/src/vocabulary/types.ts +228 -0
  455. package/src/wasi-host.ts +155 -0
  456. package/web-types.json +800 -0
@@ -0,0 +1,440 @@
1
+ /**
2
+ * The base the web components inherit from, and their registration.
3
+ *
4
+ * `HTMLElement` and `customElements` only exist in the browser. A
5
+ * `class X extends HTMLElement` is evaluated when the module loads, so a
6
+ * server that only wanted `lt.button()` from the package stopped with
7
+ * "HTMLElement is not defined" before it got that far. That hit nine of the
8
+ * entry points, the main entry included, and made the package useless in
9
+ * exactly the situation it is built for: the server writing the markup.
10
+ *
11
+ * The fallback is an empty class. It is never used for anything, because
12
+ * without `customElements` nothing is registered, and without registration
13
+ * the browser never creates an instance. It only exists so the module can
14
+ * load.
15
+ */
16
+ export const HostElement = typeof HTMLElement === "undefined"
17
+ ? class {
18
+ }
19
+ : HTMLElement;
20
+ /**
21
+ * Registers a web component, once, and only in the browser.
22
+ *
23
+ * When `defineLt*` is called from a module that also runs on the server, as
24
+ * in TanStack Start or a server-rendered React app, nothing happens. There is
25
+ * no `customElements` there to register in.
26
+ *
27
+ * A constructor can only be in the registry once. If the class is already
28
+ * there under another name, a subclass is registered:
29
+ * `defineLtToast("app-toast")` followed by `defineLt()` otherwise threw
30
+ * NotSupportedError on `lt-toast`, and the components after it in the list
31
+ * were never registered. With the subclass both names work, and `instanceof`
32
+ * holds for both.
33
+ */
34
+ export function defineElement(tagName, element) {
35
+ if (typeof customElements === "undefined")
36
+ return;
37
+ if (customElements.get(tagName))
38
+ return;
39
+ if (isRegistered(element)) {
40
+ customElements.define(tagName, class extends element {
41
+ });
42
+ return;
43
+ }
44
+ try {
45
+ customElements.define(tagName, element);
46
+ }
47
+ catch (error) {
48
+ // The fallback for browsers without `getName`: the name is free, so a
49
+ // NotSupportedError here means the constructor is already in use.
50
+ if (!(error instanceof DOMException && error.name === "NotSupportedError"))
51
+ throw error;
52
+ customElements.define(tagName, class extends element {
53
+ });
54
+ }
55
+ }
56
+ /**
57
+ * Whether the constructor is already in the registry, under any name.
58
+ * `getName` arrived in Chrome 117, Firefox 116 and Safari 17; without it the
59
+ * answer is `false`, and `define` reports the problem itself.
60
+ */
61
+ function isRegistered(element) {
62
+ if (typeof customElements.getName !== "function")
63
+ return false;
64
+ return customElements.getName(element) !== null;
65
+ }
66
+ /**
67
+ * Sets an attribute, but only when the value actually differs.
68
+ *
69
+ * The components observe the attributes they set themselves, so they can set
70
+ * them back after a patch. Writing a value that is already there counts as a
71
+ * change, so the observer calls itself, writes again, and the microtask queue
72
+ * never empties. The page freezes, and a test run hangs without an error: no
73
+ * stack trace, no assertion, just silence. That is why no test can catch it,
74
+ * and why writes go through one function all the components use.
75
+ *
76
+ * `null` removes the attribute.
77
+ */
78
+ export function setAttr(element, name, value) {
79
+ if (value === null || value === undefined) {
80
+ if (element.hasAttribute(name))
81
+ element.removeAttribute(name);
82
+ }
83
+ else if (element.getAttribute(name) !== value) {
84
+ element.setAttribute(name, value);
85
+ }
86
+ }
87
+ /**
88
+ * The attribute a component marks what it wrote with: the names of the
89
+ * attributes on the element whose value is the component's, separated by
90
+ * spaces.
91
+ *
92
+ * Some attributes are both the server's and the component's: `aria-invalid`
93
+ * on a field, `aria-selected` on a tab. To tell the server's word from its
94
+ * own echo, a component remembered the value it wrote, and read anything
95
+ * else as the server's. A server that sent the same value was never seen: a
96
+ * morph does not touch an attribute whose value is already right, and the
97
+ * component took the server's `aria-invalid="true"` for its own and removed
98
+ * it. The mark is what a morph does touch. The server never sends it, so a
99
+ * morph from the server removes it, and an attribute without the mark is the
100
+ * server's, whatever its value. A script that changes the element without a
101
+ * morph leaves the mark, and is seen as before, by the value.
102
+ *
103
+ * Only what differs from the server's word is marked. A value that is the
104
+ * server's has nothing to tell apart, and markup that is already right, as
105
+ * React renders `lt.tabs()` with the state, must not be touched: hydration
106
+ * reports every attribute it did not render.
107
+ */
108
+ export const WRITTEN = "data-lt-written";
109
+ /**
110
+ * Marks `name` on `element` as the component's when `mine`, that is, when
111
+ * what the component wrote differs from the server's word, and removes the
112
+ * mark otherwise.
113
+ */
114
+ export function markWritten(element, name, mine) {
115
+ const marked = new Set((element.getAttribute(WRITTEN) ?? "").split(/\s+/).filter(Boolean));
116
+ if (mine)
117
+ marked.add(name);
118
+ else
119
+ marked.delete(name);
120
+ setAttr(element, WRITTEN, marked.size > 0 ? [...marked].sort().join(" ") : null);
121
+ }
122
+ /**
123
+ * Warns when `element` carries the mark before the component has written on
124
+ * it: the mark is in the markup it was given, copied into a template from
125
+ * the browser's developer tools. A morph then never removes it, and the
126
+ * component takes the server's word for its own echo again. Called where the
127
+ * component meets the element for the first time; the check cannot wait, so
128
+ * the warning is not checked again when the page has settled.
129
+ */
130
+ export function warnAboutCopiedMark(host, element) {
131
+ if (!element.hasAttribute(WRITTEN))
132
+ return;
133
+ warnAboutMarkup(host, `found ${WRITTEN} in the markup it was given. The browser writes the ` +
134
+ "attribute to tell the component's own values from the server's; " +
135
+ "copied into a template, it makes the component take what the " +
136
+ "server sends for its own. Remove it from the template.", () => true);
137
+ }
138
+ /**
139
+ * Whether the component's mark for `name` is still on `element`: no morph
140
+ * from the server has been there since the component wrote it.
141
+ */
142
+ export function stillMarked(element, name) {
143
+ return (element.getAttribute(WRITTEN) ?? "").split(/\s+/).includes(name);
144
+ }
145
+ /**
146
+ * Turns a boolean attribute on or off, without writing when it is already so.
147
+ *
148
+ * `el.hidden = true` on something already hidden writes the attribute again,
149
+ * and that counts as a change. `toggleAttribute` does not: if the attribute
150
+ * is already as it should be, nothing happens. So it is the only permitted
151
+ * way to `hidden`, `disabled` and the other boolean attributes in a component
152
+ * that observes the attributes it writes.
153
+ *
154
+ * `Boolean(on)` and not `on` alone: with `undefined` as the second argument
155
+ * `toggleAttribute` toggles instead of removing. React 19 writes
156
+ * `el.open = undefined` when a prop goes from `true` to absent, and the
157
+ * setter then put the attribute back: a dialog the user had closed opened
158
+ * again as the app followed along.
159
+ */
160
+ export function setFlag(element, name, on) {
161
+ element.toggleAttribute(name, Boolean(on));
162
+ }
163
+ /**
164
+ * The language nearest the element, or `undefined` when the page does not
165
+ * say.
166
+ *
167
+ * `undefined` gives `Intl` the browser's language. A `lang` that is not a
168
+ * valid language tag makes `Intl` throw, and then the browser's language is
169
+ * better than no text.
170
+ */
171
+ export function languageOf(element) {
172
+ /*
173
+ * `closest()` stops at a shadow root. If the element is in one, as in
174
+ * every preview in the documentation, the search continues from the host;
175
+ * otherwise it never found `lang` on `<html>`.
176
+ */
177
+ let node = element;
178
+ while (node) {
179
+ const owner = node.closest("[lang]");
180
+ // `lang=""` means "unknown language" and stops inheritance from the ancestors.
181
+ if (owner) {
182
+ const lang = owner.getAttribute("lang")?.trim();
183
+ if (!lang)
184
+ return undefined;
185
+ try {
186
+ Intl.getCanonicalLocales(lang);
187
+ return lang;
188
+ }
189
+ catch {
190
+ return undefined;
191
+ }
192
+ }
193
+ const root = node.getRootNode();
194
+ node = root instanceof ShadowRoot ? root.host : null;
195
+ }
196
+ return undefined;
197
+ }
198
+ /**
199
+ * Writes text in an element, but only when the text differs.
200
+ *
201
+ * `textContent` is a `childList` change, and the components observe their
202
+ * children. Writing the same text again counts as a change, and then the
203
+ * observer calls itself.
204
+ *
205
+ * `textContent` is all the text in the subtree joined, so the comparison does
206
+ * not tell `<b>3</b> matches` from `3 matches`. The function is meant for
207
+ * elements the component fills with plain text, such as the match count in
208
+ * the suggestion field.
209
+ */
210
+ export function setText(element, text) {
211
+ if (element.textContent !== text)
212
+ element.textContent = text;
213
+ }
214
+ /** Adds a class, but only when it is not already there. */
215
+ export function addClass(element, name) {
216
+ if (!element.classList.contains(name))
217
+ element.classList.add(name);
218
+ }
219
+ /** An id the component creates itself, when the markup had none. */
220
+ export function uniqueId(prefix) {
221
+ return `${prefix}-${Math.random().toString(36).slice(2, 9)}`;
222
+ }
223
+ /**
224
+ * The id an element should have: the one it has, otherwise the one the
225
+ * component created for that node before. A morph keeps the node and tears
226
+ * the id off, and it gets the same one back, so a screen reader does not
227
+ * follow a reference that changes under it.
228
+ */
229
+ export function rememberedId(memory, element, prefix) {
230
+ if (element.id)
231
+ return element.id;
232
+ let id = memory.get(element);
233
+ if (!id) {
234
+ id = uniqueId(prefix);
235
+ memory.set(element, id);
236
+ }
237
+ return id;
238
+ }
239
+ /**
240
+ * The parts with a role, and those without only when the component set the
241
+ * roles itself.
242
+ *
243
+ * The components fill in roles where the markup came without them: a button
244
+ * in the row becomes a tab, an `<li>` in the list becomes an option. But if
245
+ * the server wrote the roles, an element without a role is something else,
246
+ * such as a "close" button in the row, and must not get a role, an id and
247
+ * `tabindex="-1"` from the component. `roledByHost` holds the roles the
248
+ * component set itself: if every role present was set by the component, the
249
+ * markup is bare, and an element without a role that the server sends later
250
+ * is a new part. The parts are limited to the host, since components inside
251
+ * components are ordinary markup.
252
+ */
253
+ export function derivedParts(host, selector, role, roledByHost) {
254
+ const own = [...host.querySelectorAll(selector)].filter((part) => part.closest(host.localName) === host);
255
+ const bare = own
256
+ .filter((part) => part.getAttribute("role") === role)
257
+ .every((part) => roledByHost.has(part));
258
+ return bare ? own : own.filter((part) => part.getAttribute("role") === role);
259
+ }
260
+ /**
261
+ * The attribute that gives the state back to the server.
262
+ *
263
+ * By default the components repair what the user has done: the selected tab,
264
+ * the open popover, the expanded suggestion list. A morph tears it away,
265
+ * since none of it was in the HTML the server sent, and the component sets it
266
+ * back. Then no template needs to know the attributes.
267
+ *
268
+ * Sometimes the server should decide: "go on to step 2" is a real thing a
269
+ * server wants to be able to do. With `server-controlled` on the host, the
270
+ * component does not set back what the user did, and each patch decides. It
271
+ * still does the wiring and the keyboard, and what the attribute means for
272
+ * each component is documented in the component.
273
+ *
274
+ * This replaces `data-preserve-attr`, which required the template to copy the
275
+ * name of every attribute the component would touch. One attribute to
276
+ * remember instead of nine, and the default is the right choice almost
277
+ * always.
278
+ *
279
+ * Preserving is also a mechanism of one particular morpher:
280
+ * `data-preserve-attr` is a `data-*` attribute, and such an attribute only
281
+ * means something to the code that reads it. Repair reads the markup, and
282
+ * works whoever does the morphing.
283
+ */
284
+ export const SERVER_CONTROLLED = "server-controlled";
285
+ /** Whether the server decides the state in this element. */
286
+ export function isServerControlled(element) {
287
+ return element.hasAttribute(SERVER_CONTROLLED);
288
+ }
289
+ /**
290
+ * Warns when the markup a component received does not fit together.
291
+ *
292
+ * A component that cannot find its parts cannot do its job, and the only
293
+ * alternative to a message is silence. It was silent for a long time: a
294
+ * template without a control in `<lt-field>` gave a field without wiring,
295
+ * and nothing said so until someone read the page with a screen reader.
296
+ *
297
+ * The message comes once per element and message. A component syncs on every
298
+ * patch, and a warning per patch would fill the console so fast it became
299
+ * useless. So the message must be the same every time: interpolate a number
300
+ * into it and every round is a new message, and the deduplication is gone.
301
+ *
302
+ * `stillBroken` is why the warning can be trusted. It is called again when
303
+ * the page has settled, and only then is anything written. A component sees
304
+ * its markup as it connects, and the markup is often unfinished then: HTML
305
+ * streamed from a Go or Kotlin server arrives in chunks, and a break between
306
+ * the label and the field is perfectly normal. Without the final check the
307
+ * component warned about markup that was fine a moment later, and a warning
308
+ * that also fires on correct markup gets switched off.
309
+ *
310
+ * It comes in every environment, not only during development. The package
311
+ * has no build step that could remove it, and a warning that only fires on
312
+ * markup that really is wrong belongs where it happens.
313
+ */
314
+ const reported = new WeakMap();
315
+ const queued = new WeakMap();
316
+ export function warnAboutMarkup(element, message, stillBroken) {
317
+ if (typeof console === "undefined")
318
+ return;
319
+ if (reported.get(element)?.has(message))
320
+ return;
321
+ let pending = queued.get(element);
322
+ if (!pending) {
323
+ pending = new Set();
324
+ queued.set(element, pending);
325
+ }
326
+ if (pending.has(message))
327
+ return;
328
+ pending.add(message);
329
+ whenSettled(() => {
330
+ pending.delete(message);
331
+ if (!element.isConnected || !stillBroken())
332
+ return;
333
+ let said = reported.get(element);
334
+ if (!said) {
335
+ said = new Set();
336
+ reported.set(element, said);
337
+ }
338
+ if (said.has(message))
339
+ return;
340
+ said.add(message);
341
+ console.warn(`${element.tagName.toLowerCase()}: ${message}`, element);
342
+ });
343
+ }
344
+ /**
345
+ * Runs once the page has settled.
346
+ *
347
+ * First the parser must be done, or we only see the part of the markup that
348
+ * has arrived so far. Then two frames, so a morph, a React hydration or a
349
+ * script that fills the element in the next task has time to finish first.
350
+ */
351
+ function whenSettled(run) {
352
+ let done = false;
353
+ const once = () => {
354
+ if (done)
355
+ return;
356
+ done = true;
357
+ run();
358
+ };
359
+ const afterTwoFrames = () => {
360
+ if (typeof requestAnimationFrame === "undefined") {
361
+ once();
362
+ return;
363
+ }
364
+ /*
365
+ * A fallback, because `requestAnimationFrame` does not always fire in a
366
+ * frame that is not painted. Tested in an `<iframe>` with
367
+ * `display: none`: Chromium and WebKit fire anyway, Firefox does not.
368
+ * Without the fallback the message stayed in the queue there for ever,
369
+ * and blocked a later, real warning about the same thing.
370
+ *
371
+ * It is not cancelled. An attempt to cancel it in the first frame was
372
+ * worse than the problem: if the first frame fires and the tab is hidden
373
+ * before the second, both the fallback and the second frame are gone,
374
+ * and the check never runs. `once` runs only once, so it does no harm
375
+ * that both paths are running, and whichever comes first wins.
376
+ *
377
+ * One second is chosen so two frames win in anything but a page that is
378
+ * completely stalled. If that happens, a warning about markup that is
379
+ * still unfinished is a small problem next to a frozen page.
380
+ */
381
+ setTimeout(once, 1000);
382
+ requestAnimationFrame(() => requestAnimationFrame(once));
383
+ };
384
+ if (typeof document !== "undefined" && document.readyState === "loading") {
385
+ document.addEventListener("DOMContentLoaded", afterTwoFrames, {
386
+ once: true,
387
+ });
388
+ return;
389
+ }
390
+ afterTwoFrames();
391
+ }
392
+ /**
393
+ * Waits until the element has been upgraded to its component, and returns it
394
+ * with the right type.
395
+ *
396
+ * The components with an imperative API have `show()`, `reportFailure()` and
397
+ * `extend()`. If one of them is called before `defineLt*` has run, the
398
+ * element is still a plain `HTMLElement`, and the call fails with
399
+ * "reportSuccess is not a function". In production it happened in the gap
400
+ * between the server's HTML being there and the registration being loaded:
401
+ * the first message from the event stream arrived in that gap, and the app
402
+ * put a `typeof` guard around every call to get around it.
403
+ *
404
+ * The helpers around the methods instead wait for `whenDefined` on the
405
+ * element's actual tag name, so a call that comes too early is made as soon
406
+ * as the registration is there. `upgrade()` covers an element not yet in the
407
+ * document; one that is in it is already upgraded when `whenDefined`
408
+ * resolves.
409
+ *
410
+ * An element nobody registers would otherwise wait silently for ever. After
411
+ * three seconds the helper says so in the console, once per tag name, and
412
+ * keeps waiting: if the registration comes late, the call should still be
413
+ * made.
414
+ */
415
+ const UPGRADE_WARNING_MS = 3000;
416
+ const warnedTags = new Set();
417
+ export async function whenUpgraded(element) {
418
+ const tag = element.localName;
419
+ if (!customElements.get(tag)) {
420
+ const timer = setTimeout(() => {
421
+ if (customElements.get(tag) || warnedTags.has(tag))
422
+ return;
423
+ warnedTags.add(tag);
424
+ console.warn(`<${tag}> is not registered after ${UPGRADE_WARNING_MS / 1000} seconds. ` +
425
+ `Call defineLt() from @lo-tek/interfaces/register at startup, not in an effect.`, element);
426
+ }, UPGRADE_WARNING_MS);
427
+ // `finally`: `whenDefined` rejects a name without a hyphen, and without
428
+ // the cleanup the timer would have warned "not registered" three seconds
429
+ // after the call had already failed with the right error.
430
+ try {
431
+ await customElements.whenDefined(tag);
432
+ }
433
+ finally {
434
+ clearTimeout(timer);
435
+ }
436
+ }
437
+ customElements.upgrade(element);
438
+ return element;
439
+ }
440
+ //# sourceMappingURL=host-element.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"host-element.js","sourceRoot":"","sources":["../../src/components/host-element.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ export declare const CONNECTION_STATUS_CLASS: "lt-connection-status";
2
+ export declare const CONNECTION_STATUS_BAR_CLASS: "lt-connection-status__bar";
3
+ export type ConnectionStatusOptions = {
4
+ /** The text when the connection is lost. */
5
+ offlineText?: string;
6
+ /** The text when it comes back. Shown for a short while. */
7
+ onlineText?: string;
8
+ };
9
+ export type ConnectionStatusAttributes = {
10
+ class: typeof CONNECTION_STATUS_CLASS;
11
+ role: "status";
12
+ "aria-live": "polite";
13
+ "offline-text"?: string;
14
+ "online-text"?: string;
15
+ "data-ignore-morph": "";
16
+ };
17
+ /**
18
+ * The attributes for the bar that says the connection is lost.
19
+ *
20
+ * By definition the server cannot tell you it is unreachable. When it is
21
+ * down, nothing comes from it to render. So the component creates all the
22
+ * content itself, and `data-ignore-morph` stops a later patch from tearing
23
+ * it away the moment the connection is back. The host is the live region,
24
+ * `role="status"` with `aria-live="polite"`, so the region exists before the
25
+ * bar and its text arrive.
26
+ *
27
+ * ```ts
28
+ * <lt-connection-status {...lt.connectionStatus()} />
29
+ * ```
30
+ */
31
+ export declare const connectionStatus: ({ offlineText, onlineText, }?: ConnectionStatusOptions) => ConnectionStatusAttributes;
32
+ //# sourceMappingURL=connection-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-status.d.ts","sourceRoot":"","sources":["../../../../src/components/standalone/connection-status/connection-status.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,uBAAuB,EAAG,sBAA+B,CAAA;AACtE,eAAO,MAAM,2BAA2B,EAAG,2BAAoC,CAAA;AAE/E,MAAM,MAAM,uBAAuB,GAAG;IACpC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,MAAM,MAAM,0BAA0B,GAAG;IACvC,KAAK,EAAE,OAAO,uBAAuB,CAAA;IACrC,IAAI,EAAE,QAAQ,CAAA;IACd,WAAW,EAAE,QAAQ,CAAA;IACrB,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,EAAE,EAAE,CAAA;CACxB,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,gBAAgB,GAAI,+BAG9B,uBAA4B,KAAG,0BAQ9B,CAAA"}
@@ -0,0 +1,26 @@
1
+ import { attributes } from "../../css/shared.js";
2
+ export const CONNECTION_STATUS_CLASS = "lt-connection-status";
3
+ export const CONNECTION_STATUS_BAR_CLASS = "lt-connection-status__bar";
4
+ /**
5
+ * The attributes for the bar that says the connection is lost.
6
+ *
7
+ * By definition the server cannot tell you it is unreachable. When it is
8
+ * down, nothing comes from it to render. So the component creates all the
9
+ * content itself, and `data-ignore-morph` stops a later patch from tearing
10
+ * it away the moment the connection is back. The host is the live region,
11
+ * `role="status"` with `aria-live="polite"`, so the region exists before the
12
+ * bar and its text arrive.
13
+ *
14
+ * ```ts
15
+ * <lt-connection-status {...lt.connectionStatus()} />
16
+ * ```
17
+ */
18
+ export const connectionStatus = ({ offlineText, onlineText, } = {}) => attributes({
19
+ class: CONNECTION_STATUS_CLASS,
20
+ role: "status",
21
+ "aria-live": "polite",
22
+ "offline-text": offlineText,
23
+ "online-text": onlineText,
24
+ "data-ignore-morph": "",
25
+ });
26
+ //# sourceMappingURL=connection-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connection-status.js","sourceRoot":"","sources":["../../../../src/components/standalone/connection-status/connection-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAEhD,MAAM,CAAC,MAAM,uBAAuB,GAAG,sBAA+B,CAAA;AACtE,MAAM,CAAC,MAAM,2BAA2B,GAAG,2BAAoC,CAAA;AAkB/E;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAC/B,WAAW,EACX,UAAU,MACiB,EAAE,EAA8B,EAAE,CAC7D,UAAU,CAAC;IACT,KAAK,EAAE,uBAAuB;IAC9B,IAAI,EAAE,QAAiB;IACvB,WAAW,EAAE,QAAiB;IAC9B,cAAc,EAAE,WAAW;IAC3B,aAAa,EAAE,UAAU;IACzB,mBAAmB,EAAE,EAAW;CACjC,CAAC,CAAA"}
@@ -0,0 +1,86 @@
1
+ import { HostElement } from "../../host-element.js";
2
+ export declare const LT_CONNECTION_STATUS_TAG: "lt-connection-status";
3
+ /**
4
+ * Tells the user when the connection to the server is lost.
5
+ *
6
+ * By definition the server cannot tell you this. When it is unreachable,
7
+ * nothing comes from it. So this is a standalone component that creates all
8
+ * of its content itself.
9
+ *
10
+ * It is not decoration in an app that fetches content from the server as it
11
+ * goes. A page that loses its stream looks perfectly normal but is frozen,
12
+ * and a user filling in a form over a dead connection loses everything.
13
+ *
14
+ * `navigator.onLine` only says whether the machine has a network, not whether
15
+ * the server answers. That is why `reportFailure()` and `reportSuccess()`
16
+ * exist: the app calls them when a request fails or succeeds.
17
+ *
18
+ * ```ts
19
+ * const status = document.querySelector("lt-connection-status")
20
+ * try {
21
+ * const response = await fetch("/api/save", { method: "POST", body })
22
+ * if (!response.ok) throw new Error(response.statusText)
23
+ * status.reportSuccess()
24
+ * } catch {
25
+ * status.reportFailure()
26
+ * }
27
+ * ```
28
+ */
29
+ export declare class LtConnectionStatus extends HostElement {
30
+ static observedAttributes: readonly ["offline-text", "online-text"];
31
+ private bar?;
32
+ private timer?;
33
+ /** True when the app has reported a failed request, regardless of navigator. */
34
+ private failing;
35
+ get offlineText(): string;
36
+ set offlineText(value: string);
37
+ get onlineText(): string;
38
+ set onlineText(value: string);
39
+ attributeChangedCallback(): void;
40
+ connectedCallback(): void;
41
+ private regionObserver?;
42
+ /**
43
+ * The region, as a pair and only when both are missing. A role the server
44
+ * wrote carries its own politeness (`alert` is assertive), and an
45
+ * `aria-live` added next to it would override that.
46
+ */
47
+ private markRegion;
48
+ disconnectedCallback(): void;
49
+ /**
50
+ * The bar, created empty first and filled afterwards.
51
+ *
52
+ * A live region must exist before its content arrives, or assistive
53
+ * technology does not announce the first change. The region is the host
54
+ * (see `connectedCallback`), so the bar is content inside a region that is
55
+ * already there; the text is still set in the next frame when the bar is
56
+ * new, so the bar and its text arrive as two changes.
57
+ *
58
+ * The bar is created only when it is needed, not on connection: when it
59
+ * was in the DOM before React hydrated, React found an element it had not
60
+ * rendered.
61
+ */
62
+ private ensureBar;
63
+ private write;
64
+ private showOffline;
65
+ private showOnline;
66
+ private scheduleRemoval;
67
+ private handleOffline;
68
+ private handleOnline;
69
+ private emit;
70
+ /** Reports that a request to the server failed. */
71
+ reportFailure(): void;
72
+ /** Reports that a request to the server succeeded again. */
73
+ reportSuccess(): void;
74
+ }
75
+ export declare function defineLtConnectionStatus(tagName?: string): void;
76
+ /**
77
+ * `element.reportFailure()`, but waits for the registration first.
78
+ *
79
+ * This is where the gap showed up in production: the first message from the
80
+ * event stream came before `defineLtConnectionStatus()`, and the app got
81
+ * "reportSuccess is not a function". See `whenUpgraded`.
82
+ */
83
+ export declare function reportFailure(element: Element): Promise<void>;
84
+ /** `element.reportSuccess()`, but waits for the registration first. */
85
+ export declare function reportSuccess(element: Element): Promise<void>;
86
+ //# sourceMappingURL=lt-connection-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lt-connection-status.d.ts","sourceRoot":"","sources":["../../../../src/components/standalone/connection-status/lt-connection-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,WAAW,EAAgB,MAAM,uBAAuB,CAAA;AAMhF,eAAO,MAAM,wBAAwB,EAAG,sBAA+B,CAAA;AAUvE;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,qBAAa,kBAAmB,SAAQ,WAAW;IACjD,MAAM,CAAC,kBAAkB,2CAA2C;IAEpE,OAAO,CAAC,GAAG,CAAC,CAAa;IACzB,OAAO,CAAC,KAAK,CAAC,CAAQ;IACtB,gFAAgF;IAChF,OAAO,CAAC,OAAO,CAAQ;IAEvB,IAAI,WAAW,IAAI,MAAM,CAExB;IAED,IAAI,WAAW,CAAC,KAAK,EAAE,MAAM,EAE5B;IAED,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,IAAI,UAAU,CAAC,KAAK,EAAE,MAAM,EAE3B;IAED,wBAAwB,IAAI,IAAI;IAWhC,iBAAiB,IAAI,IAAI;IAsCzB,OAAO,CAAC,cAAc,CAAC,CAAkB;IAEzC;;;;OAIG;IACH,OAAO,CAAC,UAAU;IAMlB,oBAAoB,IAAI,IAAI;IAS5B;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,KAAK;IAuBb,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,aAAa,CAEpB;IAED,OAAO,CAAC,YAAY,CAGnB;IAED,OAAO,CAAC,IAAI;IAIZ,mDAAmD;IACnD,aAAa,IAAI,IAAI;IAMrB,4DAA4D;IAC5D,aAAa,IAAI,IAAI;CAKtB;AAED,wBAAgB,wBAAwB,CACtC,OAAO,GAAE,MAAiC,GACzC,IAAI,CAEN;AAED;;;;;;GAMG;AACH,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE;AAED,uEAAuE;AACvE,wBAAsB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAGnE"}