@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,171 @@
|
|
|
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
|
+
|
|
6
|
+
import { LitElement, html, nothing, unsafeCSS, type PropertyValues } from "lit";
|
|
7
|
+
import { getText } from "../0-face/i18n";
|
|
8
|
+
import { define } from "../0-face/define";
|
|
9
|
+
import { attachDrawer, type Drawer } from "../0-face/drawer";
|
|
10
|
+
import { markCurrentLink } from "../0-face/header";
|
|
11
|
+
import "../2-core/ds-icon";
|
|
12
|
+
import metrics from "../1-root/component-metrics.css?inline";
|
|
13
|
+
import controls from "../1-root/controls.css?inline";
|
|
14
|
+
import styles from "./styles/ds-header.css?inline";
|
|
15
|
+
|
|
16
|
+
/** The shared word that names the menu button and its drawer. */
|
|
17
|
+
export const MENU_LABEL = "Menu";
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* @element ds-header
|
|
21
|
+
* @prop {string} brand - The site's name, a link home: a translation key, or
|
|
22
|
+
* the words as they stand with `literal`. The `brand` slot takes its place.
|
|
23
|
+
* @prop {string} href - Where the brand links. `/` by default.
|
|
24
|
+
* @prop {string} label - The navigation's accessible name, when a page has more than one.
|
|
25
|
+
* @prop {boolean} literal - Show `brand` as written, never looked up.
|
|
26
|
+
* @prop {boolean} sticky - Stay at the top of the page as it scrolls, on the paper.
|
|
27
|
+
*
|
|
28
|
+
* @slot - The navigation: `<a href>` links, one square high. The link to the
|
|
29
|
+
* address being read gets `aria-current="page"` unless one is marked.
|
|
30
|
+
* @slot brand - The brand, when it is more than words: a logo, a link of the page's own.
|
|
31
|
+
* @slot actions - Buttons or links at the end of the row.
|
|
32
|
+
*
|
|
33
|
+
* @fires ds-header-menu - The drawer opened or closed; `detail.open` says which.
|
|
34
|
+
*
|
|
35
|
+
* Below thirty squares of width the navigation and actions fold away and a
|
|
36
|
+
* menu button (the shared word "Menu") opens them in a drawer over the page:
|
|
37
|
+
* focus stays inside it, Escape, its close button, a link or the screen
|
|
38
|
+
* widening close it, and the page holds its scroll meanwhile.
|
|
39
|
+
*
|
|
40
|
+
* @example
|
|
41
|
+
* <ds-header brand="Name" literal>
|
|
42
|
+
* <a href="/">Home</a>
|
|
43
|
+
* <a href="/help">Help</a>
|
|
44
|
+
* <ds-button slot="actions" primary href="/download">Download</ds-button>
|
|
45
|
+
* </ds-header>
|
|
46
|
+
*/
|
|
47
|
+
export class Header extends LitElement {
|
|
48
|
+
static properties = {
|
|
49
|
+
brand: { type: String },
|
|
50
|
+
href: { type: String },
|
|
51
|
+
label: { type: String },
|
|
52
|
+
literal: { type: Boolean, reflect: true },
|
|
53
|
+
sticky: { type: Boolean, reflect: true },
|
|
54
|
+
};
|
|
55
|
+
|
|
56
|
+
static styles = [unsafeCSS(metrics), unsafeCSS(controls), unsafeCSS(styles)];
|
|
57
|
+
|
|
58
|
+
declare brand: string | undefined;
|
|
59
|
+
declare href: string;
|
|
60
|
+
declare label: string | undefined;
|
|
61
|
+
declare literal: boolean;
|
|
62
|
+
declare sticky: boolean;
|
|
63
|
+
|
|
64
|
+
private drawer: Drawer | null = null;
|
|
65
|
+
private readonly relabel = () => this.requestUpdate();
|
|
66
|
+
|
|
67
|
+
constructor() {
|
|
68
|
+
super();
|
|
69
|
+
this.href = "/";
|
|
70
|
+
this.literal = false;
|
|
71
|
+
this.sticky = false;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
/** Whether the drawer is open. */
|
|
75
|
+
get menuOpen(): boolean {
|
|
76
|
+
return this.drawer?.isOpen ?? false;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Open the drawer (on a narrow screen, where the menu button shows). */
|
|
80
|
+
openMenu(): void { this.drawer?.open(); }
|
|
81
|
+
|
|
82
|
+
/** Close the drawer. */
|
|
83
|
+
closeMenu(): void { this.drawer?.close(); }
|
|
84
|
+
|
|
85
|
+
connectedCallback() {
|
|
86
|
+
super.connectedCallback();
|
|
87
|
+
window.addEventListener("language-changed", this.relabel);
|
|
88
|
+
window.addEventListener("translations-loaded", this.relabel);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
disconnectedCallback() {
|
|
92
|
+
window.removeEventListener("language-changed", this.relabel);
|
|
93
|
+
window.removeEventListener("translations-loaded", this.relabel);
|
|
94
|
+
this.drawer?.destroy();
|
|
95
|
+
this.drawer = null;
|
|
96
|
+
super.disconnectedCallback();
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
protected firstUpdated() {
|
|
100
|
+
markCurrentLink(this.links());
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
protected updated(changed: PropertyValues<this>) {
|
|
104
|
+
super.updated(changed);
|
|
105
|
+
if (this.drawer) return;
|
|
106
|
+
const root = this.renderRoot;
|
|
107
|
+
const toggle = root.querySelector<HTMLElement>('[part="toggle"]');
|
|
108
|
+
const panel = root.querySelector<HTMLDialogElement>('[part="drawer"]');
|
|
109
|
+
if (!toggle || !panel) return;
|
|
110
|
+
this.drawer = attachDrawer({
|
|
111
|
+
toggle,
|
|
112
|
+
panel,
|
|
113
|
+
content: () => [...root.querySelectorAll(':is([part="nav"], [part="actions"]):not([hidden])')],
|
|
114
|
+
onToggle: open => this.dispatchEvent(new CustomEvent("ds-header-menu", { bubbles: true, composed: true, detail: { open } })),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
private words(value: string | undefined): string {
|
|
119
|
+
if (!value) return "";
|
|
120
|
+
return this.literal ? value : getText(value) || value;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
/** Light-DOM children that fill a slot: elements, or text that is not blank. */
|
|
124
|
+
private slotted(name: string): boolean {
|
|
125
|
+
return [...this.childNodes].some(node => name
|
|
126
|
+
? node instanceof Element && node.getAttribute("slot") === name
|
|
127
|
+
: node instanceof Element ? !node.hasAttribute("slot") : node.nodeType === Node.TEXT_NODE && Boolean(node.textContent?.trim()));
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
private links(): HTMLAnchorElement[] {
|
|
131
|
+
return [...this.children].filter((child): child is HTMLAnchorElement => child instanceof HTMLAnchorElement && !child.hasAttribute("slot"));
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
private onNavChange = () => {
|
|
135
|
+
markCurrentLink(this.links());
|
|
136
|
+
this.requestUpdate();
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
render() {
|
|
140
|
+
const menu = getText(MENU_LABEL) || MENU_LABEL;
|
|
141
|
+
const close = getText("Close") || "Close";
|
|
142
|
+
const hasNav = this.slotted("");
|
|
143
|
+
const hasActions = this.slotted("actions");
|
|
144
|
+
const brand = this.slotted("brand")
|
|
145
|
+
? html`<span class="ds-header__brand" part="brand"><slot name="brand" @slotchange=${this.relabel}></slot></span>`
|
|
146
|
+
: this.brand
|
|
147
|
+
? html`<a class="ds-header__brand" part="brand" href=${this.href || "/"}>${this.words(this.brand)}</a>`
|
|
148
|
+
: html`<slot name="brand" @slotchange=${this.relabel}></slot>`;
|
|
149
|
+
return html`<header class="ds-header${this.sticky ? " ds-header--sticky" : ""}" part="header">
|
|
150
|
+
${brand}
|
|
151
|
+
<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>
|
|
152
|
+
<div class="ds-header__actions" part="actions" ?hidden=${!hasActions}><slot name="actions" @slotchange=${this.relabel}></slot></div>
|
|
153
|
+
<button class="ds-button ds-button--icon ds-header__toggle" part="toggle" type="button" aria-label=${menu} aria-controls="drawer" ?hidden=${!hasNav && !hasActions}>
|
|
154
|
+
<ds-icon type="menu" size="large" aria-hidden="true"></ds-icon><ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
155
|
+
</button>
|
|
156
|
+
<dialog class="ds-dialog ds-drawer" part="drawer" id="drawer" aria-label=${menu}>
|
|
157
|
+
<div class="ds-drawer__bar"><button class="ds-button ds-button--icon ds-drawer__close" part="close" type="button" aria-label=${close}>
|
|
158
|
+
<ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
159
|
+
</button></div>
|
|
160
|
+
</dialog>
|
|
161
|
+
</header>`;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
define("ds-header", Header);
|
|
166
|
+
|
|
167
|
+
declare global {
|
|
168
|
+
interface HTMLElementTagNameMap {
|
|
169
|
+
"ds-header": Header;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
import { LitElement, html, unsafeCSS, type PropertyValues } from "lit";
|
|
2
|
+
import { ifDefined } from "lit/directives/if-defined.js";
|
|
3
|
+
import { define } from "../0-face/define";
|
|
4
|
+
import { attachDrawer, type Drawer } from "../0-face/drawer";
|
|
5
|
+
import { getText } from "../0-face/i18n";
|
|
6
|
+
import "../2-core/ds-icon";
|
|
7
|
+
import controls from "../1-root/controls.css?inline";
|
|
8
|
+
import styles from "./styles/ds-page.css?inline";
|
|
9
|
+
|
|
10
|
+
export type PageLayout = "sidebar" | "split" | "inspector" | "column" | "centered" | "tiles";
|
|
11
|
+
export const PAGE_LAYOUTS: readonly PageLayout[] = ["sidebar", "split", "inspector", "column", "centered", "tiles"];
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* A standard page: where units stand on the grid. Every layout uses the same
|
|
15
|
+
* five areas, so content can move between layouts without being rewritten.
|
|
16
|
+
*
|
|
17
|
+
* - `slot="header"` runs along the top of the main area
|
|
18
|
+
* - `slot="nav"` is the leading column: navigation, or the list in `split`
|
|
19
|
+
* - the default slot is the main area
|
|
20
|
+
* - `slot="aside"` is the trailing column, shown by `inspector`
|
|
21
|
+
* - `slot="footer"` runs along the bottom of the main area
|
|
22
|
+
*
|
|
23
|
+
* Columns are whole squares: `sidebar` and `inspector` lead with 12, `split`
|
|
24
|
+
* with 16; `column` is 32 wide and `centered` 16, and `measure` sets either in
|
|
25
|
+
* whole squares. A centred column stands on a whole square: the room beside it
|
|
26
|
+
* is rounded down to squares, so the column never straddles a grid line.
|
|
27
|
+
* `tiles` places each main child in a 12-square tile. Below 30 squares of
|
|
28
|
+
* width every layout stacks.
|
|
29
|
+
*
|
|
30
|
+
* With `drawer`, the navigation folds away below 30 squares instead of
|
|
31
|
+
* standing above the work: a menu button one square wide stands before the
|
|
32
|
+
* header and opens it in a drawer over the page (0-face/drawer.ts, the
|
|
33
|
+
* header's), with focus kept inside, closed by Escape, its close button, a
|
|
34
|
+
* link or the page widening, and the page's scroll held behind it.
|
|
35
|
+
*
|
|
36
|
+
* @element ds-page
|
|
37
|
+
* @attr layout - `sidebar`, `split`, `inspector`, `column`, `centered` or `tiles`.
|
|
38
|
+
* @attr divided - Draws a hairline between the columns.
|
|
39
|
+
* @attr measure - Width of the `column` or `centered` column in whole squares.
|
|
40
|
+
* @attr fill - Takes its container's height; each column scrolls on its own.
|
|
41
|
+
* @attr view - Labels each area with its slot name, for inspection.
|
|
42
|
+
* @attr drawer - Folds the navigation into a drawer on a narrow page.
|
|
43
|
+
* @attr drawer-label - The menu button's and drawer's name: a translation key, the shared word "Menu" by default.
|
|
44
|
+
* @fires ds-page-drawer - The drawer opened or closed; `detail.open` says which.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* <ds-page layout="sidebar">
|
|
48
|
+
* <ds-sidebar slot="nav" label="Projects"></ds-sidebar>
|
|
49
|
+
* <ds-row slot="header" fill>…</ds-row>
|
|
50
|
+
* <ds-list>…</ds-list>
|
|
51
|
+
* </ds-page>
|
|
52
|
+
*/
|
|
53
|
+
export class Page extends LitElement {
|
|
54
|
+
static properties = {
|
|
55
|
+
layout: { type: String, reflect: true },
|
|
56
|
+
divided: { type: Boolean, reflect: true },
|
|
57
|
+
measure: { type: Number, reflect: true },
|
|
58
|
+
fill: { type: Boolean, reflect: true },
|
|
59
|
+
view: { type: Boolean, reflect: true },
|
|
60
|
+
drawer: { type: Boolean, reflect: true },
|
|
61
|
+
drawerLabel: { type: String, attribute: "drawer-label" },
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
declare layout: PageLayout;
|
|
65
|
+
declare divided: boolean;
|
|
66
|
+
declare measure: number | undefined;
|
|
67
|
+
declare fill: boolean;
|
|
68
|
+
declare view: boolean;
|
|
69
|
+
declare drawer: boolean;
|
|
70
|
+
declare drawerLabel: string | undefined;
|
|
71
|
+
|
|
72
|
+
static styles = [unsafeCSS(controls), unsafeCSS(styles)];
|
|
73
|
+
|
|
74
|
+
private navigationDrawer: Drawer | null = null;
|
|
75
|
+
private readonly relabel = () => this.requestUpdate();
|
|
76
|
+
|
|
77
|
+
constructor() {
|
|
78
|
+
super();
|
|
79
|
+
this.layout = "sidebar";
|
|
80
|
+
this.divided = false;
|
|
81
|
+
this.fill = false;
|
|
82
|
+
this.view = false;
|
|
83
|
+
this.drawer = false;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
connectedCallback() {
|
|
87
|
+
super.connectedCallback();
|
|
88
|
+
window.addEventListener("language-changed", this.relabel);
|
|
89
|
+
window.addEventListener("translations-loaded", this.relabel);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
disconnectedCallback() {
|
|
93
|
+
window.removeEventListener("language-changed", this.relabel);
|
|
94
|
+
window.removeEventListener("translations-loaded", this.relabel);
|
|
95
|
+
this.navigationDrawer?.destroy();
|
|
96
|
+
this.navigationDrawer = null;
|
|
97
|
+
super.disconnectedCallback();
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/** Whether the navigation drawer is open. */
|
|
101
|
+
get drawerOpen(): boolean {
|
|
102
|
+
return this.navigationDrawer?.isOpen ?? false;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/** Open the navigation drawer (on a narrow page with `drawer`). */
|
|
106
|
+
openDrawer(): void { this.navigationDrawer?.open(); }
|
|
107
|
+
|
|
108
|
+
/** Close the navigation drawer. */
|
|
109
|
+
closeDrawer(): void { this.navigationDrawer?.close(); }
|
|
110
|
+
|
|
111
|
+
protected updated(changed: PropertyValues<this>) {
|
|
112
|
+
super.updated(changed);
|
|
113
|
+
if (!changed.has("drawer")) return;
|
|
114
|
+
if (!this.drawer) {
|
|
115
|
+
this.navigationDrawer?.destroy();
|
|
116
|
+
this.navigationDrawer = null;
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
const root = this.renderRoot;
|
|
120
|
+
const toggle = root.querySelector<HTMLElement>('[part="drawer-toggle"]');
|
|
121
|
+
const panel = root.querySelector<HTMLDialogElement>('[part="drawer"]');
|
|
122
|
+
const nav = root.querySelector('[part="nav"]');
|
|
123
|
+
if (!toggle || !panel || !nav || this.navigationDrawer) return;
|
|
124
|
+
this.navigationDrawer = attachDrawer({
|
|
125
|
+
toggle, panel, content: [nav],
|
|
126
|
+
onToggle: open => this.dispatchEvent(new CustomEvent("ds-page-drawer", { bubbles: true, composed: true, detail: { open } })),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
render() {
|
|
131
|
+
const label = getText(this.drawerLabel || "Menu") || this.drawerLabel || "Menu";
|
|
132
|
+
const close = getText("Close") || "Close";
|
|
133
|
+
return html`
|
|
134
|
+
<div class="page" part="page" style=${ifDefined(measureStyle(this.measure))}>
|
|
135
|
+
<div class="bar" part="bar" ?hidden=${!this.drawer}>
|
|
136
|
+
<button class="ds-button ds-button--icon" part="drawer-toggle" type="button" aria-label=${label} aria-controls="drawer">
|
|
137
|
+
<ds-icon type="menu" size="large" aria-hidden="true"></ds-icon><ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
138
|
+
</button>
|
|
139
|
+
</div>
|
|
140
|
+
<dialog class="ds-dialog ds-drawer" part="drawer" id="drawer" aria-label=${label}>
|
|
141
|
+
<div class="ds-drawer__bar"><button class="ds-button ds-button--icon ds-drawer__close" part="drawer-close" type="button" aria-label=${close}>
|
|
142
|
+
<ds-icon type="close" size="large" aria-hidden="true"></ds-icon>
|
|
143
|
+
</button></div>
|
|
144
|
+
</dialog>
|
|
145
|
+
<div class="area nav" part="nav" data-area="nav"><slot name="nav"></slot></div>
|
|
146
|
+
<div class="area header" part="header" data-area="header"><slot name="header"></slot></div>
|
|
147
|
+
<div class="area main" part="main" data-area="main"><slot></slot></div>
|
|
148
|
+
<div class="area aside" part="aside" data-area="aside"><slot name="aside"></slot></div>
|
|
149
|
+
<div class="area footer" part="footer" data-area="footer"><slot name="footer"></slot></div>
|
|
150
|
+
</div>
|
|
151
|
+
`;
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
firstUpdated() {
|
|
155
|
+
// An area with nothing in it takes no room, so a header or footer is optional.
|
|
156
|
+
this.renderRoot.querySelectorAll("slot").forEach(slot => {
|
|
157
|
+
const sync = () => slot.parentElement?.toggleAttribute("data-empty", slot.assignedNodes({ flatten: true }).every(empty));
|
|
158
|
+
slot.addEventListener("slotchange", sync);
|
|
159
|
+
sync();
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/**
|
|
165
|
+
* A measure is a count of squares: 28 is 28 squares, never 28.5 or 28px. A
|
|
166
|
+
* fraction rounds to the nearest square, and anything that is not a positive
|
|
167
|
+
* number is ignored so the layout keeps its own width.
|
|
168
|
+
*/
|
|
169
|
+
export function measureStyle(measure: number | null | undefined): string | undefined {
|
|
170
|
+
const squares = Math.round(Number(measure));
|
|
171
|
+
return Number.isFinite(squares) && squares >= 1 ? `--ds-page-measure: calc(${squares} * var(--ds-unit))` : undefined;
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function empty(node: Node): boolean {
|
|
175
|
+
return node.nodeType === Node.TEXT_NODE ? !node.textContent?.trim() : node.nodeType !== Node.ELEMENT_NODE;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
define("ds-page", Page);
|
|
179
|
+
|
|
180
|
+
declare global {
|
|
181
|
+
interface HTMLElementTagNameMap {
|
|
182
|
+
"ds-page": Page;
|
|
183
|
+
}
|
|
184
|
+
}
|
package/DS1/4-page/email.ts
CHANGED
|
@@ -40,9 +40,8 @@ export function gridText(content: string): string {
|
|
|
40
40
|
return `<div class="ds-email-ink" style="display:block;position:relative;top:2px;padding-left:2px">${content}</div>`
|
|
41
41
|
}
|
|
42
42
|
|
|
43
|
-
/** Static equivalent of
|
|
44
|
-
*
|
|
45
|
-
* Ezo client/design/2-core/styles/ezo-text.css: centered 15px line in a 16px text box.
|
|
43
|
+
/** Static equivalent of a primary ds-button containing ds-text:
|
|
44
|
+
* a 16px control with a 0.5px horizontal inset, and a centered 15px line in a 16px text box.
|
|
46
45
|
* Half-pixel vertical padding reproduces that centering without Lit or flexbox.
|
|
47
46
|
*/
|
|
48
47
|
export function primaryEmailButton(
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/* ds-document.css */
|
|
2
|
+
/* The element places the two columns; 1-root/document.css draws them, and the
|
|
3
|
+
writing in the page is drawn by prose.css, which the element brings. */
|
|
4
|
+
|
|
5
|
+
:host {
|
|
6
|
+
display: block;
|
|
7
|
+
min-width: 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:host([hidden]),
|
|
11
|
+
[hidden] {
|
|
12
|
+
display: none !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* The page's own contents take the list's place. */
|
|
16
|
+
::slotted([slot="contents"]) {
|
|
17
|
+
margin: 0;
|
|
18
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/* ds-footer.css */
|
|
2
|
+
/* The element places the block; 1-root/footer.css draws it and controls.css
|
|
3
|
+
the buttons. */
|
|
4
|
+
|
|
5
|
+
:host {
|
|
6
|
+
display: block;
|
|
7
|
+
min-width: 0;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
:host([hidden]),
|
|
11
|
+
[hidden] {
|
|
12
|
+
display: none !important;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
/* A brand of the page's own takes the mark's line; a slotted legal line its words. */
|
|
16
|
+
::slotted([slot="brand"]) {
|
|
17
|
+
display: inline-flex;
|
|
18
|
+
align-items: center;
|
|
19
|
+
gap: calc(var(--ds-unit) / 2);
|
|
20
|
+
align-self: flex-start;
|
|
21
|
+
height: var(--ds-unit);
|
|
22
|
+
color: inherit;
|
|
23
|
+
text-decoration: none;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
::slotted([slot="legal"]) {
|
|
27
|
+
margin: 0;
|
|
28
|
+
font: inherit;
|
|
29
|
+
}
|
|
@@ -1,95 +1,41 @@
|
|
|
1
|
-
/*
|
|
2
|
-
/* Grid layout component styles */
|
|
3
|
-
|
|
1
|
+
/* A one-square pitch by default. Rules stay hairlines at every surface scale. */
|
|
4
2
|
:host {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
display: grid;
|
|
8
|
-
width: 1440px;
|
|
9
|
-
height: 1280px;
|
|
10
|
-
grid-template-columns: repeat(auto-fill, 19px);
|
|
11
|
-
grid-template-rows: repeat(auto-fill, 19px);
|
|
12
|
-
gap: 1px;
|
|
13
|
-
row-rule: calc(1px * var(--sf)) solid var(--grid-color);
|
|
14
|
-
column-rule: calc(1px * var(--sf)) solid var(--grid-color);
|
|
15
|
-
outline: calc(1px * var(--sf)) solid light-dark(var(--sharp-blue), var(--yellow));
|
|
3
|
+
--grid-scale: var(--ds-sf, var(--sf, 1));
|
|
4
|
+
display: block;
|
|
16
5
|
position: fixed;
|
|
17
6
|
top: 0;
|
|
18
7
|
left: 50%;
|
|
19
8
|
transform: translateX(-50%);
|
|
9
|
+
width: var(--ds-grid-width, calc(1440px * var(--grid-scale)));
|
|
10
|
+
height: var(--ds-grid-height, max(100vh, calc(1280px * var(--grid-scale))));
|
|
20
11
|
pointer-events: none;
|
|
21
|
-
z-index: 300;
|
|
12
|
+
z-index: var(--ds-grid-z-index, 300);
|
|
22
13
|
}
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
:host(
|
|
26
|
-
|
|
27
|
-
max-width: 100vw;
|
|
28
|
-
margin-left: 0.5px !important;
|
|
29
|
-
margin-top: 0 !important;
|
|
30
|
-
box-sizing: border-box;
|
|
31
|
-
position: fixed;
|
|
32
|
-
top: calc(0.5px * var(--sf));
|
|
33
|
-
left: 50%;
|
|
34
|
-
transform: translateX(-50%);
|
|
35
|
-
pointer-events: none;
|
|
36
|
-
z-index: 300;
|
|
37
|
-
gap: calc(1px * var(--sf));
|
|
38
|
-
grid-template-columns: repeat(14, calc(19px * var(--sf)));
|
|
39
|
-
grid-template-rows: repeat(auto-fill, calc(19px * var(--sf)));
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
:host([align="left"]) {
|
|
43
|
-
left: 0;
|
|
44
|
-
transform: none;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
:host([align="center"]) {
|
|
48
|
-
left: 50%;
|
|
49
|
-
transform: translateX(-50%);
|
|
14
|
+
:host([hidden]) { display: none !important; }
|
|
15
|
+
:host([align="left"]) { left: 0; transform: none; }
|
|
16
|
+
:host([align="right"]) { left: auto; right: 0; transform: none; }
|
|
17
|
+
@media (max-width: 768px) {
|
|
18
|
+
:host { width: calc(100% - 1px); max-width: 100vw; }
|
|
50
19
|
}
|
|
51
|
-
|
|
52
|
-
:host([
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
20
|
+
/* The containing element establishes positioning; its content stays above the paper. */
|
|
21
|
+
:host([contained]) { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; transform: none; z-index: 0; }
|
|
22
|
+
.paper {
|
|
23
|
+
position: absolute;
|
|
24
|
+
inset: 0;
|
|
25
|
+
--cell: var(--ds-grid-unit, calc(var(--pitch-x) * var(--grid-scale)));
|
|
26
|
+
--row: var(--ds-grid-row, calc(var(--pitch-y) * var(--grid-scale)));
|
|
27
|
+
--stroke: var(--ds-grid-stroke, 1px);
|
|
28
|
+
background-color: var(--paper);
|
|
29
|
+
background-size: var(--cell) var(--row);
|
|
30
|
+
background-position: calc(var(--ds-grid-origin-x, 0px) - var(--stroke) / 2) calc(var(--ds-grid-origin-y, 0px) - var(--stroke) / 2);
|
|
31
|
+
background-repeat: repeat;
|
|
56
32
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
to right,
|
|
64
|
-
transparent 0,
|
|
65
|
-
transparent 19px,
|
|
66
|
-
var(--grid-color) 19px,
|
|
67
|
-
var(--grid-color) 20px
|
|
68
|
-
),
|
|
69
|
-
repeating-linear-gradient(
|
|
70
|
-
to bottom,
|
|
71
|
-
transparent 0,
|
|
72
|
-
transparent 19px,
|
|
73
|
-
var(--grid-color) 19px,
|
|
74
|
-
var(--grid-color) 20px
|
|
75
|
-
);
|
|
76
|
-
}
|
|
77
|
-
|
|
78
|
-
:host(.mobile) {
|
|
79
|
-
background-image:
|
|
80
|
-
repeating-linear-gradient(
|
|
81
|
-
to right,
|
|
82
|
-
transparent 0,
|
|
83
|
-
transparent calc(19px * var(--sf, 1)),
|
|
84
|
-
var(--grid-color) calc(19px * var(--sf, 1)),
|
|
85
|
-
var(--grid-color) calc(20px * var(--sf, 1))
|
|
86
|
-
),
|
|
87
|
-
repeating-linear-gradient(
|
|
88
|
-
to bottom,
|
|
89
|
-
transparent 0,
|
|
90
|
-
transparent calc(19px * var(--sf, 1)),
|
|
91
|
-
var(--grid-color) calc(19px * var(--sf, 1)),
|
|
92
|
-
var(--grid-color) calc(20px * var(--sf, 1))
|
|
93
|
-
);
|
|
94
|
-
}
|
|
33
|
+
[data-pattern="grid"] { background-image: linear-gradient(to right, var(--ink) var(--stroke), transparent var(--stroke)), linear-gradient(to bottom, var(--ink) var(--stroke), transparent var(--stroke)); }
|
|
34
|
+
[data-pattern="lines"] { background-image: linear-gradient(to bottom, var(--ink) var(--stroke), transparent var(--stroke)); }
|
|
35
|
+
[data-pattern="columns"] { background-image: linear-gradient(to right, var(--ink) var(--stroke), transparent var(--stroke)); }
|
|
36
|
+
[data-pattern="dots"] {
|
|
37
|
+
background-image: radial-gradient(circle, var(--ink) var(--stroke), transparent var(--stroke));
|
|
38
|
+
background-position: var(--ds-grid-origin-x, 0px) calc(var(--ds-grid-origin-y, 0px) - var(--row) / 2);
|
|
95
39
|
}
|
|
40
|
+
[data-pattern="none"] { background-image: none; }
|
|
41
|
+
@media print { :host(:not([contained])) { display: none; } }
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/* ds-header.css */
|
|
2
|
+
/* The element places the row; 1-root/header.css draws it, drawer.css its
|
|
3
|
+
drawer and controls.css the buttons. The links are the page's own, slotted:
|
|
4
|
+
they take the navigation's look here, and a page's own link styles win. */
|
|
5
|
+
|
|
6
|
+
:host {
|
|
7
|
+
display: block;
|
|
8
|
+
min-width: 0;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
:host([sticky]) {
|
|
12
|
+
position: sticky;
|
|
13
|
+
top: 0;
|
|
14
|
+
z-index: 1;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
:host([hidden]),
|
|
18
|
+
[hidden] {
|
|
19
|
+
display: none !important;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
::slotted(a) {
|
|
23
|
+
display: block;
|
|
24
|
+
height: var(--ds-unit);
|
|
25
|
+
color: inherit;
|
|
26
|
+
font: inherit;
|
|
27
|
+
letter-spacing: inherit;
|
|
28
|
+
line-height: var(--ds-unit);
|
|
29
|
+
text-decoration-line: underline;
|
|
30
|
+
text-decoration-thickness: 1px;
|
|
31
|
+
text-decoration-color: transparent;
|
|
32
|
+
text-underline-offset: calc(2px * var(--ds-sf));
|
|
33
|
+
white-space: nowrap;
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
::slotted(a:hover) {
|
|
37
|
+
text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
::slotted(a[aria-current]:not([aria-current="false"])) {
|
|
41
|
+
text-decoration-color: currentColor;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
::slotted(a:focus-visible) {
|
|
45
|
+
outline: 2px solid var(--ds-focus-ring);
|
|
46
|
+
outline-offset: 1px;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/* A brand of the page's own takes the brand's line. */
|
|
50
|
+
::slotted([slot="brand"]) {
|
|
51
|
+
display: inline-flex;
|
|
52
|
+
align-items: center;
|
|
53
|
+
gap: calc(var(--ds-unit) / 2);
|
|
54
|
+
height: var(--ds-unit);
|
|
55
|
+
color: inherit;
|
|
56
|
+
text-decoration: none;
|
|
57
|
+
}
|