@masmarino/gabarit 2.0.0 → 2.1.1
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 +131 -85
- package/accordion/README.md +56 -0
- package/alert/README.md +87 -0
- package/app-shell/README.md +133 -0
- package/auth/README.md +155 -0
- package/auth-activate/README.md +119 -0
- package/auth-login/README.md +113 -0
- package/auth-register/README.md +104 -0
- package/auth-reset-password/README.md +120 -0
- package/autocomplete/README.md +77 -0
- package/avatar/README.md +34 -0
- package/avatar-group/README.md +47 -0
- package/badge/README.md +177 -0
- package/bar-chart/README.md +44 -0
- package/breadcrumb/README.md +38 -0
- package/button/README.md +175 -0
- package/card/README.md +179 -0
- package/checkbox/README.md +50 -0
- package/checkbox-group/README.md +78 -0
- package/confirm-danger-modal/README.md +77 -0
- package/copy-button/README.md +90 -0
- package/copy-field/README.md +54 -0
- package/date-picker/README.md +84 -0
- package/description-list/README.md +63 -0
- package/dimension-card/README.md +39 -0
- package/disclosure/README.md +48 -0
- package/divider/README.md +31 -0
- package/drawer/README.md +49 -0
- package/empty-state/README.md +84 -0
- package/fesm2022/masmarino-gabarit-accordion.mjs +243 -0
- package/fesm2022/masmarino-gabarit-accordion.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-alert.mjs +208 -0
- package/fesm2022/masmarino-gabarit-alert.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-app-shell.mjs +378 -0
- package/fesm2022/masmarino-gabarit-app-shell.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-auth-activate.mjs +415 -0
- package/fesm2022/masmarino-gabarit-auth-activate.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-auth-login.mjs +467 -0
- package/fesm2022/masmarino-gabarit-auth-login.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-auth-register.mjs +457 -0
- package/fesm2022/masmarino-gabarit-auth-register.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-auth-reset-password.mjs +364 -0
- package/fesm2022/masmarino-gabarit-auth-reset-password.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-auth.mjs +844 -0
- package/fesm2022/masmarino-gabarit-auth.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-autocomplete.mjs +475 -0
- package/fesm2022/masmarino-gabarit-autocomplete.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-avatar-group.mjs +202 -0
- package/fesm2022/masmarino-gabarit-avatar-group.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-avatar.mjs +107 -0
- package/fesm2022/masmarino-gabarit-avatar.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-badge.mjs +449 -0
- package/fesm2022/masmarino-gabarit-badge.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-bar-chart.mjs +408 -0
- package/fesm2022/masmarino-gabarit-bar-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-breadcrumb.mjs +59 -0
- package/fesm2022/masmarino-gabarit-breadcrumb.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-button.mjs +374 -0
- package/fesm2022/masmarino-gabarit-button.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-card.mjs +400 -0
- package/fesm2022/masmarino-gabarit-card.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-chart.mjs +1289 -0
- package/fesm2022/masmarino-gabarit-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-checkbox-group.mjs +335 -0
- package/fesm2022/masmarino-gabarit-checkbox-group.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-checkbox.mjs +170 -0
- package/fesm2022/masmarino-gabarit-checkbox.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-confirm-danger-modal.mjs +387 -0
- package/fesm2022/masmarino-gabarit-confirm-danger-modal.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-copy-button.mjs +407 -0
- package/fesm2022/masmarino-gabarit-copy-button.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-copy-field.mjs +229 -0
- package/fesm2022/masmarino-gabarit-copy-field.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-date-picker.mjs +1242 -0
- package/fesm2022/masmarino-gabarit-date-picker.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-description-list.mjs +127 -0
- package/fesm2022/masmarino-gabarit-description-list.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-dimension-card.mjs +162 -0
- package/fesm2022/masmarino-gabarit-dimension-card.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-disclosure.mjs +154 -0
- package/fesm2022/masmarino-gabarit-disclosure.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-divider.mjs +90 -0
- package/fesm2022/masmarino-gabarit-divider.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-docs.mjs +16 -2
- package/fesm2022/masmarino-gabarit-docs.mjs.map +1 -1
- package/fesm2022/masmarino-gabarit-drawer.mjs +209 -0
- package/fesm2022/masmarino-gabarit-drawer.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-empty-state.mjs +226 -0
- package/fesm2022/masmarino-gabarit-empty-state.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-file-upload.mjs +335 -0
- package/fesm2022/masmarino-gabarit-file-upload.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-floating-panel.mjs +24 -0
- package/fesm2022/masmarino-gabarit-floating-panel.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-format.mjs +345 -0
- package/fesm2022/masmarino-gabarit-format.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-funnel-chart.mjs +247 -0
- package/fesm2022/masmarino-gabarit-funnel-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-gauge-bar.mjs +180 -0
- package/fesm2022/masmarino-gabarit-gauge-bar.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-git-field.mjs +127 -0
- package/fesm2022/masmarino-gabarit-git-field.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-icon-marker.mjs +150 -0
- package/fesm2022/masmarino-gabarit-icon-marker.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-icon.mjs +308 -0
- package/fesm2022/masmarino-gabarit-icon.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-input.mjs +493 -0
- package/fesm2022/masmarino-gabarit-input.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-job-graph.mjs +216 -0
- package/fesm2022/masmarino-gabarit-job-graph.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-job-status.mjs +104 -0
- package/fesm2022/masmarino-gabarit-job-status.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-line-chart.mjs +574 -0
- package/fesm2022/masmarino-gabarit-line-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-list-card.mjs +320 -0
- package/fesm2022/masmarino-gabarit-list-card.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-list-row.mjs +58 -0
- package/fesm2022/masmarino-gabarit-list-row.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-list-toolbar.mjs +369 -0
- package/fesm2022/masmarino-gabarit-list-toolbar.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-menu.mjs +464 -0
- package/fesm2022/masmarino-gabarit-menu.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-mfa-enrollment.mjs +897 -0
- package/fesm2022/masmarino-gabarit-mfa-enrollment.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-mfa-settings.mjs +629 -0
- package/fesm2022/masmarino-gabarit-mfa-settings.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-modal.mjs +260 -0
- package/fesm2022/masmarino-gabarit-modal.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-nav-tabs.mjs +332 -0
- package/fesm2022/masmarino-gabarit-nav-tabs.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-notification-dot.mjs +119 -0
- package/fesm2022/masmarino-gabarit-notification-dot.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-page-header.mjs +78 -0
- package/fesm2022/masmarino-gabarit-page-header.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-page-layout.mjs +157 -0
- package/fesm2022/masmarino-gabarit-page-layout.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-pagination.mjs +415 -0
- package/fesm2022/masmarino-gabarit-pagination.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-panel.mjs +80 -0
- package/fesm2022/masmarino-gabarit-panel.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-passkey-settings.mjs +606 -0
- package/fesm2022/masmarino-gabarit-passkey-settings.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-pie-chart.mjs +317 -0
- package/fesm2022/masmarino-gabarit-pie-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-popover.mjs +142 -0
- package/fesm2022/masmarino-gabarit-popover.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-radio-group.mjs +202 -0
- package/fesm2022/masmarino-gabarit-radio-group.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-save-status.mjs +142 -0
- package/fesm2022/masmarino-gabarit-save-status.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-search-bar.mjs +576 -0
- package/fesm2022/masmarino-gabarit-search-bar.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-secret-reveal.mjs +348 -0
- package/fesm2022/masmarino-gabarit-secret-reveal.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-segmented-control.mjs +272 -0
- package/fesm2022/masmarino-gabarit-segmented-control.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-select.mjs +512 -0
- package/fesm2022/masmarino-gabarit-select.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-skeleton-list.mjs +189 -0
- package/fesm2022/masmarino-gabarit-skeleton-list.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-skeleton.mjs +109 -0
- package/fesm2022/masmarino-gabarit-skeleton.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-slider.mjs +239 -0
- package/fesm2022/masmarino-gabarit-slider.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-sparkline.mjs +276 -0
- package/fesm2022/masmarino-gabarit-sparkline.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-spinner.mjs +86 -0
- package/fesm2022/masmarino-gabarit-spinner.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-stat-grid.mjs +139 -0
- package/fesm2022/masmarino-gabarit-stat-grid.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-stat-tile.mjs +312 -0
- package/fesm2022/masmarino-gabarit-stat-tile.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-stepper.mjs +219 -0
- package/fesm2022/masmarino-gabarit-stepper.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-switch.mjs +151 -0
- package/fesm2022/masmarino-gabarit-switch.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-table.mjs +206 -0
- package/fesm2022/masmarino-gabarit-table.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-tabs.mjs +210 -0
- package/fesm2022/masmarino-gabarit-tabs.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-tag-input.mjs +288 -0
- package/fesm2022/masmarino-gabarit-tag-input.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-tag.mjs +155 -0
- package/fesm2022/masmarino-gabarit-tag.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-textarea.mjs +369 -0
- package/fesm2022/masmarino-gabarit-textarea.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-timeline-chart.mjs +521 -0
- package/fesm2022/masmarino-gabarit-timeline-chart.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-toaster.mjs +220 -0
- package/fesm2022/masmarino-gabarit-toaster.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-tooltip.mjs +185 -0
- package/fesm2022/masmarino-gabarit-tooltip.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-tree.mjs +258 -0
- package/fesm2022/masmarino-gabarit-tree.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-user-chip.mjs +106 -0
- package/fesm2022/masmarino-gabarit-user-chip.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit.mjs +83 -24785
- package/fesm2022/masmarino-gabarit.mjs.map +1 -1
- package/file-upload/README.md +47 -0
- package/funnel-chart/README.md +39 -0
- package/gauge-bar/README.md +35 -0
- package/git-field/README.md +34 -0
- package/icon/README.md +52 -0
- package/icon-marker/README.md +37 -0
- package/input/README.md +120 -0
- package/job-graph/README.md +76 -0
- package/job-status/README.md +34 -0
- package/line-chart/README.md +52 -0
- package/list-card/README.md +144 -0
- package/list-row/README.md +72 -0
- package/list-toolbar/README.md +52 -0
- package/menu/README.md +90 -0
- package/mfa-enrollment/README.md +189 -0
- package/mfa-settings/README.md +154 -0
- package/modal/README.md +72 -0
- package/nav-tabs/README.md +106 -0
- package/notification-dot/README.md +43 -0
- package/package.json +329 -1
- package/page-header/README.md +56 -0
- package/page-layout/README.md +76 -0
- package/pagination/README.md +73 -0
- package/panel/README.md +56 -0
- package/passkey-settings/README.md +120 -0
- package/pie-chart/README.md +85 -0
- package/popover/README.md +62 -0
- package/radio-group/README.md +47 -0
- package/save-status/README.md +44 -0
- package/search-bar/README.md +84 -0
- package/secret-reveal/README.md +60 -0
- package/segmented-control/README.md +79 -0
- package/select/README.md +61 -0
- package/skeleton/README.md +49 -0
- package/skeleton-list/README.md +40 -0
- package/slider/README.md +44 -0
- package/sparkline/README.md +37 -0
- package/spinner/README.md +41 -0
- package/stat-grid/README.md +47 -0
- package/stat-tile/README.md +75 -0
- package/stepper/README.md +67 -0
- package/switch/README.md +51 -0
- package/table/README.md +75 -0
- package/tabs/README.md +34 -0
- package/tag/README.md +34 -0
- package/tag-input/README.md +45 -0
- package/textarea/README.md +76 -0
- package/timeline-chart/README.md +49 -0
- package/toaster/README.md +92 -0
- package/tooltip/README.md +50 -0
- package/tree/README.md +79 -0
- package/types/masmarino-gabarit-accordion.d.ts +54 -0
- package/types/masmarino-gabarit-alert.d.ts +65 -0
- package/types/masmarino-gabarit-app-shell.d.ts +102 -0
- package/types/masmarino-gabarit-auth-activate.d.ts +70 -0
- package/types/masmarino-gabarit-auth-login.d.ts +63 -0
- package/types/masmarino-gabarit-auth-register.d.ts +66 -0
- package/types/masmarino-gabarit-auth-reset-password.d.ts +53 -0
- package/types/masmarino-gabarit-auth.d.ts +543 -0
- package/types/masmarino-gabarit-autocomplete.d.ts +140 -0
- package/types/masmarino-gabarit-avatar-group.d.ts +60 -0
- package/types/masmarino-gabarit-avatar.d.ts +31 -0
- package/types/masmarino-gabarit-badge.d.ts +139 -0
- package/types/masmarino-gabarit-bar-chart.d.ts +111 -0
- package/types/masmarino-gabarit-breadcrumb.d.ts +12 -0
- package/types/masmarino-gabarit-button.d.ts +108 -0
- package/types/masmarino-gabarit-card.d.ts +102 -0
- package/types/masmarino-gabarit-chart.d.ts +361 -0
- package/types/masmarino-gabarit-checkbox-group.d.ts +113 -0
- package/types/masmarino-gabarit-checkbox.d.ts +49 -0
- package/types/masmarino-gabarit-confirm-danger-modal.d.ts +94 -0
- package/types/masmarino-gabarit-copy-button.d.ts +111 -0
- package/types/masmarino-gabarit-copy-field.d.ts +64 -0
- package/types/masmarino-gabarit-date-picker.d.ts +399 -0
- package/types/masmarino-gabarit-description-list.d.ts +40 -0
- package/types/masmarino-gabarit-dimension-card.d.ts +55 -0
- package/types/masmarino-gabarit-disclosure.d.ts +44 -0
- package/types/masmarino-gabarit-divider.d.ts +20 -0
- package/types/masmarino-gabarit-docs.d.ts +2 -1
- package/types/masmarino-gabarit-drawer.d.ts +51 -0
- package/types/masmarino-gabarit-empty-state.d.ts +67 -0
- package/types/masmarino-gabarit-file-upload.d.ts +95 -0
- package/types/masmarino-gabarit-floating-panel.d.ts +14 -0
- package/types/masmarino-gabarit-format.d.ts +54 -0
- package/types/masmarino-gabarit-funnel-chart.d.ts +78 -0
- package/types/masmarino-gabarit-gauge-bar.d.ts +54 -0
- package/types/masmarino-gabarit-git-field.d.ts +39 -0
- package/types/masmarino-gabarit-icon-marker.d.ts +47 -0
- package/types/masmarino-gabarit-icon.d.ts +23 -0
- package/types/masmarino-gabarit-input.d.ts +181 -0
- package/types/masmarino-gabarit-job-graph.d.ts +63 -0
- package/types/masmarino-gabarit-job-status.d.ts +20 -0
- package/types/masmarino-gabarit-line-chart.d.ts +153 -0
- package/types/masmarino-gabarit-list-card.d.ts +87 -0
- package/types/masmarino-gabarit-list-row.d.ts +14 -0
- package/types/masmarino-gabarit-list-toolbar.d.ts +100 -0
- package/types/masmarino-gabarit-menu.d.ts +93 -0
- package/types/masmarino-gabarit-mfa-enrollment.d.ts +142 -0
- package/types/masmarino-gabarit-mfa-settings.d.ts +89 -0
- package/types/masmarino-gabarit-modal.d.ts +60 -0
- package/types/masmarino-gabarit-nav-tabs.d.ts +65 -0
- package/types/masmarino-gabarit-notification-dot.d.ts +34 -0
- package/types/masmarino-gabarit-page-header.d.ts +20 -0
- package/types/masmarino-gabarit-page-layout.d.ts +46 -0
- package/types/masmarino-gabarit-pagination.d.ts +109 -0
- package/types/masmarino-gabarit-panel.d.ts +21 -0
- package/types/masmarino-gabarit-passkey-settings.d.ts +94 -0
- package/types/masmarino-gabarit-pie-chart.d.ts +94 -0
- package/types/masmarino-gabarit-popover.d.ts +33 -0
- package/types/masmarino-gabarit-radio-group.d.ts +66 -0
- package/types/masmarino-gabarit-save-status.d.ts +39 -0
- package/types/masmarino-gabarit-search-bar.d.ts +183 -0
- package/types/masmarino-gabarit-secret-reveal.d.ts +95 -0
- package/types/masmarino-gabarit-segmented-control.d.ts +76 -0
- package/types/masmarino-gabarit-select.d.ts +146 -0
- package/types/masmarino-gabarit-skeleton-list.d.ts +54 -0
- package/types/masmarino-gabarit-skeleton.d.ts +26 -0
- package/types/masmarino-gabarit-slider.d.ts +73 -0
- package/types/masmarino-gabarit-sparkline.d.ts +70 -0
- package/types/masmarino-gabarit-spinner.d.ts +20 -0
- package/types/masmarino-gabarit-stat-grid.d.ts +39 -0
- package/types/masmarino-gabarit-stat-tile.d.ts +79 -0
- package/types/masmarino-gabarit-stepper.d.ts +67 -0
- package/types/masmarino-gabarit-switch.d.ts +42 -0
- package/types/masmarino-gabarit-table.d.ts +60 -0
- package/types/masmarino-gabarit-tabs.d.ts +40 -0
- package/types/masmarino-gabarit-tag-input.d.ts +78 -0
- package/types/masmarino-gabarit-tag.d.ts +35 -0
- package/types/masmarino-gabarit-textarea.d.ts +109 -0
- package/types/masmarino-gabarit-timeline-chart.d.ts +145 -0
- package/types/masmarino-gabarit-toaster.d.ts +62 -0
- package/types/masmarino-gabarit-tooltip.d.ts +39 -0
- package/types/masmarino-gabarit-tree.d.ts +71 -0
- package/types/masmarino-gabarit-user-chip.d.ts +26 -0
- package/types/masmarino-gabarit.d.ts +83 -6599
- package/user-chip/README.md +42 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# FileUpload
|
|
2
|
+
|
|
3
|
+
Select one or more files by drag-and-drop or by clicking, with a
|
|
4
|
+
visual selected-files list (each removable) and optional size
|
|
5
|
+
validation. Integrates with Angular forms via `ControlValueAccessor`
|
|
6
|
+
(`File[]`), like `Select`.
|
|
7
|
+
|
|
8
|
+
**Selector**: `gbt-file-upload`
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
| Input | Type | Default | Role |
|
|
13
|
+
| ------------------ | ------------------------------------------------ | ------------------------------------------------------- | --------------------------------------------------------------- |
|
|
14
|
+
| `label` | `string` | `''` | Field label. |
|
|
15
|
+
| `multiple` | `boolean` | `false` | Accept more than one file. Selecting again replaces the current file when `false` — dropping or picking several files at once also keeps only the first and reports the rest as rejected (`extraFileMessage`), the same way an oversized file is reported. |
|
|
16
|
+
| `accept` | `string` | `''` | Native `accept` attribute (e.g. `'image/*'`) — a hint to the OS picker and drag source, not enforced by this component. |
|
|
17
|
+
| `maxSizeMb` | `number \| null` | `null` | Rejects (and reports) a file larger than this, in megabytes. |
|
|
18
|
+
| `disabled` | `boolean` | `false` | — |
|
|
19
|
+
| `errorMessage` | `string \| null` | `null` | Rendered as `role="alert"` below the file list. |
|
|
20
|
+
| `dropLabel` | `string` | `'Drag and drop a file here, or click to browse'` | The dropzone's own instructional text. |
|
|
21
|
+
| `removeLabel` | `(name: string) => string` | `` (name) => `Remove ${name}` `` | Accessible name of each file's remove button. |
|
|
22
|
+
| `oversizeMessage` | `(name: string, maxSizeMb: number) => string` | `` (name, max) => `${name} exceeds ${max} MB and was not added.` `` | Message shown per rejected file. |
|
|
23
|
+
| `extraFileMessage` | `(name: string) => string` | `` (name) => `${name} was not added — only one file is allowed.` `` | Message shown per extra file when more than one is dropped/picked while `multiple` is `false`. |
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<gbt-file-upload label="Justificatif de domicile" [maxSizeMb]="5" [formControl]="proof" />
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Behavior
|
|
32
|
+
|
|
33
|
+
- The whole dropzone is one `<button>` — clicking anywhere in it (not
|
|
34
|
+
just a nested "browse" link) opens the native file picker via a
|
|
35
|
+
hidden `<input type="file">`. A `<button>` can't contain another
|
|
36
|
+
interactive element, so there's no separate clickable "browse" word
|
|
37
|
+
inside it; the entire zone is the control.
|
|
38
|
+
- The hidden native input is `tabindex="-1"` and `aria-hidden="true"`
|
|
39
|
+
— it's a pure trigger mechanism, triggered programmatically via
|
|
40
|
+
`.click()` from the visible button, never meant to be independently
|
|
41
|
+
focused or perceived.
|
|
42
|
+
- Drag-and-drop has no direct keyboard equivalent, but every capability
|
|
43
|
+
it offers is also reachable via the same button (click → native
|
|
44
|
+
picker), so keyboard users lose nothing.
|
|
45
|
+
- A rejected (oversized) file is never silently dropped — its name and
|
|
46
|
+
reason appear in a `role="alert"` list, replaced (not appended to)
|
|
47
|
+
on the next selection attempt.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# FunnelChart
|
|
2
|
+
|
|
3
|
+
Step-by-step conversion funnel.
|
|
4
|
+
|
|
5
|
+
**Selector**: `gbt-funnel-chart`
|
|
6
|
+
|
|
7
|
+
Standalone, outside the dataviz base — has its own hover behavior, with
|
|
8
|
+
the same keyboard/pointer parity, and its own visually-hidden
|
|
9
|
+
`gbt-chart-table`.
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
| Input | Type | Role |
|
|
14
|
+
| ------------------ | ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `steps` | `FunnelStep[]` | Required. `{ label, value }` — the steps, in order. |
|
|
16
|
+
| `label` | `string` | Required. Accessible name of the chart. |
|
|
17
|
+
| `locale` | `string` | Required. Locale used to format numbers. |
|
|
18
|
+
| `emptyMessage` | `string` | Required. Message shown when `steps` is empty. |
|
|
19
|
+
| `tableCaption` | `string` | Required. Caption of the `sr-only` table. |
|
|
20
|
+
| `stepColumn` | `string` | Required. Header of that table's step column. |
|
|
21
|
+
| `valueColumn` | `string` | Required. Header of that table's value column. |
|
|
22
|
+
| `conversionColumn` | `string` | Required. Header of that table's conversion column. |
|
|
23
|
+
| `stepAnnouncement` | `(label: string, conversion: string) => string` | Required. Builds the wording of the announcement region (hover/focus on a step) from the label and the **already formatted** conversion from the previous step. |
|
|
24
|
+
|
|
25
|
+
## Example
|
|
26
|
+
|
|
27
|
+
```html
|
|
28
|
+
<gbt-funnel-chart
|
|
29
|
+
[steps]="[{ label: 'Visite', value: 1000 }, { label: 'Inscription', value: 320 }]"
|
|
30
|
+
label="Tunnel d'inscription"
|
|
31
|
+
locale="fr-FR"
|
|
32
|
+
emptyMessage="Aucune donnée"
|
|
33
|
+
tableCaption="Détail du tunnel d'inscription"
|
|
34
|
+
stepColumn="Étape"
|
|
35
|
+
valueColumn="Valeur"
|
|
36
|
+
conversionColumn="Conversion"
|
|
37
|
+
[stepAnnouncement]="(label, conversion) => label + ', ' + conversion"
|
|
38
|
+
/>
|
|
39
|
+
```
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# GaugeBar
|
|
2
|
+
|
|
3
|
+
Progress gauge with alert thresholds — standalone, outside the dataviz
|
|
4
|
+
base (no tooltip, no keyboard navigation).
|
|
5
|
+
|
|
6
|
+
**Selector**: `gbt-gauge-bar`
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
| Input | Type | Default | Role |
|
|
11
|
+
| ---------------- | --------------------------------------- | ------------------------------- | ---------------------------------------------------------- |
|
|
12
|
+
| `value` | `number` | required | Current value. |
|
|
13
|
+
| `max` | `number` | required | Maximum value. |
|
|
14
|
+
| `label` | `string` | required | Accessible name of the gauge (`role="progressbar"`). |
|
|
15
|
+
| `formattedValue` | `string` | required | Displayed value, **already formatted** — "62 GB / 100 GB". |
|
|
16
|
+
| `warningLabel` | `string` | required | Label announced at the warning threshold. |
|
|
17
|
+
| `criticalLabel` | `string` | required | Label announced at the critical threshold. |
|
|
18
|
+
| `thresholds` | `{ warning: number; critical: number }` | `{ warning: 70, critical: 90 }` | Thresholds as a percentage of `max`. |
|
|
19
|
+
|
|
20
|
+
`GaugeBar` accepts no formatting function: `formattedValue`,
|
|
21
|
+
`warningLabel`, and `criticalLabel` are strings already ready to
|
|
22
|
+
display — Gabarit ships no translation mechanism.
|
|
23
|
+
|
|
24
|
+
## Example
|
|
25
|
+
|
|
26
|
+
```html
|
|
27
|
+
<gbt-gauge-bar
|
|
28
|
+
[value]="257"
|
|
29
|
+
[max]="500"
|
|
30
|
+
label="Quota du registre Docker"
|
|
31
|
+
formattedValue="257 Gio / 500 Gio"
|
|
32
|
+
warningLabel="Avertissement"
|
|
33
|
+
criticalLabel="Critique"
|
|
34
|
+
/>
|
|
35
|
+
```
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# GitField
|
|
2
|
+
|
|
3
|
+
The family's animated commit graph, drawn on the graphite frame: lanes that drift slowly
|
|
4
|
+
sideways, commits that blink in turn, pushes running along some lanes, over two soft fields of
|
|
5
|
+
colour (the rust accent and the indigo). It sits behind the sign-in panel or a dark band.
|
|
6
|
+
|
|
7
|
+
**Selector**: `gbt-git-field` · **Import**: `@masmarino/gabarit/git-field`
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
Behind the sign-in pages, in the `[auth-backdrop]` slot of `gbt-auth-panel` and of the pages built
|
|
12
|
+
on it (`gbt-auth-login`, `gbt-auth-register`, `gbt-auth-activate`, `gbt-auth-reset-password`):
|
|
13
|
+
|
|
14
|
+
```html
|
|
15
|
+
<gbt-auth-login (loggedIn)="signedIn()">
|
|
16
|
+
<img auth-logo src="logo.svg" alt="Acme" />
|
|
17
|
+
<gbt-git-field auth-backdrop />
|
|
18
|
+
</gbt-auth-login>
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Anywhere else, it fills its nearest positioned ancestor (`position: absolute; inset: 0`), under
|
|
22
|
+
the content (`z-index: 0`): give that ancestor `position: relative` and `isolation: isolate`, and
|
|
23
|
+
lift the content above it.
|
|
24
|
+
|
|
25
|
+
## Behaviour
|
|
26
|
+
|
|
27
|
+
- Decoration only: `aria-hidden="true"` on the host, `focusable="false"` on the SVG, no pointer
|
|
28
|
+
events.
|
|
29
|
+
- The drawing comes from a seeded generator, so it is the same on the server and in the browser.
|
|
30
|
+
- Two identical tiles scroll by one width and start again, so the loop has no seam.
|
|
31
|
+
- It reads the frame's colours (`frame-tokens`) in both themes, since it is drawn on the graphite.
|
|
32
|
+
- The graph fades out towards the middle, where a centred panel sits, and stands further back
|
|
33
|
+
(half opacity) below 48rem, where the panel takes the whole width.
|
|
34
|
+
- Still under `prefers-reduced-motion: reduce`: the graph stays drawn, nothing moves.
|
package/icon/README.md
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# Icon
|
|
2
|
+
|
|
3
|
+
Renders an SVG icon registered in `IconRegistry` — always `aria-hidden`,
|
|
4
|
+
never meaningful on its own.
|
|
5
|
+
|
|
6
|
+
**Selector**: `gbt-icon`
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
| Input | Type | Role |
|
|
11
|
+
| ------ | -------- | ------------------------------------------------------------------------------ |
|
|
12
|
+
| `name` | `string` | Name of the registered icon. Required. Nothing renders if the name is unknown. |
|
|
13
|
+
|
|
14
|
+
## Built-in icons
|
|
15
|
+
|
|
16
|
+
Gabarit ships the icons its own components use plus the generic UI glyphs
|
|
17
|
+
most applications need (Lucide, inner markup only). Browse them in Storybook
|
|
18
|
+
(`Atoms/Icon`, story `Gallery`).
|
|
19
|
+
|
|
20
|
+
- Components' own: `search`, `x`, `eye`, `eye-off`, `chevron-down`,
|
|
21
|
+
`chevron-left`, `chevron-right`, `chevrons-left`, `chevrons-right`,
|
|
22
|
+
`ellipsis-vertical`, `check`, `copy`, `check-circle`, `alert-circle`,
|
|
23
|
+
`alert-triangle`, `info`, `arrow-up`, `arrow-down`, `calendar`, `upload`,
|
|
24
|
+
`folder`, `file`.
|
|
25
|
+
- General-purpose UI glyphs: `home`, `folders`, `folder-open`, `server`, `lock`, `key`,
|
|
26
|
+
`settings`, `log-out`, `user`, `users`, `user-plus`, `bell`, `activity`,
|
|
27
|
+
`layout-dashboard`, `arrow-left`, `plus`, `list`, `kanban`, `layers`,
|
|
28
|
+
`download`, `refresh-cw`, `trash-2`, `pencil`, `send`, `mail`,
|
|
29
|
+
`message-circle`, `star`, `flag`, `tag`, `globe`, `book-open`, `bug`,
|
|
30
|
+
`sparkles`, `play`, `clock`, `database`, `hard-drive`, `smartphone`,
|
|
31
|
+
`shield-check`, `shield-alert`, `square-check`, `flask-conical`, and the
|
|
32
|
+
circled `circle-dot`, `circle-check`, `circle-x`, `circle-play`,
|
|
33
|
+
`circle-slash`.
|
|
34
|
+
|
|
35
|
+
Domain glyphs (a `git-branch`, an issue ring…) stay with the application. An
|
|
36
|
+
application overrides any of them, or adds its own, at startup:
|
|
37
|
+
|
|
38
|
+
```typescript
|
|
39
|
+
inject(IconRegistry).registerAll({
|
|
40
|
+
package: '<path d="…" />',
|
|
41
|
+
user: '<circle cx="12" cy="7" r="4" />',
|
|
42
|
+
})
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
The expected markup is the **inner** content of an `<svg>` — without
|
|
46
|
+
the `<svg>` tag itself.
|
|
47
|
+
|
|
48
|
+
## Example
|
|
49
|
+
|
|
50
|
+
```html
|
|
51
|
+
<gbt-icon name="check" />
|
|
52
|
+
```
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# IconMarker
|
|
2
|
+
|
|
3
|
+
An icon on a soft tinted disc (or rounded tile): the marker of an activity on a timeline, the icon of a stat
|
|
4
|
+
tile, a key, a decision.
|
|
5
|
+
|
|
6
|
+
**Selector**: `gbt-icon-marker`. The icon is a registered [`gbt-icon`](../icon/README.md) name.
|
|
7
|
+
|
|
8
|
+
## Inputs
|
|
9
|
+
|
|
10
|
+
| Input | Type | Default | Role |
|
|
11
|
+
| ------------ | ----------------------------------------------------------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------- |
|
|
12
|
+
| `icon` | `string` | — | Required. A registered icon name. |
|
|
13
|
+
| `tone` | `'neutral' \| 'primary' \| 'success' \| 'warning' \| 'error' \| 'info'` | `'neutral'` | The tint. `neutral` is quiet (the wash of the empty-state disc), `primary` is the brand colour. |
|
|
14
|
+
| `size` | `'sm' \| 'md' \| 'lg' \| 'xl'` | `'md'` | 24, 32, 40 and 52 px. The glyph scales with it. |
|
|
15
|
+
| `shape` | `'disc' \| 'tile'` | `'disc'` | Round, or a square with 8 px corners. |
|
|
16
|
+
| `appearance` | `'soft' \| 'outline'` | `'soft'` | `soft`: a tinted fill. `outline`: the page background, a hairline border and the tone's colour on the glyph (a marker on a rail). |
|
|
17
|
+
| `label` | `string \| null` | `null` | Makes the marker an image (`role="img"`) with this name. Empty: decorative (`aria-hidden`). |
|
|
18
|
+
|
|
19
|
+
## Colours
|
|
20
|
+
|
|
21
|
+
Status tones use the pair designed for a tinted background (`--color-<tone>-bg` + `--color-<tone>-bg-text`,
|
|
22
|
+
the alert and badge pairs, 7:1 in both themes). `neutral` is 18 % of `--border-color` under `--text-secondary`;
|
|
23
|
+
`primary` is 12 % of `--primary` under `--primary`. No new token: all pairs are asserted in
|
|
24
|
+
`tokens/contrast.spec.ts`.
|
|
25
|
+
|
|
26
|
+
## Accessibility
|
|
27
|
+
|
|
28
|
+
The marker is decorative unless it has a `label`: the meaning (approved, blocked) must be told by the text
|
|
29
|
+
next to it, never by the tint alone. See [AUDIT.md](AUDIT.md).
|
|
30
|
+
|
|
31
|
+
## Example
|
|
32
|
+
|
|
33
|
+
```html
|
|
34
|
+
<li><gbt-icon-marker icon="check" size="sm" tone="success" /> bastien approved these changes</li>
|
|
35
|
+
<gbt-icon-marker icon="key" shape="tile" tone="info" />
|
|
36
|
+
<gbt-icon-marker icon="git-commit" size="sm" appearance="outline" label="Commit" />
|
|
37
|
+
```
|
package/input/README.md
ADDED
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
# Input
|
|
2
|
+
|
|
3
|
+
Text, email, password, number, search or URL field, with a visibility toggle, a
|
|
4
|
+
hint, an error message, a compact size, a monospace mode and a leading icon.
|
|
5
|
+
Integrated with reactive forms and `ngModel`.
|
|
6
|
+
|
|
7
|
+
**Selector**: `gbt-input`
|
|
8
|
+
|
|
9
|
+
**The exported class is called `GbtInput`, not `Input`** — `Input`
|
|
10
|
+
would collide with `@angular/core`'s `Input` decorator.
|
|
11
|
+
|
|
12
|
+
## Inputs
|
|
13
|
+
|
|
14
|
+
| Input | Type | Default | Role |
|
|
15
|
+
| ------------------- | --------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
|
16
|
+
| `id` | `string` | generated (`gbt-input-N`) | DOM id, associates the `<label>`. |
|
|
17
|
+
| `label` | `string` | `''` | Visible label. |
|
|
18
|
+
| `type` | `'text' \| 'password' \| 'email' \| 'number' \| 'search' \| 'url'` | `'text'` | In `password` mode, a button toggles visibility. |
|
|
19
|
+
| `required` | `boolean` | `false` | Native `required` attribute. |
|
|
20
|
+
| `disabled` | `boolean` | `false` | Disables the field. |
|
|
21
|
+
| `placeholder` | `string` | `''` | Placeholder text. |
|
|
22
|
+
| `errorMessage` | `string \| null` | `null` | Error message shown under the field, associated via `aria-describedby`. |
|
|
23
|
+
| `autocomplete` | `string` | `'off'` | Native `autocomplete` attribute. |
|
|
24
|
+
| `showPasswordLabel` | `string` | `'Show password'` | Accessible name of the button when the password is hidden. |
|
|
25
|
+
| `hidePasswordLabel` | `string` | `'Hide password'` | Accessible name of the button when the password is visible. |
|
|
26
|
+
| `hint` | `string` | `''` | Help text under the field, linked with `aria-describedby`. Hidden (and unlinked) while an error shows. |
|
|
27
|
+
| `hideLabel` | `boolean` | `false` | Hides the label visually; it stays in the DOM and keeps naming the field. |
|
|
28
|
+
| `size` | `'md' \| 'sm'` | `'md'` | The field is 38px tall (`md`) or 32px (`sm`): the shared `--gbt-control-height-md` / `-sm` scale, the height of `gbt-select` and `gbt-button` (`medium` / `small`) of the same tier. |
|
|
29
|
+
| `mono` | `boolean` | `false` | Monospace text (`--gbt-font-mono` when defined, else the system monospace stack). |
|
|
30
|
+
| `leadingIcon` | `string \| null` | `null` | Icon name shown inside the field, at its start (decorative, `aria-hidden`). |
|
|
31
|
+
| `inputmode` | `'none' \| 'text' \| 'tel' \| 'url' \| 'email' \| 'numeric' \| 'decimal' \| 'search' \| null` | `null` | Native `inputmode` (virtual keyboard). Attribute left out when `null`. |
|
|
32
|
+
| `spellcheck` | `boolean \| null` | `null` | Native `spellcheck`. Left to the browser when `null`. |
|
|
33
|
+
| `autocapitalize` | `'off' \| 'none' \| 'on' \| 'sentences' \| 'words' \| 'characters' \| null` | `null` | Native `autocapitalize`. Left to the browser when `null`. |
|
|
34
|
+
| `enterkeyhint` | `'enter' \| 'done' \| 'go' \| 'next' \| 'previous' \| 'search' \| 'send' \| null` | `null` | Native `enterkeyhint` (label of the virtual keyboard's enter key). |
|
|
35
|
+
| `maxlength` | `number \| null` | `null` | Native `maxlength`. |
|
|
36
|
+
| `min` / `max` | `number \| string \| null` | `null` | Native `min` / `max` (number, date types…). |
|
|
37
|
+
| `combobox` | `InputCombobox \| null` | `null` | Makes the field the combobox of a list of suggestions: `role`, `aria-autocomplete="list"`, `aria-expanded`, `aria-controls`, `aria-activedescendant` (see below). |
|
|
38
|
+
|
|
39
|
+
Every optional input defaults to "off": a field that leaves them unset renders
|
|
40
|
+
the same markup and the same pixels.
|
|
41
|
+
|
|
42
|
+
## Outputs
|
|
43
|
+
|
|
44
|
+
| Output | Payload | Role |
|
|
45
|
+
| ----------- | -------- | -------------------------------------------------- |
|
|
46
|
+
| `committed` | `string` | Fires on blur, with the value the user settled on. |
|
|
47
|
+
|
|
48
|
+
`committed` is for anything that persists. A field bound straight to a
|
|
49
|
+
request sends `2` and then `24` while the user types `24`, and walking away
|
|
50
|
+
mid-edit saves the half-typed value; listening to `committed` instead sends
|
|
51
|
+
one request, with what the user actually settled on. Local state — a signal
|
|
52
|
+
backing another control — is better served by the form binding, which
|
|
53
|
+
updates on every keystroke.
|
|
54
|
+
|
|
55
|
+
## Hint, hidden label and compact search
|
|
56
|
+
|
|
57
|
+
```html
|
|
58
|
+
<gbt-input label="Repository name" hint="Letters, digits, - and _ only." formControlName="name" />
|
|
59
|
+
|
|
60
|
+
<gbt-input
|
|
61
|
+
label="Search repositories"
|
|
62
|
+
[hideLabel]="true"
|
|
63
|
+
size="sm"
|
|
64
|
+
type="search"
|
|
65
|
+
leadingIcon="search"
|
|
66
|
+
placeholder="Search…"
|
|
67
|
+
/>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
The hint sits under the field (`<p id="<id>-hint">`) and is the field's
|
|
71
|
+
`aria-describedby`. While `errorMessage` is set the hint is not rendered at
|
|
72
|
+
all and the error takes its place, so a screen reader only reads one
|
|
73
|
+
description.
|
|
74
|
+
|
|
75
|
+
## Search with suggestions
|
|
76
|
+
|
|
77
|
+
The field does not render the suggestions: the caller keeps the listbox, the active option and the keys, and
|
|
78
|
+
hands the field what it must announce. Keys typed in the field reach the host, so `(keydown)` listens to them.
|
|
79
|
+
|
|
80
|
+
```html
|
|
81
|
+
<gbt-input
|
|
82
|
+
label="Search packages"
|
|
83
|
+
[hideLabel]="true"
|
|
84
|
+
type="search"
|
|
85
|
+
leadingIcon="search"
|
|
86
|
+
[combobox]="{ expanded: open(), controls: 'suggestions', activeDescendant: activeId() }"
|
|
87
|
+
[ngModel]="text()"
|
|
88
|
+
(ngModelChange)="suggest($event)"
|
|
89
|
+
(keydown)="onKeydown($event)"
|
|
90
|
+
(committed)="close()"
|
|
91
|
+
/>
|
|
92
|
+
<ul id="suggestions" role="listbox" [hidden]="!open()">…</ul>
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## One-time code
|
|
96
|
+
|
|
97
|
+
```html
|
|
98
|
+
<gbt-input
|
|
99
|
+
label="6-digit code"
|
|
100
|
+
[mono]="true"
|
|
101
|
+
inputmode="numeric"
|
|
102
|
+
autocomplete="one-time-code"
|
|
103
|
+
[maxlength]="6"
|
|
104
|
+
[spellcheck]="false"
|
|
105
|
+
autocapitalize="off"
|
|
106
|
+
enterkeyhint="go"
|
|
107
|
+
/>
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
## Example
|
|
111
|
+
|
|
112
|
+
```html
|
|
113
|
+
<gbt-input
|
|
114
|
+
label="Mot de passe"
|
|
115
|
+
type="password"
|
|
116
|
+
showPasswordLabel="Afficher le mot de passe"
|
|
117
|
+
hidePasswordLabel="Masquer le mot de passe"
|
|
118
|
+
formControlName="password"
|
|
119
|
+
/>
|
|
120
|
+
```
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# JobGraph
|
|
2
|
+
|
|
3
|
+
A read-only graph of pipeline jobs, laid out as one column per stage,
|
|
4
|
+
with a curved link drawn from each job to every job it depends on
|
|
5
|
+
(GitHub-Actions style). Each job is a native button: clicking one only
|
|
6
|
+
emits its id — this component never navigates anywhere and never keeps
|
|
7
|
+
a selection of its own.
|
|
8
|
+
|
|
9
|
+
**Selector**: `gbt-job-graph`
|
|
10
|
+
|
|
11
|
+
## Inputs
|
|
12
|
+
|
|
13
|
+
| Input | Type | Default | Role |
|
|
14
|
+
| --------------- | -------------------------------- | ----------------- | ------------------------------------------------------------------------------------------------------------- |
|
|
15
|
+
| `stages` | `JobGraphStage[]` | required | The stages, in order, each with its jobs. |
|
|
16
|
+
| `selectedJobId` | `string \| null` | `null` | The job being viewed; gets `aria-current="true"` and a highlight. |
|
|
17
|
+
| `statusLabels` | `Record<JobGraphStatus, string>` | English labels | Visually-hidden status text announced for each job (`Pending`, `Running`, `Succeeded`, `Failed`, `Canceled`). |
|
|
18
|
+
| `needsLabel` | `string` | `'Needs'` | Visually-hidden prefix announced before a job's dependencies. |
|
|
19
|
+
| `ariaLabel` | `string` | `'Pipeline jobs'` | Accessible name of the list of stages. |
|
|
20
|
+
|
|
21
|
+
## Outputs
|
|
22
|
+
|
|
23
|
+
| Output | Payload | Role |
|
|
24
|
+
| ------------- | -------- | ------------------------------------------------- |
|
|
25
|
+
| `jobSelected` | `string` | Emits the `id` of the job whose node was clicked. |
|
|
26
|
+
|
|
27
|
+
## Types
|
|
28
|
+
|
|
29
|
+
```ts
|
|
30
|
+
type JobGraphStatus = 'pending' | 'running' | 'success' | 'failed' | 'canceled'
|
|
31
|
+
|
|
32
|
+
interface JobGraphJob {
|
|
33
|
+
id: string
|
|
34
|
+
name: string
|
|
35
|
+
status: JobGraphStatus
|
|
36
|
+
durationLabel?: string
|
|
37
|
+
needs: string[] // job NAMES (not ids)
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
interface JobGraphStage {
|
|
41
|
+
name: string
|
|
42
|
+
jobs: JobGraphJob[]
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
`needs` holds the **names** of the jobs a job depends on, not their
|
|
47
|
+
ids, so job names must be unique within a graph. A name that matches no
|
|
48
|
+
job simply draws no link.
|
|
49
|
+
|
|
50
|
+
## Example
|
|
51
|
+
|
|
52
|
+
```html
|
|
53
|
+
<gbt-job-graph
|
|
54
|
+
[stages]="[
|
|
55
|
+
{ name: 'build', jobs: [{ id: 'a', name: 'compile', status: 'success', durationLabel: '3s', needs: [] }] },
|
|
56
|
+
{ name: 'test', jobs: [{ id: 'b', name: 'unit', status: 'running', needs: ['compile'] }] },
|
|
57
|
+
]"
|
|
58
|
+
[selectedJobId]="selected()"
|
|
59
|
+
(jobSelected)="selected.set($event)"
|
|
60
|
+
/>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Behavior
|
|
64
|
+
|
|
65
|
+
- Each job renders a glyph whose **shape** depends on its status
|
|
66
|
+
(check for `success`, alert for `failed`, cross for `canceled`, a
|
|
67
|
+
ring for `pending`, a spinning ring for `running`), so status never
|
|
68
|
+
relies on colour alone; a visually-hidden text also states it. The glyph
|
|
69
|
+
is [`gbt-job-status`](../job-status/README.md), which you can use on its own
|
|
70
|
+
(a pipeline sidebar, a job header).
|
|
71
|
+
- The links are measured from the rendered nodes and redrawn when
|
|
72
|
+
`stages` changes or the container is resized. They scroll with the
|
|
73
|
+
content when the graph overflows horizontally. A link is drawn as
|
|
74
|
+
"done" when the job it starts from succeeded.
|
|
75
|
+
- The running spinner is replaced by a solid dot under
|
|
76
|
+
`prefers-reduced-motion: reduce`.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# JobStatus
|
|
2
|
+
|
|
3
|
+
The status glyph of a CI job: a check (`success`), an alert (`failed`), a cross (`canceled`), a spinning ring
|
|
4
|
+
(`running`) or a still ring (`pending`). [`gbt-job-graph`](../job-graph/README.md) renders its
|
|
5
|
+
nodes with this same component (same DOM position, same size, same colours), so a pipeline sidebar, a job
|
|
6
|
+
header or a summary shows the glyph the graph shows.
|
|
7
|
+
|
|
8
|
+
**Selector**: `gbt-job-status`
|
|
9
|
+
|
|
10
|
+
## Inputs
|
|
11
|
+
|
|
12
|
+
| Input | Type | Default | Role |
|
|
13
|
+
| -------- | ---------------- | ------- | ----------------------------------------------------------------------------------------------------- |
|
|
14
|
+
| `status` | `JobStatusValue` | — | Required. `'pending' \| 'running' \| 'success' \| 'failed' \| 'canceled'` (same as `JobGraphStatus`). |
|
|
15
|
+
| `label` | `string \| null` | `null` | The status in words, read by screen readers and hidden visually. Empty: the glyph is decorative. |
|
|
16
|
+
|
|
17
|
+
## Colours and motion
|
|
18
|
+
|
|
19
|
+
`success` `--color-success-text`, `failed` `--color-error-text`, `canceled` `--text-secondary`; the rings take
|
|
20
|
+
`--border-color` (pending) and `--primary` (running, spinning). Under `prefers-reduced-motion: reduce` the running
|
|
21
|
+
ring stops and becomes a filled dot. The host carries `data-status`.
|
|
22
|
+
|
|
23
|
+
## Accessibility
|
|
24
|
+
|
|
25
|
+
The glyph tells the status by its **shape**, never colour alone. Without `label` the host is `aria-hidden`:
|
|
26
|
+
say the status in text next to it (as `gbt-job-graph` does in its node text). With `label` the host is exposed,
|
|
27
|
+
the glyph stays hidden and the label is announced. See [AUDIT.md](AUDIT.md).
|
|
28
|
+
|
|
29
|
+
## Example
|
|
30
|
+
|
|
31
|
+
```html
|
|
32
|
+
<gbt-job-status status="failed" label="Failed" />
|
|
33
|
+
<li><gbt-job-status status="running" /> integration <span class="sr-only">Running</span></li>
|
|
34
|
+
```
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# LineChart
|
|
2
|
+
|
|
3
|
+
Line(s) on the dataviz base — measures its container, reacts to the
|
|
4
|
+
pointer and keyboard, carries its own visually-hidden
|
|
5
|
+
`gbt-chart-table`.
|
|
6
|
+
|
|
7
|
+
**Selector**: `gbt-line-chart`
|
|
8
|
+
|
|
9
|
+
## Inputs
|
|
10
|
+
|
|
11
|
+
| Input | Type | Default | Role |
|
|
12
|
+
| -------------- | ------------------------------------------- | -------- | ----------------------------------------------------------- |
|
|
13
|
+
| `series` | `ChartSeries<X>[]` | required | `{ label, points, pattern? }[]` — one or more series. |
|
|
14
|
+
| `xKind` | `'linear' \| 'time'` | required | Nature of the x-axis. |
|
|
15
|
+
| `locale` | `string` | required | Locale used to format numbers and dates. |
|
|
16
|
+
| `label` | `string` | required | Accessible name of the chart. |
|
|
17
|
+
| `tableCaption` | `string` | required | Caption of the `sr-only` table. |
|
|
18
|
+
| `xColumn` | `string` | required | Header of that table's x-axis column. |
|
|
19
|
+
| `emptyMessage` | `string` | required | Message shown when the series are empty. |
|
|
20
|
+
| `area` | `boolean` | `false` | Fills the area under the line. |
|
|
21
|
+
| `yZero` | `boolean` | `true` | Forces the y-axis domain to contain zero. |
|
|
22
|
+
| `yTickCount` | `number` | `5` | Target number of ticks on the y-axis. |
|
|
23
|
+
| `xTickCount` | `number` | `5` | Target number of ticks on the x-axis. |
|
|
24
|
+
| `size` | `{ width: number; height: number } \| null` | `null` | Explicit dimensions — reserved for server rendering, tests. |
|
|
25
|
+
| `heading` | `string` | `''` | Block title. Empty by default. |
|
|
26
|
+
| `headingLevel` | `1 \| 2 \| 3 \| 4 \| 5 \| 6` | `2` | Level of the rendered heading. |
|
|
27
|
+
| `headline` | `string` | `''` | Current value, already formatted. |
|
|
28
|
+
| `trend` | `string` | `''` | Change over the period, already formatted. |
|
|
29
|
+
|
|
30
|
+
`x` is a number on a linear axis, a `Date` on a time axis — `xKind`
|
|
31
|
+
must match the actual type of `series`' `x` values.
|
|
32
|
+
|
|
33
|
+
**Fluid width with a chosen height** — the common case — is achieved by
|
|
34
|
+
setting the height in CSS on the wrapping container, without passing
|
|
35
|
+
`[size]`. See [`../chart-frame/README.md`](../chart/chart-frame/README.md) for
|
|
36
|
+
the full sizing contract and hover behavior.
|
|
37
|
+
|
|
38
|
+
## Example
|
|
39
|
+
|
|
40
|
+
```html
|
|
41
|
+
<div style="height: 18rem">
|
|
42
|
+
<gbt-line-chart
|
|
43
|
+
[series]="[{ label: 'Requêtes', points: [{ x: 0, y: 12 }, { x: 1, y: 40 }] }]"
|
|
44
|
+
xKind="linear"
|
|
45
|
+
locale="fr-FR"
|
|
46
|
+
label="Requêtes"
|
|
47
|
+
tableCaption="Détail des requêtes"
|
|
48
|
+
xColumn="Jour"
|
|
49
|
+
emptyMessage="Aucune donnée"
|
|
50
|
+
/>
|
|
51
|
+
</div>
|
|
52
|
+
```
|