@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
package/web-types.json ADDED
@@ -0,0 +1,800 @@
1
+ {
2
+ "$schema": "https://raw.githubusercontent.com/JetBrains/web-types/master/schema/web-types.json",
3
+ "name": "@lo-tek/interfaces",
4
+ "version": "0.38.0",
5
+ "description-markup": "markdown",
6
+ "contributions": {
7
+ "html": {
8
+ "elements": [
9
+ {
10
+ "name": "lt-field",
11
+ "description": "Wires label, field, help text and error text together: sets `aria-describedby` and `aria-invalid` on the control and an id on the help text and the error text. Never writes an id on the control: the template writes `for` and `id`, or wraps the field in the label. The field is invalid when the error text is there without `hidden`. Exists for markup produced without JavaScript. When the markup is produced with JavaScript, use `lt.field()` instead.",
12
+ "doc-url": "https://lo-tek.sobernetics.no/components/field/",
13
+ "attributes": [
14
+ {
15
+ "name": "disabled",
16
+ "description": "The control is disabled.",
17
+ "value": {
18
+ "kind": "no-value"
19
+ }
20
+ },
21
+ {
22
+ "name": "optional",
23
+ "description": "The field is optional, and the label says so.",
24
+ "value": {
25
+ "kind": "no-value"
26
+ }
27
+ },
28
+ {
29
+ "name": "described-by",
30
+ "description": "Extra ids to include in `aria-describedby`, separated by spaces.",
31
+ "value": {
32
+ "kind": "plain",
33
+ "type": "text"
34
+ }
35
+ }
36
+ ]
37
+ },
38
+ {
39
+ "name": "lt-tabs",
40
+ "description": "Tab list. The tabs are links to the panels in an `.lt-tabs__list`, so without JavaScript the list is a table of contents; `role=\"tab\"` on anything other than a link is not a tab. The component adds keyboard and focus handling, sets roles and wiring, gives each panel its tab's name, makes only the selected panel a tab stop, and hides the rest with `hidden=\"until-found\"`, so find in page and links into a panel reach them. Each selection is written to the URL. It never writes an id on a tab or a panel. When the page loads, the selected tab is the one with `aria-selected` from the server, otherwise the one the URL points to, otherwise the first one not hidden with `hidden`. Under `server-controlled` the URL never selects.",
41
+ "doc-url": "https://lo-tek.sobernetics.no/components/tabs/",
42
+ "attributes": [
43
+ {
44
+ "name": "server-controlled",
45
+ "description": "The server decides which tab is selected. The component does not put the user's selection back after an update from the server, and the URL selects no tab. A click and find in page select the tab until the server responds.",
46
+ "value": {
47
+ "kind": "no-value"
48
+ }
49
+ },
50
+ {
51
+ "name": "activation",
52
+ "description": "What the arrow keys do. By default they select the tab at once.",
53
+ "value": {
54
+ "kind": "plain",
55
+ "type": "enum"
56
+ },
57
+ "values": [
58
+ {
59
+ "name": "manual",
60
+ "description": "The arrow keys only move focus, and Enter or Space selects. For when a panel's content takes time to load."
61
+ },
62
+ {
63
+ "name": "automatic",
64
+ "description": "The arrow keys select the tab, the same as without the attribute."
65
+ }
66
+ ]
67
+ }
68
+ ],
69
+ "js": {
70
+ "events": [
71
+ {
72
+ "name": "tab-select",
73
+ "description": "The user selected a tab. `index` counts from 0.\n\n`detail`: `{ index: number }`"
74
+ }
75
+ ]
76
+ }
77
+ },
78
+ {
79
+ "name": "lt-error-summary",
80
+ "description": "Error summary. Moves focus to the box when it appears, and to the control when a link in the list is followed.",
81
+ "doc-url": "https://lo-tek.sobernetics.no/components/error-summary/",
82
+ "attributes": [
83
+ {
84
+ "name": "data-autofocus",
85
+ "description": "Whether focus moves to the box when it appears. On by default.",
86
+ "value": {
87
+ "kind": "plain",
88
+ "type": "enum"
89
+ },
90
+ "values": [
91
+ {
92
+ "name": "false",
93
+ "description": "Leave focus where it is."
94
+ },
95
+ {
96
+ "name": "true",
97
+ "description": "Move focus, the same as without the attribute. Anything other than \"false\" moves focus."
98
+ }
99
+ ]
100
+ },
101
+ {
102
+ "name": "hidden",
103
+ "description": "The box is hidden. The server removes the attribute when the form fails, and the component then moves focus.",
104
+ "value": {
105
+ "kind": "no-value"
106
+ }
107
+ }
108
+ ]
109
+ },
110
+ {
111
+ "name": "lt-popover",
112
+ "description": "A panel that hangs from a button and closes itself. A button and a panel with the class `lt-popover` and an id from the template; the component sets `popover` and `aria-controls` where the markup came without them, but never the id.",
113
+ "doc-url": "https://lo-tek.sobernetics.no/components/popover/",
114
+ "attributes": [
115
+ {
116
+ "name": "open",
117
+ "description": "The panel is open. The server can send the attribute to open the panel.",
118
+ "value": {
119
+ "kind": "no-value"
120
+ }
121
+ },
122
+ {
123
+ "name": "placement",
124
+ "description": "Which edge of the button the panel hangs from.",
125
+ "value": {
126
+ "kind": "plain",
127
+ "type": "enum"
128
+ },
129
+ "values": [
130
+ {
131
+ "name": "bottom-start",
132
+ "description": "Below the button, along the start edge. The default."
133
+ },
134
+ {
135
+ "name": "bottom-end",
136
+ "description": "Below the button, along the end edge."
137
+ },
138
+ {
139
+ "name": "top-start",
140
+ "description": "Above the button, along the start edge."
141
+ },
142
+ {
143
+ "name": "top-end",
144
+ "description": "Above the button, along the end edge."
145
+ }
146
+ ]
147
+ },
148
+ {
149
+ "name": "server-controlled",
150
+ "description": "The server decides whether the panel is open. The component does not put `open` back when an update from the server removes it.",
151
+ "value": {
152
+ "kind": "no-value"
153
+ }
154
+ }
155
+ ],
156
+ "js": {
157
+ "events": [
158
+ {
159
+ "name": "popover-toggle",
160
+ "description": "The user opened or closed the panel, or `show()`, `hide()` or `toggle()` was called. Setting `open` as a property or attribute dispatches no event.\n\n`detail`: `{ open: boolean }`"
161
+ }
162
+ ]
163
+ }
164
+ },
165
+ {
166
+ "name": "lt-suggestion",
167
+ "description": "Field with a suggestion list. A `<label for>`, an `<input id>`, an `.lt-suggestion__list` with `<li>` items and a `[role=status]` are enough; the component sets the roles and the wiring where the markup came without them, and gives the list and the options ids. The field never gets an id from the component. Filters as the user types, moves the highlight with the arrow keys and announces the number of matches.",
168
+ "doc-url": "https://lo-tek.sobernetics.no/components/suggestion/",
169
+ "attributes": [
170
+ {
171
+ "name": "prefiltered",
172
+ "description": "The app has already filtered the list, so the component leaves it as it is. Needed when the app's filter is something other than \"the text contains the search term\".",
173
+ "value": {
174
+ "kind": "no-value"
175
+ }
176
+ },
177
+ {
178
+ "name": "count-none",
179
+ "description": "The announcement for no matches. The default is \"No matches\".",
180
+ "value": {
181
+ "kind": "plain",
182
+ "type": "text"
183
+ }
184
+ },
185
+ {
186
+ "name": "count-zero",
187
+ "description": "The announcement in the plural form `zero`, for languages that have it. `{n}` is the number.",
188
+ "value": {
189
+ "kind": "plain",
190
+ "type": "text"
191
+ }
192
+ },
193
+ {
194
+ "name": "count-one",
195
+ "description": "The announcement for one match. `{n}` is the number.",
196
+ "value": {
197
+ "kind": "plain",
198
+ "type": "text"
199
+ }
200
+ },
201
+ {
202
+ "name": "count-two",
203
+ "description": "The announcement in the plural form `two`, for languages that have it. `{n}` is the number.",
204
+ "value": {
205
+ "kind": "plain",
206
+ "type": "text"
207
+ }
208
+ },
209
+ {
210
+ "name": "count-few",
211
+ "description": "The announcement in the plural form `few`, for languages that have it. `{n}` is the number.",
212
+ "value": {
213
+ "kind": "plain",
214
+ "type": "text"
215
+ }
216
+ },
217
+ {
218
+ "name": "count-many",
219
+ "description": "The announcement in the plural form `many`, for languages that have it. `{n}` is the number.",
220
+ "value": {
221
+ "kind": "plain",
222
+ "type": "text"
223
+ }
224
+ },
225
+ {
226
+ "name": "count-other",
227
+ "description": "The announcement for every other count, and the fallback when a form is missing. `{n}` is the number.",
228
+ "value": {
229
+ "kind": "plain",
230
+ "type": "text"
231
+ }
232
+ },
233
+ {
234
+ "name": "server-controlled",
235
+ "description": "The server decides whether the list is expanded and which option is highlighted. The component does not put them back after an update from the server.",
236
+ "value": {
237
+ "kind": "no-value"
238
+ }
239
+ }
240
+ ],
241
+ "js": {
242
+ "events": [
243
+ {
244
+ "name": "suggestion-select",
245
+ "description": "The user chose a suggestion. `label` is the text, `value` the code from `data-value`, or the text when the option has none. The field also gets `input` and `change`, as if the user had typed it.\n\n`detail`: `{ value: string, label: string }`"
246
+ }
247
+ ]
248
+ }
249
+ },
250
+ {
251
+ "name": "lt-dialog",
252
+ "description": "Makes a `<dialog class=\"lt-dialog\">` modal with `showModal()`, for servers that cannot call it themselves. The host around the dialog. Gives the dialog its name from the first heading outside `lt-dialog__body` when neither `aria-labelledby` nor `aria-label` is there.",
253
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/",
254
+ "attributes": [
255
+ {
256
+ "name": "open",
257
+ "description": "The dialog is open. For the server to show it, `open` must be on `<dialog>` too.",
258
+ "value": {
259
+ "kind": "no-value"
260
+ }
261
+ },
262
+ {
263
+ "name": "server-controlled",
264
+ "description": "When an update from the server removes `open` from `<dialog>` while the dialog is open, the component closes it and dispatches `dialog-toggle`, instead of putting `open` back.",
265
+ "value": {
266
+ "kind": "no-value"
267
+ }
268
+ }
269
+ ],
270
+ "js": {
271
+ "events": [
272
+ {
273
+ "name": "dialog-toggle",
274
+ "description": "The dialog opened or closed. `returnValue` is the value of the button that closed it, or an empty string.\n\n`detail`: `{ open: boolean, returnValue: string }`"
275
+ }
276
+ ]
277
+ }
278
+ },
279
+ {
280
+ "name": "lt-toast",
281
+ "description": "A queue of short messages in the corner of the screen. The messages are created from script with `show(text, { color, duration })`.",
282
+ "doc-url": "https://lo-tek.sobernetics.no/components/toast/",
283
+ "attributes": [
284
+ {
285
+ "name": "duration",
286
+ "description": "Milliseconds before a message disappears. The default is 6000, and 0 keeps the messages.",
287
+ "value": {
288
+ "kind": "plain",
289
+ "type": "number"
290
+ }
291
+ },
292
+ {
293
+ "name": "label",
294
+ "description": "Text that tells screen readers what the region is for.",
295
+ "value": {
296
+ "kind": "plain",
297
+ "type": "text"
298
+ }
299
+ },
300
+ {
301
+ "name": "close-label",
302
+ "description": "What the close button in each message is called for screen readers. The default is \"Close message\".",
303
+ "value": {
304
+ "kind": "plain",
305
+ "type": "text"
306
+ }
307
+ }
308
+ ],
309
+ "js": {
310
+ "events": [
311
+ {
312
+ "name": "toast-dismiss",
313
+ "description": "A message was closed, by the user, because its time ran out, or with `dismiss()`. `clear()` dispatches none."
314
+ }
315
+ ]
316
+ }
317
+ },
318
+ {
319
+ "name": "lt-session-timeout",
320
+ "description": "Warns before a signed-in session expires, and counts down. The renderer writes the dialog and the text inside the element: a `<dialog>` with `.lt-session-timeout__count` for the number, `[role=status]` for the announcement and the buttons in a `<form method=\"dialog\">`. Dispatches `session-warn` when the dialog opens, `session-extend` when the user wants to continue, `session-logout` when the user logs out, `session-expired` when time is up, and `session-activity` at most once per `activity-interval` while the user is active, so the app can keep the server session alive.",
321
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/",
322
+ "attributes": [
323
+ {
324
+ "name": "warn-at",
325
+ "description": "Seconds without activity before the warning appears.",
326
+ "value": {
327
+ "kind": "plain",
328
+ "type": "number"
329
+ }
330
+ },
331
+ {
332
+ "name": "expires-at",
333
+ "description": "Seconds without activity before the session expires.",
334
+ "value": {
335
+ "kind": "plain",
336
+ "type": "number"
337
+ }
338
+ },
339
+ {
340
+ "name": "activity-interval",
341
+ "description": "Seconds between each `session-activity` while the user is active. Default 60.",
342
+ "value": {
343
+ "kind": "plain",
344
+ "type": "number"
345
+ }
346
+ }
347
+ ],
348
+ "js": {
349
+ "events": [
350
+ {
351
+ "name": "session-warn",
352
+ "description": "The warning opened."
353
+ },
354
+ {
355
+ "name": "session-extend",
356
+ "description": "The session continues: the user closed the warning with a button other than log out or with Escape, or the app called `extend()`."
357
+ },
358
+ {
359
+ "name": "session-logout",
360
+ "description": "The user chose to log out."
361
+ },
362
+ {
363
+ "name": "session-expired",
364
+ "description": "Time is up."
365
+ },
366
+ {
367
+ "name": "session-activity",
368
+ "description": "The user is active. Dispatched at most once per `activity-interval`, so the app can keep the server session alive."
369
+ }
370
+ ]
371
+ }
372
+ },
373
+ {
374
+ "name": "lt-connection-status",
375
+ "description": "Tells the user when the connection to the server is lost. The app reports with `reportFailure()` and `reportSuccess()`.",
376
+ "doc-url": "https://lo-tek.sobernetics.no/components/connection-status/",
377
+ "attributes": [
378
+ {
379
+ "name": "offline-text",
380
+ "description": "The text when the connection is lost.",
381
+ "value": {
382
+ "kind": "plain",
383
+ "type": "text"
384
+ }
385
+ },
386
+ {
387
+ "name": "online-text",
388
+ "description": "The text when it comes back.",
389
+ "value": {
390
+ "kind": "plain",
391
+ "type": "text"
392
+ }
393
+ }
394
+ ],
395
+ "js": {
396
+ "events": [
397
+ {
398
+ "name": "connection-lost",
399
+ "description": "The connection is lost."
400
+ },
401
+ {
402
+ "name": "connection-restored",
403
+ "description": "The connection is back."
404
+ }
405
+ ]
406
+ }
407
+ }
408
+ ]
409
+ },
410
+ "css": {
411
+ "classes": [
412
+ {
413
+ "name": "lt-accordion",
414
+ "description": "**Accordion**\n\nA panel that can be expanded, built on details and summary. CSS component with two classes and no JavaScript.",
415
+ "doc-url": "https://lo-tek.sobernetics.no/components/accordion/"
416
+ },
417
+ {
418
+ "name": "lt-accordion__content",
419
+ "description": "**Accordion**\n\nA panel that can be expanded, built on details and summary. CSS component with two classes and no JavaScript.",
420
+ "doc-url": "https://lo-tek.sobernetics.no/components/accordion/"
421
+ },
422
+ {
423
+ "name": "lt-alert",
424
+ "description": "**Alert**\n\nA message about the whole page or the whole form. CSS component with two classes and no JavaScript.",
425
+ "doc-url": "https://lo-tek.sobernetics.no/components/alert/"
426
+ },
427
+ {
428
+ "name": "lt-alert__title",
429
+ "description": "**Alert**\n\nA message about the whole page or the whole form. CSS component with two classes and no JavaScript.",
430
+ "doc-url": "https://lo-tek.sobernetics.no/components/alert/"
431
+ },
432
+ {
433
+ "name": "lt-avatar",
434
+ "description": "**Avatar**\n\nProfile picture or initials. A CSS component with two classes and no JavaScript.",
435
+ "doc-url": "https://lo-tek.sobernetics.no/components/avatar/"
436
+ },
437
+ {
438
+ "name": "lt-avatar-stack",
439
+ "description": "**Avatar**\n\nProfile picture or initials. A CSS component with two classes and no JavaScript.",
440
+ "doc-url": "https://lo-tek.sobernetics.no/components/avatar/"
441
+ },
442
+ {
443
+ "name": "lt-badge",
444
+ "description": "**Badge**\n\nCompact status badge. A CSS component with one class and no JavaScript.",
445
+ "doc-url": "https://lo-tek.sobernetics.no/components/badge/"
446
+ },
447
+ {
448
+ "name": "lt-breadcrumbs",
449
+ "description": "**Breadcrumbs**\n\nA breadcrumb trail that shows where on the site the user is. A CSS component with one class and no JavaScript.",
450
+ "doc-url": "https://lo-tek.sobernetics.no/components/breadcrumbs/"
451
+ },
452
+ {
453
+ "name": "lt-button",
454
+ "description": "**Button**\n\nA button for actions. CSS component with one class and no JavaScript.",
455
+ "doc-url": "https://lo-tek.sobernetics.no/components/button/"
456
+ },
457
+ {
458
+ "name": "lt-card",
459
+ "description": "**Card**\n\nA box that groups content that belongs together. A CSS component with two classes and no JavaScript.",
460
+ "doc-url": "https://lo-tek.sobernetics.no/components/card/"
461
+ },
462
+ {
463
+ "name": "lt-card__title",
464
+ "description": "**Card**\n\nA box that groups content that belongs together. A CSS component with two classes and no JavaScript.",
465
+ "doc-url": "https://lo-tek.sobernetics.no/components/card/"
466
+ },
467
+ {
468
+ "name": "lt-checkbox",
469
+ "description": "**Checkbox**\n\nA checkbox for a choice that stands on its own. CSS component with two classes and no JavaScript.",
470
+ "doc-url": "https://lo-tek.sobernetics.no/components/checkbox/"
471
+ },
472
+ {
473
+ "name": "lt-checkbox-row",
474
+ "description": "**Checkbox**\n\nA checkbox for a choice that stands on its own. CSS component with two classes and no JavaScript.",
475
+ "doc-url": "https://lo-tek.sobernetics.no/components/checkbox/"
476
+ },
477
+ {
478
+ "name": "lt-divider",
479
+ "description": "**Divider**\n\nA line between parts of the content. A CSS component with one class and no JavaScript.",
480
+ "doc-url": "https://lo-tek.sobernetics.no/components/divider/"
481
+ },
482
+ {
483
+ "name": "lt-error-text",
484
+ "description": "**Error Text**\n\nError message below a form field. A CSS component with one class and no JavaScript.",
485
+ "doc-url": "https://lo-tek.sobernetics.no/components/error-text/"
486
+ },
487
+ {
488
+ "name": "lt-fieldset",
489
+ "description": "**Fieldset**\n\nA group of controls with a shared label. CSS component with two classes and no JavaScript.",
490
+ "doc-url": "https://lo-tek.sobernetics.no/components/fieldset/"
491
+ },
492
+ {
493
+ "name": "lt-legend",
494
+ "description": "**Fieldset**\n\nA group of controls with a shared label. CSS component with two classes and no JavaScript.",
495
+ "doc-url": "https://lo-tek.sobernetics.no/components/fieldset/"
496
+ },
497
+ {
498
+ "name": "lt-file-upload",
499
+ "description": "**File Upload**\n\nA field for uploading files. A CSS component with two classes and no JavaScript.",
500
+ "doc-url": "https://lo-tek.sobernetics.no/components/file-upload/"
501
+ },
502
+ {
503
+ "name": "lt-file-upload-list",
504
+ "description": "**File Upload**\n\nA field for uploading files. A CSS component with two classes and no JavaScript.",
505
+ "doc-url": "https://lo-tek.sobernetics.no/components/file-upload/"
506
+ },
507
+ {
508
+ "name": "lt-heading",
509
+ "description": "**Heading**\n\nHeadings in six sizes, independent of level. A CSS component with one class and no JavaScript.",
510
+ "doc-url": "https://lo-tek.sobernetics.no/components/heading/"
511
+ },
512
+ {
513
+ "name": "lt-help-text",
514
+ "description": "**Help Text**\n\nExplanatory text below a form field. A CSS component with one class and no JavaScript.",
515
+ "doc-url": "https://lo-tek.sobernetics.no/components/help-text/"
516
+ },
517
+ {
518
+ "name": "lt-icon",
519
+ "description": "**Icon**\n\nAn icon from the app's own set, as large as the text around it. A CSS component with one class and no JavaScript.",
520
+ "doc-url": "https://lo-tek.sobernetics.no/components/icon/"
521
+ },
522
+ {
523
+ "name": "lt-input",
524
+ "description": "**Input**\n\nA text field for forms, with states for valid and invalid. CSS component.",
525
+ "doc-url": "https://lo-tek.sobernetics.no/components/input/"
526
+ },
527
+ {
528
+ "name": "lt-label",
529
+ "description": "**Label**\n\nA label for form fields, with marking of required and optional. A CSS component.",
530
+ "doc-url": "https://lo-tek.sobernetics.no/components/label/"
531
+ },
532
+ {
533
+ "name": "lt-link",
534
+ "description": "**Link**\n\nLink style for navigation in running text. A CSS component with one class and no JavaScript.",
535
+ "doc-url": "https://lo-tek.sobernetics.no/components/link/"
536
+ },
537
+ {
538
+ "name": "lt-list",
539
+ "description": "**List**\n\nBulleted lists, numbered lists and lists without bullets. A CSS component with one class and no JavaScript.",
540
+ "doc-url": "https://lo-tek.sobernetics.no/components/list/"
541
+ },
542
+ {
543
+ "name": "lt-pagination",
544
+ "description": "**Pagination**\n\nPage navigation for long lists. A CSS component with two classes and no JavaScript.",
545
+ "doc-url": "https://lo-tek.sobernetics.no/components/pagination/"
546
+ },
547
+ {
548
+ "name": "lt-pagination__gap",
549
+ "description": "**Pagination**\n\nPage navigation for long lists. A CSS component with two classes and no JavaScript.",
550
+ "doc-url": "https://lo-tek.sobernetics.no/components/pagination/"
551
+ },
552
+ {
553
+ "name": "lt-paragraph",
554
+ "description": "**Paragraph**\n\nBody text and lead paragraphs with a limited line length. A CSS component with one class and no JavaScript.",
555
+ "doc-url": "https://lo-tek.sobernetics.no/components/paragraph/"
556
+ },
557
+ {
558
+ "name": "lt-progress",
559
+ "description": "**Progress**\n\nA progress bar for something that has an end. CSS component with one class and no JavaScript.",
560
+ "doc-url": "https://lo-tek.sobernetics.no/components/progress/"
561
+ },
562
+ {
563
+ "name": "lt-radio",
564
+ "description": "**Radio**\n\nRadio buttons for one choice among several. A CSS component with two classes and no JavaScript.",
565
+ "doc-url": "https://lo-tek.sobernetics.no/components/radio/"
566
+ },
567
+ {
568
+ "name": "lt-radio-row",
569
+ "description": "**Radio**\n\nRadio buttons for one choice among several. A CSS component with two classes and no JavaScript.",
570
+ "doc-url": "https://lo-tek.sobernetics.no/components/radio/"
571
+ },
572
+ {
573
+ "name": "lt-search",
574
+ "description": "**Search**\n\nA search field with a magnifying glass. A CSS component with two classes and no JavaScript.",
575
+ "doc-url": "https://lo-tek.sobernetics.no/components/search/"
576
+ },
577
+ {
578
+ "name": "lt-search-row",
579
+ "description": "**Search**\n\nA search field with a magnifying glass. A CSS component with two classes and no JavaScript.",
580
+ "doc-url": "https://lo-tek.sobernetics.no/components/search/"
581
+ },
582
+ {
583
+ "name": "lt-select",
584
+ "description": "**Select**\n\nA dropdown list. CSS component with one class and no JavaScript.",
585
+ "doc-url": "https://lo-tek.sobernetics.no/components/select/"
586
+ },
587
+ {
588
+ "name": "lt-skeleton",
589
+ "description": "**Skeleton**\n\nA placeholder that shows the shape of content being loaded. A CSS component with one class and no JavaScript.",
590
+ "doc-url": "https://lo-tek.sobernetics.no/components/skeleton/"
591
+ },
592
+ {
593
+ "name": "lt-skip-link",
594
+ "description": "**Skip Link**\n\nA link that skips past the menu to the main content. A CSS component with one class and no JavaScript.",
595
+ "doc-url": "https://lo-tek.sobernetics.no/components/skip-link/"
596
+ },
597
+ {
598
+ "name": "lt-spinner",
599
+ "description": "**Spinner**\n\nA wait indicator for something in progress. CSS component with one class and no JavaScript.",
600
+ "doc-url": "https://lo-tek.sobernetics.no/components/spinner/"
601
+ },
602
+ {
603
+ "name": "lt-sr-only",
604
+ "description": "**Sr Only**\n\nText only screen readers get. A CSS component with one class and no JavaScript.",
605
+ "doc-url": "https://lo-tek.sobernetics.no/components/sr-only/"
606
+ },
607
+ {
608
+ "name": "lt-switch",
609
+ "description": "**Switch**\n\nA switch for a setting that takes effect immediately. CSS component with two classes and no JavaScript.",
610
+ "doc-url": "https://lo-tek.sobernetics.no/components/switch/"
611
+ },
612
+ {
613
+ "name": "lt-switch-row",
614
+ "description": "**Switch**\n\nA switch for a setting that takes effect immediately. CSS component with two classes and no JavaScript.",
615
+ "doc-url": "https://lo-tek.sobernetics.no/components/switch/"
616
+ },
617
+ {
618
+ "name": "lt-table",
619
+ "description": "**Table**\n\nA table for data in rows and columns. CSS component with two classes and no JavaScript.",
620
+ "doc-url": "https://lo-tek.sobernetics.no/components/table/"
621
+ },
622
+ {
623
+ "name": "lt-table__sort",
624
+ "description": "**Table**\n\nA table for data in rows and columns. CSS component with two classes and no JavaScript.",
625
+ "doc-url": "https://lo-tek.sobernetics.no/components/table/"
626
+ },
627
+ {
628
+ "name": "lt-table-scroll",
629
+ "description": "**Table**\n\nA table for data in rows and columns. CSS component with two classes and no JavaScript.",
630
+ "doc-url": "https://lo-tek.sobernetics.no/components/table/"
631
+ },
632
+ {
633
+ "name": "lt-tag",
634
+ "description": "**Tag**\n\nA tag for topics and filters. A CSS component with one class and no JavaScript.",
635
+ "doc-url": "https://lo-tek.sobernetics.no/components/tag/"
636
+ },
637
+ {
638
+ "name": "lt-textarea",
639
+ "description": "**Textarea**\n\nA multi-line text field. A CSS component with one class and no JavaScript.",
640
+ "doc-url": "https://lo-tek.sobernetics.no/components/textarea/"
641
+ },
642
+ {
643
+ "name": "lt-toggle-group",
644
+ "description": "**Toggle Group**\n\nA group where one option is selected at a time. A CSS component with two classes and no JavaScript.",
645
+ "doc-url": "https://lo-tek.sobernetics.no/components/toggle-group/"
646
+ },
647
+ {
648
+ "name": "lt-toggle-group__option",
649
+ "description": "**Toggle Group**\n\nA group where one option is selected at a time. A CSS component with two classes and no JavaScript.",
650
+ "doc-url": "https://lo-tek.sobernetics.no/components/toggle-group/"
651
+ },
652
+ {
653
+ "name": "lt-tooltip",
654
+ "description": "**Tooltip**\n\nA small help text shown on hover and focus. CSS component with two classes and no JavaScript.",
655
+ "doc-url": "https://lo-tek.sobernetics.no/components/tooltip/"
656
+ },
657
+ {
658
+ "name": "lt-tooltip__bubble",
659
+ "description": "**Tooltip**\n\nA small help text shown on hover and focus. CSS component with two classes and no JavaScript.",
660
+ "doc-url": "https://lo-tek.sobernetics.no/components/tooltip/"
661
+ },
662
+ {
663
+ "name": "lt-dialog",
664
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
665
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
666
+ },
667
+ {
668
+ "name": "lt-dialog__body",
669
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
670
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
671
+ },
672
+ {
673
+ "name": "lt-dialog__title",
674
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
675
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
676
+ },
677
+ {
678
+ "name": "lt-dialog__footer",
679
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
680
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
681
+ },
682
+ {
683
+ "name": "lt-dialog__header",
684
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
685
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
686
+ },
687
+ {
688
+ "name": "lt-dialog__subtitle",
689
+ "description": "**Dialog**\n\nModal dialog built on the native dialog element. Six classes and no JavaScript, with an optional component for servers that cannot call showModal().",
690
+ "doc-url": "https://lo-tek.sobernetics.no/components/dialog/"
691
+ },
692
+ {
693
+ "name": "lt-error-summary",
694
+ "description": "**Error Summary**\n\nCollects the errors in a form and takes the user to the field that failed. Frame component.",
695
+ "doc-url": "https://lo-tek.sobernetics.no/components/error-summary/"
696
+ },
697
+ {
698
+ "name": "lt-error-summary__title",
699
+ "description": "**Error Summary**\n\nCollects the errors in a form and takes the user to the field that failed. Frame component.",
700
+ "doc-url": "https://lo-tek.sobernetics.no/components/error-summary/"
701
+ },
702
+ {
703
+ "name": "lt-popover",
704
+ "description": "**Popover**\n\nPanel that hangs below a button and closes itself. Frame component.",
705
+ "doc-url": "https://lo-tek.sobernetics.no/components/popover/"
706
+ },
707
+ {
708
+ "name": "lt-session-timeout",
709
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
710
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
711
+ },
712
+ {
713
+ "name": "lt-session-timeout__dialog",
714
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
715
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
716
+ },
717
+ {
718
+ "name": "lt-session-timeout__title",
719
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
720
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
721
+ },
722
+ {
723
+ "name": "lt-session-timeout__text",
724
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
725
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
726
+ },
727
+ {
728
+ "name": "lt-session-timeout__count",
729
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
730
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
731
+ },
732
+ {
733
+ "name": "lt-session-timeout__actions",
734
+ "description": "**Session Timeout**\n\nWarns before a logged-in session expires, and counts down. You write the dialog, the component keeps the time.",
735
+ "doc-url": "https://lo-tek.sobernetics.no/components/session-timeout/"
736
+ },
737
+ {
738
+ "name": "lt-suggestion__list",
739
+ "description": "**Suggestion**\n\nField with a suggestion list that narrows as the user types. Frame component.",
740
+ "doc-url": "https://lo-tek.sobernetics.no/components/suggestion/"
741
+ },
742
+ {
743
+ "name": "lt-suggestion__option",
744
+ "description": "**Suggestion**\n\nField with a suggestion list that narrows as the user types. Frame component.",
745
+ "doc-url": "https://lo-tek.sobernetics.no/components/suggestion/"
746
+ },
747
+ {
748
+ "name": "lt-suggestion__value",
749
+ "description": "**Suggestion**\n\nField with a suggestion list that narrows as the user types. Frame component.",
750
+ "doc-url": "https://lo-tek.sobernetics.no/components/suggestion/"
751
+ },
752
+ {
753
+ "name": "lt-suggestion__empty",
754
+ "description": "**Suggestion**\n\nField with a suggestion list that narrows as the user types. Frame component.",
755
+ "doc-url": "https://lo-tek.sobernetics.no/components/suggestion/"
756
+ },
757
+ {
758
+ "name": "lt-tabs__list",
759
+ "description": "**Tabs**\n\nTab list of links to their panels. Frame component.",
760
+ "doc-url": "https://lo-tek.sobernetics.no/components/tabs/"
761
+ },
762
+ {
763
+ "name": "lt-tabs__panel",
764
+ "description": "**Tabs**\n\nTab list of links to their panels. Frame component.",
765
+ "doc-url": "https://lo-tek.sobernetics.no/components/tabs/"
766
+ },
767
+ {
768
+ "name": "lt-connection-status",
769
+ "description": "**Connection Status**\n\nTells the user when the connection to the server is gone. Standalone component.",
770
+ "doc-url": "https://lo-tek.sobernetics.no/components/connection-status/"
771
+ },
772
+ {
773
+ "name": "lt-connection-status__bar",
774
+ "description": "**Connection Status**\n\nTells the user when the connection to the server is gone. Standalone component.",
775
+ "doc-url": "https://lo-tek.sobernetics.no/components/connection-status/"
776
+ },
777
+ {
778
+ "name": "lt-toast",
779
+ "description": "**Toast**\n\nA queue of short messages in the corner of the screen. Standalone component.",
780
+ "doc-url": "https://lo-tek.sobernetics.no/components/toast/"
781
+ },
782
+ {
783
+ "name": "lt-toast__message",
784
+ "description": "**Toast**\n\nA queue of short messages in the corner of the screen. Standalone component.",
785
+ "doc-url": "https://lo-tek.sobernetics.no/components/toast/"
786
+ },
787
+ {
788
+ "name": "lt-toast__close",
789
+ "description": "**Toast**\n\nA queue of short messages in the corner of the screen. Standalone component.",
790
+ "doc-url": "https://lo-tek.sobernetics.no/components/toast/"
791
+ },
792
+ {
793
+ "name": "lt-theme-control",
794
+ "description": "**Customising**\n\nChange colours, shape and size in LO-TEK without losing the changes on the next upgrade.",
795
+ "doc-url": "https://lo-tek.sobernetics.no/customising/"
796
+ }
797
+ ]
798
+ }
799
+ }
800
+ }