@lo-tek/interfaces 0.0.0 → 0.37.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 +3254 -0
  2. package/LICENSE +21 -0
  3. package/README.md +128 -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 +35 -0
  161. package/dist/components/default-texts.d.ts.map +1 -0
  162. package/dist/components/default-texts.js +35 -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 +431 -0
  175. package/dist/components/frame/dialog/lt-dialog.js.map +1 -0
  176. package/dist/components/frame/error-summary/error-summary.d.ts +40 -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 +32 -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 +82 -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 +302 -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 +580 -0
  191. package/dist/components/frame/field/lt-field.js.map +1 -0
  192. package/dist/components/frame/popover/lt-popover.d.ts +132 -0
  193. package/dist/components/frame/popover/lt-popover.d.ts.map +1 -0
  194. package/dist/components/frame/popover/lt-popover.js +490 -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 +573 -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 +361 -0
  209. package/dist/components/frame/suggestion/lt-suggestion.d.ts.map +1 -0
  210. package/dist/components/frame/suggestion/lt-suggestion.js +1152 -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 +404 -0
  217. package/dist/components/frame/tabs/lt-tabs.d.ts.map +1 -0
  218. package/dist/components/frame/tabs/lt-tabs.js +1201 -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 +135 -0
  225. package/dist/components/host-element.d.ts.map +1 -0
  226. package/dist/components/host-element.js +366 -0
  227. package/dist/components/host-element.js.map +1 -0
  228. package/dist/components/standalone/connection-status/connection-status.d.ts +28 -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 +22 -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 +81 -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 +216 -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 +137 -0
  245. package/dist/diagnostics/core.d.ts.map +1 -0
  246. package/dist/diagnostics/core.js +72 -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 +492 -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 +1320 -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 +410 -0
  316. package/dist/vocabulary/elements.js.map +1 -0
  317. package/dist/vocabulary/types.d.ts +175 -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 +62 -0
  326. package/manifest/files.json +373 -0
  327. package/manifest/manifest.json +4965 -0
  328. package/manifest/manifest.schema.json +513 -0
  329. package/package.json +398 -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 +34 -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 +510 -0
  407. package/src/components/frame/error-summary/error-summary.css +47 -0
  408. package/src/components/frame/error-summary/error-summary.ts +56 -0
  409. package/src/components/frame/error-summary/lt-error-summary.ts +344 -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 +753 -0
  413. package/src/components/frame/popover/lt-popover.ts +555 -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 +681 -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 +1358 -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 +1319 -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 +400 -0
  426. package/src/components/standalone/connection-status/connection-status.css +41 -0
  427. package/src/components/standalone/connection-status/connection-status.ts +41 -0
  428. package/src/components/standalone/connection-status/lt-connection-status.ts +242 -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 +210 -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 +1322 -0
  453. package/src/vocabulary/elements.ts +412 -0
  454. package/src/vocabulary/types.ts +178 -0
  455. package/src/wasi-host.ts +155 -0
  456. package/web-types.json +800 -0
package/package.json CHANGED
@@ -1,13 +1,406 @@
1
1
  {
2
2
  "name": "@lo-tek/interfaces",
3
- "version": "0.0.0",
4
- "description": "Placeholder. The first real release is 0.37.0.",
3
+ "version": "0.37.0",
4
+ "description": "Framework-agnostic design system: tokens, CSS components and web components.",
5
5
  "license": "MIT",
6
+ "author": "August Søberg-Klyver",
7
+ "homepage": "https://lo-tek.sobernetics.no",
6
8
  "repository": {
7
9
  "type": "git",
8
10
  "url": "git+https://github.com/MarkusAugust/lo-tek.git",
9
- "directory": "designsystem"
11
+ "directory": "interfaces"
10
12
  },
11
- "files": ["README.md"],
12
- "publishConfig": { "access": "public" }
13
+ "bugs": {
14
+ "url": "https://github.com/MarkusAugust/lo-tek/issues"
15
+ },
16
+ "keywords": [
17
+ "designsystem",
18
+ "design-system",
19
+ "web-components",
20
+ "custom-elements",
21
+ "css",
22
+ "design-tokens",
23
+ "accessibility",
24
+ "universell-utforming"
25
+ ],
26
+ "type": "module",
27
+ "engines": {
28
+ "node": "^20.16.0 || >=22.3.0"
29
+ },
30
+ "web-types": "./web-types.json",
31
+ "sideEffects": [
32
+ "*.css"
33
+ ],
34
+ "main": "./dist/index.js",
35
+ "types": "./dist/index.d.ts",
36
+ "bin": {
37
+ "lotek": "dist/cli.js"
38
+ },
39
+ "exports": {
40
+ "./package.json": "./package.json",
41
+ ".": {
42
+ "types": "./dist/index.d.ts",
43
+ "import": "./dist/index.js"
44
+ },
45
+ "./manifest.json": "./manifest/manifest.json",
46
+ "./color-contract.json": "./src/tokens/color-contract.json",
47
+ "./core.wasm": "./core/lotek-core.wasm",
48
+ "./tokens.css": "./src/tokens/tokens.css",
49
+ "./boundary.css": "./src/tokens/boundary.css",
50
+ "./lotek.css": "./dist/lotek.css",
51
+ "./button.css": "./src/components/css/button/button.css",
52
+ "./link.css": "./src/components/css/link/link.css",
53
+ "./sr-only.css": "./src/components/css/sr-only/sr-only.css",
54
+ "./file-upload.css": "./src/components/css/file-upload/file-upload.css",
55
+ "./popover.css": "./src/components/frame/popover/popover.css",
56
+ "./toast.css": "./src/components/standalone/toast/toast.css",
57
+ "./suggestion.css": "./src/components/frame/suggestion/suggestion.css",
58
+ "./checkbox.css": "./src/components/css/checkbox/checkbox.css",
59
+ "./radio.css": "./src/components/css/radio/radio.css",
60
+ "./switch.css": "./src/components/css/switch/switch.css",
61
+ "./fieldset.css": "./src/components/css/fieldset/fieldset.css",
62
+ "./alert.css": "./src/components/css/alert/alert.css",
63
+ "./card.css": "./src/components/css/card/card.css",
64
+ "./divider.css": "./src/components/css/divider/divider.css",
65
+ "./progress.css": "./src/components/css/progress/progress.css",
66
+ "./spinner.css": "./src/components/css/spinner/spinner.css",
67
+ "./badge.css": "./src/components/css/badge/badge.css",
68
+ "./label.css": "./src/components/css/label/label.css",
69
+ "./input.css": "./src/components/css/input/input.css",
70
+ "./textarea.css": "./src/components/css/textarea/textarea.css",
71
+ "./select.css": "./src/components/css/select/select.css",
72
+ "./help-text.css": "./src/components/css/help-text/help-text.css",
73
+ "./icon.css": "./src/components/css/icon/icon.css",
74
+ "./error-text.css": "./src/components/css/error-text/error-text.css",
75
+ "./field.css": "./src/components/frame/field/field.css",
76
+ "./tabs.css": "./src/components/frame/tabs/tabs.css",
77
+ "./error-summary.css": "./src/components/frame/error-summary/error-summary.css",
78
+ "./label": {
79
+ "types": "./dist/components/css/label/label.d.ts",
80
+ "import": "./dist/components/css/label/label.js"
81
+ },
82
+ "./input": {
83
+ "types": "./dist/components/css/input/input.d.ts",
84
+ "import": "./dist/components/css/input/input.js"
85
+ },
86
+ "./textarea": {
87
+ "types": "./dist/components/css/textarea/textarea.d.ts",
88
+ "import": "./dist/components/css/textarea/textarea.js"
89
+ },
90
+ "./select": {
91
+ "types": "./dist/components/css/select/select.d.ts",
92
+ "import": "./dist/components/css/select/select.js"
93
+ },
94
+ "./help-text": {
95
+ "types": "./dist/components/css/help-text/help-text.d.ts",
96
+ "import": "./dist/components/css/help-text/help-text.js"
97
+ },
98
+ "./icon": {
99
+ "types": "./dist/components/css/icon/icon.d.ts",
100
+ "import": "./dist/components/css/icon/icon.js"
101
+ },
102
+ "./error-text": {
103
+ "types": "./dist/components/css/error-text/error-text.d.ts",
104
+ "import": "./dist/components/css/error-text/error-text.js"
105
+ },
106
+ "./field": {
107
+ "types": "./dist/components/frame/field/lt-field.d.ts",
108
+ "import": "./dist/components/frame/field/lt-field.js"
109
+ },
110
+ "./tabs": {
111
+ "types": "./dist/components/frame/tabs/lt-tabs.d.ts",
112
+ "import": "./dist/components/frame/tabs/lt-tabs.js"
113
+ },
114
+ "./error-summary": {
115
+ "types": "./dist/components/frame/error-summary/lt-error-summary.d.ts",
116
+ "import": "./dist/components/frame/error-summary/lt-error-summary.js"
117
+ },
118
+ "./button": {
119
+ "types": "./dist/components/css/button/button.d.ts",
120
+ "import": "./dist/components/css/button/button.js"
121
+ },
122
+ "./tokens": {
123
+ "types": "./dist/tokens/tokens.d.ts",
124
+ "import": "./dist/tokens/tokens.js"
125
+ },
126
+ "./theme": {
127
+ "types": "./dist/tokens/theme.d.ts",
128
+ "import": "./dist/tokens/theme.js"
129
+ },
130
+ "./color": {
131
+ "types": "./dist/tokens/color.d.ts",
132
+ "import": "./dist/tokens/color.js"
133
+ },
134
+ "./contract": {
135
+ "types": "./dist/tokens/contract.d.ts",
136
+ "import": "./dist/tokens/contract.js"
137
+ },
138
+ "./matrix": {
139
+ "types": "./dist/tokens/matrix.d.ts",
140
+ "import": "./dist/tokens/matrix.js"
141
+ },
142
+ "./theme-check": {
143
+ "types": "./dist/tokens/theme-check.d.ts",
144
+ "import": "./dist/tokens/theme-check.js"
145
+ },
146
+ "./tailwind.css": "./src/tailwind/tailwind.css",
147
+ "./badge": {
148
+ "types": "./dist/components/css/badge/badge.d.ts",
149
+ "import": "./dist/components/css/badge/badge.js"
150
+ },
151
+ "./link": {
152
+ "types": "./dist/components/css/link/link.d.ts",
153
+ "import": "./dist/components/css/link/link.js"
154
+ },
155
+ "./sr-only": {
156
+ "types": "./dist/components/css/sr-only/sr-only.d.ts",
157
+ "import": "./dist/components/css/sr-only/sr-only.js"
158
+ },
159
+ "./file-upload": {
160
+ "types": "./dist/components/css/file-upload/file-upload.d.ts",
161
+ "import": "./dist/components/css/file-upload/file-upload.js"
162
+ },
163
+ "./popover": {
164
+ "types": "./dist/components/frame/popover/lt-popover.d.ts",
165
+ "import": "./dist/components/frame/popover/lt-popover.js"
166
+ },
167
+ "./toast": {
168
+ "types": "./dist/components/standalone/toast/lt-toast.d.ts",
169
+ "import": "./dist/components/standalone/toast/lt-toast.js"
170
+ },
171
+ "./suggestion": {
172
+ "types": "./dist/components/frame/suggestion/lt-suggestion.d.ts",
173
+ "import": "./dist/components/frame/suggestion/lt-suggestion.js"
174
+ },
175
+ "./checkbox": {
176
+ "types": "./dist/components/css/checkbox/checkbox.d.ts",
177
+ "import": "./dist/components/css/checkbox/checkbox.js"
178
+ },
179
+ "./radio": {
180
+ "types": "./dist/components/css/radio/radio.d.ts",
181
+ "import": "./dist/components/css/radio/radio.js"
182
+ },
183
+ "./switch": {
184
+ "types": "./dist/components/css/switch/switch.d.ts",
185
+ "import": "./dist/components/css/switch/switch.js"
186
+ },
187
+ "./fieldset": {
188
+ "types": "./dist/components/css/fieldset/fieldset.d.ts",
189
+ "import": "./dist/components/css/fieldset/fieldset.js"
190
+ },
191
+ "./alert": {
192
+ "types": "./dist/components/css/alert/alert.d.ts",
193
+ "import": "./dist/components/css/alert/alert.js"
194
+ },
195
+ "./card": {
196
+ "types": "./dist/components/css/card/card.d.ts",
197
+ "import": "./dist/components/css/card/card.js"
198
+ },
199
+ "./divider": {
200
+ "types": "./dist/components/css/divider/divider.d.ts",
201
+ "import": "./dist/components/css/divider/divider.js"
202
+ },
203
+ "./progress": {
204
+ "types": "./dist/components/css/progress/progress.d.ts",
205
+ "import": "./dist/components/css/progress/progress.js"
206
+ },
207
+ "./spinner": {
208
+ "types": "./dist/components/css/spinner/spinner.d.ts",
209
+ "import": "./dist/components/css/spinner/spinner.js"
210
+ },
211
+ "./shared": {
212
+ "types": "./dist/components/css/shared.d.ts",
213
+ "import": "./dist/components/css/shared.js"
214
+ },
215
+ "./field-core": {
216
+ "types": "./dist/components/frame/field/field-core.d.ts",
217
+ "import": "./dist/components/frame/field/field-core.js"
218
+ },
219
+ "./react": {
220
+ "types": "./dist/react.d.ts",
221
+ "import": "./dist/react.js"
222
+ },
223
+ "./react-jsx": {
224
+ "types": "./dist/jsx/react.d.ts",
225
+ "import": "./dist/jsx/react.js"
226
+ },
227
+ "./dom": {
228
+ "types": "./dist/dom.d.ts",
229
+ "import": "./dist/dom.js"
230
+ },
231
+ "./host-element": {
232
+ "types": "./dist/components/host-element.d.ts",
233
+ "import": "./dist/components/host-element.js"
234
+ },
235
+ "./default-texts": {
236
+ "types": "./dist/components/default-texts.d.ts",
237
+ "import": "./dist/components/default-texts.js"
238
+ },
239
+ "./table.css": "./src/components/css/table/table.css",
240
+ "./table": {
241
+ "types": "./dist/components/css/table/table.d.ts",
242
+ "import": "./dist/components/css/table/table.js"
243
+ },
244
+ "./list.css": "./src/components/css/list/list.css",
245
+ "./list": {
246
+ "types": "./dist/components/css/list/list.d.ts",
247
+ "import": "./dist/components/css/list/list.js"
248
+ },
249
+ "./tag.css": "./src/components/css/tag/tag.css",
250
+ "./tag": {
251
+ "types": "./dist/components/css/tag/tag.d.ts",
252
+ "import": "./dist/components/css/tag/tag.js"
253
+ },
254
+ "./avatar.css": "./src/components/css/avatar/avatar.css",
255
+ "./avatar": {
256
+ "types": "./dist/components/css/avatar/avatar.d.ts",
257
+ "import": "./dist/components/css/avatar/avatar.js"
258
+ },
259
+ "./skeleton.css": "./src/components/css/skeleton/skeleton.css",
260
+ "./skeleton": {
261
+ "types": "./dist/components/css/skeleton/skeleton.d.ts",
262
+ "import": "./dist/components/css/skeleton/skeleton.js"
263
+ },
264
+ "./breadcrumbs.css": "./src/components/css/breadcrumbs/breadcrumbs.css",
265
+ "./breadcrumbs": {
266
+ "types": "./dist/components/css/breadcrumbs/breadcrumbs.d.ts",
267
+ "import": "./dist/components/css/breadcrumbs/breadcrumbs.js"
268
+ },
269
+ "./pagination.css": "./src/components/css/pagination/pagination.css",
270
+ "./pagination": {
271
+ "types": "./dist/components/css/pagination/pagination.d.ts",
272
+ "import": "./dist/components/css/pagination/pagination.js"
273
+ },
274
+ "./skip-link.css": "./src/components/css/skip-link/skip-link.css",
275
+ "./skip-link": {
276
+ "types": "./dist/components/css/skip-link/skip-link.d.ts",
277
+ "import": "./dist/components/css/skip-link/skip-link.js"
278
+ },
279
+ "./accordion.css": "./src/components/css/accordion/accordion.css",
280
+ "./accordion": {
281
+ "types": "./dist/components/css/accordion/accordion.d.ts",
282
+ "import": "./dist/components/css/accordion/accordion.js"
283
+ },
284
+ "./dialog.css": "./src/components/frame/dialog/dialog.css",
285
+ "./dialog": {
286
+ "types": "./dist/components/frame/dialog/lt-dialog.d.ts",
287
+ "import": "./dist/components/frame/dialog/lt-dialog.js"
288
+ },
289
+ "./search.css": "./src/components/css/search/search.css",
290
+ "./search": {
291
+ "types": "./dist/components/css/search/search.d.ts",
292
+ "import": "./dist/components/css/search/search.js"
293
+ },
294
+ "./toggle-group.css": "./src/components/css/toggle-group/toggle-group.css",
295
+ "./toggle-group": {
296
+ "types": "./dist/components/css/toggle-group/toggle-group.d.ts",
297
+ "import": "./dist/components/css/toggle-group/toggle-group.js"
298
+ },
299
+ "./tooltip.css": "./src/components/css/tooltip/tooltip.css",
300
+ "./tooltip": {
301
+ "types": "./dist/components/css/tooltip/tooltip.d.ts",
302
+ "import": "./dist/components/css/tooltip/tooltip.js"
303
+ },
304
+ "./heading.css": "./src/components/css/heading/heading.css",
305
+ "./heading": {
306
+ "types": "./dist/components/css/heading/heading.d.ts",
307
+ "import": "./dist/components/css/heading/heading.js"
308
+ },
309
+ "./paragraph.css": "./src/components/css/paragraph/paragraph.css",
310
+ "./paragraph": {
311
+ "types": "./dist/components/css/paragraph/paragraph.d.ts",
312
+ "import": "./dist/components/css/paragraph/paragraph.js"
313
+ },
314
+ "./session-timeout": {
315
+ "types": "./dist/components/frame/session-timeout/lt-session-timeout.d.ts",
316
+ "import": "./dist/components/frame/session-timeout/lt-session-timeout.js"
317
+ },
318
+ "./session-timeout.css": "./src/components/frame/session-timeout/session-timeout.css",
319
+ "./connection-status": {
320
+ "types": "./dist/components/standalone/connection-status/lt-connection-status.d.ts",
321
+ "import": "./dist/components/standalone/connection-status/lt-connection-status.js"
322
+ },
323
+ "./connection-status.css": "./src/components/standalone/connection-status/connection-status.css",
324
+ "./register": {
325
+ "types": "./dist/register.d.ts",
326
+ "import": "./dist/register.js"
327
+ },
328
+ "./diagnostics": {
329
+ "types": "./dist/diagnostics/index.d.ts",
330
+ "import": "./dist/diagnostics/index.js"
331
+ }
332
+ },
333
+ "files": [
334
+ "agent",
335
+ "dist",
336
+ "web-types.json",
337
+ "live-templates.xml",
338
+ "manifest/manifest.json",
339
+ "manifest/files.json",
340
+ "core/lotek-core.wasm",
341
+ "core/lotek.wasm",
342
+ "manifest/manifest.schema.json",
343
+ "src/*.ts",
344
+ "src/diagnostics",
345
+ "src/jsx",
346
+ "src/tokens",
347
+ "src/components",
348
+ "src/tailwind",
349
+ "src/vocabulary",
350
+ "CHANGELOG.md",
351
+ "!**/*.browser.test.ts",
352
+ "!**/*.test.ts",
353
+ "!**/*.tsbuildinfo"
354
+ ],
355
+ "publishConfig": {
356
+ "access": "public"
357
+ },
358
+ "scripts": {
359
+ "generate": "bun scripts/generate-matrix.ts && bun scripts/generate-tokens.ts && bun scripts/generate-tailwind.ts && bun scripts/generate-vocabulary.ts && bun scripts/generate-agent.ts && bun scripts/generate-manifest.ts",
360
+ "build:css": "bun scripts/build-css.ts",
361
+ "pack": "bun run core && rm -rf dist && tsc -b --force && bun run build:css && npm pack --ignore-scripts",
362
+ "build:browser": "tsc -b && bun run build:css",
363
+ "vocabulary": "bun scripts/generate-vocabulary.ts",
364
+ "check:vocabulary": "bun scripts/check-vocabulary.ts",
365
+ "core": "bun ../core/scripts/build.ts && mkdir -p core && cp ../core/dist/lotek-core.wasm ../core/dist/lotek.wasm core/",
366
+ "build": "bun run core && bun run generate && rm -rf dist && tsc -b --force && bun run build:css && bun run check:exports && bun run check:server && bun run check:types && bun run check:writes && bun run check:test-files && bun run check:texts && bun run check:identifiers && bun run check:agent && bun run check:vocabulary && bun run check:css-witness && bun run check:wording && bun run check:cli && bun run check:version && bun run check:package",
367
+ "typecheck": "tsc --noEmit",
368
+ "typecheck:tests": "tsc --noEmit -p tsconfig.tests.json",
369
+ "test:browser": "vitest --config vitest.config.ts --run",
370
+ "check:exports": "bun scripts/check-exports.ts",
371
+ "check:server": "bun scripts/check-server-import.ts",
372
+ "check:types": "bun scripts/check-types.ts",
373
+ "check:tailwind": "bun scripts/check-tailwind.ts",
374
+ "browsers": "playwright install chromium firefox webkit",
375
+ "test:chromium": "vitest --config vitest.chromium.config.ts --run",
376
+ "theme": "bun src/cli.ts",
377
+ "check:cli": "bun scripts/check-cli.ts",
378
+ "check:version": "bun scripts/check-version.ts",
379
+ "check:package": "publint",
380
+ "prepublishOnly": "bun run build",
381
+ "check:writes": "bun scripts/check-writes.ts",
382
+ "check:test-files": "bun scripts/check-test-files.ts",
383
+ "check:identifiers": "bun scripts/check-identifiers.ts",
384
+ "typecheck:scripts": "tsc --noEmit -p scripts/tsconfig.json",
385
+ "check:wording": "bun scripts/check-wording.ts",
386
+ "check:agent": "bun scripts/check-agent.ts",
387
+ "check:css-witness": "bun scripts/check-css-witness.ts",
388
+ "check:texts": "bun scripts/check-texts.ts",
389
+ "check:without-javascript": "bun scripts/check-without-javascript.ts"
390
+ },
391
+ "devDependencies": {
392
+ "@types/node": "24.12.4",
393
+ "@types/react": "19",
394
+ "@types/react-dom": "19",
395
+ "@vitest/browser": "4.1.7",
396
+ "@vitest/browser-playwright": "^4.1.7",
397
+ "axe-core": "^4.13.0",
398
+ "playwright": "1.60.0",
399
+ "publint": "^0.3.24",
400
+ "react": "19",
401
+ "react-dom": "19",
402
+ "tailwindcss": "4.3.0",
403
+ "vite": "7.0.0",
404
+ "vitest": "4.1.7"
405
+ }
13
406
  }
package/src/cli.ts ADDED
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env node
2
+ /// <reference types="node" />
3
+ /**
4
+ * The LO-TEK command line, `npx @lo-tek/interfaces`.
5
+ *
6
+ * The commands are written in Rust and run as the WASI module
7
+ * `core/lotek.wasm`. The host, which opens the file system and fetches
8
+ * addresses, is in `wasi-host.ts`. The package is this one: the command line
9
+ * reads the manifest, the colour contract, the rulebooks and the components
10
+ * from here.
11
+ */
12
+
13
+ import { runCommandLine } from "./wasi-host.js"
14
+
15
+ process.exit(
16
+ await runCommandLine(
17
+ new URL("../core/lotek.wasm", import.meta.url),
18
+ process.argv.slice(2),
19
+ new URL("..", import.meta.url),
20
+ ),
21
+ )
@@ -0,0 +1,102 @@
1
+ @layer lotek {
2
+ .lt-accordion {
3
+ box-sizing: border-box;
4
+ border: 1px solid var(--lt-color-neutral-border-subtle);
5
+ border-radius: var(--lt-accordion-radius, var(--lt-spacing-1));
6
+ font-family: inherit;
7
+ font-size: var(--lt-font-size-m);
8
+ line-height: var(--lt-line-height-default);
9
+ color: var(--lt-color-neutral-text-strong);
10
+ background: var(--lt-color-neutral-canvas);
11
+ }
12
+
13
+ .lt-accordion + .lt-accordion {
14
+ margin-block-start: var(--lt-spacing-2);
15
+ }
16
+
17
+ .lt-accordion summary {
18
+ display: flex;
19
+ align-items: center;
20
+ justify-content: space-between;
21
+ gap: var(--lt-spacing-2);
22
+ padding: var(
23
+ --lt-accordion-padding,
24
+ var(--lt-spacing-3)
25
+ var(--lt-accordion-padding-inline, var(--lt-spacing-4))
26
+ );
27
+ font-weight: var(--lt-font-weight-semibold);
28
+ cursor: pointer;
29
+ /* The browser's triangle differs in each of them. It is replaced with
30
+ one that is the same everywhere, and that turns with the panel. */
31
+ list-style: none;
32
+ }
33
+
34
+ .lt-accordion summary::-webkit-details-marker {
35
+ display: none;
36
+ }
37
+
38
+ .lt-accordion summary::after {
39
+ content: "";
40
+ inline-size: var(--lt-spacing-2);
41
+ block-size: var(--lt-spacing-2);
42
+ flex: none;
43
+ border-inline-end: 2px solid var(--lt-color-accent-text);
44
+ border-block-end: 2px solid var(--lt-color-accent-text);
45
+ transform: rotate(45deg) translate(-2px, -2px);
46
+ }
47
+
48
+ .lt-accordion[open] summary::after {
49
+ transform: rotate(225deg) translate(-2px, -2px);
50
+ }
51
+
52
+ /* The borders are logical and switch sides in right-to-left, but `rotate`
53
+ is physical. Without these the arrow pointed sideways: left when closed
54
+ and right when open. The angle and the offset are flipped, so it points
55
+ down and up as it otherwise does. */
56
+ .lt-accordion summary:dir(rtl)::after {
57
+ transform: rotate(-45deg) translate(2px, -2px);
58
+ }
59
+
60
+ .lt-accordion[open] summary:dir(rtl)::after {
61
+ transform: rotate(-225deg) translate(2px, -2px);
62
+ }
63
+
64
+ .lt-accordion summary:hover {
65
+ background: var(--lt-color-neutral-surface);
66
+ }
67
+
68
+ .lt-accordion summary:focus-visible {
69
+ outline: var(--lt-focus-ring);
70
+ outline-offset: -2px;
71
+ }
72
+
73
+ /* The documentation shows a heading in `summary`, so the panels get a
74
+ place in the document outline. Without this it got the browser's margin
75
+ and size, and the row became taller and the text larger than without a
76
+ heading. `:where` lets a class from Heading on the heading win. */
77
+ :where(.lt-accordion summary) > :where(h2, h3, h4, h5, h6) {
78
+ margin: 0;
79
+ font: inherit;
80
+ }
81
+
82
+ /* The same space at the sides as the summary, so text and content line up
83
+ also when it changes. */
84
+ .lt-accordion__content {
85
+ padding: 0 var(--lt-accordion-padding-inline, var(--lt-spacing-4))
86
+ var(--lt-spacing-4);
87
+ }
88
+
89
+ .lt-accordion__content > :first-child {
90
+ margin-block-start: 0;
91
+ }
92
+
93
+ .lt-accordion__content > :last-child {
94
+ margin-block-end: 0;
95
+ }
96
+
97
+ .lt-accordion[data-variant="plain"] {
98
+ border-inline: 0;
99
+ border-block-start: 0;
100
+ border-radius: 0;
101
+ }
102
+ }
@@ -0,0 +1,50 @@
1
+ import { attributes, createGuard } from "../shared.js"
2
+
3
+ export const ACCORDION_CLASS = "lt-accordion" as const
4
+ /** The content shown when the panel is open. */
5
+ export const ACCORDION_CONTENT_CLASS = "lt-accordion__content" as const
6
+
7
+ export const accordionVariants = ["default", "plain"] as const
8
+
9
+ export type AccordionVariant = (typeof accordionVariants)[number]
10
+ export type NonDefaultAccordionVariant = Exclude<AccordionVariant, "default">
11
+
12
+ export type AccordionOptions = {
13
+ /** Its own frame, or just a line between the panels. Default: `default`. */
14
+ variant?: AccordionVariant
15
+ }
16
+
17
+ export type AccordionAttributes = {
18
+ class: typeof ACCORDION_CLASS
19
+ "data-variant"?: NonDefaultAccordionVariant
20
+ }
21
+
22
+ /**
23
+ * The attributes for a panel that can be expanded.
24
+ *
25
+ * The class goes on a `<details>` with a `<summary>` first. The browser
26
+ * handles opening, closing, the keyboard and screen readers announcing
27
+ * "expanded" or "collapsed". Build the same thing from buttons and
28
+ * `aria-expanded`, and all of that must be written again, and the browser's
29
+ * find in page no longer finds text inside a closed panel.
30
+ *
31
+ * ```ts
32
+ * <details {...accordion()}>
33
+ * <summary>Who can apply?</summary>
34
+ * <div class={accordion.content}>…</div>
35
+ * </details>
36
+ * ```
37
+ */
38
+ export const accordion = Object.assign(
39
+ ({ variant = "default" }: AccordionOptions = {}): AccordionAttributes =>
40
+ attributes({
41
+ class: ACCORDION_CLASS,
42
+ "data-variant": variant === "default" ? undefined : variant,
43
+ }),
44
+ {
45
+ /** The class on the content below the summary. */
46
+ content: ACCORDION_CONTENT_CLASS,
47
+ variants: accordionVariants,
48
+ isVariant: createGuard(accordionVariants),
49
+ },
50
+ )
@@ -0,0 +1,53 @@
1
+ @layer lotek {
2
+ .lt-alert {
3
+ box-sizing: border-box;
4
+ display: flex;
5
+ flex-direction: column;
6
+ gap: var(--lt-spacing-1);
7
+ padding: var(--lt-alert-padding, var(--lt-spacing-3) var(--lt-spacing-4));
8
+ font-family: inherit;
9
+ font-size: var(--lt-font-size-m);
10
+ line-height: var(--lt-line-height-default);
11
+ color: var(--lt-color-neutral-text-strong);
12
+ background: var(--lt-color-neutral-surface);
13
+ border-radius: var(--lt-alert-radius, var(--lt-spacing-1));
14
+ /* Each colour has a line on the edge and a faint surface, set further
15
+ down. The text keeps its contrast against that surface in both
16
+ themes. */
17
+ border-inline-start: var(--lt-alert-accent, var(--lt-spacing-1)) solid
18
+ var(--lt-color-neutral-text);
19
+ }
20
+
21
+ .lt-alert__title {
22
+ margin: 0;
23
+ font-size: var(--lt-font-size-m);
24
+ font-weight: var(--lt-font-weight-semibold);
25
+ line-height: var(--lt-line-height-default);
26
+ }
27
+
28
+ /* Only the element counts, so the margin of an `lt-help-text` or
29
+ `lt-error-text` in the message wins, as in the card. */
30
+ :where(.lt-alert) p {
31
+ margin: 0;
32
+ }
33
+
34
+ .lt-alert[data-color="success"] {
35
+ background: var(--lt-color-success-surface);
36
+ border-inline-start-color: var(--lt-color-success-text);
37
+ }
38
+
39
+ .lt-alert[data-color="warning"] {
40
+ background: var(--lt-color-warning-surface);
41
+ border-inline-start-color: var(--lt-color-warning-text);
42
+ }
43
+
44
+ .lt-alert[data-color="danger"] {
45
+ background: var(--lt-color-danger-surface);
46
+ border-inline-start-color: var(--lt-color-danger-text);
47
+ }
48
+
49
+ .lt-alert[data-color="info"] {
50
+ background: var(--lt-color-accent-surface);
51
+ border-inline-start-color: var(--lt-color-accent-border);
52
+ }
53
+ }