@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
package/dist/0-face/grid-fit.js
CHANGED
|
@@ -7,7 +7,7 @@ export function initGridFit() {
|
|
|
7
7
|
const measure = document.createElement('div');
|
|
8
8
|
measure.setAttribute('aria-hidden', 'true');
|
|
9
9
|
measure.style.cssText = 'position:fixed;left:0;top:0;width:0;height:var(--ds-grid-unit,20px);visibility:hidden;pointer-events:none;contain:strict';
|
|
10
|
-
document.body.
|
|
10
|
+
document.body.appendChild(measure);
|
|
11
11
|
const originalMinimums = new Map();
|
|
12
12
|
const observed = new Set();
|
|
13
13
|
let frame = 0;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../DS1/0-face/grid.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,
|
|
1
|
+
{"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../DS1/0-face/grid.ts"],"names":[],"mappings":"AAGA,uEAAuE;AACvE,wBAAgB,gBAAgB,IAAI,IAAI,CAoIvC"}
|
package/dist/0-face/grid.js
CHANGED
|
@@ -41,7 +41,7 @@ export function initGridShortcut() {
|
|
|
41
41
|
}
|
|
42
42
|
@media print { :host { display: none !important; } }
|
|
43
43
|
</style><div class="grid"></div>`;
|
|
44
|
-
document.body.
|
|
44
|
+
document.body.appendChild(overlay);
|
|
45
45
|
const layout = createLayoutInspector();
|
|
46
46
|
const updatePosition = () => {
|
|
47
47
|
overlay.style.setProperty("--ds-grid-scroll-x", `${window.scrollX}px`);
|
|
@@ -66,6 +66,7 @@ export function initGridShortcut() {
|
|
|
66
66
|
setVisible(true);
|
|
67
67
|
if (preview.get('layout') === '1')
|
|
68
68
|
layout.toggle();
|
|
69
|
+
// A bundler's development flag (Vite's import.meta.env.DEV); absent elsewhere.
|
|
69
70
|
if (import.meta.env?.DEV) {
|
|
70
71
|
const mobile = window.matchMedia('(max-width: 768px)');
|
|
71
72
|
let taps = 0;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The site header's script for pages without Lit: plain TypeScript, no
|
|
3
|
+
* framework. Loading it starts every `.ds-header` on the page (1-root/header.css
|
|
4
|
+
* draws them); call `startHeaders()` again for one added later.
|
|
5
|
+
*
|
|
6
|
+
* Each header's menu button (`.ds-header__toggle`) opens its navigation and
|
|
7
|
+
* actions in a drawer (`0-face/drawer.ts`): a panel over the screen with focus
|
|
8
|
+
* kept inside, closed by Escape, its close button, a link or the screen
|
|
9
|
+
* widening, the page's scroll held behind it. The close button is named by the
|
|
10
|
+
* toggle's `data-close-label`, "Close" without one; the page writes both names
|
|
11
|
+
* in its own language. A navigation where no link is marked `aria-current`
|
|
12
|
+
* gets `aria-current="page"` on the link to the address being read.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <header class="ds-header">
|
|
16
|
+
* <a class="ds-header__brand" href="/">Name</a>
|
|
17
|
+
* <nav class="ds-header__nav" id="site-nav" aria-label="Main">
|
|
18
|
+
* <a href="/">Home</a> <a href="/help">Help</a>
|
|
19
|
+
* </nav>
|
|
20
|
+
* <button class="ds-button ds-button--icon ds-header__toggle" type="button"
|
|
21
|
+
* aria-label="Menu" aria-controls="site-nav" data-close-label="Close">
|
|
22
|
+
* <span class="ds-icon" style="--ds-icon: url(/ds1/icons/menu.svg)" aria-hidden="true"></span>
|
|
23
|
+
* <span class="ds-icon" style="--ds-icon: url(/ds1/icons/close.svg)" aria-hidden="true"></span>
|
|
24
|
+
* </button>
|
|
25
|
+
* </header>
|
|
26
|
+
* <script type="module">import "/ds1/0-face/header.ts";</script>
|
|
27
|
+
*/
|
|
28
|
+
import { type Drawer } from "./drawer";
|
|
29
|
+
/**
|
|
30
|
+
* Marks the link to the address being read with `aria-current="page"`, unless
|
|
31
|
+
* one of the links is marked already. Returns the marked link, if any.
|
|
32
|
+
*/
|
|
33
|
+
export declare function markCurrentLink(links: Iterable<HTMLAnchorElement>, location?: {
|
|
34
|
+
href: string;
|
|
35
|
+
}): HTMLAnchorElement | null;
|
|
36
|
+
/** Starts every `.ds-header` inside `root` that has not started yet, and returns their drawers. */
|
|
37
|
+
export declare function startHeaders(root?: ParentNode): Drawer[];
|
|
38
|
+
//# sourceMappingURL=header.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"header.d.ts","sourceRoot":"","sources":["../../DS1/0-face/header.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,UAAU,CAAC;AASrD;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,QAAQ,CAAC,iBAAiB,CAAC,EAAE,QAAQ,GAAE;IAAE,IAAI,EAAE,MAAM,CAAA;CAAwB,GAAG,iBAAiB,GAAG,IAAI,CAY9I;AAED,mGAAmG;AACnG,wBAAgB,YAAY,CAAC,IAAI,GAAE,UAAqB,GAAG,MAAM,EAAE,CAiBlE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The site header's script for pages without Lit: plain TypeScript, no
|
|
3
|
+
* framework. Loading it starts every `.ds-header` on the page (1-root/header.css
|
|
4
|
+
* draws them); call `startHeaders()` again for one added later.
|
|
5
|
+
*
|
|
6
|
+
* Each header's menu button (`.ds-header__toggle`) opens its navigation and
|
|
7
|
+
* actions in a drawer (`0-face/drawer.ts`): a panel over the screen with focus
|
|
8
|
+
* kept inside, closed by Escape, its close button, a link or the screen
|
|
9
|
+
* widening, the page's scroll held behind it. The close button is named by the
|
|
10
|
+
* toggle's `data-close-label`, "Close" without one; the page writes both names
|
|
11
|
+
* in its own language. A navigation where no link is marked `aria-current`
|
|
12
|
+
* gets `aria-current="page"` on the link to the address being read.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* <header class="ds-header">
|
|
16
|
+
* <a class="ds-header__brand" href="/">Name</a>
|
|
17
|
+
* <nav class="ds-header__nav" id="site-nav" aria-label="Main">
|
|
18
|
+
* <a href="/">Home</a> <a href="/help">Help</a>
|
|
19
|
+
* </nav>
|
|
20
|
+
* <button class="ds-button ds-button--icon ds-header__toggle" type="button"
|
|
21
|
+
* aria-label="Menu" aria-controls="site-nav" data-close-label="Close">
|
|
22
|
+
* <span class="ds-icon" style="--ds-icon: url(/ds1/icons/menu.svg)" aria-hidden="true"></span>
|
|
23
|
+
* <span class="ds-icon" style="--ds-icon: url(/ds1/icons/close.svg)" aria-hidden="true"></span>
|
|
24
|
+
* </button>
|
|
25
|
+
* </header>
|
|
26
|
+
* <script type="module">import "/ds1/0-face/header.ts";</script>
|
|
27
|
+
*/
|
|
28
|
+
import { attachDrawer } from "./drawer";
|
|
29
|
+
const started = new WeakMap();
|
|
30
|
+
/** A path without a trailing slash or an index file, for comparing addresses. */
|
|
31
|
+
function normalise(path) {
|
|
32
|
+
return path.replace(/\/index\.html?$/, "/").replace(/\.html?$/, "").replace(/\/+$/, "") || "/";
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Marks the link to the address being read with `aria-current="page"`, unless
|
|
36
|
+
* one of the links is marked already. Returns the marked link, if any.
|
|
37
|
+
*/
|
|
38
|
+
export function markCurrentLink(links, location = globalThis.location) {
|
|
39
|
+
const all = [...links];
|
|
40
|
+
const marked = all.find(link => link.hasAttribute("aria-current") && link.getAttribute("aria-current") !== "false");
|
|
41
|
+
if (marked || !location)
|
|
42
|
+
return marked ?? null;
|
|
43
|
+
const here = new URL(location.href);
|
|
44
|
+
const match = all.find(link => {
|
|
45
|
+
if (!link.getAttribute("href") || link.getAttribute("href").startsWith("#"))
|
|
46
|
+
return false;
|
|
47
|
+
const target = new URL(link.href, here);
|
|
48
|
+
return target.origin === here.origin && normalise(target.pathname) === normalise(here.pathname);
|
|
49
|
+
});
|
|
50
|
+
match?.setAttribute("aria-current", "page");
|
|
51
|
+
return match ?? null;
|
|
52
|
+
}
|
|
53
|
+
/** Starts every `.ds-header` inside `root` that has not started yet, and returns their drawers. */
|
|
54
|
+
export function startHeaders(root = document) {
|
|
55
|
+
const drawers = [];
|
|
56
|
+
for (const header of root.querySelectorAll(".ds-header")) {
|
|
57
|
+
const nav = header.querySelector(":scope > .ds-header__nav");
|
|
58
|
+
if (nav)
|
|
59
|
+
markCurrentLink(nav.querySelectorAll("a[href]"));
|
|
60
|
+
if (started.has(header))
|
|
61
|
+
continue;
|
|
62
|
+
const toggle = header.querySelector(":scope > .ds-header__toggle");
|
|
63
|
+
if (!toggle)
|
|
64
|
+
continue;
|
|
65
|
+
const drawer = attachDrawer({
|
|
66
|
+
toggle,
|
|
67
|
+
content: () => [...header.querySelectorAll(":scope > :is(.ds-header__nav, .ds-header__actions)")],
|
|
68
|
+
closeLabel: toggle.dataset.closeLabel,
|
|
69
|
+
});
|
|
70
|
+
started.set(header, drawer);
|
|
71
|
+
drawers.push(drawer);
|
|
72
|
+
}
|
|
73
|
+
return drawers;
|
|
74
|
+
}
|
|
75
|
+
if (typeof document !== "undefined") {
|
|
76
|
+
if (document.readyState === "loading")
|
|
77
|
+
document.addEventListener("DOMContentLoaded", () => startHeaders(), { once: true });
|
|
78
|
+
else
|
|
79
|
+
startHeaders();
|
|
80
|
+
}
|
package/dist/0-face/i18n.d.ts
CHANGED
|
@@ -17,6 +17,8 @@ export type TranslationMap = Record<string, TranslationData>;
|
|
|
17
17
|
export type I18nOptions = {
|
|
18
18
|
/** Fetch external words at startup. Disable when the product supplies them in code. */
|
|
19
19
|
autoLoad?: boolean;
|
|
20
|
+
/** Ignore saved choices and avoid writes on browser-managed surfaces. */
|
|
21
|
+
persist?: boolean;
|
|
20
22
|
/**
|
|
21
23
|
* Every language the product speaks. When set, the picker offers these
|
|
22
24
|
* whether or not their words have arrived yet, which matters when a page
|
|
@@ -60,6 +62,30 @@ export type I18nOptions = {
|
|
|
60
62
|
* here, the product's `languages` get a prefix.
|
|
61
63
|
*/
|
|
62
64
|
routing?: LanguageRoutingOptions;
|
|
65
|
+
/**
|
|
66
|
+
* Take the language from the address: on a page whose path starts with a
|
|
67
|
+
* language prefix (`/ja/…`, by `routing`), that language is the current one
|
|
68
|
+
* from the start, and it is not stored, so following a link to `/ja/…`
|
|
69
|
+
* never overwrites the choice a person made. `setLanguage` still stores
|
|
70
|
+
* what a person chooses. The theme bootstrap reads it too, so `lang` is
|
|
71
|
+
* right before the first paint. Off by default.
|
|
72
|
+
*/
|
|
73
|
+
languageFromAddress?: boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Where the language is written as `lang`: the document's root element by
|
|
76
|
+
* default; an element (an embedded surface, such as a prototype in another
|
|
77
|
+
* language than the page around it) to keep it there; `false` to write it
|
|
78
|
+
* nowhere. The theme bootstrap writes the root's `lang` only by default.
|
|
79
|
+
*/
|
|
80
|
+
langTarget?: HTMLElement | false;
|
|
81
|
+
};
|
|
82
|
+
/** What `setLanguage` does besides changing the language. */
|
|
83
|
+
export type SetLanguageOptions = {
|
|
84
|
+
/**
|
|
85
|
+
* Store the choice, so the next visit opens in it. On by default; `false`
|
|
86
|
+
* keeps it to this page (a language an address names, a preview).
|
|
87
|
+
*/
|
|
88
|
+
remember?: boolean;
|
|
63
89
|
};
|
|
64
90
|
/**
|
|
65
91
|
* Every language Design system 1 orders, names and maps browser languages to:
|
|
@@ -94,7 +120,7 @@ export declare function getLanguageDisplayName(code: LanguageCode, options?: {
|
|
|
94
120
|
export declare function getBrowserLanguage(): LanguageCode;
|
|
95
121
|
export declare const currentLanguage: {
|
|
96
122
|
value: string;
|
|
97
|
-
set: (lang: LanguageCode) => void;
|
|
123
|
+
set: (lang: LanguageCode, options?: SetLanguageOptions) => void;
|
|
98
124
|
};
|
|
99
125
|
/**
|
|
100
126
|
* Set the language module up for a product (see `I18nOptions`). Call it
|
|
@@ -134,5 +160,9 @@ export declare function getAvailableLanguagesSync(): LanguageCode[];
|
|
|
134
160
|
*/
|
|
135
161
|
export declare function loadTranslations(language: LanguageCode, translations: TranslationTable): void;
|
|
136
162
|
export declare function loadTranslations(translations: TranslationsFile): void;
|
|
137
|
-
|
|
163
|
+
/**
|
|
164
|
+
* Change the language: store it (unless `remember: false`), fetch its words,
|
|
165
|
+
* write it as `lang` (see `langTarget`) and announce `language-changed`.
|
|
166
|
+
*/
|
|
167
|
+
export declare function setLanguage(language: LanguageCode, options?: SetLanguageOptions): void;
|
|
138
168
|
//# sourceMappingURL=i18n.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;IACpE;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;CAClC,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,EAAc,CAAC;AAMlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B;CACF;
|
|
1
|
+
{"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../DS1/0-face/i18n.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAG/B,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC;AAGlC,MAAM,MAAM,eAAe,GAAG;IAC5B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB,CAAC;AAGF,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GAAG;IACxB,uFAAuF;IACvF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,yEAAyE;IACzE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;;OAKG;IACH,SAAS,CAAC,EAAE,SAAS,YAAY,EAAE,CAAC;IACpC;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,YAAY,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC;IACpE;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mFAAmF;IACnF,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,GAAG,CAAC,MAAM,OAAO,CAAC,CAAC;IAC9C;;;;OAIG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC;;;;;;;OAOG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,WAAW,GAAG,KAAK,CAAC;CAClC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,MAAM,kBAAkB,GAAG;IAC/B;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAMF;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,QAAQ,EAAc,CAAC;AAMlE,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,MAAM;QACd,mBAAmB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;QACtD,wBAAwB,CAAC,EAAE,MAAM,CAAC;QAClC,WAAW,CAAC,EAAE,WAAW,CAAC;QAC1B,iBAAiB,CAAC,EAAE,OAAO,CAAC;KAC7B;CACF;AAyVD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8BlE;AAiFD,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAChC,MAAM,CA6CR;AAqCD;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAqBjD;AA0CD,eAAO,MAAM,eAAe;;gBAEL,YAAY,YAAW,kBAAkB;CAc/D,CAAC;AAEF;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,CAsCrD;AAmBD;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAU/C;AA4GD;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEzE;AAMD;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,YAAY,EACtB,MAAM,CAAC,EAAE,iBAAiB,GACzB,MAAM,CAmBR;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,QAAQ,GAAE,YAAoC,GAC7C,OAAO,CAkBT;AAGD,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,iBAAiB,GAAG,MAAM,CAEvE;AAGD,wBAAgB,qBAAqB,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC,CAE/D;AAGD,wBAAgB,yBAAyB,IAAI,YAAY,EAAE,CAW1D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,YAAY,EACtB,YAAY,EAAE,gBAAgB,GAC7B,IAAI,CAAC;AACR,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,GAAG,IAAI,CAAC;AAmCvE;;;GAGG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAGtF"}
|
package/dist/0-face/i18n.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { LANGUAGES, LANGUAGE_METADATA, fallbackLanguages, isLanguage, languageOrder, normalizeLanguage, } from "./languages";
|
|
2
|
-
import { configureLanguageRouting } from "./language-routing";
|
|
2
|
+
import { configureLanguageRouting, parseLanguagePath } from "./language-routing";
|
|
3
3
|
import { readLanguageFile, resolveText } from "./translations-format";
|
|
4
4
|
// Bundled translations (keys.json may not exist - will use external translations if not available)
|
|
5
5
|
// This is a fallback for when external translations aren't loaded
|
|
@@ -40,6 +40,8 @@ function storageKey() {
|
|
|
40
40
|
return i18nOptions.storageKey || DEFAULT_STORAGE_KEY;
|
|
41
41
|
}
|
|
42
42
|
function readStoredLanguage() {
|
|
43
|
+
if (i18nOptions.persist === false)
|
|
44
|
+
return null;
|
|
43
45
|
try {
|
|
44
46
|
return storage()?.getItem(storageKey()) || null;
|
|
45
47
|
}
|
|
@@ -48,6 +50,8 @@ function readStoredLanguage() {
|
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
function storeLanguage(language) {
|
|
53
|
+
if (i18nOptions.persist === false)
|
|
54
|
+
return;
|
|
51
55
|
try {
|
|
52
56
|
storage()?.setItem(storageKey(), language);
|
|
53
57
|
}
|
|
@@ -457,7 +461,7 @@ export function getBrowserLanguage() {
|
|
|
457
461
|
// Current language
|
|
458
462
|
// ============================================================================
|
|
459
463
|
function dispatchLanguageChanged(language) {
|
|
460
|
-
if (typeof window === "undefined") {
|
|
464
|
+
if (typeof window === "undefined" || typeof window.dispatchEvent !== "function") {
|
|
461
465
|
return;
|
|
462
466
|
}
|
|
463
467
|
window.dispatchEvent(new CustomEvent("language-changed", {
|
|
@@ -466,17 +470,40 @@ function dispatchLanguageChanged(language) {
|
|
|
466
470
|
composed: true,
|
|
467
471
|
}));
|
|
468
472
|
}
|
|
473
|
+
/** The language the address names (`/ja/…`), when the product takes it from there. */
|
|
474
|
+
function addressLanguage() {
|
|
475
|
+
if (!i18nOptions.languageFromAddress || typeof window === "undefined") {
|
|
476
|
+
return null;
|
|
477
|
+
}
|
|
478
|
+
const path = window.location?.pathname;
|
|
479
|
+
// The product's routing, also before configureI18n has passed it on.
|
|
480
|
+
return path ? parseLanguagePath(path, routingOptions()).language : null;
|
|
481
|
+
}
|
|
482
|
+
/** The element whose `lang` follows the language, or null when none does. */
|
|
483
|
+
function langElement() {
|
|
484
|
+
const target = i18nOptions.langTarget;
|
|
485
|
+
if (target === false) {
|
|
486
|
+
return null;
|
|
487
|
+
}
|
|
488
|
+
if (target) {
|
|
489
|
+
return target;
|
|
490
|
+
}
|
|
491
|
+
return typeof document !== "undefined" ? (document.documentElement ?? null) : null;
|
|
492
|
+
}
|
|
469
493
|
// Create a reactive signal for the current language (Portfolio pattern)
|
|
470
494
|
export const currentLanguage = {
|
|
471
|
-
value: readStoredLanguage() || getBrowserLanguage(),
|
|
472
|
-
set: function (lang) {
|
|
495
|
+
value: addressLanguage() || readStoredLanguage() || getBrowserLanguage(),
|
|
496
|
+
set: function (lang, options = {}) {
|
|
473
497
|
this.value = lang;
|
|
474
|
-
|
|
498
|
+
if (options.remember !== false) {
|
|
499
|
+
storeLanguage(lang);
|
|
500
|
+
}
|
|
475
501
|
void loadLanguage(lang);
|
|
476
502
|
// What reads the document's language (dates, screen readers, hyphenation)
|
|
477
503
|
// follows too, rather than keeping the language the page was opened in.
|
|
478
|
-
|
|
479
|
-
|
|
504
|
+
const element = langElement();
|
|
505
|
+
if (element) {
|
|
506
|
+
element.lang = lang;
|
|
480
507
|
}
|
|
481
508
|
dispatchLanguageChanged(lang);
|
|
482
509
|
},
|
|
@@ -488,19 +515,26 @@ export const currentLanguage = {
|
|
|
488
515
|
* language's file if one is now configured.
|
|
489
516
|
*/
|
|
490
517
|
export function configureI18n(next) {
|
|
518
|
+
const previousPersist = i18nOptions.persist;
|
|
491
519
|
const previousKey = storageKey();
|
|
492
520
|
const previousLanguages = i18nOptions.languages;
|
|
521
|
+
const previousAddress = i18nOptions.languageFromAddress;
|
|
522
|
+
const previousRouting = i18nOptions.routing;
|
|
493
523
|
i18nOptions = { ...i18nOptions, ...next };
|
|
494
524
|
applyRouting();
|
|
495
|
-
if (
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
525
|
+
if (i18nOptions.persist !== previousPersist ||
|
|
526
|
+
storageKey() !== previousKey ||
|
|
527
|
+
i18nOptions.languages !== previousLanguages ||
|
|
528
|
+
i18nOptions.languageFromAddress !== previousAddress ||
|
|
529
|
+
(i18nOptions.languageFromAddress && i18nOptions.routing !== previousRouting)) {
|
|
530
|
+
// The language the address names, else the stored choice under the new
|
|
531
|
+
// key, or the browser's language, as one the product speaks
|
|
499
532
|
const stored = readStoredLanguage();
|
|
500
533
|
let language = stored || getBrowserLanguage();
|
|
501
534
|
if (stored && configuredLanguages()) {
|
|
502
535
|
language = resolvePreferredLanguage(stored) ?? defaultLanguage;
|
|
503
536
|
}
|
|
537
|
+
language = addressLanguage() ?? language;
|
|
504
538
|
if (language !== currentLanguage.value) {
|
|
505
539
|
currentLanguage.value = language;
|
|
506
540
|
dispatchLanguageChanged(language);
|
|
@@ -518,10 +552,13 @@ function applyRouting() {
|
|
|
518
552
|
if (!i18nOptions.routing && !i18nOptions.languages) {
|
|
519
553
|
return;
|
|
520
554
|
}
|
|
521
|
-
configureLanguageRouting(
|
|
555
|
+
configureLanguageRouting(routingOptions());
|
|
556
|
+
}
|
|
557
|
+
function routingOptions() {
|
|
558
|
+
return {
|
|
522
559
|
...(i18nOptions.languages ? { languages: i18nOptions.languages } : {}),
|
|
523
560
|
...i18nOptions.routing,
|
|
524
|
-
}
|
|
561
|
+
};
|
|
525
562
|
}
|
|
526
563
|
let sharedWordsLoad = null;
|
|
527
564
|
/**
|
|
@@ -560,8 +597,11 @@ if (typeof window !== "undefined" && typeof document !== "undefined") {
|
|
|
560
597
|
setTimeout(start, 0);
|
|
561
598
|
}
|
|
562
599
|
}
|
|
563
|
-
// Listen for external translations being loaded
|
|
564
|
-
|
|
600
|
+
// Listen for external translations being loaded. Only where window takes events:
|
|
601
|
+
// a server or worker runtime may define a window without them, and the timer
|
|
602
|
+
// below would otherwise throw after the code that imported this has finished.
|
|
603
|
+
const eventful = () => typeof window !== "undefined" && typeof window.addEventListener === "function" && typeof window.dispatchEvent === "function";
|
|
604
|
+
if (eventful()) {
|
|
565
605
|
window.addEventListener("translations-ready", () => {
|
|
566
606
|
// Dispatch that translations are loaded
|
|
567
607
|
window.dispatchEvent(new CustomEvent("translations-loaded"));
|
|
@@ -571,7 +611,7 @@ if (typeof window !== "undefined") {
|
|
|
571
611
|
// Initialize translations on module load
|
|
572
612
|
// Use setTimeout to give other parts of the app time to set up event listeners first
|
|
573
613
|
setTimeout(() => {
|
|
574
|
-
if (
|
|
614
|
+
if (!eventful()) {
|
|
575
615
|
return;
|
|
576
616
|
}
|
|
577
617
|
window.dispatchEvent(new CustomEvent("translations-loaded"));
|
|
@@ -639,6 +679,9 @@ function reportMissingKey(key, language) {
|
|
|
639
679
|
export function translate(key, params) {
|
|
640
680
|
return textInLanguage(key, currentLanguage.value, params);
|
|
641
681
|
}
|
|
682
|
+
// The feedback module (`./feedback-words.ts`) reads its default words through
|
|
683
|
+
// this when the page loads the language module, and English without it.
|
|
684
|
+
globalThis[Symbol.for("design-system-1.translate")] = translate;
|
|
642
685
|
/**
|
|
643
686
|
* A key's text in a given language, whatever the page's own language is (a
|
|
644
687
|
* drawing made for one language, say). The fallback order: the language, its
|
|
@@ -718,8 +761,11 @@ export function loadTranslations(languageOrMap, translations) {
|
|
|
718
761
|
window.dispatchEvent(new CustomEvent("translations-ready"));
|
|
719
762
|
}
|
|
720
763
|
}
|
|
721
|
-
|
|
722
|
-
|
|
764
|
+
/**
|
|
765
|
+
* Change the language: store it (unless `remember: false`), fetch its words,
|
|
766
|
+
* write it as `lang` (see `langTarget`) and announce `language-changed`.
|
|
767
|
+
*/
|
|
768
|
+
export function setLanguage(language, options) {
|
|
723
769
|
// The signal owns persistence, loading, document language and notification.
|
|
724
|
-
currentLanguage.set(language);
|
|
770
|
+
currentLanguage.set(language, options);
|
|
725
771
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Keyboard shortcuts on every platform: the platform's command key, a guard
|
|
3
|
+
* that leaves typing alone, the label a shortcut is written with, and one call
|
|
4
|
+
* that binds a shortcut. Plain TypeScript with no framework and no language
|
|
5
|
+
* runtime, for any page.
|
|
6
|
+
*
|
|
7
|
+
* A shortcut is written once, in lower case, its parts joined with `+`:
|
|
8
|
+
* `"mod+shift+d"`, `"mod+enter"`, `"alt+arrowup"`, `"escape"`, `"?"`. `mod`
|
|
9
|
+
* is ⌘ on a Mac, iPhone or iPad and Ctrl everywhere else; `ctrl`, `meta`,
|
|
10
|
+
* `alt` and `shift` name a key as it is. The key is a letter, a digit, a
|
|
11
|
+
* symbol or one of the named keys (`enter`, `escape`, `tab`, `space`,
|
|
12
|
+
* `backspace`, `delete`, `home`, `end`, `pageup`, `pagedown`, the arrows
|
|
13
|
+
* `arrowup` … `arrowright`, `f1` … `f12`; `plus` for `+`).
|
|
14
|
+
*
|
|
15
|
+
* - `modKey()` is the command key's label: ⌘, or Ctrl.
|
|
16
|
+
* - `isTyping(event)` is true while focus is in a text field, a select, a
|
|
17
|
+
* contenteditable or a textbox, or a composition (an input method) is open.
|
|
18
|
+
* - `shortcutLabel("mod+shift+d")` writes it as the platform does: ⇧⌘D on
|
|
19
|
+
* Apple platforms, in Apple's order (⌃ ⌥ ⇧ ⌘), and Ctrl+Shift+D elsewhere.
|
|
20
|
+
* Arrows are drawn as arrows (↑), which every DS1 typeface sets in Inter.
|
|
21
|
+
* - `ariaKeyShortcuts("mod+shift+d")` is the value for `aria-keyshortcuts`
|
|
22
|
+
* on the control the shortcut presses: Meta+Shift+D or Control+Shift+D.
|
|
23
|
+
* - `matchesShortcut(event, "mod+d")` reads a keydown; a letter matches by
|
|
24
|
+
* its physical key too, so it works on other layouts and with ⌥ held.
|
|
25
|
+
* - `onShortcut("mod+k", handler)` listens for it on the document (or a
|
|
26
|
+
* `target`), leaves it alone while typing unless `typing: true`, prevents
|
|
27
|
+
* the browser's own action, and returns the function that unbinds it.
|
|
28
|
+
*
|
|
29
|
+
* The key names written as words (Ctrl, Shift, Alt, Enter, Esc, Tab, Space,
|
|
30
|
+
* Backspace, Del, Home, End, PgUp, PgDn) are the shared words (`key.ctrl` …)
|
|
31
|
+
* in the page's language where the page loads the language module with
|
|
32
|
+
* `configureI18n({ sharedWords: true })`, and English otherwise;
|
|
33
|
+
* `setKeyWords()` gives a product's own.
|
|
34
|
+
*/
|
|
35
|
+
export type KeyPlatform = "apple" | "other";
|
|
36
|
+
export interface ShortcutOptions {
|
|
37
|
+
/** The platform to write or read the shortcut for; the device's own by default. */
|
|
38
|
+
platform?: KeyPlatform;
|
|
39
|
+
}
|
|
40
|
+
/** A shortcut taken apart: its modifiers as keys on this platform, and its key. */
|
|
41
|
+
export interface Shortcut {
|
|
42
|
+
ctrl: boolean;
|
|
43
|
+
meta: boolean;
|
|
44
|
+
alt: boolean;
|
|
45
|
+
shift: boolean;
|
|
46
|
+
/** The key, in lower case as written (`d`, `enter`, `arrowup`, `?`). */
|
|
47
|
+
key: string;
|
|
48
|
+
}
|
|
49
|
+
/** The ids of the key names written as words, each a shared word. */
|
|
50
|
+
export type KeyWord = "key.ctrl" | "key.shift" | "key.alt" | "key.enter" | "key.escape" | "key.tab" | "key.space" | "key.backspace" | "key.delete" | "key.home" | "key.end" | "key.pageup" | "key.pagedown";
|
|
51
|
+
/** A table of the words to change, or a function that gives each word. */
|
|
52
|
+
export type KeyWords = Partial<Record<KeyWord, string>> | ((word: KeyWord) => string);
|
|
53
|
+
/** Give the key names of a product's own, or `null` to go back to the shared words (or English). */
|
|
54
|
+
export declare function setKeyWords(next: KeyWords | null): void;
|
|
55
|
+
/** A key's name as a word, in the page's language. */
|
|
56
|
+
export declare function keyWord(word: KeyWord): string;
|
|
57
|
+
/** True on a Mac, iPhone or iPad, where ⌘ is the command key and Ctrl-click is the right click. */
|
|
58
|
+
export declare function isApplePlatform(): boolean;
|
|
59
|
+
/** The command key's label: ⌘ on Apple platforms, Ctrl (in the page's language) elsewhere. */
|
|
60
|
+
export declare function modKey(options?: ShortcutOptions): string;
|
|
61
|
+
/** True when the command key is held: ⌘ on Apple platforms, Ctrl elsewhere. */
|
|
62
|
+
export declare function isModKey(event: {
|
|
63
|
+
metaKey: boolean;
|
|
64
|
+
ctrlKey: boolean;
|
|
65
|
+
}, options?: ShortcutOptions): boolean;
|
|
66
|
+
/**
|
|
67
|
+
* True while a person is typing: focus is in a text field, a textarea, a
|
|
68
|
+
* select, a contenteditable or an element with a textbox, searchbox or
|
|
69
|
+
* combobox role, or an input method is composing. A shortcut ignores it.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isTyping(event: Event): boolean;
|
|
72
|
+
/** Take a shortcut apart; `mod` becomes ⌘ (meta) on Apple platforms and Ctrl elsewhere. */
|
|
73
|
+
export declare function parseShortcut(shortcut: string, options?: ShortcutOptions): Shortcut;
|
|
74
|
+
/** True when a keydown is the shortcut. */
|
|
75
|
+
export declare function matchesShortcut(event: KeyboardEvent, shortcut: string | Shortcut, options?: ShortcutOptions): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* A shortcut as the platform writes it: ⇧⌘D on Apple platforms (⌃ ⌥ ⇧ ⌘,
|
|
78
|
+
* then the key, with no space between), Ctrl+Shift+D elsewhere (Ctrl, Alt,
|
|
79
|
+
* Shift, then the key, joined with +).
|
|
80
|
+
*/
|
|
81
|
+
export declare function shortcutLabel(shortcut: string, options?: ShortcutOptions): string;
|
|
82
|
+
/** The value for `aria-keyshortcuts`: the modifiers and key by their KeyboardEvent names, `Meta+Shift+D`. */
|
|
83
|
+
export declare function ariaKeyShortcuts(shortcut: string, options?: ShortcutOptions): string;
|
|
84
|
+
export interface OnShortcutOptions extends ShortcutOptions {
|
|
85
|
+
/** Where to listen: the document by default; a panel or a field listens to its own keys. */
|
|
86
|
+
target?: EventTarget;
|
|
87
|
+
/** Also while typing in a field (a save shortcut, say); left alone by default. */
|
|
88
|
+
typing?: boolean;
|
|
89
|
+
/** Prevent the browser's own action for the shortcut; on by default. */
|
|
90
|
+
preventDefault?: boolean;
|
|
91
|
+
/** Also on a held key's repeats; on by default. */
|
|
92
|
+
repeat?: boolean;
|
|
93
|
+
/** Listen in the capture phase, before the page's own handlers. */
|
|
94
|
+
capture?: boolean;
|
|
95
|
+
/** Unbind when this signal aborts. */
|
|
96
|
+
signal?: AbortSignal;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Run `handler` when a shortcut, or one of several, is pressed. A keydown
|
|
100
|
+
* already handled (`defaultPrevented`) is left alone. Returns the function
|
|
101
|
+
* that unbinds it.
|
|
102
|
+
*/
|
|
103
|
+
export declare function onShortcut(shortcut: string | string[], handler: (event: KeyboardEvent) => void, options?: OnShortcutOptions): () => void;
|
|
104
|
+
//# sourceMappingURL=keys.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../DS1/0-face/keys.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,OAAO,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,WAAW,CAAC;CACxB;AAED,mFAAmF;AACnF,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,OAAO,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,GAAG,EAAE,OAAO,CAAC;IACb,KAAK,EAAE,OAAO,CAAC;IACf,wEAAwE;IACxE,GAAG,EAAE,MAAM,CAAC;CACb;AAED,qEAAqE;AACrE,MAAM,MAAM,OAAO,GACf,UAAU,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,WAAW,GAC3F,eAAe,GAAG,YAAY,GAAG,UAAU,GAAG,SAAS,GAAG,YAAY,GAAG,cAAc,CAAC;AAC5F,0EAA0E;AAC1E,MAAM,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC,CAAC;AAYtF,oGAAoG;AACpG,wBAAgB,WAAW,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,IAAI,CAEvD;AAED,sDAAsD;AACtD,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAW7C;AAED,mGAAmG;AACnG,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAID,8FAA8F;AAC9F,wBAAgB,MAAM,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAExD;AAED,+EAA+E;AAC/E,wBAAgB,QAAQ,CAAC,KAAK,EAAE;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAE1G;AAYD;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAc9C;AAOD,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAcnF;AAYD,2CAA2C;AAC3C,wBAAgB,eAAe,CAAC,KAAK,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,GAAG,QAAQ,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAYrH;AAsBD;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAYjF;AAED,6GAA6G;AAC7G,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,MAAM,CAIpF;AAED,MAAM,WAAW,iBAAkB,SAAQ,eAAe;IACxD,4FAA4F;IAC5F,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,kFAAkF;IAClF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,wEAAwE;IACxE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mDAAmD;IACnD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,mEAAmE;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,sCAAsC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,EAAE,OAAO,GAAE,iBAAsB,GAAG,MAAM,IAAI,CAuB5I"}
|