@0001-labs/design-system-1 0.3.0-alpha.13 → 0.3.0-alpha.15
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/DS1/0-face/calendar.ts +194 -0
- package/DS1/0-face/carousel.ts +623 -0
- package/DS1/0-face/component-visibility.ts +14 -0
- package/DS1/0-face/copy-text.ts +96 -0
- package/DS1/0-face/device.ts +8 -58
- package/DS1/0-face/dialog-swipe.ts +249 -0
- package/DS1/0-face/dialogs.ts +208 -0
- package/DS1/0-face/drawer.ts +258 -0
- package/DS1/0-face/feedback-words.ts +36 -0
- package/DS1/0-face/feedback.ts +40 -0
- package/DS1/0-face/format.ts +700 -0
- package/DS1/0-face/generated/toast-assets.ts +18 -0
- package/DS1/0-face/grid-fit.ts +1 -1
- package/DS1/0-face/grid.ts +3 -2
- package/DS1/0-face/header.ts +78 -0
- package/DS1/0-face/i18n.ts +93 -18
- package/DS1/0-face/keys.ts +276 -0
- package/DS1/0-face/languages.ts +4 -4
- package/DS1/0-face/layout-inspector.ts +6 -6
- package/DS1/0-face/library-styles.ts +33 -0
- package/DS1/0-face/load-toaster.ts +7 -0
- package/DS1/0-face/preference-options.ts +29 -0
- package/DS1/0-face/preferences.ts +3 -11
- package/DS1/0-face/pricing.ts +98 -43
- package/DS1/0-face/scaling.ts +160 -4
- package/DS1/0-face/shared-words.ts +9 -4
- package/DS1/0-face/sidebar.ts +201 -0
- package/DS1/0-face/theme-bootstrap.js +184 -0
- package/DS1/0-face/theme.ts +89 -47
- package/DS1/0-face/toast-queue.ts +157 -0
- package/DS1/0-face/toaster.ts +384 -0
- package/DS1/0-face/tooltips.ts +157 -15
- package/DS1/0-face/translations/da.json +60 -1
- package/DS1/0-face/translations/de.json +60 -1
- package/DS1/0-face/translations/en.json +60 -1
- package/DS1/0-face/translations/es.json +60 -1
- package/DS1/0-face/translations/fi.json +60 -1
- package/DS1/0-face/translations/fr.json +60 -1
- package/DS1/0-face/translations/is.json +60 -1
- package/DS1/0-face/translations/it.json +60 -1
- package/DS1/0-face/translations/ja.json +60 -1
- package/DS1/0-face/translations/ko.json +60 -1
- package/DS1/0-face/translations/nb.json +60 -1
- package/DS1/0-face/translations/pt-BR.json +60 -1
- package/DS1/0-face/translations/pt.json +60 -1
- package/DS1/0-face/translations/sv.json +60 -1
- package/DS1/0-face/translations/zh.json +60 -1
- package/DS1/0-face/translations-format.ts +3 -4
- package/DS1/1-root/card.css +192 -0
- package/DS1/1-root/carousel.css +136 -0
- package/DS1/1-root/cjk.css +23 -0
- package/DS1/1-root/component-metrics.css +1 -0
- package/DS1/1-root/component-tokens.css +51 -8
- package/DS1/1-root/controls.css +891 -14
- package/DS1/1-root/dialog-placement.css +191 -0
- package/DS1/1-root/document.css +183 -0
- package/DS1/1-root/drawer.css +83 -0
- package/DS1/1-root/empty.css +83 -0
- package/DS1/1-root/figures.css +141 -0
- package/DS1/1-root/fonts/Iosevka-LICENSE.md +3 -1
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/fonts.css +69 -0
- package/DS1/1-root/footer.css +186 -0
- package/DS1/1-root/header.css +165 -0
- package/DS1/1-root/library-tokens.ts +91 -0
- package/DS1/1-root/measures.ts +53 -0
- package/DS1/1-root/notice.css +165 -0
- package/DS1/1-root/one.css +14 -84
- package/DS1/1-root/one.semantic.css +200 -148
- package/DS1/1-root/palette.css +58 -0
- package/DS1/1-root/palette.ts +19 -0
- package/DS1/1-root/progress.css +356 -0
- package/DS1/1-root/prose.css +202 -0
- package/DS1/1-root/row.css +300 -0
- package/DS1/1-root/table.css +111 -0
- package/DS1/1-root/text.css +70 -0
- package/DS1/2-core/button-split.ts +55 -0
- package/DS1/2-core/chart/chart.css +169 -0
- package/DS1/2-core/chart/grid-chart.ts +554 -0
- package/DS1/2-core/ds-avatar.ts +25 -6
- package/DS1/2-core/ds-badge.ts +10 -10
- package/DS1/2-core/ds-button.ts +111 -26
- package/DS1/2-core/ds-card.ts +135 -105
- package/DS1/2-core/ds-chart.ts +327 -0
- package/DS1/2-core/ds-composer.ts +8 -2
- package/DS1/2-core/ds-cycle.ts +97 -21
- package/DS1/2-core/ds-empty.ts +120 -0
- package/DS1/2-core/ds-icon.ts +11 -2
- package/DS1/2-core/ds-input.ts +165 -6
- package/DS1/2-core/ds-message.ts +218 -0
- package/DS1/2-core/ds-notice.ts +10 -0
- package/DS1/2-core/ds-progress.ts +380 -0
- package/DS1/2-core/ds-stat.ts +174 -0
- package/DS1/2-core/ds-switch.ts +1 -0
- package/DS1/2-core/ds-text.ts +15 -2
- package/DS1/2-core/ds-toast.ts +354 -0
- package/DS1/2-core/figures.ts +105 -0
- package/DS1/2-core/generated/ds-icon-map.ts +238 -128
- package/DS1/2-core/generated/icon-avatar.ts +2 -0
- package/DS1/2-core/generated/icons-extra.ts +120 -65
- package/DS1/2-core/generated/icons-immediate.ts +1 -1
- package/DS1/2-core/styles/ds-avatar.css +9 -8
- package/DS1/2-core/styles/ds-button-host.css +26 -3
- package/DS1/2-core/styles/ds-button-split.css +67 -0
- package/DS1/2-core/styles/ds-button.css +49 -15
- package/DS1/2-core/styles/ds-card.css +34 -0
- package/DS1/2-core/styles/ds-composer.css +13 -0
- package/DS1/2-core/styles/ds-cycle.css +10 -0
- package/DS1/2-core/styles/ds-empty.css +18 -0
- package/DS1/2-core/styles/ds-gap.css +1 -0
- package/DS1/2-core/styles/ds-icon.css +1 -0
- package/DS1/2-core/styles/ds-input.css +59 -6
- package/DS1/2-core/styles/ds-notice.css +32 -0
- package/DS1/2-core/styles/ds-progress.css +25 -0
- package/DS1/2-core/styles/ds-select.css +2 -2
- package/DS1/2-core/styles/ds-split.css +2 -62
- package/DS1/2-core/styles/ds-stat.css +34 -0
- package/DS1/2-core/styles/ds-switch.css +16 -1
- package/DS1/2-core/styles/ds-text.css +43 -12
- package/DS1/2-core/styles/ds-toast.css +182 -0
- package/DS1/2-core/styles/ds-tooltip.css +1 -0
- package/DS1/3-unit/calendar-base.ts +263 -0
- package/DS1/3-unit/ds-accordion.ts +9 -1
- package/DS1/3-unit/ds-avatar-group.ts +1 -0
- package/DS1/3-unit/ds-calendar-large.ts +349 -0
- package/DS1/3-unit/ds-calendar.ts +344 -0
- package/DS1/3-unit/ds-carousel.ts +368 -0
- package/DS1/3-unit/ds-date-picker.ts +540 -0
- package/DS1/3-unit/ds-form.ts +45 -37
- package/DS1/3-unit/ds-list.ts +48 -1
- package/DS1/3-unit/ds-matrix.ts +318 -0
- package/DS1/3-unit/ds-menu.ts +8 -4
- package/DS1/3-unit/ds-row.ts +84 -1
- package/DS1/3-unit/ds-sidebar.ts +366 -0
- package/DS1/3-unit/ds-table.ts +75 -34
- package/DS1/3-unit/styles/ds-accordion.css +1 -0
- package/DS1/3-unit/styles/ds-avatar-group.css +2 -4
- package/DS1/3-unit/styles/ds-calendar-large.css +165 -0
- package/DS1/3-unit/styles/ds-calendar.css +238 -0
- package/DS1/3-unit/styles/ds-carousel.css +30 -0
- package/DS1/3-unit/styles/ds-date-picker.css +124 -0
- package/DS1/3-unit/styles/ds-list.css +1 -0
- package/DS1/3-unit/styles/ds-matrix.css +203 -0
- package/DS1/3-unit/styles/ds-menu.css +31 -6
- package/DS1/3-unit/styles/ds-row.css +84 -2
- package/DS1/3-unit/styles/ds-sidebar.css +134 -0
- package/DS1/3-unit/styles/ds-table.css +3 -74
- package/DS1/4-page/ds-dialog.ts +40 -4
- package/DS1/4-page/ds-document.ts +240 -0
- package/DS1/4-page/ds-footer.ts +165 -0
- package/DS1/4-page/ds-grid.ts +39 -59
- package/DS1/4-page/ds-header.ts +171 -0
- package/DS1/4-page/ds-page.ts +184 -0
- package/DS1/4-page/email.ts +2 -3
- package/DS1/4-page/styles/ds-container.css +1 -0
- package/DS1/4-page/styles/ds-document.css +18 -0
- package/DS1/4-page/styles/ds-footer.css +29 -0
- package/DS1/4-page/styles/ds-grid.css +31 -85
- package/DS1/4-page/styles/ds-header.css +57 -0
- package/DS1/4-page/styles/ds-page.css +214 -0
- package/DS1/components.ts +7 -1
- package/DS1/index.ts +24 -6
- package/DS1/react/avatar.ts +4 -5
- package/DS1/react/button-split.ts +29 -0
- package/DS1/react/button.ts +32 -13
- package/DS1/react/carousel.ts +76 -0
- package/DS1/react/dialog.ts +36 -5
- package/DS1/react/document.ts +14 -0
- package/DS1/react/empty.ts +32 -0
- package/DS1/react/footer.ts +17 -0
- package/DS1/react/header.ts +15 -0
- package/DS1/react/input.ts +28 -17
- package/DS1/react/message.ts +73 -0
- package/DS1/react/notice.ts +59 -0
- package/DS1/react/page.ts +13 -0
- package/DS1/react/progress.ts +99 -0
- package/DS1/react/sidebar.ts +71 -0
- package/DS1/react/stat.ts +73 -0
- package/DS1/react/toast.ts +82 -0
- package/DS1/x-icon/Tabler-LICENSE.md +27 -0
- package/DS1/x-icon/airtable.svg +5 -0
- package/DS1/x-icon/attach.svg +3 -0
- package/DS1/x-icon/audio.svg +3 -0
- package/DS1/x-icon/bag-alt.svg +3 -0
- package/DS1/x-icon/bank.svg +3 -0
- package/DS1/x-icon/banknote.svg +3 -0
- package/DS1/x-icon/bolt.svg +3 -0
- package/DS1/x-icon/book-alt.svg +3 -0
- package/DS1/x-icon/book.svg +4 -0
- package/DS1/x-icon/box.svg +3 -0
- package/DS1/x-icon/briefcase.svg +3 -0
- package/DS1/x-icon/building.svg +4 -0
- package/DS1/x-icon/car.svg +3 -0
- package/DS1/x-icon/card.svg +3 -0
- package/DS1/x-icon/cart.svg +3 -0
- package/DS1/x-icon/{ezo-android-screen-stats.svg → chevron-down.svg} +1 -1
- package/DS1/x-icon/{ezo-item-button-start.svg → chevron-left.svg} +1 -1
- package/DS1/x-icon/{ezo-android-screen-lists.svg → chevron-right.svg} +1 -1
- package/DS1/x-icon/{ezo-item-button-reopen.svg → chevron-up.svg} +1 -1
- package/DS1/x-icon/cloud.svg +3 -0
- package/DS1/x-icon/coffee.svg +3 -0
- package/DS1/x-icon/coins.svg +3 -0
- package/DS1/x-icon/cursor.svg +3 -0
- package/DS1/x-icon/curve.svg +7 -0
- package/DS1/x-icon/dislike.svg +4 -0
- package/DS1/x-icon/dot-bank.svg +3 -0
- package/DS1/x-icon/dot-banknote.svg +3 -0
- package/DS1/x-icon/dot-banknotes.svg +3 -0
- package/DS1/x-icon/dot-card.svg +3 -0
- package/DS1/x-icon/dot-coin.svg +3 -0
- package/DS1/x-icon/dot-coins.svg +3 -0
- package/DS1/x-icon/dot-receipt.svg +3 -0
- package/DS1/x-icon/dot-safe.svg +3 -0
- package/DS1/x-icon/dot-transfer.svg +3 -0
- package/DS1/x-icon/dot-wallet.svg +3 -0
- package/DS1/x-icon/download.svg +4 -0
- package/DS1/x-icon/drive.svg +5 -0
- package/DS1/x-icon/drop.svg +3 -0
- package/DS1/x-icon/dropbox.svg +3 -0
- package/DS1/x-icon/dumbbell.svg +3 -0
- package/DS1/x-icon/eye-off.svg +3 -0
- package/DS1/x-icon/eye.svg +3 -0
- package/DS1/x-icon/facebook.svg +3 -0
- package/DS1/x-icon/figma.svg +5 -0
- package/DS1/x-icon/flame.svg +3 -0
- package/DS1/x-icon/flip.svg +5 -0
- package/DS1/x-icon/food.svg +3 -0
- package/DS1/x-icon/fuel.svg +3 -0
- package/DS1/x-icon/game.svg +3 -0
- package/DS1/x-icon/gift.svg +3 -0
- package/DS1/x-icon/github.svg +3 -0
- package/DS1/x-icon/heart.svg +3 -0
- package/DS1/x-icon/history.svg +3 -0
- package/DS1/x-icon/home-alt.svg +3 -0
- package/DS1/x-icon/income.svg +3 -0
- package/DS1/x-icon/info.svg +5 -0
- package/DS1/x-icon/instagram.svg +5 -0
- package/DS1/x-icon/jpbank.svg +3 -0
- package/DS1/x-icon/key.svg +4 -0
- package/DS1/x-icon/keyboard.svg +3 -0
- package/DS1/x-icon/like.svg +4 -0
- package/DS1/x-icon/linkedin.svg +7 -0
- package/DS1/x-icon/loom.svg +6 -0
- package/DS1/x-icon/map.svg +4 -0
- package/DS1/x-icon/medical.svg +3 -0
- package/DS1/x-icon/minus.svg +3 -0
- package/DS1/x-icon/moon.svg +3 -0
- package/DS1/x-icon/move.svg +3 -0
- package/DS1/x-icon/music-alt.svg +3 -0
- package/DS1/x-icon/music.svg +5 -0
- package/DS1/x-icon/notion.svg +6 -0
- package/DS1/x-icon/offline.svg +3 -0
- package/DS1/x-icon/pause.svg +4 -0
- package/DS1/x-icon/paw.svg +3 -0
- package/DS1/x-icon/pdf.svg +3 -0
- package/DS1/x-icon/people.svg +5 -0
- package/DS1/x-icon/percent.svg +3 -0
- package/DS1/x-icon/phone.svg +3 -0
- package/DS1/x-icon/pill.svg +3 -0
- package/DS1/x-icon/plane.svg +3 -0
- package/DS1/x-icon/postal.svg +3 -0
- package/DS1/x-icon/present.svg +4 -0
- package/DS1/x-icon/reaction.svg +5 -0
- package/DS1/x-icon/receipt.svg +3 -0
- package/DS1/x-icon/refresh.svg +3 -0
- package/DS1/x-icon/refund.svg +3 -0
- package/DS1/x-icon/repeat.svg +3 -0
- package/DS1/x-icon/rotate.svg +4 -0
- package/DS1/x-icon/safe.svg +3 -0
- package/DS1/x-icon/school-alt.svg +3 -0
- package/DS1/x-icon/shield-alt.svg +3 -0
- package/DS1/x-icon/shield.svg +4 -0
- package/DS1/x-icon/shirt.svg +3 -0
- package/DS1/x-icon/shop.svg +3 -0
- package/DS1/x-icon/sign-in.svg +3 -0
- package/DS1/x-icon/sign-out.svg +3 -0
- package/DS1/x-icon/slack.svg +6 -0
- package/DS1/x-icon/sparkle.svg +3 -0
- package/DS1/x-icon/start.svg +4 -0
- package/DS1/x-icon/stop.svg +3 -0
- package/DS1/x-icon/sun.svg +3 -0
- package/DS1/x-icon/system.svg +4 -0
- package/DS1/x-icon/tag.svg +3 -0
- package/DS1/x-icon/ticket.svg +3 -0
- package/DS1/x-icon/title-struck.svg +4 -0
- package/DS1/x-icon/train.svg +3 -0
- package/DS1/x-icon/transfer.svg +3 -0
- package/DS1/x-icon/tv.svg +3 -0
- package/DS1/x-icon/upload.svg +4 -0
- package/DS1/x-icon/video.svg +4 -0
- package/DS1/x-icon/vimeo.svg +3 -0
- package/DS1/x-icon/wallet.svg +3 -0
- package/DS1/x-icon/wifi.svg +3 -0
- package/DS1/x-icon/window.svg +4 -0
- package/DS1/x-icon/wrench.svg +3 -0
- package/DS1/x-icon/x-brand.svg +4 -0
- package/DS1/x-icon/youtube.svg +4 -0
- package/README.md +3 -3
- package/dist/0-face/calendar.d.ts +75 -0
- package/dist/0-face/calendar.d.ts.map +1 -0
- package/dist/0-face/calendar.js +149 -0
- package/dist/0-face/carousel.d.ts +174 -0
- package/dist/0-face/carousel.d.ts.map +1 -0
- package/dist/0-face/carousel.js +583 -0
- package/dist/0-face/component-visibility.d.ts +7 -0
- package/dist/0-face/component-visibility.d.ts.map +1 -0
- package/dist/0-face/component-visibility.js +11 -0
- package/dist/0-face/copy-text.d.ts +11 -0
- package/dist/0-face/copy-text.d.ts.map +1 -0
- package/dist/0-face/copy-text.js +97 -0
- package/dist/0-face/device.d.ts +3 -7
- package/dist/0-face/device.d.ts.map +1 -1
- package/dist/0-face/device.js +7 -41
- package/dist/0-face/dialog-swipe.d.ts +49 -0
- package/dist/0-face/dialog-swipe.d.ts.map +1 -0
- package/dist/0-face/dialog-swipe.js +239 -0
- package/dist/0-face/dialogs.d.ts +33 -0
- package/dist/0-face/dialogs.d.ts.map +1 -0
- package/dist/0-face/dialogs.js +173 -0
- package/dist/0-face/drawer.d.ts +64 -0
- package/dist/0-face/drawer.d.ts.map +1 -0
- package/dist/0-face/drawer.js +256 -0
- package/dist/0-face/feedback-words.d.ts +21 -0
- package/dist/0-face/feedback-words.d.ts.map +1 -0
- package/dist/0-face/feedback-words.js +30 -0
- package/dist/0-face/feedback.d.ts +41 -0
- package/dist/0-face/feedback.d.ts.map +1 -0
- package/dist/0-face/feedback.js +35 -0
- package/dist/0-face/format.d.ts +166 -0
- package/dist/0-face/format.d.ts.map +1 -0
- package/dist/0-face/format.js +445 -0
- package/dist/0-face/generated/toast-assets.d.ts +11 -0
- package/dist/0-face/generated/toast-assets.d.ts.map +1 -0
- package/dist/0-face/generated/toast-assets.js +14 -0
- package/dist/0-face/grid-fit.js +1 -1
- package/dist/0-face/grid.d.ts.map +1 -1
- package/dist/0-face/grid.js +2 -1
- package/dist/0-face/header.d.ts +38 -0
- package/dist/0-face/header.d.ts.map +1 -0
- package/dist/0-face/header.js +80 -0
- package/dist/0-face/i18n.d.ts +32 -2
- package/dist/0-face/i18n.d.ts.map +1 -1
- package/dist/0-face/i18n.js +65 -19
- package/dist/0-face/keys.d.ts +104 -0
- package/dist/0-face/keys.d.ts.map +1 -0
- package/dist/0-face/keys.js +253 -0
- package/dist/0-face/languages.d.ts +2 -2
- package/dist/0-face/languages.js +3 -3
- package/dist/0-face/layout-inspector.js +6 -6
- package/dist/0-face/library-styles.d.ts +7 -0
- package/dist/0-face/library-styles.d.ts.map +1 -0
- package/dist/0-face/library-styles.js +29 -0
- package/dist/0-face/load-toaster.d.ts +8 -0
- package/dist/0-face/load-toaster.d.ts.map +1 -0
- package/dist/0-face/load-toaster.js +7 -0
- package/dist/0-face/preference-options.d.ts +34 -0
- package/dist/0-face/preference-options.d.ts.map +1 -0
- package/dist/0-face/preference-options.js +1 -0
- package/dist/0-face/preferences.d.ts +3 -12
- package/dist/0-face/preferences.d.ts.map +1 -1
- package/dist/0-face/pricing.d.ts +19 -9
- package/dist/0-face/pricing.d.ts.map +1 -1
- package/dist/0-face/pricing.js +81 -40
- package/dist/0-face/scaling.d.ts +71 -1
- package/dist/0-face/scaling.d.ts.map +1 -1
- package/dist/0-face/scaling.js +108 -3
- package/dist/0-face/shared-words.d.ts +9 -4
- package/dist/0-face/shared-words.d.ts.map +1 -1
- package/dist/0-face/sidebar.d.ts +69 -0
- package/dist/0-face/sidebar.d.ts.map +1 -0
- package/dist/0-face/sidebar.js +191 -0
- package/dist/0-face/theme-bootstrap.d.ts +1 -0
- package/dist/0-face/theme-bootstrap.d.ts.map +1 -0
- package/dist/0-face/theme-bootstrap.js +214 -0
- package/dist/0-face/theme.d.ts +32 -0
- package/dist/0-face/theme.d.ts.map +1 -1
- package/dist/0-face/theme.js +69 -43
- package/dist/0-face/toast-queue.d.ts +110 -0
- package/dist/0-face/toast-queue.d.ts.map +1 -0
- package/dist/0-face/toast-queue.js +98 -0
- package/dist/0-face/toaster.d.ts +27 -0
- package/dist/0-face/toaster.d.ts.map +1 -0
- package/dist/0-face/toaster.js +373 -0
- package/dist/0-face/tooltips.d.ts +24 -1
- package/dist/0-face/tooltips.d.ts.map +1 -1
- package/dist/0-face/tooltips.js +155 -16
- package/dist/0-face/translations/da.json +60 -1
- package/dist/0-face/translations/de.json +60 -1
- package/dist/0-face/translations/en.json +60 -1
- package/dist/0-face/translations/es.json +60 -1
- package/dist/0-face/translations/fi.json +60 -1
- package/dist/0-face/translations/fr.json +60 -1
- package/dist/0-face/translations/is.json +60 -1
- package/dist/0-face/translations/it.json +60 -1
- package/dist/0-face/translations/ja.json +60 -1
- package/dist/0-face/translations/ko.json +60 -1
- package/dist/0-face/translations/nb.json +60 -1
- package/dist/0-face/translations/pt-BR.json +60 -1
- package/dist/0-face/translations/pt.json +60 -1
- package/dist/0-face/translations/sv.json +60 -1
- package/dist/0-face/translations/zh.json +60 -1
- package/dist/0-face/translations-format.d.ts.map +1 -1
- package/dist/0-face/translations-format.js +3 -4
- package/dist/1-root/library-tokens.d.ts +31 -0
- package/dist/1-root/library-tokens.d.ts.map +1 -0
- package/dist/1-root/library-tokens.js +84 -0
- package/dist/1-root/measures.d.ts +52 -0
- package/dist/1-root/measures.d.ts.map +1 -0
- package/dist/1-root/measures.js +49 -0
- package/dist/1-root/palette.d.ts +5 -0
- package/dist/1-root/palette.d.ts.map +1 -1
- package/dist/1-root/palette.js +18 -0
- package/dist/2-core/button-split.d.ts +21 -0
- package/dist/2-core/button-split.d.ts.map +1 -0
- package/dist/2-core/button-split.js +48 -0
- package/dist/2-core/chart/grid-chart.d.ts +113 -0
- package/dist/2-core/chart/grid-chart.d.ts.map +1 -0
- package/dist/2-core/chart/grid-chart.js +466 -0
- package/dist/2-core/ds-avatar.d.ts +20 -3
- package/dist/2-core/ds-avatar.d.ts.map +1 -1
- package/dist/2-core/ds-avatar.js +19 -5
- package/dist/2-core/ds-badge.js +10 -13
- package/dist/2-core/ds-button.d.ts +76 -0
- package/dist/2-core/ds-button.d.ts.map +1 -1
- package/dist/2-core/ds-button.js +101 -26
- package/dist/2-core/ds-card.d.ts +76 -11
- package/dist/2-core/ds-card.d.ts.map +1 -1
- package/dist/2-core/ds-card.js +129 -105
- package/dist/2-core/ds-chart.d.ts +105 -0
- package/dist/2-core/ds-chart.d.ts.map +1 -0
- package/dist/2-core/ds-chart.js +390 -0
- package/dist/2-core/ds-composer.d.ts +7 -0
- package/dist/2-core/ds-composer.d.ts.map +1 -1
- package/dist/2-core/ds-composer.js +1 -1
- package/dist/2-core/ds-cycle.d.ts +36 -2
- package/dist/2-core/ds-cycle.d.ts.map +1 -1
- package/dist/2-core/ds-cycle.js +95 -18
- package/dist/2-core/ds-empty.d.ts +74 -0
- package/dist/2-core/ds-empty.d.ts.map +1 -0
- package/dist/2-core/ds-empty.js +96 -0
- package/dist/2-core/ds-icon.d.ts +6 -0
- package/dist/2-core/ds-icon.d.ts.map +1 -1
- package/dist/2-core/ds-icon.js +12 -2
- package/dist/2-core/ds-input.d.ts +39 -1
- package/dist/2-core/ds-input.d.ts.map +1 -1
- package/dist/2-core/ds-input.js +150 -6
- package/dist/2-core/ds-message.d.ts +154 -0
- package/dist/2-core/ds-message.d.ts.map +1 -0
- package/dist/2-core/ds-message.js +177 -0
- package/dist/2-core/ds-notice.d.ts +13 -0
- package/dist/2-core/ds-notice.d.ts.map +1 -0
- package/dist/2-core/ds-notice.js +11 -0
- package/dist/2-core/ds-progress.d.ts +200 -0
- package/dist/2-core/ds-progress.d.ts.map +1 -0
- package/dist/2-core/ds-progress.js +319 -0
- package/dist/2-core/ds-stat.d.ts +126 -0
- package/dist/2-core/ds-stat.d.ts.map +1 -0
- package/dist/2-core/ds-stat.js +137 -0
- package/dist/2-core/ds-switch.d.ts +1 -0
- package/dist/2-core/ds-switch.d.ts.map +1 -1
- package/dist/2-core/ds-switch.js +1 -0
- package/dist/2-core/ds-text.d.ts +15 -2
- package/dist/2-core/ds-text.d.ts.map +1 -1
- package/dist/2-core/ds-text.js +13 -0
- package/dist/2-core/ds-toast.d.ts +139 -0
- package/dist/2-core/ds-toast.d.ts.map +1 -0
- package/dist/2-core/ds-toast.js +329 -0
- package/dist/2-core/figures.d.ts +56 -0
- package/dist/2-core/figures.d.ts.map +1 -0
- package/dist/2-core/figures.js +70 -0
- package/dist/2-core/generated/ds-icon-map.d.ts +120 -65
- package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -1
- package/dist/2-core/generated/ds-icon-map.js +238 -128
- package/dist/2-core/generated/icon-avatar.d.ts +2 -0
- package/dist/2-core/generated/icon-avatar.d.ts.map +1 -0
- package/dist/2-core/generated/icon-avatar.js +2 -0
- package/dist/2-core/generated/icons-extra.d.ts.map +1 -1
- package/dist/2-core/generated/icons-extra.js +120 -65
- package/dist/2-core/generated/icons-immediate.d.ts +1 -1
- package/dist/2-core/generated/icons-immediate.d.ts.map +1 -1
- package/dist/2-core/generated/icons-immediate.js +1 -1
- package/dist/3-unit/calendar-base.d.ts +149 -0
- package/dist/3-unit/calendar-base.d.ts.map +1 -0
- package/dist/3-unit/calendar-base.js +172 -0
- package/dist/3-unit/ds-accordion.d.ts +9 -0
- package/dist/3-unit/ds-accordion.d.ts.map +1 -1
- package/dist/3-unit/ds-accordion.js +7 -1
- package/dist/3-unit/ds-avatar-group.d.ts +1 -0
- package/dist/3-unit/ds-avatar-group.d.ts.map +1 -1
- package/dist/3-unit/ds-calendar-large.d.ts +138 -0
- package/dist/3-unit/ds-calendar-large.d.ts.map +1 -0
- package/dist/3-unit/ds-calendar-large.js +305 -0
- package/dist/3-unit/ds-calendar.d.ts +175 -0
- package/dist/3-unit/ds-calendar.d.ts.map +1 -0
- package/dist/3-unit/ds-calendar.js +303 -0
- package/dist/3-unit/ds-carousel.d.ts +182 -0
- package/dist/3-unit/ds-carousel.d.ts.map +1 -0
- package/dist/3-unit/ds-carousel.js +327 -0
- package/dist/3-unit/ds-date-picker.d.ts +203 -0
- package/dist/3-unit/ds-date-picker.d.ts.map +1 -0
- package/dist/3-unit/ds-date-picker.js +499 -0
- package/dist/3-unit/ds-form.d.ts.map +1 -1
- package/dist/3-unit/ds-form.js +38 -28
- package/dist/3-unit/ds-list.d.ts +12 -0
- package/dist/3-unit/ds-list.d.ts.map +1 -1
- package/dist/3-unit/ds-list.js +52 -1
- package/dist/3-unit/ds-matrix.d.ts +146 -0
- package/dist/3-unit/ds-matrix.d.ts.map +1 -0
- package/dist/3-unit/ds-matrix.js +248 -0
- package/dist/3-unit/ds-menu.d.ts +1 -1
- package/dist/3-unit/ds-menu.d.ts.map +1 -1
- package/dist/3-unit/ds-menu.js +7 -4
- package/dist/3-unit/ds-row.d.ts +66 -0
- package/dist/3-unit/ds-row.d.ts.map +1 -1
- package/dist/3-unit/ds-row.js +80 -1
- package/dist/3-unit/ds-sidebar.d.ts +149 -0
- package/dist/3-unit/ds-sidebar.d.ts.map +1 -0
- package/dist/3-unit/ds-sidebar.js +342 -0
- package/dist/3-unit/ds-table.d.ts +28 -10
- package/dist/3-unit/ds-table.d.ts.map +1 -1
- package/dist/3-unit/ds-table.js +53 -25
- package/dist/4-page/ds-dialog.d.ts +16 -1
- package/dist/4-page/ds-dialog.d.ts.map +1 -1
- package/dist/4-page/ds-dialog.js +39 -3
- package/dist/4-page/ds-document.d.ts +98 -0
- package/dist/4-page/ds-document.d.ts.map +1 -0
- package/dist/4-page/ds-document.js +213 -0
- package/dist/4-page/ds-footer.d.ts +100 -0
- package/dist/4-page/ds-footer.d.ts.map +1 -0
- package/dist/4-page/ds-footer.js +119 -0
- package/dist/4-page/ds-grid.d.ts +32 -12
- package/dist/4-page/ds-grid.d.ts.map +1 -1
- package/dist/4-page/ds-grid.js +30 -39
- package/dist/4-page/ds-header.d.ts +84 -0
- package/dist/4-page/ds-header.d.ts.map +1 -0
- package/dist/4-page/ds-header.js +143 -0
- package/dist/4-page/ds-page.d.ts +110 -0
- package/dist/4-page/ds-page.d.ts.map +1 -0
- package/dist/4-page/ds-page.js +155 -0
- package/dist/4-page/email.d.ts +2 -3
- package/dist/4-page/email.d.ts.map +1 -1
- package/dist/4-page/email.js +2 -3
- package/dist/components.d.ts +4 -1
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +4 -1
- package/dist/design-system-1.bundle.js +12322 -5523
- package/dist/design-system-1.bundle.js.map +1 -1
- package/dist/design-system-1.bundle.min.js +8771 -4115
- package/dist/design-system-1.bundle.min.js.map +1 -1
- package/dist/design-system-1.css +1 -1
- package/dist/feedback.js +541 -0
- package/dist/feedback.js.map +1 -0
- package/dist/{icons-extra-BoAACA4X.js → icons-extra-CiDDs7_-.js} +404 -312
- package/dist/icons-extra-CiDDs7_-.js.map +1 -0
- package/dist/{icons-extra-DlxTo_Y4.js → icons-extra-hauwCx07.js} +121 -66
- package/dist/icons-extra-hauwCx07.js.map +1 -0
- package/dist/index.d.ts +21 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +21 -6
- package/dist/react/avatar.d.ts +5 -9
- package/dist/react/avatar.d.ts.map +1 -1
- package/dist/react/avatar.js +2 -2
- package/dist/react/button-split.d.ts +19 -0
- package/dist/react/button-split.d.ts.map +1 -0
- package/dist/react/{split.js → button-split.js} +12 -9
- package/dist/react/button.d.ts +18 -7
- package/dist/react/button.d.ts.map +1 -1
- package/dist/react/button.js +13 -4
- package/dist/react/carousel.d.ts +63 -0
- package/dist/react/carousel.d.ts.map +1 -0
- package/dist/react/carousel.js +47 -0
- package/dist/react/choice.d.ts +1 -1
- package/dist/react/context-menu.d.ts +337 -337
- package/dist/react/dialog.d.ts +684 -678
- package/dist/react/dialog.d.ts.map +1 -1
- package/dist/react/dialog.js +29 -3
- package/dist/react/document.d.ts +11 -0
- package/dist/react/document.d.ts.map +1 -0
- package/dist/react/document.js +10 -0
- package/dist/react/empty.d.ts +34 -0
- package/dist/react/empty.d.ts.map +1 -0
- package/dist/react/empty.js +8 -0
- package/dist/react/file-picker.d.ts +1 -1
- package/dist/react/footer.d.ts +13 -0
- package/dist/react/footer.d.ts.map +1 -0
- package/dist/react/footer.js +12 -0
- package/dist/react/header.d.ts +12 -0
- package/dist/react/header.d.ts.map +1 -0
- package/dist/react/header.js +11 -0
- package/dist/react/input.d.ts +31 -9
- package/dist/react/input.d.ts.map +1 -1
- package/dist/react/input.js +94 -94
- package/dist/react/message.d.ts +66 -0
- package/dist/react/message.d.ts.map +1 -0
- package/dist/react/message.js +37 -0
- package/dist/react/notice.d.ts +45 -0
- package/dist/react/notice.d.ts.map +1 -0
- package/dist/react/notice.js +34 -0
- package/dist/react/page.d.ts +10 -0
- package/dist/react/page.d.ts.map +1 -0
- package/dist/react/page.js +9 -0
- package/dist/react/progress.d.ts +107 -0
- package/dist/react/progress.d.ts.map +1 -0
- package/dist/react/progress.js +47 -0
- package/dist/react/sidebar.d.ts +54 -0
- package/dist/react/sidebar.d.ts.map +1 -0
- package/dist/react/sidebar.js +48 -0
- package/dist/react/stat.d.ts +78 -0
- package/dist/react/stat.d.ts.map +1 -0
- package/dist/react/stat.js +25 -0
- package/dist/react/toast.d.ts +37 -0
- package/dist/react/toast.d.ts.map +1 -0
- package/dist/react/toast.js +55 -0
- package/dist/shared-words-CyZYc_De.js +1818 -0
- package/dist/shared-words-CyZYc_De.js.map +1 -0
- package/dist/shared-words-DAVSET4Z.js +1800 -0
- package/dist/shared-words-DAVSET4Z.js.map +1 -0
- package/package.json +19 -6
- package/DS1/2-core/ds-banner.ts +0 -122
- package/DS1/2-core/ds-date.ts +0 -24
- package/DS1/2-core/ds-language.ts +0 -94
- package/DS1/2-core/ds-pagedots.ts +0 -52
- package/DS1/2-core/ds-split.ts +0 -122
- package/DS1/2-core/ds-textarea.ts +0 -136
- package/DS1/2-core/styles/ds-banner.css +0 -77
- package/DS1/2-core/styles/ds-date.css +0 -9
- package/DS1/2-core/styles/ds-language.css +0 -78
- package/DS1/2-core/styles/ds-pagedots.css +0 -31
- package/DS1/2-core/styles/ds-textarea.css +0 -27
- package/DS1/4-page/ds-layout.ts +0 -949
- package/DS1/4-page/styles/ds-layout.css +0 -246
- package/DS1/react/split.ts +0 -42
- package/DS1/x-icon/ezo-accordion-chevron.svg +0 -11
- package/DS1/x-icon/ezo-account-close.svg +0 -1
- package/DS1/x-icon/ezo-android-screen-archive.svg +0 -4
- package/DS1/x-icon/ezo-android-screen-calendar.svg +0 -6
- package/DS1/x-icon/ezo-android-screen-camera.svg +0 -5
- package/DS1/x-icon/ezo-android-screen-check.svg +0 -3
- package/DS1/x-icon/ezo-android-screen-compose.svg +0 -4
- package/DS1/x-icon/ezo-android-screen-globe.svg +0 -1
- package/DS1/x-icon/ezo-android-screen-shared.svg +0 -5
- package/DS1/x-icon/ezo-android-screen-store.svg +0 -4
- package/DS1/x-icon/ezo-android-screen-views.svg +0 -4
- package/DS1/x-icon/ezo-android-screen-work.svg +0 -3
- package/DS1/x-icon/ezo-arrow-cursor.svg +0 -8
- package/DS1/x-icon/ezo-block-accordion.svg +0 -1
- package/DS1/x-icon/ezo-block-divider.svg +0 -1
- package/DS1/x-icon/ezo-block-group.svg +0 -1
- package/DS1/x-icon/ezo-block-image.svg +0 -1
- package/DS1/x-icon/ezo-block-section.svg +0 -1
- package/DS1/x-icon/ezo-block-table.svg +0 -1
- package/DS1/x-icon/ezo-code.svg +0 -14
- package/DS1/x-icon/ezo-down.svg +0 -3
- package/DS1/x-icon/ezo-figma-premium-star.svg +0 -5
- package/DS1/x-icon/ezo-item-button-complete.svg +0 -4
- package/DS1/x-icon/ezo-item-button-header.svg +0 -3
- package/DS1/x-icon/ezo-item-button-open.svg +0 -3
- package/DS1/x-icon/ezo-item-button-star.svg +0 -3
- package/DS1/x-icon/ezo-item-button-unheader.svg +0 -7
- package/DS1/x-icon/ezo-item-button-unstar.svg +0 -5
- package/DS1/x-icon/ezo-item-star.svg +0 -5
- package/DS1/x-icon/ezo-left.svg +0 -3
- package/DS1/x-icon/ezo-logo.svg +0 -1
- package/DS1/x-icon/ezo-mic.svg +0 -8
- package/DS1/x-icon/ezo-move-column.svg +0 -14
- package/DS1/x-icon/ezo-move-row.svg +0 -18
- package/DS1/x-icon/ezo-navigation-check.svg +0 -1
- package/DS1/x-icon/ezo-note-back.svg +0 -5
- package/DS1/x-icon/ezo-note-menu-complete.svg +0 -11
- package/DS1/x-icon/ezo-note-menu-delete.svg +0 -4
- package/DS1/x-icon/ezo-note-menu-duplicate.svg +0 -8
- package/DS1/x-icon/ezo-note-menu-note.svg +0 -5
- package/DS1/x-icon/ezo-note-menu-page.svg +0 -3
- package/DS1/x-icon/ezo-note-menu-star.svg +0 -5
- package/DS1/x-icon/ezo-note-menu-start.svg +0 -6
- package/DS1/x-icon/ezo-note-menu-stop.svg +0 -6
- package/DS1/x-icon/ezo-note-more.svg +0 -7
- package/DS1/x-icon/ezo-note-star.svg +0 -5
- package/DS1/x-icon/ezo-pattern-call-to-action.svg +0 -1
- package/DS1/x-icon/ezo-play.svg +0 -5
- package/DS1/x-icon/ezo-premium-star.svg +0 -5
- package/DS1/x-icon/ezo-setting-1xdots.svg +0 -13
- package/DS1/x-icon/ezo-setting-1xgrid.svg +0 -10
- package/DS1/x-icon/ezo-setting-1xlines.svg +0 -7
- package/DS1/x-icon/ezo-setting-2xdots.svg +0 -8
- package/DS1/x-icon/ezo-setting-2xgrid.svg +0 -8
- package/DS1/x-icon/ezo-setting-2xlines.svg +0 -6
- package/DS1/x-icon/ezo-setting-blank.svg +0 -5
- package/DS1/x-icon/ezo-store-chevron.svg +0 -1
- package/DS1/x-icon/ezo-upgrade-close.svg +0 -5
- package/DS1/x-icon/product-sources.json +0 -2557
- package/dist/2-core/ds-banner.d.ts +0 -68
- package/dist/2-core/ds-banner.d.ts.map +0 -1
- package/dist/2-core/ds-banner.js +0 -98
- package/dist/2-core/ds-date.d.ts +0 -16
- package/dist/2-core/ds-date.d.ts.map +0 -1
- package/dist/2-core/ds-date.js +0 -15
- package/dist/2-core/ds-language.d.ts +0 -75
- package/dist/2-core/ds-language.d.ts.map +0 -1
- package/dist/2-core/ds-language.js +0 -74
- package/dist/2-core/ds-pagedots.d.ts +0 -32
- package/dist/2-core/ds-pagedots.d.ts.map +0 -1
- package/dist/2-core/ds-pagedots.js +0 -36
- package/dist/2-core/ds-split.d.ts +0 -75
- package/dist/2-core/ds-split.d.ts.map +0 -1
- package/dist/2-core/ds-split.js +0 -101
- package/dist/2-core/ds-textarea.d.ts +0 -46
- package/dist/2-core/ds-textarea.d.ts.map +0 -1
- package/dist/2-core/ds-textarea.js +0 -121
- package/dist/4-page/ds-layout.d.ts +0 -31
- package/dist/4-page/ds-layout.d.ts.map +0 -1
- package/dist/4-page/ds-layout.js +0 -930
- package/dist/icons-extra-BoAACA4X.js.map +0 -1
- package/dist/icons-extra-DlxTo_Y4.js.map +0 -1
- package/dist/react/split.d.ts +0 -15
- package/dist/react/split.d.ts.map +0 -1
- package/dist/shared-words-Cg6Phtx0.js +0 -915
- package/dist/shared-words-Cg6Phtx0.js.map +0 -1
- package/dist/shared-words-Ddz0yUEF.js +0 -933
- package/dist/shared-words-Ddz0yUEF.js.map +0 -1
- /package/DS1/x-icon/{ezo-password-visibility-see.svg → password-see.svg} +0 -0
- /package/DS1/x-icon/{ezo-password-visibility-unsee.svg → password-unsee.svg} +0 -0
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import "../2-core/ds-cycle";
|
|
3
|
+
/** A link in a footer column. */
|
|
4
|
+
export interface FooterLink {
|
|
5
|
+
/** The words: a translation key, or as written with the footer's `literal`. */
|
|
6
|
+
label: string;
|
|
7
|
+
href: string;
|
|
8
|
+
/** Opens elsewhere: in a new tab, with no referrer. */
|
|
9
|
+
external?: boolean;
|
|
10
|
+
/** The page being read: `aria-current="page"`. */
|
|
11
|
+
current?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/** A footer column: a heading and its links. */
|
|
14
|
+
export interface FooterColumn {
|
|
15
|
+
heading?: string;
|
|
16
|
+
links: FooterLink[];
|
|
17
|
+
}
|
|
18
|
+
/** The settings a footer offers, each a `ds-cycle` of that type. */
|
|
19
|
+
export type FooterPreference = "language" | "theme";
|
|
20
|
+
/** The preferences named by an attribute: every one when it is present but empty. */
|
|
21
|
+
export declare function footerPreferences(value: string | null | undefined): FooterPreference[];
|
|
22
|
+
/**
|
|
23
|
+
* @element ds-footer
|
|
24
|
+
* @prop {string} brand - The site's name, a link home: a translation key, or
|
|
25
|
+
* the words as they stand with `literal`. The `brand` slot takes its place.
|
|
26
|
+
* @prop {string} href - Where the brand links. `/` by default.
|
|
27
|
+
* @prop {string} tagline - A line about the site under the brand.
|
|
28
|
+
* @prop {FooterColumn[]} columns - The columns of links, eight squares each.
|
|
29
|
+
* @prop {string} label - The columns' accessible name, as a navigation; without it they are plain lists.
|
|
30
|
+
* @prop {string} owner - Who holds the copyright: the brand by default.
|
|
31
|
+
* @prop {number} year - The copyright's year: this year by default.
|
|
32
|
+
* @prop {string} preferences - `language`, `theme` or both, as `ds-cycle`
|
|
33
|
+
* buttons at the end of the last row; present but empty, both.
|
|
34
|
+
* @prop {boolean} literal - Show the words as written, never looked up.
|
|
35
|
+
*
|
|
36
|
+
* @slot brand - The brand, when it is more than words: a logo, a link of the page's own.
|
|
37
|
+
* @slot preferences - Controls of the page's own beside or in place of the cycles.
|
|
38
|
+
* @slot legal - The last line, in place of the copyright.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* <ds-footer brand="Name" tagline="What it does" preferences literal
|
|
42
|
+
* columns='[{"heading":"Product","links":[{"label":"Download","href":"/download"}]}]'>
|
|
43
|
+
* </ds-footer>
|
|
44
|
+
*/
|
|
45
|
+
export declare class Footer extends LitElement {
|
|
46
|
+
static properties: {
|
|
47
|
+
brand: {
|
|
48
|
+
type: StringConstructor;
|
|
49
|
+
};
|
|
50
|
+
href: {
|
|
51
|
+
type: StringConstructor;
|
|
52
|
+
};
|
|
53
|
+
tagline: {
|
|
54
|
+
type: StringConstructor;
|
|
55
|
+
};
|
|
56
|
+
columns: {
|
|
57
|
+
type: ArrayConstructor;
|
|
58
|
+
};
|
|
59
|
+
label: {
|
|
60
|
+
type: StringConstructor;
|
|
61
|
+
};
|
|
62
|
+
owner: {
|
|
63
|
+
type: StringConstructor;
|
|
64
|
+
};
|
|
65
|
+
year: {
|
|
66
|
+
type: NumberConstructor;
|
|
67
|
+
};
|
|
68
|
+
preferences: {
|
|
69
|
+
type: StringConstructor;
|
|
70
|
+
};
|
|
71
|
+
literal: {
|
|
72
|
+
type: BooleanConstructor;
|
|
73
|
+
reflect: boolean;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
static styles: import("lit").CSSResult[];
|
|
77
|
+
brand: string | undefined;
|
|
78
|
+
href: string;
|
|
79
|
+
tagline: string | undefined;
|
|
80
|
+
columns: FooterColumn[];
|
|
81
|
+
label: string | undefined;
|
|
82
|
+
owner: string | undefined;
|
|
83
|
+
year: number | undefined;
|
|
84
|
+
preferences: string | null | undefined;
|
|
85
|
+
literal: boolean;
|
|
86
|
+
private readonly relabel;
|
|
87
|
+
constructor();
|
|
88
|
+
connectedCallback(): void;
|
|
89
|
+
disconnectedCallback(): void;
|
|
90
|
+
private words;
|
|
91
|
+
private slotted;
|
|
92
|
+
private link;
|
|
93
|
+
render(): import("lit").TemplateResult<1>;
|
|
94
|
+
}
|
|
95
|
+
declare global {
|
|
96
|
+
interface HTMLElementTagNameMap {
|
|
97
|
+
"ds-footer": Footer;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=ds-footer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-footer.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-footer.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAA4B,MAAM,KAAK,CAAC;AAG3D,OAAO,oBAAoB,CAAC;AAK5B,iCAAiC;AACjC,MAAM,WAAW,UAAU;IACzB,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,gDAAgD;AAChD,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,oEAAoE;AACpE,MAAM,MAAM,gBAAgB,GAAG,UAAU,GAAG,OAAO,CAAC;AAGpD,qFAAqF;AACrF,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,gBAAgB,EAAE,CAKtF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAUf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,OAAO,EAAE,OAAO,CAAC;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAStD,iBAAiB;IAMjB,oBAAoB;IAMpB,OAAO,CAAC,KAAK;IAKb,OAAO,CAAC,OAAO;IAIf,OAAO,CAAC,IAAI;IAKZ,MAAM;CA+BP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
// ds-footer.ts
|
|
2
|
+
// A site footer: the brand, columns of links, the language and theme, and the
|
|
3
|
+
// copyright. Drawn by 1-root/footer.css, the same classes a page without
|
|
4
|
+
// scripts writes.
|
|
5
|
+
import { LitElement, html, nothing, unsafeCSS } from "lit";
|
|
6
|
+
import { getText } from "../0-face/i18n";
|
|
7
|
+
import { define } from "../0-face/define";
|
|
8
|
+
import "../2-core/ds-cycle";
|
|
9
|
+
import metrics from "../1-root/component-metrics.css?inline";
|
|
10
|
+
import controls from "../1-root/controls.css?inline";
|
|
11
|
+
import styles from "./styles/ds-footer.css?inline";
|
|
12
|
+
const PREFERENCES = ["language", "theme"];
|
|
13
|
+
/** The preferences named by an attribute: every one when it is present but empty. */
|
|
14
|
+
export function footerPreferences(value) {
|
|
15
|
+
if (value == null || value === "false")
|
|
16
|
+
return [];
|
|
17
|
+
const named = value.split(/[\s,]+/).filter(Boolean);
|
|
18
|
+
if (!named.length || named.includes("true"))
|
|
19
|
+
return [...PREFERENCES];
|
|
20
|
+
return PREFERENCES.filter(name => named.includes(name));
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @element ds-footer
|
|
24
|
+
* @prop {string} brand - The site's name, a link home: a translation key, or
|
|
25
|
+
* the words as they stand with `literal`. The `brand` slot takes its place.
|
|
26
|
+
* @prop {string} href - Where the brand links. `/` by default.
|
|
27
|
+
* @prop {string} tagline - A line about the site under the brand.
|
|
28
|
+
* @prop {FooterColumn[]} columns - The columns of links, eight squares each.
|
|
29
|
+
* @prop {string} label - The columns' accessible name, as a navigation; without it they are plain lists.
|
|
30
|
+
* @prop {string} owner - Who holds the copyright: the brand by default.
|
|
31
|
+
* @prop {number} year - The copyright's year: this year by default.
|
|
32
|
+
* @prop {string} preferences - `language`, `theme` or both, as `ds-cycle`
|
|
33
|
+
* buttons at the end of the last row; present but empty, both.
|
|
34
|
+
* @prop {boolean} literal - Show the words as written, never looked up.
|
|
35
|
+
*
|
|
36
|
+
* @slot brand - The brand, when it is more than words: a logo, a link of the page's own.
|
|
37
|
+
* @slot preferences - Controls of the page's own beside or in place of the cycles.
|
|
38
|
+
* @slot legal - The last line, in place of the copyright.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* <ds-footer brand="Name" tagline="What it does" preferences literal
|
|
42
|
+
* columns='[{"heading":"Product","links":[{"label":"Download","href":"/download"}]}]'>
|
|
43
|
+
* </ds-footer>
|
|
44
|
+
*/
|
|
45
|
+
export class Footer extends LitElement {
|
|
46
|
+
constructor() {
|
|
47
|
+
super();
|
|
48
|
+
this.relabel = () => this.requestUpdate();
|
|
49
|
+
this.href = "/";
|
|
50
|
+
this.columns = [];
|
|
51
|
+
this.literal = false;
|
|
52
|
+
}
|
|
53
|
+
connectedCallback() {
|
|
54
|
+
super.connectedCallback();
|
|
55
|
+
window.addEventListener("language-changed", this.relabel);
|
|
56
|
+
window.addEventListener("translations-loaded", this.relabel);
|
|
57
|
+
}
|
|
58
|
+
disconnectedCallback() {
|
|
59
|
+
window.removeEventListener("language-changed", this.relabel);
|
|
60
|
+
window.removeEventListener("translations-loaded", this.relabel);
|
|
61
|
+
super.disconnectedCallback();
|
|
62
|
+
}
|
|
63
|
+
words(value) {
|
|
64
|
+
if (!value)
|
|
65
|
+
return "";
|
|
66
|
+
return this.literal ? value : getText(value) || value;
|
|
67
|
+
}
|
|
68
|
+
slotted(name) {
|
|
69
|
+
return [...this.children].some(node => node.getAttribute("slot") === name);
|
|
70
|
+
}
|
|
71
|
+
link(link) {
|
|
72
|
+
return html `<li><a href=${link.href} aria-current=${link.current ? "page" : nothing}
|
|
73
|
+
target=${link.external ? "_blank" : nothing} rel=${link.external ? "noopener noreferrer" : nothing}>${this.words(link.label)}</a></li>`;
|
|
74
|
+
}
|
|
75
|
+
render() {
|
|
76
|
+
const columns = (Array.isArray(this.columns) ? this.columns : []).filter(column => column && Array.isArray(column.links));
|
|
77
|
+
const preferences = footerPreferences(this.preferences);
|
|
78
|
+
const hasPreferences = preferences.length > 0 || this.slotted("preferences");
|
|
79
|
+
const owner = this.owner ? this.words(this.owner) : this.words(this.brand);
|
|
80
|
+
const year = Number.isFinite(this.year) ? this.year : new Date().getFullYear();
|
|
81
|
+
const brandSlotted = this.slotted("brand");
|
|
82
|
+
const hasBrand = brandSlotted || Boolean(this.brand) || Boolean(this.tagline);
|
|
83
|
+
const list = columns.map(column => html `<div class="ds-footer__column" part="column">
|
|
84
|
+
${column.heading ? html `<h2 class="ds-footer__heading" part="heading">${this.words(column.heading)}</h2>` : nothing}
|
|
85
|
+
<ul class="ds-footer__links">${column.links.map(link => this.link(link))}</ul>
|
|
86
|
+
</div>`);
|
|
87
|
+
return html `<footer class="ds-footer" part="footer">
|
|
88
|
+
<div class="ds-footer__brand" part="brand" ?hidden=${!hasBrand}>
|
|
89
|
+
<slot name="brand" @slotchange=${this.relabel}>${this.brand ? html `<a class="ds-footer__mark" href=${this.href || "/"}>${this.words(this.brand)}</a>` : nothing}</slot>
|
|
90
|
+
${this.tagline ? html `<p class="ds-footer__tagline" part="tagline">${this.words(this.tagline)}</p>` : nothing}
|
|
91
|
+
</div>
|
|
92
|
+
${columns.length
|
|
93
|
+
? this.label
|
|
94
|
+
? html `<nav class="ds-footer__columns" part="columns" aria-label=${this.words(this.label)}>${list}</nav>`
|
|
95
|
+
: html `<div class="ds-footer__columns" part="columns">${list}</div>`
|
|
96
|
+
: nothing}
|
|
97
|
+
<div class="ds-footer__base" part="base">
|
|
98
|
+
<p class="ds-footer__legal" part="legal"><slot name="legal" @slotchange=${this.relabel}>${owner ? `© ${year} ${owner}` : `© ${year}`}</slot></p>
|
|
99
|
+
<div class="ds-footer__preferences" part="preferences" ?hidden=${!hasPreferences}>
|
|
100
|
+
${preferences.map(type => html `<ds-cycle type=${type}></ds-cycle>`)}
|
|
101
|
+
<slot name="preferences" @slotchange=${this.relabel}></slot>
|
|
102
|
+
</div>
|
|
103
|
+
</div>
|
|
104
|
+
</footer>`;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
Footer.properties = {
|
|
108
|
+
brand: { type: String },
|
|
109
|
+
href: { type: String },
|
|
110
|
+
tagline: { type: String },
|
|
111
|
+
columns: { type: Array },
|
|
112
|
+
label: { type: String },
|
|
113
|
+
owner: { type: String },
|
|
114
|
+
year: { type: Number },
|
|
115
|
+
preferences: { type: String },
|
|
116
|
+
literal: { type: Boolean, reflect: true },
|
|
117
|
+
};
|
|
118
|
+
Footer.styles = [unsafeCSS(metrics), unsafeCSS(controls), unsafeCSS(styles)];
|
|
119
|
+
define("ds-footer", Footer);
|
package/dist/4-page/ds-grid.d.ts
CHANGED
|
@@ -1,23 +1,43 @@
|
|
|
1
1
|
import { LitElement } from "lit";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
define(name: string, constructor: typeof LitElement): void;
|
|
5
|
-
}
|
|
6
|
-
var customElements: CustomElementRegistry;
|
|
7
|
-
}
|
|
2
|
+
export type GridPattern = "grid" | "lines" | "columns" | "dots" | "none";
|
|
3
|
+
/** Decorative paper or an alignment overlay; never arranges or captures content. */
|
|
8
4
|
export declare class Grid extends LitElement {
|
|
9
5
|
static properties: {
|
|
10
6
|
align: {
|
|
11
7
|
type: StringConstructor;
|
|
8
|
+
reflect: boolean;
|
|
9
|
+
};
|
|
10
|
+
pattern: {
|
|
11
|
+
type: StringConstructor;
|
|
12
|
+
reflect: boolean;
|
|
13
|
+
};
|
|
14
|
+
size: {
|
|
15
|
+
type: NumberConstructor;
|
|
16
|
+
};
|
|
17
|
+
rowSize: {
|
|
18
|
+
type: NumberConstructor;
|
|
19
|
+
attribute: string;
|
|
20
|
+
};
|
|
21
|
+
color: {
|
|
22
|
+
type: StringConstructor;
|
|
23
|
+
};
|
|
24
|
+
paper: {
|
|
25
|
+
type: StringConstructor;
|
|
26
|
+
};
|
|
27
|
+
contained: {
|
|
28
|
+
type: BooleanConstructor;
|
|
29
|
+
reflect: boolean;
|
|
12
30
|
};
|
|
13
31
|
};
|
|
14
|
-
align
|
|
15
|
-
|
|
16
|
-
|
|
32
|
+
align: "left" | "center" | "right";
|
|
33
|
+
pattern: GridPattern;
|
|
34
|
+
size: number;
|
|
35
|
+
rowSize: number | undefined;
|
|
36
|
+
color: string;
|
|
37
|
+
paper: string;
|
|
38
|
+
contained: boolean;
|
|
17
39
|
static styles: import("lit").CSSResult;
|
|
18
|
-
|
|
19
|
-
disconnectedCallback(): void;
|
|
20
|
-
private updateMobileClass;
|
|
40
|
+
constructor();
|
|
21
41
|
render(): import("lit").TemplateResult<1>;
|
|
22
42
|
}
|
|
23
43
|
declare global {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ds-grid.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-grid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ds-grid.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAKlD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;AAGzE,oFAAoF;AACpF,qBAAa,IAAK,SAAQ,UAAU;IAClC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;MAQf;IACM,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IACnC,OAAO,EAAE,WAAW,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IAC3B,MAAM,CAAC,MAAM,0BAAqB;;IAalC,MAAM;CAWP;AAGD,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,SAAS,EAAE,IAAI,CAAA;KAAE;CAAE"}
|
package/dist/4-page/ds-grid.js
CHANGED
|
@@ -1,49 +1,40 @@
|
|
|
1
|
-
// ds-grid.ts
|
|
2
|
-
// Simple grid layout component
|
|
3
1
|
import { LitElement, html, unsafeCSS } from "lit";
|
|
4
|
-
import {
|
|
2
|
+
import { styleMap } from "lit/directives/style-map.js";
|
|
3
|
+
import { define } from "../0-face/define";
|
|
5
4
|
import styles from "./styles/ds-grid.css?inline";
|
|
5
|
+
const patterns = new Set(["grid", "lines", "columns", "dots", "none"]);
|
|
6
|
+
/** Decorative paper or an alignment overlay; never arranges or captures content. */
|
|
6
7
|
export class Grid extends LitElement {
|
|
7
|
-
|
|
8
|
-
super
|
|
9
|
-
this.
|
|
10
|
-
|
|
11
|
-
this.
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
this.updateMobileClass();
|
|
17
|
-
}, 100);
|
|
18
|
-
};
|
|
19
|
-
window.addEventListener("resize", this.resizeObserver);
|
|
20
|
-
}
|
|
21
|
-
disconnectedCallback() {
|
|
22
|
-
super.disconnectedCallback();
|
|
23
|
-
if (this.resizeObserver) {
|
|
24
|
-
window.removeEventListener("resize", this.resizeObserver);
|
|
25
|
-
}
|
|
26
|
-
if (this.resizeTimeout) {
|
|
27
|
-
clearTimeout(this.resizeTimeout);
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
updateMobileClass() {
|
|
31
|
-
const isMobile = detectMobileDevice();
|
|
32
|
-
if (isMobile) {
|
|
33
|
-
this.classList.add("mobile");
|
|
34
|
-
this.classList.remove("desktop");
|
|
35
|
-
}
|
|
36
|
-
else {
|
|
37
|
-
this.classList.add("desktop");
|
|
38
|
-
this.classList.remove("mobile");
|
|
39
|
-
}
|
|
8
|
+
constructor() {
|
|
9
|
+
super();
|
|
10
|
+
this.align = "center";
|
|
11
|
+
this.pattern = "grid";
|
|
12
|
+
this.size = 20;
|
|
13
|
+
this.rowSize = undefined;
|
|
14
|
+
this.color = "";
|
|
15
|
+
this.paper = "";
|
|
16
|
+
this.contained = false;
|
|
40
17
|
}
|
|
41
18
|
render() {
|
|
42
|
-
|
|
19
|
+
const size = Number.isFinite(this.size) && this.size > 0 ? this.size : 20;
|
|
20
|
+
const row = Number.isFinite(this.rowSize) && this.rowSize > 0 ? this.rowSize : size;
|
|
21
|
+
return html `<div aria-hidden="true" class="paper" data-pattern=${patterns.has(this.pattern) ? this.pattern : "grid"}
|
|
22
|
+
style=${styleMap({
|
|
23
|
+
"--pitch-x": `${size}px`,
|
|
24
|
+
"--pitch-y": `${row}px`,
|
|
25
|
+
"--ink": this.color || "var(--ds-grid-color, color-mix(in srgb, var(--ds-text-color, var(--text-color, currentColor)) 12%, transparent))",
|
|
26
|
+
"--paper": this.paper || "var(--ds-grid-paper, transparent)",
|
|
27
|
+
})}></div>`;
|
|
43
28
|
}
|
|
44
29
|
}
|
|
45
30
|
Grid.properties = {
|
|
46
|
-
align: { type: String },
|
|
31
|
+
align: { type: String, reflect: true },
|
|
32
|
+
pattern: { type: String, reflect: true },
|
|
33
|
+
size: { type: Number },
|
|
34
|
+
rowSize: { type: Number, attribute: "row-size" },
|
|
35
|
+
color: { type: String },
|
|
36
|
+
paper: { type: String },
|
|
37
|
+
contained: { type: Boolean, reflect: true },
|
|
47
38
|
};
|
|
48
39
|
Grid.styles = unsafeCSS(styles);
|
|
49
|
-
|
|
40
|
+
define("ds-grid", Grid);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
import { LitElement, type PropertyValues } from "lit";
|
|
2
|
+
import "../2-core/ds-icon";
|
|
3
|
+
/** The shared word that names the menu button and its drawer. */
|
|
4
|
+
export declare const MENU_LABEL = "Menu";
|
|
5
|
+
/**
|
|
6
|
+
* @element ds-header
|
|
7
|
+
* @prop {string} brand - The site's name, a link home: a translation key, or
|
|
8
|
+
* the words as they stand with `literal`. The `brand` slot takes its place.
|
|
9
|
+
* @prop {string} href - Where the brand links. `/` by default.
|
|
10
|
+
* @prop {string} label - The navigation's accessible name, when a page has more than one.
|
|
11
|
+
* @prop {boolean} literal - Show `brand` as written, never looked up.
|
|
12
|
+
* @prop {boolean} sticky - Stay at the top of the page as it scrolls, on the paper.
|
|
13
|
+
*
|
|
14
|
+
* @slot - The navigation: `<a href>` links, one square high. The link to the
|
|
15
|
+
* address being read gets `aria-current="page"` unless one is marked.
|
|
16
|
+
* @slot brand - The brand, when it is more than words: a logo, a link of the page's own.
|
|
17
|
+
* @slot actions - Buttons or links at the end of the row.
|
|
18
|
+
*
|
|
19
|
+
* @fires ds-header-menu - The drawer opened or closed; `detail.open` says which.
|
|
20
|
+
*
|
|
21
|
+
* Below thirty squares of width the navigation and actions fold away and a
|
|
22
|
+
* menu button (the shared word "Menu") opens them in a drawer over the page:
|
|
23
|
+
* focus stays inside it, Escape, its close button, a link or the screen
|
|
24
|
+
* widening close it, and the page holds its scroll meanwhile.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* <ds-header brand="Name" literal>
|
|
28
|
+
* <a href="/">Home</a>
|
|
29
|
+
* <a href="/help">Help</a>
|
|
30
|
+
* <ds-button slot="actions" primary href="/download">Download</ds-button>
|
|
31
|
+
* </ds-header>
|
|
32
|
+
*/
|
|
33
|
+
export declare class Header extends LitElement {
|
|
34
|
+
static properties: {
|
|
35
|
+
brand: {
|
|
36
|
+
type: StringConstructor;
|
|
37
|
+
};
|
|
38
|
+
href: {
|
|
39
|
+
type: StringConstructor;
|
|
40
|
+
};
|
|
41
|
+
label: {
|
|
42
|
+
type: StringConstructor;
|
|
43
|
+
};
|
|
44
|
+
literal: {
|
|
45
|
+
type: BooleanConstructor;
|
|
46
|
+
reflect: boolean;
|
|
47
|
+
};
|
|
48
|
+
sticky: {
|
|
49
|
+
type: BooleanConstructor;
|
|
50
|
+
reflect: boolean;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
static styles: import("lit").CSSResult[];
|
|
54
|
+
brand: string | undefined;
|
|
55
|
+
href: string;
|
|
56
|
+
label: string | undefined;
|
|
57
|
+
literal: boolean;
|
|
58
|
+
sticky: boolean;
|
|
59
|
+
private drawer;
|
|
60
|
+
private readonly relabel;
|
|
61
|
+
constructor();
|
|
62
|
+
/** Whether the drawer is open. */
|
|
63
|
+
get menuOpen(): boolean;
|
|
64
|
+
/** Open the drawer (on a narrow screen, where the menu button shows). */
|
|
65
|
+
openMenu(): void;
|
|
66
|
+
/** Close the drawer. */
|
|
67
|
+
closeMenu(): void;
|
|
68
|
+
connectedCallback(): void;
|
|
69
|
+
disconnectedCallback(): void;
|
|
70
|
+
protected firstUpdated(): void;
|
|
71
|
+
protected updated(changed: PropertyValues<this>): void;
|
|
72
|
+
private words;
|
|
73
|
+
/** Light-DOM children that fill a slot: elements, or text that is not blank. */
|
|
74
|
+
private slotted;
|
|
75
|
+
private links;
|
|
76
|
+
private onNavChange;
|
|
77
|
+
render(): import("lit").TemplateResult<1>;
|
|
78
|
+
}
|
|
79
|
+
declare global {
|
|
80
|
+
interface HTMLElementTagNameMap {
|
|
81
|
+
"ds-header": Header;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=ds-header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-header.d.ts","sourceRoot":"","sources":["../../DS1/4-page/ds-header.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,UAAU,EAA4B,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAKhF,OAAO,mBAAmB,CAAC;AAK3B,iEAAiE;AACjE,eAAO,MAAM,UAAU,SAAS,CAAC;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,qBAAa,MAAO,SAAQ,UAAU;IACpC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;MAMf;IAEF,MAAM,CAAC,MAAM,4BAAgE;IAErE,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,OAAO,CAAC;IAExB,OAAO,CAAC,MAAM,CAAuB;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8B;;IAStD,kCAAkC;IAClC,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED,yEAAyE;IACzE,QAAQ,IAAI,IAAI;IAEhB,wBAAwB;IACxB,SAAS,IAAI,IAAI;IAEjB,iBAAiB;IAMjB,oBAAoB;IAQpB,SAAS,CAAC,YAAY;IAItB,SAAS,CAAC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC,IAAI,CAAC;IAe/C,OAAO,CAAC,KAAK;IAKb,gFAAgF;IAChF,OAAO,CAAC,OAAO;IAMf,OAAO,CAAC,KAAK;IAIb,OAAO,CAAC,WAAW,CAGjB;IAEF,MAAM;CAwBP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,WAAW,EAAE,MAAM,CAAC;KACrB;CACF"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
// ds-header.ts
|
|
2
|
+
// A site header: the brand, the navigation with the page you are on, and the
|
|
3
|
+
// actions, folding into a drawer on a narrow screen. Drawn by 1-root/header.css,
|
|
4
|
+
// the same classes a page without scripts writes, and opened by 0-face/drawer.ts.
|
|
5
|
+
import { LitElement, html, nothing, unsafeCSS } from "lit";
|
|
6
|
+
import { getText } from "../0-face/i18n";
|
|
7
|
+
import { define } from "../0-face/define";
|
|
8
|
+
import { attachDrawer } from "../0-face/drawer";
|
|
9
|
+
import { markCurrentLink } from "../0-face/header";
|
|
10
|
+
import "../2-core/ds-icon";
|
|
11
|
+
import metrics from "../1-root/component-metrics.css?inline";
|
|
12
|
+
import controls from "../1-root/controls.css?inline";
|
|
13
|
+
import styles from "./styles/ds-header.css?inline";
|
|
14
|
+
/** The shared word that names the menu button and its drawer. */
|
|
15
|
+
export const MENU_LABEL = "Menu";
|
|
16
|
+
/**
|
|
17
|
+
* @element ds-header
|
|
18
|
+
* @prop {string} brand - The site's name, a link home: a translation key, or
|
|
19
|
+
* the words as they stand with `literal`. The `brand` slot takes its place.
|
|
20
|
+
* @prop {string} href - Where the brand links. `/` by default.
|
|
21
|
+
* @prop {string} label - The navigation's accessible name, when a page has more than one.
|
|
22
|
+
* @prop {boolean} literal - Show `brand` as written, never looked up.
|
|
23
|
+
* @prop {boolean} sticky - Stay at the top of the page as it scrolls, on the paper.
|
|
24
|
+
*
|
|
25
|
+
* @slot - The navigation: `<a href>` links, one square high. The link to the
|
|
26
|
+
* address being read gets `aria-current="page"` unless one is marked.
|
|
27
|
+
* @slot brand - The brand, when it is more than words: a logo, a link of the page's own.
|
|
28
|
+
* @slot actions - Buttons or links at the end of the row.
|
|
29
|
+
*
|
|
30
|
+
* @fires ds-header-menu - The drawer opened or closed; `detail.open` says which.
|
|
31
|
+
*
|
|
32
|
+
* Below thirty squares of width the navigation and actions fold away and a
|
|
33
|
+
* menu button (the shared word "Menu") opens them in a drawer over the page:
|
|
34
|
+
* focus stays inside it, Escape, its close button, a link or the screen
|
|
35
|
+
* widening close it, and the page holds its scroll meanwhile.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* <ds-header brand="Name" literal>
|
|
39
|
+
* <a href="/">Home</a>
|
|
40
|
+
* <a href="/help">Help</a>
|
|
41
|
+
* <ds-button slot="actions" primary href="/download">Download</ds-button>
|
|
42
|
+
* </ds-header>
|
|
43
|
+
*/
|
|
44
|
+
export class Header extends LitElement {
|
|
45
|
+
constructor() {
|
|
46
|
+
super();
|
|
47
|
+
this.drawer = null;
|
|
48
|
+
this.relabel = () => this.requestUpdate();
|
|
49
|
+
this.onNavChange = () => {
|
|
50
|
+
markCurrentLink(this.links());
|
|
51
|
+
this.requestUpdate();
|
|
52
|
+
};
|
|
53
|
+
this.href = "/";
|
|
54
|
+
this.literal = false;
|
|
55
|
+
this.sticky = false;
|
|
56
|
+
}
|
|
57
|
+
/** Whether the drawer is open. */
|
|
58
|
+
get menuOpen() {
|
|
59
|
+
return this.drawer?.isOpen ?? false;
|
|
60
|
+
}
|
|
61
|
+
/** Open the drawer (on a narrow screen, where the menu button shows). */
|
|
62
|
+
openMenu() { this.drawer?.open(); }
|
|
63
|
+
/** Close the drawer. */
|
|
64
|
+
closeMenu() { this.drawer?.close(); }
|
|
65
|
+
connectedCallback() {
|
|
66
|
+
super.connectedCallback();
|
|
67
|
+
window.addEventListener("language-changed", this.relabel);
|
|
68
|
+
window.addEventListener("translations-loaded", this.relabel);
|
|
69
|
+
}
|
|
70
|
+
disconnectedCallback() {
|
|
71
|
+
window.removeEventListener("language-changed", this.relabel);
|
|
72
|
+
window.removeEventListener("translations-loaded", this.relabel);
|
|
73
|
+
this.drawer?.destroy();
|
|
74
|
+
this.drawer = null;
|
|
75
|
+
super.disconnectedCallback();
|
|
76
|
+
}
|
|
77
|
+
firstUpdated() {
|
|
78
|
+
markCurrentLink(this.links());
|
|
79
|
+
}
|
|
80
|
+
updated(changed) {
|
|
81
|
+
super.updated(changed);
|
|
82
|
+
if (this.drawer)
|
|
83
|
+
return;
|
|
84
|
+
const root = this.renderRoot;
|
|
85
|
+
const toggle = root.querySelector('[part="toggle"]');
|
|
86
|
+
const panel = root.querySelector('[part="drawer"]');
|
|
87
|
+
if (!toggle || !panel)
|
|
88
|
+
return;
|
|
89
|
+
this.drawer = attachDrawer({
|
|
90
|
+
toggle,
|
|
91
|
+
panel,
|
|
92
|
+
content: () => [...root.querySelectorAll(':is([part="nav"], [part="actions"]):not([hidden])')],
|
|
93
|
+
onToggle: open => this.dispatchEvent(new CustomEvent("ds-header-menu", { bubbles: true, composed: true, detail: { open } })),
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
words(value) {
|
|
97
|
+
if (!value)
|
|
98
|
+
return "";
|
|
99
|
+
return this.literal ? value : getText(value) || value;
|
|
100
|
+
}
|
|
101
|
+
/** Light-DOM children that fill a slot: elements, or text that is not blank. */
|
|
102
|
+
slotted(name) {
|
|
103
|
+
return [...this.childNodes].some(node => name
|
|
104
|
+
? node instanceof Element && node.getAttribute("slot") === name
|
|
105
|
+
: node instanceof Element ? !node.hasAttribute("slot") : node.nodeType === Node.TEXT_NODE && Boolean(node.textContent?.trim()));
|
|
106
|
+
}
|
|
107
|
+
links() {
|
|
108
|
+
return [...this.children].filter((child) => child instanceof HTMLAnchorElement && !child.hasAttribute("slot"));
|
|
109
|
+
}
|
|
110
|
+
render() {
|
|
111
|
+
const menu = getText(MENU_LABEL) || MENU_LABEL;
|
|
112
|
+
const close = getText("Close") || "Close";
|
|
113
|
+
const hasNav = this.slotted("");
|
|
114
|
+
const hasActions = this.slotted("actions");
|
|
115
|
+
const brand = this.slotted("brand")
|
|
116
|
+
? html `<span class="ds-header__brand" part="brand"><slot name="brand" @slotchange=${this.relabel}></slot></span>`
|
|
117
|
+
: this.brand
|
|
118
|
+
? html `<a class="ds-header__brand" part="brand" href=${this.href || "/"}>${this.words(this.brand)}</a>`
|
|
119
|
+
: html `<slot name="brand" @slotchange=${this.relabel}></slot>`;
|
|
120
|
+
return html `<header class="ds-header${this.sticky ? " ds-header--sticky" : ""}" part="header">
|
|
121
|
+
${brand}
|
|
122
|
+
<nav class="ds-header__nav" part="nav" id="nav" aria-label=${this.label ? this.words(this.label) : nothing} ?hidden=${!hasNav}><slot @slotchange=${this.onNavChange}></slot></nav>
|
|
123
|
+
<div class="ds-header__actions" part="actions" ?hidden=${!hasActions}><slot name="actions" @slotchange=${this.relabel}></slot></div>
|
|
124
|
+
<button class="ds-button ds-button--icon ds-header__toggle" part="toggle" type="button" aria-label=${menu} aria-controls="drawer" ?hidden=${!hasNav && !hasActions}>
|
|
125
|
+
<ds-icon type="menu" size="large" aria-hidden="true"></ds-icon><ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
126
|
+
</button>
|
|
127
|
+
<dialog class="ds-dialog ds-drawer" part="drawer" id="drawer" aria-label=${menu}>
|
|
128
|
+
<div class="ds-drawer__bar"><button class="ds-button ds-button--icon ds-drawer__close" part="close" type="button" aria-label=${close}>
|
|
129
|
+
<ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
130
|
+
</button></div>
|
|
131
|
+
</dialog>
|
|
132
|
+
</header>`;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
Header.properties = {
|
|
136
|
+
brand: { type: String },
|
|
137
|
+
href: { type: String },
|
|
138
|
+
label: { type: String },
|
|
139
|
+
literal: { type: Boolean, reflect: true },
|
|
140
|
+
sticky: { type: Boolean, reflect: true },
|
|
141
|
+
};
|
|
142
|
+
Header.styles = [unsafeCSS(metrics), unsafeCSS(controls), unsafeCSS(styles)];
|
|
143
|
+
define("ds-header", Header);
|