@slotted/angular 0.0.0-stage → 0.1.0-beta.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/LICENSE +21 -0
- package/README.md +51 -2
- package/docs/AGENTS.snippet.md +10 -0
- package/docs/accordion.json +345 -0
- package/docs/accordion.md +207 -0
- package/docs/action-bar.json +421 -0
- package/docs/action-bar.md +364 -0
- package/docs/action-sheet.json +210 -0
- package/docs/action-sheet.md +19 -0
- package/docs/alert.json +407 -0
- package/docs/alert.md +239 -0
- package/docs/app-shell.examples.md +349 -0
- package/docs/app-shell.json +835 -0
- package/docs/app-shell.md +214 -0
- package/docs/aspect-ratio.json +159 -0
- package/docs/aspect-ratio.md +134 -0
- package/docs/attachment.json +486 -0
- package/docs/attachment.md +253 -0
- package/docs/avatar-group.json +208 -0
- package/docs/avatar-group.md +130 -0
- package/docs/avatar.json +342 -0
- package/docs/avatar.md +142 -0
- package/docs/badge.json +334 -0
- package/docs/badge.md +138 -0
- package/docs/breadcrumb.json +368 -0
- package/docs/breadcrumb.md +237 -0
- package/docs/button-group.json +158 -0
- package/docs/button-group.md +72 -0
- package/docs/button.examples.md +621 -0
- package/docs/button.json +977 -0
- package/docs/button.md +200 -0
- package/docs/calendar.json +592 -0
- package/docs/calendar.md +242 -0
- package/docs/card.json +283 -0
- package/docs/card.md +130 -0
- package/docs/carousel.json +560 -0
- package/docs/carousel.md +357 -0
- package/docs/cascader.json +933 -0
- package/docs/cascader.md +379 -0
- package/docs/chart.examples.md +582 -0
- package/docs/chart.json +1359 -0
- package/docs/chart.md +187 -0
- package/docs/checkbox-group.examples.md +612 -0
- package/docs/checkbox-group.json +395 -0
- package/docs/checkbox-group.md +106 -0
- package/docs/checkbox.examples.md +546 -0
- package/docs/checkbox.json +506 -0
- package/docs/checkbox.md +104 -0
- package/docs/code-block.json +616 -0
- package/docs/code-block.md +303 -0
- package/docs/collapsible.json +456 -0
- package/docs/collapsible.md +261 -0
- package/docs/color-picker.json +523 -0
- package/docs/color-picker.md +201 -0
- package/docs/column-manager.json +486 -0
- package/docs/column-manager.md +277 -0
- package/docs/combobox.examples.md +1732 -0
- package/docs/combobox.json +1250 -0
- package/docs/combobox.md +209 -0
- package/docs/command-palette.json +800 -0
- package/docs/command-palette.md +419 -0
- package/docs/container.json +156 -0
- package/docs/container.md +92 -0
- package/docs/context-menu.json +231 -0
- package/docs/context-menu.md +176 -0
- package/docs/currency-field.examples.md +321 -0
- package/docs/currency-field.json +649 -0
- package/docs/currency-field.md +128 -0
- package/docs/dashboard-grid.json +680 -0
- package/docs/dashboard-grid.md +265 -0
- package/docs/data-grid.examples.md +3064 -0
- package/docs/data-grid.json +1577 -0
- package/docs/data-grid.md +237 -0
- package/docs/data-grid.props.md +81 -0
- package/docs/data-list.json +685 -0
- package/docs/data-list.md +327 -0
- package/docs/date-field.json +490 -0
- package/docs/date-field.md +235 -0
- package/docs/date-picker.examples.md +1226 -0
- package/docs/date-picker.json +696 -0
- package/docs/date-picker.md +121 -0
- package/docs/date-range-picker.examples.md +1300 -0
- package/docs/date-range-picker.json +903 -0
- package/docs/date-range-picker.md +142 -0
- package/docs/datetime-field.json +665 -0
- package/docs/datetime-field.md +337 -0
- package/docs/datetime-picker.examples.md +1269 -0
- package/docs/datetime-picker.json +928 -0
- package/docs/datetime-picker.md +150 -0
- package/docs/datetime-range-picker.examples.md +225 -0
- package/docs/datetime-range-picker.json +1015 -0
- package/docs/datetime-range-picker.md +162 -0
- package/docs/description-list.json +471 -0
- package/docs/description-list.md +268 -0
- package/docs/detail-panel.json +530 -0
- package/docs/detail-panel.md +361 -0
- package/docs/dialog.examples.md +2467 -0
- package/docs/dialog.json +1141 -0
- package/docs/dialog.md +217 -0
- package/docs/dialog.props.md +63 -0
- package/docs/divider.json +148 -0
- package/docs/divider.md +83 -0
- package/docs/drawer.examples.md +1929 -0
- package/docs/drawer.json +753 -0
- package/docs/drawer.md +199 -0
- package/docs/entity-picker.json +946 -0
- package/docs/entity-picker.md +365 -0
- package/docs/event-calendar.examples.md +308 -0
- package/docs/event-calendar.json +1202 -0
- package/docs/event-calendar.md +201 -0
- package/docs/field-group.json +333 -0
- package/docs/field-group.md +181 -0
- package/docs/field.examples.md +676 -0
- package/docs/field.json +528 -0
- package/docs/field.md +127 -0
- package/docs/filter-bar.json +817 -0
- package/docs/filter-bar.md +380 -0
- package/docs/form.json +378 -0
- package/docs/form.md +235 -0
- package/docs/fullscreen.json +395 -0
- package/docs/fullscreen.md +225 -0
- package/docs/grid.json +176 -0
- package/docs/grid.md +74 -0
- package/docs/highlight.json +279 -0
- package/docs/highlight.md +210 -0
- package/docs/hover-card.json +254 -0
- package/docs/hover-card.md +213 -0
- package/docs/icon.json +173 -0
- package/docs/icon.md +101 -0
- package/docs/image.json +476 -0
- package/docs/image.md +254 -0
- package/docs/import-export-center.json +836 -0
- package/docs/import-export-center.md +345 -0
- package/docs/index.md +141 -0
- package/docs/inline-message.json +312 -0
- package/docs/inline-message.md +191 -0
- package/docs/inline.json +149 -0
- package/docs/inline.md +72 -0
- package/docs/kbd.json +350 -0
- package/docs/kbd.md +210 -0
- package/docs/link.json +264 -0
- package/docs/link.md +167 -0
- package/docs/list-item.json +463 -0
- package/docs/list-item.md +236 -0
- package/docs/list.json +321 -0
- package/docs/list.md +185 -0
- package/docs/listbox.json +807 -0
- package/docs/listbox.md +413 -0
- package/docs/loading-overlay.json +440 -0
- package/docs/loading-overlay.md +248 -0
- package/docs/markdown.json +461 -0
- package/docs/markdown.md +266 -0
- package/docs/menu.examples.md +1651 -0
- package/docs/menu.json +922 -0
- package/docs/menu.md +155 -0
- package/docs/menubar.json +292 -0
- package/docs/menubar.md +173 -0
- package/docs/message-scroller.json +401 -0
- package/docs/message-scroller.md +212 -0
- package/docs/message.json +862 -0
- package/docs/message.md +473 -0
- package/docs/multi-select.examples.md +1922 -0
- package/docs/multi-select.json +1314 -0
- package/docs/multi-select.md +213 -0
- package/docs/navigation-menu.json +529 -0
- package/docs/navigation-menu.md +329 -0
- package/docs/notification-center.json +664 -0
- package/docs/notification-center.md +372 -0
- package/docs/number-field.examples.md +1078 -0
- package/docs/number-field.json +668 -0
- package/docs/number-field.md +137 -0
- package/docs/otp-input.json +479 -0
- package/docs/otp-input.md +291 -0
- package/docs/page-header.json +574 -0
- package/docs/page-header.md +338 -0
- package/docs/page.json +332 -0
- package/docs/page.md +184 -0
- package/docs/pagination.json +434 -0
- package/docs/pagination.md +238 -0
- package/docs/popover.examples.md +1235 -0
- package/docs/popover.json +656 -0
- package/docs/popover.md +199 -0
- package/docs/progress-indicator.json +501 -0
- package/docs/progress-indicator.md +329 -0
- package/docs/prompt-composer.json +498 -0
- package/docs/prompt-composer.md +278 -0
- package/docs/prose.json +357 -0
- package/docs/prose.md +226 -0
- package/docs/radio-group.examples.md +626 -0
- package/docs/radio-group.json +541 -0
- package/docs/radio-group.md +112 -0
- package/docs/rating.json +1053 -0
- package/docs/rating.md +435 -0
- package/docs/result-state.json +376 -0
- package/docs/result-state.md +286 -0
- package/docs/saved-views.json +384 -0
- package/docs/saved-views.md +242 -0
- package/docs/scroll-area.json +120 -0
- package/docs/scroll-area.md +8 -0
- package/docs/section.json +344 -0
- package/docs/section.md +208 -0
- package/docs/segmented-control.json +429 -0
- package/docs/segmented-control.md +240 -0
- package/docs/select.examples.md +1214 -0
- package/docs/select.json +1147 -0
- package/docs/select.md +199 -0
- package/docs/side-navigation.json +632 -0
- package/docs/side-navigation.md +430 -0
- package/docs/skeleton.json +358 -0
- package/docs/skeleton.md +223 -0
- package/docs/slider.json +522 -0
- package/docs/slider.md +261 -0
- package/docs/sparkline.json +426 -0
- package/docs/sparkline.md +206 -0
- package/docs/split-button.json +361 -0
- package/docs/split-button.md +275 -0
- package/docs/splitter.json +142 -0
- package/docs/splitter.md +14 -0
- package/docs/stack.json +135 -0
- package/docs/stack.md +74 -0
- package/docs/stat-card.json +529 -0
- package/docs/stat-card.md +270 -0
- package/docs/status-indicator.json +314 -0
- package/docs/status-indicator.md +197 -0
- package/docs/stepper.json +451 -0
- package/docs/stepper.md +250 -0
- package/docs/switch.json +451 -0
- package/docs/switch.md +508 -0
- package/docs/table-of-contents.json +553 -0
- package/docs/table-of-contents.md +289 -0
- package/docs/table.examples.md +1981 -0
- package/docs/table.json +1059 -0
- package/docs/table.md +290 -0
- package/docs/tabs.examples.md +1370 -0
- package/docs/tabs.json +661 -0
- package/docs/tabs.md +211 -0
- package/docs/tag.json +813 -0
- package/docs/tag.md +241 -0
- package/docs/tags-input.json +771 -0
- package/docs/tags-input.md +361 -0
- package/docs/text-field.examples.md +821 -0
- package/docs/text-field.json +604 -0
- package/docs/text-field.md +125 -0
- package/docs/textarea.examples.md +612 -0
- package/docs/textarea.json +440 -0
- package/docs/textarea.md +98 -0
- package/docs/time-field.json +584 -0
- package/docs/time-field.md +291 -0
- package/docs/time-picker.json +679 -0
- package/docs/time-picker.md +315 -0
- package/docs/time-range-picker.examples.md +191 -0
- package/docs/time-range-picker.json +924 -0
- package/docs/time-range-picker.md +152 -0
- package/docs/timeline.json +839 -0
- package/docs/timeline.md +401 -0
- package/docs/toast.json +642 -0
- package/docs/toast.md +311 -0
- package/docs/toggle-group.json +417 -0
- package/docs/toggle-group.md +255 -0
- package/docs/toggle.json +326 -0
- package/docs/toggle.md +222 -0
- package/docs/toolbar.json +380 -0
- package/docs/toolbar.md +240 -0
- package/docs/tooltip.examples.md +664 -0
- package/docs/tooltip.json +604 -0
- package/docs/tooltip.md +146 -0
- package/docs/top-navigation.examples.md +287 -0
- package/docs/top-navigation.json +648 -0
- package/docs/top-navigation.md +138 -0
- package/docs/tour.json +759 -0
- package/docs/tour.md +337 -0
- package/docs/transfer.json +746 -0
- package/docs/transfer.md +273 -0
- package/docs/tree.json +918 -0
- package/docs/tree.md +397 -0
- package/docs/typography.json +317 -0
- package/docs/typography.md +107 -0
- package/docs/upload.examples.md +358 -0
- package/docs/upload.json +1103 -0
- package/docs/upload.md +166 -0
- package/docs/visually-hidden.json +71 -0
- package/docs/visually-hidden.md +42 -0
- package/docs/wizard.json +724 -0
- package/docs/wizard.md +295 -0
- package/fesm2022/slotted-angular-accordion.mjs +247 -0
- package/fesm2022/slotted-angular-accordion.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-bar.mjs +639 -0
- package/fesm2022/slotted-angular-action-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-action-sheet.mjs +749 -0
- package/fesm2022/slotted-angular-action-sheet.mjs.map +1 -0
- package/fesm2022/slotted-angular-alert.mjs +427 -0
- package/fesm2022/slotted-angular-alert.mjs.map +1 -0
- package/fesm2022/slotted-angular-app-shell.mjs +1334 -0
- package/fesm2022/slotted-angular-app-shell.mjs.map +1 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs +63 -0
- package/fesm2022/slotted-angular-aspect-ratio.mjs.map +1 -0
- package/fesm2022/slotted-angular-attachment.mjs +595 -0
- package/fesm2022/slotted-angular-attachment.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar-group.mjs +230 -0
- package/fesm2022/slotted-angular-avatar-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-avatar.mjs +330 -0
- package/fesm2022/slotted-angular-avatar.mjs.map +1 -0
- package/fesm2022/slotted-angular-badge.mjs +255 -0
- package/fesm2022/slotted-angular-badge.mjs.map +1 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs +544 -0
- package/fesm2022/slotted-angular-breadcrumb.mjs.map +1 -0
- package/fesm2022/slotted-angular-button-group.mjs +146 -0
- package/fesm2022/slotted-angular-button-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-button.mjs +692 -0
- package/fesm2022/slotted-angular-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-calendar.mjs +916 -0
- package/fesm2022/slotted-angular-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-card.mjs +225 -0
- package/fesm2022/slotted-angular-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-carousel.mjs +840 -0
- package/fesm2022/slotted-angular-carousel.mjs.map +1 -0
- package/fesm2022/slotted-angular-cascader.mjs +1839 -0
- package/fesm2022/slotted-angular-cascader.mjs.map +1 -0
- package/fesm2022/slotted-angular-chart.mjs +974 -0
- package/fesm2022/slotted-angular-chart.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs +283 -0
- package/fesm2022/slotted-angular-checkbox-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-checkbox.mjs +468 -0
- package/fesm2022/slotted-angular-checkbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-code-block.mjs +476 -0
- package/fesm2022/slotted-angular-code-block.mjs.map +1 -0
- package/fesm2022/slotted-angular-collapsible.mjs +479 -0
- package/fesm2022/slotted-angular-collapsible.mjs.map +1 -0
- package/fesm2022/slotted-angular-color-picker.mjs +910 -0
- package/fesm2022/slotted-angular-color-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-column-manager.mjs +1037 -0
- package/fesm2022/slotted-angular-column-manager.mjs.map +1 -0
- package/fesm2022/slotted-angular-combobox.mjs +1480 -0
- package/fesm2022/slotted-angular-combobox.mjs.map +1 -0
- package/fesm2022/slotted-angular-command-palette.mjs +1283 -0
- package/fesm2022/slotted-angular-command-palette.mjs.map +1 -0
- package/fesm2022/slotted-angular-container.mjs +105 -0
- package/fesm2022/slotted-angular-container.mjs.map +1 -0
- package/fesm2022/slotted-angular-context-menu.mjs +221 -0
- package/fesm2022/slotted-angular-context-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-currency-field.mjs +1131 -0
- package/fesm2022/slotted-angular-currency-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs +1928 -0
- package/fesm2022/slotted-angular-dashboard-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-grid.mjs +6697 -0
- package/fesm2022/slotted-angular-data-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-data-list.mjs +1418 -0
- package/fesm2022/slotted-angular-data-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-field.mjs +772 -0
- package/fesm2022/slotted-angular-date-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-picker.mjs +690 -0
- package/fesm2022/slotted-angular-date-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs +1150 -0
- package/fesm2022/slotted-angular-date-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-field.mjs +1058 -0
- package/fesm2022/slotted-angular-datetime-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs +1362 -0
- package/fesm2022/slotted-angular-datetime-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs +1872 -0
- package/fesm2022/slotted-angular-datetime-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-description-list.mjs +545 -0
- package/fesm2022/slotted-angular-description-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-detail-panel.mjs +754 -0
- package/fesm2022/slotted-angular-detail-panel.mjs.map +1 -0
- package/fesm2022/slotted-angular-dialog.mjs +980 -0
- package/fesm2022/slotted-angular-dialog.mjs.map +1 -0
- package/fesm2022/slotted-angular-divider.mjs +76 -0
- package/fesm2022/slotted-angular-divider.mjs.map +1 -0
- package/fesm2022/slotted-angular-drawer.mjs +1397 -0
- package/fesm2022/slotted-angular-drawer.mjs.map +1 -0
- package/fesm2022/slotted-angular-entity-picker.mjs +1987 -0
- package/fesm2022/slotted-angular-entity-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-event-calendar.mjs +2934 -0
- package/fesm2022/slotted-angular-event-calendar.mjs.map +1 -0
- package/fesm2022/slotted-angular-field-group.mjs +301 -0
- package/fesm2022/slotted-angular-field-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-field.mjs +928 -0
- package/fesm2022/slotted-angular-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-filter-bar.mjs +3107 -0
- package/fesm2022/slotted-angular-filter-bar.mjs.map +1 -0
- package/fesm2022/slotted-angular-form.mjs +592 -0
- package/fesm2022/slotted-angular-form.mjs.map +1 -0
- package/fesm2022/slotted-angular-fullscreen.mjs +314 -0
- package/fesm2022/slotted-angular-fullscreen.mjs.map +1 -0
- package/fesm2022/slotted-angular-grid.mjs +58 -0
- package/fesm2022/slotted-angular-grid.mjs.map +1 -0
- package/fesm2022/slotted-angular-highlight.mjs +123 -0
- package/fesm2022/slotted-angular-highlight.mjs.map +1 -0
- package/fesm2022/slotted-angular-hover-card.mjs +326 -0
- package/fesm2022/slotted-angular-hover-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-i18n.mjs +75 -0
- package/fesm2022/slotted-angular-i18n.mjs.map +1 -0
- package/fesm2022/slotted-angular-icon.mjs +232 -0
- package/fesm2022/slotted-angular-icon.mjs.map +1 -0
- package/fesm2022/slotted-angular-image.mjs +442 -0
- package/fesm2022/slotted-angular-image.mjs.map +1 -0
- package/fesm2022/slotted-angular-import-export-center.mjs +1792 -0
- package/fesm2022/slotted-angular-import-export-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline-message.mjs +280 -0
- package/fesm2022/slotted-angular-inline-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-inline.mjs +52 -0
- package/fesm2022/slotted-angular-inline.mjs.map +1 -0
- package/fesm2022/slotted-angular-kbd.mjs +284 -0
- package/fesm2022/slotted-angular-kbd.mjs.map +1 -0
- package/fesm2022/slotted-angular-link.mjs +182 -0
- package/fesm2022/slotted-angular-link.mjs.map +1 -0
- package/fesm2022/slotted-angular-list-item.mjs +367 -0
- package/fesm2022/slotted-angular-list-item.mjs.map +1 -0
- package/fesm2022/slotted-angular-list.mjs +256 -0
- package/fesm2022/slotted-angular-list.mjs.map +1 -0
- package/fesm2022/slotted-angular-listbox.mjs +1274 -0
- package/fesm2022/slotted-angular-listbox.mjs.map +1 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs +451 -0
- package/fesm2022/slotted-angular-loading-overlay.mjs.map +1 -0
- package/fesm2022/slotted-angular-markdown.mjs +914 -0
- package/fesm2022/slotted-angular-markdown.mjs.map +1 -0
- package/fesm2022/slotted-angular-menu.mjs +1211 -0
- package/fesm2022/slotted-angular-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-menubar.mjs +230 -0
- package/fesm2022/slotted-angular-menubar.mjs.map +1 -0
- package/fesm2022/slotted-angular-message-scroller.mjs +378 -0
- package/fesm2022/slotted-angular-message-scroller.mjs.map +1 -0
- package/fesm2022/slotted-angular-message.mjs +866 -0
- package/fesm2022/slotted-angular-message.mjs.map +1 -0
- package/fesm2022/slotted-angular-multi-select.mjs +1939 -0
- package/fesm2022/slotted-angular-multi-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs +770 -0
- package/fesm2022/slotted-angular-navigation-menu.mjs.map +1 -0
- package/fesm2022/slotted-angular-notification-center.mjs +1172 -0
- package/fesm2022/slotted-angular-notification-center.mjs.map +1 -0
- package/fesm2022/slotted-angular-number-field.mjs +966 -0
- package/fesm2022/slotted-angular-number-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-otp-input.mjs +629 -0
- package/fesm2022/slotted-angular-otp-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-page-header.mjs +788 -0
- package/fesm2022/slotted-angular-page-header.mjs.map +1 -0
- package/fesm2022/slotted-angular-page.mjs +255 -0
- package/fesm2022/slotted-angular-page.mjs.map +1 -0
- package/fesm2022/slotted-angular-pagination.mjs +562 -0
- package/fesm2022/slotted-angular-pagination.mjs.map +1 -0
- package/fesm2022/slotted-angular-popover.mjs +799 -0
- package/fesm2022/slotted-angular-popover.mjs.map +1 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs +572 -0
- package/fesm2022/slotted-angular-progress-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs +596 -0
- package/fesm2022/slotted-angular-prompt-composer.mjs.map +1 -0
- package/fesm2022/slotted-angular-prose.mjs +314 -0
- package/fesm2022/slotted-angular-prose.mjs.map +1 -0
- package/fesm2022/slotted-angular-radio-group.mjs +469 -0
- package/fesm2022/slotted-angular-radio-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-rating.mjs +1174 -0
- package/fesm2022/slotted-angular-rating.mjs.map +1 -0
- package/fesm2022/slotted-angular-result-state.mjs +330 -0
- package/fesm2022/slotted-angular-result-state.mjs.map +1 -0
- package/fesm2022/slotted-angular-saved-views.mjs +877 -0
- package/fesm2022/slotted-angular-saved-views.mjs.map +1 -0
- package/fesm2022/slotted-angular-scroll-area.mjs +294 -0
- package/fesm2022/slotted-angular-scroll-area.mjs.map +1 -0
- package/fesm2022/slotted-angular-section.mjs +266 -0
- package/fesm2022/slotted-angular-section.mjs.map +1 -0
- package/fesm2022/slotted-angular-segmented-control.mjs +454 -0
- package/fesm2022/slotted-angular-segmented-control.mjs.map +1 -0
- package/fesm2022/slotted-angular-select.mjs +1899 -0
- package/fesm2022/slotted-angular-select.mjs.map +1 -0
- package/fesm2022/slotted-angular-side-navigation.mjs +1042 -0
- package/fesm2022/slotted-angular-side-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-skeleton.mjs +316 -0
- package/fesm2022/slotted-angular-skeleton.mjs.map +1 -0
- package/fesm2022/slotted-angular-slider.mjs +586 -0
- package/fesm2022/slotted-angular-slider.mjs.map +1 -0
- package/fesm2022/slotted-angular-sparkline.mjs +235 -0
- package/fesm2022/slotted-angular-sparkline.mjs.map +1 -0
- package/fesm2022/slotted-angular-split-button.mjs +331 -0
- package/fesm2022/slotted-angular-split-button.mjs.map +1 -0
- package/fesm2022/slotted-angular-splitter.mjs +516 -0
- package/fesm2022/slotted-angular-splitter.mjs.map +1 -0
- package/fesm2022/slotted-angular-stack.mjs +48 -0
- package/fesm2022/slotted-angular-stack.mjs.map +1 -0
- package/fesm2022/slotted-angular-stat-card.mjs +478 -0
- package/fesm2022/slotted-angular-stat-card.mjs.map +1 -0
- package/fesm2022/slotted-angular-status-indicator.mjs +155 -0
- package/fesm2022/slotted-angular-status-indicator.mjs.map +1 -0
- package/fesm2022/slotted-angular-stepper.mjs +536 -0
- package/fesm2022/slotted-angular-stepper.mjs.map +1 -0
- package/fesm2022/slotted-angular-switch.mjs +447 -0
- package/fesm2022/slotted-angular-switch.mjs.map +1 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs +750 -0
- package/fesm2022/slotted-angular-table-of-contents.mjs.map +1 -0
- package/fesm2022/slotted-angular-table.mjs +2518 -0
- package/fesm2022/slotted-angular-table.mjs.map +1 -0
- package/fesm2022/slotted-angular-tabs.mjs +829 -0
- package/fesm2022/slotted-angular-tabs.mjs.map +1 -0
- package/fesm2022/slotted-angular-tag.mjs +595 -0
- package/fesm2022/slotted-angular-tag.mjs.map +1 -0
- package/fesm2022/slotted-angular-tags-input.mjs +1211 -0
- package/fesm2022/slotted-angular-tags-input.mjs.map +1 -0
- package/fesm2022/slotted-angular-text-field.mjs +674 -0
- package/fesm2022/slotted-angular-text-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-textarea.mjs +275 -0
- package/fesm2022/slotted-angular-textarea.mjs.map +1 -0
- package/fesm2022/slotted-angular-theme.mjs +45 -0
- package/fesm2022/slotted-angular-theme.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-field.mjs +895 -0
- package/fesm2022/slotted-angular-time-field.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-picker.mjs +856 -0
- package/fesm2022/slotted-angular-time-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs +1534 -0
- package/fesm2022/slotted-angular-time-range-picker.mjs.map +1 -0
- package/fesm2022/slotted-angular-timeline.mjs +928 -0
- package/fesm2022/slotted-angular-timeline.mjs.map +1 -0
- package/fesm2022/slotted-angular-toast.mjs +917 -0
- package/fesm2022/slotted-angular-toast.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle-group.mjs +311 -0
- package/fesm2022/slotted-angular-toggle-group.mjs.map +1 -0
- package/fesm2022/slotted-angular-toggle.mjs +162 -0
- package/fesm2022/slotted-angular-toggle.mjs.map +1 -0
- package/fesm2022/slotted-angular-toolbar.mjs +536 -0
- package/fesm2022/slotted-angular-toolbar.mjs.map +1 -0
- package/fesm2022/slotted-angular-tooltip.mjs +798 -0
- package/fesm2022/slotted-angular-tooltip.mjs.map +1 -0
- package/fesm2022/slotted-angular-top-navigation.mjs +1308 -0
- package/fesm2022/slotted-angular-top-navigation.mjs.map +1 -0
- package/fesm2022/slotted-angular-tour.mjs +1330 -0
- package/fesm2022/slotted-angular-tour.mjs.map +1 -0
- package/fesm2022/slotted-angular-transfer.mjs +1406 -0
- package/fesm2022/slotted-angular-transfer.mjs.map +1 -0
- package/fesm2022/slotted-angular-tree.mjs +1448 -0
- package/fesm2022/slotted-angular-tree.mjs.map +1 -0
- package/fesm2022/slotted-angular-typography.mjs +184 -0
- package/fesm2022/slotted-angular-typography.mjs.map +1 -0
- package/fesm2022/slotted-angular-upload.mjs +1523 -0
- package/fesm2022/slotted-angular-upload.mjs.map +1 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs +32 -0
- package/fesm2022/slotted-angular-visually-hidden.mjs.map +1 -0
- package/fesm2022/slotted-angular-wizard.mjs +1715 -0
- package/fesm2022/slotted-angular-wizard.mjs.map +1 -0
- package/fesm2022/slotted-angular.mjs +4 -0
- package/fesm2022/slotted-angular.mjs.map +1 -0
- package/package.json +537 -3
- package/types/slotted-angular-accordion.d.ts +156 -0
- package/types/slotted-angular-accordion.d.ts.map +1 -0
- package/types/slotted-angular-action-bar.d.ts +291 -0
- package/types/slotted-angular-action-bar.d.ts.map +1 -0
- package/types/slotted-angular-action-sheet.d.ts +294 -0
- package/types/slotted-angular-action-sheet.d.ts.map +1 -0
- package/types/slotted-angular-alert.d.ts +214 -0
- package/types/slotted-angular-alert.d.ts.map +1 -0
- package/types/slotted-angular-app-shell.d.ts +549 -0
- package/types/slotted-angular-app-shell.d.ts.map +1 -0
- package/types/slotted-angular-aspect-ratio.d.ts +57 -0
- package/types/slotted-angular-aspect-ratio.d.ts.map +1 -0
- package/types/slotted-angular-attachment.d.ts +294 -0
- package/types/slotted-angular-attachment.d.ts.map +1 -0
- package/types/slotted-angular-avatar-group.d.ts +119 -0
- package/types/slotted-angular-avatar-group.d.ts.map +1 -0
- package/types/slotted-angular-avatar.d.ts +202 -0
- package/types/slotted-angular-avatar.d.ts.map +1 -0
- package/types/slotted-angular-badge.d.ts +166 -0
- package/types/slotted-angular-badge.d.ts.map +1 -0
- package/types/slotted-angular-breadcrumb.d.ts +251 -0
- package/types/slotted-angular-breadcrumb.d.ts.map +1 -0
- package/types/slotted-angular-button-group.d.ts +89 -0
- package/types/slotted-angular-button-group.d.ts.map +1 -0
- package/types/slotted-angular-button.d.ts +390 -0
- package/types/slotted-angular-button.d.ts.map +1 -0
- package/types/slotted-angular-calendar.d.ts +280 -0
- package/types/slotted-angular-calendar.d.ts.map +1 -0
- package/types/slotted-angular-card.d.ts +140 -0
- package/types/slotted-angular-card.d.ts.map +1 -0
- package/types/slotted-angular-carousel.d.ts +288 -0
- package/types/slotted-angular-carousel.d.ts.map +1 -0
- package/types/slotted-angular-cascader.d.ts +351 -0
- package/types/slotted-angular-cascader.d.ts.map +1 -0
- package/types/slotted-angular-chart.d.ts +319 -0
- package/types/slotted-angular-chart.d.ts.map +1 -0
- package/types/slotted-angular-checkbox-group.d.ts +156 -0
- package/types/slotted-angular-checkbox-group.d.ts.map +1 -0
- package/types/slotted-angular-checkbox.d.ts +197 -0
- package/types/slotted-angular-checkbox.d.ts.map +1 -0
- package/types/slotted-angular-code-block.d.ts +158 -0
- package/types/slotted-angular-code-block.d.ts.map +1 -0
- package/types/slotted-angular-collapsible.d.ts +272 -0
- package/types/slotted-angular-collapsible.d.ts.map +1 -0
- package/types/slotted-angular-color-picker.d.ts +181 -0
- package/types/slotted-angular-color-picker.d.ts.map +1 -0
- package/types/slotted-angular-column-manager.d.ts +200 -0
- package/types/slotted-angular-column-manager.d.ts.map +1 -0
- package/types/slotted-angular-combobox.d.ts +449 -0
- package/types/slotted-angular-combobox.d.ts.map +1 -0
- package/types/slotted-angular-command-palette.d.ts +256 -0
- package/types/slotted-angular-command-palette.d.ts.map +1 -0
- package/types/slotted-angular-container.d.ts +84 -0
- package/types/slotted-angular-container.d.ts.map +1 -0
- package/types/slotted-angular-context-menu.d.ts +84 -0
- package/types/slotted-angular-context-menu.d.ts.map +1 -0
- package/types/slotted-angular-currency-field.d.ts +480 -0
- package/types/slotted-angular-currency-field.d.ts.map +1 -0
- package/types/slotted-angular-dashboard-grid.d.ts +341 -0
- package/types/slotted-angular-dashboard-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-grid.d.ts +1077 -0
- package/types/slotted-angular-data-grid.d.ts.map +1 -0
- package/types/slotted-angular-data-list.d.ts +272 -0
- package/types/slotted-angular-data-list.d.ts.map +1 -0
- package/types/slotted-angular-date-field.d.ts +320 -0
- package/types/slotted-angular-date-field.d.ts.map +1 -0
- package/types/slotted-angular-date-picker.d.ts +224 -0
- package/types/slotted-angular-date-picker.d.ts.map +1 -0
- package/types/slotted-angular-date-range-picker.d.ts +310 -0
- package/types/slotted-angular-date-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-field.d.ts +362 -0
- package/types/slotted-angular-datetime-field.d.ts.map +1 -0
- package/types/slotted-angular-datetime-picker.d.ts +370 -0
- package/types/slotted-angular-datetime-picker.d.ts.map +1 -0
- package/types/slotted-angular-datetime-range-picker.d.ts +459 -0
- package/types/slotted-angular-datetime-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-description-list.d.ts +281 -0
- package/types/slotted-angular-description-list.d.ts.map +1 -0
- package/types/slotted-angular-detail-panel.d.ts +240 -0
- package/types/slotted-angular-detail-panel.d.ts.map +1 -0
- package/types/slotted-angular-dialog.d.ts +497 -0
- package/types/slotted-angular-dialog.d.ts.map +1 -0
- package/types/slotted-angular-divider.d.ts +40 -0
- package/types/slotted-angular-divider.d.ts.map +1 -0
- package/types/slotted-angular-drawer.d.ts +532 -0
- package/types/slotted-angular-drawer.d.ts.map +1 -0
- package/types/slotted-angular-entity-picker.d.ts +338 -0
- package/types/slotted-angular-entity-picker.d.ts.map +1 -0
- package/types/slotted-angular-event-calendar.d.ts +574 -0
- package/types/slotted-angular-event-calendar.d.ts.map +1 -0
- package/types/slotted-angular-field-group.d.ts +152 -0
- package/types/slotted-angular-field-group.d.ts.map +1 -0
- package/types/slotted-angular-field.d.ts +535 -0
- package/types/slotted-angular-field.d.ts.map +1 -0
- package/types/slotted-angular-filter-bar.d.ts +573 -0
- package/types/slotted-angular-filter-bar.d.ts.map +1 -0
- package/types/slotted-angular-form.d.ts +298 -0
- package/types/slotted-angular-form.d.ts.map +1 -0
- package/types/slotted-angular-fullscreen.d.ts +145 -0
- package/types/slotted-angular-fullscreen.d.ts.map +1 -0
- package/types/slotted-angular-grid.d.ts +50 -0
- package/types/slotted-angular-grid.d.ts.map +1 -0
- package/types/slotted-angular-highlight.d.ts +93 -0
- package/types/slotted-angular-highlight.d.ts.map +1 -0
- package/types/slotted-angular-hover-card.d.ts +140 -0
- package/types/slotted-angular-hover-card.d.ts.map +1 -0
- package/types/slotted-angular-i18n.d.ts +46 -0
- package/types/slotted-angular-i18n.d.ts.map +1 -0
- package/types/slotted-angular-icon.d.ts +94 -0
- package/types/slotted-angular-icon.d.ts.map +1 -0
- package/types/slotted-angular-image.d.ts +251 -0
- package/types/slotted-angular-image.d.ts.map +1 -0
- package/types/slotted-angular-import-export-center.d.ts +351 -0
- package/types/slotted-angular-import-export-center.d.ts.map +1 -0
- package/types/slotted-angular-inline-message.d.ts +195 -0
- package/types/slotted-angular-inline-message.d.ts.map +1 -0
- package/types/slotted-angular-inline.d.ts +41 -0
- package/types/slotted-angular-inline.d.ts.map +1 -0
- package/types/slotted-angular-kbd.d.ts +174 -0
- package/types/slotted-angular-kbd.d.ts.map +1 -0
- package/types/slotted-angular-link.d.ts +94 -0
- package/types/slotted-angular-link.d.ts.map +1 -0
- package/types/slotted-angular-list-item.d.ts +210 -0
- package/types/slotted-angular-list-item.d.ts.map +1 -0
- package/types/slotted-angular-list.d.ts +176 -0
- package/types/slotted-angular-list.d.ts.map +1 -0
- package/types/slotted-angular-listbox.d.ts +470 -0
- package/types/slotted-angular-listbox.d.ts.map +1 -0
- package/types/slotted-angular-loading-overlay.d.ts +219 -0
- package/types/slotted-angular-loading-overlay.d.ts.map +1 -0
- package/types/slotted-angular-markdown.d.ts +172 -0
- package/types/slotted-angular-markdown.d.ts.map +1 -0
- package/types/slotted-angular-menu.d.ts +448 -0
- package/types/slotted-angular-menu.d.ts.map +1 -0
- package/types/slotted-angular-menubar.d.ts +90 -0
- package/types/slotted-angular-menubar.d.ts.map +1 -0
- package/types/slotted-angular-message-scroller.d.ts +151 -0
- package/types/slotted-angular-message-scroller.d.ts.map +1 -0
- package/types/slotted-angular-message.d.ts +348 -0
- package/types/slotted-angular-message.d.ts.map +1 -0
- package/types/slotted-angular-multi-select.d.ts +462 -0
- package/types/slotted-angular-multi-select.d.ts.map +1 -0
- package/types/slotted-angular-navigation-menu.d.ts +309 -0
- package/types/slotted-angular-navigation-menu.d.ts.map +1 -0
- package/types/slotted-angular-notification-center.d.ts +318 -0
- package/types/slotted-angular-notification-center.d.ts.map +1 -0
- package/types/slotted-angular-number-field.d.ts +402 -0
- package/types/slotted-angular-number-field.d.ts.map +1 -0
- package/types/slotted-angular-otp-input.d.ts +286 -0
- package/types/slotted-angular-otp-input.d.ts.map +1 -0
- package/types/slotted-angular-page-header.d.ts +334 -0
- package/types/slotted-angular-page-header.d.ts.map +1 -0
- package/types/slotted-angular-page.d.ts +141 -0
- package/types/slotted-angular-page.d.ts.map +1 -0
- package/types/slotted-angular-pagination.d.ts +213 -0
- package/types/slotted-angular-pagination.d.ts.map +1 -0
- package/types/slotted-angular-popover.d.ts +366 -0
- package/types/slotted-angular-popover.d.ts.map +1 -0
- package/types/slotted-angular-progress-indicator.d.ts +312 -0
- package/types/slotted-angular-progress-indicator.d.ts.map +1 -0
- package/types/slotted-angular-prompt-composer.d.ts +242 -0
- package/types/slotted-angular-prompt-composer.d.ts.map +1 -0
- package/types/slotted-angular-prose.d.ts +171 -0
- package/types/slotted-angular-prose.d.ts.map +1 -0
- package/types/slotted-angular-radio-group.d.ts +268 -0
- package/types/slotted-angular-radio-group.d.ts.map +1 -0
- package/types/slotted-angular-rating.d.ts +374 -0
- package/types/slotted-angular-rating.d.ts.map +1 -0
- package/types/slotted-angular-result-state.d.ts +217 -0
- package/types/slotted-angular-result-state.d.ts.map +1 -0
- package/types/slotted-angular-saved-views.d.ts +198 -0
- package/types/slotted-angular-saved-views.d.ts.map +1 -0
- package/types/slotted-angular-scroll-area.d.ts +186 -0
- package/types/slotted-angular-scroll-area.d.ts.map +1 -0
- package/types/slotted-angular-section.d.ts +143 -0
- package/types/slotted-angular-section.d.ts.map +1 -0
- package/types/slotted-angular-segmented-control.d.ts +251 -0
- package/types/slotted-angular-segmented-control.d.ts.map +1 -0
- package/types/slotted-angular-select.d.ts +507 -0
- package/types/slotted-angular-select.d.ts.map +1 -0
- package/types/slotted-angular-side-navigation.d.ts +373 -0
- package/types/slotted-angular-side-navigation.d.ts.map +1 -0
- package/types/slotted-angular-skeleton.d.ts +198 -0
- package/types/slotted-angular-skeleton.d.ts.map +1 -0
- package/types/slotted-angular-slider.d.ts +216 -0
- package/types/slotted-angular-slider.d.ts.map +1 -0
- package/types/slotted-angular-sparkline.d.ts +106 -0
- package/types/slotted-angular-sparkline.d.ts.map +1 -0
- package/types/slotted-angular-split-button.d.ts +180 -0
- package/types/slotted-angular-split-button.d.ts.map +1 -0
- package/types/slotted-angular-splitter.d.ts +206 -0
- package/types/slotted-angular-splitter.d.ts.map +1 -0
- package/types/slotted-angular-stack.d.ts +38 -0
- package/types/slotted-angular-stack.d.ts.map +1 -0
- package/types/slotted-angular-stat-card.d.ts +232 -0
- package/types/slotted-angular-stat-card.d.ts.map +1 -0
- package/types/slotted-angular-status-indicator.d.ts +106 -0
- package/types/slotted-angular-status-indicator.d.ts.map +1 -0
- package/types/slotted-angular-stepper.d.ts +198 -0
- package/types/slotted-angular-stepper.d.ts.map +1 -0
- package/types/slotted-angular-switch.d.ts +243 -0
- package/types/slotted-angular-switch.d.ts.map +1 -0
- package/types/slotted-angular-table-of-contents.d.ts +210 -0
- package/types/slotted-angular-table-of-contents.d.ts.map +1 -0
- package/types/slotted-angular-table.d.ts +888 -0
- package/types/slotted-angular-table.d.ts.map +1 -0
- package/types/slotted-angular-tabs.d.ts +340 -0
- package/types/slotted-angular-tabs.d.ts.map +1 -0
- package/types/slotted-angular-tag.d.ts +279 -0
- package/types/slotted-angular-tag.d.ts.map +1 -0
- package/types/slotted-angular-tags-input.d.ts +302 -0
- package/types/slotted-angular-tags-input.d.ts.map +1 -0
- package/types/slotted-angular-text-field.d.ts +334 -0
- package/types/slotted-angular-text-field.d.ts.map +1 -0
- package/types/slotted-angular-textarea.d.ts +150 -0
- package/types/slotted-angular-textarea.d.ts.map +1 -0
- package/types/slotted-angular-theme.d.ts +26 -0
- package/types/slotted-angular-theme.d.ts.map +1 -0
- package/types/slotted-angular-time-field.d.ts +300 -0
- package/types/slotted-angular-time-field.d.ts.map +1 -0
- package/types/slotted-angular-time-picker.d.ts +260 -0
- package/types/slotted-angular-time-picker.d.ts.map +1 -0
- package/types/slotted-angular-time-range-picker.d.ts +401 -0
- package/types/slotted-angular-time-range-picker.d.ts.map +1 -0
- package/types/slotted-angular-timeline.d.ts +329 -0
- package/types/slotted-angular-timeline.d.ts.map +1 -0
- package/types/slotted-angular-toast.d.ts +340 -0
- package/types/slotted-angular-toast.d.ts.map +1 -0
- package/types/slotted-angular-toggle-group.d.ts +167 -0
- package/types/slotted-angular-toggle-group.d.ts.map +1 -0
- package/types/slotted-angular-toggle.d.ts +106 -0
- package/types/slotted-angular-toggle.d.ts.map +1 -0
- package/types/slotted-angular-toolbar.d.ts +252 -0
- package/types/slotted-angular-toolbar.d.ts.map +1 -0
- package/types/slotted-angular-tooltip.d.ts +388 -0
- package/types/slotted-angular-tooltip.d.ts.map +1 -0
- package/types/slotted-angular-top-navigation.d.ts +442 -0
- package/types/slotted-angular-top-navigation.d.ts.map +1 -0
- package/types/slotted-angular-tour.d.ts +440 -0
- package/types/slotted-angular-tour.d.ts.map +1 -0
- package/types/slotted-angular-transfer.d.ts +296 -0
- package/types/slotted-angular-transfer.d.ts.map +1 -0
- package/types/slotted-angular-tree.d.ts +499 -0
- package/types/slotted-angular-tree.d.ts.map +1 -0
- package/types/slotted-angular-typography.d.ts +89 -0
- package/types/slotted-angular-typography.d.ts.map +1 -0
- package/types/slotted-angular-upload.d.ts +365 -0
- package/types/slotted-angular-upload.d.ts.map +1 -0
- package/types/slotted-angular-visually-hidden.d.ts +19 -0
- package/types/slotted-angular-visually-hidden.d.ts.map +1 -0
- package/types/slotted-angular-wizard.d.ts +441 -0
- package/types/slotted-angular-wizard.d.ts.map +1 -0
- package/types/slotted-angular.d.ts +3 -0
- package/types/slotted-angular.d.ts.map +1 -0
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
<!-- index: ./index.md -->
|
|
2
|
+
# prompt-composer
|
|
3
|
+
|
|
4
|
+
`data-ui="prompt-composer"` · Multi-line message input with send and tools.
|
|
5
|
+
|
|
6
|
+
## Import
|
|
7
|
+
|
|
8
|
+
```ts
|
|
9
|
+
import {
|
|
10
|
+
providePromptComposerDefaults,
|
|
11
|
+
SlPromptComposer,
|
|
12
|
+
SlPromptComposerAction,
|
|
13
|
+
SlPromptComposerAttach,
|
|
14
|
+
SlPromptComposerFooter,
|
|
15
|
+
SlPromptComposerHeader,
|
|
16
|
+
SlPromptComposerInput,
|
|
17
|
+
SlPromptComposerSubmit,
|
|
18
|
+
} from '@slotted/angular/prompt-composer';
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Selector: `form[slPromptComposer]` · exportAs: `slPromptComposer`
|
|
22
|
+
|
|
23
|
+
## Minimal example
|
|
24
|
+
|
|
25
|
+
Excerpt — not a complete module
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<form slPromptComposer [status]="status()" (valueSubmit)="send($event.value)" (stop)="abort()">
|
|
29
|
+
<textarea
|
|
30
|
+
slPromptComposerInput
|
|
31
|
+
aria-label="Mensagem"
|
|
32
|
+
placeholder="Pergunte ao assistente"
|
|
33
|
+
></textarea>
|
|
34
|
+
<div slPromptComposerFooter>
|
|
35
|
+
<button slPromptComposerAttach></button>
|
|
36
|
+
<button slPromptComposerSubmit></button>
|
|
37
|
+
</div>
|
|
38
|
+
</form>
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
## Anatomy
|
|
42
|
+
|
|
43
|
+
| Part | Element | Required |
|
|
44
|
+
| --- | --- | --- |
|
|
45
|
+
| `root` | form[slPromptComposer], the consumer’s own form | yes |
|
|
46
|
+
| `header` | any element carrying slPromptComposerHeader | no |
|
|
47
|
+
| `input` | textarea[slPromptComposerInput] | yes |
|
|
48
|
+
| `footer` | any element carrying slPromptComposerFooter | no |
|
|
49
|
+
| `action` | button[slPromptComposerAction] | no |
|
|
50
|
+
| `attach` | button[slPromptComposerAttach] | no |
|
|
51
|
+
| `submit` | button[slPromptComposerSubmit] | no |
|
|
52
|
+
|
|
53
|
+
## Props
|
|
54
|
+
|
|
55
|
+
| Name | Type | Default | Applies to | Description |
|
|
56
|
+
| --- | --- | --- | --- | --- |
|
|
57
|
+
| `value` | `string` | — | slPromptComposer | Present means the consumer owns the value. defaultValue is the uncontrolled half |
|
|
58
|
+
| `defaultValue` | `string` | — | slPromptComposer | What an uncontrolled composer starts from |
|
|
59
|
+
| `status` | `'ready' \| 'submitted' \| 'streaming' \| 'error'` | ready | slPromptComposer | Where the request stands. submitted is busy, streaming turns the send into a stop, error into a retry |
|
|
60
|
+
| `submitOn` | `'enter' \| 'mod-enter'` | enter | slPromptComposer, providePromptComposerDefaults | Which key sends. Shift+Enter always breaks a line; Mod+Enter always sends |
|
|
61
|
+
| `size` | `'sm' \| 'md' \| 'lg'` | md | slPromptComposer, providePromptComposerDefaults | The control step, read from the field first |
|
|
62
|
+
| `variant` | `'raised' \| 'outline' \| 'subtle'` | raised | slPromptComposer, providePromptComposerDefaults | raised is the chat surface; outline and subtle sit inside a form |
|
|
63
|
+
| `canSubmit` | `boolean` | the value is not blank | slPromptComposer | Whether the send is available; an application with attachments ready says true |
|
|
64
|
+
| `accept / maxSize / maxFiles / multiple` | `string / number / number / boolean` | — / — / — / true | slPromptComposer | The selection rules upload applies, for the paperclip, a paste and a drop |
|
|
65
|
+
| `disabled` | `boolean` | from the field, or false | slPromptComposer | Unstated rather than false, so the composer defers to its field. The native attribute on the textarea; the paperclip and the send leave the tab order with it |
|
|
66
|
+
| `readOnly` | `boolean` | from the field, or false | slPromptComposer | The value stays focusable and copyable; the paperclip and the send are withdrawn |
|
|
67
|
+
| `invalid` | `boolean` | from the field, or false | slPromptComposer | aria-invalid on the textarea and the danger edge on the frame |
|
|
68
|
+
| `required` | `boolean` | from the field | slPromptComposer | aria-required on the textarea, never the native attribute, which would engage constraint validation |
|
|
69
|
+
| `loading` | `derived` | false | slPromptComposer | data-loading on the frame while status is submitted or streaming; it is read from status, never set |
|
|
70
|
+
| `rows` | `number` | 1 | slPromptComposerInput | The fewest lines the value shows |
|
|
71
|
+
| `maxRows` | `number` | 8 | slPromptComposerInput | The most lines it grows to before it scrolls |
|
|
72
|
+
| `showCount` | `boolean` | false | slPromptComposerInput | Publishes the length of the value to the field, which draws the count |
|
|
73
|
+
| `messages` | `Partial<PromptComposerMessages>` | — | slPromptComposer | Words laid over the language in force, key by key: what the send says in each status, what is announced, and the paperclip’s name |
|
|
74
|
+
| `exportAs` | `slPromptComposer, slPromptComposerInput, slPromptComposerAction` | — | the directives | Reach the instance from a template; slPromptComposerInput.inputElement is the native textarea |
|
|
75
|
+
| `button[slPromptComposerAction]` | `directive` | type="button" | a band | A button of the consumer’s; slMenuTriggerFor or slTooltipTrigger sit on the same element, and the part is written back after the first render |
|
|
76
|
+
| `providePromptComposerDefaults` | `(defaults: Partial<PromptComposerDefaults>) => Provider` | — | an injector | The decisions an application takes once |
|
|
77
|
+
| `ControlValueAccessor` | `formControl, ngModel` | — | slPromptComposerInput | The value belongs in a reactive or template-driven form as it stands |
|
|
78
|
+
|
|
79
|
+
## Events
|
|
80
|
+
|
|
81
|
+
| Name | Payload | When |
|
|
82
|
+
| --- | --- | --- |
|
|
83
|
+
| `(valueChange)` | `ChangeRequest<string>` | On slPromptComposerInput, before the value moves: reason "keyboard" for an edit, "submit" for the clearing after an accepted send. cancel() refuses the move. |
|
|
84
|
+
| `(valueSubmit)` | `ChangeRequest<string>` | On slPromptComposer, before the message is sent from Enter, Mod+Enter or the send — reason "keyboard" or "pointer". cancel() keeps the value; otherwise it is cleared. |
|
|
85
|
+
| `(stop)` | `PromptComposerStopEvent — { reason, source }` | The stop button, while status is "streaming". “Stopped” is announced. |
|
|
86
|
+
| `(attach)` | `PromptComposerAttachEvent — { files, reason, rejected, source }` | Files from the paperclip ("pointer"), a paste ("paste") or a drop ("drop"), after accept, maxSize, maxFiles and multiple. |
|
|
87
|
+
| `ControlValueAccessor` | `the form’s own value and touched state` | On slPromptComposerInput, whenever the value moves and the request was not cancelled — including the clearing after a send — and on blur for touched. |
|
|
88
|
+
|
|
89
|
+
## Axes and defaults
|
|
90
|
+
|
|
91
|
+
| Axis | Values | Default |
|
|
92
|
+
| --- | --- | --- |
|
|
93
|
+
| `size` | `sm`, `md`, `lg` | `md` |
|
|
94
|
+
| `variant` | `raised`, `outline`, `subtle` | `raised` |
|
|
95
|
+
| `submitOn` | `enter`, `mod-enter` | `enter` |
|
|
96
|
+
| `status` | `ready`, `submitted`, `streaming`, `error` | `ready` |
|
|
97
|
+
|
|
98
|
+
## Rules
|
|
99
|
+
|
|
100
|
+
- There is no APG pattern for a composer; the textarea supplies the textbox role, the field supplies the name, and the root is the consumer’s form, so Enter in the value and the send button are the platform’s submission.
|
|
101
|
+
- The send is named by the label for its status — Send, Sending, Stop, Retry — and the change of name is what a screen reader hears when the request moves; “Sending” and “Stopped” are announced once through the shared live announcer.
|
|
102
|
+
- While the request is submitted the send is aria-disabled rather than disabled, so focus is not thrown out of it; Enter in the value does nothing until the status returns.
|
|
103
|
+
- Enter never sends while an input method is composing (isComposing, keyCode 229): in Japanese and Chinese Enter confirms the composition.
|
|
104
|
+
- The attachments are the application’s list and are drawn with attachment, which owns their names, their removal and the focus after a removal. Refused files are reported in onAttach so the application can say why.
|
|
105
|
+
- The bands are not an APG toolbar: each button keeps its own tab stop, because there are few of them and they do different things.
|
|
106
|
+
|
|
107
|
+
## Tokens
|
|
108
|
+
|
|
109
|
+
`--slotted-border-strong`, `--slotted-border-subtle`, `--slotted-border-width-medium`, `--slotted-border-width-thin`, `--slotted-control-border-color`, `--slotted-control-border-width`, `--slotted-control-font-family`, `--slotted-control-font-size-lg`, `--slotted-control-font-size-md`, `--slotted-control-font-size-sm`, `--slotted-control-height-lg`, `--slotted-control-height-md`, `--slotted-control-height-sm`, `--slotted-control-icon-size-lg`, `--slotted-control-icon-size-md`, `--slotted-control-icon-size-sm`, `--slotted-control-inner-size-lg`, `--slotted-control-inner-size-md`, `--slotted-control-inner-size-sm`, `--slotted-control-invalid-edge-width`, `--slotted-control-shadow`, `--slotted-control-shadow-focus-geometry`, `--slotted-control-surface`, `--slotted-control-transition-duration`, `--slotted-control-transition-easing`, `--slotted-disabled-background`, `--slotted-disabled-border`, `--slotted-disabled-foreground`, `--slotted-duration-medium`, `--slotted-duration-short`, `--slotted-easing-enter`, `--slotted-easing-exit`, `--slotted-easing-standard`, `--slotted-focus-ring-color`, `--slotted-focus-ring-color-invalid`, `--slotted-focus-ring-offset`, `--slotted-focus-ring-width`, `--slotted-font-weight-medium`, `--slotted-line-height-md`, `--slotted-prompt-composer-action-active-background`, `--slotted-prompt-composer-action-color`, `--slotted-prompt-composer-action-hover-background`, `--slotted-prompt-composer-action-label-color`, `--slotted-prompt-composer-background`, `--slotted-prompt-composer-border-color`, `--slotted-prompt-composer-caret-color`, `--slotted-prompt-composer-color`, `--slotted-prompt-composer-disabled-background`, `--slotted-prompt-composer-disabled-border-color`, `--slotted-prompt-composer-disabled-color`, `--slotted-prompt-composer-drop-background`, `--slotted-prompt-composer-drop-border-color`, `--slotted-prompt-composer-hover-border-color`, `--slotted-prompt-composer-invalid-border-color`, `--slotted-prompt-composer-invalid-edge-width`, `--slotted-prompt-composer-invalid-focus-ring-color`, `--slotted-prompt-composer-line-height`, `--slotted-prompt-composer-max-rows`, `--slotted-prompt-composer-placeholder-color`, `--slotted-prompt-composer-radius`, `--slotted-prompt-composer-raised-focus-shadow`, `--slotted-prompt-composer-raised-shadow`, `--slotted-prompt-composer-readonly-background`, `--slotted-prompt-composer-rows`, `--slotted-prompt-composer-selection-background`, `--slotted-prompt-composer-shadow`, `--slotted-prompt-composer-submit-active-background`, `--slotted-prompt-composer-submit-background`, `--slotted-prompt-composer-submit-color`, `--slotted-prompt-composer-submit-disabled-background`, `--slotted-prompt-composer-submit-hover-background`, `--slotted-prompt-composer-subtle-background`, `--slotted-prompt-composer-subtle-border-color`, `--slotted-radius-full`, `--slotted-radius-lg`, `--slotted-radius-xs`, `--slotted-shadow-lg`, `--slotted-shadow-md`, `--slotted-space-1`, `--slotted-space-2`, `--slotted-space-3`, `--slotted-space-4`, `--slotted-space-5`, `--slotted-surface-sunken`, `--slotted-target-comfortable`, `--slotted-target-min`, `--slotted-text`, `--slotted-text-muted`, `--slotted-tone-accent-border`, `--slotted-tone-accent-on-solid`, `--slotted-tone-accent-solid`, `--slotted-tone-accent-solid-active`, `--slotted-tone-accent-solid-hover`, `--slotted-tone-accent-surface`, `--slotted-tone-danger-border`, `--slotted-tone-secondary-subtle-active`, `--slotted-tone-secondary-subtle-hover`
|
|
110
|
+
|
|
111
|
+
## Examples
|
|
112
|
+
|
|
113
|
+
### An assistant that answers while you wait
|
|
114
|
+
|
|
115
|
+
Send a question: the status goes to submitted, then streaming, and back to ready when the answer ends — the send turns into a ring, then a stop inside the ring. Press stop and the answer is cut short. The model is a menu on an action.
|
|
116
|
+
|
|
117
|
+
Excerpt — not a complete module
|
|
118
|
+
|
|
119
|
+
```html
|
|
120
|
+
<form
|
|
121
|
+
slPromptComposer
|
|
122
|
+
[status]="chat.status()"
|
|
123
|
+
(valueSubmit)="chat.send($event.value)"
|
|
124
|
+
(stop)="chat.stop()"
|
|
125
|
+
>
|
|
126
|
+
<textarea
|
|
127
|
+
slPromptComposerInput
|
|
128
|
+
aria-label="Mensagem"
|
|
129
|
+
placeholder="Pergunte ao assistente"
|
|
130
|
+
></textarea>
|
|
131
|
+
<div slPromptComposerFooter>
|
|
132
|
+
<button slPromptComposerAttach></button>
|
|
133
|
+
<button slPromptComposerAction [slMenuTriggerFor]="models">{{ model() }}</button>
|
|
134
|
+
<button slPromptComposerSubmit></button>
|
|
135
|
+
</div>
|
|
136
|
+
</form>
|
|
137
|
+
<sl-menu #models>
|
|
138
|
+
<sl-menu-radio-group [(value)]="model">
|
|
139
|
+
<button slMenuRadioItem value="Claude Opus">Claude Opus</button>
|
|
140
|
+
</sl-menu-radio-group>
|
|
141
|
+
</sl-menu>
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### A comment box in a form
|
|
145
|
+
|
|
146
|
+
The outline variant keeps a one-line control’s geometry beside the other fields. The send is named by its word, Comentar; Cancelar is an action. Enter breaks a line here, because a comment has paragraphs: Mod+Enter sends.
|
|
147
|
+
|
|
148
|
+
Excerpt — not a complete module
|
|
149
|
+
|
|
150
|
+
```html
|
|
151
|
+
<form slPromptComposer variant="outline" submitOn="mod-enter" (valueSubmit)="post($event.value)">
|
|
152
|
+
<textarea slPromptComposerInput aria-label="Comentário" rows="3"></textarea>
|
|
153
|
+
<div slPromptComposerFooter>
|
|
154
|
+
<button slPromptComposerAction (click)="close()">Cancelar</button>
|
|
155
|
+
<button slPromptComposerSubmit>Comentar</button>
|
|
156
|
+
</div>
|
|
157
|
+
</form>
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Attaching by the paperclip, a paste and a drop
|
|
161
|
+
|
|
162
|
+
Choose files, paste a screenshot into the value, or drag files over the frame — it washes in the accent and draws a dashed edge before you let go. Images and PDFs up to 5 MB are accepted; anything else is listed as refused. The attachments are the application’s list, drawn with attachment.
|
|
163
|
+
|
|
164
|
+
Excerpt — not a complete module
|
|
165
|
+
|
|
166
|
+
```html
|
|
167
|
+
<form
|
|
168
|
+
slPromptComposer
|
|
169
|
+
accept="image/*,application/pdf"
|
|
170
|
+
[maxSize]="5000000"
|
|
171
|
+
[canSubmit]="files().length > 0 || undefined"
|
|
172
|
+
(attach)="add($event.files, $event.rejected)"
|
|
173
|
+
>
|
|
174
|
+
<div slPromptComposerHeader>
|
|
175
|
+
<ul slAttachmentGroup layout="strip" size="sm" aria-label="Anexos">
|
|
176
|
+
@for (file of files(); track file.name) {
|
|
177
|
+
<li slAttachment [file]="file" removable (remove)="remove(file)">
|
|
178
|
+
<span slAttachmentPreview></span>
|
|
179
|
+
<div slAttachmentBody><span slAttachmentFilename></span></div>
|
|
180
|
+
<div slAttachmentActions><button slAttachmentRemove></button></div>
|
|
181
|
+
</li>
|
|
182
|
+
}
|
|
183
|
+
</ul>
|
|
184
|
+
</div>
|
|
185
|
+
<textarea slPromptComposerInput aria-label="Mensagem"></textarea>
|
|
186
|
+
<div slPromptComposerFooter>
|
|
187
|
+
<button slPromptComposerAttach></button>
|
|
188
|
+
<button slPromptComposerSubmit></button>
|
|
189
|
+
</div>
|
|
190
|
+
</form>
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
### The four statuses of the request
|
|
194
|
+
|
|
195
|
+
ready sends; submitted is busy and refuses Enter; streaming stops; error offers a retry. The status is the application’s, because only the application knows whether an answer is on its way.
|
|
196
|
+
|
|
197
|
+
Excerpt — not a complete module
|
|
198
|
+
|
|
199
|
+
```html
|
|
200
|
+
<form slPromptComposer status="ready"></form>
|
|
201
|
+
<form slPromptComposer status="submitted"></form>
|
|
202
|
+
<form slPromptComposer status="streaming" (stop)="abort()"></form>
|
|
203
|
+
<form slPromptComposer status="error"></form>
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### The step the composer sits at
|
|
207
|
+
|
|
208
|
+
Three steps of the control scale, and three variants: raised lifts a chat surface off the page, outline and subtle sit inside a form. Switch the toolbar to dense and each step shrinks whole.
|
|
209
|
+
|
|
210
|
+
Excerpt — not a complete module
|
|
211
|
+
|
|
212
|
+
```html
|
|
213
|
+
<form slPromptComposer size="sm"></form>
|
|
214
|
+
<form slPromptComposer size="md" variant="outline"></form>
|
|
215
|
+
<form slPromptComposer size="lg" variant="subtle"></form>
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
### Invalid, read-only and disabled
|
|
219
|
+
|
|
220
|
+
Invalid takes the danger edge and the field’s message says why; read-only keeps the value legible and copyable and withdraws the send; disabled mutes everything to the measured colour and takes the composer out of the tab order.
|
|
221
|
+
|
|
222
|
+
Excerpt — not a complete module
|
|
223
|
+
|
|
224
|
+
```html
|
|
225
|
+
<div slField [invalid]="true">
|
|
226
|
+
<label slFieldLabel>Mensagem</label>
|
|
227
|
+
<form slPromptComposer>
|
|
228
|
+
<textarea slPromptComposerInput></textarea>
|
|
229
|
+
</form>
|
|
230
|
+
<p slFieldError>A mensagem passa de 2 000 caracteres.</p>
|
|
231
|
+
</div>
|
|
232
|
+
<form slPromptComposer>
|
|
233
|
+
<textarea slPromptComposerInput readOnly defaultValue="Arquivado"></textarea>
|
|
234
|
+
</form>
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Long, translated and right-to-left
|
|
238
|
+
|
|
239
|
+
A long message grows to maxRows and then scrolls, with the band still under the thumb. Each paragraph takes its own direction, so an Arabic line and a Portuguese line sit in one value without either ending at the wrong margin.
|
|
240
|
+
|
|
241
|
+
Excerpt — not a complete module
|
|
242
|
+
|
|
243
|
+
```html
|
|
244
|
+
<form slPromptComposer>
|
|
245
|
+
<textarea slPromptComposerInput aria-label="Mensagem" maxRows="6"></textarea>
|
|
246
|
+
</form>
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Setting it once, and reaching past it
|
|
250
|
+
|
|
251
|
+
providePromptComposerDefaults carries the variant and the send key, and the words come from the language in force; exportAs reaches the textarea, which already has select(); the value binds to a reactive form.
|
|
252
|
+
|
|
253
|
+
Excerpt — not a complete module
|
|
254
|
+
|
|
255
|
+
```html
|
|
256
|
+
<form slPromptComposer>
|
|
257
|
+
<textarea
|
|
258
|
+
slPromptComposerInput
|
|
259
|
+
#mensagem="slPromptComposerInput"
|
|
260
|
+
[formControl]="texto"
|
|
261
|
+
></textarea>
|
|
262
|
+
<div slPromptComposerFooter>
|
|
263
|
+
<button slPromptComposerAction (click)="mensagem.inputElement.select()">Selecionar</button>
|
|
264
|
+
<button slPromptComposerSubmit></button>
|
|
265
|
+
</div>
|
|
266
|
+
</form>
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
### What the keyboard does
|
|
270
|
+
|
|
271
|
+
Enter sends and Shift+Enter breaks a line; with submitOn="mod-enter" Enter breaks a line and Mod+Enter sends. Nothing is sent while an input method is composing, because there Enter confirms the composition. Escape is not bound.
|
|
272
|
+
|
|
273
|
+
Excerpt — not a complete module
|
|
274
|
+
|
|
275
|
+
```html
|
|
276
|
+
<form slPromptComposer submitOn="enter"></form>
|
|
277
|
+
<form slPromptComposer submitOn="mod-enter"></form>
|
|
278
|
+
```
|
package/docs/prose.json
ADDED
|
@@ -0,0 +1,357 @@
|
|
|
1
|
+
{
|
|
2
|
+
"family": "prose",
|
|
3
|
+
"ui": "prose",
|
|
4
|
+
"binding": "angular",
|
|
5
|
+
"catalog": {
|
|
6
|
+
"group": "Data display",
|
|
7
|
+
"summary": "Styles long-form HTML text."
|
|
8
|
+
},
|
|
9
|
+
"axes": {
|
|
10
|
+
"size": [
|
|
11
|
+
"md",
|
|
12
|
+
"lg",
|
|
13
|
+
"xl"
|
|
14
|
+
],
|
|
15
|
+
"flow": [
|
|
16
|
+
"tight",
|
|
17
|
+
"normal",
|
|
18
|
+
"loose"
|
|
19
|
+
]
|
|
20
|
+
},
|
|
21
|
+
"members": {
|
|
22
|
+
"prose": {
|
|
23
|
+
"nativeElement": "div",
|
|
24
|
+
"defaults": {
|
|
25
|
+
"size": "lg",
|
|
26
|
+
"flow": "normal"
|
|
27
|
+
},
|
|
28
|
+
"capabilities": [
|
|
29
|
+
"appearance",
|
|
30
|
+
"arrangement",
|
|
31
|
+
"size",
|
|
32
|
+
"wiring"
|
|
33
|
+
],
|
|
34
|
+
"states": [
|
|
35
|
+
"default",
|
|
36
|
+
"hover",
|
|
37
|
+
"focus-visible"
|
|
38
|
+
],
|
|
39
|
+
"parts": [
|
|
40
|
+
"root",
|
|
41
|
+
"lead",
|
|
42
|
+
"anchor",
|
|
43
|
+
"scroll",
|
|
44
|
+
"exclude",
|
|
45
|
+
"footnotes"
|
|
46
|
+
]
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
"docs": {
|
|
50
|
+
"prose": {
|
|
51
|
+
"imports": {
|
|
52
|
+
"source": "import {\n provideProseDefaults,\n SlProse,\n SlProseAnchor,\n SlProseExclude,\n SlProseFootnotes,\n SlProseLead,\n SlProseScroll,\n} from '@slotted/angular/prose';",
|
|
53
|
+
"selector": "[slProse]",
|
|
54
|
+
"exportAs": "slProse"
|
|
55
|
+
},
|
|
56
|
+
"anatomy": [
|
|
57
|
+
{
|
|
58
|
+
"part": "root",
|
|
59
|
+
"element": "the element the page wrote — div, article, section",
|
|
60
|
+
"required": true,
|
|
61
|
+
"purpose": "The region. The selector is an attribute, so the page keeps its own element: a div claims nothing, and article or main is a claim the page makes. Carries data-ui=\"prose\", the two axes, and the container this family answers its own width with."
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"part": "lead",
|
|
65
|
+
"element": "p, by slProseLead",
|
|
66
|
+
"required": false,
|
|
67
|
+
"purpose": "The opening paragraph, one step up and in the muted role, with a wider gap after it than two ordinary paragraphs get. Tailwind’s equivalent is a class written into the Markdown; here it is contract, so a renderer’s component map can produce it."
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
"part": "anchor",
|
|
71
|
+
"element": "a, by slProseAnchor",
|
|
72
|
+
"required": false,
|
|
73
|
+
"purpose": "A heading’s permalink. The destination is the consumer’s — rehype-autolink-headings writes it — and the family owns the placement, the 24-pixel target, the word joiner before it and the rule that it appears on hover and on focus. Hidden with opacity, never display, so a keyboard reaches it."
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
"part": "scroll",
|
|
77
|
+
"element": "div, by slProseScroll",
|
|
78
|
+
"required": false,
|
|
79
|
+
"purpose": "A wide block — a table, a fence — that scrolls sideways instead of pushing the page over. It takes role=\"region\", tabindex=\"0\" and a name only while it actually overflows, measured through @slotted/core/overflow. exportAs reaches refresh()."
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"part": "exclude",
|
|
83
|
+
"element": "any element, by slProseExclude",
|
|
84
|
+
"required": false,
|
|
85
|
+
"purpose": "A subtree the family does not style. Every content rule carries a guard against it, and the four properties inheritance still carried in — family, size, leading and wrapping — are returned to control type."
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"part": "footnotes",
|
|
89
|
+
"element": "section, by slProseFootnotes",
|
|
90
|
+
"required": false,
|
|
91
|
+
"purpose": "What GitHub Flavored Markdown emits at the end of a document: a rule, a step down in size and the muted role."
|
|
92
|
+
}
|
|
93
|
+
],
|
|
94
|
+
"api": [
|
|
95
|
+
{
|
|
96
|
+
"name": "size",
|
|
97
|
+
"type": "'md' | 'lg' | 'xl'",
|
|
98
|
+
"defaultValue": "lg",
|
|
99
|
+
"appliesTo": "slProse",
|
|
100
|
+
"description": "The type-scale step the body text takes. Named for the scale’s own steps, so the offset from control type is visible: lg is one rem, and md is the size a button label is set in"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"name": "flow",
|
|
104
|
+
"type": "'tight' | 'normal' | 'loose'",
|
|
105
|
+
"defaultValue": "normal",
|
|
106
|
+
"appliesTo": "slProse",
|
|
107
|
+
"description": "The space between blocks, from which every other distance derives — the gap above a heading, between list rows, and around a rule. tight is a chat message, loose an article"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"name": "messages",
|
|
111
|
+
"type": "Partial<ProseMessages>",
|
|
112
|
+
"defaultValue": "—",
|
|
113
|
+
"appliesTo": "slProseScroll",
|
|
114
|
+
"description": "Words laid over the language in force: the last resort name of a scrolling block (scroll), used when neither labelledBy nor aria-label names one. It comes from the catalog rather than a required input because a renderer’s component map cannot supply one per table"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"name": "labelledBy",
|
|
118
|
+
"type": "string",
|
|
119
|
+
"defaultValue": "—",
|
|
120
|
+
"appliesTo": "slProseScroll",
|
|
121
|
+
"description": "Names it from an element already on the page — the block’s own caption is the good answer, and the one Adrian Roselli’s pattern uses"
|
|
122
|
+
}
|
|
123
|
+
],
|
|
124
|
+
"composition": [
|
|
125
|
+
{
|
|
126
|
+
"name": "the attribute selector",
|
|
127
|
+
"type": "directive",
|
|
128
|
+
"defaultValue": "—",
|
|
129
|
+
"appliesTo": "every part",
|
|
130
|
+
"description": "Each part attaches to the element the template already has, so a page keeps its own tags and the family adds only its data attributes. Nothing is re-projected, and nothing needs NgTemplateOutlet"
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
"name": "exportAs",
|
|
134
|
+
"type": "slProse, slProseScroll",
|
|
135
|
+
"defaultValue": "—",
|
|
136
|
+
"appliesTo": "slProse, slProseScroll",
|
|
137
|
+
"description": "Reaches the instance from the template. On the scrolling block that is refresh() and isOverflowing(): content that arrived without Angular knowing — an image finishing, a renderer writing into the DOM — changes whether the block overflows after the observer measured"
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
"name": "provideProseDefaults",
|
|
141
|
+
"type": "{ size, flow }",
|
|
142
|
+
"defaultValue": "—",
|
|
143
|
+
"appliesTo": "a route or the application",
|
|
144
|
+
"description": "Sets both once for every region under it — Typeset’s presets, typed. An explicit input on one region still wins, and providing again on a route narrows the decision for part of an application"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"name": "role, aria-label",
|
|
148
|
+
"type": "static attribute",
|
|
149
|
+
"defaultValue": "—",
|
|
150
|
+
"appliesTo": "slProseScroll",
|
|
151
|
+
"description": "A name or a role the template wrote is read with HostAttributeToken before anything is bound over it, so a consumer who named the region itself keeps that name"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"name": "slContainer",
|
|
155
|
+
"type": "composition",
|
|
156
|
+
"defaultValue": "—",
|
|
157
|
+
"appliesTo": "around slProse",
|
|
158
|
+
"description": "The measure belongs to container and to it alone: size=\"measure\" is the maximum this family refuses to state. Tailwind bakes 65ch in and ships max-w-none to remove it"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"name": "slLink, slKbd, slCheckbox",
|
|
162
|
+
"type": "composition",
|
|
163
|
+
"defaultValue": "—",
|
|
164
|
+
"appliesTo": "inside slProse",
|
|
165
|
+
"description": "Every content rule weighs 0-1-0, so a family placed inside the region wins on specificity and is left exactly as it is. A bare a, hr or kbd from the renderer reads the same theme tokens the family would"
|
|
166
|
+
}
|
|
167
|
+
],
|
|
168
|
+
"events": [],
|
|
169
|
+
"accessibility": [
|
|
170
|
+
"There is no APG pattern for this family: the Authoring Practices publish patterns for widgets a reader operates, and a region of rendered text is not one. The governing sources are the platform’s own semantics for the elements a renderer emits, SC 1.4.8 and SC 1.4.12 for how that text may be spaced, and the axe rule scrollable-region-focusable for the one block a reader has to move.",
|
|
171
|
+
"A wide block takes role=\"region\", tabindex=\"0\" and a name only while it actually overflows. The axe rule makes an unreachable scroller a level A failure, and anything that takes focus then needs a name and a role or it fails SC 4.1.2 — so both halves are written together, and neither is written on a block that fits. A role the template wrote itself is kept.",
|
|
172
|
+
"The heading anchor is hidden with opacity, never with display: none or visibility: hidden. It stays in the tab sequence and in the accessible tree, appears on hover and on focus-visible, and holds a 24-pixel target — WCAG 2.2 SC 2.5.8. The directive writes a word joiner before it so the last word of a title and its permalink wrap together.",
|
|
173
|
+
"The family sets no fixed block size and clips no text box, so a reader raising line height to 1.5, paragraph spacing to 2 and tracking to 0.12 of the font size loses nothing — SC 1.4.12. Leading is stated once, at 1.5, rather than taken per step: the scale pairs 1.45 with its two largest steps because a control label is one line, and a paragraph is not.",
|
|
174
|
+
"Every rule is written in logical properties, so a right-to-left document is the same component mirrored rather than a second stylesheet. A fence is the exception and is forced left to right: the order of the characters is what the code means.",
|
|
175
|
+
"The family holds no mutable value, so it emits nothing and has no output table. Which words appear here is the renderer’s decision, and so is whether they are announced: a region that announced every appended token would read a whole answer twice.",
|
|
176
|
+
"It does not sanitise. Angular’s own DomSanitizer and the renderer that produced the tree are where that belongs, and a component that both styled and sanitised would hide which of the two failed."
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
},
|
|
180
|
+
"tokens": [
|
|
181
|
+
"--slotted-border-strong",
|
|
182
|
+
"--slotted-border-subtle",
|
|
183
|
+
"--slotted-border-width-thick",
|
|
184
|
+
"--slotted-border-width-thin",
|
|
185
|
+
"--slotted-divider-color",
|
|
186
|
+
"--slotted-divider-thickness",
|
|
187
|
+
"--slotted-duration-short",
|
|
188
|
+
"--slotted-easing-standard",
|
|
189
|
+
"--slotted-focus-ring-color",
|
|
190
|
+
"--slotted-focus-ring-width",
|
|
191
|
+
"--slotted-font-family-heading",
|
|
192
|
+
"--slotted-font-family-mono",
|
|
193
|
+
"--slotted-font-family-sans",
|
|
194
|
+
"--slotted-font-size-lg",
|
|
195
|
+
"--slotted-font-size-md",
|
|
196
|
+
"--slotted-font-size-xl",
|
|
197
|
+
"--slotted-font-weight-medium",
|
|
198
|
+
"--slotted-font-weight-semibold",
|
|
199
|
+
"--slotted-kbd-border-width",
|
|
200
|
+
"--slotted-kbd-font-family",
|
|
201
|
+
"--slotted-kbd-font-weight",
|
|
202
|
+
"--slotted-kbd-radius",
|
|
203
|
+
"--slotted-line-height-2xl",
|
|
204
|
+
"--slotted-line-height-3xl",
|
|
205
|
+
"--slotted-line-height-lg",
|
|
206
|
+
"--slotted-line-height-md",
|
|
207
|
+
"--slotted-link-color",
|
|
208
|
+
"--slotted-link-color-hover",
|
|
209
|
+
"--slotted-link-focus-ring-offset",
|
|
210
|
+
"--slotted-link-underline-color",
|
|
211
|
+
"--slotted-link-underline-offset",
|
|
212
|
+
"--slotted-link-underline-thickness",
|
|
213
|
+
"--slotted-prose-anchor-gap",
|
|
214
|
+
"--slotted-prose-caption-size",
|
|
215
|
+
"--slotted-prose-code-inset",
|
|
216
|
+
"--slotted-prose-code-size",
|
|
217
|
+
"--slotted-prose-flow-loose",
|
|
218
|
+
"--slotted-prose-flow-normal",
|
|
219
|
+
"--slotted-prose-flow-tight",
|
|
220
|
+
"--slotted-prose-focus-ring-offset",
|
|
221
|
+
"--slotted-prose-font-family",
|
|
222
|
+
"--slotted-prose-footnotes-size",
|
|
223
|
+
"--slotted-prose-h1-size",
|
|
224
|
+
"--slotted-prose-h1-size-narrow",
|
|
225
|
+
"--slotted-prose-h2-size",
|
|
226
|
+
"--slotted-prose-h2-size-narrow",
|
|
227
|
+
"--slotted-prose-h3-size",
|
|
228
|
+
"--slotted-prose-h4-size",
|
|
229
|
+
"--slotted-prose-h5-size",
|
|
230
|
+
"--slotted-prose-h6-size",
|
|
231
|
+
"--slotted-prose-h6-tracking",
|
|
232
|
+
"--slotted-prose-lead-line-height",
|
|
233
|
+
"--slotted-prose-lead-size",
|
|
234
|
+
"--slotted-prose-line-height",
|
|
235
|
+
"--slotted-prose-list-inset",
|
|
236
|
+
"--slotted-prose-list-inset-narrow",
|
|
237
|
+
"--slotted-prose-mark-inset",
|
|
238
|
+
"--slotted-prose-marker-gap",
|
|
239
|
+
"--slotted-prose-media-radius",
|
|
240
|
+
"--slotted-prose-quote-color",
|
|
241
|
+
"--slotted-prose-quote-inset",
|
|
242
|
+
"--slotted-prose-quote-thickness",
|
|
243
|
+
"--slotted-prose-small-size",
|
|
244
|
+
"--slotted-radius-md",
|
|
245
|
+
"--slotted-radius-sm",
|
|
246
|
+
"--slotted-radius-xs",
|
|
247
|
+
"--slotted-space-4",
|
|
248
|
+
"--slotted-space-5",
|
|
249
|
+
"--slotted-space-6",
|
|
250
|
+
"--slotted-surface-raised",
|
|
251
|
+
"--slotted-surface-sunken",
|
|
252
|
+
"--slotted-target-min",
|
|
253
|
+
"--slotted-text",
|
|
254
|
+
"--slotted-text-muted",
|
|
255
|
+
"--slotted-tone-accent-text",
|
|
256
|
+
"--slotted-tone-warning-surface",
|
|
257
|
+
"--slotted-tone-warning-text"
|
|
258
|
+
],
|
|
259
|
+
"examples": [
|
|
260
|
+
{
|
|
261
|
+
"id": "playground",
|
|
262
|
+
"title": "Playground",
|
|
263
|
+
"note": "One region of rendered Markdown with both axes on it, driven by the controls below the canvas. Nothing inside carries an attribute the application wrote.",
|
|
264
|
+
"language": "html",
|
|
265
|
+
"source": "<article slProse size=\"lg\" flow=\"normal\" [innerHTML]=\"rendered\"></article>\n",
|
|
266
|
+
"verdict": "excerpt"
|
|
267
|
+
},
|
|
268
|
+
{
|
|
269
|
+
"id": "elements",
|
|
270
|
+
"title": "Every element a renderer emits",
|
|
271
|
+
"note": "Headings, lists, a quotation, a fence, a table, media, a rule, a description list, a disclosure and the inline set — all bare tags, styled without a single attribute of their own.",
|
|
272
|
+
"language": "html",
|
|
273
|
+
"source": "<div slProse [innerHTML]=\"sanitized\"></div>\n",
|
|
274
|
+
"verdict": "excerpt"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
"id": "size",
|
|
278
|
+
"title": "Size",
|
|
279
|
+
"note": "The type-scale step the body takes. lg is one rem and is the default; md is the size a button label is set in, for a region inside dense product chrome.",
|
|
280
|
+
"language": "html",
|
|
281
|
+
"source": "<div slProse size=\"md\">…</div>\n<div slProse size=\"lg\">…</div>\n<div slProse size=\"xl\">…</div>\n",
|
|
282
|
+
"verdict": "excerpt"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "flow",
|
|
286
|
+
"title": "Flow",
|
|
287
|
+
"note": "The one number that governs every gap on the page. Heading spacing, list spacing and the room around a rule all derive from it, so a chat message and an article are one input apart.",
|
|
288
|
+
"language": "html",
|
|
289
|
+
"source": "<div slProse flow=\"tight\">…</div>\n<div slProse flow=\"normal\">…</div>\n<div slProse flow=\"loose\">…</div>\n",
|
|
290
|
+
"verdict": "excerpt"
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
"id": "lead",
|
|
294
|
+
"title": "The lead paragraph",
|
|
295
|
+
"note": "The opening sentence set one step up, in the muted role, with a wider gap under it — so the opening reads as its own movement rather than as the first of several paragraphs.",
|
|
296
|
+
"language": "html",
|
|
297
|
+
"source": "<div slProse>\n <h2>Deploying a service</h2>\n <p slProseLead>Everything a team needs to move a service to production.</p>\n <p>A deployment is three decisions…</p>\n</div>\n",
|
|
298
|
+
"verdict": "excerpt"
|
|
299
|
+
},
|
|
300
|
+
{
|
|
301
|
+
"id": "anchor",
|
|
302
|
+
"title": "Heading anchors",
|
|
303
|
+
"note": "Hover a heading, then tab to its permalink: it appears for both, because a control that answers hover alone is a control a keyboard cannot find. It holds its box whether visible or not, so revealing it moves nothing.",
|
|
304
|
+
"language": "html",
|
|
305
|
+
"source": "<h2 id=\"deploying\">\n Deploying a service<a slProseAnchor href=\"#deploying\" aria-label=\"Link to this section\">#</a>\n</h2>\n",
|
|
306
|
+
"verdict": "excerpt"
|
|
307
|
+
},
|
|
308
|
+
{
|
|
309
|
+
"id": "scroll",
|
|
310
|
+
"title": "A block wider than its column",
|
|
311
|
+
"note": "Tab into the table below: it takes a tab stop, a region role and a name only because it overflows. Widen the window until it fits and all three disappear, which is the point.",
|
|
312
|
+
"language": "html",
|
|
313
|
+
"source": "<div slProseScroll labelledBy=\"environments\" #wide=\"slProseScroll\">\n <table>\n <caption id=\"environments\">\n Environments and their gates\n </caption>\n </table>\n</div>\n<button type=\"button\" (click)=\"wide.refresh()\">Measure again</button>\n",
|
|
314
|
+
"verdict": "excerpt"
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
"id": "exclude",
|
|
318
|
+
"title": "Opting a component out",
|
|
319
|
+
"note": "The card below sits inside the region and keeps its own type, rhythm and colour. Everything around it is still set by the family, and the boundary is one directive.",
|
|
320
|
+
"language": "html",
|
|
321
|
+
"source": "<div slProse>\n <p>Styled by the family.</p>\n <div slProseExclude>\n <div slCard>Untouched.</div>\n </div>\n</div>\n",
|
|
322
|
+
"verdict": "excerpt"
|
|
323
|
+
},
|
|
324
|
+
{
|
|
325
|
+
"id": "streaming",
|
|
326
|
+
"title": "Content that is still arriving",
|
|
327
|
+
"note": "Press the button and blocks are appended one at a time, the way a language model answers. Nothing already on screen moves: no rule in this family selects forward, and every gap is on the block that arrives.",
|
|
328
|
+
"language": "html",
|
|
329
|
+
"source": "<div slProse flow=\"tight\">\n @for (block of blocks(); track block.id) {\n <p>{{ block.text }}</p>\n }\n</div>\n",
|
|
330
|
+
"verdict": "excerpt"
|
|
331
|
+
},
|
|
332
|
+
{
|
|
333
|
+
"id": "content",
|
|
334
|
+
"title": "Content the family did not choose",
|
|
335
|
+
"note": "A body that starts at h3, two headings with nothing between them, a pasted destination with no break in it, four levels of list, and a right-to-left paragraph in the middle of the page.",
|
|
336
|
+
"language": "html",
|
|
337
|
+
"source": "<div slProse>\n <h3>A body that does not start at the top level</h3>\n <h4>Two headings with nothing between them</h4>\n <p lang=\"ar\" dir=\"rtl\">فقرة عربية داخل نفس المنطقة.</p>\n</div>\n",
|
|
338
|
+
"verdict": "excerpt"
|
|
339
|
+
},
|
|
340
|
+
{
|
|
341
|
+
"id": "composition",
|
|
342
|
+
"title": "The families it sits with",
|
|
343
|
+
"note": "slContainer bounds the measure, and a real slLink inside the text wins on specificity — every content rule here is written to lose to a family placed inside it.",
|
|
344
|
+
"language": "html",
|
|
345
|
+
"source": "<div slContainer size=\"measure\">\n <article slProse>\n <p>Read <a slLink href=\"/guide\">the guide</a> first.</p>\n </article>\n</div>\n",
|
|
346
|
+
"verdict": "excerpt"
|
|
347
|
+
},
|
|
348
|
+
{
|
|
349
|
+
"id": "accessibility",
|
|
350
|
+
"title": "Accessibility",
|
|
351
|
+
"note": "The two things in this family a reader operates: the permalink beside a heading, and the scrolling block. Tab through the region and both take focus in the order the document holds them.",
|
|
352
|
+
"language": "html",
|
|
353
|
+
"source": "<div slProse>\n <h2 id=\"gates\">Gates<a slProseAnchor href=\"#gates\" aria-label=\"Link to this section\">#</a></h2>\n <div slProseScroll labelledBy=\"gates\">\n <table></table>\n </div>\n</div>\n",
|
|
354
|
+
"verdict": "excerpt"
|
|
355
|
+
}
|
|
356
|
+
]
|
|
357
|
+
}
|