@0001-labs/design-system-1 0.0.0-stage → 0.3.0-alpha.13
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/control.ts +99 -0
- package/DS1/0-face/define.ts +5 -0
- package/DS1/0-face/device.ts +414 -0
- package/DS1/0-face/grid-fit.ts +63 -0
- package/DS1/0-face/grid.ts +144 -0
- package/DS1/0-face/i18n.ts +1023 -0
- package/DS1/0-face/language-routing.ts +135 -0
- package/DS1/0-face/language-validator.ts +46 -0
- package/DS1/0-face/languages.ts +242 -0
- package/DS1/0-face/layout-inspector.ts +184 -0
- package/DS1/0-face/preferences.ts +39 -0
- package/DS1/0-face/pricing.ts +57 -0
- package/DS1/0-face/scaling.ts +25 -0
- package/DS1/0-face/shared-words.ts +45 -0
- package/DS1/0-face/theme.ts +58 -0
- package/DS1/0-face/tooltips.ts +82 -0
- package/DS1/0-face/translations/da.json +63 -0
- package/DS1/0-face/translations/de.json +63 -0
- package/DS1/0-face/translations/en.json +63 -0
- package/DS1/0-face/translations/es.json +63 -0
- package/DS1/0-face/translations/fi.json +63 -0
- package/DS1/0-face/translations/fr.json +63 -0
- package/DS1/0-face/translations/is.json +56 -0
- package/DS1/0-face/translations/it.json +63 -0
- package/DS1/0-face/translations/ja.json +63 -0
- package/DS1/0-face/translations/ko.json +63 -0
- package/DS1/0-face/translations/nb.json +63 -0
- package/DS1/0-face/translations/pt-BR.json +63 -0
- package/DS1/0-face/translations/pt.json +63 -0
- package/DS1/0-face/translations/sv.json +63 -0
- package/DS1/0-face/translations/zh.json +63 -0
- package/DS1/0-face/translations-format.ts +216 -0
- package/DS1/1-root/component-appearance.css +32 -0
- package/DS1/1-root/component-metrics.css +21 -0
- package/DS1/1-root/component-tokens.css +90 -0
- package/DS1/1-root/controls.css +261 -0
- package/DS1/1-root/fonts/GT-America-Compressed-Regular.woff2 +0 -0
- package/DS1/1-root/fonts/GT-America-Standard-Medium.woff2 +0 -0
- package/DS1/1-root/fonts/GT-America-Standard-Regular.woff2 +0 -0
- package/DS1/1-root/fonts/GT-Canon-M-Standard-Medium-Trial.woff2 +0 -0
- package/DS1/1-root/fonts/Inter-Arrows.woff2 +0 -0
- package/DS1/1-root/fonts/Inter-LICENSE.md +7 -0
- package/DS1/1-root/fonts/Iosevka-LICENSE.md +7 -0
- package/DS1/1-root/fonts/Iosevka-Regular.woff2 +0 -0
- package/DS1/1-root/grid.css +31 -0
- package/DS1/1-root/one.css +602 -0
- package/DS1/1-root/one.semantic.css +683 -0
- package/DS1/1-root/palette.ts +91 -0
- package/DS1/2-core/ds-avatar.ts +130 -0
- package/DS1/2-core/ds-badge.ts +77 -0
- package/DS1/2-core/ds-banner.ts +122 -0
- package/DS1/2-core/ds-button.ts +163 -0
- package/DS1/2-core/ds-card.ts +137 -0
- package/DS1/2-core/ds-checkbox.ts +14 -0
- package/DS1/2-core/ds-color.ts +32 -0
- package/DS1/2-core/ds-composer.ts +182 -0
- package/DS1/2-core/ds-cycle.ts +628 -0
- package/DS1/2-core/ds-date.ts +24 -0
- package/DS1/2-core/ds-file-picker.ts +83 -0
- package/DS1/2-core/ds-gap.ts +34 -0
- package/DS1/2-core/ds-icon.ts +161 -0
- package/DS1/2-core/ds-input.ts +518 -0
- package/DS1/2-core/ds-language.ts +94 -0
- package/DS1/2-core/ds-pagedots.ts +52 -0
- package/DS1/2-core/ds-radio.ts +25 -0
- package/DS1/2-core/ds-select.ts +44 -0
- package/DS1/2-core/ds-split.ts +122 -0
- package/DS1/2-core/ds-swatch.ts +20 -0
- package/DS1/2-core/ds-switch.ts +13 -0
- package/DS1/2-core/ds-text.ts +190 -0
- package/DS1/2-core/ds-textarea.ts +136 -0
- package/DS1/2-core/ds-token.ts +40 -0
- package/DS1/2-core/ds-tooltip.ts +115 -0
- package/DS1/2-core/generated/ds-icon-map.ts +583 -0
- package/DS1/2-core/generated/icons-extra.ts +243 -0
- package/DS1/2-core/generated/icons-immediate.ts +49 -0
- package/DS1/2-core/styles/ds-avatar.css +125 -0
- package/DS1/2-core/styles/ds-badge.css +26 -0
- package/DS1/2-core/styles/ds-banner.css +77 -0
- package/DS1/2-core/styles/ds-button-host.css +214 -0
- package/DS1/2-core/styles/ds-button.css +131 -0
- package/DS1/2-core/styles/ds-checkbox.css +48 -0
- package/DS1/2-core/styles/ds-color.css +24 -0
- package/DS1/2-core/styles/ds-composer-frame.css +11 -0
- package/DS1/2-core/styles/ds-composer.css +55 -0
- package/DS1/2-core/styles/ds-cycle.css +18 -0
- package/DS1/2-core/styles/ds-date.css +9 -0
- package/DS1/2-core/styles/ds-file-picker.css +66 -0
- package/DS1/2-core/styles/ds-gap.css +71 -0
- package/DS1/2-core/styles/ds-icon.css +44 -0
- package/DS1/2-core/styles/ds-input.css +233 -0
- package/DS1/2-core/styles/ds-language.css +78 -0
- package/DS1/2-core/styles/ds-pagedots.css +31 -0
- package/DS1/2-core/styles/ds-radio.css +83 -0
- package/DS1/2-core/styles/ds-select.css +95 -0
- package/DS1/2-core/styles/ds-split.css +62 -0
- package/DS1/2-core/styles/ds-switch.css +50 -0
- package/DS1/2-core/styles/ds-text.css +87 -0
- package/DS1/2-core/styles/ds-textarea.css +27 -0
- package/DS1/2-core/styles/ds-token.css +9 -0
- package/DS1/2-core/styles/ds-tooltip.css +37 -0
- package/DS1/3-unit/context-trigger.ts +104 -0
- package/DS1/3-unit/ds-accordion.ts +120 -0
- package/DS1/3-unit/ds-avatar-group.ts +99 -0
- package/DS1/3-unit/ds-form.ts +304 -0
- package/DS1/3-unit/ds-list.ts +36 -0
- package/DS1/3-unit/ds-menu.ts +482 -0
- package/DS1/3-unit/ds-row.ts +48 -0
- package/DS1/3-unit/ds-table.ts +68 -0
- package/DS1/3-unit/ds-tabs.ts +77 -0
- package/DS1/3-unit/ds-token-field.ts +127 -0
- package/DS1/3-unit/styles/context-trigger.css +6 -0
- package/DS1/3-unit/styles/ds-accordion.css +64 -0
- package/DS1/3-unit/styles/ds-avatar-group.css +51 -0
- package/DS1/3-unit/styles/ds-list.css +26 -0
- package/DS1/3-unit/styles/ds-menu.css +97 -0
- package/DS1/3-unit/styles/ds-row.css +37 -0
- package/DS1/3-unit/styles/ds-table.css +80 -0
- package/DS1/3-unit/styles/ds-tabs.css +44 -0
- package/DS1/3-unit/styles/ds-token-field.css +11 -0
- package/DS1/4-page/ds-container.ts +28 -0
- package/DS1/4-page/ds-dialog.ts +331 -0
- package/DS1/4-page/ds-grid.ts +74 -0
- package/DS1/4-page/ds-layout.ts +949 -0
- package/DS1/4-page/ds-panel.ts +38 -0
- package/DS1/4-page/email.ts +170 -0
- package/DS1/4-page/styles/ds-container.css +35 -0
- package/DS1/4-page/styles/ds-dialog.css +94 -0
- package/DS1/4-page/styles/ds-grid.css +95 -0
- package/DS1/4-page/styles/ds-layout.css +246 -0
- package/DS1/4-page/styles/ds-panel.css +31 -0
- package/DS1/components.ts +13 -0
- package/DS1/index.ts +86 -0
- package/DS1/react/accordion.ts +33 -0
- package/DS1/react/avatar-group.ts +11 -0
- package/DS1/react/avatar.ts +42 -0
- package/DS1/react/badge.ts +7 -0
- package/DS1/react/button.ts +63 -0
- package/DS1/react/choice.ts +64 -0
- package/DS1/react/composer.ts +18 -0
- package/DS1/react/context-menu.ts +167 -0
- package/DS1/react/dialog.ts +102 -0
- package/DS1/react/file-picker.ts +34 -0
- package/DS1/react/input.ts +184 -0
- package/DS1/react/menu.ts +28 -0
- package/DS1/react/split.ts +42 -0
- package/DS1/react/token-field.ts +32 -0
- package/DS1/vite-env.d.ts +13 -0
- package/DS1/x-icon/1x.svg +4 -0
- package/DS1/x-icon/1xdots.svg +11 -0
- package/DS1/x-icon/1xgrid.svg +8 -0
- package/DS1/x-icon/1xlines.svg +5 -0
- package/DS1/x-icon/2x.svg +4 -0
- package/DS1/x-icon/2xdots.svg +18 -0
- package/DS1/x-icon/2xgrid-alt-2.svg +9 -0
- package/DS1/x-icon/2xgrid-alt-3.svg +8 -0
- package/DS1/x-icon/2xgrid-alt.svg +15 -0
- package/DS1/x-icon/2xgrid.svg +6 -0
- package/DS1/x-icon/2xlines.svg +6 -0
- package/DS1/x-icon/4x4.svg +18 -0
- package/DS1/x-icon/app.svg +4 -0
- package/DS1/x-icon/apple.svg +3 -0
- package/DS1/x-icon/archive-alt.svg +4 -0
- package/DS1/x-icon/archive.svg +4 -0
- package/DS1/x-icon/arrange-archive.svg +1 -0
- package/DS1/x-icon/arrange-check.svg +1 -0
- package/DS1/x-icon/arrange-chevron.svg +1 -0
- package/DS1/x-icon/arrange-connect.svg +1 -0
- package/DS1/x-icon/arrange-draft.svg +1 -0
- package/DS1/x-icon/arrange-dropdown.svg +1 -0
- package/DS1/x-icon/arrange-home.svg +1 -0
- package/DS1/x-icon/arrange-link.svg +1 -0
- package/DS1/x-icon/arrange-menu.svg +1 -0
- package/DS1/x-icon/arrange-more.svg +1 -0
- package/DS1/x-icon/arrange-page.svg +1 -0
- package/DS1/x-icon/arrange-plus.svg +1 -0
- package/DS1/x-icon/arrange-site.svg +1 -0
- package/DS1/x-icon/avatar.svg +4 -0
- package/DS1/x-icon/badge-bands-3d.svg +1 -0
- package/DS1/x-icon/badge-bands.svg +1 -0
- package/DS1/x-icon/badge-blue-fan-3d.svg +1 -0
- package/DS1/x-icon/badge-blue-fan.svg +1 -0
- package/DS1/x-icon/badge-bricks-3d.svg +1 -0
- package/DS1/x-icon/badge-bricks.svg +1 -0
- package/DS1/x-icon/badge-broken-stripes-3d.svg +1 -0
- package/DS1/x-icon/badge-broken-stripes.svg +1 -0
- package/DS1/x-icon/badge-checker-3d.svg +1 -0
- package/DS1/x-icon/badge-checker.svg +1 -0
- package/DS1/x-icon/badge-diamond-3d.svg +1 -0
- package/DS1/x-icon/badge-diamond.svg +1 -0
- package/DS1/x-icon/badge-fan-3d.svg +1 -0
- package/DS1/x-icon/badge-fan-dark-3d.svg +1 -0
- package/DS1/x-icon/badge-fan-dark.svg +1 -0
- package/DS1/x-icon/badge-fan.svg +1 -0
- package/DS1/x-icon/badge-halves-3d.svg +1 -0
- package/DS1/x-icon/badge-halves-green-3d.svg +1 -0
- package/DS1/x-icon/badge-halves-green.svg +1 -0
- package/DS1/x-icon/badge-halves.svg +1 -0
- package/DS1/x-icon/badge-red-3d.svg +1 -0
- package/DS1/x-icon/badge-red-blue-bricks-3d.svg +1 -0
- package/DS1/x-icon/badge-red-blue-bricks.svg +1 -0
- package/DS1/x-icon/badge-red.svg +1 -0
- package/DS1/x-icon/badge-round-fan-3d.svg +1 -0
- package/DS1/x-icon/badge-round-fan.svg +1 -0
- package/DS1/x-icon/badge-shard-3d.svg +1 -0
- package/DS1/x-icon/badge-shard.svg +1 -0
- package/DS1/x-icon/badge-split-circle-3d.svg +1 -0
- package/DS1/x-icon/badge-split-circle.svg +1 -0
- package/DS1/x-icon/badge-tall-bricks-3d.svg +1 -0
- package/DS1/x-icon/badge-tall-bricks.svg +1 -0
- package/DS1/x-icon/badge-weave-3d.svg +1 -0
- package/DS1/x-icon/badge-weave.svg +1 -0
- package/DS1/x-icon/bag.svg +4 -0
- package/DS1/x-icon/block-accordion.svg +1 -0
- package/DS1/x-icon/block-banner.svg +1 -0
- package/DS1/x-icon/block-breadcrumbs.svg +1 -0
- package/DS1/x-icon/block-button.svg +1 -0
- package/DS1/x-icon/block-divider.svg +1 -0
- package/DS1/x-icon/block-forms.svg +1 -0
- package/DS1/x-icon/block-group.svg +1 -0
- package/DS1/x-icon/block-heading.svg +1 -0
- package/DS1/x-icon/block-image.svg +1 -0
- package/DS1/x-icon/block-logo-marquee.svg +1 -0
- package/DS1/x-icon/block-page-progress.svg +1 -0
- package/DS1/x-icon/block-section.svg +1 -0
- package/DS1/x-icon/block-table.svg +1 -0
- package/DS1/x-icon/block-tabs.svg +1 -0
- package/DS1/x-icon/block-text.svg +1 -0
- package/DS1/x-icon/bold.svg +3 -0
- package/DS1/x-icon/bullet.svg +5 -0
- package/DS1/x-icon/calendar.svg +6 -0
- package/DS1/x-icon/callout.svg +5 -0
- package/DS1/x-icon/camera.svg +5 -0
- package/DS1/x-icon/categories.svg +12 -0
- package/DS1/x-icon/check-alt.svg +3 -0
- package/DS1/x-icon/check.svg +3 -0
- package/DS1/x-icon/close.svg +3 -0
- package/DS1/x-icon/code-block.svg +4 -0
- package/DS1/x-icon/code.svg +3 -0
- package/DS1/x-icon/collapse.svg +3 -0
- package/DS1/x-icon/color.svg +4 -0
- package/DS1/x-icon/column.svg +3 -0
- package/DS1/x-icon/comment.svg +3 -0
- package/DS1/x-icon/compose.svg +4 -0
- package/DS1/x-icon/connect.svg +5 -0
- package/DS1/x-icon/content.svg +6 -0
- package/DS1/x-icon/default.svg +4 -0
- package/DS1/x-icon/delete.svg +5 -0
- package/DS1/x-icon/dictate.svg +6 -0
- package/DS1/x-icon/divider.svg +3 -0
- package/DS1/x-icon/down.svg +3 -0
- package/DS1/x-icon/duplicate.svg +8 -0
- package/DS1/x-icon/email.svg +3 -0
- package/DS1/x-icon/equation.svg +3 -0
- package/DS1/x-icon/exercise.svg +3 -0
- package/DS1/x-icon/expand.svg +3 -0
- package/DS1/x-icon/ezo-accordion-chevron.svg +11 -0
- package/DS1/x-icon/ezo-account-close.svg +1 -0
- package/DS1/x-icon/ezo-android-screen-archive.svg +4 -0
- package/DS1/x-icon/ezo-android-screen-calendar.svg +6 -0
- package/DS1/x-icon/ezo-android-screen-camera.svg +5 -0
- package/DS1/x-icon/ezo-android-screen-check.svg +3 -0
- package/DS1/x-icon/ezo-android-screen-compose.svg +4 -0
- package/DS1/x-icon/ezo-android-screen-globe.svg +1 -0
- package/DS1/x-icon/ezo-android-screen-lists.svg +3 -0
- package/DS1/x-icon/ezo-android-screen-shared.svg +5 -0
- package/DS1/x-icon/ezo-android-screen-stats.svg +3 -0
- package/DS1/x-icon/ezo-android-screen-store.svg +4 -0
- package/DS1/x-icon/ezo-android-screen-views.svg +4 -0
- package/DS1/x-icon/ezo-android-screen-work.svg +3 -0
- package/DS1/x-icon/ezo-arrow-cursor.svg +8 -0
- package/DS1/x-icon/ezo-block-accordion.svg +1 -0
- package/DS1/x-icon/ezo-block-divider.svg +1 -0
- package/DS1/x-icon/ezo-block-group.svg +1 -0
- package/DS1/x-icon/ezo-block-image.svg +1 -0
- package/DS1/x-icon/ezo-block-section.svg +1 -0
- package/DS1/x-icon/ezo-block-table.svg +1 -0
- package/DS1/x-icon/ezo-code.svg +14 -0
- package/DS1/x-icon/ezo-down.svg +3 -0
- package/DS1/x-icon/ezo-figma-premium-star.svg +5 -0
- package/DS1/x-icon/ezo-item-button-complete.svg +4 -0
- package/DS1/x-icon/ezo-item-button-header.svg +3 -0
- package/DS1/x-icon/ezo-item-button-open.svg +3 -0
- package/DS1/x-icon/ezo-item-button-reopen.svg +3 -0
- package/DS1/x-icon/ezo-item-button-star.svg +3 -0
- package/DS1/x-icon/ezo-item-button-start.svg +3 -0
- package/DS1/x-icon/ezo-item-button-unheader.svg +7 -0
- package/DS1/x-icon/ezo-item-button-unstar.svg +5 -0
- package/DS1/x-icon/ezo-item-star.svg +5 -0
- package/DS1/x-icon/ezo-left.svg +3 -0
- package/DS1/x-icon/ezo-logo.svg +1 -0
- package/DS1/x-icon/ezo-mic.svg +8 -0
- package/DS1/x-icon/ezo-move-column.svg +14 -0
- package/DS1/x-icon/ezo-move-row.svg +18 -0
- package/DS1/x-icon/ezo-navigation-check.svg +1 -0
- package/DS1/x-icon/ezo-note-back.svg +5 -0
- package/DS1/x-icon/ezo-note-menu-complete.svg +11 -0
- package/DS1/x-icon/ezo-note-menu-delete.svg +4 -0
- package/DS1/x-icon/ezo-note-menu-duplicate.svg +8 -0
- package/DS1/x-icon/ezo-note-menu-note.svg +5 -0
- package/DS1/x-icon/ezo-note-menu-page.svg +3 -0
- package/DS1/x-icon/ezo-note-menu-star.svg +5 -0
- package/DS1/x-icon/ezo-note-menu-start.svg +6 -0
- package/DS1/x-icon/ezo-note-menu-stop.svg +6 -0
- package/DS1/x-icon/ezo-note-more.svg +7 -0
- package/DS1/x-icon/ezo-note-star.svg +5 -0
- package/DS1/x-icon/ezo-password-visibility-see.svg +6 -0
- package/DS1/x-icon/ezo-password-visibility-unsee.svg +9 -0
- package/DS1/x-icon/ezo-pattern-call-to-action.svg +1 -0
- package/DS1/x-icon/ezo-play.svg +5 -0
- package/DS1/x-icon/ezo-premium-star.svg +5 -0
- package/DS1/x-icon/ezo-setting-1xdots.svg +13 -0
- package/DS1/x-icon/ezo-setting-1xgrid.svg +10 -0
- package/DS1/x-icon/ezo-setting-1xlines.svg +7 -0
- package/DS1/x-icon/ezo-setting-2xdots.svg +8 -0
- package/DS1/x-icon/ezo-setting-2xgrid.svg +8 -0
- package/DS1/x-icon/ezo-setting-2xlines.svg +6 -0
- package/DS1/x-icon/ezo-setting-blank.svg +5 -0
- package/DS1/x-icon/ezo-store-chevron.svg +1 -0
- package/DS1/x-icon/ezo-upgrade-close.svg +5 -0
- package/DS1/x-icon/folder.svg +3 -0
- package/DS1/x-icon/form.svg +5 -0
- package/DS1/x-icon/gallery.svg +3 -0
- package/DS1/x-icon/globe.svg +1 -0
- package/DS1/x-icon/google.svg +6 -0
- package/DS1/x-icon/group-alt-2.svg +3 -0
- package/DS1/x-icon/group-alt.svg +7 -0
- package/DS1/x-icon/group.svg +3 -0
- package/DS1/x-icon/h1.svg +3 -0
- package/DS1/x-icon/h2.svg +3 -0
- package/DS1/x-icon/h3.svg +3 -0
- package/DS1/x-icon/handle.svg +8 -0
- package/DS1/x-icon/head.svg +3 -0
- package/DS1/x-icon/help-alt.svg +3 -0
- package/DS1/x-icon/help.svg +5 -0
- package/DS1/x-icon/home.svg +3 -0
- package/DS1/x-icon/icon.svg +4 -0
- package/DS1/x-icon/image.svg +5 -0
- package/DS1/x-icon/in.svg +4 -0
- package/DS1/x-icon/indent.svg +4 -0
- package/DS1/x-icon/italic.svg +3 -0
- package/DS1/x-icon/item.svg +3 -0
- package/DS1/x-icon/left.svg +4 -0
- package/DS1/x-icon/life.svg +8 -0
- package/DS1/x-icon/link.svg +3 -0
- package/DS1/x-icon/list-line.svg +3 -0
- package/DS1/x-icon/lists.svg +3 -0
- package/DS1/x-icon/lock-filled.svg +3 -0
- package/DS1/x-icon/lock.svg +3 -0
- package/DS1/x-icon/logo-marquee.svg +5 -0
- package/DS1/x-icon/loop.svg +6 -0
- package/DS1/x-icon/mention.svg +4 -0
- package/DS1/x-icon/menu.svg +3 -0
- package/DS1/x-icon/mic.svg +5 -0
- package/DS1/x-icon/minimize-alt.svg +4 -0
- package/DS1/x-icon/minimize.svg +4 -0
- package/DS1/x-icon/money.svg +6 -0
- package/DS1/x-icon/more.svg +5 -0
- package/DS1/x-icon/navigation-check.svg +1 -0
- package/DS1/x-icon/note-alt-2.svg +6 -0
- package/DS1/x-icon/note-alt.svg +4 -0
- package/DS1/x-icon/note-lines.svg +6 -0
- package/DS1/x-icon/note.svg +4 -0
- package/DS1/x-icon/notifications.svg +3 -0
- package/DS1/x-icon/numbered.svg +4 -0
- package/DS1/x-icon/open-alt.svg +3 -0
- package/DS1/x-icon/open-source.svg +3 -0
- package/DS1/x-icon/open.svg +3 -0
- package/DS1/x-icon/outdent.svg +4 -0
- package/DS1/x-icon/pad.svg +8 -0
- package/DS1/x-icon/page-18.svg +3 -0
- package/DS1/x-icon/page-alt.svg +3 -0
- package/DS1/x-icon/page-note.svg +1 -0
- package/DS1/x-icon/page.svg +3 -0
- package/DS1/x-icon/panel.svg +4 -0
- package/DS1/x-icon/pattern-call-to-action.svg +1 -0
- package/DS1/x-icon/pattern-card.svg +1 -0
- package/DS1/x-icon/pattern-feature.svg +1 -0
- package/DS1/x-icon/pattern-hero.svg +1 -0
- package/DS1/x-icon/pen.svg +4 -0
- package/DS1/x-icon/play-alt.svg +3 -0
- package/DS1/x-icon/plus.svg +3 -0
- package/DS1/x-icon/product-sources.json +2557 -0
- package/DS1/x-icon/quote.svg +3 -0
- package/DS1/x-icon/redo.svg +3 -0
- package/DS1/x-icon/relationships.svg +3 -0
- package/DS1/x-icon/rewind-30-alt.svg +4 -0
- package/DS1/x-icon/rewind-30.svg +5 -0
- package/DS1/x-icon/rewind.svg +5 -0
- package/DS1/x-icon/right.svg +3 -0
- package/DS1/x-icon/row.svg +3 -0
- package/DS1/x-icon/school.svg +4 -0
- package/DS1/x-icon/sdown.svg +3 -0
- package/DS1/x-icon/search-30.svg +4 -0
- package/DS1/x-icon/search.svg +3 -0
- package/DS1/x-icon/see-30.svg +4 -0
- package/DS1/x-icon/see.svg +4 -0
- package/DS1/x-icon/settings.svg +8 -0
- package/DS1/x-icon/shared.svg +5 -0
- package/DS1/x-icon/slash.svg +3 -0
- package/DS1/x-icon/star-alt-2.svg +3 -0
- package/DS1/x-icon/star-alt.svg +3 -0
- package/DS1/x-icon/star.svg +3 -0
- package/DS1/x-icon/stats.svg +3 -0
- package/DS1/x-icon/status-alt.svg +11 -0
- package/DS1/x-icon/status-filled.svg +26 -0
- package/DS1/x-icon/status.svg +10 -0
- package/DS1/x-icon/store.svg +4 -0
- package/DS1/x-icon/strike.svg +3 -0
- package/DS1/x-icon/sup.svg +3 -0
- package/DS1/x-icon/table.svg +4 -0
- package/DS1/x-icon/template.svg +4 -0
- package/DS1/x-icon/templates.svg +4 -0
- package/DS1/x-icon/text.svg +3 -0
- package/DS1/x-icon/title.svg +3 -0
- package/DS1/x-icon/titlestyle.svg +11 -0
- package/DS1/x-icon/todo.svg +5 -0
- package/DS1/x-icon/toggle.svg +4 -0
- package/DS1/x-icon/triangle.svg +3 -0
- package/DS1/x-icon/underline.svg +3 -0
- package/DS1/x-icon/undo.svg +3 -0
- package/DS1/x-icon/ungroup.svg +4 -0
- package/DS1/x-icon/unhead.svg +7 -0
- package/DS1/x-icon/unicon.svg +6 -0
- package/DS1/x-icon/unlock.svg +3 -0
- package/DS1/x-icon/unmic.svg +6 -0
- package/DS1/x-icon/unsee.svg +5 -0
- package/DS1/x-icon/unstar.svg +5 -0
- package/DS1/x-icon/untitle.svg +7 -0
- package/DS1/x-icon/up-right.svg +3 -0
- package/DS1/x-icon/up.svg +3 -0
- package/DS1/x-icon/views.svg +4 -0
- package/DS1/x-icon/warning.svg +3 -0
- package/DS1/x-icon/work.svg +3 -0
- package/LICENSE +21 -0
- package/README.md +240 -2
- package/dist/0-face/control.d.ts +24 -0
- package/dist/0-face/control.d.ts.map +1 -0
- package/dist/0-face/control.js +117 -0
- package/dist/0-face/define.d.ts +3 -0
- package/dist/0-face/define.d.ts.map +1 -0
- package/dist/0-face/define.js +7 -0
- package/dist/0-face/device.d.ts +71 -0
- package/dist/0-face/device.d.ts.map +1 -0
- package/dist/0-face/device.js +318 -0
- package/dist/0-face/grid-fit.d.ts +3 -0
- package/dist/0-face/grid-fit.d.ts.map +1 -0
- package/dist/0-face/grid-fit.js +73 -0
- package/dist/0-face/grid.d.ts +3 -0
- package/dist/0-face/grid.d.ts.map +1 -0
- package/dist/0-face/grid.js +144 -0
- package/dist/0-face/i18n.d.ts +138 -0
- package/dist/0-face/i18n.d.ts.map +1 -0
- package/dist/0-face/i18n.js +725 -0
- package/dist/0-face/language-routing.d.ts +47 -0
- package/dist/0-face/language-routing.d.ts.map +1 -0
- package/dist/0-face/language-routing.js +91 -0
- package/dist/0-face/language-validator.d.ts +11 -0
- package/dist/0-face/language-validator.d.ts.map +1 -0
- package/dist/0-face/language-validator.js +31 -0
- package/dist/0-face/languages.d.ts +53 -0
- package/dist/0-face/languages.d.ts.map +1 -0
- package/dist/0-face/languages.js +192 -0
- package/dist/0-face/layout-inspector.d.ts +6 -0
- package/dist/0-face/layout-inspector.d.ts.map +1 -0
- package/dist/0-face/layout-inspector.js +197 -0
- package/dist/0-face/preferences.d.ts +20 -0
- package/dist/0-face/preferences.d.ts.map +1 -0
- package/dist/0-face/preferences.js +19 -0
- package/dist/0-face/pricing.d.ts +15 -0
- package/dist/0-face/pricing.d.ts.map +1 -0
- package/dist/0-face/pricing.js +46 -0
- package/dist/0-face/scaling.d.ts +10 -0
- package/dist/0-face/scaling.d.ts.map +1 -0
- package/dist/0-face/scaling.js +14 -0
- package/dist/0-face/shared-words.d.ts +14 -0
- package/dist/0-face/shared-words.d.ts.map +1 -0
- package/dist/0-face/shared-words.js +32 -0
- package/dist/0-face/theme.d.ts +4 -0
- package/dist/0-face/theme.d.ts.map +1 -0
- package/dist/0-face/theme.js +48 -0
- package/dist/0-face/tooltips.d.ts +8 -0
- package/dist/0-face/tooltips.d.ts.map +1 -0
- package/dist/0-face/tooltips.js +90 -0
- package/dist/0-face/translations/da.json +63 -0
- package/dist/0-face/translations/de.json +63 -0
- package/dist/0-face/translations/en.json +63 -0
- package/dist/0-face/translations/es.json +63 -0
- package/dist/0-face/translations/fi.json +63 -0
- package/dist/0-face/translations/fr.json +63 -0
- package/dist/0-face/translations/is.json +56 -0
- package/dist/0-face/translations/it.json +63 -0
- package/dist/0-face/translations/ja.json +63 -0
- package/dist/0-face/translations/ko.json +63 -0
- package/dist/0-face/translations/nb.json +63 -0
- package/dist/0-face/translations/pt-BR.json +63 -0
- package/dist/0-face/translations/pt.json +63 -0
- package/dist/0-face/translations/sv.json +63 -0
- package/dist/0-face/translations/zh.json +63 -0
- package/dist/0-face/translations-format.d.ts +62 -0
- package/dist/0-face/translations-format.d.ts.map +1 -0
- package/dist/0-face/translations-format.js +159 -0
- package/dist/1-root/palette.d.ts +31 -0
- package/dist/1-root/palette.d.ts.map +1 -0
- package/dist/1-root/palette.js +83 -0
- package/dist/2-core/ds-avatar.d.ts +82 -0
- package/dist/2-core/ds-avatar.d.ts.map +1 -0
- package/dist/2-core/ds-avatar.js +102 -0
- package/dist/2-core/ds-badge.d.ts +33 -0
- package/dist/2-core/ds-badge.d.ts.map +1 -0
- package/dist/2-core/ds-badge.js +77 -0
- package/dist/2-core/ds-banner.d.ts +68 -0
- package/dist/2-core/ds-banner.d.ts.map +1 -0
- package/dist/2-core/ds-banner.js +98 -0
- package/dist/2-core/ds-button.d.ts +102 -0
- package/dist/2-core/ds-button.d.ts.map +1 -0
- package/dist/2-core/ds-button.js +133 -0
- package/dist/2-core/ds-card.d.ts +39 -0
- package/dist/2-core/ds-card.d.ts.map +1 -0
- package/dist/2-core/ds-card.js +119 -0
- package/dist/2-core/ds-checkbox.d.ts +13 -0
- package/dist/2-core/ds-checkbox.d.ts.map +1 -0
- package/dist/2-core/ds-checkbox.js +11 -0
- package/dist/2-core/ds-color.d.ts +15 -0
- package/dist/2-core/ds-color.d.ts.map +1 -0
- package/dist/2-core/ds-color.js +30 -0
- package/dist/2-core/ds-composer.d.ts +69 -0
- package/dist/2-core/ds-composer.d.ts.map +1 -0
- package/dist/2-core/ds-composer.js +183 -0
- package/dist/2-core/ds-cycle.d.ts +85 -0
- package/dist/2-core/ds-cycle.d.ts.map +1 -0
- package/dist/2-core/ds-cycle.js +497 -0
- package/dist/2-core/ds-date.d.ts +16 -0
- package/dist/2-core/ds-date.d.ts.map +1 -0
- package/dist/2-core/ds-date.js +15 -0
- package/dist/2-core/ds-file-picker.d.ts +65 -0
- package/dist/2-core/ds-file-picker.d.ts.map +1 -0
- package/dist/2-core/ds-file-picker.js +80 -0
- package/dist/2-core/ds-gap.d.ts +27 -0
- package/dist/2-core/ds-gap.d.ts.map +1 -0
- package/dist/2-core/ds-gap.js +22 -0
- package/dist/2-core/ds-icon.d.ts +58 -0
- package/dist/2-core/ds-icon.d.ts.map +1 -0
- package/dist/2-core/ds-icon.js +128 -0
- package/dist/2-core/ds-input.d.ts +97 -0
- package/dist/2-core/ds-input.d.ts.map +1 -0
- package/dist/2-core/ds-input.js +429 -0
- package/dist/2-core/ds-language.d.ts +75 -0
- package/dist/2-core/ds-language.d.ts.map +1 -0
- package/dist/2-core/ds-language.js +74 -0
- package/dist/2-core/ds-pagedots.d.ts +32 -0
- package/dist/2-core/ds-pagedots.d.ts.map +1 -0
- package/dist/2-core/ds-pagedots.js +36 -0
- package/dist/2-core/ds-radio.d.ts +35 -0
- package/dist/2-core/ds-radio.d.ts.map +1 -0
- package/dist/2-core/ds-radio.js +19 -0
- package/dist/2-core/ds-select.d.ts +30 -0
- package/dist/2-core/ds-select.d.ts.map +1 -0
- package/dist/2-core/ds-select.js +45 -0
- package/dist/2-core/ds-split.d.ts +75 -0
- package/dist/2-core/ds-split.d.ts.map +1 -0
- package/dist/2-core/ds-split.js +101 -0
- package/dist/2-core/ds-swatch.d.ts +24 -0
- package/dist/2-core/ds-swatch.d.ts.map +1 -0
- package/dist/2-core/ds-swatch.js +16 -0
- package/dist/2-core/ds-switch.d.ts +13 -0
- package/dist/2-core/ds-switch.d.ts.map +1 -0
- package/dist/2-core/ds-switch.js +10 -0
- package/dist/2-core/ds-text.d.ts +75 -0
- package/dist/2-core/ds-text.d.ts.map +1 -0
- package/dist/2-core/ds-text.js +142 -0
- package/dist/2-core/ds-textarea.d.ts +46 -0
- package/dist/2-core/ds-textarea.d.ts.map +1 -0
- package/dist/2-core/ds-textarea.js +121 -0
- package/dist/2-core/ds-token.d.ts +48 -0
- package/dist/2-core/ds-token.d.ts.map +1 -0
- package/dist/2-core/ds-token.js +44 -0
- package/dist/2-core/ds-tooltip.d.ts +48 -0
- package/dist/2-core/ds-tooltip.d.ts.map +1 -0
- package/dist/2-core/ds-tooltip.js +99 -0
- package/dist/2-core/generated/ds-icon-map.d.ts +295 -0
- package/dist/2-core/generated/ds-icon-map.d.ts.map +1 -0
- package/dist/2-core/generated/ds-icon-map.js +579 -0
- package/dist/2-core/generated/icons-extra.d.ts +2 -0
- package/dist/2-core/generated/icons-extra.d.ts.map +1 -0
- package/dist/2-core/generated/icons-extra.js +243 -0
- package/dist/2-core/generated/icons-immediate.d.ts +3 -0
- package/dist/2-core/generated/icons-immediate.d.ts.map +1 -0
- package/dist/2-core/generated/icons-immediate.js +49 -0
- package/dist/3-unit/context-trigger.d.ts +22 -0
- package/dist/3-unit/context-trigger.d.ts.map +1 -0
- package/dist/3-unit/context-trigger.js +130 -0
- package/dist/3-unit/ds-accordion.d.ts +55 -0
- package/dist/3-unit/ds-accordion.d.ts.map +1 -0
- package/dist/3-unit/ds-accordion.js +105 -0
- package/dist/3-unit/ds-avatar-group.d.ts +40 -0
- package/dist/3-unit/ds-avatar-group.d.ts.map +1 -0
- package/dist/3-unit/ds-avatar-group.js +84 -0
- package/dist/3-unit/ds-form.d.ts +70 -0
- package/dist/3-unit/ds-form.d.ts.map +1 -0
- package/dist/3-unit/ds-form.js +232 -0
- package/dist/3-unit/ds-list.d.ts +25 -0
- package/dist/3-unit/ds-list.d.ts.map +1 -0
- package/dist/3-unit/ds-list.js +25 -0
- package/dist/3-unit/ds-menu.d.ts +162 -0
- package/dist/3-unit/ds-menu.d.ts.map +1 -0
- package/dist/3-unit/ds-menu.js +607 -0
- package/dist/3-unit/ds-row.d.ts +43 -0
- package/dist/3-unit/ds-row.d.ts.map +1 -0
- package/dist/3-unit/ds-row.js +32 -0
- package/dist/3-unit/ds-table.d.ts +33 -0
- package/dist/3-unit/ds-table.d.ts.map +1 -0
- package/dist/3-unit/ds-table.js +43 -0
- package/dist/3-unit/ds-tabs.d.ts +50 -0
- package/dist/3-unit/ds-tabs.d.ts.map +1 -0
- package/dist/3-unit/ds-tabs.js +64 -0
- package/dist/3-unit/ds-token-field.d.ts +64 -0
- package/dist/3-unit/ds-token-field.d.ts.map +1 -0
- package/dist/3-unit/ds-token-field.js +184 -0
- package/dist/4-page/ds-container.d.ts +17 -0
- package/dist/4-page/ds-container.d.ts.map +1 -0
- package/dist/4-page/ds-container.js +11 -0
- package/dist/4-page/ds-dialog.d.ts +105 -0
- package/dist/4-page/ds-dialog.d.ts.map +1 -0
- package/dist/4-page/ds-dialog.js +358 -0
- package/dist/4-page/ds-grid.d.ts +28 -0
- package/dist/4-page/ds-grid.d.ts.map +1 -0
- package/dist/4-page/ds-grid.js +49 -0
- package/dist/4-page/ds-layout.d.ts +31 -0
- package/dist/4-page/ds-layout.d.ts.map +1 -0
- package/dist/4-page/ds-layout.js +930 -0
- package/dist/4-page/ds-panel.d.ts +26 -0
- package/dist/4-page/ds-panel.d.ts.map +1 -0
- package/dist/4-page/ds-panel.js +29 -0
- package/dist/4-page/email.d.ts +49 -0
- package/dist/4-page/email.d.ts.map +1 -0
- package/dist/4-page/email.js +134 -0
- package/dist/components.d.ts +14 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +13 -0
- package/dist/design-system-1.bundle.js +9115 -0
- package/dist/design-system-1.bundle.js.map +1 -0
- package/dist/design-system-1.bundle.min.js +6879 -0
- package/dist/design-system-1.bundle.min.js.map +1 -0
- package/dist/design-system-1.css +2 -0
- package/dist/icons-extra-BoAACA4X.js +944 -0
- package/dist/icons-extra-BoAACA4X.js.map +1 -0
- package/dist/icons-extra-DlxTo_Y4.js +247 -0
- package/dist/icons-extra-DlxTo_Y4.js.map +1 -0
- package/dist/index.d.ts +57 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/react/accordion.d.ts +21 -0
- package/dist/react/accordion.d.ts.map +1 -0
- package/dist/react/accordion.js +30 -0
- package/dist/react/avatar-group.d.ts +6 -0
- package/dist/react/avatar-group.d.ts.map +1 -0
- package/dist/react/avatar-group.js +5 -0
- package/dist/react/avatar.d.ts +13 -0
- package/dist/react/avatar.d.ts.map +1 -0
- package/dist/react/avatar.js +18 -0
- package/dist/react/badge.d.ts +11 -0
- package/dist/react/badge.d.ts.map +1 -0
- package/dist/react/badge.js +4 -0
- package/dist/react/button.d.ts +13 -0
- package/dist/react/button.d.ts.map +1 -0
- package/dist/react/button.js +37 -0
- package/dist/react/choice.d.ts +43 -0
- package/dist/react/choice.d.ts.map +1 -0
- package/dist/react/choice.js +32 -0
- package/dist/react/composer.d.ts +17 -0
- package/dist/react/composer.d.ts.map +1 -0
- package/dist/react/composer.js +8 -0
- package/dist/react/context-menu.d.ts +657 -0
- package/dist/react/context-menu.d.ts.map +1 -0
- package/dist/react/context-menu.js +133 -0
- package/dist/react/dialog.d.ts +1173 -0
- package/dist/react/dialog.d.ts.map +1 -0
- package/dist/react/dialog.js +79 -0
- package/dist/react/file-picker.d.ts +29 -0
- package/dist/react/file-picker.d.ts.map +1 -0
- package/dist/react/file-picker.js +17 -0
- package/dist/react/input.d.ts +35 -0
- package/dist/react/input.d.ts.map +1 -0
- package/dist/react/input.js +128 -0
- package/dist/react/menu.d.ts +37 -0
- package/dist/react/menu.d.ts.map +1 -0
- package/dist/react/menu.js +31 -0
- package/dist/react/split.d.ts +15 -0
- package/dist/react/split.d.ts.map +1 -0
- package/dist/react/split.js +32 -0
- package/dist/react/token-field.d.ts +36 -0
- package/dist/react/token-field.d.ts.map +1 -0
- package/dist/react/token-field.js +33 -0
- package/dist/shared-words-Cg6Phtx0.js +915 -0
- package/dist/shared-words-Cg6Phtx0.js.map +1 -0
- package/dist/shared-words-Ddz0yUEF.js +933 -0
- package/dist/shared-words-Ddz0yUEF.js.map +1 -0
- package/package.json +149 -3
|
@@ -0,0 +1,497 @@
|
|
|
1
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
2
|
+
import { define } from "../0-face/define";
|
|
3
|
+
import { translate, currentLanguage, getAvailableLanguagesSync, getLanguageDisplayName, setLanguage, } from "../0-face/i18n";
|
|
4
|
+
import { currentTheme, setTheme } from "../0-face/theme";
|
|
5
|
+
import { savePreferences } from "../0-face/preferences";
|
|
6
|
+
import "./ds-button";
|
|
7
|
+
import "./ds-icon";
|
|
8
|
+
import "./ds-text";
|
|
9
|
+
import styles from "./styles/ds-cycle.css?inline";
|
|
10
|
+
// Accent color utilities
|
|
11
|
+
const saveAccentColor = (color) => {
|
|
12
|
+
localStorage.setItem("accentColor", color);
|
|
13
|
+
};
|
|
14
|
+
const getAccentColor = () => {
|
|
15
|
+
return localStorage.getItem("accentColor") || "--sharp-blue"; // Default color if none set
|
|
16
|
+
};
|
|
17
|
+
const applyAccentColor = () => {
|
|
18
|
+
const color = getAccentColor();
|
|
19
|
+
document.documentElement.style.setProperty("--accent-color", `var(${color})`);
|
|
20
|
+
};
|
|
21
|
+
// Notes style medium utilities
|
|
22
|
+
const saveNotesStyleMedium = (style) => {
|
|
23
|
+
localStorage.setItem("notesStyleMedium", style);
|
|
24
|
+
};
|
|
25
|
+
const getNotesStyleMedium = () => {
|
|
26
|
+
return localStorage.getItem("notesStyleMedium") || "note"; // Default to note
|
|
27
|
+
};
|
|
28
|
+
// Note behavior utilities
|
|
29
|
+
const savePageStyle = (style) => {
|
|
30
|
+
localStorage.setItem("pageStyle", style);
|
|
31
|
+
};
|
|
32
|
+
const getPageStyle = () => {
|
|
33
|
+
return localStorage.getItem("pageStyle") || "note"; // Default to note
|
|
34
|
+
};
|
|
35
|
+
// App width utilities removed
|
|
36
|
+
// Use a regular class with proper TypeScript type declarations and JSDoc comments
|
|
37
|
+
export class Cycle extends LitElement {
|
|
38
|
+
// Define reactive properties using Lit's property system
|
|
39
|
+
static get properties() {
|
|
40
|
+
return {
|
|
41
|
+
type: { type: String },
|
|
42
|
+
values: { type: Array },
|
|
43
|
+
currentValue: { type: String, state: true }, // Make this a private state property
|
|
44
|
+
translationsReady: { type: Boolean, state: true }, // Track if translations are loaded
|
|
45
|
+
disabled: { type: Boolean, reflect: true },
|
|
46
|
+
_fieldsetDisabled: { state: true },
|
|
47
|
+
variant: { type: String },
|
|
48
|
+
// The same two words a button takes: `primary` is a chip in the accent,
|
|
49
|
+
// `secondary` a grey one. Neither given, the type decides (below), and
|
|
50
|
+
// the choice is written back onto the host so a page sheet can read it.
|
|
51
|
+
primary: { type: Boolean, reflect: true },
|
|
52
|
+
secondary: { type: Boolean, reflect: true },
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
constructor() {
|
|
56
|
+
super();
|
|
57
|
+
if (typeof this.attachInternals === "function")
|
|
58
|
+
this.attachInternals();
|
|
59
|
+
this._fieldsetDisabled = false;
|
|
60
|
+
this.variant = "";
|
|
61
|
+
// Initialize properties with default values
|
|
62
|
+
this.type = "";
|
|
63
|
+
this.values = [];
|
|
64
|
+
this.currentValue = "";
|
|
65
|
+
this.translationsReady = false;
|
|
66
|
+
this.disabled = false;
|
|
67
|
+
this.primary = false;
|
|
68
|
+
this.secondary = false;
|
|
69
|
+
// Bind event handlers to this instance for proper cleanup
|
|
70
|
+
this.boundHandlers = {
|
|
71
|
+
translationsLoaded: this.handleTranslationsLoaded.bind(this),
|
|
72
|
+
languageChanged: this.handleLanguageChanged.bind(this),
|
|
73
|
+
handleLanguageChanged: this.handleLanguageChanged.bind(this),
|
|
74
|
+
handleThemeChanged: this.handleThemeChanged.bind(this),
|
|
75
|
+
handleAccentColorChanged: this.handleAccentColorChanged.bind(this),
|
|
76
|
+
handleNoteBehaviorChanged: this.handleNoteBehaviorChanged.bind(this),
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
formDisabledCallback(disabled) { this._fieldsetDisabled = disabled; }
|
|
80
|
+
focus(options) { this.shadowRoot?.querySelector("ds-button, button")?.focus(options); }
|
|
81
|
+
connectedCallback() {
|
|
82
|
+
super.connectedCallback();
|
|
83
|
+
// Add event listeners
|
|
84
|
+
window.addEventListener("translations-loaded", this.boundHandlers.translationsLoaded);
|
|
85
|
+
window.addEventListener("language-changed", this.boundHandlers.languageChanged);
|
|
86
|
+
window.addEventListener("theme-changed", this.boundHandlers.handleThemeChanged);
|
|
87
|
+
window.addEventListener("accent-color-changed", this.boundHandlers.handleAccentColorChanged);
|
|
88
|
+
window.addEventListener("page-style-changed", this.boundHandlers.handleNoteBehaviorChanged);
|
|
89
|
+
// Initialize the component
|
|
90
|
+
this.initializeValues();
|
|
91
|
+
}
|
|
92
|
+
async initializeValues() {
|
|
93
|
+
if (this.type === "language") {
|
|
94
|
+
// Dynamically get available languages from translation data
|
|
95
|
+
const availableLanguages = getAvailableLanguagesSync();
|
|
96
|
+
this.values = availableLanguages;
|
|
97
|
+
this.currentValue = currentLanguage.value;
|
|
98
|
+
}
|
|
99
|
+
else if (this.type === "theme") {
|
|
100
|
+
// Set up theme cycling
|
|
101
|
+
this.values = ["light", "dark"];
|
|
102
|
+
// Set initial value based on current theme
|
|
103
|
+
const currentThemeValue = currentTheme.get();
|
|
104
|
+
this.currentValue = currentThemeValue;
|
|
105
|
+
}
|
|
106
|
+
else if (this.type === "accent-color") {
|
|
107
|
+
// Set up accent color cycling
|
|
108
|
+
this.values = [
|
|
109
|
+
"--apple-green",
|
|
110
|
+
"--every-green",
|
|
111
|
+
"--zenith-blue",
|
|
112
|
+
"--sharp-blue",
|
|
113
|
+
"--pink",
|
|
114
|
+
"--tuned-red",
|
|
115
|
+
"--orange",
|
|
116
|
+
"--yellow",
|
|
117
|
+
];
|
|
118
|
+
// Set initial value based on current accent color
|
|
119
|
+
const currentAccentColor = getAccentColor();
|
|
120
|
+
this.currentValue = currentAccentColor;
|
|
121
|
+
// Apply the accent color to ensure it's active
|
|
122
|
+
applyAccentColor();
|
|
123
|
+
}
|
|
124
|
+
else if (this.type === "notes-style-medium") {
|
|
125
|
+
// Set up notes style medium cycling
|
|
126
|
+
this.values = ["default", "big", "gallery"];
|
|
127
|
+
// Set initial value based on current notes style medium
|
|
128
|
+
const currentNotesStyle = getNotesStyleMedium();
|
|
129
|
+
this.currentValue = currentNotesStyle;
|
|
130
|
+
// Check if this should be disabled based on note behavior
|
|
131
|
+
const currentPageStyle = getPageStyle();
|
|
132
|
+
this.disabled = currentPageStyle === "note";
|
|
133
|
+
}
|
|
134
|
+
else if (this.type === "page-style") {
|
|
135
|
+
// Set up page style cycling
|
|
136
|
+
this.values = ["note", "page"];
|
|
137
|
+
// Set initial value based on current page style
|
|
138
|
+
const currentPageStyle = getPageStyle();
|
|
139
|
+
this.currentValue = currentPageStyle;
|
|
140
|
+
}
|
|
141
|
+
else if (this.type === "icon-only") {
|
|
142
|
+
// Set up icon-only cycling (no label)
|
|
143
|
+
this.values = ["note", "page"];
|
|
144
|
+
// Set initial value
|
|
145
|
+
this.currentValue = this.values[0];
|
|
146
|
+
}
|
|
147
|
+
// Request update to re-render with new values
|
|
148
|
+
this.requestUpdate();
|
|
149
|
+
}
|
|
150
|
+
attributeChangedCallback(name, oldValue, newValue) {
|
|
151
|
+
super.attributeChangedCallback(name, oldValue, newValue);
|
|
152
|
+
if (name === "type" && oldValue !== newValue) {
|
|
153
|
+
// Type changed, reinitialize values
|
|
154
|
+
this.initializeValues();
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
async setupInitialValue() {
|
|
158
|
+
if (this.type === "language") {
|
|
159
|
+
// Get current language
|
|
160
|
+
const currentLang = currentLanguage.value;
|
|
161
|
+
this.currentValue = currentLang;
|
|
162
|
+
}
|
|
163
|
+
else if (this.type === "theme") {
|
|
164
|
+
// Get current theme
|
|
165
|
+
const currentThemeValue = currentTheme.get();
|
|
166
|
+
this.currentValue = currentThemeValue;
|
|
167
|
+
}
|
|
168
|
+
else if (this.type === "accent-color") {
|
|
169
|
+
// Get current accent color
|
|
170
|
+
const currentAccentColor = getAccentColor();
|
|
171
|
+
this.currentValue = currentAccentColor;
|
|
172
|
+
// Apply the accent color to ensure it's active
|
|
173
|
+
applyAccentColor();
|
|
174
|
+
}
|
|
175
|
+
else if (this.type === "notes-style-medium") {
|
|
176
|
+
// Get current notes style medium
|
|
177
|
+
const currentNotesStyle = getNotesStyleMedium();
|
|
178
|
+
this.currentValue = currentNotesStyle;
|
|
179
|
+
// Check if this should be disabled based on note behavior
|
|
180
|
+
const currentPageStyle = getPageStyle();
|
|
181
|
+
this.disabled = currentPageStyle === "note";
|
|
182
|
+
}
|
|
183
|
+
else if (this.type === "page-style") {
|
|
184
|
+
// Get current page style
|
|
185
|
+
const currentPageStyle = getPageStyle();
|
|
186
|
+
this.currentValue = currentPageStyle;
|
|
187
|
+
}
|
|
188
|
+
else if (this.type === "icon-only") {
|
|
189
|
+
// Get current page style for icon-only
|
|
190
|
+
const currentPageStyle = getPageStyle();
|
|
191
|
+
this.currentValue = currentPageStyle;
|
|
192
|
+
}
|
|
193
|
+
this.requestUpdate();
|
|
194
|
+
}
|
|
195
|
+
handleSettingsChanges() {
|
|
196
|
+
// Handle any settings changes that might affect this component
|
|
197
|
+
this.setupInitialValue();
|
|
198
|
+
}
|
|
199
|
+
disconnectedCallback() {
|
|
200
|
+
super.disconnectedCallback();
|
|
201
|
+
// Remove event listeners
|
|
202
|
+
window.removeEventListener("translations-loaded", this.boundHandlers.translationsLoaded);
|
|
203
|
+
window.removeEventListener("language-changed", this.boundHandlers.languageChanged);
|
|
204
|
+
window.removeEventListener("theme-changed", this.boundHandlers.handleThemeChanged);
|
|
205
|
+
window.removeEventListener("accent-color-changed", this.boundHandlers.handleAccentColorChanged);
|
|
206
|
+
window.removeEventListener("page-style-changed", this.boundHandlers.handleNoteBehaviorChanged);
|
|
207
|
+
}
|
|
208
|
+
handleButtonClick(e) {
|
|
209
|
+
e.preventDefault();
|
|
210
|
+
e.stopPropagation();
|
|
211
|
+
// Don't handle clicks if disabled
|
|
212
|
+
if (this.disabled || this._fieldsetDisabled || !this.values.length || this.values.every(value => value === this.currentValue)) {
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
if (this.type === "language") {
|
|
216
|
+
// Cycle through available languages
|
|
217
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
218
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
219
|
+
const newLanguage = this.values[nextIndex];
|
|
220
|
+
// Update current value
|
|
221
|
+
this.currentValue = newLanguage;
|
|
222
|
+
// Set the new language with view transition like Portfolio
|
|
223
|
+
if (document.startViewTransition) {
|
|
224
|
+
document.startViewTransition(() => {
|
|
225
|
+
setLanguage(newLanguage);
|
|
226
|
+
});
|
|
227
|
+
}
|
|
228
|
+
else {
|
|
229
|
+
setLanguage(newLanguage);
|
|
230
|
+
}
|
|
231
|
+
// Save preferences
|
|
232
|
+
savePreferences({ language: newLanguage });
|
|
233
|
+
}
|
|
234
|
+
else if (this.type === "theme") {
|
|
235
|
+
// Cycle through themes
|
|
236
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
237
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
238
|
+
const newTheme = this.values[nextIndex];
|
|
239
|
+
// Update current value
|
|
240
|
+
this.currentValue = newTheme;
|
|
241
|
+
// Set the new theme using the shared helper
|
|
242
|
+
setTheme(newTheme);
|
|
243
|
+
// Save preferences
|
|
244
|
+
savePreferences({ theme: newTheme });
|
|
245
|
+
// Theme helper already emits the change event, so no manual dispatch here
|
|
246
|
+
}
|
|
247
|
+
else if (this.type === "accent-color") {
|
|
248
|
+
// Cycle through accent colors
|
|
249
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
250
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
251
|
+
const newColor = this.values[nextIndex];
|
|
252
|
+
// Update current value
|
|
253
|
+
this.currentValue = newColor;
|
|
254
|
+
// Save the new accent color
|
|
255
|
+
saveAccentColor(newColor);
|
|
256
|
+
// Apply the new accent color
|
|
257
|
+
applyAccentColor();
|
|
258
|
+
// Save preferences
|
|
259
|
+
savePreferences({ accentColor: newColor });
|
|
260
|
+
// Dispatch accent color change event
|
|
261
|
+
window.dispatchEvent(new CustomEvent("accent-color-changed", {
|
|
262
|
+
detail: { color: newColor },
|
|
263
|
+
}));
|
|
264
|
+
}
|
|
265
|
+
else if (this.type === "notes-style-medium") {
|
|
266
|
+
// Cycle through notes style medium options
|
|
267
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
268
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
269
|
+
const newStyle = this.values[nextIndex];
|
|
270
|
+
// Update current value
|
|
271
|
+
this.currentValue = newStyle;
|
|
272
|
+
// Save the new notes style medium
|
|
273
|
+
saveNotesStyleMedium(newStyle);
|
|
274
|
+
// Save preferences
|
|
275
|
+
savePreferences({ notesStyleMedium: newStyle });
|
|
276
|
+
// Dispatch notes style medium change event
|
|
277
|
+
window.dispatchEvent(new CustomEvent("notes-style-medium-changed", {
|
|
278
|
+
detail: { style: newStyle },
|
|
279
|
+
}));
|
|
280
|
+
}
|
|
281
|
+
else if (this.type === "page-style") {
|
|
282
|
+
// Cycle through note behavior options
|
|
283
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
284
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
285
|
+
const newBehavior = this.values[nextIndex];
|
|
286
|
+
// Update current value
|
|
287
|
+
this.currentValue = newBehavior;
|
|
288
|
+
// Save the new note behavior
|
|
289
|
+
savePageStyle(newBehavior);
|
|
290
|
+
// Save preferences
|
|
291
|
+
savePreferences({ pageStyle: newBehavior });
|
|
292
|
+
// Dispatch note behavior change event
|
|
293
|
+
window.dispatchEvent(new CustomEvent("page-style-changed", {
|
|
294
|
+
detail: { behavior: newBehavior },
|
|
295
|
+
}));
|
|
296
|
+
}
|
|
297
|
+
else if (this.type === "icon-only") {
|
|
298
|
+
// Cycle through icon-only options (note/page)
|
|
299
|
+
const currentIndex = this.values.indexOf(this.currentValue);
|
|
300
|
+
const nextIndex = (currentIndex + 1) % this.values.length;
|
|
301
|
+
const newIconOnlyValue = this.values[nextIndex];
|
|
302
|
+
// Update current value
|
|
303
|
+
this.currentValue = newIconOnlyValue;
|
|
304
|
+
// Save the new page style
|
|
305
|
+
savePageStyle(newIconOnlyValue);
|
|
306
|
+
// Save preferences
|
|
307
|
+
savePreferences({ pageStyle: newIconOnlyValue });
|
|
308
|
+
// Dispatch page style change event
|
|
309
|
+
window.dispatchEvent(new CustomEvent("page-style-changed", {
|
|
310
|
+
detail: { behavior: newIconOnlyValue },
|
|
311
|
+
}));
|
|
312
|
+
}
|
|
313
|
+
// Request update to re-render
|
|
314
|
+
this.requestUpdate();
|
|
315
|
+
}
|
|
316
|
+
getValueDisplay(value) {
|
|
317
|
+
if (this.type === "language") {
|
|
318
|
+
return getLanguageDisplayName(value, {
|
|
319
|
+
locale: currentLanguage.value,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
else if (this.type === "theme") {
|
|
323
|
+
// Try to get translated theme name
|
|
324
|
+
if (this.translationsReady) {
|
|
325
|
+
const translatedName = translate(value);
|
|
326
|
+
if (translatedName && translatedName !== value) {
|
|
327
|
+
return translatedName;
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
// Fall back to the theme value itself
|
|
331
|
+
return value;
|
|
332
|
+
}
|
|
333
|
+
else if (this.type === "accent-color") {
|
|
334
|
+
// Get color name from CSS variable
|
|
335
|
+
return this.getColorName(value);
|
|
336
|
+
}
|
|
337
|
+
else if (this.type === "notes-style-medium") {
|
|
338
|
+
// Return SVG icon for notes style medium
|
|
339
|
+
return this.getNotesStyleIcon(value);
|
|
340
|
+
}
|
|
341
|
+
else if (this.type === "page-style") {
|
|
342
|
+
// Return translated text for note behavior
|
|
343
|
+
if (this.translationsReady) {
|
|
344
|
+
const translatedText = translate(value === "note" ? "Note" : "Page");
|
|
345
|
+
if (translatedText &&
|
|
346
|
+
translatedText !== (value === "note" ? "Note" : "Page")) {
|
|
347
|
+
return translatedText;
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
return value;
|
|
351
|
+
}
|
|
352
|
+
else if (this.type === "icon-only") {
|
|
353
|
+
// Return SVG icon for icon-only type (note/page icons)
|
|
354
|
+
if (value === "note") {
|
|
355
|
+
return html `<ds-icon type="note"></ds-icon>`;
|
|
356
|
+
}
|
|
357
|
+
else if (value === "page") {
|
|
358
|
+
return html `<ds-icon type="page"></ds-icon>`;
|
|
359
|
+
}
|
|
360
|
+
return html `<span>${value}</span>`;
|
|
361
|
+
}
|
|
362
|
+
return value;
|
|
363
|
+
}
|
|
364
|
+
getColorKey(colorVar) {
|
|
365
|
+
// Map CSS variables to translation text keys
|
|
366
|
+
const colorMap = {
|
|
367
|
+
"--tuned-red": "Red",
|
|
368
|
+
"--orange": "Orange",
|
|
369
|
+
"--yellow": "Yellow",
|
|
370
|
+
"--apple-green": "Apple green",
|
|
371
|
+
"--every-green": "Green",
|
|
372
|
+
"--zenith-blue": "Light blue",
|
|
373
|
+
"--sharp-blue": "Blue",
|
|
374
|
+
"--pink": "Pink",
|
|
375
|
+
};
|
|
376
|
+
return colorMap[colorVar] || colorVar.replace("--", "").replace("-", " ");
|
|
377
|
+
}
|
|
378
|
+
getColorName(colorVar) {
|
|
379
|
+
// Map CSS variables to translation text keys
|
|
380
|
+
const colorMap = {
|
|
381
|
+
"--tuned-red": "Red",
|
|
382
|
+
"--orange": "Orange",
|
|
383
|
+
"--yellow": "Yellow",
|
|
384
|
+
"--apple-green": "Apple green",
|
|
385
|
+
"--every-green": "Green",
|
|
386
|
+
"--zenith-blue": "Light blue",
|
|
387
|
+
"--sharp-blue": "Blue",
|
|
388
|
+
"--pink": "Pink",
|
|
389
|
+
};
|
|
390
|
+
const translationText = colorMap[colorVar];
|
|
391
|
+
if (translationText && this.translationsReady) {
|
|
392
|
+
const translatedName = translate(translationText);
|
|
393
|
+
if (translatedName && translatedName !== translationText) {
|
|
394
|
+
return translatedName;
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
// Fallback to simple name conversion
|
|
398
|
+
return colorVar.replace("--", "").replace("-", " ");
|
|
399
|
+
}
|
|
400
|
+
getNotesStyleIcon(style) {
|
|
401
|
+
if (style === "page") {
|
|
402
|
+
return html `<ds-icon type="page"></ds-icon>`;
|
|
403
|
+
}
|
|
404
|
+
else if (style === "note") {
|
|
405
|
+
return html `<ds-icon type="note"></ds-icon>`;
|
|
406
|
+
}
|
|
407
|
+
else if (style === "default") {
|
|
408
|
+
return html `<ds-icon type="default"></ds-icon>`;
|
|
409
|
+
}
|
|
410
|
+
else if (style === "big") {
|
|
411
|
+
return html `<ds-icon type="big"></ds-icon>`;
|
|
412
|
+
}
|
|
413
|
+
else if (style === "gallery") {
|
|
414
|
+
return html `<ds-icon type="gallery"></ds-icon>`;
|
|
415
|
+
}
|
|
416
|
+
return html `<span>${style}</span>`;
|
|
417
|
+
}
|
|
418
|
+
/**
|
|
419
|
+
* A cycle without a stated look takes the one its type has always had: the
|
|
420
|
+
* language and theme cycles are grey chips, every other one, the accent
|
|
421
|
+
* colour's included, is in the accent. Written onto the host before the
|
|
422
|
+
* first paint, so the inner button and any page sheet see the same word.
|
|
423
|
+
*/
|
|
424
|
+
willUpdate(changed) {
|
|
425
|
+
if (changed.has("variant") && this.variant) {
|
|
426
|
+
this.primary = this.variant === "primary";
|
|
427
|
+
this.secondary = this.variant === "secondary";
|
|
428
|
+
}
|
|
429
|
+
if ((!this.hasUpdated || changed.has("type")) && !this.primary && !this.secondary) {
|
|
430
|
+
if (this.type === "language" || this.type === "theme")
|
|
431
|
+
this.secondary = true;
|
|
432
|
+
else
|
|
433
|
+
this.primary = true;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
render() {
|
|
437
|
+
return html `
|
|
438
|
+
<div class="cycle">
|
|
439
|
+
<ds-button fit
|
|
440
|
+
?primary=${this.primary && !this.secondary}
|
|
441
|
+
?secondary=${this.secondary}
|
|
442
|
+
?disabled=${this.disabled || this._fieldsetDisabled}
|
|
443
|
+
@click=${this.handleButtonClick}
|
|
444
|
+
>
|
|
445
|
+
${this.type === "notes-style-medium" || this.type === "icon-only"
|
|
446
|
+
? html `<span
|
|
447
|
+
style="display: inline-flex; align-items: center; gap: var(--025)"
|
|
448
|
+
>${this.getValueDisplay(this.currentValue)}</span
|
|
449
|
+
>`
|
|
450
|
+
: this.type === "language"
|
|
451
|
+
? html `<ds-text
|
|
452
|
+
literal text=${this.getValueDisplay(this.currentValue)}
|
|
453
|
+
></ds-text>`
|
|
454
|
+
: this.type === "theme"
|
|
455
|
+
? html `<ds-text
|
|
456
|
+
text=${this.currentValue === "light" ? "Light" : "Dark"}
|
|
457
|
+
></ds-text>`
|
|
458
|
+
: this.type === "accent-color"
|
|
459
|
+
? html `<ds-text
|
|
460
|
+
text=${this.getColorKey(this.currentValue)}
|
|
461
|
+
></ds-text>`
|
|
462
|
+
: this.type === "page-style"
|
|
463
|
+
? html `<ds-text
|
|
464
|
+
text=${this.currentValue === "note" ? "Note" : "Page"}
|
|
465
|
+
></ds-text>`
|
|
466
|
+
: html `<ds-text
|
|
467
|
+
literal text=${this.getValueDisplay(this.currentValue)}
|
|
468
|
+
></ds-text>`}
|
|
469
|
+
</ds-button>
|
|
470
|
+
</div>
|
|
471
|
+
`;
|
|
472
|
+
}
|
|
473
|
+
handleTranslationsLoaded() {
|
|
474
|
+
this.translationsReady = true;
|
|
475
|
+
// Refresh language values if this is a language cycle
|
|
476
|
+
if (this.type === "language") {
|
|
477
|
+
const availableLanguages = getAvailableLanguagesSync();
|
|
478
|
+
this.values = availableLanguages;
|
|
479
|
+
}
|
|
480
|
+
this.setupInitialValue();
|
|
481
|
+
}
|
|
482
|
+
handleLanguageChanged() {
|
|
483
|
+
this.setupInitialValue();
|
|
484
|
+
}
|
|
485
|
+
handleThemeChanged() {
|
|
486
|
+
this.setupInitialValue();
|
|
487
|
+
}
|
|
488
|
+
handleAccentColorChanged() {
|
|
489
|
+
this.setupInitialValue();
|
|
490
|
+
}
|
|
491
|
+
handleNoteBehaviorChanged() {
|
|
492
|
+
this.setupInitialValue();
|
|
493
|
+
}
|
|
494
|
+
}
|
|
495
|
+
Cycle.formAssociated = true;
|
|
496
|
+
Cycle.styles = unsafeCSS(styles);
|
|
497
|
+
define("ds-cycle", Cycle);
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
/**
|
|
3
|
+
* A component for displaying the current year
|
|
4
|
+
*
|
|
5
|
+
* @element ds-date
|
|
6
|
+
*/
|
|
7
|
+
export declare class DateComponent extends LitElement {
|
|
8
|
+
static styles: import("lit").CSSResult;
|
|
9
|
+
render(): import("lit").TemplateResult<1>;
|
|
10
|
+
}
|
|
11
|
+
declare global {
|
|
12
|
+
interface HTMLElementTagNameMap {
|
|
13
|
+
"ds-date": DateComponent;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=ds-date.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-date.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-date.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAGlD;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,UAAU;IAC3C,MAAM,CAAC,MAAM,0BAAqB;IAElC,MAAM;CAIP;AAID,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,SAAS,EAAE,aAAa,CAAC;KAC1B;CACF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
2
|
+
import styles from "./styles/ds-date.css?inline";
|
|
3
|
+
/**
|
|
4
|
+
* A component for displaying the current year
|
|
5
|
+
*
|
|
6
|
+
* @element ds-date
|
|
7
|
+
*/
|
|
8
|
+
export class DateComponent extends LitElement {
|
|
9
|
+
render() {
|
|
10
|
+
const year = new Date().getFullYear();
|
|
11
|
+
return html `<span>${year}</span>`;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
DateComponent.styles = unsafeCSS(styles);
|
|
15
|
+
customElements.define("ds-date", DateComponent);
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import { LitElement } from "lit";
|
|
2
|
+
import "./ds-button";
|
|
3
|
+
/** Native file selection, forms and focus, with one shared Button face. */
|
|
4
|
+
export declare class FilePicker extends LitElement {
|
|
5
|
+
static properties: {
|
|
6
|
+
label: {
|
|
7
|
+
type: StringConstructor;
|
|
8
|
+
};
|
|
9
|
+
icon: {
|
|
10
|
+
type: BooleanConstructor;
|
|
11
|
+
reflect: boolean;
|
|
12
|
+
};
|
|
13
|
+
preview: {
|
|
14
|
+
type: BooleanConstructor;
|
|
15
|
+
reflect: boolean;
|
|
16
|
+
};
|
|
17
|
+
area: {
|
|
18
|
+
type: BooleanConstructor;
|
|
19
|
+
reflect: boolean;
|
|
20
|
+
};
|
|
21
|
+
dragging: {
|
|
22
|
+
type: BooleanConstructor;
|
|
23
|
+
reflect: boolean;
|
|
24
|
+
};
|
|
25
|
+
compact: {
|
|
26
|
+
type: BooleanConstructor;
|
|
27
|
+
reflect: boolean;
|
|
28
|
+
};
|
|
29
|
+
primary: {
|
|
30
|
+
type: BooleanConstructor;
|
|
31
|
+
reflect: boolean;
|
|
32
|
+
};
|
|
33
|
+
secondary: {
|
|
34
|
+
type: BooleanConstructor;
|
|
35
|
+
reflect: boolean;
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
static styles: import("lit").CSSResult;
|
|
39
|
+
label: string;
|
|
40
|
+
icon: boolean;
|
|
41
|
+
preview: boolean;
|
|
42
|
+
area: boolean;
|
|
43
|
+
dragging: boolean;
|
|
44
|
+
compact: boolean;
|
|
45
|
+
primary: boolean;
|
|
46
|
+
secondary: boolean;
|
|
47
|
+
private controlDisabled;
|
|
48
|
+
private observer;
|
|
49
|
+
constructor();
|
|
50
|
+
private control;
|
|
51
|
+
private syncDisabled;
|
|
52
|
+
private showDrag;
|
|
53
|
+
private clearDrag;
|
|
54
|
+
private observeControl;
|
|
55
|
+
connectedCallback(): void;
|
|
56
|
+
disconnectedCallback(): void;
|
|
57
|
+
focus(options?: FocusOptions): void;
|
|
58
|
+
render(): import("lit").TemplateResult<1>;
|
|
59
|
+
}
|
|
60
|
+
declare global {
|
|
61
|
+
interface HTMLElementTagNameMap {
|
|
62
|
+
"ds-file-picker": FilePicker;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=ds-file-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ds-file-picker.d.ts","sourceRoot":"","sources":["../../DS1/2-core/ds-file-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAmB,MAAM,KAAK,CAAC;AAElD,OAAO,aAAa,CAAC;AAGrB,2EAA2E;AAC3E,qBAAa,UAAW,SAAQ,UAAU;IACxC,MAAM,CAAC,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MASf;IACF,MAAM,CAAC,MAAM,0BAAqB;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAmD;;IAMnE,OAAO,CAAC,OAAO;IACf,OAAO,CAAC,YAAY;IASpB,OAAO,CAAC,QAAQ,CAKd;IACF,OAAO,CAAC,SAAS,CAAoD;IACrE,OAAO,CAAC,cAAc;IAUtB,iBAAiB;IAMjB,oBAAoB;IAOpB,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY;IAC5B,MAAM;CAMP;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,gBAAgB,EAAE,UAAU,CAAA;KAAE;CAAE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import { LitElement, html, unsafeCSS } from "lit";
|
|
2
|
+
import { define } from "../0-face/define";
|
|
3
|
+
import "./ds-button";
|
|
4
|
+
import styles from "./styles/ds-file-picker.css?inline";
|
|
5
|
+
/** Native file selection, forms and focus, with one shared Button face. */
|
|
6
|
+
export class FilePicker extends LitElement {
|
|
7
|
+
constructor() {
|
|
8
|
+
super();
|
|
9
|
+
this.controlDisabled = false;
|
|
10
|
+
this.observer = new MutationObserver(() => this.syncDisabled());
|
|
11
|
+
this.showDrag = (event) => {
|
|
12
|
+
const control = this.control();
|
|
13
|
+
if (control && !control.matches(":disabled") && event.dataTransfer?.types.includes("Files")) {
|
|
14
|
+
this.setAttribute("data-dragging", "");
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
this.clearDrag = () => { this.removeAttribute("data-dragging"); };
|
|
18
|
+
this.label = "";
|
|
19
|
+
this.icon = this.preview = this.area = this.dragging = this.compact = this.primary = this.secondary = false;
|
|
20
|
+
}
|
|
21
|
+
control() { return this.querySelector(":scope > input[type=file]"); }
|
|
22
|
+
syncDisabled() {
|
|
23
|
+
if (!this.isConnected)
|
|
24
|
+
return;
|
|
25
|
+
const control = this.control();
|
|
26
|
+
this.toggleAttribute("data-menu-item", control?.getAttribute("role") === "menuitem");
|
|
27
|
+
this.controlDisabled = !control || control.matches(":disabled");
|
|
28
|
+
this.toggleAttribute("data-disabled", this.controlDisabled);
|
|
29
|
+
if (this.controlDisabled)
|
|
30
|
+
this.clearDrag();
|
|
31
|
+
this.requestUpdate();
|
|
32
|
+
}
|
|
33
|
+
observeControl() {
|
|
34
|
+
this.observer.disconnect();
|
|
35
|
+
if (!this.isConnected)
|
|
36
|
+
return;
|
|
37
|
+
const control = this.control();
|
|
38
|
+
if (control)
|
|
39
|
+
this.observer.observe(control, { attributes: true, attributeFilter: ["disabled", "role"] });
|
|
40
|
+
for (let parent = this.parentElement; parent; parent = parent.parentElement) {
|
|
41
|
+
if (parent.localName === "fieldset")
|
|
42
|
+
this.observer.observe(parent, { attributes: true, attributeFilter: ["disabled"] });
|
|
43
|
+
}
|
|
44
|
+
this.syncDisabled();
|
|
45
|
+
}
|
|
46
|
+
connectedCallback() {
|
|
47
|
+
super.connectedCallback();
|
|
48
|
+
this.observeControl();
|
|
49
|
+
this.addEventListener("dragenter", this.showDrag);
|
|
50
|
+
this.addEventListener("dragleave", this.clearDrag);
|
|
51
|
+
this.addEventListener("drop", this.clearDrag);
|
|
52
|
+
}
|
|
53
|
+
disconnectedCallback() {
|
|
54
|
+
this.observer.disconnect();
|
|
55
|
+
this.clearDrag();
|
|
56
|
+
this.removeEventListener("dragenter", this.showDrag);
|
|
57
|
+
this.removeEventListener("dragleave", this.clearDrag);
|
|
58
|
+
this.removeEventListener("drop", this.clearDrag);
|
|
59
|
+
super.disconnectedCallback();
|
|
60
|
+
}
|
|
61
|
+
focus(options) { this.control()?.focus(options); }
|
|
62
|
+
render() {
|
|
63
|
+
return html `<ds-button control="host" inert aria-hidden="true" tabindex="-1"
|
|
64
|
+
.icon=${!this.area && (this.icon || this.preview)} .primary=${this.primary} .secondary=${this.secondary || this.area}
|
|
65
|
+
.disabled=${this.controlDisabled}><slot name="content">${this.label}</slot></ds-button>
|
|
66
|
+
<slot @slotchange=${this.observeControl}></slot>`;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
FilePicker.properties = {
|
|
70
|
+
label: { type: String },
|
|
71
|
+
icon: { type: Boolean, reflect: true },
|
|
72
|
+
preview: { type: Boolean, reflect: true },
|
|
73
|
+
area: { type: Boolean, reflect: true },
|
|
74
|
+
dragging: { type: Boolean, reflect: true },
|
|
75
|
+
compact: { type: Boolean, reflect: true },
|
|
76
|
+
primary: { type: Boolean, reflect: true },
|
|
77
|
+
secondary: { type: Boolean, reflect: true },
|
|
78
|
+
};
|
|
79
|
+
FilePicker.styles = unsafeCSS(styles);
|
|
80
|
+
define("ds-file-picker", FilePicker);
|