@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,113 @@
|
|
|
1
|
+
export declare const SESSION_TIMEOUT_CLASS: "lt-session-timeout";
|
|
2
|
+
export declare const SESSION_TIMEOUT_DIALOG_CLASS: "lt-session-timeout__dialog";
|
|
3
|
+
export declare const SESSION_TIMEOUT_TITLE_CLASS: "lt-session-timeout__title";
|
|
4
|
+
export declare const SESSION_TIMEOUT_TEXT_CLASS: "lt-session-timeout__text";
|
|
5
|
+
export declare const SESSION_TIMEOUT_COUNT_CLASS: "lt-session-timeout__count";
|
|
6
|
+
export declare const SESSION_TIMEOUT_ACTIONS_CLASS: "lt-session-timeout__actions";
|
|
7
|
+
/** `value` on the button that extends the session. */
|
|
8
|
+
export declare const SESSION_EXTEND: "extend";
|
|
9
|
+
/** `value` on the button that logs out. */
|
|
10
|
+
export declare const SESSION_LOGOUT: "logout";
|
|
11
|
+
export type SessionTimeoutOptions = {
|
|
12
|
+
/** Id of the heading. The dialog takes its name from it with `aria-labelledby`. */
|
|
13
|
+
titleId: string;
|
|
14
|
+
/** Seconds without activity before the warning appears. Default: 25 minutes. */
|
|
15
|
+
warnAt?: number;
|
|
16
|
+
/** Seconds without activity before the session expires. Default: 30 minutes. */
|
|
17
|
+
expiresAt?: number;
|
|
18
|
+
/** Seconds between each `session-activity` while the user is active. Default: 60. */
|
|
19
|
+
activityInterval?: number;
|
|
20
|
+
};
|
|
21
|
+
export type SessionTimeoutAttributes = {
|
|
22
|
+
host: {
|
|
23
|
+
class: typeof SESSION_TIMEOUT_CLASS;
|
|
24
|
+
"warn-at"?: string;
|
|
25
|
+
"expires-at"?: string;
|
|
26
|
+
"activity-interval"?: string;
|
|
27
|
+
"data-ignore-morph": "";
|
|
28
|
+
};
|
|
29
|
+
dialog: {
|
|
30
|
+
class: typeof SESSION_TIMEOUT_DIALOG_CLASS;
|
|
31
|
+
role: "alertdialog";
|
|
32
|
+
"aria-labelledby": string;
|
|
33
|
+
};
|
|
34
|
+
title: {
|
|
35
|
+
class: typeof SESSION_TIMEOUT_TITLE_CLASS;
|
|
36
|
+
id: string;
|
|
37
|
+
};
|
|
38
|
+
/** The paragraph holding the number. The announcement is this paragraph, with the number spoken. */
|
|
39
|
+
text: {
|
|
40
|
+
class: typeof SESSION_TIMEOUT_TEXT_CLASS;
|
|
41
|
+
};
|
|
42
|
+
/** The number. Empty in the markup, and the component fills it in. */
|
|
43
|
+
count: {
|
|
44
|
+
class: typeof SESSION_TIMEOUT_COUNT_CLASS;
|
|
45
|
+
"aria-hidden": "true";
|
|
46
|
+
};
|
|
47
|
+
/** The screen reader announcement. Empty in the markup. */
|
|
48
|
+
live: {
|
|
49
|
+
class: "lt-sr-only";
|
|
50
|
+
role: "status";
|
|
51
|
+
};
|
|
52
|
+
/** The form around the buttons. `method="dialog"` closes the dialog without a script. */
|
|
53
|
+
actions: {
|
|
54
|
+
class: typeof SESSION_TIMEOUT_ACTIONS_CLASS;
|
|
55
|
+
method: "dialog";
|
|
56
|
+
};
|
|
57
|
+
extend: {
|
|
58
|
+
class: "lt-button";
|
|
59
|
+
value: typeof SESSION_EXTEND;
|
|
60
|
+
};
|
|
61
|
+
logout: {
|
|
62
|
+
class: "lt-button";
|
|
63
|
+
"data-variant": "secondary";
|
|
64
|
+
value: typeof SESSION_LOGOUT;
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* The attributes for the warning that a signed-in session is about to expire.
|
|
69
|
+
*
|
|
70
|
+
* The renderer writes the dialog and all of the text, in its own language and
|
|
71
|
+
* with its own translation tool. The component only keeps time: it opens and
|
|
72
|
+
* closes the dialog, fills in the number and announces the countdown.
|
|
73
|
+
*
|
|
74
|
+
* The buttons are plain buttons in a `<form method="dialog">`. The browser
|
|
75
|
+
* closes the dialog and sets `returnValue` to the button's `value`, and the
|
|
76
|
+
* component reads it. `data-ignore-morph` asks Datastar's morph to leave the
|
|
77
|
+
* warning alone. Without it the morph takes `open` and the number while the
|
|
78
|
+
* dialog is in the top layer. The component puts `open` back, and the number
|
|
79
|
+
* comes back on the next tick. With the attribute the number stays the whole
|
|
80
|
+
* time.
|
|
81
|
+
*
|
|
82
|
+
* ```ts
|
|
83
|
+
* const session = lt.sessionTimeout({ titleId: "session-title" })
|
|
84
|
+
* ```
|
|
85
|
+
* ```html
|
|
86
|
+
* <lt-session-timeout {...session.host}>
|
|
87
|
+
* <dialog {...session.dialog}>
|
|
88
|
+
* <h2 {...session.title}>You will soon be signed out</h2>
|
|
89
|
+
* <p {...session.text}>
|
|
90
|
+
* We will sign you out in <span {...session.count}></span>.
|
|
91
|
+
* </p>
|
|
92
|
+
* <span {...session.live}></span>
|
|
93
|
+
* <form {...session.actions}>
|
|
94
|
+
* <button {...session.extend}>Stay signed in</button>
|
|
95
|
+
* <button {...session.logout}>Sign out now</button>
|
|
96
|
+
* </form>
|
|
97
|
+
* </dialog>
|
|
98
|
+
* </lt-session-timeout>
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export declare const sessionTimeout: (({ titleId: givenId, warnAt, expiresAt, activityInterval, }: SessionTimeoutOptions) => SessionTimeoutAttributes) & {
|
|
102
|
+
/** The class on the `<dialog>` itself. */
|
|
103
|
+
dialog: "lt-session-timeout__dialog";
|
|
104
|
+
/** The class on the heading. */
|
|
105
|
+
title: "lt-session-timeout__title";
|
|
106
|
+
/** The class on the paragraph holding the number. */
|
|
107
|
+
text: "lt-session-timeout__text";
|
|
108
|
+
/** The class on the number the component fills in. */
|
|
109
|
+
count: "lt-session-timeout__count";
|
|
110
|
+
/** The class on the form with the buttons. */
|
|
111
|
+
actions: "lt-session-timeout__actions";
|
|
112
|
+
};
|
|
113
|
+
//# sourceMappingURL=session-timeout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-timeout.d.ts","sourceRoot":"","sources":["../../../../src/components/frame/session-timeout/session-timeout.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,qBAAqB,EAAG,oBAA6B,CAAA;AAClE,eAAO,MAAM,4BAA4B,EACvC,4BAAqC,CAAA;AACvC,eAAO,MAAM,2BAA2B,EAAG,2BAAoC,CAAA;AAC/E,eAAO,MAAM,0BAA0B,EAAG,0BAAmC,CAAA;AAC7E,eAAO,MAAM,2BAA2B,EAAG,2BAAoC,CAAA;AAC/E,eAAO,MAAM,6BAA6B,EACxC,6BAAsC,CAAA;AAExC,sDAAsD;AACtD,eAAO,MAAM,cAAc,EAAG,QAAiB,CAAA;AAC/C,2CAA2C;AAC3C,eAAO,MAAM,cAAc,EAAG,QAAiB,CAAA;AAE/C,MAAM,MAAM,qBAAqB,GAAG;IAClC,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,qFAAqF;IACrF,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B,CAAA;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,IAAI,EAAE;QACJ,KAAK,EAAE,OAAO,qBAAqB,CAAA;QACnC,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB,YAAY,CAAC,EAAE,MAAM,CAAA;QACrB,mBAAmB,CAAC,EAAE,MAAM,CAAA;QAC5B,mBAAmB,EAAE,EAAE,CAAA;KACxB,CAAA;IACD,MAAM,EAAE;QACN,KAAK,EAAE,OAAO,4BAA4B,CAAA;QAC1C,IAAI,EAAE,aAAa,CAAA;QACnB,iBAAiB,EAAE,MAAM,CAAA;KAC1B,CAAA;IACD,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,2BAA2B,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAA;IAChE,oGAAoG;IACpG,IAAI,EAAE;QAAE,KAAK,EAAE,OAAO,0BAA0B,CAAA;KAAE,CAAA;IAClD,sEAAsE;IACtE,KAAK,EAAE;QAAE,KAAK,EAAE,OAAO,2BAA2B,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAA;IAC3E,2DAA2D;IAC3D,IAAI,EAAE;QAAE,KAAK,EAAE,YAAY,CAAC;QAAC,IAAI,EAAE,QAAQ,CAAA;KAAE,CAAA;IAC7C,yFAAyF;IACzF,OAAO,EAAE;QAAE,KAAK,EAAE,OAAO,6BAA6B,CAAC;QAAC,MAAM,EAAE,QAAQ,CAAA;KAAE,CAAA;IAC1E,MAAM,EAAE;QAAE,KAAK,EAAE,WAAW,CAAC;QAAC,KAAK,EAAE,OAAO,cAAc,CAAA;KAAE,CAAA;IAC5D,MAAM,EAAE;QACN,KAAK,EAAE,WAAW,CAAA;QAClB,cAAc,EAAE,WAAW,CAAA;QAC3B,KAAK,EAAE,OAAO,cAAc,CAAA;KAC7B,CAAA;CACF,CAAA;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,eAAO,MAAM,cAAc,gEAMtB,qBAAqB,KAAG,wBAAwB;IA+CjD,0CAA0C;;IAE1C,gCAAgC;;IAEhC,qDAAqD;;IAErD,sDAAsD;;IAEtD,8CAA8C;;CAGjD,CAAA"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { attributes, idOrFallback } from "../../css/shared.js";
|
|
2
|
+
export const SESSION_TIMEOUT_CLASS = "lt-session-timeout";
|
|
3
|
+
export const SESSION_TIMEOUT_DIALOG_CLASS = "lt-session-timeout__dialog";
|
|
4
|
+
export const SESSION_TIMEOUT_TITLE_CLASS = "lt-session-timeout__title";
|
|
5
|
+
export const SESSION_TIMEOUT_TEXT_CLASS = "lt-session-timeout__text";
|
|
6
|
+
export const SESSION_TIMEOUT_COUNT_CLASS = "lt-session-timeout__count";
|
|
7
|
+
export const SESSION_TIMEOUT_ACTIONS_CLASS = "lt-session-timeout__actions";
|
|
8
|
+
/** `value` on the button that extends the session. */
|
|
9
|
+
export const SESSION_EXTEND = "extend";
|
|
10
|
+
/** `value` on the button that logs out. */
|
|
11
|
+
export const SESSION_LOGOUT = "logout";
|
|
12
|
+
/**
|
|
13
|
+
* The attributes for the warning that a signed-in session is about to expire.
|
|
14
|
+
*
|
|
15
|
+
* The renderer writes the dialog and all of the text, in its own language and
|
|
16
|
+
* with its own translation tool. The component only keeps time: it opens and
|
|
17
|
+
* closes the dialog, fills in the number and announces the countdown.
|
|
18
|
+
*
|
|
19
|
+
* The buttons are plain buttons in a `<form method="dialog">`. The browser
|
|
20
|
+
* closes the dialog and sets `returnValue` to the button's `value`, and the
|
|
21
|
+
* component reads it. `data-ignore-morph` asks Datastar's morph to leave the
|
|
22
|
+
* warning alone. Without it the morph takes `open` and the number while the
|
|
23
|
+
* dialog is in the top layer. The component puts `open` back, and the number
|
|
24
|
+
* comes back on the next tick. With the attribute the number stays the whole
|
|
25
|
+
* time.
|
|
26
|
+
*
|
|
27
|
+
* ```ts
|
|
28
|
+
* const session = lt.sessionTimeout({ titleId: "session-title" })
|
|
29
|
+
* ```
|
|
30
|
+
* ```html
|
|
31
|
+
* <lt-session-timeout {...session.host}>
|
|
32
|
+
* <dialog {...session.dialog}>
|
|
33
|
+
* <h2 {...session.title}>You will soon be signed out</h2>
|
|
34
|
+
* <p {...session.text}>
|
|
35
|
+
* We will sign you out in <span {...session.count}></span>.
|
|
36
|
+
* </p>
|
|
37
|
+
* <span {...session.live}></span>
|
|
38
|
+
* <form {...session.actions}>
|
|
39
|
+
* <button {...session.extend}>Stay signed in</button>
|
|
40
|
+
* <button {...session.logout}>Sign out now</button>
|
|
41
|
+
* </form>
|
|
42
|
+
* </dialog>
|
|
43
|
+
* </lt-session-timeout>
|
|
44
|
+
* ```
|
|
45
|
+
*/
|
|
46
|
+
export const sessionTimeout = Object.assign(({ titleId: givenId, warnAt = 25 * 60, expiresAt = 30 * 60, activityInterval = 60, }) => {
|
|
47
|
+
// The fallback only matters to someone without a type check.
|
|
48
|
+
const titleId = idOrFallback("lt.sessionTimeout()", givenId, "titleId");
|
|
49
|
+
return {
|
|
50
|
+
host: attributes({
|
|
51
|
+
class: SESSION_TIMEOUT_CLASS,
|
|
52
|
+
"warn-at": warnAt === 25 * 60 ? undefined : String(warnAt),
|
|
53
|
+
"expires-at": expiresAt === 30 * 60 ? undefined : String(expiresAt),
|
|
54
|
+
"activity-interval": activityInterval === 60 ? undefined : String(activityInterval),
|
|
55
|
+
"data-ignore-morph": "",
|
|
56
|
+
}),
|
|
57
|
+
dialog: attributes({
|
|
58
|
+
class: SESSION_TIMEOUT_DIALOG_CLASS,
|
|
59
|
+
// alertdialog and not dialog: the warning is an interruption the user did
|
|
60
|
+
// not ask for, and then the screen reader should read all of the content
|
|
61
|
+
// when it opens.
|
|
62
|
+
role: "alertdialog",
|
|
63
|
+
"aria-labelledby": titleId,
|
|
64
|
+
}),
|
|
65
|
+
title: attributes({ class: SESSION_TIMEOUT_TITLE_CLASS, id: titleId }),
|
|
66
|
+
text: attributes({ class: SESSION_TIMEOUT_TEXT_CLASS }),
|
|
67
|
+
count: attributes({
|
|
68
|
+
class: SESSION_TIMEOUT_COUNT_CLASS,
|
|
69
|
+
"aria-hidden": "true",
|
|
70
|
+
}),
|
|
71
|
+
live: attributes({
|
|
72
|
+
class: "lt-sr-only",
|
|
73
|
+
role: "status",
|
|
74
|
+
}),
|
|
75
|
+
actions: attributes({
|
|
76
|
+
class: SESSION_TIMEOUT_ACTIONS_CLASS,
|
|
77
|
+
method: "dialog",
|
|
78
|
+
}),
|
|
79
|
+
extend: attributes({
|
|
80
|
+
class: "lt-button",
|
|
81
|
+
value: SESSION_EXTEND,
|
|
82
|
+
}),
|
|
83
|
+
logout: attributes({
|
|
84
|
+
class: "lt-button",
|
|
85
|
+
"data-variant": "secondary",
|
|
86
|
+
value: SESSION_LOGOUT,
|
|
87
|
+
}),
|
|
88
|
+
};
|
|
89
|
+
}, {
|
|
90
|
+
/** The class on the `<dialog>` itself. */
|
|
91
|
+
dialog: SESSION_TIMEOUT_DIALOG_CLASS,
|
|
92
|
+
/** The class on the heading. */
|
|
93
|
+
title: SESSION_TIMEOUT_TITLE_CLASS,
|
|
94
|
+
/** The class on the paragraph holding the number. */
|
|
95
|
+
text: SESSION_TIMEOUT_TEXT_CLASS,
|
|
96
|
+
/** The class on the number the component fills in. */
|
|
97
|
+
count: SESSION_TIMEOUT_COUNT_CLASS,
|
|
98
|
+
/** The class on the form with the buttons. */
|
|
99
|
+
actions: SESSION_TIMEOUT_ACTIONS_CLASS,
|
|
100
|
+
});
|
|
101
|
+
//# sourceMappingURL=session-timeout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-timeout.js","sourceRoot":"","sources":["../../../../src/components/frame/session-timeout/session-timeout.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
import { HostElement } from "../../host-element.js";
|
|
2
|
+
export declare const LT_SUGGESTION_TAG: "lt-suggestion";
|
|
3
|
+
/**
|
|
4
|
+
* The parts the suggestion field finds, as selectors relative to the element.
|
|
5
|
+
* The web component finds its parts with these, and the manifest describes
|
|
6
|
+
* them for whoever writes the markup by hand, so the two cannot disagree.
|
|
7
|
+
*/
|
|
8
|
+
export declare const LT_SUGGESTION_PARTS: {
|
|
9
|
+
/** The field: the role when present, otherwise the first input. */
|
|
10
|
+
readonly control: "[role='combobox'], input:not([type='hidden'])";
|
|
11
|
+
/** The list: the role when present, otherwise the class. */
|
|
12
|
+
readonly list: "[role='listbox'], .lt-suggestion__list";
|
|
13
|
+
/** An option: the role when present, otherwise an `<li>` without a role in the list. */
|
|
14
|
+
readonly option: "[role='option'], .lt-suggestion__list > li:not([role])";
|
|
15
|
+
readonly empty: ".lt-suggestion__empty";
|
|
16
|
+
readonly status: "[role='status']";
|
|
17
|
+
/** The hidden field that receives the code of the option the user chose. */
|
|
18
|
+
readonly value: "input.lt-suggestion__value";
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* The keyboard and the filtering in a field with a suggestion list.
|
|
22
|
+
*
|
|
23
|
+
* The server writes the field and the list. When the markup is made with
|
|
24
|
+
* JavaScript, `lt.suggestion()` writes the roles, the ids and the wiring.
|
|
25
|
+
* When it comes from a template without JavaScript, the template writes
|
|
26
|
+
* `for` on the label and `id` on the field, or wraps the field in the label,
|
|
27
|
+
* which HTML requires for the field to have a name without JavaScript. The
|
|
28
|
+
* rest is enough: a `.lt-suggestion__list` with `<li>` and a
|
|
29
|
+
* `[role="status"]`. The web component sets the roles, gives the list and the
|
|
30
|
+
* options ids, connects the list to the field, and closes the list until the
|
|
31
|
+
* user touches the field. Only what is missing, so what the server wrote
|
|
32
|
+
* stays.
|
|
33
|
+
*
|
|
34
|
+
* The web component never writes an id on the field. Datastar and idiomorph
|
|
35
|
+
* recognise a node by its id, and a field with an id the server did not send
|
|
36
|
+
* is replaced on the next update, along with focus and what the user has
|
|
37
|
+
* typed.
|
|
38
|
+
*
|
|
39
|
+
* The field always shows the option's text. If the server has written a
|
|
40
|
+
* hidden `.lt-suggestion__value`, it receives the code from `data-value`, or
|
|
41
|
+
* the text when the option has none. Without JavaScript the text is
|
|
42
|
+
* submitted, and the server looks it up. The web component renders nothing.
|
|
43
|
+
* It used to create the whole field itself, and then there was neither a
|
|
44
|
+
* label nor an input before the script had run, and nothing was included in
|
|
45
|
+
* the submission.
|
|
46
|
+
*
|
|
47
|
+
* What the web component does is what the browser does not: it filters the
|
|
48
|
+
* options while the user types, moves the highlight with the arrow keys, and
|
|
49
|
+
* keeps `aria-activedescendant` in sync so the screen reader announces the
|
|
50
|
+
* option without focus leaving the field.
|
|
51
|
+
*
|
|
52
|
+
* If something else has already filtered, a server or a React component that
|
|
53
|
+
* renders only the matches, `prefiltered` says so, and the web component
|
|
54
|
+
* leaves the options alone.
|
|
55
|
+
*
|
|
56
|
+
* ```html
|
|
57
|
+
* <lt-suggestion>
|
|
58
|
+
* <label class="lt-label" for="city">City</label>
|
|
59
|
+
* <input class="lt-input" id="city" role="combobox" aria-controls="city-list"
|
|
60
|
+
* aria-expanded="false" aria-autocomplete="list" autocomplete="off"
|
|
61
|
+
* aria-describedby="city-status">
|
|
62
|
+
* <ul class="lt-suggestion__list" id="city-list" role="listbox" hidden>
|
|
63
|
+
* <li class="lt-suggestion__option" id="city-option-0" role="option">Bergen</li>
|
|
64
|
+
* </ul>
|
|
65
|
+
* <p class="lt-suggestion__empty">No matches</p>
|
|
66
|
+
* <span class="lt-sr-only" id="city-status" role="status"></span>
|
|
67
|
+
* </lt-suggestion>
|
|
68
|
+
* ```
|
|
69
|
+
*/
|
|
70
|
+
export declare class LtSuggestion extends HostElement {
|
|
71
|
+
static observedAttributes: readonly ["prefiltered", "server-controlled", "count-none", "count-zero", "count-one", "count-two", "count-few", "count-many", "count-other"];
|
|
72
|
+
private observer?;
|
|
73
|
+
private control?;
|
|
74
|
+
private list?;
|
|
75
|
+
private empty?;
|
|
76
|
+
/** The options that already have their listener. */
|
|
77
|
+
private readonly bound;
|
|
78
|
+
/** The ids the web component created, per node, so a patch gets the same ones back. */
|
|
79
|
+
private readonly ids;
|
|
80
|
+
/** The roles the web component set. See `derivedParts`. */
|
|
81
|
+
private readonly roledByMe;
|
|
82
|
+
/** True while the web component dispatches events, so it does not answer itself. */
|
|
83
|
+
private choosing;
|
|
84
|
+
/**
|
|
85
|
+
* The text and code of the choice in the field, when the value field is in
|
|
86
|
+
* use.
|
|
87
|
+
*
|
|
88
|
+
* The pair is what the code in the value field applies to. If the user
|
|
89
|
+
* changes the text, the code no longer applies, and the value field is
|
|
90
|
+
* emptied; otherwise the form would submit the code for Bergen with the
|
|
91
|
+
* text "Bodø" in the field. If the text is still there after an update, the
|
|
92
|
+
* code is set back: the value field's `value` is an attribute, and a morph
|
|
93
|
+
* writes the server's over what the web component set.
|
|
94
|
+
*/
|
|
95
|
+
private chosen?;
|
|
96
|
+
/**
|
|
97
|
+
* What the server sent as text and code, the last time something other
|
|
98
|
+
* than the web component wrote the code. When the form is reset, the text
|
|
99
|
+
* goes back to the server's, and the code must follow: a hidden field has
|
|
100
|
+
* no default value of its own to go back to, since the web component
|
|
101
|
+
* writes the code as an attribute.
|
|
102
|
+
*/
|
|
103
|
+
private serverChoice?;
|
|
104
|
+
/** The code the web component wrote last. If something else is there, the server wrote it. */
|
|
105
|
+
private writtenCode?;
|
|
106
|
+
/** The form listened to for `reset`. Follows the field, which a patch can move. */
|
|
107
|
+
private boundForm?;
|
|
108
|
+
/** The `for` the web component wrote on the label. */
|
|
109
|
+
private readonly forByMe;
|
|
110
|
+
/**
|
|
111
|
+
* The name the web component gave the list, per list: `aria-labelledby`
|
|
112
|
+
* pointing to the label, or `aria-label` with its text. If something else
|
|
113
|
+
* is there, the server wrote it, and it stays.
|
|
114
|
+
*/
|
|
115
|
+
private readonly listNameByMe;
|
|
116
|
+
/**
|
|
117
|
+
* Labels where the server wrote a `for` pointing to another id. Reported
|
|
118
|
+
* once; the memory is not reset, since the rewritten `for` cannot be told
|
|
119
|
+
* apart from a server that corrected itself.
|
|
120
|
+
*/
|
|
121
|
+
private readonly wrongFor;
|
|
122
|
+
/**
|
|
123
|
+
* Whether the list is open, and which option is highlighted.
|
|
124
|
+
*
|
|
125
|
+
* Both come from the user: she typed something, and she moves with the
|
|
126
|
+
* arrow keys. None of it is in the HTML the server sent, so a morph strips
|
|
127
|
+
* it. The template used to list `aria-expanded`, `aria-activedescendant`
|
|
128
|
+
* and `hidden` in `data-preserve-attr`. Now the web component sets it back,
|
|
129
|
+
* as long as the morph keeps the field. It only does so when the id
|
|
130
|
+
* matches, see `warnAboutReplacedControl`.
|
|
131
|
+
*/
|
|
132
|
+
private wantOpen?;
|
|
133
|
+
/**
|
|
134
|
+
* The highlighted option, remembered by both id and text.
|
|
135
|
+
*
|
|
136
|
+
* The ids from `lt.suggestion()` are positional, so a new list from the
|
|
137
|
+
* server reuses them. With the id alone the web component put the
|
|
138
|
+
* highlight back on option number two in an entirely different list, and
|
|
139
|
+
* the screen reader announced a place the user never navigated to. The
|
|
140
|
+
* text is the identity; the id is only where `aria-activedescendant`
|
|
141
|
+
* points.
|
|
142
|
+
*/
|
|
143
|
+
private active?;
|
|
144
|
+
/**
|
|
145
|
+
* The count last announced, when something else filters.
|
|
146
|
+
*
|
|
147
|
+
* Only changes are announced, and the first count is the starting point,
|
|
148
|
+
* not news. See `announceFiltered`.
|
|
149
|
+
*/
|
|
150
|
+
private announcedCount?;
|
|
151
|
+
/**
|
|
152
|
+
* The text last written in the status element.
|
|
153
|
+
*
|
|
154
|
+
* The text is not in the server's version, so an update that sends the
|
|
155
|
+
* region again empties the element. `repair()` writes it back.
|
|
156
|
+
*/
|
|
157
|
+
private announcedText?;
|
|
158
|
+
connectedCallback(): void;
|
|
159
|
+
attributeChangedCallback(name: string): void;
|
|
160
|
+
private sync;
|
|
161
|
+
/**
|
|
162
|
+
* Opens and closes the popover the list sits in, following `hidden`.
|
|
163
|
+
*
|
|
164
|
+
* `hidden` still says whether the list is open, from the server as from
|
|
165
|
+
* the web component, and the popover follows. The list sits in the top
|
|
166
|
+
* layer, so a parent with `overflow`, such as the body of a dialog, does
|
|
167
|
+
* not clip it.
|
|
168
|
+
*/
|
|
169
|
+
private mirrorPopover;
|
|
170
|
+
/**
|
|
171
|
+
* Places the list right below the field, as wide as it. If there is no
|
|
172
|
+
* room below, it goes above, and it is squeezed into the viewport either
|
|
173
|
+
* way, like the panel in `<lt-popover>`. The position is physical,
|
|
174
|
+
* computed from the field's box.
|
|
175
|
+
*/
|
|
176
|
+
private reposition;
|
|
177
|
+
/**
|
|
178
|
+
* Names the list from the label, when the markup arrived without a name.
|
|
179
|
+
*
|
|
180
|
+
* With `aria-labelledby` when the label is next to the field; the web
|
|
181
|
+
* component gives it an id when it has none, since it holds nothing the
|
|
182
|
+
* user can lose. If the label wraps the field, it gets no id: a morph would
|
|
183
|
+
* then replace the label, and the field with it. In that case the list
|
|
184
|
+
* gets the label's text as `aria-label`, without the field's value.
|
|
185
|
+
*/
|
|
186
|
+
private nameList;
|
|
187
|
+
/** The id an element should have: the one it has, otherwise the one the web component created last. */
|
|
188
|
+
private rememberedId;
|
|
189
|
+
/**
|
|
190
|
+
* Fills in the wiring where the markup arrived without it. Only what is
|
|
191
|
+
* missing.
|
|
192
|
+
*
|
|
193
|
+
* The list is closed when the markup says nothing about it, that is when
|
|
194
|
+
* neither `aria-expanded` on the field nor `hidden` on the list is there.
|
|
195
|
+
* If the markup states one of them, that is the server's word on both, as
|
|
196
|
+
* with `lt.suggestion({ open: true })`.
|
|
197
|
+
*/
|
|
198
|
+
private wire;
|
|
199
|
+
/**
|
|
200
|
+
* Sets the user's state back after a patch.
|
|
201
|
+
*
|
|
202
|
+
* The filtering is recomputed from what is in the field, so it needs no
|
|
203
|
+
* memory. What the list shows and what is highlighted do.
|
|
204
|
+
*/
|
|
205
|
+
private repair;
|
|
206
|
+
disconnectedCallback(): void;
|
|
207
|
+
/**
|
|
208
|
+
* Something else has already filtered, so the web component leaves the
|
|
209
|
+
* options alone.
|
|
210
|
+
*
|
|
211
|
+
* The name used to be `server-filtered`, and that was misleading: it is not
|
|
212
|
+
* about servers. A React app that renders only the matches has filtered all
|
|
213
|
+
* the same, without any server involved.
|
|
214
|
+
*
|
|
215
|
+
* The web component hides an option when its text does not contain what is
|
|
216
|
+
* in the field. If you filter on something else, without diacritics, on a
|
|
217
|
+
* code that is not shown, or fuzzily, the two disagree, and then your filter
|
|
218
|
+
* should win. The attribute turns off both the hiding and the empty
|
|
219
|
+
* message, that is everything about what the list shows. The announcement
|
|
220
|
+
* of the number of matches remains, since it is not markup.
|
|
221
|
+
*/
|
|
222
|
+
get prefiltered(): boolean;
|
|
223
|
+
set prefiltered(on: boolean);
|
|
224
|
+
private get listElement();
|
|
225
|
+
private get emptyElement();
|
|
226
|
+
private get valueField();
|
|
227
|
+
/** The field accepts no input: `readonly` or `disabled`. */
|
|
228
|
+
private get locked();
|
|
229
|
+
/**
|
|
230
|
+
* The options, recognised by the role and not by the class.
|
|
231
|
+
*
|
|
232
|
+
* The role must be there anyway, for the screen reader. A template that
|
|
233
|
+
* wrote `<li role="option">` with its own styling got neither filtering nor
|
|
234
|
+
* arrow keys when the web component looked for the class, and nothing said
|
|
235
|
+
* so.
|
|
236
|
+
*/
|
|
237
|
+
private get options();
|
|
238
|
+
/**
|
|
239
|
+
* Which visible option is highlighted now.
|
|
240
|
+
*
|
|
241
|
+
* It is read from `aria-selected` in the markup, not from a counter inside
|
|
242
|
+
* the web component. The server can set the highlight itself with
|
|
243
|
+
* `lt.suggestion({ activeIndex })`, and a parallel counter would have jumped
|
|
244
|
+
* to the top of the list on the first arrow key instead of to the next
|
|
245
|
+
* option. The filtering also moves the options around, and then the lookup
|
|
246
|
+
* gives the right answer by itself.
|
|
247
|
+
*/
|
|
248
|
+
private get activeIndex();
|
|
249
|
+
/** The options that are visible now. */
|
|
250
|
+
private get visible();
|
|
251
|
+
/**
|
|
252
|
+
* The visible options that can be chosen. An option with
|
|
253
|
+
* `aria-disabled="true"` is shown, but the arrow keys skip it and it cannot
|
|
254
|
+
* be chosen, with neither keyboard nor mouse.
|
|
255
|
+
*/
|
|
256
|
+
private get selectable();
|
|
257
|
+
private unbind;
|
|
258
|
+
/**
|
|
259
|
+
* Reports when an update replaced the field because the id from the server
|
|
260
|
+
* changed.
|
|
261
|
+
*
|
|
262
|
+
* The message comes only when the user had something to lose: the old field
|
|
263
|
+
* is out of the tree, both had an id from the server, the ids differ, `name`
|
|
264
|
+
* is the same, and the old field held something other than the new one. A
|
|
265
|
+
* server that sends the text back has not lost it.
|
|
266
|
+
*/
|
|
267
|
+
private warnAboutReplacedControl;
|
|
268
|
+
private bind;
|
|
269
|
+
private setOpen;
|
|
270
|
+
private hasSomethingToShow;
|
|
271
|
+
/** Writes the state into the markup, without changing what the user wanted. */
|
|
272
|
+
private applyOpen;
|
|
273
|
+
/**
|
|
274
|
+
* The empty message follows the list: visible only when the list is open and
|
|
275
|
+
* empty.
|
|
276
|
+
*
|
|
277
|
+
* It is a sibling of the list and not a child, so `hidden` on the list did
|
|
278
|
+
* not hide it, and "No matches" stayed below a closed field after Escape.
|
|
279
|
+
* If something else has filtered, it also controls the empty message.
|
|
280
|
+
*/
|
|
281
|
+
private syncEmpty;
|
|
282
|
+
/**
|
|
283
|
+
* Hides what does not match, and announces how many are left.
|
|
284
|
+
*
|
|
285
|
+
* Runs when the user types or focuses the field, and again after a patch
|
|
286
|
+
* while the list is open, since the patch may have replaced the options.
|
|
287
|
+
*/
|
|
288
|
+
private filter;
|
|
289
|
+
/**
|
|
290
|
+
* Removes the highlight from an option the filtering just hid.
|
|
291
|
+
*
|
|
292
|
+
* The cleanup belongs here, where the hiding happens, and not only in
|
|
293
|
+
* `repair()`: that returns at once under `server-controlled`, and then
|
|
294
|
+
* `aria-activedescendant` pointed to a hidden option, which the screen
|
|
295
|
+
* reader announced anyway.
|
|
296
|
+
*/
|
|
297
|
+
private dropHiddenMark;
|
|
298
|
+
/**
|
|
299
|
+
* Announces the count when something else has filtered.
|
|
300
|
+
*
|
|
301
|
+
* The list then changes not from a keystroke but from the app rendering
|
|
302
|
+
* again, and that is exactly the change the observer sees. The message
|
|
303
|
+
* belongs here and not in `filter()`, because half a second over the
|
|
304
|
+
* network can pass between the keystroke and the new answer.
|
|
305
|
+
*
|
|
306
|
+
* Only changes are announced. The first count is the starting point and not
|
|
307
|
+
* news, and it is often 0 because the app has not rendered the list yet.
|
|
308
|
+
*/
|
|
309
|
+
private announceFiltered;
|
|
310
|
+
/**
|
|
311
|
+
* Announces the number of matches.
|
|
312
|
+
*
|
|
313
|
+
* Without this, people who cannot see the screen get no word that the list
|
|
314
|
+
* narrowed while they typed. The text is generated on the client, and
|
|
315
|
+
* `repair()` writes it back when an update empties the element. If the
|
|
316
|
+
* element is missing, `bind()` has already reported it.
|
|
317
|
+
*/
|
|
318
|
+
private announce;
|
|
319
|
+
/**
|
|
320
|
+
* The text for a count, in the page's language.
|
|
321
|
+
*
|
|
322
|
+
* `count-none` applies to zero matches, since "No matches" is a sentence of
|
|
323
|
+
* its own and not an inflection. Otherwise `Intl.PluralRules` picks the form
|
|
324
|
+
* the language requires, and `count-<form>` gives the text, with `{n}` for
|
|
325
|
+
* the number. If the form is missing, `count-other` applies. If that is
|
|
326
|
+
* missing too, the default text from `DEFAULT_TEXTS` applies.
|
|
327
|
+
*/
|
|
328
|
+
private countText;
|
|
329
|
+
private markActive;
|
|
330
|
+
/** Highlights one option, and remembers which. */
|
|
331
|
+
private markOption;
|
|
332
|
+
private choose;
|
|
333
|
+
/**
|
|
334
|
+
* Writes the code in the value field and dispatches `input` and `change` on
|
|
335
|
+
* it, so `data-bind` in Datastar sees the code. The events do not bubble: a
|
|
336
|
+
* `data-on:input` on the host, which the recipe uses to fetch suggestions,
|
|
337
|
+
* must not trigger a search for the code every time the user chooses.
|
|
338
|
+
*/
|
|
339
|
+
private writeCode;
|
|
340
|
+
/**
|
|
341
|
+
* The form is reset. The browser sets the text back to the server's after
|
|
342
|
+
* the event has been dispatched, so the code is set in the next turn, after
|
|
343
|
+
* the reset is done. The text there then decides: if it is the server's,
|
|
344
|
+
* the server's code applies; if it is the chosen one, the code stays;
|
|
345
|
+
* otherwise the code of the option with that text, otherwise none. The
|
|
346
|
+
* server's comes first because two options can have the same name: if the
|
|
347
|
+
* user chose the second Våler, the reset goes back to the server's. The
|
|
348
|
+
* server may also have sent the chosen one back, and then it is as much the
|
|
349
|
+
* server's word as the user's.
|
|
350
|
+
*/
|
|
351
|
+
private handleReset;
|
|
352
|
+
private handleInput;
|
|
353
|
+
private handleFocus;
|
|
354
|
+
private handleFocusOut;
|
|
355
|
+
private handleKeydown;
|
|
356
|
+
private handleListMouseDown;
|
|
357
|
+
private handleOptionMouseDown;
|
|
358
|
+
private handleOptionClick;
|
|
359
|
+
}
|
|
360
|
+
export declare function defineLtSuggestion(tagName?: string): void;
|
|
361
|
+
//# sourceMappingURL=lt-suggestion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lt-suggestion.d.ts","sourceRoot":"","sources":["../../../../src/components/frame/suggestion/lt-suggestion.ts"],"names":[],"mappings":"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"}
|