@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.
- package/CHANGELOG.md +3254 -0
- package/LICENSE +21 -0
- package/README.md +128 -1
- package/agent/astro.md +400 -0
- package/agent/bundles.md +429 -0
- package/agent/datastar.md +409 -0
- package/agent/html.md +388 -0
- package/agent/react.md +440 -0
- package/agent/templates.md +472 -0
- package/core/lotek-core.wasm +0 -0
- package/core/lotek.wasm +0 -0
- package/dist/cli.d.ts +12 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +14 -0
- package/dist/cli.js.map +1 -0
- package/dist/components/css/accordion/accordion.d.ts +37 -0
- package/dist/components/css/accordion/accordion.d.ts.map +1 -0
- package/dist/components/css/accordion/accordion.js +31 -0
- package/dist/components/css/accordion/accordion.js.map +1 -0
- package/dist/components/css/alert/alert.d.ts +35 -0
- package/dist/components/css/alert/alert.d.ts.map +1 -0
- package/dist/components/css/alert/alert.js +29 -0
- package/dist/components/css/alert/alert.js.map +1 -0
- package/dist/components/css/avatar/avatar.d.ts +40 -0
- package/dist/components/css/avatar/avatar.d.ts.map +1 -0
- package/dist/components/css/avatar/avatar.js +30 -0
- package/dist/components/css/avatar/avatar.js.map +1 -0
- package/dist/components/css/badge/badge.d.ts +24 -0
- package/dist/components/css/badge/badge.d.ts.map +1 -0
- package/dist/components/css/badge/badge.js +24 -0
- package/dist/components/css/badge/badge.js.map +1 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.d.ts +26 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.d.ts.map +1 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.js +24 -0
- package/dist/components/css/breadcrumbs/breadcrumbs.js.map +1 -0
- package/dist/components/css/button/button.d.ts +26 -0
- package/dist/components/css/button/button.d.ts.map +1 -0
- package/dist/components/css/button/button.js +25 -0
- package/dist/components/css/button/button.js.map +1 -0
- package/dist/components/css/card/card.d.ts +36 -0
- package/dist/components/css/card/card.d.ts.map +1 -0
- package/dist/components/css/card/card.js +28 -0
- package/dist/components/css/card/card.js.map +1 -0
- package/dist/components/css/checkbox/checkbox.d.ts +32 -0
- package/dist/components/css/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/css/checkbox/checkbox.js +27 -0
- package/dist/components/css/checkbox/checkbox.js.map +1 -0
- package/dist/components/css/divider/divider.d.ts +29 -0
- package/dist/components/css/divider/divider.d.ts.map +1 -0
- package/dist/components/css/divider/divider.js +23 -0
- package/dist/components/css/divider/divider.js.map +1 -0
- package/dist/components/css/error-text/error-text.d.ts +24 -0
- package/dist/components/css/error-text/error-text.d.ts.map +1 -0
- package/dist/components/css/error-text/error-text.js +18 -0
- package/dist/components/css/error-text/error-text.js.map +1 -0
- package/dist/components/css/fieldset/fieldset.d.ts +55 -0
- package/dist/components/css/fieldset/fieldset.d.ts.map +1 -0
- package/dist/components/css/fieldset/fieldset.js +39 -0
- package/dist/components/css/fieldset/fieldset.js.map +1 -0
- package/dist/components/css/file-upload/file-upload.d.ts +41 -0
- package/dist/components/css/file-upload/file-upload.d.ts.map +1 -0
- package/dist/components/css/file-upload/file-upload.js +32 -0
- package/dist/components/css/file-upload/file-upload.js.map +1 -0
- package/dist/components/css/heading/heading.d.ts +29 -0
- package/dist/components/css/heading/heading.d.ts.map +1 -0
- package/dist/components/css/heading/heading.js +23 -0
- package/dist/components/css/heading/heading.js.map +1 -0
- package/dist/components/css/help-text/help-text.d.ts +24 -0
- package/dist/components/css/help-text/help-text.d.ts.map +1 -0
- package/dist/components/css/help-text/help-text.js +23 -0
- package/dist/components/css/help-text/help-text.js.map +1 -0
- package/dist/components/css/icon/icon.d.ts +34 -0
- package/dist/components/css/icon/icon.d.ts.map +1 -0
- package/dist/components/css/icon/icon.js +25 -0
- package/dist/components/css/icon/icon.js.map +1 -0
- package/dist/components/css/input/input.d.ts +40 -0
- package/dist/components/css/input/input.d.ts.map +1 -0
- package/dist/components/css/input/input.js +45 -0
- package/dist/components/css/input/input.js.map +1 -0
- package/dist/components/css/label/label.d.ts +33 -0
- package/dist/components/css/label/label.d.ts.map +1 -0
- package/dist/components/css/label/label.js +23 -0
- package/dist/components/css/label/label.js.map +1 -0
- package/dist/components/css/link/link.d.ts +28 -0
- package/dist/components/css/link/link.d.ts.map +1 -0
- package/dist/components/css/link/link.js +20 -0
- package/dist/components/css/link/link.js.map +1 -0
- package/dist/components/css/list/list.d.ts +31 -0
- package/dist/components/css/list/list.d.ts.map +1 -0
- package/dist/components/css/list/list.js +25 -0
- package/dist/components/css/list/list.js.map +1 -0
- package/dist/components/css/pagination/pagination.d.ts +27 -0
- package/dist/components/css/pagination/pagination.d.ts.map +1 -0
- package/dist/components/css/pagination/pagination.js +25 -0
- package/dist/components/css/pagination/pagination.js.map +1 -0
- package/dist/components/css/paragraph/paragraph.d.ts +36 -0
- package/dist/components/css/paragraph/paragraph.d.ts.map +1 -0
- package/dist/components/css/paragraph/paragraph.js +26 -0
- package/dist/components/css/paragraph/paragraph.js.map +1 -0
- package/dist/components/css/progress/progress.d.ts +53 -0
- package/dist/components/css/progress/progress.d.ts.map +1 -0
- package/dist/components/css/progress/progress.js +38 -0
- package/dist/components/css/progress/progress.js.map +1 -0
- package/dist/components/css/radio/radio.d.ts +32 -0
- package/dist/components/css/radio/radio.d.ts.map +1 -0
- package/dist/components/css/radio/radio.js +27 -0
- package/dist/components/css/radio/radio.js.map +1 -0
- package/dist/components/css/search/search.d.ts +34 -0
- package/dist/components/css/search/search.d.ts.map +1 -0
- package/dist/components/css/search/search.js +32 -0
- package/dist/components/css/search/search.js.map +1 -0
- package/dist/components/css/select/select.d.ts +40 -0
- package/dist/components/css/select/select.d.ts.map +1 -0
- package/dist/components/css/select/select.js +31 -0
- package/dist/components/css/select/select.js.map +1 -0
- package/dist/components/css/shared.d.ts +90 -0
- package/dist/components/css/shared.d.ts.map +1 -0
- package/dist/components/css/shared.js +167 -0
- package/dist/components/css/shared.js.map +1 -0
- package/dist/components/css/skeleton/skeleton.d.ts +29 -0
- package/dist/components/css/skeleton/skeleton.d.ts.map +1 -0
- package/dist/components/css/skeleton/skeleton.js +23 -0
- package/dist/components/css/skeleton/skeleton.js.map +1 -0
- package/dist/components/css/skip-link/skip-link.d.ts +18 -0
- package/dist/components/css/skip-link/skip-link.d.ts.map +1 -0
- package/dist/components/css/skip-link/skip-link.js +16 -0
- package/dist/components/css/skip-link/skip-link.js.map +1 -0
- package/dist/components/css/spinner/spinner.d.ts +33 -0
- package/dist/components/css/spinner/spinner.d.ts.map +1 -0
- package/dist/components/css/spinner/spinner.js +25 -0
- package/dist/components/css/spinner/spinner.js.map +1 -0
- package/dist/components/css/sr-only/sr-only.d.ts +17 -0
- package/dist/components/css/sr-only/sr-only.d.ts.map +1 -0
- package/dist/components/css/sr-only/sr-only.js +15 -0
- package/dist/components/css/sr-only/sr-only.js.map +1 -0
- package/dist/components/css/switch/switch.d.ts +37 -0
- package/dist/components/css/switch/switch.d.ts.map +1 -0
- package/dist/components/css/switch/switch.js +29 -0
- package/dist/components/css/switch/switch.js.map +1 -0
- package/dist/components/css/table/table.d.ts +76 -0
- package/dist/components/css/table/table.d.ts.map +1 -0
- package/dist/components/css/table/table.js +59 -0
- package/dist/components/css/table/table.js.map +1 -0
- package/dist/components/css/tag/tag.d.ts +35 -0
- package/dist/components/css/tag/tag.d.ts.map +1 -0
- package/dist/components/css/tag/tag.js +27 -0
- package/dist/components/css/tag/tag.js.map +1 -0
- package/dist/components/css/textarea/textarea.d.ts +23 -0
- package/dist/components/css/textarea/textarea.d.ts.map +1 -0
- package/dist/components/css/textarea/textarea.js +18 -0
- package/dist/components/css/textarea/textarea.js.map +1 -0
- package/dist/components/css/toggle-group/toggle-group.d.ts +31 -0
- package/dist/components/css/toggle-group/toggle-group.d.ts.map +1 -0
- package/dist/components/css/toggle-group/toggle-group.js +29 -0
- package/dist/components/css/toggle-group/toggle-group.js.map +1 -0
- package/dist/components/css/tooltip/tooltip.d.ts +31 -0
- package/dist/components/css/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/css/tooltip/tooltip.js +29 -0
- package/dist/components/css/tooltip/tooltip.js.map +1 -0
- package/dist/components/default-texts.d.ts +35 -0
- package/dist/components/default-texts.d.ts.map +1 -0
- package/dist/components/default-texts.js +35 -0
- package/dist/components/default-texts.js.map +1 -0
- package/dist/components/events.d.ts +77 -0
- package/dist/components/events.d.ts.map +1 -0
- package/dist/components/events.js +3 -0
- package/dist/components/events.js.map +1 -0
- package/dist/components/frame/dialog/dialog.d.ts +122 -0
- package/dist/components/frame/dialog/dialog.d.ts.map +1 -0
- package/dist/components/frame/dialog/dialog.js +112 -0
- package/dist/components/frame/dialog/dialog.js.map +1 -0
- package/dist/components/frame/dialog/lt-dialog.d.ts +104 -0
- package/dist/components/frame/dialog/lt-dialog.d.ts.map +1 -0
- package/dist/components/frame/dialog/lt-dialog.js +431 -0
- package/dist/components/frame/dialog/lt-dialog.js.map +1 -0
- package/dist/components/frame/error-summary/error-summary.d.ts +40 -0
- package/dist/components/frame/error-summary/error-summary.d.ts.map +1 -0
- package/dist/components/frame/error-summary/error-summary.js +32 -0
- package/dist/components/frame/error-summary/error-summary.js.map +1 -0
- package/dist/components/frame/error-summary/lt-error-summary.d.ts +82 -0
- package/dist/components/frame/error-summary/lt-error-summary.d.ts.map +1 -0
- package/dist/components/frame/error-summary/lt-error-summary.js +302 -0
- package/dist/components/frame/error-summary/lt-error-summary.js.map +1 -0
- package/dist/components/frame/field/field-core.d.ts +92 -0
- package/dist/components/frame/field/field-core.d.ts.map +1 -0
- package/dist/components/frame/field/field-core.js +63 -0
- package/dist/components/frame/field/field-core.js.map +1 -0
- package/dist/components/frame/field/lt-field.d.ts +173 -0
- package/dist/components/frame/field/lt-field.d.ts.map +1 -0
- package/dist/components/frame/field/lt-field.js +580 -0
- package/dist/components/frame/field/lt-field.js.map +1 -0
- package/dist/components/frame/popover/lt-popover.d.ts +132 -0
- package/dist/components/frame/popover/lt-popover.d.ts.map +1 -0
- package/dist/components/frame/popover/lt-popover.js +490 -0
- package/dist/components/frame/popover/lt-popover.js.map +1 -0
- package/dist/components/frame/popover/popover.d.ts +49 -0
- package/dist/components/frame/popover/popover.d.ts.map +1 -0
- package/dist/components/frame/popover/popover.js +64 -0
- package/dist/components/frame/popover/popover.js.map +1 -0
- package/dist/components/frame/session-timeout/lt-session-timeout.d.ts +198 -0
- package/dist/components/frame/session-timeout/lt-session-timeout.d.ts.map +1 -0
- package/dist/components/frame/session-timeout/lt-session-timeout.js +573 -0
- package/dist/components/frame/session-timeout/lt-session-timeout.js.map +1 -0
- package/dist/components/frame/session-timeout/session-timeout.d.ts +113 -0
- package/dist/components/frame/session-timeout/session-timeout.d.ts.map +1 -0
- package/dist/components/frame/session-timeout/session-timeout.js +101 -0
- package/dist/components/frame/session-timeout/session-timeout.js.map +1 -0
- package/dist/components/frame/suggestion/lt-suggestion.d.ts +361 -0
- package/dist/components/frame/suggestion/lt-suggestion.d.ts.map +1 -0
- package/dist/components/frame/suggestion/lt-suggestion.js +1152 -0
- package/dist/components/frame/suggestion/lt-suggestion.js.map +1 -0
- package/dist/components/frame/suggestion/suggestion.d.ts +143 -0
- package/dist/components/frame/suggestion/suggestion.d.ts.map +1 -0
- package/dist/components/frame/suggestion/suggestion.js +127 -0
- package/dist/components/frame/suggestion/suggestion.js.map +1 -0
- package/dist/components/frame/tabs/lt-tabs.d.ts +404 -0
- package/dist/components/frame/tabs/lt-tabs.d.ts.map +1 -0
- package/dist/components/frame/tabs/lt-tabs.js +1201 -0
- package/dist/components/frame/tabs/lt-tabs.js.map +1 -0
- package/dist/components/frame/tabs/tabs.d.ts +112 -0
- package/dist/components/frame/tabs/tabs.d.ts.map +1 -0
- package/dist/components/frame/tabs/tabs.js +107 -0
- package/dist/components/frame/tabs/tabs.js.map +1 -0
- package/dist/components/host-element.d.ts +135 -0
- package/dist/components/host-element.d.ts.map +1 -0
- package/dist/components/host-element.js +366 -0
- package/dist/components/host-element.js.map +1 -0
- package/dist/components/standalone/connection-status/connection-status.d.ts +28 -0
- package/dist/components/standalone/connection-status/connection-status.d.ts.map +1 -0
- package/dist/components/standalone/connection-status/connection-status.js +22 -0
- package/dist/components/standalone/connection-status/connection-status.js.map +1 -0
- package/dist/components/standalone/connection-status/lt-connection-status.d.ts +81 -0
- package/dist/components/standalone/connection-status/lt-connection-status.d.ts.map +1 -0
- package/dist/components/standalone/connection-status/lt-connection-status.js +216 -0
- package/dist/components/standalone/connection-status/lt-connection-status.js.map +1 -0
- package/dist/components/standalone/toast/lt-toast.d.ts +109 -0
- package/dist/components/standalone/toast/lt-toast.d.ts.map +1 -0
- package/dist/components/standalone/toast/lt-toast.js +256 -0
- package/dist/components/standalone/toast/lt-toast.js.map +1 -0
- package/dist/components/standalone/toast/toast.d.ts +52 -0
- package/dist/components/standalone/toast/toast.d.ts.map +1 -0
- package/dist/components/standalone/toast/toast.js +42 -0
- package/dist/components/standalone/toast/toast.js.map +1 -0
- package/dist/diagnostics/core.d.ts +137 -0
- package/dist/diagnostics/core.d.ts.map +1 -0
- package/dist/diagnostics/core.js +72 -0
- package/dist/diagnostics/core.js.map +1 -0
- package/dist/diagnostics/default-core.d.ts +10 -0
- package/dist/diagnostics/default-core.d.ts.map +1 -0
- package/dist/diagnostics/default-core.js +72 -0
- package/dist/diagnostics/default-core.js.map +1 -0
- package/dist/diagnostics/index.d.ts +84 -0
- package/dist/diagnostics/index.d.ts.map +1 -0
- package/dist/diagnostics/index.js +106 -0
- package/dist/diagnostics/index.js.map +1 -0
- package/dist/dom.d.ts +55 -0
- package/dist/dom.d.ts.map +1 -0
- package/dist/dom.js +162 -0
- package/dist/dom.js.map +1 -0
- package/dist/index.d.ts +97 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +58 -0
- package/dist/index.js.map +1 -0
- package/dist/jsx/react.d.ts +180 -0
- package/dist/jsx/react.d.ts.map +1 -0
- package/dist/jsx/react.js +2 -0
- package/dist/jsx/react.js.map +1 -0
- package/dist/lotek.css +3617 -0
- package/dist/lt.d.ts +325 -0
- package/dist/lt.d.ts.map +1 -0
- package/dist/lt.js +183 -0
- package/dist/lt.js.map +1 -0
- package/dist/react.d.ts +492 -0
- package/dist/react.d.ts.map +1 -0
- package/dist/react.js +296 -0
- package/dist/react.js.map +1 -0
- package/dist/register.d.ts +17 -0
- package/dist/register.d.ts.map +1 -0
- package/dist/register.js +35 -0
- package/dist/register.js.map +1 -0
- package/dist/tokens/color.d.ts +43 -0
- package/dist/tokens/color.d.ts.map +1 -0
- package/dist/tokens/color.js +123 -0
- package/dist/tokens/color.js.map +1 -0
- package/dist/tokens/contract.d.ts +18 -0
- package/dist/tokens/contract.d.ts.map +1 -0
- package/dist/tokens/contract.js +18 -0
- package/dist/tokens/contract.js.map +1 -0
- package/dist/tokens/matrix-cells.d.ts +30 -0
- package/dist/tokens/matrix-cells.d.ts.map +1 -0
- package/dist/tokens/matrix-cells.js +273 -0
- package/dist/tokens/matrix-cells.js.map +1 -0
- package/dist/tokens/matrix.d.ts +18 -0
- package/dist/tokens/matrix.d.ts.map +1 -0
- package/dist/tokens/matrix.js +21 -0
- package/dist/tokens/matrix.js.map +1 -0
- package/dist/tokens/theme-check.d.ts +42 -0
- package/dist/tokens/theme-check.d.ts.map +1 -0
- package/dist/tokens/theme-check.js +10 -0
- package/dist/tokens/theme-check.js.map +1 -0
- package/dist/tokens/theme.d.ts +94 -0
- package/dist/tokens/theme.d.ts.map +1 -0
- package/dist/tokens/theme.js +14 -0
- package/dist/tokens/theme.js.map +1 -0
- package/dist/tokens/tokens.d.ts +122 -0
- package/dist/tokens/tokens.d.ts.map +1 -0
- package/dist/tokens/tokens.js +158 -0
- package/dist/tokens/tokens.js.map +1 -0
- package/dist/vocabulary/classes.d.ts +3 -0
- package/dist/vocabulary/classes.d.ts.map +1 -0
- package/dist/vocabulary/classes.js +1320 -0
- package/dist/vocabulary/classes.js.map +1 -0
- package/dist/vocabulary/elements.d.ts +3 -0
- package/dist/vocabulary/elements.d.ts.map +1 -0
- package/dist/vocabulary/elements.js +410 -0
- package/dist/vocabulary/elements.js.map +1 -0
- package/dist/vocabulary/types.d.ts +175 -0
- package/dist/vocabulary/types.d.ts.map +1 -0
- package/dist/vocabulary/types.js +11 -0
- package/dist/vocabulary/types.js.map +1 -0
- package/dist/wasi-host.d.ts +24 -0
- package/dist/wasi-host.d.ts.map +1 -0
- package/dist/wasi-host.js +140 -0
- package/dist/wasi-host.js.map +1 -0
- package/live-templates.xml +62 -0
- package/manifest/files.json +373 -0
- package/manifest/manifest.json +4965 -0
- package/manifest/manifest.schema.json +513 -0
- package/package.json +398 -5
- package/src/cli.ts +21 -0
- package/src/components/css/accordion/accordion.css +102 -0
- package/src/components/css/accordion/accordion.ts +50 -0
- package/src/components/css/alert/alert.css +53 -0
- package/src/components/css/alert/alert.ts +48 -0
- package/src/components/css/avatar/avatar.css +96 -0
- package/src/components/css/avatar/avatar.ts +57 -0
- package/src/components/css/badge/badge.css +42 -0
- package/src/components/css/badge/badge.ts +43 -0
- package/src/components/css/breadcrumbs/breadcrumbs.css +62 -0
- package/src/components/css/breadcrumbs/breadcrumbs.ts +30 -0
- package/src/components/css/button/button.css +128 -0
- package/src/components/css/button/button.ts +44 -0
- package/src/components/css/card/card.css +65 -0
- package/src/components/css/card/card.ts +50 -0
- package/src/components/css/checkbox/checkbox.css +114 -0
- package/src/components/css/checkbox/checkbox.ts +50 -0
- package/src/components/css/divider/divider.css +38 -0
- package/src/components/css/divider/divider.ts +42 -0
- package/src/components/css/error-text/error-text.css +21 -0
- package/src/components/css/error-text/error-text.ts +37 -0
- package/src/components/css/fieldset/fieldset.css +72 -0
- package/src/components/css/fieldset/fieldset.ts +87 -0
- package/src/components/css/file-upload/file-upload.css +102 -0
- package/src/components/css/file-upload/file-upload.ts +65 -0
- package/src/components/css/heading/heading.css +33 -0
- package/src/components/css/heading/heading.ts +42 -0
- package/src/components/css/help-text/help-text.css +24 -0
- package/src/components/css/help-text/help-text.ts +42 -0
- package/src/components/css/icon/icon.css +20 -0
- package/src/components/css/icon/icon.ts +44 -0
- package/src/components/css/input/input.css +145 -0
- package/src/components/css/input/input.ts +77 -0
- package/src/components/css/label/label.css +42 -0
- package/src/components/css/label/label.ts +51 -0
- package/src/components/css/link/link.css +38 -0
- package/src/components/css/link/link.ts +38 -0
- package/src/components/css/list/list.css +53 -0
- package/src/components/css/list/list.ts +44 -0
- package/src/components/css/pagination/pagination.css +95 -0
- package/src/components/css/pagination/pagination.ts +33 -0
- package/src/components/css/paragraph/paragraph.css +31 -0
- package/src/components/css/paragraph/paragraph.ts +53 -0
- package/src/components/css/progress/progress.css +161 -0
- package/src/components/css/progress/progress.ts +78 -0
- package/src/components/css/radio/radio.css +94 -0
- package/src/components/css/radio/radio.ts +50 -0
- package/src/components/css/search/search.css +50 -0
- package/src/components/css/search/search.ts +56 -0
- package/src/components/css/select/select.css +321 -0
- package/src/components/css/select/select.ts +63 -0
- package/src/components/css/shared.ts +199 -0
- package/src/components/css/skeleton/skeleton.css +62 -0
- package/src/components/css/skeleton/skeleton.ts +43 -0
- package/src/components/css/skip-link/skip-link.css +41 -0
- package/src/components/css/skip-link/skip-link.ts +22 -0
- package/src/components/css/spinner/spinner.css +48 -0
- package/src/components/css/spinner/spinner.ts +48 -0
- package/src/components/css/sr-only/sr-only.css +16 -0
- package/src/components/css/sr-only/sr-only.ts +21 -0
- package/src/components/css/switch/switch.css +105 -0
- package/src/components/css/switch/switch.ts +50 -0
- package/src/components/css/table/table.css +159 -0
- package/src/components/css/table/table.ts +107 -0
- package/src/components/css/tag/tag.css +58 -0
- package/src/components/css/tag/tag.ts +49 -0
- package/src/components/css/textarea/textarea.css +83 -0
- package/src/components/css/textarea/textarea.ts +40 -0
- package/src/components/css/toggle-group/toggle-group.css +92 -0
- package/src/components/css/toggle-group/toggle-group.ts +37 -0
- package/src/components/css/tooltip/tooltip.css +89 -0
- package/src/components/css/tooltip/tooltip.ts +37 -0
- package/src/components/default-texts.ts +34 -0
- package/src/components/events.ts +68 -0
- package/src/components/frame/dialog/dialog.css +306 -0
- package/src/components/frame/dialog/dialog.ts +166 -0
- package/src/components/frame/dialog/lt-dialog.ts +510 -0
- package/src/components/frame/error-summary/error-summary.css +47 -0
- package/src/components/frame/error-summary/error-summary.ts +56 -0
- package/src/components/frame/error-summary/lt-error-summary.ts +344 -0
- package/src/components/frame/field/field-core.ts +152 -0
- package/src/components/frame/field/field.css +17 -0
- package/src/components/frame/field/lt-field.ts +753 -0
- package/src/components/frame/popover/lt-popover.ts +555 -0
- package/src/components/frame/popover/popover.css +50 -0
- package/src/components/frame/popover/popover.ts +102 -0
- package/src/components/frame/session-timeout/lt-session-timeout.ts +681 -0
- package/src/components/frame/session-timeout/session-timeout.css +50 -0
- package/src/components/frame/session-timeout/session-timeout.ts +156 -0
- package/src/components/frame/suggestion/lt-suggestion.ts +1358 -0
- package/src/components/frame/suggestion/suggestion.css +132 -0
- package/src/components/frame/suggestion/suggestion.ts +172 -0
- package/src/components/frame/tabs/lt-tabs.ts +1319 -0
- package/src/components/frame/tabs/tabs.css +128 -0
- package/src/components/frame/tabs/tabs.ts +188 -0
- package/src/components/host-element.ts +400 -0
- package/src/components/standalone/connection-status/connection-status.css +41 -0
- package/src/components/standalone/connection-status/connection-status.ts +41 -0
- package/src/components/standalone/connection-status/lt-connection-status.ts +242 -0
- package/src/components/standalone/toast/lt-toast.ts +300 -0
- package/src/components/standalone/toast/toast.css +78 -0
- package/src/components/standalone/toast/toast.ts +70 -0
- package/src/diagnostics/core.ts +210 -0
- package/src/diagnostics/default-core.ts +81 -0
- package/src/diagnostics/index.ts +150 -0
- package/src/dom.ts +185 -0
- package/src/index.ts +218 -0
- package/src/jsx/react.ts +212 -0
- package/src/lt.ts +192 -0
- package/src/react.ts +411 -0
- package/src/register.ts +43 -0
- package/src/tailwind/tailwind.css +169 -0
- package/src/tokens/boundary.css +104 -0
- package/src/tokens/color-contract.json +231 -0
- package/src/tokens/color.ts +150 -0
- package/src/tokens/contract.ts +24 -0
- package/src/tokens/matrix-cells.ts +375 -0
- package/src/tokens/matrix.ts +32 -0
- package/src/tokens/theme-check.ts +51 -0
- package/src/tokens/theme.ts +104 -0
- package/src/tokens/tokens.css +569 -0
- package/src/tokens/tokens.ts +223 -0
- package/src/vocabulary/classes.ts +1322 -0
- package/src/vocabulary/elements.ts +412 -0
- package/src/vocabulary/types.ts +178 -0
- package/src/wasi-host.ts +155 -0
- package/web-types.json +800 -0
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
@import "../../css/label/label.css";
|
|
2
|
+
@import "../../css/input/input.css";
|
|
3
|
+
@import "../../css/help-text/help-text.css";
|
|
4
|
+
@import "../../css/error-text/error-text.css";
|
|
5
|
+
@import "../../css/sr-only/sr-only.css";
|
|
6
|
+
|
|
7
|
+
@layer lotek {
|
|
8
|
+
lt-suggestion {
|
|
9
|
+
display: block;
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
.lt-suggestion__list {
|
|
13
|
+
box-sizing: border-box;
|
|
14
|
+
margin: var(--lt-spacing-1) 0 0;
|
|
15
|
+
padding: 0;
|
|
16
|
+
list-style: none;
|
|
17
|
+
max-block-size: var(
|
|
18
|
+
--lt-suggestion-max-height,
|
|
19
|
+
calc(var(--lt-spacing-10) * 4)
|
|
20
|
+
);
|
|
21
|
+
overflow-y: auto;
|
|
22
|
+
background: var(--lt-color-neutral-canvas);
|
|
23
|
+
border: 1px solid var(--lt-color-neutral-border);
|
|
24
|
+
border-radius: var(--lt-suggestion-radius, var(--lt-spacing-1));
|
|
25
|
+
box-shadow: var(--lt-shadow-overlay);
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/* When open, the list sits in the top layer, `popover="manual"`, so a
|
|
29
|
+
parent with `overflow`, such as the body of a dialog, does not clip it.
|
|
30
|
+
The web component computes the position and width from the field.
|
|
31
|
+
Without the popover, as in a list no web component has handled, it sits
|
|
32
|
+
in the flow below the field. `--lt-suggestion-left` is the distance from
|
|
33
|
+
the left edge of the viewport; in a right-to-left document it is flipped
|
|
34
|
+
below, as in `<lt-popover>`. */
|
|
35
|
+
.lt-suggestion__list:popover-open {
|
|
36
|
+
position: fixed;
|
|
37
|
+
inset: auto;
|
|
38
|
+
inset-block-start: var(--lt-suggestion-top, 0);
|
|
39
|
+
inset-inline-start: var(--lt-suggestion-left, 0);
|
|
40
|
+
inline-size: var(--lt-suggestion-width, auto);
|
|
41
|
+
margin: 0;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
.lt-suggestion__list:popover-open:dir(rtl) {
|
|
45
|
+
inset-inline-start: auto;
|
|
46
|
+
inset-inline-end: var(--lt-suggestion-left, 0);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
.lt-suggestion__list[hidden] {
|
|
50
|
+
display: none;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
/* Markup written without JavaScript arrives without `hidden` on the list,
|
|
54
|
+
and the web component only closes it once it is registered. Until then
|
|
55
|
+
it is hidden, so it does not stand open below a field nobody has
|
|
56
|
+
touched. */
|
|
57
|
+
lt-suggestion:not(:defined) .lt-suggestion__list {
|
|
58
|
+
display: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
.lt-suggestion__option {
|
|
62
|
+
padding: var(
|
|
63
|
+
--lt-suggestion-option-padding,
|
|
64
|
+
var(--lt-spacing-2) var(--lt-spacing-3)
|
|
65
|
+
);
|
|
66
|
+
font-family: inherit;
|
|
67
|
+
font-size: var(--lt-font-size-m);
|
|
68
|
+
line-height: var(--lt-line-height-default);
|
|
69
|
+
color: var(--lt-color-neutral-text-strong);
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.lt-suggestion__option:hover {
|
|
74
|
+
background: var(--lt-color-accent-surface);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* The highlight follows aria-selected, the same information the screen
|
|
78
|
+
reader reads. What is shown and what is announced cannot then drift
|
|
79
|
+
apart. */
|
|
80
|
+
.lt-suggestion__option[aria-selected="true"] {
|
|
81
|
+
background: var(--lt-color-accent-fill);
|
|
82
|
+
color: var(--lt-color-accent-content);
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
/* The hidden field for the code. A `type="hidden"` is never shown; the rule
|
|
86
|
+
is there so the class also works when someone gives the field another
|
|
87
|
+
type. */
|
|
88
|
+
.lt-suggestion__value {
|
|
89
|
+
display: none;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
.lt-suggestion__empty {
|
|
93
|
+
padding: var(
|
|
94
|
+
--lt-suggestion-option-padding,
|
|
95
|
+
var(--lt-spacing-2) var(--lt-spacing-3)
|
|
96
|
+
);
|
|
97
|
+
font-size: var(--lt-font-size-m);
|
|
98
|
+
color: var(--lt-color-neutral-text-subtle);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/* The empty message follows the list: when the list is closed, it is not
|
|
102
|
+
shown. The rule is in the stylesheet and not in the web component,
|
|
103
|
+
because the app controls the empty message when it filters itself, and
|
|
104
|
+
does not know whether the list is open. It only knows whether the search
|
|
105
|
+
found anything. The empty message must come after the list, as a
|
|
106
|
+
sibling. */
|
|
107
|
+
.lt-suggestion__list[hidden] ~ .lt-suggestion__empty {
|
|
108
|
+
display: none;
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
/* While the answer to the search is on its way, the list says
|
|
112
|
+
`aria-busy`, and "No matches" would be untrue. */
|
|
113
|
+
.lt-suggestion__list[aria-busy="true"] ~ .lt-suggestion__empty {
|
|
114
|
+
display: none;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
/* Before registration the list is hidden by the rule above, without
|
|
118
|
+
`hidden`. */
|
|
119
|
+
lt-suggestion:not(:defined) .lt-suggestion__empty {
|
|
120
|
+
display: none;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/* High contrast: the highlight is shown only with background and text
|
|
124
|
+
colour, which the mode replaces. The system colours bring the difference
|
|
125
|
+
back. */
|
|
126
|
+
@media (forced-colors: active) {
|
|
127
|
+
.lt-suggestion__option[aria-selected="true"] {
|
|
128
|
+
background-color: Highlight;
|
|
129
|
+
color: HighlightText;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { attributes, checkedKeys, idOrFallback } from "../../css/shared.js"
|
|
2
|
+
import {
|
|
3
|
+
computeFieldAttributes,
|
|
4
|
+
type FieldOptions,
|
|
5
|
+
} from "../field/field-core.js"
|
|
6
|
+
|
|
7
|
+
export const SUGGESTION_CLASS = "lt-suggestion" as const
|
|
8
|
+
export const SUGGESTION_LIST_CLASS = "lt-suggestion__list" as const
|
|
9
|
+
export const SUGGESTION_OPTION_CLASS = "lt-suggestion__option" as const
|
|
10
|
+
export const SUGGESTION_EMPTY_CLASS = "lt-suggestion__empty" as const
|
|
11
|
+
export const SUGGESTION_VALUE_CLASS = "lt-suggestion__value" as const
|
|
12
|
+
export const SUGGESTION_STATUS_CLASS = "lt-sr-only" as const
|
|
13
|
+
|
|
14
|
+
export type SuggestionOptions = Omit<FieldOptions, "id"> & {
|
|
15
|
+
/**
|
|
16
|
+
* Shared id stem. The control becomes `${id}`, the list `${id}-list`, and
|
|
17
|
+
* the options `${id}-option-${key}`.
|
|
18
|
+
*/
|
|
19
|
+
id: string
|
|
20
|
+
/**
|
|
21
|
+
* One key per option the server sends, taken from the data, such as a
|
|
22
|
+
* record id. The key gives the option its id, so an update that sends the
|
|
23
|
+
* list again recognises the options. An empty key, whitespace or two
|
|
24
|
+
* identical keys throw. Default: no options.
|
|
25
|
+
*/
|
|
26
|
+
keys?: string[]
|
|
27
|
+
/** The option highlighted with the arrow keys. Default: none. */
|
|
28
|
+
activeIndex?: number
|
|
29
|
+
/** The list is open. Default: closed. */
|
|
30
|
+
open?: boolean
|
|
31
|
+
/**
|
|
32
|
+
* The answer to the search has not arrived yet. The list gets `aria-busy`,
|
|
33
|
+
* and the empty message stays hidden, so an asynchronous search does not
|
|
34
|
+
* say "No matches" in the gap between the keystroke and the answer.
|
|
35
|
+
*/
|
|
36
|
+
pending?: boolean
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* The attributes for a field with a suggestion list.
|
|
41
|
+
*
|
|
42
|
+
* The server writes both the field and the list. The web component filters,
|
|
43
|
+
* handles the arrow keys and keeps `aria-activedescendant` in sync. It
|
|
44
|
+
* renders nothing: it used to create the whole field itself, and then there
|
|
45
|
+
* was nothing to fill in before the script had run.
|
|
46
|
+
*
|
|
47
|
+
* No preserve list. The attributes that change while the user types are set
|
|
48
|
+
* by the web component, and it sets them back when a patch strips them. If
|
|
49
|
+
* something else has already filtered, set `prefiltered` on
|
|
50
|
+
* `<lt-suggestion>`, and the web component leaves both the options and the
|
|
51
|
+
* empty message alone. If the server should also decide whether the list is
|
|
52
|
+
* expanded and which option is highlighted, set `server-controlled` as well.
|
|
53
|
+
*/
|
|
54
|
+
export const suggestion = ({
|
|
55
|
+
id: givenId,
|
|
56
|
+
keys: givenKeys = [],
|
|
57
|
+
activeIndex = -1,
|
|
58
|
+
open = false,
|
|
59
|
+
pending = false,
|
|
60
|
+
...field
|
|
61
|
+
}: SuggestionOptions) => {
|
|
62
|
+
// The fallback only matters for callers without a type check.
|
|
63
|
+
const id = idOrFallback("lt.suggestion()", givenId)
|
|
64
|
+
const keys = checkedKeys("lt.suggestion()", givenKeys)
|
|
65
|
+
const count = keys.length
|
|
66
|
+
const computed = computeFieldAttributes({ ...field, id })
|
|
67
|
+
const listId = `${id}-list`
|
|
68
|
+
const labelId = `${id}-label`
|
|
69
|
+
const statusId = `${id}-status`
|
|
70
|
+
const optionId = (index: number) => `${id}-option-${keys[index]}`
|
|
71
|
+
// The highlight is written only when the list is open, both halves
|
|
72
|
+
// together. The web component removes both as the list closes, and a
|
|
73
|
+
// closed list with a highlighted option would point
|
|
74
|
+
// `aria-activedescendant` into something hidden.
|
|
75
|
+
const marked =
|
|
76
|
+
open &&
|
|
77
|
+
Number.isInteger(activeIndex) &&
|
|
78
|
+
activeIndex >= 0 &&
|
|
79
|
+
activeIndex < count
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
// The label also names the list, through `aria-labelledby`.
|
|
83
|
+
label: attributes({ ...computed.label, id: labelId }, computed.label),
|
|
84
|
+
control: attributes(
|
|
85
|
+
{
|
|
86
|
+
...computed.control,
|
|
87
|
+
class: "lt-input" as const,
|
|
88
|
+
type: "text" as const,
|
|
89
|
+
role: "combobox" as const,
|
|
90
|
+
autocomplete: "off" as const,
|
|
91
|
+
"aria-expanded": (open ? "true" : "false") as "true" | "false",
|
|
92
|
+
"aria-controls": listId,
|
|
93
|
+
"aria-describedby": [computed.control["aria-describedby"], statusId]
|
|
94
|
+
.filter(Boolean)
|
|
95
|
+
.join(" "),
|
|
96
|
+
"aria-autocomplete": "list" as const,
|
|
97
|
+
"aria-activedescendant": marked ? optionId(activeIndex) : undefined,
|
|
98
|
+
},
|
|
99
|
+
computed.control,
|
|
100
|
+
),
|
|
101
|
+
/**
|
|
102
|
+
* The list. It sits in the top layer, `popover="manual"`, so a parent
|
|
103
|
+
* with `overflow` does not clip it. `hidden` still says whether it is
|
|
104
|
+
* open; the web component opens and closes the popover from that.
|
|
105
|
+
*/
|
|
106
|
+
list: attributes({
|
|
107
|
+
class: SUGGESTION_LIST_CLASS,
|
|
108
|
+
id: listId,
|
|
109
|
+
role: "listbox" as const,
|
|
110
|
+
"aria-labelledby": labelId,
|
|
111
|
+
popover: "manual" as const,
|
|
112
|
+
hidden: open ? undefined : (true as const),
|
|
113
|
+
"aria-busy": pending ? ("true" as const) : undefined,
|
|
114
|
+
}),
|
|
115
|
+
options: keys.map((_, index) =>
|
|
116
|
+
attributes({
|
|
117
|
+
class: SUGGESTION_OPTION_CLASS,
|
|
118
|
+
id: optionId(index),
|
|
119
|
+
role: "option" as const,
|
|
120
|
+
"aria-selected": (marked && index === activeIndex ? "true" : "false") as
|
|
121
|
+
| "true"
|
|
122
|
+
| "false",
|
|
123
|
+
}),
|
|
124
|
+
),
|
|
125
|
+
/**
|
|
126
|
+
* The text shown when nothing matches.
|
|
127
|
+
*
|
|
128
|
+
* It follows the list: visible only when the list is open and empty. The
|
|
129
|
+
* stylesheet handles a closed list, with a rule that hides the empty
|
|
130
|
+
* message after a list with `hidden`. The builder function therefore
|
|
131
|
+
* only says whether there are matches, and whether the answer has
|
|
132
|
+
* arrived (`pending`). It used to read `open`, and with `prefiltered` the
|
|
133
|
+
* app controls the empty message without knowing whether the list is
|
|
134
|
+
* open: that state belongs to the web component, so the message could
|
|
135
|
+
* never be shown.
|
|
136
|
+
*/
|
|
137
|
+
empty: attributes({
|
|
138
|
+
class: SUGGESTION_EMPTY_CLASS,
|
|
139
|
+
hidden: count === 0 && !pending ? undefined : (true as const),
|
|
140
|
+
}),
|
|
141
|
+
/**
|
|
142
|
+
* The region that announces the number of matches to screen readers.
|
|
143
|
+
*
|
|
144
|
+
* The web component writes the text while the user types, so it is not
|
|
145
|
+
* in the server's version. If an update empties the element, the web
|
|
146
|
+
* component writes the text again. The element must still be in the
|
|
147
|
+
* markup the server sends, or there is nothing to announce into before
|
|
148
|
+
* the script has run. `role="status"` implies `aria-live="polite"`.
|
|
149
|
+
*/
|
|
150
|
+
status: attributes({
|
|
151
|
+
class: SUGGESTION_STATUS_CLASS,
|
|
152
|
+
id: statusId,
|
|
153
|
+
role: "status" as const,
|
|
154
|
+
}),
|
|
155
|
+
/**
|
|
156
|
+
* The hidden field that receives the code of the option the user chose.
|
|
157
|
+
*
|
|
158
|
+
* The field shows the text, and without JavaScript the text is what is
|
|
159
|
+
* submitted. With JavaScript the web component writes `data-value` from
|
|
160
|
+
* the option here, or the text when the option has no `data-value`, and
|
|
161
|
+
* empties it when the user changes the text. You write `name` yourself;
|
|
162
|
+
* it belongs to your form.
|
|
163
|
+
*/
|
|
164
|
+
value: attributes({
|
|
165
|
+
class: SUGGESTION_VALUE_CLASS,
|
|
166
|
+
type: "hidden" as const,
|
|
167
|
+
}),
|
|
168
|
+
help: computed.help,
|
|
169
|
+
error: computed.error,
|
|
170
|
+
state: computed.state,
|
|
171
|
+
}
|
|
172
|
+
}
|