@masmarino/gabarit 1.4.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +231 -144
- 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 +477 -0
- package/fesm2022/masmarino-gabarit-autocomplete.mjs.map +1 -0
- package/fesm2022/masmarino-gabarit-avatar-group.mjs +199 -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 +1238 -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 +21 -11
- 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 +13 -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 +461 -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 +139 -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 +510 -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 +182 -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/fonts/OFL-ibm-plex.txt +93 -0
- package/fonts/ibm-plex-mono-400.woff2 +0 -0
- package/fonts/ibm-plex-mono-500.woff2 +0 -0
- package/fonts/ibm-plex-sans-400.woff2 +0 -0
- package/fonts/ibm-plex-sans-500.woff2 +0 -0
- package/fonts/ibm-plex-sans-600.woff2 +0 -0
- package/fonts/ibm-plex-sans-condensed-600.woff2 +0 -0
- package/fonts/index.scss +28 -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 +335 -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/src/lib/tokens/_a11y.scss +22 -0
- package/src/lib/tokens/_base.scss +31 -0
- package/src/lib/tokens/_palette.scss +52 -51
- package/src/lib/tokens/_semantic.scss +17 -124
- package/src/lib/tokens/_themes.scss +144 -0
- package/src/lib/tokens/_utilities.scss +10 -10
- package/src/lib/tokens/index.scss +3 -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 +139 -0
- package/types/masmarino-gabarit-avatar-group.d.ts +59 -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 +397 -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 +20 -59
- 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 +7 -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 +92 -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 +32 -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 +145 -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 +38 -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 -6605
- 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,93 @@
|
|
|
1
|
+
Copyright 2019 IBM Corp. All rights reserved. IBMPlexSans-Italic[wdth,wght].ttf: Copyright 2019 IBM Corp. All rights reserved.
|
|
2
|
+
|
|
3
|
+
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
|
4
|
+
This license is copied below, and is also available with a FAQ at:
|
|
5
|
+
http://scripts.sil.org/OFL
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
-----------------------------------------------------------
|
|
9
|
+
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
|
10
|
+
-----------------------------------------------------------
|
|
11
|
+
|
|
12
|
+
PREAMBLE
|
|
13
|
+
The goals of the Open Font License (OFL) are to stimulate worldwide
|
|
14
|
+
development of collaborative font projects, to support the font creation
|
|
15
|
+
efforts of academic and linguistic communities, and to provide a free and
|
|
16
|
+
open framework in which fonts may be shared and improved in partnership
|
|
17
|
+
with others.
|
|
18
|
+
|
|
19
|
+
The OFL allows the licensed fonts to be used, studied, modified and
|
|
20
|
+
redistributed freely as long as they are not sold by themselves. The
|
|
21
|
+
fonts, including any derivative works, can be bundled, embedded,
|
|
22
|
+
redistributed and/or sold with any software provided that any reserved
|
|
23
|
+
names are not used by derivative works. The fonts and derivatives,
|
|
24
|
+
however, cannot be released under any other type of license. The
|
|
25
|
+
requirement for fonts to remain under this license does not apply
|
|
26
|
+
to any document created using the fonts or their derivatives.
|
|
27
|
+
|
|
28
|
+
DEFINITIONS
|
|
29
|
+
"Font Software" refers to the set of files released by the Copyright
|
|
30
|
+
Holder(s) under this license and clearly marked as such. This may
|
|
31
|
+
include source files, build scripts and documentation.
|
|
32
|
+
|
|
33
|
+
"Reserved Font Name" refers to any names specified as such after the
|
|
34
|
+
copyright statement(s).
|
|
35
|
+
|
|
36
|
+
"Original Version" refers to the collection of Font Software components as
|
|
37
|
+
distributed by the Copyright Holder(s).
|
|
38
|
+
|
|
39
|
+
"Modified Version" refers to any derivative made by adding to, deleting,
|
|
40
|
+
or substituting -- in part or in whole -- any of the components of the
|
|
41
|
+
Original Version, by changing formats or by porting the Font Software to a
|
|
42
|
+
new environment.
|
|
43
|
+
|
|
44
|
+
"Author" refers to any designer, engineer, programmer, technical
|
|
45
|
+
writer or other person who contributed to the Font Software.
|
|
46
|
+
|
|
47
|
+
PERMISSION & CONDITIONS
|
|
48
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
49
|
+
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
|
50
|
+
redistribute, and sell modified and unmodified copies of the Font
|
|
51
|
+
Software, subject to the following conditions:
|
|
52
|
+
|
|
53
|
+
1) Neither the Font Software nor any of its individual components,
|
|
54
|
+
in Original or Modified Versions, may be sold by itself.
|
|
55
|
+
|
|
56
|
+
2) Original or Modified Versions of the Font Software may be bundled,
|
|
57
|
+
redistributed and/or sold with any software, provided that each copy
|
|
58
|
+
contains the above copyright notice and this license. These can be
|
|
59
|
+
included either as stand-alone text files, human-readable headers or
|
|
60
|
+
in the appropriate machine-readable metadata fields within text or
|
|
61
|
+
binary files as long as those fields can be easily viewed by the user.
|
|
62
|
+
|
|
63
|
+
3) No Modified Version of the Font Software may use the Reserved Font
|
|
64
|
+
Name(s) unless explicit written permission is granted by the corresponding
|
|
65
|
+
Copyright Holder. This restriction only applies to the primary font name as
|
|
66
|
+
presented to the users.
|
|
67
|
+
|
|
68
|
+
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
|
69
|
+
Software shall not be used to promote, endorse or advertise any
|
|
70
|
+
Modified Version, except to acknowledge the contribution(s) of the
|
|
71
|
+
Copyright Holder(s) and the Author(s) or with their explicit written
|
|
72
|
+
permission.
|
|
73
|
+
|
|
74
|
+
5) The Font Software, modified or unmodified, in part or in whole,
|
|
75
|
+
must be distributed entirely under this license, and must not be
|
|
76
|
+
distributed under any other license. The requirement for fonts to
|
|
77
|
+
remain under this license does not apply to any document created
|
|
78
|
+
using the Font Software.
|
|
79
|
+
|
|
80
|
+
TERMINATION
|
|
81
|
+
This license becomes null and void if any of the above conditions are
|
|
82
|
+
not met.
|
|
83
|
+
|
|
84
|
+
DISCLAIMER
|
|
85
|
+
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
86
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
|
87
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
|
88
|
+
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
|
89
|
+
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
|
90
|
+
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
|
91
|
+
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
92
|
+
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
|
93
|
+
OTHER DEALINGS IN THE FONT SOFTWARE.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/fonts/index.scss
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// IBM Plex Sans, Sans Condensed and Mono, the faces the tokens name. Subset to Latin-1 plus typographic
|
|
2
|
+
// punctuation: a glyph outside it (an emoji, a non-Latin name) falls back to the next font of the
|
|
3
|
+
// stack. The application serves the files of this folder at $path, for instance with an Angular asset:
|
|
4
|
+
//
|
|
5
|
+
// { "glob": "*.woff2", "input": "node_modules/@masmarino/gabarit/fonts", "output": "fonts/ibm-plex" }
|
|
6
|
+
//
|
|
7
|
+
// then `@use '@masmarino/gabarit/fonts' with ($path: '/fonts/ibm-plex/');`.
|
|
8
|
+
|
|
9
|
+
$path: '/fonts/ibm-plex/' !default;
|
|
10
|
+
|
|
11
|
+
$faces: (
|
|
12
|
+
('IBM Plex Sans', 400, 'ibm-plex-sans-400'),
|
|
13
|
+
('IBM Plex Sans', 500, 'ibm-plex-sans-500'),
|
|
14
|
+
('IBM Plex Sans', 600, 'ibm-plex-sans-600'),
|
|
15
|
+
('IBM Plex Sans Condensed', 600, 'ibm-plex-sans-condensed-600'),
|
|
16
|
+
('IBM Plex Mono', 400, 'ibm-plex-mono-400'),
|
|
17
|
+
('IBM Plex Mono', 500, 'ibm-plex-mono-500')
|
|
18
|
+
);
|
|
19
|
+
|
|
20
|
+
@each $family, $weight, $file in $faces {
|
|
21
|
+
@font-face {
|
|
22
|
+
font-family: $family;
|
|
23
|
+
font-style: normal;
|
|
24
|
+
font-weight: $weight;
|
|
25
|
+
font-display: swap;
|
|
26
|
+
src: url('#{$path}#{$file}.woff2') format('woff2');
|
|
27
|
+
}
|
|
28
|
+
}
|
|
@@ -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
|
+
```
|