kanto-ds 1.8.0 → 1.9.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/README.md +25 -18
- package/dist/AGENTS.md +157 -0
- package/dist/cdn/kanto.min.js +4182 -1024
- package/dist/chunks/block-Cci-Kff_.js +69 -0
- package/dist/chunks/block-Cci-Kff_.js.map +1 -0
- package/dist/chunks/defaults-yhaR6U65.js +70 -0
- package/dist/chunks/{defaults-Cpeg13O5.js.map → defaults-yhaR6U65.js.map} +1 -1
- package/dist/chunks/heading-DsnZsfg-.js +21 -0
- package/dist/chunks/heading-DsnZsfg-.js.map +1 -0
- package/dist/chunks/{index-BEWmAE0T.js → index-1ZFgagWW.js} +18 -7
- package/dist/chunks/index-1ZFgagWW.js.map +1 -0
- package/dist/chunks/indicator-B_Rs8F92.js +49 -0
- package/dist/chunks/indicator-B_Rs8F92.js.map +1 -0
- package/dist/chunks/{kt-calendar-D72xa8qr.js → kt-calendar-SK8eapuy.js} +3 -3
- package/dist/chunks/{kt-calendar-D72xa8qr.js.map → kt-calendar-SK8eapuy.js.map} +1 -1
- package/dist/chunks/kt-color-picker-BoezCAmx.js +365 -0
- package/dist/chunks/kt-color-picker-BoezCAmx.js.map +1 -0
- package/dist/chunks/{kt-element-COgh6Yr1.js → kt-element-DvWtPQ1Y.js} +2 -2
- package/dist/chunks/{kt-element-COgh6Yr1.js.map → kt-element-DvWtPQ1Y.js.map} +1 -1
- package/dist/chunks/motion-ChVUUO7O.js +28 -0
- package/dist/chunks/motion-ChVUUO7O.js.map +1 -0
- package/dist/chunks/{segmented-field-BCjCGF4I.js → segmented-field-T_Zo6lc1.js} +2 -2
- package/dist/chunks/{segmented-field-BCjCGF4I.js.map → segmented-field-T_Zo6lc1.js.map} +1 -1
- package/dist/chunks/{typed-date-Z3vcUJbb.js → typed-date-CaU0kXoY.js} +2 -2
- package/dist/chunks/{typed-date-Z3vcUJbb.js.map → typed-date-CaU0kXoY.js.map} +1 -1
- package/dist/components/blocks/kt-auth-form/kt-auth-form.d.ts +143 -0
- package/dist/components/blocks/kt-auth-form/kt-auth-form.js +368 -0
- package/dist/components/blocks/kt-auth-form/kt-auth-form.js.map +1 -0
- package/dist/components/blocks/kt-blog-post/kt-blog-post.d.ts +75 -0
- package/dist/components/blocks/kt-blog-post/kt-blog-post.js +285 -0
- package/dist/components/blocks/kt-blog-post/kt-blog-post.js.map +1 -0
- package/dist/components/blocks/kt-cta/kt-cta.d.ts +51 -0
- package/dist/components/blocks/kt-cta/kt-cta.js +126 -0
- package/dist/components/blocks/kt-cta/kt-cta.js.map +1 -0
- package/dist/components/blocks/kt-empty-page/kt-empty-page.d.ts +75 -0
- package/dist/components/blocks/kt-empty-page/kt-empty-page.js +245 -0
- package/dist/components/blocks/kt-empty-page/kt-empty-page.js.map +1 -0
- package/dist/components/blocks/kt-error-page/kt-error-page.d.ts +65 -0
- package/dist/components/blocks/kt-error-page/kt-error-page.js +177 -0
- package/dist/components/blocks/kt-error-page/kt-error-page.js.map +1 -0
- package/dist/components/blocks/kt-faq/kt-faq.d.ts +61 -0
- package/dist/components/blocks/kt-faq/kt-faq.js +129 -0
- package/dist/components/blocks/kt-faq/kt-faq.js.map +1 -0
- package/dist/components/blocks/kt-feature-grid/kt-feature-grid.d.ts +59 -0
- package/dist/components/blocks/kt-feature-grid/kt-feature-grid.js +166 -0
- package/dist/components/blocks/kt-feature-grid/kt-feature-grid.js.map +1 -0
- package/dist/components/blocks/kt-hero/kt-hero.d.ts +51 -0
- package/dist/components/blocks/kt-hero/kt-hero.js +138 -0
- package/dist/components/blocks/kt-hero/kt-hero.js.map +1 -0
- package/dist/components/blocks/kt-logo-cloud/kt-logo-cloud.d.ts +46 -0
- package/dist/components/blocks/kt-logo-cloud/kt-logo-cloud.js +100 -0
- package/dist/components/blocks/kt-logo-cloud/kt-logo-cloud.js.map +1 -0
- package/dist/components/blocks/kt-newsletter/kt-newsletter.d.ts +85 -0
- package/dist/components/blocks/kt-newsletter/kt-newsletter.js +247 -0
- package/dist/components/blocks/kt-newsletter/kt-newsletter.js.map +1 -0
- package/dist/components/blocks/kt-post-grid/kt-post-grid.d.ts +73 -0
- package/dist/components/blocks/kt-post-grid/kt-post-grid.js +249 -0
- package/dist/components/blocks/kt-post-grid/kt-post-grid.js.map +1 -0
- package/dist/components/blocks/kt-pricing-table/kt-pricing-table.d.ts +102 -0
- package/dist/components/blocks/kt-pricing-table/kt-pricing-table.js +307 -0
- package/dist/components/blocks/kt-pricing-table/kt-pricing-table.js.map +1 -0
- package/dist/components/blocks/kt-settings-section/kt-settings-section.d.ts +52 -0
- package/dist/components/blocks/kt-settings-section/kt-settings-section.js +158 -0
- package/dist/components/blocks/kt-settings-section/kt-settings-section.js.map +1 -0
- package/dist/components/blocks/kt-testimonials/kt-testimonials.d.ts +56 -0
- package/dist/components/blocks/kt-testimonials/kt-testimonials.js +161 -0
- package/dist/components/blocks/kt-testimonials/kt-testimonials.js.map +1 -0
- package/dist/components/core/kt-avatar/kt-avatar.js +2 -2
- package/dist/components/core/kt-avatar-group/kt-avatar-group.d.ts +42 -0
- package/dist/components/core/kt-avatar-group/kt-avatar-group.js +97 -0
- package/dist/components/core/kt-avatar-group/kt-avatar-group.js.map +1 -0
- package/dist/components/core/kt-badge/kt-badge.js +2 -2
- package/dist/components/core/kt-button/flights.d.ts +27 -0
- package/dist/components/core/kt-button/kt-button.d.ts +52 -1
- package/dist/components/core/kt-button/kt-button.js +353 -77
- package/dist/components/core/kt-button/kt-button.js.map +1 -1
- package/dist/components/core/kt-button/morph.d.ts +27 -0
- package/dist/components/core/kt-card/kt-card.js +1 -1
- package/dist/components/core/kt-code/kt-code.d.ts +2 -1
- package/dist/components/core/kt-code/kt-code.js +52 -37
- package/dist/components/core/kt-code/kt-code.js.map +1 -1
- package/dist/components/core/kt-copy-button/kt-copy-button.d.ts +47 -0
- package/dist/components/core/kt-copy-button/kt-copy-button.js +74 -0
- package/dist/components/core/kt-copy-button/kt-copy-button.js.map +1 -0
- package/dist/components/core/kt-icon/kt-icon.js +2 -2
- package/dist/components/core/kt-kbd/kt-kbd.js +1 -1
- package/dist/components/core/kt-split-button/kt-split-button.js +2 -2
- package/dist/components/data/kt-chart/kt-chart.js +2 -2
- package/dist/components/data/kt-chat-message/kt-chat-message.d.ts +60 -0
- package/dist/components/data/kt-chat-message/kt-chat-message.js +204 -0
- package/dist/components/data/kt-chat-message/kt-chat-message.js.map +1 -0
- package/dist/components/data/kt-description-list/kt-description-list.d.ts +56 -0
- package/dist/components/data/kt-description-list/kt-description-list.js +120 -0
- package/dist/components/data/kt-description-list/kt-description-list.js.map +1 -0
- package/dist/components/data/kt-meter/kt-meter.js +8 -6
- package/dist/components/data/kt-meter/kt-meter.js.map +1 -1
- package/dist/components/data/kt-pagination/kt-pagination.js +2 -2
- package/dist/components/data/kt-stat/kt-stat.d.ts +3 -1
- package/dist/components/data/kt-stat/kt-stat.js +31 -16
- package/dist/components/data/kt-stat/kt-stat.js.map +1 -1
- package/dist/components/data/kt-table/kt-table.js +2 -2
- package/dist/components/data/kt-timeline/kt-timeline.js +2 -2
- package/dist/components/data/kt-timeline/kt-timeline.js.map +1 -1
- package/dist/components/data/kt-tree/kt-tree.d.ts +69 -0
- package/dist/components/data/kt-tree/kt-tree.js +208 -0
- package/dist/components/data/kt-tree/kt-tree.js.map +1 -0
- package/dist/components/feedback/kt-alert/kt-alert.js +2 -2
- package/dist/components/feedback/kt-empty-state/kt-empty-state.js +1 -1
- package/dist/components/feedback/kt-progress-bar/kt-progress-bar.js +1 -1
- package/dist/components/feedback/kt-skeleton/kt-skeleton.js +1 -1
- package/dist/components/feedback/kt-toast/kt-toast.js +2 -2
- package/dist/components/feedback/kt-toast-container/kt-toast-container.d.ts +8 -1
- package/dist/components/feedback/kt-toast-container/kt-toast-container.js +65 -26
- package/dist/components/feedback/kt-toast-container/kt-toast-container.js.map +1 -1
- package/dist/components/feedback/kt-tooltip/kt-tooltip.js +1 -1
- package/dist/components/forms/kt-calendar/kt-calendar.js +3 -3
- package/dist/components/forms/kt-checkbox/kt-checkbox.d.ts +2 -0
- package/dist/components/forms/kt-checkbox/kt-checkbox.js +19 -8
- package/dist/components/forms/kt-checkbox/kt-checkbox.js.map +1 -1
- package/dist/components/forms/kt-color-picker/kt-color-picker.d.ts +66 -0
- package/dist/components/forms/kt-color-picker/kt-color-picker.js +14 -0
- package/dist/components/forms/kt-color-picker/kt-color-picker.js.map +1 -0
- package/dist/components/forms/kt-date-input/kt-date-input.js +5 -5
- package/dist/components/forms/kt-date-picker/kt-date-picker.js +4 -4
- package/dist/components/forms/kt-drag-drop/kt-drag-drop.js +2 -2
- package/dist/components/forms/kt-form/kt-form.js +2 -2
- package/dist/components/forms/kt-input/kt-input.js +2 -2
- package/dist/components/forms/kt-input-menu/kt-input-menu.js +2 -2
- package/dist/components/forms/kt-label-input/kt-label-input.js +1 -1
- package/dist/components/forms/kt-multi-select/kt-multi-select.js +2 -2
- package/dist/components/forms/kt-number-input/kt-number-input.d.ts +3 -0
- package/dist/components/forms/kt-number-input/kt-number-input.js +61 -45
- package/dist/components/forms/kt-number-input/kt-number-input.js.map +1 -1
- package/dist/components/forms/kt-otp-input/kt-otp-input.d.ts +74 -0
- package/dist/components/forms/kt-otp-input/kt-otp-input.js +232 -0
- package/dist/components/forms/kt-otp-input/kt-otp-input.js.map +1 -0
- package/dist/components/forms/kt-prompt-input/kt-prompt-input.d.ts +74 -0
- package/dist/components/forms/kt-prompt-input/kt-prompt-input.js +213 -0
- package/dist/components/forms/kt-prompt-input/kt-prompt-input.js.map +1 -0
- package/dist/components/forms/kt-radio-group/kt-radio-group.js +2 -2
- package/dist/components/forms/kt-select/kt-select.js +2 -2
- package/dist/components/forms/kt-slider/kt-slider.js +2 -2
- package/dist/components/forms/kt-textarea/kt-textarea.js +2 -2
- package/dist/components/forms/kt-time-input/kt-time-input.js +3 -3
- package/dist/components/forms/kt-toggle/kt-toggle.js +1 -1
- package/dist/components/navigation/kt-app-shell/kt-app-shell.d.ts +85 -0
- package/dist/components/navigation/kt-app-shell/kt-app-shell.js +220 -0
- package/dist/components/navigation/kt-app-shell/kt-app-shell.js.map +1 -0
- package/dist/components/navigation/kt-breadcrumb/kt-breadcrumb.js +2 -2
- package/dist/components/navigation/kt-footer/kt-footer.d.ts +82 -0
- package/dist/components/navigation/kt-footer/kt-footer.js +220 -0
- package/dist/components/navigation/kt-footer/kt-footer.js.map +1 -0
- package/dist/components/navigation/kt-header/kt-header.js +2 -2
- package/dist/components/navigation/kt-page-header/kt-page-header.js +2 -2
- package/dist/components/navigation/kt-page-header/kt-page-header.js.map +1 -1
- package/dist/components/navigation/kt-segmented-control/kt-segmented-control.d.ts +1 -0
- package/dist/components/navigation/kt-segmented-control/kt-segmented-control.js +81 -44
- package/dist/components/navigation/kt-segmented-control/kt-segmented-control.js.map +1 -1
- package/dist/components/navigation/kt-steps/kt-steps.d.ts +4 -1
- package/dist/components/navigation/kt-steps/kt-steps.js +80 -38
- package/dist/components/navigation/kt-steps/kt-steps.js.map +1 -1
- package/dist/components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js +3 -3
- package/dist/components/navigation/kt-sub-menu-navigation/kt-sub-menu-navigation.js.map +1 -1
- package/dist/components/navigation/kt-tabs/kt-tabs.d.ts +1 -0
- package/dist/components/navigation/kt-tabs/kt-tabs.js +92 -64
- package/dist/components/navigation/kt-tabs/kt-tabs.js.map +1 -1
- package/dist/components/navigation/kt-toggle-button/kt-toggle-button.js +1 -1
- package/dist/components/navigation/kt-toggle-button-group/kt-toggle-button-group.js +2 -2
- package/dist/components/navigation/kt-user-menu/kt-user-menu.d.ts +86 -0
- package/dist/components/navigation/kt-user-menu/kt-user-menu.js +298 -0
- package/dist/components/navigation/kt-user-menu/kt-user-menu.js.map +1 -0
- package/dist/components/overlays/kt-accordion/kt-accordion.d.ts +47 -0
- package/dist/components/overlays/kt-accordion/kt-accordion.js +80 -0
- package/dist/components/overlays/kt-accordion/kt-accordion.js.map +1 -0
- package/dist/components/overlays/kt-collapsible/kt-collapsible.d.ts +17 -1
- package/dist/components/overlays/kt-collapsible/kt-collapsible.js +87 -32
- package/dist/components/overlays/kt-collapsible/kt-collapsible.js.map +1 -1
- package/dist/components/overlays/kt-command-palette/kt-command-palette.js +2 -2
- package/dist/components/overlays/kt-confirm-dialog/kt-confirm-dialog.js +2 -2
- package/dist/components/overlays/kt-dropdown/kt-dropdown.js +2 -2
- package/dist/components/overlays/kt-modal/kt-modal.js +2 -2
- package/dist/components/overlays/kt-side-panel/kt-side-panel.js +2 -2
- package/dist/components/overlays/kt-tour/kt-tour.d.ts +77 -0
- package/dist/components/overlays/kt-tour/kt-tour.js +200 -0
- package/dist/components/overlays/kt-tour/kt-tour.js.map +1 -0
- package/dist/custom-elements.json +15655 -8814
- package/dist/docs/kt-accordion.md +49 -0
- package/dist/docs/kt-app-shell.md +89 -0
- package/dist/docs/kt-auth-form.md +111 -0
- package/dist/docs/kt-avatar-group.md +49 -0
- package/dist/docs/kt-blog-post.md +77 -0
- package/dist/docs/kt-button.md +21 -0
- package/dist/docs/kt-chat-message.md +68 -0
- package/dist/docs/kt-color-picker.md +67 -0
- package/dist/docs/kt-copy-button.md +50 -0
- package/dist/docs/kt-cta.md +45 -0
- package/dist/docs/kt-description-list.md +58 -0
- package/dist/docs/kt-empty-page.md +92 -0
- package/dist/docs/kt-error-page.md +64 -0
- package/dist/docs/kt-faq.md +54 -0
- package/dist/docs/kt-feature-grid.md +53 -0
- package/dist/docs/kt-footer.md +115 -0
- package/dist/docs/kt-hero.md +53 -0
- package/dist/docs/kt-logo-cloud.md +41 -0
- package/dist/docs/kt-newsletter.md +69 -0
- package/dist/docs/kt-otp-input.md +68 -0
- package/dist/docs/kt-post-grid.md +66 -0
- package/dist/docs/kt-pricing-table.md +101 -0
- package/dist/docs/kt-prompt-input.md +86 -0
- package/dist/docs/kt-settings-section.md +65 -0
- package/dist/docs/kt-testimonials.md +52 -0
- package/dist/docs/kt-tour.md +75 -0
- package/dist/docs/kt-tree.md +83 -0
- package/dist/docs/kt-user-menu.md +77 -0
- package/dist/icons/defaults.d.ts +2 -0
- package/dist/icons/index.js +1 -1
- package/dist/index.d.ts +50 -0
- package/dist/index.js +225 -292
- package/dist/index.js.map +1 -1
- package/dist/internal/block.d.ts +23 -0
- package/dist/internal/heading.d.ts +8 -0
- package/dist/internal/indicator.d.ts +34 -0
- package/dist/internal/motion.d.ts +25 -0
- package/dist/internal/strings.d.ts +22 -0
- package/dist/react/index.d.ts +134 -0
- package/dist/react/index.js +392 -178
- package/dist/react/index.js.map +1 -1
- package/dist/react/jsx.d.ts +102 -1
- package/dist/strings/index.js +1 -1
- package/dist/tokens/base.css +31 -2
- package/dist/vscode.css-custom-data.json +143 -21
- package/dist/vscode.html-custom-data.json +961 -195
- package/dist/vue/index.d.ts +54 -0
- package/dist/vue/index.js +35 -8
- package/dist/vue/index.js.map +1 -1
- package/dist/web-types.json +3006 -912
- package/package.json +110 -2
- package/dist/chunks/defaults-Cpeg13O5.js +0 -68
- package/dist/chunks/index-BEWmAE0T.js.map +0 -1
|
@@ -3,269 +3,436 @@
|
|
|
3
3
|
"version": 1.1,
|
|
4
4
|
"tags": [
|
|
5
5
|
{
|
|
6
|
-
"name": "kt-
|
|
7
|
-
"description": "
|
|
6
|
+
"name": "kt-auth-form",
|
|
7
|
+
"description": "The way into a product: signing in, creating an account, resetting a\npassword, entering a code — one block, four modes.\n\nIt checks what it can before sending — an email that is one, a password, a\nname, a whole code — and says so on the field. Then `kt-submit` carries the\nmode and the values, and `wait(promise)`: the button runs the request, and\nif it rejects, its message is shown above the fields. A reset that succeeds\nsays the link is on its way.\n\nSign-in providers go in `providers`; the links between modes move the form\nitself and fire `kt-mode`. Every word is in `texts`, English until given\nothers.\n---\n\n\n### **Events:**\n - **kt-submit** - The form was sent. `detail: { mode, values, wait(promise) }`.\n- **kt-mode** - The form moved to another mode. `detail: { mode }`.\n- **kt-provider** - A provider was chosen. `detail: { id }`.\n\n### **Methods:**\n - **goTo(mode: _KtAuthMode_): _void_** - Moves the form to another mode, as its links do.\n- **submit(): _void_** - Sends the form, as its button does, once what it holds checks out.\n\n### **Slots:**\n - **logo** - Above the heading: the product's mark.\n- **footer** - Under the form: the terms, a privacy note.\n\n### **CSS Parts:**\n - **base** - The block.\n- **form** - The `<form>`.",
|
|
8
8
|
"attributes": [
|
|
9
9
|
{
|
|
10
|
-
"name": "
|
|
11
|
-
"description": "
|
|
10
|
+
"name": "mode",
|
|
11
|
+
"description": "`sign-in`, `sign-up`, `forgot` or `code`.",
|
|
12
|
+
"values": [{ "name": "KtAuthMode" }]
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"name": "remember",
|
|
16
|
+
"description": "Shows \"Keep me signed in\" when signing in.",
|
|
12
17
|
"values": []
|
|
13
18
|
},
|
|
14
19
|
{
|
|
15
|
-
"name": "
|
|
16
|
-
"description": "
|
|
20
|
+
"name": "password-min",
|
|
21
|
+
"description": "The shortest password a new account may choose.",
|
|
17
22
|
"values": []
|
|
18
23
|
},
|
|
19
|
-
{ "name": "size", "values": [{ "name": "KtAvatarSize" }] },
|
|
20
24
|
{
|
|
21
|
-
"name": "
|
|
22
|
-
"description": "
|
|
25
|
+
"name": "heading-level",
|
|
26
|
+
"description": "The heading's level, 1 to 6: 1 when the form is the page.",
|
|
23
27
|
"values": []
|
|
24
28
|
},
|
|
25
29
|
{
|
|
26
|
-
"name": "
|
|
27
|
-
"description": "
|
|
28
|
-
"values": [
|
|
30
|
+
"name": "plain",
|
|
31
|
+
"description": "Drops the card around it, for a page that frames it already.",
|
|
32
|
+
"values": []
|
|
29
33
|
},
|
|
30
34
|
{
|
|
31
|
-
"name": "
|
|
32
|
-
"description": "
|
|
35
|
+
"name": "error",
|
|
36
|
+
"description": "An error to show above the fields; a failed sending sets it.",
|
|
33
37
|
"values": []
|
|
34
38
|
}
|
|
35
39
|
],
|
|
36
40
|
"references": []
|
|
37
41
|
},
|
|
38
42
|
{
|
|
39
|
-
"name": "kt-
|
|
40
|
-
"description": "A
|
|
43
|
+
"name": "kt-blog-post",
|
|
44
|
+
"description": "A post, set to be read: its title, who wrote it and when, a cover, and the\nbody in a measure an eye can follow.\n\nThe body is the default slot — paragraphs, headings, lists, quotes, code,\nfigures — set as prose. The reading time is counted from it, unless given.\n---\n\n\n### **Slots:**\n - _default_ - The body.\n- **cover** - Under the header: an image, a figure with its caption.\n- **end** - After the body: tags, sharing, the next post.\n\n### **CSS Properties:**\n - **--kt-post-measure** - The column's width. 700px. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The article.\n- **header** - The title, the lead and who wrote it.\n- **body** - The body's column.",
|
|
41
45
|
"attributes": [
|
|
46
|
+
{ "name": "heading", "description": "The post's title.", "values": [] },
|
|
42
47
|
{
|
|
43
|
-
"name": "
|
|
44
|
-
"description": "
|
|
45
|
-
"values": [
|
|
48
|
+
"name": "lead",
|
|
49
|
+
"description": "A line under the title: what the post is about.",
|
|
50
|
+
"values": []
|
|
46
51
|
},
|
|
47
52
|
{
|
|
48
|
-
"name": "
|
|
49
|
-
"description": "
|
|
50
|
-
"values": [
|
|
53
|
+
"name": "date",
|
|
54
|
+
"description": "When it was published: `2026-09-14`.",
|
|
55
|
+
"values": []
|
|
51
56
|
},
|
|
52
|
-
{ "name": "
|
|
57
|
+
{ "name": "author", "description": "Who wrote it.", "values": [] },
|
|
53
58
|
{
|
|
54
|
-
"name": "
|
|
55
|
-
"description": "
|
|
59
|
+
"name": "author-role",
|
|
60
|
+
"description": "Their role: \"CFO, Northwind\".",
|
|
56
61
|
"values": []
|
|
57
62
|
},
|
|
58
63
|
{
|
|
59
|
-
"name": "
|
|
60
|
-
"description": "
|
|
64
|
+
"name": "avatar",
|
|
65
|
+
"description": "Their photo's URL; without one, their initials.",
|
|
61
66
|
"values": []
|
|
62
67
|
},
|
|
63
68
|
{
|
|
64
|
-
"name": "
|
|
65
|
-
"description": "
|
|
69
|
+
"name": "reading-time",
|
|
70
|
+
"description": "Minutes to read it. Counted from the body when 0.",
|
|
66
71
|
"values": []
|
|
67
72
|
},
|
|
68
|
-
{ "name": "clickable", "values": [] },
|
|
69
73
|
{
|
|
70
|
-
"name": "
|
|
71
|
-
"description": "
|
|
74
|
+
"name": "back-href",
|
|
75
|
+
"description": "Where All posts leads; no link without it.",
|
|
72
76
|
"values": []
|
|
73
77
|
},
|
|
74
78
|
{
|
|
75
|
-
"name": "
|
|
76
|
-
"description": "
|
|
79
|
+
"name": "locale",
|
|
80
|
+
"description": "The locale the date is written in; the page's language when empty.",
|
|
77
81
|
"values": []
|
|
78
82
|
},
|
|
79
83
|
{
|
|
80
|
-
"name": "
|
|
81
|
-
"description": "
|
|
84
|
+
"name": "heading-level",
|
|
85
|
+
"description": "The title's level: 1, since the post is the page.",
|
|
82
86
|
"values": []
|
|
83
87
|
}
|
|
84
88
|
],
|
|
85
89
|
"references": []
|
|
86
90
|
},
|
|
87
91
|
{
|
|
88
|
-
"name": "kt-
|
|
89
|
-
"description": "The
|
|
92
|
+
"name": "kt-cta",
|
|
93
|
+
"description": "The ask at the end of a page: a heading, a line and the button that acts on\nthem.\n\n`panel`, the default, sets it on a tinted panel so it reads as the page's\nlast word; `plain` leaves it on the page. `stacked` puts the actions under\nthe words; `inline` beside them once the block is wide enough.\n---\n\n\n### **Slots:**\n - **actions** - The buttons.\n- **note** - Under the actions: what it costs, what it needs.\n\n### **CSS Parts:**\n - **base** - The section.\n- **panel** - The panel.",
|
|
90
94
|
"attributes": [
|
|
95
|
+
{ "name": "heading", "values": [] },
|
|
96
|
+
{ "name": "lead", "values": [] },
|
|
91
97
|
{
|
|
92
|
-
"name": "
|
|
93
|
-
"description": "
|
|
94
|
-
"values": [{ "name": "
|
|
98
|
+
"name": "align",
|
|
99
|
+
"description": "`center` or `start`.",
|
|
100
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
95
101
|
},
|
|
96
102
|
{
|
|
97
|
-
"name": "
|
|
98
|
-
"description": "
|
|
99
|
-
"values": [{ "name": "
|
|
103
|
+
"name": "variant",
|
|
104
|
+
"description": "`panel`: on a tinted panel. `plain`: on the page.",
|
|
105
|
+
"values": [{ "name": "KtCtaVariant" }]
|
|
100
106
|
},
|
|
101
|
-
{ "name": "disabled", "values": [] },
|
|
102
107
|
{
|
|
103
|
-
"name": "
|
|
104
|
-
"description": "
|
|
105
|
-
"values": [{ "name": "
|
|
108
|
+
"name": "layout",
|
|
109
|
+
"description": "`stacked`: the actions under the words. `inline`: beside them, where there is room.",
|
|
110
|
+
"values": [{ "name": "KtCtaLayout" }]
|
|
106
111
|
},
|
|
107
112
|
{
|
|
108
|
-
"name": "
|
|
109
|
-
"description": "
|
|
113
|
+
"name": "heading-level",
|
|
114
|
+
"description": "The heading's level.",
|
|
110
115
|
"values": []
|
|
111
|
-
}
|
|
116
|
+
}
|
|
117
|
+
],
|
|
118
|
+
"references": []
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
"name": "kt-empty-page",
|
|
122
|
+
"description": "The page a new account lands on, before there is anything in it: a welcome,\nand the first steps that fill it — what is done, what is next, and the way\nto each.\n\nThe steps are data: `page.steps = [{ id, title, description, action, href,\ndone }]`, numbered in order, with how far along it is over them. A step's\naction fires `kt-step`, or is a link with an `href`. For a list or a panel\nthat is empty, `kt-empty-state`.\n---\n\n\n### **Events:**\n - **kt-step** - A step's action was pressed. `detail: { id }`.\n\n### **Slots:**\n - **media** - Over the heading: an illustration, a logo.\n- **actions** - Under the steps: Skip for now, a link to the docs.\n\n### **CSS Parts:**\n - **base** - The section.\n- **step** - One step.",
|
|
123
|
+
"attributes": [
|
|
124
|
+
{ "name": "heading", "values": [] },
|
|
125
|
+
{ "name": "lead", "values": [] },
|
|
112
126
|
{
|
|
113
|
-
"name": "
|
|
114
|
-
"description": "
|
|
115
|
-
"values": [
|
|
127
|
+
"name": "heading-level",
|
|
128
|
+
"description": "The heading's level: 1, since it is the page; the steps' titles sit one under.",
|
|
129
|
+
"values": []
|
|
130
|
+
}
|
|
131
|
+
],
|
|
132
|
+
"references": []
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"name": "kt-error-page",
|
|
136
|
+
"description": "The page a person lands on when the one they wanted is not there: not found,\nbroken, or down for maintenance — said plainly, with the way on.\n\n`not-found` leads home (`home-href`); `error` offers to try again, firing\n`kt-retry` — cancel it to retry your own way, otherwise the page reloads;\n`maintenance` offers nothing it cannot do. The `actions` slot replaces the\nbuttons. Every word is in `texts`, English until given others.\n---\n\n\n### **Events:**\n - **kt-retry** - Try again was pressed. Cancelable; uncancelled, the page reloads.\n\n### **Slots:**\n - **actions** - Replaces the buttons: a search, a link to the status page.\n- _default_ - Under the actions: a contact line, a request id.\n\n### **CSS Parts:**\n - **base** - The block.\n- **code** - The code, large.",
|
|
137
|
+
"attributes": [
|
|
138
|
+
{
|
|
139
|
+
"name": "kind",
|
|
140
|
+
"description": "`not-found`, `error` or `maintenance`.",
|
|
141
|
+
"values": [{ "name": "KtErrorPageKind" }]
|
|
116
142
|
},
|
|
117
143
|
{
|
|
118
|
-
"name": "
|
|
119
|
-
"description": "
|
|
144
|
+
"name": "code",
|
|
145
|
+
"description": "The code shown large. Defaults to the kind's: 404, 500, 503.",
|
|
120
146
|
"values": []
|
|
121
147
|
},
|
|
122
148
|
{
|
|
123
|
-
"name": "
|
|
124
|
-
"description": "
|
|
149
|
+
"name": "home-href",
|
|
150
|
+
"description": "Where Go home leads.",
|
|
125
151
|
"values": []
|
|
126
152
|
},
|
|
127
153
|
{
|
|
128
|
-
"name": "
|
|
129
|
-
"description": "
|
|
154
|
+
"name": "heading-level",
|
|
155
|
+
"description": "The heading's level, 1 to 6: 1 when it is the page.",
|
|
130
156
|
"values": []
|
|
131
157
|
},
|
|
132
|
-
{
|
|
158
|
+
{
|
|
159
|
+
"name": "fill",
|
|
160
|
+
"description": "Fills its container's height and centres itself in it.",
|
|
161
|
+
"values": []
|
|
162
|
+
}
|
|
133
163
|
],
|
|
134
164
|
"references": []
|
|
135
165
|
},
|
|
136
166
|
{
|
|
137
|
-
"name": "kt-
|
|
138
|
-
"description": "
|
|
167
|
+
"name": "kt-faq",
|
|
168
|
+
"description": "The questions people ask before they sign up, answered: an accordion under a\nheading, one answer open at a time.\n\nThe questions are data: `faq.items = [{ question, answer }]`. `multiple`\nlets each open on its own; `open-first` opens the first. `stacked` puts the\nhead over the questions; `split` beside them, where the block is wide\nenough.\n---\n\n\n### **Slots:**\n - **note** - Under the head: where to ask what is not answered.\n\n### **CSS Parts:**\n - **base** - The section.",
|
|
139
169
|
"attributes": [
|
|
170
|
+
{ "name": "heading", "values": [] },
|
|
171
|
+
{ "name": "lead", "values": [] },
|
|
140
172
|
{
|
|
141
|
-
"name": "
|
|
142
|
-
"description": "
|
|
173
|
+
"name": "align",
|
|
174
|
+
"description": "`center` or `start`: the head, when stacked.",
|
|
175
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"name": "multiple",
|
|
179
|
+
"description": "Each answer opens and closes on its own, rather than one at a time.",
|
|
143
180
|
"values": []
|
|
144
181
|
},
|
|
145
182
|
{
|
|
146
|
-
"name": "
|
|
147
|
-
"description": "
|
|
183
|
+
"name": "open-first",
|
|
184
|
+
"description": "Opens the first answer.",
|
|
148
185
|
"values": []
|
|
149
186
|
},
|
|
150
187
|
{
|
|
151
|
-
"name": "
|
|
152
|
-
"description": "
|
|
188
|
+
"name": "layout",
|
|
189
|
+
"description": "`stacked`: the head over the questions. `split`: beside them, where there is room.",
|
|
190
|
+
"values": [{ "name": "KtFaqLayout" }]
|
|
191
|
+
},
|
|
192
|
+
{
|
|
193
|
+
"name": "heading-level",
|
|
194
|
+
"description": "The heading's level.",
|
|
153
195
|
"values": []
|
|
196
|
+
}
|
|
197
|
+
],
|
|
198
|
+
"references": []
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"name": "kt-feature-grid",
|
|
202
|
+
"description": "What the product does, a feature at a time: an icon, a title and a line,\nin a grid.\n\nThe features are data: `grid.features = [{ icon, title, description, href }]`,\ndrawn as a list. `columns` sets how many per row where there is room — a\nnarrow grid is one column; `card` puts each feature on a card.\n---\n\n\n### **CSS Parts:**\n - **base** - The section.\n- **list** - The `<ul>`.\n- **feature** - One feature.",
|
|
203
|
+
"attributes": [
|
|
204
|
+
{ "name": "heading", "values": [] },
|
|
205
|
+
{ "name": "lead", "values": [] },
|
|
206
|
+
{
|
|
207
|
+
"name": "align",
|
|
208
|
+
"description": "`center` or `start`: the head over the grid.",
|
|
209
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
154
210
|
},
|
|
155
211
|
{
|
|
156
|
-
"name": "
|
|
157
|
-
"description": "
|
|
212
|
+
"name": "columns",
|
|
213
|
+
"description": "Features per row, where there is room: 2, 3 or 4.",
|
|
214
|
+
"values": [{ "name": "2" }, { "name": "3" }, { "name": "4" }]
|
|
215
|
+
},
|
|
216
|
+
{
|
|
217
|
+
"name": "variant",
|
|
218
|
+
"description": "`plain`, or `card`: each feature on a card.",
|
|
219
|
+
"values": [{ "name": "KtFeatureGridVariant" }]
|
|
220
|
+
},
|
|
221
|
+
{
|
|
222
|
+
"name": "heading-level",
|
|
223
|
+
"description": "The heading's level; the features' titles sit one under.",
|
|
158
224
|
"values": []
|
|
225
|
+
}
|
|
226
|
+
],
|
|
227
|
+
"references": []
|
|
228
|
+
},
|
|
229
|
+
{
|
|
230
|
+
"name": "kt-hero",
|
|
231
|
+
"description": "The top of a page: what the product is, in a heading and a line, and the\nway in.\n\n`stacked`, the default, puts the media under the words — a screenshot, a\nlive demo; `split` sets it beside them once the hero is wide enough.\n`align` centres the words or keeps them at the start.\n---\n\n\n### **Slots:**\n - **announcement** - Above the heading: what is new, as a link.\n- **actions** - Under the lead: the buttons.\n- **note** - Under the actions: what it costs, what it needs.\n- **media** - A screenshot, an illustration, a live demo.\n\n### **CSS Parts:**\n - **base** - The section.\n- **media** - The media's box.",
|
|
232
|
+
"attributes": [
|
|
233
|
+
{ "name": "heading", "values": [] },
|
|
234
|
+
{ "name": "lead", "values": [] },
|
|
235
|
+
{
|
|
236
|
+
"name": "align",
|
|
237
|
+
"description": "`center` or `start`.",
|
|
238
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
159
239
|
},
|
|
160
240
|
{
|
|
161
|
-
"name": "
|
|
162
|
-
"
|
|
241
|
+
"name": "layout",
|
|
242
|
+
"description": "`stacked`: the media under the words. `split`: beside them, where there is room.",
|
|
243
|
+
"values": [{ "name": "KtHeroLayout" }]
|
|
163
244
|
},
|
|
164
245
|
{
|
|
165
|
-
"name": "
|
|
166
|
-
"description": "
|
|
246
|
+
"name": "heading-level",
|
|
247
|
+
"description": "The heading's level: 1, since a hero opens its page.",
|
|
167
248
|
"values": []
|
|
168
249
|
}
|
|
169
250
|
],
|
|
170
251
|
"references": []
|
|
171
252
|
},
|
|
172
253
|
{
|
|
173
|
-
"name": "kt-
|
|
174
|
-
"description": "
|
|
254
|
+
"name": "kt-logo-cloud",
|
|
255
|
+
"description": "Who uses it, in their logos: a line of marks under a caption — \"Trusted by\nfinance teams at\".\n\nThe logos are the default slot: images or inline SVGs, each with its\ncompany's name as `alt` or `aria-label`. They are drawn at one height, grey\nuntil hovered, so no brand shouts over another; `colour` keeps their\ncolours.\n---\n\n\n### **Slots:**\n - _default_ - The logos.\n\n### **CSS Properties:**\n - **--kt-logo-height** - The logos' height. 28px. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The section.\n- **logos** - The row of logos.",
|
|
175
256
|
"attributes": [
|
|
176
257
|
{
|
|
177
|
-
"name": "
|
|
178
|
-
"description": "
|
|
258
|
+
"name": "heading",
|
|
259
|
+
"description": "The caption over the logos: \"Trusted by finance teams at\".",
|
|
179
260
|
"values": []
|
|
180
261
|
},
|
|
181
262
|
{
|
|
182
|
-
"name": "
|
|
183
|
-
"description": "
|
|
263
|
+
"name": "align",
|
|
264
|
+
"description": "`center` or `start`.",
|
|
265
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
266
|
+
},
|
|
267
|
+
{
|
|
268
|
+
"name": "colour",
|
|
269
|
+
"description": "Keeps the logos' colours, rather than grey until hovered.",
|
|
184
270
|
"values": []
|
|
185
271
|
},
|
|
186
272
|
{
|
|
187
|
-
"name": "
|
|
188
|
-
"description": "
|
|
273
|
+
"name": "heading-level",
|
|
274
|
+
"description": "The caption's level: a heading, set small.",
|
|
189
275
|
"values": []
|
|
190
276
|
}
|
|
191
277
|
],
|
|
192
278
|
"references": []
|
|
193
279
|
},
|
|
194
280
|
{
|
|
195
|
-
"name": "kt-
|
|
196
|
-
"description": "A
|
|
281
|
+
"name": "kt-newsletter",
|
|
282
|
+
"description": "A way to hear from you again: a heading, a line, an email field and the\nbutton that subscribes it.\n\nIt checks the address before sending, then fires `kt-subscribe` with it and\n`wait(promise)`: the button runs the request, and the block thanks the\nreader once it resolves — or shows why not on the field. Without a wait it\nthanks at once.\n---\n\n\n### **Events:**\n - **kt-subscribe** - An address was sent. `detail: { email, wait(promise) }`.\n\n### **Methods:**\n - **subscribe(): _void_** - Sends the address, as the button does, once it is one.\n\n### **Slots:**\n - **note** - Under the field: how often, and that unsubscribing is one click.\n\n### **CSS Parts:**\n - **base** - The section.\n- **panel** - The panel.",
|
|
197
283
|
"attributes": [
|
|
284
|
+
{ "name": "heading", "values": [] },
|
|
285
|
+
{ "name": "lead", "values": [] },
|
|
198
286
|
{
|
|
199
|
-
"name": "
|
|
200
|
-
"description": "
|
|
287
|
+
"name": "align",
|
|
288
|
+
"description": "`center` or `start`.",
|
|
289
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
290
|
+
},
|
|
291
|
+
{
|
|
292
|
+
"name": "variant",
|
|
293
|
+
"description": "`panel`: on a tinted panel. `plain`: on the page.",
|
|
294
|
+
"values": [{ "name": "KtNewsletterVariant" }]
|
|
295
|
+
},
|
|
296
|
+
{
|
|
297
|
+
"name": "layout",
|
|
298
|
+
"description": "`stacked`: the field under the words. `inline`: beside them, where there is room.",
|
|
299
|
+
"values": [{ "name": "KtNewsletterLayout" }]
|
|
300
|
+
},
|
|
301
|
+
{
|
|
302
|
+
"name": "subscribed",
|
|
303
|
+
"description": "The address went through: the field gives way to the thanks.",
|
|
201
304
|
"values": []
|
|
202
305
|
},
|
|
203
306
|
{
|
|
204
|
-
"name": "
|
|
205
|
-
"description": "
|
|
307
|
+
"name": "heading-level",
|
|
308
|
+
"description": "The heading's level.",
|
|
206
309
|
"values": []
|
|
310
|
+
}
|
|
311
|
+
],
|
|
312
|
+
"references": []
|
|
313
|
+
},
|
|
314
|
+
{
|
|
315
|
+
"name": "kt-post-grid",
|
|
316
|
+
"description": "The latest posts, each a card that leads to it: a cover, a title, a line,\nand who wrote it when.\n\nThe posts are data: `grid.posts = [{ title, href, excerpt, date, image,\nauthor, tags }]`. `grid`, the default, sets them in `columns` where there is\nroom; `list` puts one under another, the cover beside the words.\n---\n\n\n### **Slots:**\n - **more** - Under the posts: a link to every one.\n\n### **CSS Parts:**\n - **base** - The section.\n- **post** - One post.",
|
|
317
|
+
"attributes": [
|
|
318
|
+
{ "name": "heading", "values": [] },
|
|
319
|
+
{ "name": "lead", "values": [] },
|
|
320
|
+
{
|
|
321
|
+
"name": "align",
|
|
322
|
+
"description": "`center` or `start`: the head and the more link.",
|
|
323
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
207
324
|
},
|
|
208
325
|
{
|
|
209
|
-
"name": "
|
|
210
|
-
"description": "
|
|
326
|
+
"name": "columns",
|
|
327
|
+
"description": "Posts per row, where there is room: 2 or 3.",
|
|
328
|
+
"values": [{ "name": "2" }, { "name": "3" }]
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
"name": "layout",
|
|
332
|
+
"description": "`grid`: in columns. `list`: one under another, the cover beside the words.",
|
|
333
|
+
"values": [{ "name": "KtPostGridLayout" }]
|
|
334
|
+
},
|
|
335
|
+
{
|
|
336
|
+
"name": "locale",
|
|
337
|
+
"description": "The locale dates are written in; the page's language when empty.",
|
|
211
338
|
"values": []
|
|
212
339
|
},
|
|
213
340
|
{
|
|
214
|
-
"name": "
|
|
215
|
-
"description": "
|
|
341
|
+
"name": "heading-level",
|
|
342
|
+
"description": "The heading's level; the posts' titles sit one under.",
|
|
216
343
|
"values": []
|
|
217
344
|
}
|
|
218
345
|
],
|
|
219
346
|
"references": []
|
|
220
347
|
},
|
|
221
348
|
{
|
|
222
|
-
"name": "kt-
|
|
223
|
-
"description": "
|
|
349
|
+
"name": "kt-pricing-table",
|
|
350
|
+
"description": "The plans, side by side: what each costs, what it includes, and the way in —\nwith a switch between monthly and yearly prices when the plans have both.\n\nThe plans are data: `table.plans = [{ id, name, price, features }]`. A price\nthat is a number is formatted in `currency`; a string is shown as written. A\nplan's button fires `kt-plan`, or is a link with an `href`.\n---\n\n\n### **Events:**\n - **kt-billing** - The billing period changed. `detail: { billing }`.\n- **kt-plan** - A plan's button was pressed. `detail: { id, billing }`.\n\n### **Slots:**\n - **note** - Under the plans: taxes, a link to compare every feature.\n\n### **CSS Parts:**\n - **base** - The section.\n- **plan** - One plan.",
|
|
224
351
|
"attributes": [
|
|
352
|
+
{ "name": "heading", "values": [] },
|
|
353
|
+
{ "name": "lead", "values": [] },
|
|
225
354
|
{
|
|
226
|
-
"name": "
|
|
227
|
-
"description": "
|
|
355
|
+
"name": "align",
|
|
356
|
+
"description": "`center` or `start`: the head and the switch.",
|
|
357
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
"name": "billing",
|
|
361
|
+
"description": "The prices shown: `monthly` or `yearly`.",
|
|
362
|
+
"values": [{ "name": "KtBilling" }]
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
"name": "currency",
|
|
366
|
+
"description": "The currency numeric prices are in: an ISO code, USD until given another.",
|
|
228
367
|
"values": []
|
|
229
368
|
},
|
|
230
369
|
{
|
|
231
|
-
"name": "
|
|
232
|
-
"description": "
|
|
233
|
-
"values": [
|
|
370
|
+
"name": "locale",
|
|
371
|
+
"description": "The locale prices are formatted in; the page's language when empty.",
|
|
372
|
+
"values": []
|
|
373
|
+
},
|
|
374
|
+
{
|
|
375
|
+
"name": "yearly-note",
|
|
376
|
+
"description": "Beside the switch: what paying yearly saves — \"2 months free\".",
|
|
377
|
+
"values": []
|
|
378
|
+
},
|
|
379
|
+
{
|
|
380
|
+
"name": "heading-level",
|
|
381
|
+
"description": "The heading's level; the plans' names sit one under.",
|
|
382
|
+
"values": []
|
|
234
383
|
}
|
|
235
384
|
],
|
|
236
385
|
"references": []
|
|
237
386
|
},
|
|
238
387
|
{
|
|
239
|
-
"name": "kt-
|
|
240
|
-
"description": "One
|
|
388
|
+
"name": "kt-settings-section",
|
|
389
|
+
"description": "One part of a settings page: what it is about, the fields that change it,\nand the button that saves them.\n\n`split`, the default, sets the heading and its description beside the\nfields once the section is wide enough — the settings page most products\nhave; `stacked` puts them over the fields. `danger` marks the section that\ndeletes things.\n---\n\n\n### **Slots:**\n - _default_ - The fields.\n- **actions** - In the footer, at the end: Save, Cancel.\n- **note** - In the footer, at the start: when it was last saved, what saving does.\n\n### **CSS Parts:**\n - **base** - The section.\n- **card** - The fields and the footer.\n- **footer** - The footer.",
|
|
241
390
|
"attributes": [
|
|
391
|
+
{ "name": "heading", "values": [] },
|
|
242
392
|
{
|
|
243
|
-
"name": "
|
|
244
|
-
"description": "
|
|
245
|
-
"values": [
|
|
393
|
+
"name": "description",
|
|
394
|
+
"description": "What the section changes, under its heading.",
|
|
395
|
+
"values": []
|
|
246
396
|
},
|
|
247
397
|
{
|
|
248
|
-
"name": "
|
|
249
|
-
"description": "
|
|
250
|
-
"values": [{ "name": "
|
|
398
|
+
"name": "layout",
|
|
399
|
+
"description": "`split`: the heading beside the fields, where there is room. `stacked`: over them.",
|
|
400
|
+
"values": [{ "name": "KtSettingsSectionLayout" }]
|
|
251
401
|
},
|
|
252
|
-
{ "name": "disabled", "values": [] },
|
|
253
402
|
{
|
|
254
|
-
"name": "
|
|
255
|
-
"description": "
|
|
403
|
+
"name": "danger",
|
|
404
|
+
"description": "The section that deletes things: its heading and card turn red.",
|
|
256
405
|
"values": []
|
|
257
406
|
},
|
|
258
407
|
{
|
|
259
|
-
"name": "
|
|
260
|
-
"description": "
|
|
408
|
+
"name": "heading-level",
|
|
409
|
+
"description": "The heading's level.",
|
|
261
410
|
"values": []
|
|
411
|
+
}
|
|
412
|
+
],
|
|
413
|
+
"references": []
|
|
414
|
+
},
|
|
415
|
+
{
|
|
416
|
+
"name": "kt-testimonials",
|
|
417
|
+
"description": "What the people who use it say: a quote, and who said it.\n\nThe quotes are data: `wall.testimonials = [{ quote, name, role, avatar }]`.\n`grid`, the default, sets them in columns that pack quotes of any length;\n`single` gives each the width of the page, in larger type — for one quote\nthat carries the section.\n---\n\n\n### **CSS Parts:**\n - **base** - The section.\n- **testimonial** - One quote and who said it.",
|
|
418
|
+
"attributes": [
|
|
419
|
+
{ "name": "heading", "values": [] },
|
|
420
|
+
{ "name": "lead", "values": [] },
|
|
421
|
+
{
|
|
422
|
+
"name": "align",
|
|
423
|
+
"description": "`center` or `start`.",
|
|
424
|
+
"values": [{ "name": "center" }, { "name": "start" }]
|
|
262
425
|
},
|
|
263
426
|
{
|
|
264
|
-
"name": "
|
|
265
|
-
"description": "
|
|
266
|
-
"values": [{ "name": "
|
|
427
|
+
"name": "layout",
|
|
428
|
+
"description": "`grid`: in packed columns. `single`: each the page's width, large.",
|
|
429
|
+
"values": [{ "name": "KtTestimonialsLayout" }]
|
|
267
430
|
},
|
|
268
|
-
{
|
|
431
|
+
{
|
|
432
|
+
"name": "heading-level",
|
|
433
|
+
"description": "The heading's level.",
|
|
434
|
+
"values": []
|
|
435
|
+
}
|
|
269
436
|
],
|
|
270
437
|
"references": []
|
|
271
438
|
},
|
|
@@ -330,35 +497,104 @@
|
|
|
330
497
|
"references": []
|
|
331
498
|
},
|
|
332
499
|
{
|
|
333
|
-
"name": "kt-
|
|
334
|
-
"description": "
|
|
500
|
+
"name": "kt-chat-message",
|
|
501
|
+
"description": "One message of a conversation with an assistant.\n\nAn assistant's reply sits beside its avatar, as text on the page — a reply\nis often long, and a bubble around paragraphs, lists and code only crowds\nthem. A person's message sits in a bubble on the other side, short and\nclearly theirs.\n\n`thinking` shows three dots, and says so in words, until the reply has a\nword of its own; `streaming` marks the end of a reply still arriving. Both\nset `aria-busy`. The content is the default slot: render your markdown into\nit, as you would anywhere.\n---\n\n\n### **Slots:**\n - _default_ - The message.\n- **avatar** - Replaces the avatar drawn from `name` and `avatar`.\n- **actions** - Under the message: copy, retry, a rating.\n\n### **CSS Parts:**\n - **base** - The `<article>`.\n- **bubble** - A person's bubble.\n- **content** - The message.\n- **meta** - The author and the time.",
|
|
335
502
|
"attributes": [
|
|
336
|
-
{ "name": "label", "values": [] },
|
|
337
503
|
{
|
|
338
|
-
"name": "
|
|
339
|
-
"description": "
|
|
504
|
+
"name": "from",
|
|
505
|
+
"description": "Who wrote it: an `assistant`, beside its avatar, or the `user`, in a bubble.",
|
|
506
|
+
"values": [{ "name": "KtChatMessageFrom" }]
|
|
507
|
+
},
|
|
508
|
+
{
|
|
509
|
+
"name": "name",
|
|
510
|
+
"description": "The author: names the message, and draws the avatar's initials.",
|
|
340
511
|
"values": []
|
|
341
512
|
},
|
|
342
513
|
{
|
|
343
|
-
"name": "
|
|
344
|
-
"description": "
|
|
514
|
+
"name": "avatar",
|
|
515
|
+
"description": "A picture for the avatar.",
|
|
345
516
|
"values": []
|
|
346
517
|
},
|
|
347
518
|
{
|
|
348
|
-
"name": "
|
|
349
|
-
"description": "
|
|
519
|
+
"name": "time",
|
|
520
|
+
"description": "When it was sent, as shown.",
|
|
350
521
|
"values": []
|
|
351
522
|
},
|
|
352
523
|
{
|
|
353
|
-
"name": "
|
|
354
|
-
"description": "The
|
|
524
|
+
"name": "datetime",
|
|
525
|
+
"description": "The same moment, machine-readable, for the `<time>`.",
|
|
355
526
|
"values": []
|
|
356
527
|
},
|
|
357
528
|
{
|
|
358
|
-
"name": "
|
|
359
|
-
"description": "
|
|
529
|
+
"name": "thinking",
|
|
530
|
+
"description": "Thinking: dots instead of the content, until the reply has a word.",
|
|
360
531
|
"values": []
|
|
361
|
-
}
|
|
532
|
+
},
|
|
533
|
+
{
|
|
534
|
+
"name": "streaming",
|
|
535
|
+
"description": "Still arriving: a caret after the last word.",
|
|
536
|
+
"values": []
|
|
537
|
+
}
|
|
538
|
+
],
|
|
539
|
+
"references": []
|
|
540
|
+
},
|
|
541
|
+
{
|
|
542
|
+
"name": "kt-description-list",
|
|
543
|
+
"description": "Terms and their details — an invoice's number, customer and amount; a\nperson's email and role — the body of a detail page.\n\nThe items are data: `list.items = [{ term, detail }]`, drawn as a real\n`<dl>`. `horizontal`, the default, sets each term beside its detail, and\nstacks them once the list itself is too narrow for that; `stacked` puts\neach term over its detail, in `columns` when there is room.\n---\n\n\n### **CSS Properties:**\n - **--kt-description-term-width** - The terms' column, horizontal. 180px. _(default: undefined)_\n\n### **CSS Parts:**\n - **list** - The `<dl>`.\n- **item** - One term and its detail.\n- **term** - The `<dt>`.\n- **detail** - The `<dd>`.",
|
|
544
|
+
"attributes": [
|
|
545
|
+
{
|
|
546
|
+
"name": "layout",
|
|
547
|
+
"description": "`horizontal`: each term beside its detail. `stacked`: over it.",
|
|
548
|
+
"values": [{ "name": "KtDescriptionListLayout" }]
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"name": "columns",
|
|
552
|
+
"description": "Stacked: how many columns, 1 to 4, where there is room.",
|
|
553
|
+
"values": []
|
|
554
|
+
},
|
|
555
|
+
{
|
|
556
|
+
"name": "bordered",
|
|
557
|
+
"description": "A rule under each item.",
|
|
558
|
+
"values": []
|
|
559
|
+
},
|
|
560
|
+
{
|
|
561
|
+
"name": "label",
|
|
562
|
+
"description": "Accessible name for the list.",
|
|
563
|
+
"values": []
|
|
564
|
+
}
|
|
565
|
+
],
|
|
566
|
+
"references": []
|
|
567
|
+
},
|
|
568
|
+
{
|
|
569
|
+
"name": "kt-meter",
|
|
570
|
+
"description": "How a fixed total is spent: storage by file type, a budget by category, seats\nby role.\n\nAgainst `<kt-progress-bar>`: a progress bar answers \"how far along\", so it\nfills toward completion and turns green when it gets there. A meter answers\n\"how is it divided\", so it is full from the start and reaching the end is\nbad news, not good. Different question, different component — and the bar\nthat shows one and means the other is a common way to mislead a reader.\n---\n\n\n### **CSS Parts:**\n - **base** - The container.\n- **track** - The bar.\n- **legend** - The legend list.",
|
|
571
|
+
"attributes": [
|
|
572
|
+
{ "name": "label", "values": [] },
|
|
573
|
+
{
|
|
574
|
+
"name": "used",
|
|
575
|
+
"description": "Free text on the left of the caption row — \"25.8 GB used\".",
|
|
576
|
+
"values": []
|
|
577
|
+
},
|
|
578
|
+
{
|
|
579
|
+
"name": "total",
|
|
580
|
+
"description": "Free text on the right of the caption row — \"of 983 GB\".",
|
|
581
|
+
"values": []
|
|
582
|
+
},
|
|
583
|
+
{
|
|
584
|
+
"name": "value",
|
|
585
|
+
"description": "A single filled proportion, as a percentage. Ignored when `segments` is set.",
|
|
586
|
+
"values": []
|
|
587
|
+
},
|
|
588
|
+
{
|
|
589
|
+
"name": "max",
|
|
590
|
+
"description": "The total the segments are measured against. Defaults to their sum.",
|
|
591
|
+
"values": []
|
|
592
|
+
},
|
|
593
|
+
{
|
|
594
|
+
"name": "show-legend",
|
|
595
|
+
"description": "Renders the segment list under the bar.",
|
|
596
|
+
"values": []
|
|
597
|
+
}
|
|
362
598
|
],
|
|
363
599
|
"references": []
|
|
364
600
|
},
|
|
@@ -398,114 +634,451 @@
|
|
|
398
634
|
"values": []
|
|
399
635
|
},
|
|
400
636
|
{
|
|
401
|
-
"name": "icon",
|
|
402
|
-
"description": "Lucide icon name, kebab-case.",
|
|
637
|
+
"name": "icon",
|
|
638
|
+
"description": "Lucide icon name, kebab-case.",
|
|
639
|
+
"values": []
|
|
640
|
+
},
|
|
641
|
+
{
|
|
642
|
+
"name": "caption",
|
|
643
|
+
"description": "Small print under the figure — \"vs last month\".",
|
|
644
|
+
"values": []
|
|
645
|
+
},
|
|
646
|
+
{
|
|
647
|
+
"name": "size",
|
|
648
|
+
"values": [{ "name": "small" }, { "name": "medium" }]
|
|
649
|
+
},
|
|
650
|
+
{ "name": "loading", "values": [] }
|
|
651
|
+
],
|
|
652
|
+
"references": []
|
|
653
|
+
},
|
|
654
|
+
{
|
|
655
|
+
"name": "kt-table",
|
|
656
|
+
"description": "A data table: tri-state sorting, single or multiple selection, paging.\n---\n\n\n### **Events:**\n - **kt-sort-change** - Sorting changed. `detail: { key, direction }`.\n- **kt-selection-change** - Selection changed. `detail: { selected, rows }`.\n- **kt-row-click** - A row was clicked. `detail: { row, index }`.\n- **kt-page-change** - The page changed. `detail: { page }`.\n\n### **CSS Parts:**\n - **table** - The `<table>`.\n- **header-cell** - A `<th>`.\n- **row** - A `<tr>`.\n- **cell** - A `<td>`.",
|
|
657
|
+
"attributes": [
|
|
658
|
+
{
|
|
659
|
+
"name": "page",
|
|
660
|
+
"description": "The page on screen, from 1. Set it to open on another page.",
|
|
661
|
+
"values": []
|
|
662
|
+
},
|
|
663
|
+
{
|
|
664
|
+
"name": "manual",
|
|
665
|
+
"description": "For data sorted and paged on a server: `data` is the current page, shown\nas given. Headers and the pager still update the state and fire their\nevents, and the application loads what they ask for.",
|
|
666
|
+
"values": []
|
|
667
|
+
},
|
|
668
|
+
{
|
|
669
|
+
"name": "virtual",
|
|
670
|
+
"description": "Renders only the rows in view, for thousands of rows without paging. The\ntable scrolls inside its own box: give it a height (`kt-table { height:\n480px }`). Every row must be the same height — the first one rendered is\nmeasured. A page size takes precedence.",
|
|
671
|
+
"values": []
|
|
672
|
+
},
|
|
673
|
+
{
|
|
674
|
+
"name": "total-rows",
|
|
675
|
+
"description": "In manual mode, how many rows the server holds — what the pager counts.",
|
|
676
|
+
"values": []
|
|
677
|
+
},
|
|
678
|
+
{ "name": "selectable", "values": [] },
|
|
679
|
+
{
|
|
680
|
+
"name": "selection-mode",
|
|
681
|
+
"values": [{ "name": "single" }, { "name": "multiple" }]
|
|
682
|
+
},
|
|
683
|
+
{
|
|
684
|
+
"name": "page-size",
|
|
685
|
+
"description": "Rows per page. Zero shows everything and hides the footer.",
|
|
686
|
+
"values": []
|
|
687
|
+
},
|
|
688
|
+
{ "name": "loading", "values": [] },
|
|
689
|
+
{ "name": "compact", "values": [] },
|
|
690
|
+
{ "name": "sort-key", "values": [] },
|
|
691
|
+
{ "name": "sort-direction", "values": [{ "name": "KtSortDirection" }] },
|
|
692
|
+
{ "name": "empty-text", "values": [] },
|
|
693
|
+
{ "name": "loading-text", "values": [] },
|
|
694
|
+
{
|
|
695
|
+
"name": "label",
|
|
696
|
+
"description": "Accessible name for the table.",
|
|
697
|
+
"values": []
|
|
698
|
+
},
|
|
699
|
+
{
|
|
700
|
+
"name": "locale",
|
|
701
|
+
"description": "BCP 47 locale text is sorted in. Empty means the page's `<html lang>`,\nthen the browser's language.",
|
|
702
|
+
"values": []
|
|
703
|
+
}
|
|
704
|
+
],
|
|
705
|
+
"references": []
|
|
706
|
+
},
|
|
707
|
+
{
|
|
708
|
+
"name": "kt-timeline",
|
|
709
|
+
"description": "An ordered run of events on a rail.\n\nThe same shape keeps reappearing — an activity feed, an audit log, a\nchangelog, the stages of a delivery, a résumé — and every time it gets\nrebuilt out of a list, a pseudo-element line and a hand-placed dot. The\nfiddly part is the rail: it must start at the first dot and stop at the\nlast, which a border on the list cannot do. Here each item draws its own\nsegment and the last one is told to stop.\n\n`<kt-timeline>` is the semantic list; `<kt-timeline-item>` is one event.\n---\n\n\n### **Slots:**\n - _default_ - The `<kt-timeline-item>` children.\n\n### **CSS Parts:**\n - **base** - The list.",
|
|
710
|
+
"attributes": [
|
|
711
|
+
{
|
|
712
|
+
"name": "compact",
|
|
713
|
+
"description": "Tighter rhythm, for a feed in a side panel.",
|
|
714
|
+
"values": []
|
|
715
|
+
}
|
|
716
|
+
],
|
|
717
|
+
"references": []
|
|
718
|
+
},
|
|
719
|
+
{
|
|
720
|
+
"name": "kt-timeline-item",
|
|
721
|
+
"description": "One event on a `<kt-timeline>`.\n---\n\n\n### **Slots:**\n - _default_ - The body of the event.\n- **actions** - Trailing controls, aligned with the heading.\n\n### **CSS Parts:**\n - **base** - The row.\n- **marker** - The dot or icon.",
|
|
722
|
+
"attributes": [
|
|
723
|
+
{ "name": "heading", "values": [] },
|
|
724
|
+
{
|
|
725
|
+
"name": "time",
|
|
726
|
+
"description": "Shown right-aligned on the heading row. Any string — \"09:24\", \"2 days ago\".",
|
|
727
|
+
"values": []
|
|
728
|
+
},
|
|
729
|
+
{
|
|
730
|
+
"name": "icon",
|
|
731
|
+
"description": "Lucide icon name. Without one the marker is a plain dot.",
|
|
732
|
+
"values": []
|
|
733
|
+
},
|
|
734
|
+
{ "name": "variant", "values": [{ "name": "KtTimelineVariant" }] },
|
|
735
|
+
{
|
|
736
|
+
"name": "last",
|
|
737
|
+
"description": "Set by the parent `<kt-timeline>`: drops the trailing rail segment.",
|
|
738
|
+
"values": []
|
|
739
|
+
},
|
|
740
|
+
{
|
|
741
|
+
"name": "compact",
|
|
742
|
+
"description": "Set by the parent `<kt-timeline>`.",
|
|
743
|
+
"values": []
|
|
744
|
+
}
|
|
745
|
+
],
|
|
746
|
+
"references": []
|
|
747
|
+
},
|
|
748
|
+
{
|
|
749
|
+
"name": "kt-tree",
|
|
750
|
+
"description": "Things inside things — folders and files, an organisation's teams, nested\npages — as a tree to open and walk.\n\nThe nodes are data: `tree.items = [{ id, label, icon, children }]`;\n`expanded` lists the open ones and `selected` the chosen one. A click on a\nnode selects it, a click on its chevron opens or closes it.\n\nThe keyboard is the WAI-ARIA tree view's: Up and Down move through the\nvisible nodes; Right opens a node, then moves to its first child; Left closes\nit, or moves to its parent; Home and End go to the first and last; Enter and\nSpace select. The tree is one tab stop.\n---\n\n\n### **Events:**\n - **kt-select** - A node was selected. `detail: { id, item }`.\n- **kt-toggle** - A node opened or closed. `detail: { id, expanded }`.\n\n### **Methods:**\n - **toggle(id: _string_, expanded): _void_** - Opens or closes a node, and says so.\n\n### **CSS Parts:**\n - **tree** - The tree.\n- **item** - One node's row.",
|
|
751
|
+
"attributes": [
|
|
752
|
+
{
|
|
753
|
+
"name": "selected",
|
|
754
|
+
"description": "The id of the selected node.",
|
|
755
|
+
"values": []
|
|
756
|
+
},
|
|
757
|
+
{
|
|
758
|
+
"name": "label",
|
|
759
|
+
"description": "Accessible name for the tree.",
|
|
760
|
+
"values": []
|
|
761
|
+
}
|
|
762
|
+
],
|
|
763
|
+
"references": []
|
|
764
|
+
},
|
|
765
|
+
{
|
|
766
|
+
"name": "kt-avatar",
|
|
767
|
+
"description": "A person or an organisation, as a picture or as their initials.\n\nThe fallback is not decoration: most rows in most products have no photo, so\nthe initials path is the one that renders. It picks a colour from the name,\nwhich means the same person is the same colour on every screen and the eye\ncan use it.\n---\n\n\n### **CSS Parts:**\n - **base** - The avatar circle.\n- **image** - The `<img>`, when `src` is set and loads.",
|
|
768
|
+
"attributes": [
|
|
769
|
+
{
|
|
770
|
+
"name": "name",
|
|
771
|
+
"description": "The person's name. Drives the initials, the colour and the label.",
|
|
772
|
+
"values": []
|
|
773
|
+
},
|
|
774
|
+
{
|
|
775
|
+
"name": "src",
|
|
776
|
+
"description": "Photo. Falls back to initials if it is missing or fails to load.",
|
|
777
|
+
"values": []
|
|
778
|
+
},
|
|
779
|
+
{ "name": "size", "values": [{ "name": "KtAvatarSize" }] },
|
|
780
|
+
{
|
|
781
|
+
"name": "square",
|
|
782
|
+
"description": "Rounds to the card radius instead of a circle — for organisations.",
|
|
783
|
+
"values": []
|
|
784
|
+
},
|
|
785
|
+
{
|
|
786
|
+
"name": "status",
|
|
787
|
+
"description": "Presence dot. Omit for none.",
|
|
788
|
+
"values": [{ "name": "KtAvatarStatus" }]
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
"name": "color",
|
|
792
|
+
"description": "Overrides the colour picked from the name.",
|
|
793
|
+
"values": []
|
|
794
|
+
}
|
|
795
|
+
],
|
|
796
|
+
"references": []
|
|
797
|
+
},
|
|
798
|
+
{
|
|
799
|
+
"name": "kt-avatar-group",
|
|
800
|
+
"description": "The people on something — a project's members, a document's editors — as\navatars overlapping in a row, the rest summed up as \"+N\".\n---\n\n\n### **CSS Parts:**\n - **list** - The `<ul>`.\n- **more** - The \"+N\" at the end.",
|
|
801
|
+
"attributes": [
|
|
802
|
+
{
|
|
803
|
+
"name": "max",
|
|
804
|
+
"description": "How many avatars to show before summing the rest up.",
|
|
805
|
+
"values": []
|
|
806
|
+
},
|
|
807
|
+
{ "name": "size", "values": [{ "name": "KtAvatarSize" }] },
|
|
808
|
+
{
|
|
809
|
+
"name": "label",
|
|
810
|
+
"description": "Accessible name for the group: \"Project members\".",
|
|
811
|
+
"values": []
|
|
812
|
+
}
|
|
813
|
+
],
|
|
814
|
+
"references": []
|
|
815
|
+
},
|
|
816
|
+
{
|
|
817
|
+
"name": "kt-badge",
|
|
818
|
+
"description": "A compact label: a pill `tag`, a monospaced `code` token, a `category`\ntinted with a colour of your choosing, or a `count`.\n\nTwo independent axes, because they answer different questions. `variant` is\nthe **shape** — what kind of thing this is. `tone` is the **colour** — what\nit means. A tag can be neutral or dangerous; so can a count. Folding them\ninto one list would give you nine variants and no way to say \"a tag, but\nthis one is a warning\".\n\n`count` is the exception that carries no border, because a number pinned to\na nav item is not a label with an outline — it is a mark on the thing it\ncounts.\n---\n\n\n### **Events:**\n - **kt-badge-click** - A `clickable` badge was activated. Cancelable.\n- **kt-remove** - The remove button was pressed. Cancelable: cancel it and remove the badge yourself once the server agrees.\n\n### **Slots:**\n - _default_ - The text. Falls back to the `label` attribute.\n\n### **CSS Properties:**\n - **--kt-badge-color** - Category hue. The fill is this colour at 20%. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The container.\n- **remove** - The remove button, when `removable`.",
|
|
819
|
+
"attributes": [
|
|
820
|
+
{
|
|
821
|
+
"name": "variant",
|
|
822
|
+
"description": "The shape: what kind of thing this is.",
|
|
823
|
+
"values": [{ "name": "KtBadgeVariant" }]
|
|
824
|
+
},
|
|
825
|
+
{
|
|
826
|
+
"name": "tone",
|
|
827
|
+
"description": "The colour: what it means. Independent of `variant`.",
|
|
828
|
+
"values": [{ "name": "KtBadgeTone" }]
|
|
829
|
+
},
|
|
830
|
+
{ "name": "size", "values": [{ "name": "KtBadgeSize" }] },
|
|
831
|
+
{
|
|
832
|
+
"name": "label",
|
|
833
|
+
"description": "Badge text. The default slot wins when both are present.",
|
|
834
|
+
"values": []
|
|
835
|
+
},
|
|
836
|
+
{
|
|
837
|
+
"name": "color",
|
|
838
|
+
"description": "Category hue: any CSS colour. The fill is this colour at 20%.",
|
|
839
|
+
"values": []
|
|
840
|
+
},
|
|
841
|
+
{
|
|
842
|
+
"name": "icon",
|
|
843
|
+
"description": "Lucide icon name, before the text.",
|
|
844
|
+
"values": []
|
|
845
|
+
},
|
|
846
|
+
{ "name": "clickable", "values": [] },
|
|
847
|
+
{
|
|
848
|
+
"name": "removable",
|
|
849
|
+
"description": "Adds a remove button. Fires a cancelable `kt-remove`.",
|
|
850
|
+
"values": []
|
|
851
|
+
},
|
|
852
|
+
{
|
|
853
|
+
"name": "max",
|
|
854
|
+
"description": "Caps a numeric label: `max=\"99\"` shows `99+`.\nIgnored when the content is not a number.",
|
|
855
|
+
"values": []
|
|
856
|
+
},
|
|
857
|
+
{
|
|
858
|
+
"name": "error",
|
|
859
|
+
"description": "Shorthand for `tone=\"danger\"`, kept from the field components.",
|
|
860
|
+
"values": []
|
|
861
|
+
}
|
|
862
|
+
],
|
|
863
|
+
"references": []
|
|
864
|
+
},
|
|
865
|
+
{
|
|
866
|
+
"name": "kt-button",
|
|
867
|
+
"description": "The Kanto action button.\n\nTen variants; `primary` for the one action a screen is about, `secondary`\n(a soft indigo tint) for everything supporting it. The semantic variants —\n`danger`, `warning`, `info`, `success` — are tinted fills with coloured\ntext; `delete` is the only solid red, reserved for irreversible actions.\n\nSetting `icon` with no slotted text produces a square icon-only button,\nwhich then requires a `label`.\n\n`run(action)` runs an async action and shows how it went: busy while it\nruns, then a tick — and `done-label`, if given — or, if it throws, a shake,\nan alert and `failed-label`; back to rest two seconds later. Some icons\nleave in their own way: a `send` plane flies off to the top right.\n---\n\n\n### **Methods:**\n - **run(action: _() => Promise<T>_): _Promise<T>_** - Runs `action` and shows how it went. A second call while it runs gets the\nsame promise rather than a second run. Resolves with what the action\nresolved with; rejects with what it threw, after showing it failed.\n- **focus(options: _FocusOptions_): _void_** - Moves focus to the button.\n\n### **Slots:**\n - _default_ - The button label.\n\n### **CSS Parts:**\n - **button** - The native `<button>`.\n- **icon** - The icon, when `icon` is set.",
|
|
868
|
+
"attributes": [
|
|
869
|
+
{
|
|
870
|
+
"name": "variant",
|
|
871
|
+
"description": "Visual variant.",
|
|
872
|
+
"values": [{ "name": "KtButtonVariant" }]
|
|
873
|
+
},
|
|
874
|
+
{
|
|
875
|
+
"name": "size",
|
|
876
|
+
"description": "Height: 32 / 40 / 48px at the desktop scale.",
|
|
877
|
+
"values": [{ "name": "KtButtonSize" }]
|
|
878
|
+
},
|
|
879
|
+
{ "name": "disabled", "values": [] },
|
|
880
|
+
{
|
|
881
|
+
"name": "type",
|
|
882
|
+
"description": "Native button behaviour. `submit` and `reset` act on the enclosing form.",
|
|
883
|
+
"values": [{ "name": "KtButtonType" }]
|
|
884
|
+
},
|
|
885
|
+
{
|
|
886
|
+
"name": "icon",
|
|
887
|
+
"description": "Lucide icon name, kebab-case.",
|
|
888
|
+
"values": []
|
|
889
|
+
},
|
|
890
|
+
{
|
|
891
|
+
"name": "icon-position",
|
|
892
|
+
"description": "Which side of the label the icon sits on.",
|
|
893
|
+
"values": [{ "name": "left" }, { "name": "right" }]
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
"name": "label",
|
|
897
|
+
"description": "Accessible name. Required for an icon-only button.",
|
|
898
|
+
"values": []
|
|
899
|
+
},
|
|
900
|
+
{
|
|
901
|
+
"name": "full-width",
|
|
902
|
+
"description": "Stretches the button to the width of its container.",
|
|
903
|
+
"values": []
|
|
904
|
+
},
|
|
905
|
+
{
|
|
906
|
+
"name": "name",
|
|
907
|
+
"description": "Submitted with the form, as on a native button.",
|
|
908
|
+
"values": []
|
|
909
|
+
},
|
|
910
|
+
{ "name": "value", "values": [] },
|
|
911
|
+
{
|
|
912
|
+
"name": "done-label",
|
|
913
|
+
"description": "Shown in place of the label once `run()` succeeds. Empty keeps the label.",
|
|
914
|
+
"values": []
|
|
915
|
+
},
|
|
916
|
+
{
|
|
917
|
+
"name": "failed-label",
|
|
918
|
+
"description": "Shown in place of the label when `run()` fails. Empty keeps the label.",
|
|
919
|
+
"values": []
|
|
920
|
+
}
|
|
921
|
+
],
|
|
922
|
+
"references": []
|
|
923
|
+
},
|
|
924
|
+
{
|
|
925
|
+
"name": "kt-card",
|
|
926
|
+
"description": "A surface for a block of related content: 12px radius, a 1px border, 24px of\npadding and a 20px internal gap.\n\nSet `clickable` to turn the whole card into a control. Unlike the div-with-a\n-click-handler this replaces, a clickable card is reachable by keyboard,\nannounces itself as a button, and responds to Enter and Space.\n---\n\n\n### **Events:**\n - **kt-card-click** - The card was activated, by pointer or keyboard. Only fired when `clickable` is set.\n\n### **Slots:**\n - _default_ - The card body.\n- **header** - Above the body.\n- **footer** - Below the body.\n- **media** - Replaces the `image` attribute for anything that is not a plain `<img>` — a chart, a map, a video.\n\n### **CSS Parts:**\n - **base** - The card container.\n- **media** - The image or media well.\n- **body** - The header/content/footer column.",
|
|
927
|
+
"attributes": [
|
|
928
|
+
{
|
|
929
|
+
"name": "clickable",
|
|
930
|
+
"description": "Makes the card a keyboard-reachable control.",
|
|
931
|
+
"values": []
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
"name": "selected",
|
|
935
|
+
"description": "Marks the card as chosen — one of a set of filters, a picked plan.\n\nPairs with `clickable`: a card the user cannot toggle has no business\nlooking toggled.",
|
|
936
|
+
"values": []
|
|
937
|
+
},
|
|
938
|
+
{
|
|
939
|
+
"name": "image",
|
|
940
|
+
"description": "Convenience image. For anything richer, use the `media` slot.",
|
|
941
|
+
"values": []
|
|
942
|
+
},
|
|
943
|
+
{
|
|
944
|
+
"name": "image-alt",
|
|
945
|
+
"description": "Alternative text for `image`. Empty means decorative.",
|
|
946
|
+
"values": []
|
|
947
|
+
},
|
|
948
|
+
{
|
|
949
|
+
"name": "image-position",
|
|
950
|
+
"values": [{ "name": "KtCardImagePosition" }]
|
|
951
|
+
},
|
|
952
|
+
{
|
|
953
|
+
"name": "image-size",
|
|
954
|
+
"description": "Width (left/right) or height (top/bottom) of the media well.",
|
|
955
|
+
"values": []
|
|
956
|
+
}
|
|
957
|
+
],
|
|
958
|
+
"references": []
|
|
959
|
+
},
|
|
960
|
+
{
|
|
961
|
+
"name": "kt-code",
|
|
962
|
+
"description": "A block of code on a recessed surface, with its language and a copy button.\n\nThe element owns the chrome — surface, label, scrolling, copy — and nothing\nelse. **Highlighting is the caller's**: slot in whatever markup a highlighter\nproduced, or plain text for none. A design system that bundled a syntax\nhighlighter would be picking your bundle size and your language set for you.\n\n```html\n<kt-code language=\"js\">const total = items.length;</kt-code>\n\n<kt-code language=\"ts\" copy>\n <span class=\"hljs-keyword\">const</span> total = items.length;\n</kt-code>\n```\n\nFor a token or an identifier inside a sentence, reach for\n`<kt-badge variant=\"code\">` instead — this is for blocks.\n---\n\n\n### **Events:**\n - **kt-copy** - The copy button was pressed. `detail: { code }`.\n\n### **Slots:**\n - _default_ - The code. Plain text, or a highlighter's markup.\n\n### **CSS Parts:**\n - **base** - The container.\n- **header** - The language row.\n- **pre** - The scrolling `<pre>`.",
|
|
963
|
+
"attributes": [
|
|
964
|
+
{
|
|
965
|
+
"name": "language",
|
|
966
|
+
"description": "Language label, shown uppercase. Purely informative.",
|
|
403
967
|
"values": []
|
|
404
968
|
},
|
|
405
969
|
{
|
|
406
|
-
"name": "
|
|
407
|
-
"description": "
|
|
970
|
+
"name": "copy",
|
|
971
|
+
"description": "Shows the copy button.",
|
|
408
972
|
"values": []
|
|
409
973
|
},
|
|
410
974
|
{
|
|
411
|
-
"name": "
|
|
412
|
-
"
|
|
413
|
-
|
|
414
|
-
|
|
975
|
+
"name": "label",
|
|
976
|
+
"description": "Accessible name for the block, when the language alone is not enough.",
|
|
977
|
+
"values": []
|
|
978
|
+
}
|
|
415
979
|
],
|
|
416
980
|
"references": []
|
|
417
981
|
},
|
|
418
982
|
{
|
|
419
|
-
"name": "kt-
|
|
420
|
-
"description": "
|
|
983
|
+
"name": "kt-copy-button",
|
|
984
|
+
"description": "Copies a value to the clipboard and says it did: an API key, an install\ncommand, a share link.\n\nBuilt on `kt-button`'s `run()`: on success the tick comes in and the label\nreads \"Copied\" for two seconds — announced, as the button announces it — and\nif the browser refuses the clipboard, the button shakes and nothing is said\nto have been copied.\n---\n\n\n### **Events:**\n - **kt-copy** - The value was copied. `detail: { value }`.\n\n### **Methods:**\n - **copy(): _Promise<void>_** - Copies `value`, as a click does. Resolves once copied; rejects if the browser refused.\n\n### **CSS Parts:**\n - **button** - The `kt-button`.",
|
|
421
985
|
"attributes": [
|
|
986
|
+
{ "name": "value", "description": "What is copied.", "values": [] },
|
|
422
987
|
{
|
|
423
|
-
"name": "
|
|
424
|
-
"description": "The
|
|
988
|
+
"name": "label",
|
|
989
|
+
"description": "The button's words. Defaults to the translated \"Copy\".",
|
|
425
990
|
"values": []
|
|
426
991
|
},
|
|
427
992
|
{
|
|
428
|
-
"name": "
|
|
429
|
-
"description": "
|
|
993
|
+
"name": "copied-label",
|
|
994
|
+
"description": "Said once it has copied. Defaults to the translated \"Copied\".",
|
|
430
995
|
"values": []
|
|
431
996
|
},
|
|
432
997
|
{
|
|
433
|
-
"name": "
|
|
434
|
-
"description": "
|
|
998
|
+
"name": "icon-only",
|
|
999
|
+
"description": "The icon alone, named by `label`.",
|
|
435
1000
|
"values": []
|
|
436
1001
|
},
|
|
1002
|
+
{ "name": "variant", "values": [{ "name": "KtButtonVariant" }] },
|
|
1003
|
+
{ "name": "size", "values": [{ "name": "KtButtonSize" }] }
|
|
1004
|
+
],
|
|
1005
|
+
"references": []
|
|
1006
|
+
},
|
|
1007
|
+
{
|
|
1008
|
+
"name": "kt-icon",
|
|
1009
|
+
"description": "A Lucide icon, resolved from the registry by name.\n\nThe icon inherits `currentColor`, so it is coloured by setting `color` on\nthe element or on any ancestor — there is no colour attribute to keep in\nsync with the surrounding text.\n\nUnknown names render nothing but still occupy their box, so a typo shifts no\nlayout while you find it in the console.\n---\n\n\n### **CSS Parts:**\n - **svg** - The `<svg>` root.",
|
|
1010
|
+
"attributes": [
|
|
437
1011
|
{
|
|
438
|
-
"name": "
|
|
439
|
-
"description": "
|
|
1012
|
+
"name": "name",
|
|
1013
|
+
"description": "Icon name, kebab-case: `chevron-down`, `circle-alert`.",
|
|
440
1014
|
"values": []
|
|
441
1015
|
},
|
|
442
|
-
{ "name": "selectable", "values": [] },
|
|
443
|
-
{
|
|
444
|
-
"name": "selection-mode",
|
|
445
|
-
"values": [{ "name": "single" }, { "name": "multiple" }]
|
|
446
|
-
},
|
|
447
1016
|
{
|
|
448
|
-
"name": "
|
|
449
|
-
"description": "
|
|
1017
|
+
"name": "size",
|
|
1018
|
+
"description": "Width and height in pixels.",
|
|
450
1019
|
"values": []
|
|
451
1020
|
},
|
|
452
|
-
{ "name": "loading", "values": [] },
|
|
453
|
-
{ "name": "compact", "values": [] },
|
|
454
|
-
{ "name": "sort-key", "values": [] },
|
|
455
|
-
{ "name": "sort-direction", "values": [{ "name": "KtSortDirection" }] },
|
|
456
|
-
{ "name": "empty-text", "values": [] },
|
|
457
|
-
{ "name": "loading-text", "values": [] },
|
|
458
1021
|
{
|
|
459
|
-
"name": "
|
|
460
|
-
"description": "
|
|
1022
|
+
"name": "stroke-width",
|
|
1023
|
+
"description": "Stroke width passed to the SVG.",
|
|
461
1024
|
"values": []
|
|
462
1025
|
},
|
|
463
1026
|
{
|
|
464
|
-
"name": "
|
|
465
|
-
"description": "
|
|
1027
|
+
"name": "label",
|
|
1028
|
+
"description": "Accessible name. Set it when the icon carries meaning on its own; leave it\noff — the default — when adjacent text already says what this is, and the\nicon is hidden from assistive technology.",
|
|
466
1029
|
"values": []
|
|
467
1030
|
}
|
|
468
1031
|
],
|
|
469
1032
|
"references": []
|
|
470
1033
|
},
|
|
471
1034
|
{
|
|
472
|
-
"name": "kt-
|
|
473
|
-
"description": "
|
|
1035
|
+
"name": "kt-kbd",
|
|
1036
|
+
"description": "A keyboard shortcut.\n\nRenders per platform: `⌘ K` on a Mac, `Ctrl K` elsewhere. A shortcut printed\nwith the wrong modifier is worse than none — the reader tries it, it does not\nwork, and they stop trusting the hints.\n---\n\n\n### **Slots:**\n - _default_ - The key, when `keys` is not used.\n\n### **CSS Parts:**\n - **base** - The wrapper.\n- **key** - One key.",
|
|
474
1037
|
"attributes": [
|
|
475
1038
|
{
|
|
476
|
-
"name": "
|
|
477
|
-
"description": "
|
|
1039
|
+
"name": "keys",
|
|
1040
|
+
"description": "Space-separated keys: `meta k`, `ctrl shift p`.",
|
|
478
1041
|
"values": []
|
|
1042
|
+
},
|
|
1043
|
+
{
|
|
1044
|
+
"name": "platform",
|
|
1045
|
+
"description": "Forces a platform instead of sniffing the current one.",
|
|
1046
|
+
"values": [{ "name": "auto" }, { "name": "mac" }, { "name": "other" }]
|
|
479
1047
|
}
|
|
480
1048
|
],
|
|
481
1049
|
"references": []
|
|
482
1050
|
},
|
|
483
1051
|
{
|
|
484
|
-
"name": "kt-
|
|
485
|
-
"description": "One
|
|
1052
|
+
"name": "kt-split-button",
|
|
1053
|
+
"description": "One button carrying a menu of related actions.\n\nThe body runs the action a user wants nine times out of ten and emits a\nplain `click`; the caret opens the rest. Reach for it when the alternatives\nare variations on the same action — \"Save and close\", \"Save a copy\" — and\nfor an unrelated set of actions use `<kt-dropdown>` instead, which has no\ndefault action to promote.\n\nA caret press never reads as a `click` on the host, so a single `click`\nlistener means the primary action and nothing else.\n---\n\n\n### **Events:**\n - **kt-select** - A menu row was chosen. `detail: { value, item }`.\n- **kt-open** - The menu opened.\n- **kt-close** - The menu closed.\n\n### **Methods:**\n - **show(): _void_** - Opens the menu.\n- **hide(): _void_** - Closes it.\n- **toggle(): _void_** - Either.\n- **focus(options: _FocusOptions_): _void_** - Moves focus to the primary segment.\n\n### **Slots:**\n - _default_ - The primary action's label.\n\n### **CSS Parts:**\n - **action** - The primary `<kt-button>`.\n- **caret** - The `<kt-button>` that opens the menu.\n- **menu** - The list of rows.\n- **item** - A menu row.",
|
|
486
1054
|
"attributes": [
|
|
487
|
-
{ "name": "heading", "values": [] },
|
|
488
1055
|
{
|
|
489
|
-
"name": "
|
|
490
|
-
"description": "
|
|
491
|
-
"values": []
|
|
1056
|
+
"name": "variant",
|
|
1057
|
+
"description": "Visual variant, forwarded to both segments.",
|
|
1058
|
+
"values": [{ "name": "KtButtonVariant" }]
|
|
1059
|
+
},
|
|
1060
|
+
{
|
|
1061
|
+
"name": "size",
|
|
1062
|
+
"description": "Height, forwarded to both segments.",
|
|
1063
|
+
"values": [{ "name": "KtButtonSize" }]
|
|
492
1064
|
},
|
|
1065
|
+
{ "name": "disabled", "values": [] },
|
|
493
1066
|
{
|
|
494
1067
|
"name": "icon",
|
|
495
|
-
"description": "Lucide icon name
|
|
1068
|
+
"description": "Lucide icon name for the primary segment.",
|
|
496
1069
|
"values": []
|
|
497
1070
|
},
|
|
498
|
-
{ "name": "variant", "values": [{ "name": "KtTimelineVariant" }] },
|
|
499
1071
|
{
|
|
500
|
-
"name": "
|
|
501
|
-
"description": "
|
|
1072
|
+
"name": "menu-label",
|
|
1073
|
+
"description": "Accessible name of the caret, which has no text of its own.",
|
|
502
1074
|
"values": []
|
|
503
1075
|
},
|
|
504
1076
|
{
|
|
505
|
-
"name": "
|
|
506
|
-
"description": "
|
|
507
|
-
"values": []
|
|
508
|
-
}
|
|
1077
|
+
"name": "preferred-placement",
|
|
1078
|
+
"description": "Where to put the menu when there is room on both sides.",
|
|
1079
|
+
"values": [{ "name": "KtDropdownPlacement" }]
|
|
1080
|
+
},
|
|
1081
|
+
{ "name": "empty-text", "values": [] }
|
|
509
1082
|
],
|
|
510
1083
|
"references": []
|
|
511
1084
|
},
|
|
@@ -631,7 +1204,7 @@
|
|
|
631
1204
|
},
|
|
632
1205
|
{
|
|
633
1206
|
"name": "kt-toast-container",
|
|
634
|
-
"description": "A fixed stack that owns the toasts on screen.\n\nToasts are appended and removed by the container, not by the code that\nraised them — a toast that removes itself from a list it does not own is how\nyou end up with two of them and neither disappearing.\n---\n\n\n### **Methods:**\n - **show(options: _KtToastOptions_): _KtToast_** - Raises a toast and returns it, so a caller can close it early.\n- **dismiss(toast: _KtToast_): _void_** - Removes one toast.\n- **clear(): _void_** - Removes every toast.\n\n### **Slots:**\n - _default_ - The toasts. Usually filled by `show()` rather than by hand.",
|
|
1207
|
+
"description": "A fixed stack that owns the toasts on screen.\n\nToasts are appended and removed by the container, not by the code that\nraised them — a toast that removes itself from a list it does not own is how\nyou end up with two of them and neither disappearing.\n---\n\n\n### **Methods:**\n - **show(options: _KtToastOptions_): _KtToast_** - Raises a toast and returns it, so a caller can close it early.\n- **dismiss(toast: _KtToast_): _void_** - Removes one toast: it fades and folds away, then leaves the page.\n- **clear(): _void_** - Removes every toast.\n\n### **Slots:**\n - _default_ - The toasts. Usually filled by `show()` rather than by hand.",
|
|
635
1208
|
"attributes": [
|
|
636
1209
|
{ "name": "position", "values": [{ "name": "KtToastPosition" }] },
|
|
637
1210
|
{
|
|
@@ -739,6 +1312,30 @@
|
|
|
739
1312
|
],
|
|
740
1313
|
"references": []
|
|
741
1314
|
},
|
|
1315
|
+
{
|
|
1316
|
+
"name": "kt-color-picker",
|
|
1317
|
+
"description": "A colour, chosen from swatches or set freely: a label's colour, a theme's\naccent, a chart series.\n\nThe swatches are a radio group — the arrows move and pick, wrapping — Kanto's\naccents until `swatches` gives others. Beside them, the free colour: the\nsystem's own picker behind a swatch, and a hex field that takes a colour\nonce it is a whole one. `no-custom` keeps to the swatches.\n\nA form control, submitted as `#rrggbb` under `name`.\n---\n\n\n### **Events:**\n - **kt-change** - The colour changed. `detail: { value }`.\n\n### **CSS Parts:**\n - **swatches** - The radio group.\n- **swatch** - One swatch.\n- **custom** - The free colour's swatch.\n- **hex** - The hex field.",
|
|
1318
|
+
"attributes": [
|
|
1319
|
+
{
|
|
1320
|
+
"name": "value",
|
|
1321
|
+
"description": "The colour, as `#rrggbb`.",
|
|
1322
|
+
"values": []
|
|
1323
|
+
},
|
|
1324
|
+
{
|
|
1325
|
+
"name": "label",
|
|
1326
|
+
"description": "Accessible name for the swatches: \"Label colour\".",
|
|
1327
|
+
"values": []
|
|
1328
|
+
},
|
|
1329
|
+
{ "name": "name", "values": [] },
|
|
1330
|
+
{ "name": "disabled", "values": [] },
|
|
1331
|
+
{
|
|
1332
|
+
"name": "no-custom",
|
|
1333
|
+
"description": "Keeps to the swatches: no system picker, no hex field.",
|
|
1334
|
+
"values": []
|
|
1335
|
+
}
|
|
1336
|
+
],
|
|
1337
|
+
"references": []
|
|
1338
|
+
},
|
|
742
1339
|
{
|
|
743
1340
|
"name": "kt-date-input",
|
|
744
1341
|
"description": "A date typed into its parts: day, month and year, each its own segment.\n\nThe segments come in the order the reader's language writes a date —\n`25/09/2026` in London, `09/25/2026` in New York, `25.09.2026` in Berlin —\nand the focus moves on as each fills, so a date is eight keystrokes. The\narrows step a segment, a day never past its month's end. The value is ISO\n8601, `2026-09-25`, and `null` until the date is complete.\n\nWith `calendar`, a button at the end opens a `<kt-calendar>` to pick from.\n---\n\n\n### **Events:**\n - **kt-change** - The date became complete, changed, or stopped being one. `detail: { value }` — the ISO date or `null`.\n\n### **Methods:**\n \n\n### **CSS Parts:**\n - **field** - The field.\n- **segment** - A day, month or year segment.\n- **trigger** - The calendar button, with `calendar`.\n- **panel** - The calendar popup, with `calendar`.",
|
|
@@ -1018,6 +1615,66 @@
|
|
|
1018
1615
|
],
|
|
1019
1616
|
"references": []
|
|
1020
1617
|
},
|
|
1618
|
+
{
|
|
1619
|
+
"name": "kt-otp-input",
|
|
1620
|
+
"description": "A one-time code — the six digits of a sign-in, a verification, a\nsecond factor — one box per character.\n\nTyping moves to the next box, Backspace from an empty box steps back and\nclears the one before, the arrows move between boxes, and a pasted code is\nspread over them. The first box asks the browser for `one-time-code`, so a\ncode that arrived by text message fills itself in. `kt-complete` fires when\nthe code is whole.\n\nA form control: submitted under `name`, `required` until whole, reset with\nthe form.\n---\n\n\n### **Events:**\n - **kt-change** - The code changed. `detail: { value }`.\n- **kt-complete** - The code is whole. `detail: { value }`.\n\n### **CSS Parts:**\n - **group** - The boxes.\n- **box** - One box.\n- **error** - The error message.",
|
|
1621
|
+
"attributes": [
|
|
1622
|
+
{ "name": "value", "description": "The code so far.", "values": [] },
|
|
1623
|
+
{
|
|
1624
|
+
"name": "length",
|
|
1625
|
+
"description": "How many characters the code has.",
|
|
1626
|
+
"values": []
|
|
1627
|
+
},
|
|
1628
|
+
{
|
|
1629
|
+
"name": "type",
|
|
1630
|
+
"description": "`numeric` takes digits; `alphanumeric` letters and digits, in capitals.",
|
|
1631
|
+
"values": [{ "name": "KtOtpInputType" }]
|
|
1632
|
+
},
|
|
1633
|
+
{
|
|
1634
|
+
"name": "label",
|
|
1635
|
+
"description": "Accessible name for the group: \"Verification code\".",
|
|
1636
|
+
"values": []
|
|
1637
|
+
},
|
|
1638
|
+
{ "name": "name", "values": [] },
|
|
1639
|
+
{ "name": "required", "values": [] },
|
|
1640
|
+
{ "name": "disabled", "values": [] },
|
|
1641
|
+
{
|
|
1642
|
+
"name": "error",
|
|
1643
|
+
"description": "An error to show and announce under the boxes.",
|
|
1644
|
+
"values": []
|
|
1645
|
+
}
|
|
1646
|
+
],
|
|
1647
|
+
"references": []
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
"name": "kt-prompt-input",
|
|
1651
|
+
"description": "The field a person writes to an assistant in: it grows with what is\nwritten, sends on Enter, and shows the sending on its own send button.\n\nEnter sends and Shift+Enter starts a line; with `submit-on=\"mod-enter\"`,\nEnter starts a line and Cmd or Ctrl+Enter sends. `kt-submit` carries the\ntext and `wait(promise)`: hand it the request, and the send button runs it\n— its plane turning into the spinner and flying off — while the field holds\nthe text, emptied on success, kept on failure. Without `wait` the field\nempties at once.\n---\n\n\n### **Events:**\n - **kt-input** - On every keystroke. `detail: { value }`.\n- **kt-submit** - The text was sent. `detail: { value, wait(promise) }`.\n\n### **Methods:**\n - **submit(): _void_** - Sends what is written, as Enter would. Nothing when it is blank, disabled or sending.\n\n### **Slots:**\n - **attachments** - Above the text: files or context added to the message.\n- **actions** - Beside the send button: attach, a model picker, a mode.\n\n### **CSS Parts:**\n - **base** - The field.\n- **textarea** - The native `<textarea>`.\n- **send** - The send button.",
|
|
1652
|
+
"attributes": [
|
|
1653
|
+
{
|
|
1654
|
+
"name": "value",
|
|
1655
|
+
"description": "The text in the field.",
|
|
1656
|
+
"values": []
|
|
1657
|
+
},
|
|
1658
|
+
{ "name": "placeholder", "values": [] },
|
|
1659
|
+
{
|
|
1660
|
+
"name": "label",
|
|
1661
|
+
"description": "Accessible name for the field. Defaults to the translated \"Message\".",
|
|
1662
|
+
"values": []
|
|
1663
|
+
},
|
|
1664
|
+
{ "name": "disabled", "values": [] },
|
|
1665
|
+
{
|
|
1666
|
+
"name": "max-rows",
|
|
1667
|
+
"description": "How many lines it grows to before it scrolls.",
|
|
1668
|
+
"values": []
|
|
1669
|
+
},
|
|
1670
|
+
{
|
|
1671
|
+
"name": "submit-on",
|
|
1672
|
+
"description": "`enter` sends on Enter; `mod-enter` on Cmd or Ctrl+Enter, leaving Enter for new lines.",
|
|
1673
|
+
"values": [{ "name": "KtPromptInputSubmitOn" }]
|
|
1674
|
+
}
|
|
1675
|
+
],
|
|
1676
|
+
"references": []
|
|
1677
|
+
},
|
|
1021
1678
|
{
|
|
1022
1679
|
"name": "kt-radio",
|
|
1023
1680
|
"description": "One option of a `<kt-radio-group>`.\n\nIt draws itself and carries `role=\"radio\"`; the group owns the selection,\nthe tab stop and the keyboard. A `<kt-radio>` outside a group does nothing\nuseful.\n---\n\n\n### **Slots:**\n - _default_ - The label.\n\n### **CSS Parts:**\n - **base** - The `role=\"radio\"` row.\n- **circle** - The drawn circle.",
|
|
@@ -1192,6 +1849,64 @@
|
|
|
1192
1849
|
],
|
|
1193
1850
|
"references": []
|
|
1194
1851
|
},
|
|
1852
|
+
{
|
|
1853
|
+
"name": "kt-toggle",
|
|
1854
|
+
"description": "An on/off switch.\n\nSized off the button heights so a toggle lines up with the controls beside\nit: the track is 1.8× the field height, the thumb is inset by 12% of it.\nChange `--button-height` and the switch follows.\n---\n\n\n### **Events:**\n - **kt-change** - The state changed. `detail: { checked }`.\n\n### **Methods:**\n - **formDisabledCallback(disabled: _boolean_): _void_** - Called by the platform when the control's disabled state changes — its\nown `disabled`, or an ancestor `<fieldset disabled>` it cannot see.\n\n### **Slots:**\n - _default_ - Optional label, rendered beside the switch and clickable.\n\n### **CSS Parts:**\n - **base** - The button carrying `role=\"switch\"`.\n- **track** - The track.\n- **thumb** - The sliding thumb.",
|
|
1855
|
+
"attributes": [
|
|
1856
|
+
{ "name": "checked", "values": [] },
|
|
1857
|
+
{ "name": "disabled", "values": [] },
|
|
1858
|
+
{ "name": "size", "values": [{ "name": "KtToggleSize" }] },
|
|
1859
|
+
{ "name": "name", "values": [] },
|
|
1860
|
+
{
|
|
1861
|
+
"name": "value",
|
|
1862
|
+
"description": "Submitted when checked, as for a native checkbox.",
|
|
1863
|
+
"values": []
|
|
1864
|
+
},
|
|
1865
|
+
{
|
|
1866
|
+
"name": "label",
|
|
1867
|
+
"description": "Accessible name, when nothing is slotted.",
|
|
1868
|
+
"values": []
|
|
1869
|
+
}
|
|
1870
|
+
],
|
|
1871
|
+
"references": []
|
|
1872
|
+
},
|
|
1873
|
+
{
|
|
1874
|
+
"name": "kt-app-shell",
|
|
1875
|
+
"description": "The frame of an application: a header along the top, a sidebar down the\nside, and the content, which scrolls on its own.\n\nWide, the sidebar sits beside the content, and its toggle narrows it to a\nrail (`collapsed`). Narrower than `breakpoint` — measured on the shell\nitself, not the viewport — the sidebar leaves the layout: the toggle opens\nit as a drawer over the content, behind a backdrop, closed by Escape or a\nclick outside. A closed drawer is inert, so Tab never wanders into it.\n\nThe shell fills its container's height; give the container one —\n`height: 100dvh` on a page, a fixed height in a preview.\n---\n\n\n### **Events:**\n - **kt-sidebar-toggle** - The sidebar opened or closed — collapsed or expanded when wide, the drawer when narrow. `detail: { open }`.\n\n### **Methods:**\n - **toggleSidebar(): _void_** - Opens or closes the sidebar, as its toggle does.\n\n### **Slots:**\n - **header** - The top bar: a wordmark, a search, an account menu.\n- **sidebar** - Down the side: the application's navigation.\n- _default_ - The content.\n\n### **CSS Properties:**\n - **--kt-app-shell-sidebar-width** - The sidebar's width. 240px. _(default: undefined)_\n- **--kt-app-shell-rail-width** - Its width when collapsed. 64px. _(default: undefined)_\n- **--kt-app-shell-header-height** - The top bar's height. 56px. _(default: undefined)_\n\n### **CSS Parts:**\n - **header** - The top bar.\n- **sidebar** - The `<aside>`.\n- **main** - The `<main>`.\n- **toggle** - The sidebar's toggle.",
|
|
1876
|
+
"attributes": [
|
|
1877
|
+
{
|
|
1878
|
+
"name": "collapsed",
|
|
1879
|
+
"description": "Wide: the sidebar narrowed to a rail.",
|
|
1880
|
+
"values": []
|
|
1881
|
+
},
|
|
1882
|
+
{
|
|
1883
|
+
"name": "sidebar-open",
|
|
1884
|
+
"description": "Narrow: the sidebar open as a drawer.",
|
|
1885
|
+
"values": []
|
|
1886
|
+
},
|
|
1887
|
+
{
|
|
1888
|
+
"name": "breakpoint",
|
|
1889
|
+
"description": "Below this width, in pixels of the shell itself, the sidebar becomes a drawer.",
|
|
1890
|
+
"values": []
|
|
1891
|
+
},
|
|
1892
|
+
{
|
|
1893
|
+
"name": "no-toggle",
|
|
1894
|
+
"description": "Leaves the toggle out, for a header that brings its own.",
|
|
1895
|
+
"values": []
|
|
1896
|
+
},
|
|
1897
|
+
{
|
|
1898
|
+
"name": "no-landmarks",
|
|
1899
|
+
"description": "Draws the sidebar and the content as plain boxes rather than an \\`<aside>\\`\nand a \\`<main>\\` — for a shell shown inside a page that has its own, a\npreview or a demo, where a second main landmark would be wrong.",
|
|
1900
|
+
"values": []
|
|
1901
|
+
},
|
|
1902
|
+
{
|
|
1903
|
+
"name": "label",
|
|
1904
|
+
"description": "Accessible name for the sidebar. Defaults to the translated \"Sidebar\".",
|
|
1905
|
+
"values": []
|
|
1906
|
+
}
|
|
1907
|
+
],
|
|
1908
|
+
"references": []
|
|
1909
|
+
},
|
|
1195
1910
|
{
|
|
1196
1911
|
"name": "kt-breadcrumb",
|
|
1197
1912
|
"description": "A trail showing where the current page sits.\n\nThe last entry is the current page: rendered as text, not a link, and marked\n`aria-current=\"page\"`. A breadcrumb whose final item links to the page you\nare already on is a dead control.\n---\n\n\n### **Events:**\n - **kt-navigate** - An entry was activated. `detail: { item, index }`. Cancel it to keep the browser from following the href.\n\n### **CSS Parts:**\n - **nav** - The `<nav>`.\n- **item** - A trail entry.",
|
|
@@ -1205,21 +1920,27 @@
|
|
|
1205
1920
|
"references": []
|
|
1206
1921
|
},
|
|
1207
1922
|
{
|
|
1208
|
-
"name": "kt-
|
|
1209
|
-
"description": "
|
|
1923
|
+
"name": "kt-footer",
|
|
1924
|
+
"description": "The site footer: a contentinfo landmark holding the brand and a word about\nthe product, columns of links, actions, and a legal line under them.\n\nThe columns are data — `footer.columns = [{ heading, links }]` — so they are\nlaid out, named and marked alike; the brand, the actions and the legal line\nare slots, for whatever a product puts there. It lays itself out from its\nown width, not the viewport's: in a narrow panel it stacks as on a phone.\n\n`variant=\"simple\"` is a single row — the brand, the links run together, the\nactions — for a page that needs a footer rather than a site map.\n---\n\n\n### **Slots:**\n - **brand** - Logo or wordmark.\n- _default_ - A word under the brand: what the product is.\n- **actions** - Buttons and links under it — social links, a newsletter form.\n- **legal** - The bottom line: copyright, terms, privacy. Its row is left out while empty.\n\n### **CSS Properties:**\n - **--kt-footer-max-width** - How wide the content runs. None by default. _(default: undefined)_\n- **--kt-footer-padding-inline** - The space at its sides. The card padding by default; zero lines it up with a page's content when the page already has its own. _(default: undefined)_\n\n### **CSS Parts:**\n - **base** - The `<footer>`.\n- **brand** - The brand, its text and the actions.\n- **columns** - The navigation holding the columns.\n- **column** - One column.\n- **bottom** - The legal row.",
|
|
1210
1925
|
"attributes": [
|
|
1211
|
-
{ "name": "checked", "values": [] },
|
|
1212
|
-
{ "name": "disabled", "values": [] },
|
|
1213
|
-
{ "name": "size", "values": [{ "name": "KtToggleSize" }] },
|
|
1214
|
-
{ "name": "name", "values": [] },
|
|
1215
1926
|
{
|
|
1216
|
-
"name": "
|
|
1217
|
-
"description": "
|
|
1927
|
+
"name": "variant",
|
|
1928
|
+
"description": "`columns`: a heading over each list. `simple`: one row of links.",
|
|
1929
|
+
"values": [{ "name": "KtFooterVariant" }]
|
|
1930
|
+
},
|
|
1931
|
+
{
|
|
1932
|
+
"name": "bordered",
|
|
1933
|
+
"description": "A rule along the top.",
|
|
1934
|
+
"values": []
|
|
1935
|
+
},
|
|
1936
|
+
{
|
|
1937
|
+
"name": "heading-level",
|
|
1938
|
+
"description": "The level of the column headings, 2 to 6.",
|
|
1218
1939
|
"values": []
|
|
1219
1940
|
},
|
|
1220
1941
|
{
|
|
1221
1942
|
"name": "label",
|
|
1222
|
-
"description": "Accessible name
|
|
1943
|
+
"description": "Accessible name for the footer and its navigation.",
|
|
1223
1944
|
"values": []
|
|
1224
1945
|
}
|
|
1225
1946
|
],
|
|
@@ -1404,9 +2125,48 @@
|
|
|
1404
2125
|
],
|
|
1405
2126
|
"references": []
|
|
1406
2127
|
},
|
|
2128
|
+
{
|
|
2129
|
+
"name": "kt-user-menu",
|
|
2130
|
+
"description": "The account menu at the end of an application's header: the person's\navatar, and under it who is signed in and what they can do — their profile,\ntheir settings, switching workspace, signing out.\n\nA menu button, as the WAI-ARIA pattern describes: Enter, Space or the down\narrow open it on the first item, the up arrow on the last; the arrows, Home\nand End move between items; Escape closes it and gives the focus back; Tab\nor a click outside close it too. The panel is drawn in the top layer, so no\noverflow clips it.\n---\n\n\n### **Events:**\n - **kt-select** - An item was chosen. `detail: { id, item }`.\n- **kt-open** - The menu opened.\n- **kt-close** - The menu closed.\n\n### **Methods:**\n - **show(from: _'start' | 'end'_): _void_** - Opens the menu, focusing its first item, or its last with `from: 'end'`.\n- **hide(refocus): _void_** - Closes the menu; the focus goes back to the button unless told otherwise.\n\n### **Slots:**\n - _default_ - Under the items: a workspace switcher, a theme toggle, a plan badge.\n\n### **CSS Parts:**\n - **trigger** - The button.\n- **panel** - The menu's panel.\n- **item** - One item.",
|
|
2131
|
+
"attributes": [
|
|
2132
|
+
{
|
|
2133
|
+
"name": "name",
|
|
2134
|
+
"description": "The person signed in: names the button, draws the avatar's initials.",
|
|
2135
|
+
"values": []
|
|
2136
|
+
},
|
|
2137
|
+
{
|
|
2138
|
+
"name": "email",
|
|
2139
|
+
"description": "Under the name in the panel.",
|
|
2140
|
+
"values": []
|
|
2141
|
+
},
|
|
2142
|
+
{
|
|
2143
|
+
"name": "avatar",
|
|
2144
|
+
"description": "A picture for the avatar.",
|
|
2145
|
+
"values": []
|
|
2146
|
+
},
|
|
2147
|
+
{
|
|
2148
|
+
"name": "show-name",
|
|
2149
|
+
"description": "Shows the name beside the avatar on the button.",
|
|
2150
|
+
"values": []
|
|
2151
|
+
}
|
|
2152
|
+
],
|
|
2153
|
+
"references": []
|
|
2154
|
+
},
|
|
2155
|
+
{
|
|
2156
|
+
"name": "kt-accordion",
|
|
2157
|
+
"description": "A set of `kt-collapsible` sections that open one at a time: opening one\nfolds the one that was open, so the page stays the length of one answer.\n`multiple` lets each open on its own.\n\nThe arrows, Home and End move between the sections' summaries, as the\nWAI-ARIA accordion pattern describes; Enter and Space open them, as they\nalways do.\n---\n\n\n### **Events:**\n - **kt-change** - A section opened or closed. `detail: { open }`, the indexes of the open sections.\n\n### **Slots:**\n - _default_ - The `kt-collapsible` sections.",
|
|
2158
|
+
"attributes": [
|
|
2159
|
+
{
|
|
2160
|
+
"name": "multiple",
|
|
2161
|
+
"description": "Lets each section open on its own, instead of one at a time.",
|
|
2162
|
+
"values": []
|
|
2163
|
+
}
|
|
2164
|
+
],
|
|
2165
|
+
"references": []
|
|
2166
|
+
},
|
|
1407
2167
|
{
|
|
1408
2168
|
"name": "kt-collapsible",
|
|
1409
|
-
"description": "A section that folds away.\n\nBuilt on `<details>`, which means it works before the JavaScript loads,\nsurvives find-in-page — the browser opens a closed section to reveal a match —\nand needs no ARIA of its own.\n---\n\n\n### **Events:**\n - **kt-toggle** - Opened or closed. `detail: { open }`.\n\n### **Slots:**\n - _default_ - The contents.\n- **summary** - Replaces the `heading` attribute.\n\n### **CSS Parts:**\n - **base** - The `<details>`.\n- **summary** - The clickable row.\n- **content** - The revealed panel.",
|
|
2169
|
+
"description": "A section that folds away.\n\nBuilt on `<details>`, which means it works before the JavaScript loads,\nsurvives find-in-page — the browser opens a closed section to reveal a match —\nand needs no ARIA of its own.\n\nOpening unfolds the content to its height and closing folds it away, in\nevery browser: the details stays open until the fold is done, and a click\nhalf-way turns back from where it is. Not on the first render, and not\nunder reduced motion.\n---\n\n\n### **Events:**\n - **kt-toggle** - Opened or closed. `detail: { open }`.\n\n### **Methods:**\n - **focus(options: _FocusOptions_): _void_** - Moves the focus to the summary, the control a person reaches it by.\n\n### **Slots:**\n - _default_ - The contents.\n- **summary** - Replaces the `heading` attribute.\n\n### **CSS Parts:**\n - **base** - The `<details>`.\n- **summary** - The clickable row.\n- **content** - The revealed panel.",
|
|
1410
2170
|
"attributes": [
|
|
1411
2171
|
{ "name": "open", "values": [] },
|
|
1412
2172
|
{ "name": "heading", "values": [] },
|
|
@@ -1516,6 +2276,12 @@
|
|
|
1516
2276
|
}
|
|
1517
2277
|
],
|
|
1518
2278
|
"references": []
|
|
2279
|
+
},
|
|
2280
|
+
{
|
|
2281
|
+
"name": "kt-tour",
|
|
2282
|
+
"description": "A guided tour: a few steps, each pointing at a part of the page with a word\nabout it — a product's first run, a new feature.\n\nEach step lights its target, dimming the rest of the page, scrolls it into\nview and sets a card beside it: the step's title and words, where the tour\nis (\"Step 2 of 4\"), and the way on — Previous, Next, then Done. Escape or the\nclose button end it. The card takes the focus at each step; the page stays\nusable, since a tour points at things rather than taking them away.\n---\n\n\n### **Events:**\n - **kt-step** - A step showed. `detail: { index }`.\n- **kt-finish** - The last step's Done was pressed.\n- **kt-close** - The tour was closed before its end.\n\n### **Methods:**\n - **start(index): _void_** - Starts the tour, on its first step or on `index`.\n- **close(): _void_** - Ends the tour before its last step.\n- **next(): _void_** - The next step, or the end after the last.\n- **previous(): _void_** - The step before.\n\n### **CSS Parts:**\n - **spotlight** - The light around the target.\n- **card** - The step's card.",
|
|
2283
|
+
"attributes": [],
|
|
2284
|
+
"references": []
|
|
1519
2285
|
}
|
|
1520
2286
|
]
|
|
1521
2287
|
}
|