@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,166 @@
|
|
|
1
|
+
import type { Language } from "./languages";
|
|
2
|
+
/**
|
|
3
|
+
* The locale each language of the list formats in: the language with the
|
|
4
|
+
* region it is most read in. `pt` is Portugal's Portuguese and `pt-BR`
|
|
5
|
+
* Brazil's; `Intl` alone reads a bare `pt` as Brazil's.
|
|
6
|
+
*/
|
|
7
|
+
export declare const LOCALE_TAGS: Readonly<Record<Language, string>>;
|
|
8
|
+
export type FormatSettings = {
|
|
9
|
+
/**
|
|
10
|
+
* The locale a language formats in, where a product's readers expect
|
|
11
|
+
* another region than `LOCALE_TAGS` gives: `{ en: "en-GB" }` writes
|
|
12
|
+
* English dates day first.
|
|
13
|
+
*/
|
|
14
|
+
locales?: Partial<Record<string, string>>;
|
|
15
|
+
/**
|
|
16
|
+
* The time zone dates and times are shown in, unless a call names one.
|
|
17
|
+
* Without it, the runtime's own zone (a Worker's is UTC).
|
|
18
|
+
*/
|
|
19
|
+
timeZone?: string;
|
|
20
|
+
};
|
|
21
|
+
/** Set the locales and time zone every call starts from (see `FormatSettings`). */
|
|
22
|
+
export declare function configureFormat(next: FormatSettings): void;
|
|
23
|
+
/**
|
|
24
|
+
* The locale tag a language formats in: `da` gives `da-DK`, `pt` gives
|
|
25
|
+
* `pt-PT`, `pt-br` gives `pt-BR`. A tag with its own region or script keeps
|
|
26
|
+
* it (`en-GB`, `zh-Hant`), and a language outside the list passes through
|
|
27
|
+
* (`nl`). Without an argument, the current language's.
|
|
28
|
+
*/
|
|
29
|
+
export declare function localeTag(language?: string | null): string;
|
|
30
|
+
type WithLanguage = {
|
|
31
|
+
/** The language to format in, instead of the current one: a code of the list or any locale tag. */
|
|
32
|
+
language?: string;
|
|
33
|
+
};
|
|
34
|
+
/**
|
|
35
|
+
* The kept `Intl.DateTimeFormat` for any options the named functions do not
|
|
36
|
+
* cover (`{ weekday: "short" }`), in the current language or `language`. The
|
|
37
|
+
* time zone set with `configureFormat` applies unless the options name one.
|
|
38
|
+
*/
|
|
39
|
+
export declare function dateFormatter(options?: Intl.DateTimeFormatOptions & WithLanguage): Intl.DateTimeFormat;
|
|
40
|
+
/** The kept `Intl.NumberFormat` for any options, in the current language or `language`. */
|
|
41
|
+
export declare function numberFormatter(options?: Intl.NumberFormatOptions & WithLanguage): Intl.NumberFormat;
|
|
42
|
+
/** The kept `Intl.RelativeTimeFormat`, in the current language or `language`. */
|
|
43
|
+
export declare function relativeTimeFormatter(options?: Intl.RelativeTimeFormatOptions & WithLanguage): Intl.RelativeTimeFormat;
|
|
44
|
+
export type ListType = "conjunction" | "disjunction" | "unit";
|
|
45
|
+
export type ListStyle = "long" | "short" | "narrow";
|
|
46
|
+
/** What `Intl.ListFormat` offers, for runtimes whose types predate it. */
|
|
47
|
+
export type ListFormatter = {
|
|
48
|
+
format(items: Iterable<string>): string;
|
|
49
|
+
};
|
|
50
|
+
/** The kept `Intl.ListFormat`, in the current language or `language`. */
|
|
51
|
+
export declare function listFormatter(options?: {
|
|
52
|
+
type?: ListType;
|
|
53
|
+
style?: ListStyle;
|
|
54
|
+
} & WithLanguage): ListFormatter;
|
|
55
|
+
/**
|
|
56
|
+
* A moment: a `Date`, milliseconds since 1970 or a date string. A date
|
|
57
|
+
* written without a time (`2026-10-17`) is that day wherever it is read.
|
|
58
|
+
*/
|
|
59
|
+
export type DateInput = Date | number | string;
|
|
60
|
+
export type DateLength = "short" | "medium" | "long";
|
|
61
|
+
export type DateOptions = WithLanguage & {
|
|
62
|
+
/** How much is written: `short` (10/17/26), `medium` (Oct 17, 2026) or `long` (October 17, 2026). */
|
|
63
|
+
length?: DateLength;
|
|
64
|
+
/** The time zone to show it in (`Asia/Tokyo`, `UTC`). */
|
|
65
|
+
timeZone?: string;
|
|
66
|
+
};
|
|
67
|
+
/** A date: `Oct 17, 2026` (medium, the default), `10/17/26` (short), `October 17, 2026` (long). */
|
|
68
|
+
export declare function formatDate(value: DateInput, options?: DateOptions | DateLength): string;
|
|
69
|
+
/** A time of day: `2:30 PM` (short, the default), `2:30:05 PM` (medium), `2:30:05 PM UTC` (long). */
|
|
70
|
+
export declare function formatTime(value: DateInput, options?: DateOptions | DateLength): string;
|
|
71
|
+
/** A date at a time: the date at `length` (medium by default), the time to the minute. */
|
|
72
|
+
export declare function formatDateTime(value: DateInput, options?: DateOptions | DateLength): string;
|
|
73
|
+
/** A month of a year: `October 2026` (long, the default), `Oct 2026` (medium), `10/2026` (short). */
|
|
74
|
+
export declare function formatMonthYear(value: DateInput, options?: DateOptions | DateLength): string;
|
|
75
|
+
/** A day of a month, without the year: `Oct 17` (medium, the default), `10/17` (short), `October 17` (long). */
|
|
76
|
+
export declare function formatMonthDay(value: DateInput, options?: DateOptions | DateLength): string;
|
|
77
|
+
/**
|
|
78
|
+
* A day of a month at a time, without the year: `Oct 17, 2:30 PM` (medium,
|
|
79
|
+
* the default), `10/17, 2:30 PM` (short), `October 17 at 2:30 PM` (long).
|
|
80
|
+
*/
|
|
81
|
+
export declare function formatMonthDayTime(value: DateInput, options?: DateOptions | DateLength): string;
|
|
82
|
+
export type RelativeUnit = "second" | "minute" | "hour" | "day" | "week" | "month" | "quarter" | "year";
|
|
83
|
+
export type RelativeTimeOptions = WithLanguage & {
|
|
84
|
+
/** The moment it is measured from. Defaults to now. */
|
|
85
|
+
now?: DateInput;
|
|
86
|
+
/** Always count in this unit, rather than the one that reads best. */
|
|
87
|
+
unit?: RelativeUnit;
|
|
88
|
+
/** `auto` (the default) writes "yesterday" and "now"; `always` writes "1 day ago". */
|
|
89
|
+
numeric?: "auto" | "always";
|
|
90
|
+
/** `long` (the default), `short` ("3 min. ago") or `narrow`. */
|
|
91
|
+
style?: "long" | "short" | "narrow";
|
|
92
|
+
/** The zone whose calendar decides what "yesterday" is. Defaults as dates do. */
|
|
93
|
+
timeZone?: string;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* The count and unit a moment reads best in, from `now`: under 45 seconds is
|
|
97
|
+
* now, under 45 minutes counts minutes, under 22 hours (or the same day)
|
|
98
|
+
* hours, under a week calendar days (so "yesterday" is the day before
|
|
99
|
+
* today), under 26 days weeks, under 335 days months, then years. A day
|
|
100
|
+
* without a time (`2026-10-17`) counts days from today. Negative counts are
|
|
101
|
+
* in the past.
|
|
102
|
+
*/
|
|
103
|
+
export declare function relativeTimeUnit(value: DateInput, now?: DateInput, timeZone?: string | undefined): [number, RelativeUnit];
|
|
104
|
+
/**
|
|
105
|
+
* How long ago or how far ahead a moment is: "3 minutes ago", "yesterday",
|
|
106
|
+
* "in 2 days", "now", in the unit that reads best (see `relativeTimeUnit`)
|
|
107
|
+
* or the one given.
|
|
108
|
+
*/
|
|
109
|
+
export declare function formatRelativeTime(value: DateInput, options?: RelativeTimeOptions): string;
|
|
110
|
+
export type NumberOptions = WithLanguage & Intl.NumberFormatOptions;
|
|
111
|
+
/** A number with the language's separators: `1,234.5`, `1.234,5`. Any `Intl.NumberFormat` option applies. */
|
|
112
|
+
export declare function formatNumber(value: number | bigint, options?: NumberOptions): string;
|
|
113
|
+
/** A number in short: `12K`, `1.2M`, `1,2 mio.`, `1.2万`, to one decimal unless the options say otherwise. */
|
|
114
|
+
export declare function formatCompact(value: number | bigint, options?: NumberOptions): string;
|
|
115
|
+
/** A fraction as a percentage: `0.25` gives `25%` (`25 %` in Danish). */
|
|
116
|
+
export declare function formatPercent(value: number, options?: NumberOptions): string;
|
|
117
|
+
export type CurrencyDisplay = "symbol" | "narrowSymbol" | "code" | "name";
|
|
118
|
+
export type MoneyOptions = WithLanguage & Omit<Intl.NumberFormatOptions, "style" | "currency" | "currencyDisplay"> & {
|
|
119
|
+
/**
|
|
120
|
+
* The amount is counted in the currency's minor unit, as payment
|
|
121
|
+
* services send it: 1999 is $19.99, and 1999 yen are 1999 yen.
|
|
122
|
+
*/
|
|
123
|
+
minor?: boolean;
|
|
124
|
+
/** The currency as its symbol (`$`, the default), its narrow symbol, its code (`USD`) or its name. */
|
|
125
|
+
display?: CurrencyDisplay;
|
|
126
|
+
/** Whole units only, rounded: `$20`. */
|
|
127
|
+
whole?: boolean;
|
|
128
|
+
};
|
|
129
|
+
/**
|
|
130
|
+
* How many decimals a currency's minor unit has, as ISO 4217 counts them:
|
|
131
|
+
* 2 for USD, EUR and DKK, 0 for JPY and KRW, 3 for BHD. 2 for a code the
|
|
132
|
+
* runtime does not know.
|
|
133
|
+
*/
|
|
134
|
+
export declare function currencyDigits(currency: string): number;
|
|
135
|
+
/** An amount in minor units as whole units: 1999 cents are 19.99 dollars; yen stay as they are. */
|
|
136
|
+
export declare function fromMinorUnits(amount: number, currency: string): number;
|
|
137
|
+
/** An amount in whole units as minor units, rounded: 19.99 dollars are 1999 cents. */
|
|
138
|
+
export declare function toMinorUnits(amount: number, currency: string): number;
|
|
139
|
+
/**
|
|
140
|
+
* An amount of money in the language's way: `$1,234.50`, `1.234,50 kr.`,
|
|
141
|
+
* `¥1,235`. The currency decides the decimals (none for yen). With `minor`,
|
|
142
|
+
* the amount is in cents, øre or the like. A currency code that is not one
|
|
143
|
+
* (not three letters) is written after the number (`12.00 US`) rather than
|
|
144
|
+
* throwing.
|
|
145
|
+
*/
|
|
146
|
+
export declare function formatMoney(amount: number, currency: string, options?: MoneyOptions): string;
|
|
147
|
+
/**
|
|
148
|
+
* The parts of `formatMoney`'s text, as `Intl.NumberFormat.formatToParts`
|
|
149
|
+
* gives them (`currency`, `integer`, `group`, `decimal`, `fraction`, …), for
|
|
150
|
+
* drawing digits apart from the rest, each in a cell of its own width.
|
|
151
|
+
*/
|
|
152
|
+
export declare function formatMoneyToParts(amount: number, currency: string, options?: MoneyOptions): Intl.NumberFormatPart[];
|
|
153
|
+
/** The symbol the language writes a currency with: `$`, `kr.`, `€`, `US$` in British English. */
|
|
154
|
+
export declare function currencySymbol(currency: string, options?: WithLanguage & {
|
|
155
|
+
display?: "symbol" | "narrowSymbol";
|
|
156
|
+
}): string;
|
|
157
|
+
export type ListOptions = WithLanguage & {
|
|
158
|
+
/** `conjunction` (the default) joins with "and", `disjunction` with "or", `unit` with neither. */
|
|
159
|
+
type?: ListType;
|
|
160
|
+
/** `long` (the default), `short` or `narrow`. */
|
|
161
|
+
style?: ListStyle;
|
|
162
|
+
};
|
|
163
|
+
/** Items joined the language's way: `A, B, and C`, `A, B og C`, `A、B、C`. */
|
|
164
|
+
export declare function formatList(items: Iterable<string>, options?: ListOptions): string;
|
|
165
|
+
export {};
|
|
166
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../DS1/0-face/format.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dates, times, numbers, money and lists written the way the reader's
|
|
3
|
+
* language writes them, through the platform's `Intl` formatters.
|
|
4
|
+
*
|
|
5
|
+
* Every function formats in the current language (`currentLanguage.value`
|
|
6
|
+
* from `./i18n`), read again on every call, so the text drawn after a
|
|
7
|
+
* language change is in the new language. Pass `language` to format in
|
|
8
|
+
* another one: a server answering a request names the request's language,
|
|
9
|
+
* since its current language is nobody's in particular.
|
|
10
|
+
*
|
|
11
|
+
* Each formatter is made once per locale and options, then kept. No browser
|
|
12
|
+
* code: it runs in a Worker, Node or a test as it does in a page.
|
|
13
|
+
*/
|
|
14
|
+
import { currentLanguage } from "./i18n";
|
|
15
|
+
import { DEFAULT_LANGUAGE, LANGUAGES, normalizeLanguage } from "./languages";
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Locales
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* The locale each language of the list formats in: the language with the
|
|
21
|
+
* region it is most read in. `pt` is Portugal's Portuguese and `pt-BR`
|
|
22
|
+
* Brazil's; `Intl` alone reads a bare `pt` as Brazil's.
|
|
23
|
+
*/
|
|
24
|
+
export const LOCALE_TAGS = {
|
|
25
|
+
da: "da-DK",
|
|
26
|
+
de: "de-DE",
|
|
27
|
+
en: "en-US",
|
|
28
|
+
es: "es-ES",
|
|
29
|
+
fi: "fi-FI",
|
|
30
|
+
fr: "fr-FR",
|
|
31
|
+
is: "is-IS",
|
|
32
|
+
it: "it-IT",
|
|
33
|
+
ja: "ja-JP",
|
|
34
|
+
ko: "ko-KR",
|
|
35
|
+
nb: "nb-NO",
|
|
36
|
+
nn: "nn-NO",
|
|
37
|
+
no: "no-NO",
|
|
38
|
+
pt: "pt-PT",
|
|
39
|
+
"pt-BR": "pt-BR",
|
|
40
|
+
sv: "sv-SE",
|
|
41
|
+
zh: "zh-CN",
|
|
42
|
+
};
|
|
43
|
+
let settings = {};
|
|
44
|
+
/** Each language or tag asked for, to the locale it formats in. */
|
|
45
|
+
const resolvedTags = new Map();
|
|
46
|
+
/** Set the locales and time zone every call starts from (see `FormatSettings`). */
|
|
47
|
+
export function configureFormat(next) {
|
|
48
|
+
settings = {
|
|
49
|
+
...settings,
|
|
50
|
+
...next,
|
|
51
|
+
locales: { ...settings.locales, ...next.locales },
|
|
52
|
+
};
|
|
53
|
+
resolvedTags.clear();
|
|
54
|
+
}
|
|
55
|
+
function canonical(tag) {
|
|
56
|
+
try {
|
|
57
|
+
return Intl.getCanonicalLocales(tag)[0] ?? null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function regional(language) {
|
|
64
|
+
const own = settings.locales?.[language];
|
|
65
|
+
return (own && canonical(own)) || LOCALE_TAGS[language];
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* The locale tag a language formats in: `da` gives `da-DK`, `pt` gives
|
|
69
|
+
* `pt-PT`, `pt-br` gives `pt-BR`. A tag with its own region or script keeps
|
|
70
|
+
* it (`en-GB`, `zh-Hant`), and a language outside the list passes through
|
|
71
|
+
* (`nl`). Without an argument, the current language's.
|
|
72
|
+
*/
|
|
73
|
+
export function localeTag(language) {
|
|
74
|
+
const tag = String(language || currentLanguage.value || "")
|
|
75
|
+
.trim()
|
|
76
|
+
.replace(/_/g, "-");
|
|
77
|
+
let resolved = resolvedTags.get(tag);
|
|
78
|
+
if (!resolved) {
|
|
79
|
+
resolved = resolveTag(tag);
|
|
80
|
+
// Tags come from a short list; a server reading arbitrary ones starts over
|
|
81
|
+
if (resolvedTags.size >= MAX_FORMATTERS) {
|
|
82
|
+
resolvedTags.clear();
|
|
83
|
+
}
|
|
84
|
+
resolvedTags.set(tag, resolved);
|
|
85
|
+
}
|
|
86
|
+
return resolved;
|
|
87
|
+
}
|
|
88
|
+
function resolveTag(tag) {
|
|
89
|
+
if (!tag) {
|
|
90
|
+
return regional(DEFAULT_LANGUAGE);
|
|
91
|
+
}
|
|
92
|
+
const lower = tag.toLowerCase();
|
|
93
|
+
const member = LANGUAGES.find((code) => code.toLowerCase() === lower);
|
|
94
|
+
if (member) {
|
|
95
|
+
return regional(member);
|
|
96
|
+
}
|
|
97
|
+
// A tag of its own, when the runtime has its conventions (not the
|
|
98
|
+
// runtime's default standing in for one it lacks)
|
|
99
|
+
const written = canonical(tag);
|
|
100
|
+
if (written && supported(written)) {
|
|
101
|
+
return written;
|
|
102
|
+
}
|
|
103
|
+
// Otherwise the list's language it names, else the default
|
|
104
|
+
const known = normalizeLanguage(tag, null);
|
|
105
|
+
return regional(known ?? DEFAULT_LANGUAGE);
|
|
106
|
+
}
|
|
107
|
+
function supported(tag) {
|
|
108
|
+
try {
|
|
109
|
+
return Intl.NumberFormat.supportedLocalesOf([tag]).length > 0;
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
return false;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const MAX_FORMATTERS = 256;
|
|
116
|
+
const formatters = new Map();
|
|
117
|
+
function optionsKey(options) {
|
|
118
|
+
const entries = Object.entries(options).filter(([, value]) => value !== undefined);
|
|
119
|
+
entries.sort(([a], [b]) => (a < b ? -1 : a > b ? 1 : 0));
|
|
120
|
+
return JSON.stringify(entries);
|
|
121
|
+
}
|
|
122
|
+
function kept(kind, locale, options, make) {
|
|
123
|
+
const key = `${kind}|${locale}|${optionsKey(options)}`;
|
|
124
|
+
if (formatters.has(key)) {
|
|
125
|
+
return formatters.get(key);
|
|
126
|
+
}
|
|
127
|
+
if (formatters.size >= MAX_FORMATTERS) {
|
|
128
|
+
// The oldest goes first
|
|
129
|
+
const oldest = formatters.keys().next();
|
|
130
|
+
if (!oldest.done) {
|
|
131
|
+
formatters.delete(oldest.value);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
const formatter = make();
|
|
135
|
+
formatters.set(key, formatter);
|
|
136
|
+
return formatter;
|
|
137
|
+
}
|
|
138
|
+
function split(options) {
|
|
139
|
+
const { language, ...rest } = options;
|
|
140
|
+
return [localeTag(language), rest];
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The kept `Intl.DateTimeFormat` for any options the named functions do not
|
|
144
|
+
* cover (`{ weekday: "short" }`), in the current language or `language`. The
|
|
145
|
+
* time zone set with `configureFormat` applies unless the options name one.
|
|
146
|
+
*/
|
|
147
|
+
export function dateFormatter(options = {}) {
|
|
148
|
+
const [locale, rest] = split(options);
|
|
149
|
+
const resolved = {
|
|
150
|
+
...rest,
|
|
151
|
+
timeZone: rest.timeZone ?? settings.timeZone,
|
|
152
|
+
};
|
|
153
|
+
return kept("date", locale, resolved, () => new Intl.DateTimeFormat(locale, resolved));
|
|
154
|
+
}
|
|
155
|
+
/** The kept `Intl.NumberFormat` for any options, in the current language or `language`. */
|
|
156
|
+
export function numberFormatter(options = {}) {
|
|
157
|
+
const [locale, rest] = split(options);
|
|
158
|
+
return kept("number", locale, rest, () => new Intl.NumberFormat(locale, rest));
|
|
159
|
+
}
|
|
160
|
+
/** The kept `Intl.RelativeTimeFormat`, in the current language or `language`. */
|
|
161
|
+
export function relativeTimeFormatter(options = {}) {
|
|
162
|
+
const [locale, rest] = split(options);
|
|
163
|
+
return kept("relative", locale, rest, () => new Intl.RelativeTimeFormat(locale, rest));
|
|
164
|
+
}
|
|
165
|
+
/** The kept `Intl.ListFormat`, in the current language or `language`. */
|
|
166
|
+
export function listFormatter(options = {}) {
|
|
167
|
+
const [locale, rest] = split(options);
|
|
168
|
+
return kept("list", locale, rest, () => {
|
|
169
|
+
const ListFormat = Intl
|
|
170
|
+
.ListFormat;
|
|
171
|
+
// A runtime without it joins with commas, as English would
|
|
172
|
+
return ListFormat
|
|
173
|
+
? new ListFormat(locale, rest)
|
|
174
|
+
: { format: (items) => [...items].join(", ") };
|
|
175
|
+
});
|
|
176
|
+
}
|
|
177
|
+
const DATE_ONLY = /^(\d{4})-(\d{2})-(\d{2})$/;
|
|
178
|
+
/** The moment, and whether it is a day without a time. */
|
|
179
|
+
function readDate(value) {
|
|
180
|
+
if (typeof value === "string") {
|
|
181
|
+
const day = DATE_ONLY.exec(value.trim());
|
|
182
|
+
if (day) {
|
|
183
|
+
return {
|
|
184
|
+
time: Date.UTC(Number(day[1]), Number(day[2]) - 1, Number(day[3])),
|
|
185
|
+
day: true,
|
|
186
|
+
};
|
|
187
|
+
}
|
|
188
|
+
return { time: Date.parse(value), day: false };
|
|
189
|
+
}
|
|
190
|
+
return {
|
|
191
|
+
time: value instanceof Date ? value.getTime() : Number(value),
|
|
192
|
+
day: false,
|
|
193
|
+
};
|
|
194
|
+
}
|
|
195
|
+
function dateArguments(options, fallback) {
|
|
196
|
+
if (typeof options === "string") {
|
|
197
|
+
return { length: options };
|
|
198
|
+
}
|
|
199
|
+
return { ...options, length: options?.length ?? fallback };
|
|
200
|
+
}
|
|
201
|
+
function formatMoment(value, parts, { language, timeZone }) {
|
|
202
|
+
const { time, day } = readDate(value);
|
|
203
|
+
if (!Number.isFinite(time)) {
|
|
204
|
+
return "";
|
|
205
|
+
}
|
|
206
|
+
// A day without a time is kept on its own date in every zone
|
|
207
|
+
const zone = day ? "UTC" : timeZone;
|
|
208
|
+
return dateFormatter({ ...parts, timeZone: zone, language }).format(time);
|
|
209
|
+
}
|
|
210
|
+
/** A date: `Oct 17, 2026` (medium, the default), `10/17/26` (short), `October 17, 2026` (long). */
|
|
211
|
+
export function formatDate(value, options) {
|
|
212
|
+
const { length, ...rest } = dateArguments(options, "medium");
|
|
213
|
+
return formatMoment(value, { dateStyle: length }, rest);
|
|
214
|
+
}
|
|
215
|
+
/** A time of day: `2:30 PM` (short, the default), `2:30:05 PM` (medium), `2:30:05 PM UTC` (long). */
|
|
216
|
+
export function formatTime(value, options) {
|
|
217
|
+
const { length, ...rest } = dateArguments(options, "short");
|
|
218
|
+
return formatMoment(value, { timeStyle: length }, rest);
|
|
219
|
+
}
|
|
220
|
+
/** A date at a time: the date at `length` (medium by default), the time to the minute. */
|
|
221
|
+
export function formatDateTime(value, options) {
|
|
222
|
+
const { length, ...rest } = dateArguments(options, "medium");
|
|
223
|
+
return formatMoment(value, { dateStyle: length, timeStyle: "short" }, rest);
|
|
224
|
+
}
|
|
225
|
+
const MONTH = {
|
|
226
|
+
short: "numeric",
|
|
227
|
+
medium: "short",
|
|
228
|
+
long: "long",
|
|
229
|
+
};
|
|
230
|
+
/** A month of a year: `October 2026` (long, the default), `Oct 2026` (medium), `10/2026` (short). */
|
|
231
|
+
export function formatMonthYear(value, options) {
|
|
232
|
+
const { length, ...rest } = dateArguments(options, "long");
|
|
233
|
+
return formatMoment(value, { year: "numeric", month: MONTH[length] }, rest);
|
|
234
|
+
}
|
|
235
|
+
/** A day of a month, without the year: `Oct 17` (medium, the default), `10/17` (short), `October 17` (long). */
|
|
236
|
+
export function formatMonthDay(value, options) {
|
|
237
|
+
const { length, ...rest } = dateArguments(options, "medium");
|
|
238
|
+
return formatMoment(value, { month: MONTH[length], day: "numeric" }, rest);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* A day of a month at a time, without the year: `Oct 17, 2:30 PM` (medium,
|
|
242
|
+
* the default), `10/17, 2:30 PM` (short), `October 17 at 2:30 PM` (long).
|
|
243
|
+
*/
|
|
244
|
+
export function formatMonthDayTime(value, options) {
|
|
245
|
+
const { length, ...rest } = dateArguments(options, "medium");
|
|
246
|
+
return formatMoment(value, { month: MONTH[length], day: "numeric", hour: "numeric", minute: "2-digit" }, rest);
|
|
247
|
+
}
|
|
248
|
+
const SECOND = 1000;
|
|
249
|
+
const MINUTE = 60 * SECOND;
|
|
250
|
+
const HOUR = 60 * MINUTE;
|
|
251
|
+
const DAY = 24 * HOUR;
|
|
252
|
+
const MONTH_DAYS = 30.436875;
|
|
253
|
+
const YEAR_DAYS = 365.2425;
|
|
254
|
+
const UNIT_LENGTH = {
|
|
255
|
+
second: SECOND,
|
|
256
|
+
minute: MINUTE,
|
|
257
|
+
hour: HOUR,
|
|
258
|
+
day: DAY,
|
|
259
|
+
week: 7 * DAY,
|
|
260
|
+
month: MONTH_DAYS * DAY,
|
|
261
|
+
quarter: 3 * MONTH_DAYS * DAY,
|
|
262
|
+
year: YEAR_DAYS * DAY,
|
|
263
|
+
};
|
|
264
|
+
/** The calendar day a moment falls on in a zone, counted from 1970. */
|
|
265
|
+
function dayNumber(time, timeZone) {
|
|
266
|
+
if (!timeZone) {
|
|
267
|
+
const date = new Date(time);
|
|
268
|
+
return Math.round(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate()) / DAY);
|
|
269
|
+
}
|
|
270
|
+
const parts = kept("calendar", "en-US", { timeZone }, () => new Intl.DateTimeFormat("en-US-u-ca-gregory-nu-latn", {
|
|
271
|
+
timeZone,
|
|
272
|
+
year: "numeric",
|
|
273
|
+
month: "numeric",
|
|
274
|
+
day: "numeric",
|
|
275
|
+
})).formatToParts(time);
|
|
276
|
+
const part = (type) => Number(parts.find((entry) => entry.type === type)?.value);
|
|
277
|
+
return Math.round(Date.UTC(part("year"), part("month") - 1, part("day")) / DAY);
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* The count and unit a moment reads best in, from `now`: under 45 seconds is
|
|
281
|
+
* now, under 45 minutes counts minutes, under 22 hours (or the same day)
|
|
282
|
+
* hours, under a week calendar days (so "yesterday" is the day before
|
|
283
|
+
* today), under 26 days weeks, under 335 days months, then years. A day
|
|
284
|
+
* without a time (`2026-10-17`) counts days from today. Negative counts are
|
|
285
|
+
* in the past.
|
|
286
|
+
*/
|
|
287
|
+
export function relativeTimeUnit(value, now = Date.now(), timeZone = settings.timeZone) {
|
|
288
|
+
const { time: at, day } = readDate(value);
|
|
289
|
+
const from = readDate(now).time;
|
|
290
|
+
const elapsed = at - from;
|
|
291
|
+
const size = Math.abs(elapsed);
|
|
292
|
+
const sign = elapsed < 0 ? -1 : 1;
|
|
293
|
+
if (day) {
|
|
294
|
+
// A day without a time is counted in days from today: "today", "yesterday"
|
|
295
|
+
const days = Math.round(at / DAY) - dayNumber(from, timeZone);
|
|
296
|
+
return days === 0 ? [0, "day"] : inDays(days);
|
|
297
|
+
}
|
|
298
|
+
if (size < 45 * SECOND) {
|
|
299
|
+
// -0 keeps the past's wording where a count is written ("0 seconds ago")
|
|
300
|
+
return [elapsed < 0 ? -0 : 0, "second"];
|
|
301
|
+
}
|
|
302
|
+
if (size < 45 * MINUTE) {
|
|
303
|
+
return [sign * Math.max(1, Math.round(size / MINUTE)), "minute"];
|
|
304
|
+
}
|
|
305
|
+
const days = dayNumber(at, timeZone) - dayNumber(from, timeZone);
|
|
306
|
+
if (size < 22 * HOUR || days === 0) {
|
|
307
|
+
return [sign * Math.max(1, Math.round(size / HOUR)), "hour"];
|
|
308
|
+
}
|
|
309
|
+
return inDays(days);
|
|
310
|
+
}
|
|
311
|
+
/** A count of calendar days (never 0) in the unit it reads best in. */
|
|
312
|
+
function inDays(days) {
|
|
313
|
+
const whole = Math.abs(days);
|
|
314
|
+
const sign = days < 0 ? -1 : 1;
|
|
315
|
+
if (whole < 7) {
|
|
316
|
+
return [days, "day"];
|
|
317
|
+
}
|
|
318
|
+
if (whole < 26) {
|
|
319
|
+
return [sign * Math.round(whole / 7), "week"];
|
|
320
|
+
}
|
|
321
|
+
if (whole < 335) {
|
|
322
|
+
return [sign * Math.max(1, Math.round(whole / MONTH_DAYS)), "month"];
|
|
323
|
+
}
|
|
324
|
+
return [sign * Math.max(1, Math.round(whole / YEAR_DAYS)), "year"];
|
|
325
|
+
}
|
|
326
|
+
/**
|
|
327
|
+
* How long ago or how far ahead a moment is: "3 minutes ago", "yesterday",
|
|
328
|
+
* "in 2 days", "now", in the unit that reads best (see `relativeTimeUnit`)
|
|
329
|
+
* or the one given.
|
|
330
|
+
*/
|
|
331
|
+
export function formatRelativeTime(value, options = {}) {
|
|
332
|
+
const { now = Date.now(), unit, numeric = "auto", style = "long", language } = options;
|
|
333
|
+
const timeZone = options.timeZone ?? settings.timeZone;
|
|
334
|
+
const at = readDate(value).time;
|
|
335
|
+
const from = readDate(now).time;
|
|
336
|
+
if (!Number.isFinite(at) || !Number.isFinite(from)) {
|
|
337
|
+
return "";
|
|
338
|
+
}
|
|
339
|
+
const [count, chosen] = unit
|
|
340
|
+
? [Math.round((at - from) / UNIT_LENGTH[unit]), unit]
|
|
341
|
+
: relativeTimeUnit(value, from, timeZone);
|
|
342
|
+
return relativeTimeFormatter({ numeric, style, language }).format(count, chosen);
|
|
343
|
+
}
|
|
344
|
+
/** A number with the language's separators: `1,234.5`, `1.234,5`. Any `Intl.NumberFormat` option applies. */
|
|
345
|
+
export function formatNumber(value, options = {}) {
|
|
346
|
+
return numberFormatter(options).format(value);
|
|
347
|
+
}
|
|
348
|
+
/** A number in short: `12K`, `1.2M`, `1,2 mio.`, `1.2万`, to one decimal unless the options say otherwise. */
|
|
349
|
+
export function formatCompact(value, options = {}) {
|
|
350
|
+
return numberFormatter({
|
|
351
|
+
notation: "compact",
|
|
352
|
+
maximumFractionDigits: 1,
|
|
353
|
+
...options,
|
|
354
|
+
}).format(value);
|
|
355
|
+
}
|
|
356
|
+
/** A fraction as a percentage: `0.25` gives `25%` (`25 %` in Danish). */
|
|
357
|
+
export function formatPercent(value, options = {}) {
|
|
358
|
+
return numberFormatter({ style: "percent", ...options }).format(value);
|
|
359
|
+
}
|
|
360
|
+
function currencyCode(currency) {
|
|
361
|
+
return String(currency ?? "").trim().toUpperCase();
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* How many decimals a currency's minor unit has, as ISO 4217 counts them:
|
|
365
|
+
* 2 for USD, EUR and DKK, 0 for JPY and KRW, 3 for BHD. 2 for a code the
|
|
366
|
+
* runtime does not know.
|
|
367
|
+
*/
|
|
368
|
+
export function currencyDigits(currency) {
|
|
369
|
+
const code = currencyCode(currency);
|
|
370
|
+
try {
|
|
371
|
+
return kept("digits", "en", { currency: code }, () => new Intl.NumberFormat("en", { style: "currency", currency: code })).resolvedOptions().maximumFractionDigits ?? 2;
|
|
372
|
+
}
|
|
373
|
+
catch {
|
|
374
|
+
return 2;
|
|
375
|
+
}
|
|
376
|
+
}
|
|
377
|
+
/** An amount in minor units as whole units: 1999 cents are 19.99 dollars; yen stay as they are. */
|
|
378
|
+
export function fromMinorUnits(amount, currency) {
|
|
379
|
+
return amount / 10 ** currencyDigits(currency);
|
|
380
|
+
}
|
|
381
|
+
/** An amount in whole units as minor units, rounded: 19.99 dollars are 1999 cents. */
|
|
382
|
+
export function toMinorUnits(amount, currency) {
|
|
383
|
+
return Math.round(amount * 10 ** currencyDigits(currency));
|
|
384
|
+
}
|
|
385
|
+
function moneyFormatter(currency, options) {
|
|
386
|
+
const { minor, display = "symbol", whole, language, ...rest } = options;
|
|
387
|
+
const code = currencyCode(currency);
|
|
388
|
+
const digits = currencyDigits(code);
|
|
389
|
+
const value = (amount) => (minor ? amount / 10 ** digits : amount);
|
|
390
|
+
try {
|
|
391
|
+
const format = numberFormatter({
|
|
392
|
+
...rest,
|
|
393
|
+
...(whole ? { minimumFractionDigits: 0, maximumFractionDigits: 0 } : {}),
|
|
394
|
+
style: "currency",
|
|
395
|
+
currency: code,
|
|
396
|
+
currencyDisplay: display,
|
|
397
|
+
language,
|
|
398
|
+
});
|
|
399
|
+
return { format, value, code, digits };
|
|
400
|
+
}
|
|
401
|
+
catch {
|
|
402
|
+
return { format: null, value, code, digits };
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
/**
|
|
406
|
+
* An amount of money in the language's way: `$1,234.50`, `1.234,50 kr.`,
|
|
407
|
+
* `¥1,235`. The currency decides the decimals (none for yen). With `minor`,
|
|
408
|
+
* the amount is in cents, øre or the like. A currency code that is not one
|
|
409
|
+
* (not three letters) is written after the number (`12.00 US`) rather than
|
|
410
|
+
* throwing.
|
|
411
|
+
*/
|
|
412
|
+
export function formatMoney(amount, currency, options = {}) {
|
|
413
|
+
const { format, value, code, digits } = moneyFormatter(currency, options);
|
|
414
|
+
if (format) {
|
|
415
|
+
return format.format(value(amount));
|
|
416
|
+
}
|
|
417
|
+
const places = options.whole ? 0 : digits;
|
|
418
|
+
return `${formatNumber(value(amount), {
|
|
419
|
+
minimumFractionDigits: places,
|
|
420
|
+
maximumFractionDigits: places,
|
|
421
|
+
language: options.language,
|
|
422
|
+
})} ${code}`;
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
425
|
+
* The parts of `formatMoney`'s text, as `Intl.NumberFormat.formatToParts`
|
|
426
|
+
* gives them (`currency`, `integer`, `group`, `decimal`, `fraction`, …), for
|
|
427
|
+
* drawing digits apart from the rest, each in a cell of its own width.
|
|
428
|
+
*/
|
|
429
|
+
export function formatMoneyToParts(amount, currency, options = {}) {
|
|
430
|
+
const { format, value } = moneyFormatter(currency, options);
|
|
431
|
+
if (format) {
|
|
432
|
+
return format.formatToParts(value(amount));
|
|
433
|
+
}
|
|
434
|
+
return [{ type: "literal", value: formatMoney(amount, currency, options) }];
|
|
435
|
+
}
|
|
436
|
+
/** The symbol the language writes a currency with: `$`, `kr.`, `€`, `US$` in British English. */
|
|
437
|
+
export function currencySymbol(currency, options = {}) {
|
|
438
|
+
const parts = formatMoneyToParts(0, currency, options);
|
|
439
|
+
return parts.find((part) => part.type === "currency")?.value ?? currencyCode(currency);
|
|
440
|
+
}
|
|
441
|
+
/** Items joined the language's way: `A, B, and C`, `A, B og C`, `A、B、C`. */
|
|
442
|
+
export function formatList(items, options = {}) {
|
|
443
|
+
const { type = "conjunction", style = "long", language } = options;
|
|
444
|
+
return listFormatter({ type, style, language }).format(Array.from(items, (item) => String(item)));
|
|
445
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/toast-assets.mjs from 2-core/styles/ds-toast.css (with the
|
|
3
|
+
* sheets it imports) and the x-icon files it names. Never edit it: change those
|
|
4
|
+
* files and run `vp run generate:toast-assets`.
|
|
5
|
+
*/
|
|
6
|
+
/** The toast's stylesheet, the same one `<ds-toast>` imports. */
|
|
7
|
+
export declare const toastStyles: string;
|
|
8
|
+
export type ToastIconName = "check" | "close" | "notifications" | "warning";
|
|
9
|
+
/** The icons the page toaster draws: the toast types' own and the close button's. */
|
|
10
|
+
export declare const toastIcons: Readonly<Record<ToastIconName, string>>;
|
|
11
|
+
//# sourceMappingURL=toast-assets.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toast-assets.d.ts","sourceRoot":"","sources":["../../../DS1/0-face/generated/toast-assets.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,iEAAiE;AACjE,eAAO,MAAM,WAAW,EAAE,MAAsvN,CAAC;AAEjxN,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,OAAO,GAAG,eAAe,GAAG,SAAS,CAAC;AAE5E,qFAAqF;AACrF,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAK9D,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generated by scripts/toast-assets.mjs from 2-core/styles/ds-toast.css (with the
|
|
3
|
+
* sheets it imports) and the x-icon files it names. Never edit it: change those
|
|
4
|
+
* files and run `vp run generate:toast-assets`.
|
|
5
|
+
*/
|
|
6
|
+
/** The toast's stylesheet, the same one `<ds-toast>` imports. */
|
|
7
|
+
export const toastStyles = "[data-ds-shape=\"square\"], :host([data-ds-shape=\"square\"]){--ds-corner-size: 0px;--ds-corner-shape: round;--ds-button-inset: 0.5px}[data-ds-shape=\"rounded\"], :host([data-ds-shape=\"rounded\"]){--ds-corner-size: 4px;--ds-corner-shape: round;--ds-button-inset: 2.5px}[data-ds-shape=\"circular\"], :host([data-ds-shape=\"circular\"]){--ds-corner-size: 999px;--ds-corner-shape: round;--ds-button-inset: 5px}@supports (corner-shape: squircle){[data-ds-shape=\"rounded\"], :host([data-ds-shape=\"rounded\"]){--ds-corner-size: 8px;--ds-corner-shape: squircle}}:root, :host, :where([data-ds-surface]){--ds-unit: calc(var(--ds-1, 20px) * var(--ds-sf, 1));--ds-control-height: calc(var(--ds-control-size, var(--ds-08, 16px)) * var(--ds-sf, 1));--ds-row-height: calc(var(--ds-row-size, var(--ds-1, 20px)) * var(--ds-sf, 1));--ds-type-size-default: calc(var(--ds-text-size, 14px) * var(--ds-sf, 1));--ds-type-size-small: calc(var(--ds-small-text-size, 10px) * var(--ds-sf, 1));--ds-type-size-heading: calc(var(--ds-heading-text-size, 13px) * var(--ds-sf, 1));--ds-type-size-display: calc(var(--ds-display-text-size, 20px) * var(--ds-sf, 1));--ds-type-lineheight-default: calc(var(--ds-text-leading, 16px) * var(--ds-sf, 1));--ds-type-letterspacing-default: calc(var(--ds-text-tracking, -0.3px) * var(--ds-sf, 1));--ds-radius: calc(var(--ds-corner-size, 4px) * var(--ds-sf, 1));--ds-radius-card: calc(var(--ds-card-corner-size, 4px) * var(--ds-sf, 1))}:host{--ds-toast-width: calc(16 * var(--ds-unit));--ds-toast-offset: var(--ds-unit);--ds-toast-gap: calc(var(--ds-unit) - var(--ds-control-height));--ds-toast-background: var(--ds-tooltip-background, light-dark(var(--ds-black, #2a2a2a), var(--ds-white, #ffffff)));--ds-toast-color: var(--ds-tooltip-color, light-dark(var(--ds-white, #ffffff), var(--ds-black, #2a2a2a)));display: contents}section{display: contents}ol{--lift: -1;position: fixed;z-index: 2147483000;box-sizing: border-box;width: min(var(--ds-toast-width), calc(100% - 2 * var(--ds-toast-offset)));height: calc(var(--height) + var(--gaps) * var(--ds-toast-gap));margin: 0;padding: 0;list-style: none;outline: none;pointer-events: none}ol[data-y=\"top\"]{--lift: 1;top: calc(var(--ds-toast-offset) + env(safe-area-inset-top, 0px))}ol[data-y=\"bottom\"]{bottom: calc(var(--ds-toast-offset) + env(safe-area-inset-bottom, 0px))}ol[data-x=\"left\"]{left: var(--ds-toast-offset)}ol[data-x=\"right\"]{right: var(--ds-toast-offset)}ol[data-x=\"center\"]{left: 50%;transform: translateX(-50%)}:host([contained]) ol{position: absolute;z-index: var(--ds-toast-z-index, 60)}:host([contained]) ol[data-y=\"top\"]{top: var(--ds-toast-offset)}:host([contained]) ol[data-y=\"bottom\"]{bottom: var(--ds-toast-offset)}.toast{--swipe: 0px;position: absolute;left: 0;right: 0;box-sizing: border-box;width: max-content;max-width: 100%;overflow: hidden;border-radius: var(--ds-radius);background: var(--ds-toast-background);color: var(--ds-toast-color);font-family: var(--ds-typeface-regular);font-feature-settings: var(--ds-font-features);font-size: var(--ds-type-size-default);line-height: var(--ds-control-height);letter-spacing: var(--ds-type-letterspacing-default);outline: none;touch-action: none;user-select: none;pointer-events: auto;opacity: 0;transition: transform 400ms ease, opacity 400ms ease}ol[data-y=\"bottom\"] .toast{bottom: 0}ol[data-y=\"top\"] .toast{top: 0}ol[data-x=\"center\"] .toast{margin-inline: auto}ol[data-x=\"left\"] .toast{margin-right: auto}ol[data-x=\"right\"] .toast{margin-left: auto}.toast:focus-visible{outline: 2px solid var(--ds-focus-ring);outline-offset: 1px}.toast[data-mounted=\"false\"]{transform: translateY(calc(var(--lift) * -100%))}.toast[data-mounted=\"true\"]{opacity: 1}ol[data-expanded=\"false\"] .toast[data-mounted=\"true\"]{transform: translateY(calc(var(--lift) * var(--index) * var(--ds-toast-gap) + var(--swipe))) scale(calc(1 - var(--index) * 0.05))}ol[data-expanded=\"false\"] .toast[data-front=\"false\"]{height: var(--front-height)}ol[data-expanded=\"false\"] .toast[data-front=\"false\"] .body{opacity: 0}ol[data-expanded=\"true\"] .toast[data-mounted=\"true\"]{transform: translateY(calc(var(--lift) * (var(--offset) + var(--index) * var(--ds-toast-gap)) + var(--swipe)))}.toast[data-visible=\"false\"]{opacity: 0;pointer-events: none}.toast[data-swiping=\"true\"]{transition: none}.toast[data-removed=\"true\"]{opacity: 0;pointer-events: none}.toast[data-removed=\"true\"][data-front=\"true\"]{transform: translateY(calc(var(--lift) * -100%))}.toast[data-swipe-out=\"true\"]{transform: translateY(calc(var(--swipe) + var(--lift) * -100%))}.body{display: flex;align-items: flex-start;gap: calc(4px * var(--ds-sf));box-sizing: border-box;min-height: var(--ds-control-height);padding-inline: calc(4px * var(--ds-sf));transition: opacity 400ms ease}.icon{display: inline-flex;flex: 0 0 auto;align-items: center;justify-content: center;width: var(--ds-control-height);height: var(--ds-control-height);--ds-icon-color: currentColor}.icon:first-child{margin-left: calc(-4px * var(--ds-sf))}.icon > svg, .close > svg{width: calc(14px * var(--ds-sf));height: calc(14px * var(--ds-sf))}.content{flex: 1 1 auto;min-width: 0}.title, .description{white-space: normal;overflow-wrap: anywhere}.description{opacity: 0.7}.button{flex: 0 0 auto;margin: 0 0 0 calc(4px * var(--ds-sf));padding: 0;border: 0;background: none;color: inherit;font: inherit;letter-spacing: inherit;text-decoration: underline;text-underline-offset: 2px;cursor: pointer}a.button{display: inline-block}.button.cancel{opacity: 0.7}.button:focus-visible, .close:focus-visible{outline: 1px solid currentColor;outline-offset: 1px;border-radius: 1px}.close{display: inline-flex;flex: 0 0 auto;align-items: center;justify-content: center;width: var(--ds-control-height);height: var(--ds-control-height);margin: 0 calc(-4px * var(--ds-sf)) 0 0;padding: 0;border: 0;background: none;color: inherit;cursor: pointer;--ds-icon-color: currentColor}.spinner{width: calc(10px * var(--ds-sf));height: calc(10px * var(--ds-sf));box-sizing: border-box;border: 1px solid color-mix(in srgb, currentColor 25%, transparent);border-top-color: currentColor;border-radius: 50%;animation: ds-toast-spin 720ms linear infinite}@keyframes ds-toast-spin{to{transform: rotate(360deg)}}:host([rich-colors]) .toast[data-type=\"success\"]{--ds-toast-background: var(--ds-apple-green)}:host([rich-colors]) .toast[data-type=\"info\"]{--ds-toast-background: var(--ds-zenith-blue)}:host([rich-colors]) .toast[data-type=\"warning\"]{--ds-toast-background: var(--ds-orange)}:host([rich-colors]) .toast[data-type=\"error\"]{--ds-toast-background: var(--ds-tuned-red)}:host([rich-colors]) .toast:is([data-type=\"success\"], [data-type=\"info\"], [data-type=\"warning\"], [data-type=\"error\"]){--ds-toast-color: var(--ds-black)}@media (prefers-reduced-motion: reduce){.toast, .body{transition: none}.spinner{animation: none}}";
|
|
8
|
+
/** The icons the page toaster draws: the toast types' own and the close button's. */
|
|
9
|
+
export const toastIcons = {
|
|
10
|
+
"check": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M6.68649 11.884L12.443 6.13601L11.736 5.42715L6.68835 10.4827L4.26399 8.0501L3.55696 8.74525L6.68649 11.884Z\" fill=\"currentColor\"/>\n</svg>\n",
|
|
11
|
+
"close": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M12.1215 4.58087L8.70453 7.99397L12.1176 11.4169L11.4106 12.112L7.99847 8.69108L4.58636 12.112L3.87836 11.4031L7.29535 7.99005L3.88226 4.56716L4.58929 3.87201L8.0014 7.29294L11.4145 3.87201L12.1215 4.58087Z\" fill=\"currentColor\"/>\n</svg>\n",
|
|
12
|
+
"notifications": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path d=\"M4.5 11.5V7.5C4.5 5.567 6.067 4 8 4C9.933 4 11.5 5.567 11.5 7.5V11.5M3 11.5H13M8 2.5V4M6.5 13.5H9.5\" stroke=\"currentColor\" stroke-width=\"0.92\"/>\n</svg>\n",
|
|
13
|
+
"warning": "<svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n<path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M8 1.8L15.2 14.3H0.8L8 1.8ZM8 3.8L2.53 13.3H13.47L8 3.8ZM7.5 6.3H8.5V10.3H7.5V6.3ZM7.5 11.3H8.5V12.3H7.5V11.3Z\" fill=\"#1E1E1E\"/>\n</svg>\n",
|
|
14
|
+
};
|