├── .changeset
├── README.md
└── config.json
├── .gitignore
├── README.md
├── eslint.config.mjs
├── init-app.sh
├── locale.mjs
├── package.json
├── packages
├── _tpl
│ ├── _package.json
│ ├── demo
│ │ ├── demo-location.ts
│ │ ├── index.html
│ │ ├── lit-hmr.ts
│ │ └── redefine-custom-elements.ts
│ ├── locale.mjs
│ ├── public
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── tsconfig.json
│ ├── types.ts
│ ├── vite-plugin-lit-hmr.ts
│ └── vite.config.js
├── access
│ ├── add-role.ts
│ ├── entity.ts
│ ├── index.ts
│ ├── internal
│ │ ├── add-role.ts
│ │ ├── context-user-access-mixin.ts
│ │ ├── entity.ts
│ │ ├── hasUserRole.ts
│ │ ├── set-role.ts
│ │ └── usersFromData.ts
│ ├── package.json
│ ├── set-role.ts
│ ├── tsconfig.json
│ └── vite.config.js
├── actor
│ ├── README.md
│ ├── actor-actions.ts
│ ├── actor.ts
│ ├── context-actor.ts
│ ├── package.json
│ ├── registry.ts
│ ├── src
│ │ ├── actor-actions.ts
│ │ ├── actor.ts
│ │ ├── context-actor.ts
│ │ ├── registry.ts
│ │ └── types.ts
│ ├── tsconfig.json
│ └── valueToKey.ts
├── cmp
│ ├── accordion
│ │ └── accordion.ts
│ ├── advanced-switch
│ │ └── advanced-switch.ts
│ ├── audio
│ │ ├── audio.ts
│ │ ├── internal
│ │ │ ├── audio-controller.ts
│ │ │ ├── player-controller.ts
│ │ │ ├── speech-controller.ts
│ │ │ └── types.ts
│ │ └── player-controller.ts
│ ├── avatar
│ │ ├── avatar.test.ts
│ │ ├── avatar.ts
│ │ └── distributeUniformly.ts
│ ├── breadcrumb
│ │ └── breadcrumb.ts
│ ├── button
│ │ ├── button-override.ts
│ │ ├── button.ts
│ │ ├── small-outlined-button.ts
│ │ └── small-text-button.ts
│ ├── card
│ │ └── card.ts
│ ├── chip
│ │ └── status.ts
│ ├── container
│ │ ├── expansion-panel.ts
│ │ └── widget-container.ts
│ ├── copy
│ │ ├── copy.ts
│ │ └── internal
│ │ │ └── copy.ts
│ ├── counter
│ │ └── animated-counter.ts
│ ├── datetime
│ │ └── format.ts
│ ├── dialog
│ │ ├── dialog-download.ts
│ │ ├── downloadCSV.ts
│ │ ├── downloadJSON.ts
│ │ ├── event.ts
│ │ └── internal
│ │ │ └── dialog-download.ts
│ ├── dom
│ │ ├── README.md
│ │ ├── internal
│ │ │ ├── observer.test.ts
│ │ │ └── observer.ts
│ │ └── observer.ts
│ ├── email
│ │ ├── email-dialog.ts
│ │ ├── email-display.ts
│ │ ├── emailRenderer.ts
│ │ ├── promise-email-dialog-mixin.ts
│ │ └── types.ts
│ ├── fab
│ │ ├── fab.ts
│ │ ├── filled-fab.ts
│ │ ├── internal
│ │ │ ├── fab.ts
│ │ │ ├── filled-styles.ts
│ │ │ ├── outlined-styles.ts
│ │ │ └── styles.ts
│ │ └── outlined-fab.ts
│ ├── feedback
│ │ ├── README.md
│ │ ├── event.ts
│ │ ├── feedback-mixin.ts
│ │ ├── feedback.ts
│ │ ├── locale.mjs
│ │ └── src
│ │ │ ├── button.ts
│ │ │ ├── dialog.ts
│ │ │ ├── feedback-locale.mjs
│ │ │ ├── feedback-mixin.ts
│ │ │ ├── feedback.ts
│ │ │ └── feedbackState.ts
│ ├── fetch
│ │ └── button-fetch.ts
│ ├── field
│ │ ├── checkbox-field.ts
│ │ ├── checkbox
│ │ │ ├── filled-checkbox.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── input-checkbox.ts
│ │ │ ├── internal
│ │ │ │ ├── checkbox.test.ts
│ │ │ │ ├── checkbox.ts
│ │ │ │ ├── filled-checkbox.ts
│ │ │ │ ├── input-checkbox.ts
│ │ │ │ └── outlined-checkbox.ts
│ │ │ ├── outlined-checkbox.ts
│ │ │ ├── outlinedStyles.ts
│ │ │ └── sharedStyles.ts
│ │ ├── choice-checkbox.ts
│ │ ├── choice-order.ts
│ │ ├── choice-radio.ts
│ │ ├── choice-star.ts
│ │ ├── choice
│ │ │ ├── checkbox
│ │ │ │ ├── filled-checkbox.ts
│ │ │ │ ├── filledStyles.ts
│ │ │ │ ├── internal
│ │ │ │ │ ├── checkbox.test.ts
│ │ │ │ │ ├── checkbox.ts
│ │ │ │ │ ├── filled-checkbox.ts
│ │ │ │ │ ├── outlined-checkbox.ts
│ │ │ │ │ └── shared-styles.ts
│ │ │ │ ├── outlined-checkbox.ts
│ │ │ │ └── outlinedStyles.ts
│ │ │ ├── choice.ts
│ │ │ ├── illustrationMixin.ts
│ │ │ ├── list-item.ts
│ │ │ ├── list.ts
│ │ │ ├── multiMixin.ts
│ │ │ ├── multiValidator.ts
│ │ │ ├── order
│ │ │ │ ├── filled-order.ts
│ │ │ │ ├── filledStyles.ts
│ │ │ │ ├── internal
│ │ │ │ │ ├── filled-order.ts
│ │ │ │ │ ├── locale.mjs
│ │ │ │ │ ├── order.test.ts
│ │ │ │ │ ├── order.ts
│ │ │ │ │ ├── orderStyles.ts
│ │ │ │ │ └── outlined-order.ts
│ │ │ │ ├── outlined-order.ts
│ │ │ │ └── outlinedStyles.ts
│ │ │ ├── radio
│ │ │ │ ├── filled-radio.ts
│ │ │ │ ├── filledStyles.ts
│ │ │ │ ├── internal
│ │ │ │ │ ├── filled-radio.ts
│ │ │ │ │ ├── outlined-radio.ts
│ │ │ │ │ ├── radio.test.ts
│ │ │ │ │ ├── radio.ts
│ │ │ │ │ └── shared-styles.ts
│ │ │ │ ├── outlined-radio.ts
│ │ │ │ └── outlinedStyles.ts
│ │ │ ├── readaloud-locale.mjs
│ │ │ ├── singleMixin.ts
│ │ │ ├── singleValidator.ts
│ │ │ ├── specifyChangedDetail.ts
│ │ │ ├── star
│ │ │ │ ├── filled-star.ts
│ │ │ │ ├── filledStyles.ts
│ │ │ │ ├── internal
│ │ │ │ │ ├── filled-star.ts
│ │ │ │ │ ├── outlined-star.ts
│ │ │ │ │ ├── star.test.ts
│ │ │ │ │ ├── star.ts
│ │ │ │ │ └── starStyles.ts
│ │ │ │ ├── outlined-star.ts
│ │ │ │ └── outlinedStyles.ts
│ │ │ ├── styles.ts
│ │ │ └── types.ts
│ │ ├── compat
│ │ │ └── compat-mixin.ts
│ │ ├── field-override.ts
│ │ ├── field
│ │ │ ├── filled-field.ts
│ │ │ ├── internal
│ │ │ │ ├── a11y-field-mixin.ts
│ │ │ │ ├── filled-field.ts
│ │ │ │ ├── outlined-field.ts
│ │ │ │ └── supporting-text-styles.ts
│ │ │ └── outlined-field.ts
│ │ ├── generic
│ │ │ ├── generic.test.ts
│ │ │ ├── generic.ts
│ │ │ └── styles.ts
│ │ ├── locale.mjs
│ │ ├── md-droppable-editor.ts
│ │ ├── md-editor.ts
│ │ ├── md-lif.ts
│ │ ├── md.ts
│ │ ├── md
│ │ │ ├── droppable-styles.ts
│ │ │ ├── md-droppable-editor.ts
│ │ │ ├── md-editor.ts
│ │ │ ├── md-lif.ts
│ │ │ ├── md.ts
│ │ │ └── types.ts
│ │ ├── mixin
│ │ │ └── noAutoValidateMixin.ts
│ │ ├── radio
│ │ │ └── radio.ts
│ │ ├── record-field.ts
│ │ ├── record
│ │ │ ├── RecordEvent.ts
│ │ │ ├── filled-record-field.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── input-record.ts
│ │ │ ├── internal
│ │ │ │ ├── filled-record-field.ts
│ │ │ │ ├── input-record.ts
│ │ │ │ ├── outlined-record-field.ts
│ │ │ │ ├── record-field.test.ts
│ │ │ │ ├── record-field.ts
│ │ │ │ ├── record-locale.mjs
│ │ │ │ ├── record.test.ts
│ │ │ │ ├── record.ts
│ │ │ │ └── recordValidator.ts
│ │ │ ├── outlined-record-field.ts
│ │ │ ├── outlinedStyles.ts
│ │ │ ├── record-styles.ts
│ │ │ ├── record.ts
│ │ │ ├── releaseNotes
│ │ │ │ ├── assets
│ │ │ │ │ ├── voice-a11y-menu.png
│ │ │ │ │ ├── voice-activate.png
│ │ │ │ │ ├── voice-distribute.png
│ │ │ │ │ ├── voice-edit-mode.png
│ │ │ │ │ ├── voice-listen.png
│ │ │ │ │ ├── voice-narrow.png
│ │ │ │ │ ├── voice-pause.png
│ │ │ │ │ ├── voice-record.png
│ │ │ │ │ ├── voice-start-again.png
│ │ │ │ │ └── voice-test.png
│ │ │ │ └── launch.md
│ │ │ └── stream.ts
│ │ ├── select-input.ts
│ │ ├── select.ts
│ │ ├── select
│ │ │ ├── filled-select-input.ts
│ │ │ ├── filled-select.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── internal
│ │ │ │ ├── filled-select-input.ts
│ │ │ │ ├── filled-select.ts
│ │ │ │ ├── outlined-select-input.ts
│ │ │ │ ├── outlined-select.ts
│ │ │ │ ├── select-input.ts
│ │ │ │ ├── select.test.ts
│ │ │ │ ├── select.ts
│ │ │ │ └── selectInputStyles.ts
│ │ │ ├── outlined-select-input.ts
│ │ │ ├── outlined-select.ts
│ │ │ └── outlinedStyles.ts
│ │ ├── slider-field.ts
│ │ ├── slider-range-field.ts
│ │ ├── slider
│ │ │ ├── filled-slider.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── input-slider.ts
│ │ │ ├── internal
│ │ │ │ ├── filled-slider.ts
│ │ │ │ ├── input-slider.ts
│ │ │ │ ├── outlined-slider.ts
│ │ │ │ ├── slider.test.ts
│ │ │ │ ├── slider.ts
│ │ │ │ └── sliderValidator.ts
│ │ │ ├── outlined-slider.ts
│ │ │ ├── outlinedStyles.ts
│ │ │ ├── releaseNotes
│ │ │ │ ├── assets
│ │ │ │ │ ├── slider-edit.png
│ │ │ │ │ ├── slider-range.png
│ │ │ │ │ ├── slider-select-range.png
│ │ │ │ │ └── slider-simple.png
│ │ │ │ └── launch.md
│ │ │ └── sharedStyles.ts
│ │ ├── switch-field.ts
│ │ ├── switch
│ │ │ ├── filled-switch.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── input-switch.ts
│ │ │ ├── internal
│ │ │ │ ├── filled-switch.ts
│ │ │ │ ├── input-switch.ts
│ │ │ │ ├── outline-switch.ts
│ │ │ │ ├── switch.test.ts
│ │ │ │ └── switch.ts
│ │ │ ├── outlined-checkbox.ts
│ │ │ ├── outlinedStyles.ts
│ │ │ └── sharedStyles.ts
│ │ ├── text-field.ts
│ │ ├── textfield
│ │ │ ├── filled-text-field.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── internal
│ │ │ │ ├── filled-text-field.ts
│ │ │ │ ├── outlined-text-field.ts
│ │ │ │ └── text-field.ts
│ │ │ ├── outlined-text-field.ts
│ │ │ └── outlinedStyles.ts
│ │ ├── upload.ts
│ │ └── upload
│ │ │ ├── filled-upload.ts
│ │ │ ├── filledStyles.ts
│ │ │ ├── internal
│ │ │ ├── filled-upload.ts
│ │ │ ├── outlined-upload.ts
│ │ │ ├── upload.ts
│ │ │ └── uploadValidator.ts
│ │ │ ├── outlined-upload.ts
│ │ │ ├── outlinedStyles.ts
│ │ │ └── sharedStyles.ts
│ ├── icon-button
│ │ └── star.ts
│ ├── icon
│ │ ├── icon.ts
│ │ └── internal
│ │ │ ├── icon-styles.ts
│ │ │ └── icon.ts
│ ├── index.html
│ ├── list
│ │ ├── internal
│ │ │ └── illustrationVariantStyles.ts
│ │ ├── list-item.ts
│ │ └── list.ts
│ ├── lit-hmr.ts
│ ├── locale.mjs
│ ├── media
│ │ ├── gallery.ts
│ │ ├── image.ts
│ │ ├── lazy-image.ts
│ │ ├── select-base.ts
│ │ ├── select-firebase.ts
│ │ └── select.ts
│ ├── mixin
│ │ ├── context-accessibility-mixin.ts
│ │ ├── local-storage-persist-mixin.ts
│ │ └── resize-controller-mixin.ts
│ ├── package.json
│ ├── process
│ │ ├── internal
│ │ │ ├── process._test.ts
│ │ │ └── process.ts
│ │ ├── process.ts
│ │ └── styles.ts
│ ├── public
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── redefine-custom-elements.ts
│ ├── renderer
│ │ └── date.ts
│ ├── role
│ │ └── internal
│ │ │ └── README.md
│ ├── slot
│ │ └── transition.ts
│ ├── snackbar
│ │ └── snackbar.ts
│ ├── tabs
│ │ ├── internal
│ │ │ ├── closable-tab-mixin.ts
│ │ │ └── styles.ts
│ │ ├── primary-tab-closable.ts
│ │ └── secondary-tab-closable.ts
│ ├── toolbar
│ │ ├── README.md
│ │ └── toolbar.ts
│ ├── tooltip
│ │ ├── README.md
│ │ └── tooltip.ts
│ ├── tsconfig.json
│ ├── types.ts
│ ├── upload
│ │ ├── document-firebase.ts
│ │ ├── document.ts
│ │ ├── image-firebase.ts
│ │ ├── image.ts
│ │ ├── internals
│ │ │ ├── database-mixin.ts
│ │ │ ├── firestore-mixin.ts
│ │ │ ├── image-mixin.ts
│ │ │ ├── json-database-mixin.ts
│ │ │ ├── json-firestore-mixin.ts
│ │ │ ├── json-mixin.ts
│ │ │ ├── normalizeFile.ts
│ │ │ └── storage-mixin.ts
│ │ ├── json-firebase.ts
│ │ └── json.ts
│ ├── user
│ │ ├── README.md
│ │ ├── card.ts
│ │ ├── img-list.ts
│ │ ├── img.ts
│ │ ├── internal
│ │ │ ├── card.ts
│ │ │ ├── img-list.ts
│ │ │ ├── img.ts
│ │ │ ├── invite-list.ts
│ │ │ ├── list.ts
│ │ │ ├── name.ts
│ │ │ ├── quote.ts
│ │ │ ├── search.ts
│ │ │ ├── select-item.ts
│ │ │ ├── spotlight.ts
│ │ │ ├── thread.ts
│ │ │ ├── types.ts
│ │ │ ├── user-item-mixin.ts
│ │ │ └── user-mixin.ts
│ │ ├── invite-list.ts
│ │ ├── list.ts
│ │ ├── name.ts
│ │ ├── quote.ts
│ │ ├── search.ts
│ │ ├── select-item.ts
│ │ ├── spotlight.ts
│ │ └── thread.ts
│ ├── vite-plugin-lit-hmr.ts
│ ├── vite.config.js
│ ├── wrapper
│ │ └── print-wrapper.ts
│ └── youtube
│ │ ├── youtube-id.ts
│ │ └── youtube.ts
├── entity
│ ├── LabelE.ts
│ ├── LabelM.ts
│ ├── README.md
│ ├── demo
│ │ ├── demo-location.ts
│ │ ├── index.html
│ │ ├── lit-hmr.ts
│ │ └── redefine-custom-elements.ts
│ ├── locale.mjs
│ ├── package.json
│ ├── public
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── tsconfig.json
│ ├── types.ts
│ ├── vite-plugin-lit-hmr.ts
│ └── vite.config.js
├── form
│ ├── context-form.ts
│ ├── demo
│ │ ├── demo-form.ts
│ │ ├── index.html
│ │ ├── lit-hmr.ts
│ │ └── redefine-custom-elements.ts
│ ├── form.ts
│ ├── index.ts
│ ├── locale.mjs
│ ├── package.json
│ ├── public
│ │ ├── NOTES.md
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── src
│ │ ├── context-form.ts
│ │ ├── form.test.ts
│ │ ├── form.ts
│ │ ├── types.ts
│ │ └── virtual-field.ts
│ ├── tsconfig.json
│ ├── vite-plugin-lit-hmr.ts
│ └── vite.config.js
├── location
│ ├── continent-country.ts
│ ├── continent.ts
│ ├── country.ts
│ ├── demo
│ │ ├── demo-location.ts
│ │ ├── index.html
│ │ ├── lit-hmr.ts
│ │ └── redefine-custom-elements.ts
│ ├── locale.mjs
│ ├── package.json
│ ├── public
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── flags
│ │ │ ├── 1x1
│ │ │ │ ├── abw.svg
│ │ │ │ ├── afg.svg
│ │ │ │ ├── ago.svg
│ │ │ │ ├── aia.svg
│ │ │ │ ├── ala.svg
│ │ │ │ ├── alb.svg
│ │ │ │ ├── and.svg
│ │ │ │ ├── are.svg
│ │ │ │ ├── arg.svg
│ │ │ │ ├── arm.svg
│ │ │ │ ├── asm.svg
│ │ │ │ ├── ata.svg
│ │ │ │ ├── atf.svg
│ │ │ │ ├── atg.svg
│ │ │ │ ├── aus.svg
│ │ │ │ ├── aut.svg
│ │ │ │ ├── aze.svg
│ │ │ │ ├── bdi.svg
│ │ │ │ ├── bel.svg
│ │ │ │ ├── ben.svg
│ │ │ │ ├── bes.svg
│ │ │ │ ├── bfa.svg
│ │ │ │ ├── bgd.svg
│ │ │ │ ├── bgr.svg
│ │ │ │ ├── bhr.svg
│ │ │ │ ├── bhs.svg
│ │ │ │ ├── bih.svg
│ │ │ │ ├── blm.svg
│ │ │ │ ├── blr.svg
│ │ │ │ ├── blz.svg
│ │ │ │ ├── bmu.svg
│ │ │ │ ├── bol.svg
│ │ │ │ ├── bra.svg
│ │ │ │ ├── brb.svg
│ │ │ │ ├── brn.svg
│ │ │ │ ├── btn.svg
│ │ │ │ ├── bvt.svg
│ │ │ │ ├── bwa.svg
│ │ │ │ ├── caf.svg
│ │ │ │ ├── can.svg
│ │ │ │ ├── cat.svg
│ │ │ │ ├── cck.svg
│ │ │ │ ├── che.svg
│ │ │ │ ├── chl.svg
│ │ │ │ ├── chn.svg
│ │ │ │ ├── civ.svg
│ │ │ │ ├── cmr.svg
│ │ │ │ ├── cod.svg
│ │ │ │ ├── cog.svg
│ │ │ │ ├── cok.svg
│ │ │ │ ├── col.svg
│ │ │ │ ├── com.svg
│ │ │ │ ├── cpv.svg
│ │ │ │ ├── cri.svg
│ │ │ │ ├── cub.svg
│ │ │ │ ├── cuw.svg
│ │ │ │ ├── cxr.svg
│ │ │ │ ├── cym.svg
│ │ │ │ ├── cyp.svg
│ │ │ │ ├── cze.svg
│ │ │ │ ├── deu.svg
│ │ │ │ ├── dji.svg
│ │ │ │ ├── dma.svg
│ │ │ │ ├── dnk.svg
│ │ │ │ ├── dom.svg
│ │ │ │ ├── dza.svg
│ │ │ │ ├── ecu.svg
│ │ │ │ ├── egy.svg
│ │ │ │ ├── eng.svg
│ │ │ │ ├── eri.svg
│ │ │ │ ├── esh.svg
│ │ │ │ ├── esp.svg
│ │ │ │ ├── est.svg
│ │ │ │ ├── eth.svg
│ │ │ │ ├── eun.svg
│ │ │ │ ├── fin.svg
│ │ │ │ ├── fji.svg
│ │ │ │ ├── flk.svg
│ │ │ │ ├── fra.svg
│ │ │ │ ├── fro.svg
│ │ │ │ ├── fsm.svg
│ │ │ │ ├── gab.svg
│ │ │ │ ├── gbr.svg
│ │ │ │ ├── geo.svg
│ │ │ │ ├── ggy.svg
│ │ │ │ ├── gha.svg
│ │ │ │ ├── gib.svg
│ │ │ │ ├── gin.svg
│ │ │ │ ├── glp.svg
│ │ │ │ ├── gmb.svg
│ │ │ │ ├── gnb.svg
│ │ │ │ ├── gnq.svg
│ │ │ │ ├── grc.svg
│ │ │ │ ├── grd.svg
│ │ │ │ ├── grl.svg
│ │ │ │ ├── gtm.svg
│ │ │ │ ├── guf.svg
│ │ │ │ ├── gum.svg
│ │ │ │ ├── guy.svg
│ │ │ │ ├── hkg.svg
│ │ │ │ ├── hmd.svg
│ │ │ │ ├── hnd.svg
│ │ │ │ ├── hrv.svg
│ │ │ │ ├── hti.svg
│ │ │ │ ├── hun.svg
│ │ │ │ ├── idn.svg
│ │ │ │ ├── imn.svg
│ │ │ │ ├── ind.svg
│ │ │ │ ├── iot.svg
│ │ │ │ ├── irl.svg
│ │ │ │ ├── irn.svg
│ │ │ │ ├── irq.svg
│ │ │ │ ├── isl.svg
│ │ │ │ ├── isr.svg
│ │ │ │ ├── ita.svg
│ │ │ │ ├── jam.svg
│ │ │ │ ├── jey.svg
│ │ │ │ ├── jor.svg
│ │ │ │ ├── jpn.svg
│ │ │ │ ├── kaz.svg
│ │ │ │ ├── ken.svg
│ │ │ │ ├── kgz.svg
│ │ │ │ ├── khm.svg
│ │ │ │ ├── kir.svg
│ │ │ │ ├── kna.svg
│ │ │ │ ├── kor.svg
│ │ │ │ ├── kos.svg
│ │ │ │ ├── kwt.svg
│ │ │ │ ├── lao.svg
│ │ │ │ ├── lbn.svg
│ │ │ │ ├── lbr.svg
│ │ │ │ ├── lby.svg
│ │ │ │ ├── lca.svg
│ │ │ │ ├── lie.svg
│ │ │ │ ├── lka.svg
│ │ │ │ ├── lso.svg
│ │ │ │ ├── ltu.svg
│ │ │ │ ├── lux.svg
│ │ │ │ ├── lva.svg
│ │ │ │ ├── mac.svg
│ │ │ │ ├── maf.svg
│ │ │ │ ├── mar.svg
│ │ │ │ ├── mco.svg
│ │ │ │ ├── mda.svg
│ │ │ │ ├── mdg.svg
│ │ │ │ ├── mdv.svg
│ │ │ │ ├── mex.svg
│ │ │ │ ├── mhl.svg
│ │ │ │ ├── mkd.svg
│ │ │ │ ├── mli.svg
│ │ │ │ ├── mlt.svg
│ │ │ │ ├── mmr.svg
│ │ │ │ ├── mne.svg
│ │ │ │ ├── mng.svg
│ │ │ │ ├── mnp.svg
│ │ │ │ ├── moz.svg
│ │ │ │ ├── mrt.svg
│ │ │ │ ├── msr.svg
│ │ │ │ ├── mtq.svg
│ │ │ │ ├── mus.svg
│ │ │ │ ├── mwi.svg
│ │ │ │ ├── mys.svg
│ │ │ │ ├── myt.svg
│ │ │ │ ├── nam.svg
│ │ │ │ ├── ncl.svg
│ │ │ │ ├── ner.svg
│ │ │ │ ├── nfk.svg
│ │ │ │ ├── nga.svg
│ │ │ │ ├── nic.svg
│ │ │ │ ├── nir.svg
│ │ │ │ ├── niu.svg
│ │ │ │ ├── nld.svg
│ │ │ │ ├── nor.svg
│ │ │ │ ├── npl.svg
│ │ │ │ ├── nru.svg
│ │ │ │ ├── nzl.svg
│ │ │ │ ├── omn.svg
│ │ │ │ ├── pak.svg
│ │ │ │ ├── pan.svg
│ │ │ │ ├── pcn.svg
│ │ │ │ ├── per.svg
│ │ │ │ ├── phl.svg
│ │ │ │ ├── plw.svg
│ │ │ │ ├── png.svg
│ │ │ │ ├── pol.svg
│ │ │ │ ├── pri.svg
│ │ │ │ ├── prk.svg
│ │ │ │ ├── prt.svg
│ │ │ │ ├── pry.svg
│ │ │ │ ├── pse.svg
│ │ │ │ ├── pyf.svg
│ │ │ │ ├── qat.svg
│ │ │ │ ├── reu.svg
│ │ │ │ ├── rou.svg
│ │ │ │ ├── rus.svg
│ │ │ │ ├── rwa.svg
│ │ │ │ ├── sau.svg
│ │ │ │ ├── sco.svg
│ │ │ │ ├── sdn.svg
│ │ │ │ ├── sen.svg
│ │ │ │ ├── sgp.svg
│ │ │ │ ├── sgs.svg
│ │ │ │ ├── shn.svg
│ │ │ │ ├── sjm.svg
│ │ │ │ ├── slb.svg
│ │ │ │ ├── sle.svg
│ │ │ │ ├── slv.svg
│ │ │ │ ├── smr.svg
│ │ │ │ ├── som.svg
│ │ │ │ ├── spm.svg
│ │ │ │ ├── srb.svg
│ │ │ │ ├── ssd.svg
│ │ │ │ ├── stp.svg
│ │ │ │ ├── sun.svg
│ │ │ │ ├── sur.svg
│ │ │ │ ├── svk.svg
│ │ │ │ ├── svn.svg
│ │ │ │ ├── swe.svg
│ │ │ │ ├── swz.svg
│ │ │ │ ├── sxm.svg
│ │ │ │ ├── syc.svg
│ │ │ │ ├── syr.svg
│ │ │ │ ├── tca.svg
│ │ │ │ ├── tcd.svg
│ │ │ │ ├── tgo.svg
│ │ │ │ ├── tha.svg
│ │ │ │ ├── tjk.svg
│ │ │ │ ├── tkl.svg
│ │ │ │ ├── tkm.svg
│ │ │ │ ├── tls.svg
│ │ │ │ ├── ton.svg
│ │ │ │ ├── tto.svg
│ │ │ │ ├── tun.svg
│ │ │ │ ├── tur.svg
│ │ │ │ ├── tuv.svg
│ │ │ │ ├── twn.svg
│ │ │ │ ├── tza.svg
│ │ │ │ ├── uga.svg
│ │ │ │ ├── ukr.svg
│ │ │ │ ├── umi.svg
│ │ │ │ ├── ury.svg
│ │ │ │ ├── usa.svg
│ │ │ │ ├── uzb.svg
│ │ │ │ ├── vat.svg
│ │ │ │ ├── vct.svg
│ │ │ │ ├── ven.svg
│ │ │ │ ├── vgb.svg
│ │ │ │ ├── vir.svg
│ │ │ │ ├── vnm.svg
│ │ │ │ ├── vut.svg
│ │ │ │ ├── wal.svg
│ │ │ │ ├── wlf.svg
│ │ │ │ ├── wsm.svg
│ │ │ │ ├── yem.svg
│ │ │ │ ├── zaf.svg
│ │ │ │ ├── zmb.svg
│ │ │ │ └── zwe.svg
│ │ │ └── 4x3
│ │ │ │ ├── abw.svg
│ │ │ │ ├── afg.svg
│ │ │ │ ├── ago.svg
│ │ │ │ ├── aia.svg
│ │ │ │ ├── ala.svg
│ │ │ │ ├── alb.svg
│ │ │ │ ├── and.svg
│ │ │ │ ├── are.svg
│ │ │ │ ├── arg.svg
│ │ │ │ ├── arm.svg
│ │ │ │ ├── asm.svg
│ │ │ │ ├── ata.svg
│ │ │ │ ├── atf.svg
│ │ │ │ ├── atg.svg
│ │ │ │ ├── aus.svg
│ │ │ │ ├── aut.svg
│ │ │ │ ├── aze.svg
│ │ │ │ ├── bdi.svg
│ │ │ │ ├── bel.svg
│ │ │ │ ├── ben.svg
│ │ │ │ ├── bes.svg
│ │ │ │ ├── bfa.svg
│ │ │ │ ├── bgd.svg
│ │ │ │ ├── bgr.svg
│ │ │ │ ├── bhr.svg
│ │ │ │ ├── bhs.svg
│ │ │ │ ├── bih.svg
│ │ │ │ ├── blm.svg
│ │ │ │ ├── blr.svg
│ │ │ │ ├── blz.svg
│ │ │ │ ├── bmu.svg
│ │ │ │ ├── bol.svg
│ │ │ │ ├── bra.svg
│ │ │ │ ├── brb.svg
│ │ │ │ ├── brn.svg
│ │ │ │ ├── btn.svg
│ │ │ │ ├── bvt.svg
│ │ │ │ ├── bwa.svg
│ │ │ │ ├── caf.svg
│ │ │ │ ├── can.svg
│ │ │ │ ├── cat.svg
│ │ │ │ ├── cck.svg
│ │ │ │ ├── che.svg
│ │ │ │ ├── chl.svg
│ │ │ │ ├── chn.svg
│ │ │ │ ├── civ.svg
│ │ │ │ ├── cmr.svg
│ │ │ │ ├── cod.svg
│ │ │ │ ├── cog.svg
│ │ │ │ ├── cok.svg
│ │ │ │ ├── col.svg
│ │ │ │ ├── com.svg
│ │ │ │ ├── cpv.svg
│ │ │ │ ├── cri.svg
│ │ │ │ ├── cub.svg
│ │ │ │ ├── cuw.svg
│ │ │ │ ├── cxr.svg
│ │ │ │ ├── cym.svg
│ │ │ │ ├── cyp.svg
│ │ │ │ ├── cze.svg
│ │ │ │ ├── deu.svg
│ │ │ │ ├── dji.svg
│ │ │ │ ├── dma.svg
│ │ │ │ ├── dnk.svg
│ │ │ │ ├── dom.svg
│ │ │ │ ├── dza.svg
│ │ │ │ ├── ecu.svg
│ │ │ │ ├── egy.svg
│ │ │ │ ├── eng.svg
│ │ │ │ ├── eri.svg
│ │ │ │ ├── esh.svg
│ │ │ │ ├── esp.svg
│ │ │ │ ├── est.svg
│ │ │ │ ├── eth.svg
│ │ │ │ ├── eun.svg
│ │ │ │ ├── fin.svg
│ │ │ │ ├── fji.svg
│ │ │ │ ├── flk.svg
│ │ │ │ ├── fra.svg
│ │ │ │ ├── fro.svg
│ │ │ │ ├── fsm.svg
│ │ │ │ ├── gab.svg
│ │ │ │ ├── gbr.svg
│ │ │ │ ├── geo.svg
│ │ │ │ ├── ggy.svg
│ │ │ │ ├── gha.svg
│ │ │ │ ├── gib.svg
│ │ │ │ ├── gin.svg
│ │ │ │ ├── glp.svg
│ │ │ │ ├── gmb.svg
│ │ │ │ ├── gnb.svg
│ │ │ │ ├── gnq.svg
│ │ │ │ ├── grc.svg
│ │ │ │ ├── grd.svg
│ │ │ │ ├── grl.svg
│ │ │ │ ├── gtm.svg
│ │ │ │ ├── guf.svg
│ │ │ │ ├── gum.svg
│ │ │ │ ├── guy.svg
│ │ │ │ ├── hkg.svg
│ │ │ │ ├── hmd.svg
│ │ │ │ ├── hnd.svg
│ │ │ │ ├── hrv.svg
│ │ │ │ ├── hti.svg
│ │ │ │ ├── hun.svg
│ │ │ │ ├── idn.svg
│ │ │ │ ├── imn.svg
│ │ │ │ ├── ind.svg
│ │ │ │ ├── iot.svg
│ │ │ │ ├── irl.svg
│ │ │ │ ├── irn.svg
│ │ │ │ ├── irq.svg
│ │ │ │ ├── isl.svg
│ │ │ │ ├── isr.svg
│ │ │ │ ├── ita.svg
│ │ │ │ ├── jam.svg
│ │ │ │ ├── jey.svg
│ │ │ │ ├── jor.svg
│ │ │ │ ├── jpn.svg
│ │ │ │ ├── kaz.svg
│ │ │ │ ├── ken.svg
│ │ │ │ ├── kgz.svg
│ │ │ │ ├── khm.svg
│ │ │ │ ├── kir.svg
│ │ │ │ ├── kna.svg
│ │ │ │ ├── kor.svg
│ │ │ │ ├── kos.svg
│ │ │ │ ├── kwt.svg
│ │ │ │ ├── lao.svg
│ │ │ │ ├── lbn.svg
│ │ │ │ ├── lbr.svg
│ │ │ │ ├── lby.svg
│ │ │ │ ├── lca.svg
│ │ │ │ ├── lie.svg
│ │ │ │ ├── lka.svg
│ │ │ │ ├── lso.svg
│ │ │ │ ├── ltu.svg
│ │ │ │ ├── lux.svg
│ │ │ │ ├── lva.svg
│ │ │ │ ├── mac.svg
│ │ │ │ ├── maf.svg
│ │ │ │ ├── mar.svg
│ │ │ │ ├── mco.svg
│ │ │ │ ├── mda.svg
│ │ │ │ ├── mdg.svg
│ │ │ │ ├── mdv.svg
│ │ │ │ ├── mex.svg
│ │ │ │ ├── mhl.svg
│ │ │ │ ├── mkd.svg
│ │ │ │ ├── mli.svg
│ │ │ │ ├── mlt.svg
│ │ │ │ ├── mmr.svg
│ │ │ │ ├── mne.svg
│ │ │ │ ├── mng.svg
│ │ │ │ ├── mnp.svg
│ │ │ │ ├── moz.svg
│ │ │ │ ├── mrt.svg
│ │ │ │ ├── msr.svg
│ │ │ │ ├── mtq.svg
│ │ │ │ ├── mus.svg
│ │ │ │ ├── mwi.svg
│ │ │ │ ├── mys.svg
│ │ │ │ ├── myt.svg
│ │ │ │ ├── nam.svg
│ │ │ │ ├── ncl.svg
│ │ │ │ ├── ner.svg
│ │ │ │ ├── nfk.svg
│ │ │ │ ├── nga.svg
│ │ │ │ ├── nic.svg
│ │ │ │ ├── nir.svg
│ │ │ │ ├── niu.svg
│ │ │ │ ├── nld.svg
│ │ │ │ ├── nor.svg
│ │ │ │ ├── npl.svg
│ │ │ │ ├── nru.svg
│ │ │ │ ├── nzl.svg
│ │ │ │ ├── omn.svg
│ │ │ │ ├── pak.svg
│ │ │ │ ├── pan.svg
│ │ │ │ ├── pcn.svg
│ │ │ │ ├── per.svg
│ │ │ │ ├── phl.svg
│ │ │ │ ├── plw.svg
│ │ │ │ ├── png.svg
│ │ │ │ ├── pol.svg
│ │ │ │ ├── pri.svg
│ │ │ │ ├── prk.svg
│ │ │ │ ├── prt.svg
│ │ │ │ ├── pry.svg
│ │ │ │ ├── pse.svg
│ │ │ │ ├── pyf.svg
│ │ │ │ ├── qat.svg
│ │ │ │ ├── reu.svg
│ │ │ │ ├── rou.svg
│ │ │ │ ├── rus.svg
│ │ │ │ ├── rwa.svg
│ │ │ │ ├── sau.svg
│ │ │ │ ├── sco.svg
│ │ │ │ ├── sdn.svg
│ │ │ │ ├── sen.svg
│ │ │ │ ├── sgp.svg
│ │ │ │ ├── sgs.svg
│ │ │ │ ├── shn.svg
│ │ │ │ ├── sjm.svg
│ │ │ │ ├── slb.svg
│ │ │ │ ├── sle.svg
│ │ │ │ ├── slv.svg
│ │ │ │ ├── smr.svg
│ │ │ │ ├── som.svg
│ │ │ │ ├── spm.svg
│ │ │ │ ├── srb.svg
│ │ │ │ ├── ssd.svg
│ │ │ │ ├── stp.svg
│ │ │ │ ├── sun.svg
│ │ │ │ ├── sur.svg
│ │ │ │ ├── svk.svg
│ │ │ │ ├── svn.svg
│ │ │ │ ├── swe.svg
│ │ │ │ ├── swz.svg
│ │ │ │ ├── sxm.svg
│ │ │ │ ├── syc.svg
│ │ │ │ ├── syr.svg
│ │ │ │ ├── tca.svg
│ │ │ │ ├── tcd.svg
│ │ │ │ ├── tgo.svg
│ │ │ │ ├── tha.svg
│ │ │ │ ├── tjk.svg
│ │ │ │ ├── tkl.svg
│ │ │ │ ├── tkm.svg
│ │ │ │ ├── tls.svg
│ │ │ │ ├── ton.svg
│ │ │ │ ├── tto.svg
│ │ │ │ ├── tun.svg
│ │ │ │ ├── tur.svg
│ │ │ │ ├── tuv.svg
│ │ │ │ ├── twn.svg
│ │ │ │ ├── tza.svg
│ │ │ │ ├── uga.svg
│ │ │ │ ├── ukr.svg
│ │ │ │ ├── umi.svg
│ │ │ │ ├── ury.svg
│ │ │ │ ├── usa.svg
│ │ │ │ ├── uzb.svg
│ │ │ │ ├── vat.svg
│ │ │ │ ├── vct.svg
│ │ │ │ ├── ven.svg
│ │ │ │ ├── vgb.svg
│ │ │ │ ├── vir.svg
│ │ │ │ ├── vnm.svg
│ │ │ │ ├── vut.svg
│ │ │ │ ├── wal.svg
│ │ │ │ ├── wlf.svg
│ │ │ │ ├── wsm.svg
│ │ │ │ ├── yem.svg
│ │ │ │ ├── zaf.svg
│ │ │ │ ├── zmb.svg
│ │ │ │ └── zwe.svg
│ │ ├── fonts
│ │ ├── i18n
│ │ │ ├── continent
│ │ │ │ └── en.json
│ │ │ └── country
│ │ │ │ └── en.json
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── script
│ │ ├── alpha3.json
│ │ ├── country.json
│ │ ├── countryContinent.json
│ │ ├── en.json
│ │ ├── extract.mjs
│ │ └── tmp.json
│ ├── src
│ │ ├── alpha3.json
│ │ ├── base.ts
│ │ ├── continent.json
│ │ └── countryContinent.json
│ ├── tsconfig.json
│ ├── types.ts
│ ├── vite-plugin-lit-hmr.ts
│ └── vite.config.js
├── model
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── Documentation.md
│ ├── README.md
│ ├── entity-create-dialog.ts
│ ├── entity-creator.ts
│ ├── entity-danger-zone.ts
│ ├── entity-grid-provider.ts
│ ├── entity-holder.ts
│ ├── entity-offline.ts
│ ├── entity-print.ts
│ ├── field-translate.ts
│ ├── index.ts
│ ├── package.json
│ ├── src
│ │ ├── AbstractEntity.ts
│ │ ├── cmp
│ │ │ ├── abstract-entity-element.ts
│ │ │ ├── base-metadata.ts
│ │ │ ├── entity-create-dialog.ts
│ │ │ ├── entity-creator.ts
│ │ │ ├── entity-danger-zone.ts
│ │ │ ├── entity-grid-provider.ts
│ │ │ ├── entity-holder.ts
│ │ │ └── field-translate.ts
│ │ ├── defaultActions.ts
│ │ ├── entityFact.ts
│ │ ├── events.ts
│ │ ├── mergeStatic.ts
│ │ ├── mixin
│ │ │ ├── context-access-mixin.ts
│ │ │ ├── context-app-id-mixin.ts
│ │ │ ├── context-data-mixin.ts
│ │ │ ├── context-doc-id-mixin.ts
│ │ │ ├── context-entity-mixin.ts
│ │ │ ├── context-entity-status-mixin.ts
│ │ │ ├── context-locale-data-mixin.ts
│ │ │ ├── context-uid-mixin.ts
│ │ │ ├── extend-helper-mixin.ts
│ │ │ ├── reactive-list-mixin.ts
│ │ │ ├── render-confirm-dialog-mixin.ts
│ │ │ ├── render-field-mixin.ts
│ │ │ └── render-header-mixin.ts
│ │ ├── renderActionMixin.ts
│ │ ├── renderEntityCreateMixin.ts
│ │ ├── renderEntityFieldMixin.ts
│ │ ├── renderEntityMixin.ts
│ │ ├── renderField.ts
│ │ ├── types.ts
│ │ └── types
│ │ │ ├── access.ts
│ │ │ ├── actionTypes.ts
│ │ │ ├── communication.ts
│ │ │ ├── dataI.ts
│ │ │ ├── entity.ts
│ │ │ ├── entityResource.ts
│ │ │ ├── modelComponent.ts
│ │ │ ├── renderActionI.ts
│ │ │ ├── renderEntityCreateI.ts
│ │ │ ├── renderEntityFieldI.ts
│ │ │ ├── renderEntityI.ts
│ │ │ └── resource.ts
│ ├── test
│ │ └── model.test.ts
│ ├── tsconfig.json
│ └── vite.config.js
├── plot
│ ├── README.md
│ ├── demo
│ │ ├── data
│ │ │ └── time.json
│ │ ├── index.html
│ │ ├── lit-hmr.ts
│ │ ├── redefine-custom-elements.ts
│ │ ├── root.ts
│ │ └── vite-plugin-lit-hmr.ts
│ ├── package.json
│ ├── public
│ │ ├── README.md
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── fonts
│ │ ├── images
│ │ │ └── material-symbols
│ │ ├── index.css
│ │ ├── logo.svg
│ │ ├── robots.txt
│ │ ├── theme.css
│ │ └── variables.css
│ ├── src
│ │ ├── base.ts
│ │ ├── context-data-mixin.ts
│ │ ├── index.ts
│ │ └── myScheme.ts
│ ├── time-series.ts
│ ├── tsconfig.json
│ ├── types.ts
│ └── vite.config.js
├── shared
│ ├── a11y
│ │ ├── announce.ts
│ │ └── index.ts
│ ├── browser
│ │ ├── README.md
│ │ ├── hasTouchscreen.ts
│ │ ├── index.ts
│ │ ├── isChrome.ts
│ │ ├── isEdge.ts
│ │ ├── isFirefox.ts
│ │ ├── isOpera.ts
│ │ └── isSafari.ts
│ ├── callFunctionOrValue.ts
│ ├── context
│ │ ├── advanced-mode-mixin.ts
│ │ ├── context-mixin-factory.ts
│ │ └── index.ts
│ ├── controller
│ │ ├── hasScrollbar.ts
│ │ ├── index.ts
│ │ ├── isEndPage.ts
│ │ ├── isNarrow.ts
│ │ └── resizeController.ts
│ ├── dataUtils
│ │ ├── README.md
│ │ ├── cast.ts
│ │ ├── compare.ts
│ │ ├── deep.ts
│ │ ├── filter.ts
│ │ ├── index.ts
│ │ └── normalizeEmptyValue.ts
│ ├── dd
│ │ ├── drag-mixin.ts
│ │ ├── drag-store.ts
│ │ └── index.ts
│ ├── debounce.ts
│ ├── decorator
│ │ ├── index.ts
│ │ ├── watch.test.ts
│ │ └── watch.ts
│ ├── deep.ts
│ ├── directive
│ │ ├── index.ts
│ │ └── spreadDirective.ts
│ ├── directiveRenderer
│ │ ├── bodyBoolean.ts
│ │ ├── bodyDate.ts
│ │ ├── bodyDisplayName.ts
│ │ ├── bodyFirestoreRealtime.ts
│ │ ├── bodyRealtime.ts
│ │ ├── headerFilterCheck.ts
│ │ ├── headerFilterSelect.ts
│ │ ├── headerFilterText.ts
│ │ ├── headerSort.ts
│ │ └── index.ts
│ ├── domUtils
│ │ ├── closest.ts
│ │ ├── closestWithFilter.ts
│ │ ├── index.ts
│ │ ├── scrollInto.ts
│ │ └── slot-switch.ts
│ ├── ellipsis.ts
│ ├── error
│ │ ├── errors.ts
│ │ └── index.ts
│ ├── event
│ │ ├── README.md
│ │ ├── app-auth.ts
│ │ ├── app-back.ts
│ │ ├── app-confirm-language.ts
│ │ ├── app-connected.ts
│ │ ├── app-dialog-ok.ts
│ │ ├── app-error.ts
│ │ ├── app-hoist.ts
│ │ ├── app-need-refresh.ts
│ │ ├── data-has-changed.ts
│ │ ├── docs
│ │ │ ├── custom-elements.json
│ │ │ └── custom-elements.md
│ │ ├── index.ts
│ │ ├── toast-event.ts
│ │ ├── ui-event.ts
│ │ └── value-changed.ts
│ ├── getInnerText.ts
│ ├── grid
│ │ ├── activeItemChanged.ts
│ │ └── index.ts
│ ├── historyBackIfSameDomain.ts
│ ├── index.ts
│ ├── locale
│ │ ├── currency-native.ts
│ │ └── language-native.ts
│ ├── md
│ │ ├── README.md
│ │ ├── index.ts
│ │ ├── marked.ts
│ │ ├── parse.ts
│ │ ├── parseConfig.ts
│ │ └── parseInline.ts
│ ├── mixin
│ │ ├── get-set.ts
│ │ ├── index.ts
│ │ ├── opened-mixin.ts
│ │ ├── promise-event-dialog-mixin.ts
│ │ └── types.ts
│ ├── network
│ │ ├── fetchWithTimeout.ts
│ │ └── index.ts
│ ├── package.json
│ ├── string
│ │ ├── camelToDash.ts
│ │ ├── dashToCamel.ts
│ │ ├── index.ts
│ │ └── template.ts
│ ├── styles
│ │ ├── class
│ │ │ ├── accessible-links.ts
│ │ │ ├── action-bar.ts
│ │ │ ├── alignIcon.ts
│ │ │ ├── badge.ts
│ │ │ ├── bottom-nav-bar.ts
│ │ │ ├── card.ts
│ │ │ ├── form-control.ts
│ │ │ ├── form.ts
│ │ │ ├── gap.ts
│ │ │ ├── github-highlight-css.ts
│ │ │ ├── github-md-css.ts
│ │ │ ├── grid.ts
│ │ │ ├── header.ts
│ │ │ ├── icon.ts
│ │ │ ├── label.ts
│ │ │ ├── layout-grid.ts
│ │ │ ├── lite-youtube.ts
│ │ │ ├── margin.ts
│ │ │ ├── outlined.ts
│ │ │ ├── padding.ts
│ │ │ ├── print.ts
│ │ │ ├── responsive-media.ts
│ │ │ ├── semantic-layout.ts
│ │ │ ├── show-hover.ts
│ │ │ ├── show-when-accessibility.ts
│ │ │ ├── skip-nav.ts
│ │ │ ├── slot-list.ts
│ │ │ ├── sr-only.ts
│ │ │ ├── sticky.ts
│ │ │ ├── tab-variant.ts
│ │ │ ├── toc.ts
│ │ │ ├── tooltip.ts
│ │ │ ├── top-card.ts
│ │ │ └── typography.ts
│ │ ├── flex
│ │ │ ├── Classes
│ │ │ │ └── index.ts
│ │ │ ├── Literals
│ │ │ │ └── index.ts
│ │ │ ├── README.md
│ │ │ └── index.ts
│ │ ├── index.ts
│ │ ├── locale.mjs
│ │ ├── md.ts
│ │ ├── mixin
│ │ │ └── modulo-selector.ts
│ │ ├── page.ts
│ │ ├── patch
│ │ │ └── alignMwc.ts
│ │ ├── themes
│ │ │ ├── a14y.js
│ │ │ ├── a14y.ts
│ │ │ ├── a14y_dark.js
│ │ │ ├── a14y_dark.ts
│ │ │ ├── a14y_variant.js
│ │ │ ├── a14y_variant.ts
│ │ │ ├── a14y_variant_dark.js
│ │ │ ├── a14y_variant_dark.ts
│ │ │ ├── dark-mode-white.js
│ │ │ ├── dark-mode-white.ts
│ │ │ ├── dark-mode-yellow.js
│ │ │ ├── dark-mode-yellow.ts
│ │ │ ├── default.js
│ │ │ ├── default.ts
│ │ │ ├── default_dark.js
│ │ │ ├── default_dark.ts
│ │ │ ├── grayscale.js
│ │ │ ├── grayscale.ts
│ │ │ ├── high-contrast.js
│ │ │ ├── high-contrast.ts
│ │ │ ├── index.ts
│ │ │ ├── locale.mjs
│ │ │ ├── locale.ts
│ │ │ ├── preignition.js
│ │ │ ├── preignition.ts
│ │ │ ├── preignition_dark.js
│ │ │ ├── preignition_dark.ts
│ │ │ ├── teal-yellow.js
│ │ │ ├── teal-yellow.ts
│ │ │ ├── teal-yellow_dark.js
│ │ │ ├── teal-yellow_dark.ts
│ │ │ ├── theme-viewer.ts
│ │ │ └── types.ts
│ │ ├── utils
│ │ │ ├── getAdjustedColor.ts
│ │ │ ├── index.ts
│ │ │ ├── rtl.ts
│ │ │ └── themeReset.ts
│ │ └── vaadin
│ │ │ ├── README.md
│ │ │ ├── card.ts
│ │ │ ├── context-menu-overlay.ts
│ │ │ ├── grid.ts
│ │ │ ├── index.ts
│ │ │ └── init-vaadin.ts
│ ├── support
│ │ ├── README.md
│ │ ├── method-interception.ts
│ │ └── resize-observers-errors.ts
│ ├── throttle.ts
│ ├── tsconfig.json
│ ├── types.ts
│ ├── types
│ │ ├── index.ts
│ │ └── material-symbols.ts
│ ├── vite.config.js
│ └── wait.ts
├── state
│ ├── .gitignore
│ ├── CHANGELOG.md
│ ├── Documentation.md
│ ├── README.md
│ ├── package.json
│ ├── src
│ │ ├── decorators
│ │ │ ├── hook.ts
│ │ │ ├── parse.ts
│ │ │ ├── property.ts
│ │ │ ├── query.ts
│ │ │ └── storage.ts
│ │ ├── env.d.ts
│ │ ├── functionValue.ts
│ │ ├── hook.ts
│ │ ├── index.ts
│ │ ├── state-controller.ts
│ │ ├── state-event.ts
│ │ ├── state.ts
│ │ └── types.ts
│ ├── test
│ │ ├── decorator.test.ts
│ │ ├── hook-firebase.test.ts
│ │ ├── hook-firebase.ts
│ │ ├── hook.test.ts
│ │ └── state.test.ts
│ ├── tsconfig.json
│ └── vite.config.js
├── testing
│ ├── fixture.ts
│ ├── index.ts
│ └── package.json
└── xstate-route
│ ├── .firebaserc
│ ├── README.md
│ ├── demo
│ ├── app.ts
│ ├── dialog
│ │ ├── dialog.ts
│ │ ├── step-one
│ │ │ └── step-one.ts
│ │ └── step-two
│ │ │ └── step-two.ts
│ ├── index.html
│ └── pages
│ │ ├── home
│ │ ├── fsm
│ │ │ └── fsm.ts
│ │ ├── home.ts
│ │ ├── secret
│ │ │ ├── code
│ │ │ │ └── code.ts
│ │ │ ├── data.ts
│ │ │ ├── password
│ │ │ │ └── password.ts
│ │ │ └── secret.ts
│ │ └── user
│ │ │ ├── edit
│ │ │ └── edit.ts
│ │ │ └── user.ts
│ │ ├── login
│ │ └── login.ts
│ │ └── styles.ts
│ ├── firebase.json
│ ├── package.json
│ ├── src
│ ├── types.ts
│ ├── xstate-route-controller.test.ts
│ └── xstate-route-controller.ts
│ ├── tsconfig.json
│ └── vite.config.mjs
├── pnpm-workspace.yaml
├── tsconfig.json
├── vite.config.mjs
└── vitetestSetup.js
/.changeset/README.md:
--------------------------------------------------------------------------------
1 | # Changesets
2 |
3 | Hello and welcome! This folder has been automatically generated by `@changesets/cli`, a build tool that works
4 | with multi-package repos, or single-package repos to help you version and publish your code. You can
5 | find the full documentation for it [in our repository](https://github.com/changesets/changesets)
6 |
7 | We have a quick list of common questions to get you started engaging with this project in
8 | [our documentation](https://github.com/changesets/changesets/blob/main/docs/common-questions.md)
9 |
--------------------------------------------------------------------------------
/.changeset/config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "https://unpkg.com/@changesets/config@2.0.0/schema.json",
3 | "changelog": "@changesets/cli/changelog",
4 | "commit": false,
5 | "fixed": [],
6 | "linked": [],
7 | "access": "public",
8 | "baseBranch": "main",
9 | "updateInternalDependencies": "patch",
10 | "ignore": []
11 | }
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | pnpm-debug.log*
6 | firebase-debug.log*
7 | firebase-debug.*.log*
8 | initializeFirebase.js
9 |
10 | # Firebase cache
11 | .firebase/
12 |
13 | .wireit
14 | node_modules
15 | dist
16 | *.local
17 | guides.md
18 |
19 | __*
20 |
21 | tmp
22 | # Editor directories and files
23 | .vscode/*
24 | !.vscode/extensions.json
25 | .idea
26 | .DS_Store
27 | *.suo
28 | *.ntvs*
29 | *.njsproj
30 | *.sln
31 | *.sw?
32 |
--------------------------------------------------------------------------------
/locale.mjs:
--------------------------------------------------------------------------------
1 | export * from './packages/cmp/locale.mjs';
--------------------------------------------------------------------------------
/packages/_tpl/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | router-slot
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/_tpl/locale.mjs:
--------------------------------------------------------------------------------
1 | // export * from './field/locale.mjs';
--------------------------------------------------------------------------------
/packages/_tpl/public/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/_tpl/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/_tpl/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/_tpl/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/_tpl/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/_tpl/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 |
5 | },
6 | "include": ["./**/*.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/packages/_tpl/types.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/_tpl/types.ts
--------------------------------------------------------------------------------
/packages/access/add-role.ts:
--------------------------------------------------------------------------------
1 | // import { css } from 'lit';
2 | import {customElement} from 'lit/decorators.js';
3 |
4 | import {AddRole} from './internal/add-role';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-add-role': LappAddRole;
9 | }
10 | }
11 |
12 | /**
13 | * @final
14 | * @suppress {visibility}
15 | */
16 | @customElement('lapp-access-add-role')
17 | export default class LappAddRole extends AddRole {
18 |
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/packages/access/index.ts:
--------------------------------------------------------------------------------
1 | import hasUserRole from './internal/hasUserRole'
2 |
3 | export {
4 | hasUserRole
5 | }
--------------------------------------------------------------------------------
/packages/access/internal/hasUserRole.ts:
--------------------------------------------------------------------------------
1 | import type { AccessT } from '@lit-app/model';
2 |
3 | /**
4 | * return true when a user has access against a resource
5 | * @param role the role to test (owner, editor, viewer, ...)
6 | * @param access the access object or the groupID
7 | * @param uid the user id to test
8 | */
9 | function hasUserRole(role: keyof A['user'], access: A, uid: string): boolean {
10 | const userRole = access.user?.[role as keyof typeof access.user];
11 | return uid && userRole === uid ||
12 | (Array.isArray(userRole) && (userRole.indexOf(uid) >= 0))
13 | }
14 |
15 | export default hasUserRole
--------------------------------------------------------------------------------
/packages/access/set-role.ts:
--------------------------------------------------------------------------------
1 | // import { css } from 'lit';
2 | import {customElement} from 'lit/decorators.js';
3 |
4 | import {SetRole} from './internal/set-role';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-set-role': LappSetRole;
9 | }
10 | }
11 |
12 | /**
13 | * @final
14 | * @suppress {visibility}
15 | */
16 | @customElement('lapp-access-set-role')
17 | export default class LappSetRole extends SetRole {
18 |
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/packages/access/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "lit": [
5 | "./node_modules/lit"
6 | ]
7 | }
8 | },
9 | "extends": "../../tsconfig.json",
10 | "include": ["internal/**/*.ts", "*.ts"],
11 | "exclude": []
12 | }
13 |
--------------------------------------------------------------------------------
/packages/actor/actor.ts:
--------------------------------------------------------------------------------
1 | import Actor from "./src/actor";
2 | export { Actor }
3 | export default Actor;
4 |
--------------------------------------------------------------------------------
/packages/actor/context-actor.ts:
--------------------------------------------------------------------------------
1 | import { ConsumeActorMixin, ProvideActorMixin, ActorContext } from "./src/context-actor";
2 | export { ConsumeActorMixin, ProvideActorMixin, ActorContext };
3 |
--------------------------------------------------------------------------------
/packages/actor/registry.ts:
--------------------------------------------------------------------------------
1 | import Registry from "./src/registry";
2 | export { Registry }
3 | export default Registry;
4 |
--------------------------------------------------------------------------------
/packages/actor/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "paths": {
5 | "lit": [
6 | "./node_modules/lit"
7 | ]
8 | }
9 | },
10 | "include": ["src/**/*.ts", "demo/**/*.ts"],
11 | "exclude": []
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/audio/internal/types.ts:
--------------------------------------------------------------------------------
1 | export interface PlayerI {
2 | get paused(): boolean;
3 | get speaking(): boolean;
4 | get ready(): boolean;
5 | get error(): string | undefined;
6 | play: () => void;
7 | pause: () => void;
8 | restart: () => void;
9 | dispose: () => void;
10 | }
11 |
12 | export interface SpeechConfigI {
13 | pitch: number;
14 | rate: number;
15 | language: string;
16 | }
17 |
--------------------------------------------------------------------------------
/packages/cmp/audio/player-controller.ts:
--------------------------------------------------------------------------------
1 | import {PlayerController} from './internal/player-controller.js';
2 | import { cancelSynth } from './internal/speech-controller.js';
3 | import { cancelAudio } from './internal/audio-controller.js';
4 | export {
5 | PlayerController,
6 | cancelSynth,
7 | cancelAudio
8 | };
--------------------------------------------------------------------------------
/packages/cmp/copy/copy.ts:
--------------------------------------------------------------------------------
1 | import { Copy } from './internal/copy';
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | @customElement('lapp-copy')
5 | export class LappCopy extends Copy {
6 | static override styles = [...Copy.styles];
7 | }
8 |
9 | declare global {
10 | interface HTMLElementTagNameMap {
11 | 'lapp-copy': LappCopy;
12 | }
13 | }
--------------------------------------------------------------------------------
/packages/cmp/dialog/dialog-download.ts:
--------------------------------------------------------------------------------
1 | import { DialogDownload } from './internal/dialog-download';
2 | import { customElement } from 'lit/decorators.js';
3 | export { default as DownloadEvent } from './event';
4 | @customElement('lapp-dialog-download')
5 | export class LappDialogDownload extends DialogDownload {
6 | static override styles = DialogDownload.styles;
7 | }
8 |
9 | declare global {
10 | interface HTMLElementTagNameMap {
11 | 'lapp-dialog-download': LappDialogDownload;
12 | }
13 | }
--------------------------------------------------------------------------------
/packages/cmp/dialog/downloadCSV.ts:
--------------------------------------------------------------------------------
1 |
2 | export default function downloadCSV(csvData: string, filename: string) {
3 | const blob = new Blob([csvData], { type: 'text/csv' });
4 | const url = window.URL.createObjectURL(blob);
5 | const a = document.createElement('a');
6 | a.setAttribute('hidden', '');
7 | a.setAttribute('href', url);
8 | a.setAttribute('download', filename);
9 | document.body.appendChild(a);
10 | a.click();
11 | document.body.removeChild(a);
12 | }
--------------------------------------------------------------------------------
/packages/cmp/dialog/downloadJSON.ts:
--------------------------------------------------------------------------------
1 | export default function downloadJSON(data: any[], filename: string) {
2 | const jsonData = JSON.stringify(data, null, 2);
3 | const blob = new Blob([jsonData], { type: 'application/json' });
4 | const url = window.URL.createObjectURL(blob);
5 | const a = document.createElement('a');
6 | a.setAttribute('hidden', '');
7 | a.setAttribute('href', url);
8 | a.setAttribute('download', filename);
9 | document.body.appendChild(a);
10 | a.click();
11 | document.body.removeChild(a);
12 | }
--------------------------------------------------------------------------------
/packages/cmp/dom/README.md:
--------------------------------------------------------------------------------
1 | # DOM
2 |
3 | A series of component relative to DOM manipulation.
4 |
5 | - ``: observe dom changes and notify
--------------------------------------------------------------------------------
/packages/cmp/dom/observer.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { DomObserver } from './internal/observer.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-dom-observer': LappDomObserver;
8 | }
9 | }
10 |
11 | /**
12 | * Listen to dom changes and dispatch content-changed event when content changes
13 | * @fires content-changed
14 | */
15 | @customElement('lapp-dom-observer')
16 | export class LappDomObserver extends DomObserver {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/fab/filled-fab.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 | import {MdFab} from '@material/web/fab/fab.js';
3 | import { Fab } from './internal/fab';
4 | import styles from './internal/styles';
5 | import filledStyles from './internal/filled-styles';
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-filled-fab': LappFilledFab;
10 | }
11 | }
12 |
13 | @customElement('lapp-filled-fab')
14 | export class LappFilledFab extends Fab {
15 | static override styles = [...MdFab.styles, styles, filledStyles];
16 | }
17 |
--------------------------------------------------------------------------------
/packages/cmp/fab/internal/fab.ts:
--------------------------------------------------------------------------------
1 | import { Fab as WebFab } from "@material/web/fab/internal/fab";
2 | import { property } from "lit/decorators.js";
3 |
4 | export class Fab extends WebFab {
5 |
6 | @property({ type: Boolean, reflect: true }) fab = true;
7 |
8 | protected override getRenderClasses() {
9 | const isExtended = !!this.label;
10 | // this allows large to be used with extended
11 | return {
12 | ...super.getRenderClasses(),
13 | 'lowered': this.lowered,
14 | 'small': this.size === 'small' && !isExtended,
15 | 'large': this.size === 'large',
16 | 'extended': isExtended,
17 | };
18 | }
19 | }
--------------------------------------------------------------------------------
/packages/cmp/fab/internal/styles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | .fab.extended {
4 | width: inherit;
5 | }
6 | .large.extended .label {
7 | font-size: var(--font-size-large, 1.25rem);
8 | font-weight: var(--font-weight-semi-bold, 500);
9 | margin-inline-end: 12px;
10 | }
11 |
12 | `;
13 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/fab/outlined-fab.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 | import {MdFab} from '@material/web/fab/fab.js';
3 | import { Fab } from './internal/fab';
4 | import styles from './internal/styles';
5 | import outlinedStyles from './internal/outlined-styles';
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-outlined-fab': LappOutlinedFab;
10 | }
11 | }
12 |
13 | @customElement('lapp-outlined-fab')
14 | export class LappOutlinedFab extends Fab {
15 | static override styles = [...MdFab.styles, styles, outlinedStyles];
16 | }
17 |
--------------------------------------------------------------------------------
/packages/cmp/feedback/README.md:
--------------------------------------------------------------------------------
1 | # Feedback
2 |
3 | A component to collect feedback from users.
4 |
5 |
--------------------------------------------------------------------------------
/packages/cmp/feedback/feedback-mixin.ts:
--------------------------------------------------------------------------------
1 | export * from './src/feedback-mixin.js';
--------------------------------------------------------------------------------
/packages/cmp/feedback/feedback.ts:
--------------------------------------------------------------------------------
1 | import { customElement } from 'lit/decorators.js';
2 | import Feedback from './src/feedback.js';
3 |
4 | /**
5 | *
6 | */
7 |
8 | @customElement('lapp-feedback')
9 | export default class lappFeedback extends Feedback {
10 |
11 | }
12 |
13 | declare global {
14 | interface HTMLElementTagNameMap {
15 | 'lapp-feedback': lappFeedback;
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/feedback/locale.mjs:
--------------------------------------------------------------------------------
1 |
2 | import PfeFeedback from './src/feedback-locale.mjs';
3 | export {
4 | PfeFeedback
5 | };
6 |
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox-field.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import { LappFilledCheckbox } from './checkbox/filled-checkbox';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-checkbox-field': LappCheckboxField;
9 | }
10 | }
11 |
12 | /**
13 | * # Checkbox
14 | *
15 | * @summary
16 | * Checkbox is a component that display allow to register a Checkbox and store it locally.
17 |
18 | * @final
19 | */
20 | @customElement('lapp-checkbox-field')
21 | export class LappCheckboxField extends LappFilledCheckbox {
22 |
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox/internal/filled-checkbox.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 | import {literal} from 'lit/static-html.js';
3 |
4 | import {Checkbox} from './checkbox';
5 |
6 | /**
7 | * An filled text field component
8 | */
9 | export class FilledCheckbox extends Checkbox {
10 | protected readonly fieldTag = literal`lapp-filled-field`;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox/internal/outlined-checkbox.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../field/outlined-field.js';
4 | import {literal} from 'lit/static-html.js';
5 |
6 | import {Checkbox} from './checkbox';
7 |
8 | /**
9 | * An outlined text field component
10 | */
11 | export class OutlinedCheckbox extends Checkbox {
12 | protected readonly fieldTag = literal`lapp-outlined-field`;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/checkbox/sharedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | label {
4 | // padding-top: var(--_with-label-top-space);
5 | display: flex;
6 | align-items: center;
7 | }
8 | `;
9 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice-checkbox.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledCheckbox} from './choice/checkbox/filled-checkbox';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-choice-checkbox': LappChoiceCheckbox;
8 | }
9 | }
10 |
11 | /**
12 | * @final
13 | * @suppress {visibility}
14 | */
15 | @customElement('lapp-choice-checkbox')
16 | export class LappChoiceCheckbox extends LappFilledCheckbox {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice-order.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledOrder} from './choice/order/filled-order';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-choice-order': LappChoiceOrder;
8 | }
9 | }
10 |
11 | /**
12 | * @final
13 | * @suppress {visibility}
14 | */
15 | @customElement('lapp-choice-order')
16 | export class LappChoiceOrder extends LappFilledOrder {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice-radio.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledRadio} from './choice/radio/filled-radio';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-choice-radio': LappChoiceRadio;
8 | }
9 | }
10 |
11 | /**
12 | * @final
13 | * @suppress {visibility}
14 | */
15 | @customElement('lapp-choice-radio')
16 | export class LappChoiceRadio extends LappFilledRadio {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice-star.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledStar} from './choice/star/filled-star';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-choice-star': LappChoiceStar;
8 | }
9 | }
10 |
11 | /**
12 | * @final
13 | * @suppress {visibility}
14 | */
15 | @customElement('lapp-choice-star')
16 | export class LappChoiceStar extends LappFilledStar {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/checkbox/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | :host { }
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/checkbox/internal/filled-checkbox.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2021 Google LLC
4 | * SPDX-License-Identifier: Apache-2.0
5 | */
6 |
7 | import '../../../field/filled-field.js';
8 |
9 | import {literal} from 'lit/static-html.js';
10 |
11 | import {Checkbox} from './checkbox';
12 |
13 | /**
14 | * An filled text field component
15 | */
16 | export class FilledCheckbox extends Checkbox {
17 | protected override readonly fieldTag = literal`lapp-filled-field`;
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/checkbox/internal/outlined-checkbox.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | /**
4 | * @license
5 | * Copyright 2021 Google LLC
6 | * SPDX-License-Identifier: Apache-2.0
7 | */
8 |
9 | import '@lit-app/field/outlined-field.js';
10 |
11 | import {literal} from 'lit/static-html.js';
12 |
13 | import {Checkbox} from './checkbox';
14 |
15 | /**
16 | * An outlined text field component
17 | */
18 | export class OutlinedCheckbox extends Checkbox {
19 | protected readonly fieldTag = literal`lapp-outlined-field`;
20 | }
21 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/checkbox/internal/shared-styles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 |
5 | *[data-role="checkbox"] {
6 | margin-inline-start: 4px;
7 | }
8 |
9 | /** checkbox are not printed without this */
10 | md-checkbox {
11 | -webkit-print-color-adjust:exact !important;
12 | print-color-adjust:exact !important;
13 | }
14 |
15 | /** we want some denser layout for print */
16 | @media print {
17 | *[data-role="checkbox"] {
18 | margin-top: 2px;
19 | margin-bottom: 2px;
20 | }
21 |
22 | }
23 | `;
24 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/checkbox/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | :host {
4 |
5 | }
6 | `;
7 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/list.ts:
--------------------------------------------------------------------------------
1 | import { LitElement } from "lit";
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | /**
5 | * A proxy list to use with choice
6 | * It is responsible for the validation and the rendering of the list
7 | * We render in the light dom so
8 | */
9 |
10 | @customElement('ul-choice')
11 | export default class ulChoice extends LitElement {
12 |
13 | override createRenderRoot() {
14 | return this;
15 | }
16 | }
17 |
18 | declare global {
19 | interface HTMLElementTagNameMap {
20 | 'ul-choice': ulChoice;
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/order/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | // :host {
4 | // display: block;
5 | // border: solid 1px gray;
6 | // padding: 16px;
7 | // max-width: 800px;
8 | // }
9 | `;
10 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/order/internal/filled-order.ts:
--------------------------------------------------------------------------------
1 | import '../../../field/filled-field.js';
2 |
3 | import { literal } from 'lit/static-html.js';
4 |
5 | import { Order } from './order';
6 |
7 | /**
8 | * An filled text field component
9 | */
10 | export class FilledOrder extends Order {
11 | protected override readonly fieldTag = literal`lapp-filled-field`;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/order/internal/locale.mjs:
--------------------------------------------------------------------------------
1 | export default {
2 | moveDown: 'move item {{label}} down',
3 | moveUp: 'move item {{label}} up'
4 | }
--------------------------------------------------------------------------------
/packages/cmp/field/choice/order/internal/outlined-order.ts:
--------------------------------------------------------------------------------
1 | import '../../../field/outlined-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {Order} from './order';
6 |
7 | /**
8 | * An outlined text field component
9 | */
10 | export class OutlinedOrder extends Order {
11 | protected readonly fieldTag = literal`lapp-outlined-field`;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/order/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/radio/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/radio/internal/filled-radio.ts:
--------------------------------------------------------------------------------
1 | import '../../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {Radio} from './radio';
6 |
7 | /**
8 | * An filled text field component
9 | */
10 | export class FilledRadio extends Radio {
11 | protected override readonly fieldTag = literal`lapp-filled-field`;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/radio/internal/outlined-radio.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../../field/outlined-field.js';
4 |
5 | import {literal} from 'lit/static-html.js';
6 |
7 | import {Radio} from './radio';
8 |
9 | /**
10 | * An outlined text field component
11 | */
12 | export class OutlinedRadio extends Radio {
13 | protected readonly fieldTag = literal`lapp-outlined-field`;
14 | }
15 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/radio/internal/shared-styles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | *[data-role="radio"] {
4 | margin-inline-end: 16px;
5 | margin-inline-start: 4px;
6 | }
7 | `;
8 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/radio/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/star/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/choice/star/internal/filled-star.ts:
--------------------------------------------------------------------------------
1 | import '../../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {Star} from './star';
6 |
7 | /**
8 | * An filled text field component
9 | */
10 | export class FilledStar extends Star {
11 | protected override readonly fieldTag = literal`lapp-filled-field`;
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/star/internal/outlined-star.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../../field/outlined-field.js';
4 |
5 | import {literal} from 'lit/static-html.js';
6 |
7 | import {Star} from './star';
8 |
9 | /**
10 | * An outlined text field component
11 | */
12 | export class OutlinedStar extends Star {
13 | protected readonly fieldTag = literal`lapp-outlined-field`;
14 | }
15 |
--------------------------------------------------------------------------------
/packages/cmp/field/choice/star/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/field/internal/filled-field.ts:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * A filled field component.
4 | */
5 | import {FilledField as F} from '@material/web/field/internal/filled-field';
6 | import A11yFieldMixin from './a11y-field-mixin';
7 | export class FilledField extends A11yFieldMixin(F) {
8 | }
9 |
10 |
--------------------------------------------------------------------------------
/packages/cmp/field/field/internal/outlined-field.ts:
--------------------------------------------------------------------------------
1 | import {OutlinedField as F} from '@material/web/field/internal/outlined-field';
2 | import A11yFieldMixin from './a11y-field-mixin';
3 | export class OutlinedField extends A11yFieldMixin(F) {
4 | }
5 |
--------------------------------------------------------------------------------
/packages/cmp/field/field/internal/supporting-text-styles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 |
3 | const styles = css`
4 | .supporting-text > span:first-child {
5 | opacity: 1;
6 | transition: opacity var(--transition-quickly);
7 | }
8 |
9 | /** only display supporting-text on focus */
10 | :host(.textfield:not([focused]):not([persistSupportingText])) .supporting-text:not([role="alert"]) > span:not(.counter) {
11 | opacity: 0;
12 | }
13 | .supporting-text:not([role="alert"]) > span:not(.counter) {
14 | opacity: 1;
15 | }
16 | `
17 |
18 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/generic/styles.ts:
--------------------------------------------------------------------------------
1 | import {css, CSSResult} from 'lit';
2 | const styles: CSSResult = css`
3 | :host > span,
4 | :host > div {
5 | display: inline-flex;
6 | flex: 1;
7 | align-items: flex-start;
8 | }
9 | input[type="color"] {
10 | min-height: 24px;
11 | }
12 |
13 | `
14 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/locale.mjs:
--------------------------------------------------------------------------------
1 | import Readaloud from './choice/readaloud-locale.mjs';
2 | import lappInputRecord from './record/internal/record-locale.mjs';
3 | export {
4 | Readaloud,
5 | lappInputRecord
6 | };
7 |
--------------------------------------------------------------------------------
/packages/cmp/field/md-droppable-editor.ts:
--------------------------------------------------------------------------------
1 | // TODO: import from lapp-textfield and remove lapp-textfield
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import MdDroppableEditor from './md/md-droppable-editor.js';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-md-droppable-editor': LappMdDroppableEditor;
9 | }
10 | }
11 |
12 | /**
13 | * A markdown editor that support translation and preview.
14 | */
15 | @customElement('lapp-md-droppable-editor')
16 | export class LappMdDroppableEditor extends MdDroppableEditor {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/md-editor.ts:
--------------------------------------------------------------------------------
1 | // TODO: import from lapp-textfield and remove lapp-textfield
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import MdEditor from './md/md-editor.js';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-md-editor': LappMdEditor;
9 | }
10 | }
11 |
12 | /**
13 | * A markdown editor that support translation and preview.
14 | */
15 | @customElement('lapp-md-editor')
16 | export class LappMdEditor extends MdEditor {
17 |
18 | }
19 |
--------------------------------------------------------------------------------
/packages/cmp/field/md/types.ts:
--------------------------------------------------------------------------------
1 | export type MdConfigT = {
2 | ADD_ATTR: string[];
3 | ADD_TAGS: string[];
4 | }
--------------------------------------------------------------------------------
/packages/cmp/field/record-field.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import { LappFilledRecordField } from './record/filled-record-field';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-record-field': LappRecordField;
9 | }
10 | }
11 |
12 | /**
13 | * # record
14 | *
15 | * @summary
16 | * Record is a component that display allow to register a record and store it locally.
17 |
18 | * @final
19 | */
20 | @customElement('lapp-record-field')
21 | export class LappRecordField extends LappFilledRecordField {
22 |
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/packages/cmp/field/record/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/record/internal/filled-record-field.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {RecordField} from './record-field';
6 |
7 | /**
8 | * An filled text field component
9 | */
10 | export class FilledRecordField extends RecordField {
11 | protected readonly fieldTag = literal`lapp-filled-field`;
12 | }
--------------------------------------------------------------------------------
/packages/cmp/field/record/internal/input-record.ts:
--------------------------------------------------------------------------------
1 | import { Record } from './record';
2 | import { property } from 'lit/decorators.js';
3 |
4 | /**
5 | * A record Component to be used within RecordField
6 | *
7 | */
8 |
9 | export class InputRecord extends Record {
10 |
11 |
12 | @property()
13 | get value() {
14 | return this.src;
15 | }
16 | set value(value) {
17 | this.src = value
18 | }
19 |
20 |
21 | }
22 |
23 |
--------------------------------------------------------------------------------
/packages/cmp/field/record/internal/outlined-record-field.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../field/outlined-field.js';
4 |
5 | import {literal} from 'lit/static-html.js';
6 |
7 | import {RecordField} from './record-field';
8 |
9 | /**
10 | * An outlined text field component
11 | */
12 | export class OutlinedRecordField extends RecordField {
13 | protected readonly fieldTag = literal`lapp-outlined-field`;
14 | }
--------------------------------------------------------------------------------
/packages/cmp/field/record/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/record/record.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import styles from './record-styles';
5 | import { Record } from './internal/record';
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-record': LappRecord;
10 | }
11 | }
12 |
13 | /**
14 | * # record
15 | *
16 | * @summary
17 | * Record is a component that display allow to register a record and store it locally.
18 |
19 | * @final
20 | */
21 | @customElement('lapp-record')
22 | export class LappRecord extends Record {
23 | static override styles = [
24 | styles,
25 | ];
26 | }
27 |
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-a11y-menu.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-a11y-menu.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-activate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-activate.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-distribute.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-distribute.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-edit-mode.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-edit-mode.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-listen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-listen.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-narrow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-narrow.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-pause.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-pause.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-record.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-record.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-start-again.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-start-again.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/releaseNotes/assets/voice-test.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/record/releaseNotes/assets/voice-test.png
--------------------------------------------------------------------------------
/packages/cmp/field/record/stream.ts:
--------------------------------------------------------------------------------
1 | let stream: MediaStream | null = null;
2 |
3 | /**
4 | * @param config configuration for the stream
5 | * @returns a promise with the stream
6 | */
7 | export const getStream = async (config: MediaStreamConstraints = {audio: true}): Promise => {
8 | if (!stream) {
9 | stream = await navigator.mediaDevices.getUserMedia(config);
10 | }
11 | return stream;
12 | };
13 | /**
14 | * Stop all streams
15 | */
16 | export const stopAllStreams = () => {
17 | if (stream) {
18 | stream.getTracks().forEach((track) => {
19 | track.stop();
20 | });
21 | stream = null;
22 | }
23 | };
--------------------------------------------------------------------------------
/packages/cmp/field/select-input.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledSelectInput} from './select/filled-select-input.js';
4 | import '@material/web/select/select-option.js'
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-select-input': LappSelectInput;
9 | }
10 | }
11 |
12 | /**
13 | * @final
14 | * @suppress {visibility}
15 | */
16 | @customElement('lapp-select-input')
17 | export class LappSelectInput extends LappFilledSelectInput {
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/packages/cmp/field/select.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import {LappFilledSelect} from './select/filled-select';
4 | import '@material/web/select/select-option.js'
5 |
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-select': LappSelect;
10 | }
11 | }
12 |
13 | /**
14 | * @final
15 | * @suppress {visibility}
16 | */
17 | @customElement('lapp-select')
18 | export class LappSelect extends LappFilledSelect {
19 |
20 | }
21 |
--------------------------------------------------------------------------------
/packages/cmp/field/select/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | :host([variant='a11y']) {
4 | --md-filled-field-label-text-populated-line-height: 0.2rem;
5 | }
6 |
7 | `;
8 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/select/internal/filled-select-input.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {SelectInput} from './select-input.js';
6 |
7 | export abstract class FilledSelectInput extends SelectInput {
8 | protected readonly fieldTag = literal`lapp-filled-field`;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/cmp/field/select/internal/filled-select.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {Select} from './select.js';
6 |
7 | export abstract class FilledSelect extends Select {
8 | protected override readonly fieldTag = literal`lapp-filled-field`;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/cmp/field/select/internal/outlined-select-input.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 |
3 | import {literal} from 'lit/static-html.js';
4 |
5 | import {SelectInput} from './select-input.js';
6 |
7 | export abstract class OutlinedSelectInput extends SelectInput {
8 | protected readonly fieldTag = literal`lapp-outlined-field`;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/cmp/field/select/internal/outlined-select.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2023 Google LLC
4 | * SPDX-License-Identifier: Apache-2.0
5 | */
6 |
7 | import '../../field/outlined-field.js';
8 | import {literal} from 'lit/static-html.js';
9 |
10 | import {Select} from './select.js';
11 |
12 | // tslint:disable-next-line:enforce-comments-on-exported-symbols
13 | export abstract class OutlinedSelect extends Select {
14 | protected readonly fieldTag = literal`lapp-outlined-field`;
15 | }
16 |
--------------------------------------------------------------------------------
/packages/cmp/field/select/internal/selectInputStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | #label {
5 | line-height: 0px;
6 | display: flex;
7 | align-items: center;
8 | }
9 |
10 | #label input {
11 | all: inherit;
12 | flex: 1;
13 | padding: 0px;
14 | padding-block: 0px;
15 | padding-inline: 0px;
16 | line-height: 1.5rem;
17 | cursor: text;
18 | }
19 |
20 | md-chip-set {
21 | flex: 0;
22 | }
23 |
24 | md-input-chip:last-of-type {
25 | margin-inline-end: 6px;
26 | }
27 |
28 | md-menu {
29 | min-width: 0;
30 | width: 0;
31 | }
32 |
33 |
34 |
35 | `;
36 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/select/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/slider-field.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import { LappFilledSlider } from './slider/filled-slider';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-slider-field': LappSliderField;
9 | }
10 | }
11 |
12 | /**
13 | * # Slider
14 | *
15 | * @summary
16 | * slider is a component that display allow to register a slider and store it locally.
17 |
18 | * @final
19 | */
20 | @customElement('lapp-slider-field')
21 | export class LappSliderField extends LappFilledSlider {
22 |
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/packages/cmp/field/slider-range-field.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement, property } from 'lit/decorators.js';
3 |
4 | import { LappSliderField } from './slider-field';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-slider-range-field': LappSliderRangeField;
9 | }
10 | }
11 |
12 | /**
13 | * # Slider
14 | *
15 | * @summary
16 | * slider is a component that display allow to register a slider and store it locally.
17 |
18 | * @final
19 | */
20 | @customElement('lapp-slider-range-field')
21 | export class LappSliderRangeField extends LappSliderField {
22 | @property({type: Boolean}) range = true;
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/packages/cmp/field/slider/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/slider/internal/filled-slider.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 | import {literal} from 'lit/static-html.js';
3 |
4 | import {Slider} from './slider';
5 |
6 | /**
7 | * An filled text field component
8 | */
9 | export class FilledSlider extends Slider {
10 | protected override readonly fieldTag = literal`lapp-filled-field`;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/cmp/field/slider/internal/outlined-slider.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../field/outlined-field.js';
4 | import {literal} from 'lit/static-html.js';
5 |
6 | import {Slider} from './slider';
7 |
8 | /**
9 | * An outlined text field component
10 | */
11 | export class OutlinedSlider extends Slider {
12 | protected override readonly fieldTag = literal`lapp-outlined-field`;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cmp/field/slider/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/slider/releaseNotes/assets/slider-edit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/slider/releaseNotes/assets/slider-edit.png
--------------------------------------------------------------------------------
/packages/cmp/field/slider/releaseNotes/assets/slider-range.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/slider/releaseNotes/assets/slider-range.png
--------------------------------------------------------------------------------
/packages/cmp/field/slider/releaseNotes/assets/slider-select-range.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/slider/releaseNotes/assets/slider-select-range.png
--------------------------------------------------------------------------------
/packages/cmp/field/slider/releaseNotes/assets/slider-simple.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/field/slider/releaseNotes/assets/slider-simple.png
--------------------------------------------------------------------------------
/packages/cmp/field/slider/sharedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | lapp-slider {
5 | flex: 1;
6 | margin-block-start: 10px;
7 | }
8 |
9 | label {
10 | line-height: 0px;
11 | display: flex;
12 | align-items: center;
13 | }
14 |
15 |
16 |
17 | `;
18 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/switch-field.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 | import { LappFilledSwitch } from './switch/filled-switch';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-switch-field': LappSwitchField;
8 | }
9 | }
10 |
11 | /**
12 | * # Switch
13 | *
14 | * @summary
15 | * Switch is a component that display allow to register a Switch and store it locally.
16 |
17 | * @final
18 | */
19 | @customElement('lapp-switch-field')
20 | export class LappSwitchField extends LappFilledSwitch {
21 |
22 | }
23 |
24 |
--------------------------------------------------------------------------------
/packages/cmp/field/switch/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/switch/internal/filled-switch.ts:
--------------------------------------------------------------------------------
1 | import { literal } from 'lit/static-html.js';
2 | import '../../field/filled-field.js';
3 |
4 | import { Switch } from './switch.js';
5 |
6 | /**
7 | * An filled text field component
8 | */
9 | export class FilledSwitch extends Switch {
10 | protected override readonly fieldTag = literal`lapp-filled-field`;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/cmp/field/switch/internal/outline-switch.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import { literal } from 'lit/static-html.js';
4 | import '../../field/outlined-field.js';
5 |
6 | import { Switch } from './switch.js';
7 |
8 | /**
9 | * An outlined text field component
10 | */
11 | export class OutlinedSwitch extends Switch {
12 | protected override readonly fieldTag = literal`lapp-outlined-field`;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cmp/field/switch/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/switch/sharedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 | label {
4 | // padding-top: var(--_with-label-top-space);
5 | display: flex;
6 | align-items: center;
7 | }
8 | `;
9 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/text-field.ts:
--------------------------------------------------------------------------------
1 | // TODO: import from lapp-textfield and remove lapp-textfield
2 | import {customElement} from 'lit/decorators.js';
3 |
4 | import { LappFilledTextField } from './textfield/filled-text-field.js';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-text-field': LappTextfield;
9 | }
10 | }
11 |
12 | /**
13 | * @final
14 | * @suppress {visibility}
15 | */
16 | @customElement('lapp-text-field')
17 | export class LappTextfield extends LappFilledTextField {
18 |
19 | }
20 |
--------------------------------------------------------------------------------
/packages/cmp/field/textfield/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/textfield/internal/filled-text-field.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2023 Google LLC
4 | * SPDX-License-Identifier: Apache-2.0
5 | */
6 |
7 | import '../../field/filled-field.js';
8 |
9 | import {literal} from 'lit/static-html.js';
10 |
11 | import {TextField} from './text-field.js';
12 |
13 |
14 | // tslint:disable-next-line:enforce-comments-on-exported-symbols
15 | export abstract class FilledTextField extends TextField {
16 | protected override readonly fieldTag = literal`lapp-filled-field`;
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/field/textfield/internal/outlined-text-field.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * @license
3 | * Copyright 2023 Google LLC
4 | * SPDX-License-Identifier: Apache-2.0
5 | */
6 |
7 | import '../../field/outlined-field.js';
8 | import {literal} from 'lit/static-html.js';
9 |
10 | import {TextField} from './text-field.js';
11 |
12 | // tslint:disable-next-line:enforce-comments-on-exported-symbols
13 | export abstract class OutlinedTextField extends TextField {
14 | protected readonly fieldTag = literal`lapp-outlined-field`;
15 | }
16 |
--------------------------------------------------------------------------------
/packages/cmp/field/textfield/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/upload.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import { LappFilledUpload } from './upload/filled-upload';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-upload': LappUpload;
9 | }
10 | }
11 |
12 | /**
13 | * # Slider
14 | *
15 | * @summary
16 | * slider is a component that display allow to register a slider and store it locally.
17 |
18 | * @final
19 | */
20 | @customElement('lapp-upload')
21 | export class LappUpload extends LappFilledUpload {
22 |
23 | }
24 |
25 |
--------------------------------------------------------------------------------
/packages/cmp/field/upload/filledStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/field/upload/internal/filled-upload.ts:
--------------------------------------------------------------------------------
1 | import '../../field/filled-field.js';
2 | import {literal} from 'lit/static-html.js';
3 |
4 | import {Upload} from './upload';
5 |
6 | /**
7 | * An filled text field component
8 | */
9 | export class FilledUpload extends Upload {
10 | protected override readonly fieldTag = literal`lapp-filled-field`;
11 | }
12 |
--------------------------------------------------------------------------------
/packages/cmp/field/upload/internal/outlined-upload.ts:
--------------------------------------------------------------------------------
1 |
2 |
3 | import '../../field/outlined-field.js';
4 | import {literal} from 'lit/static-html.js';
5 |
6 | import {Upload} from './upload';
7 |
8 | /**
9 | * An outlined text field component
10 | */
11 | export class OutlinedUpload extends Upload {
12 | protected override readonly fieldTag = literal`lapp-outlined-field`;
13 | }
14 |
--------------------------------------------------------------------------------
/packages/cmp/field/upload/outlinedStyles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/icon/icon.ts:
--------------------------------------------------------------------------------
1 | import { customElement } from 'lit/decorators.js';
2 |
3 | import { Icon } from './internal/icon.js';
4 | import { MdIcon } from '@material/web/icon/icon.js'
5 | import styles from './internal/icon-styles.js';
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-icon': LappIcon;
10 | }
11 | }
12 |
13 | /**
14 | * @final
15 | * @suppress {visibility}
16 | */
17 | @customElement('lapp-icon')
18 | export class LappIcon extends Icon {
19 | static override styles = [
20 | MdIcon.styles,
21 | styles
22 | ];
23 | }
--------------------------------------------------------------------------------
/packages/cmp/icon/internal/icon-styles.ts:
--------------------------------------------------------------------------------
1 | import { css, CSSResult } from 'lit';
2 | const styles: CSSResult = css`
3 | :host {
4 | --_lapp-icon-margin: var(--lapp-icon-margin, 0px);
5 | }
6 |
7 | svg {
8 | all: unset;
9 | height: calc(100% - 2 * var(--_lapp-icon-margin));
10 | width: calc(100% - 2 * var(--_lapp-icon-margin));
11 | fill: currentColor;
12 | margin: var(--_lapp-icon-margin);
13 | }
14 |
15 | path {
16 | fill: currentColor;
17 | }
18 | slot {
19 | display: none;
20 | }
21 | `
22 |
23 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/locale.mjs:
--------------------------------------------------------------------------------
1 | export * from './field/locale.mjs';
2 | export * from './feedback/locale.mjs';
--------------------------------------------------------------------------------
/packages/cmp/process/process.ts:
--------------------------------------------------------------------------------
1 |
2 | import { customElement } from 'lit/decorators.js';
3 |
4 | import styles from './styles';
5 | import { Process } from './internal/process';
6 |
7 | declare global {
8 | interface HTMLElementTagNameMap {
9 | 'lapp-process': LappProcess;
10 | }
11 | }
12 |
13 | /**
14 | * Process
15 | *
16 | * An element that display a process reflecting
17 | * the progress of a task.
18 | * @final
19 | */
20 | @customElement('lapp-process')
21 | export class LappProcess extends Process {
22 | static override styles = [
23 | styles,
24 | ];
25 | }
26 |
--------------------------------------------------------------------------------
/packages/cmp/process/styles.ts:
--------------------------------------------------------------------------------
1 | import { css } from 'lit';
2 | const styles = css`
3 |
4 | `;
5 | export default styles;
--------------------------------------------------------------------------------
/packages/cmp/public/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/cmp/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/cmp/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/cmp/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/cmp/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/cmp/renderer/date.ts:
--------------------------------------------------------------------------------
1 | import { html } from 'lit';
2 |
3 | /**
4 | * Renders a date value as a formatted string.
5 | *
6 | * @param timestamp - The timestamp to render.
7 | * @returns The HTML element representing the formatted date.
8 | */
9 | export default (timestamp: number | undefined | null) => {
10 | if (!timestamp)
11 | return html`-`;
12 | return html`${(new Date(timestamp)).toLocaleDateString(undefined, { dateStyle: 'medium' })}`;
13 | };
14 |
--------------------------------------------------------------------------------
/packages/cmp/role/internal/README.md:
--------------------------------------------------------------------------------
1 | # ROLE
2 |
3 | A series of components to set user roles and permissions:
4 | - ``: set user role
5 | - ``: set user permission
6 | - ``: a list of users with their roles and permissions
--------------------------------------------------------------------------------
/packages/cmp/tabs/internal/styles.ts:
--------------------------------------------------------------------------------
1 | import { css, CSSResult } from 'lit';
2 |
3 | export const styles: CSSResult = css`
4 | .content:not(.show-close-icon) ::slotted(md-icon-button) {
5 | display: none;
6 | }
7 | .content.show-close-icon ::slotted(lapp-icon) {
8 | display: none;
9 | }
10 | `;
11 |
--------------------------------------------------------------------------------
/packages/cmp/tabs/primary-tab-closable.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 | import Closable from './internal/closable-tab-mixin.js';
3 | import {MdPrimaryTab} from '@material/web/tabs/primary-tab.js';
4 | import { styles } from './internal/styles';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-primary-tab-closable': LappClosableTab;
9 | }
10 | }
11 |
12 | @customElement('lapp-primary-tab-closable')
13 | export class LappClosableTab extends Closable(MdPrimaryTab) {
14 | static override styles = [...MdPrimaryTab.styles, styles];
15 | }
16 |
--------------------------------------------------------------------------------
/packages/cmp/tabs/secondary-tab-closable.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 | import Closable from './internal/closable-tab-mixin.js';
3 | import {MdSecondaryTab} from '@material/web/tabs/secondary-tab.js';
4 | import { styles } from './internal/styles';
5 |
6 | declare global {
7 | interface HTMLElementTagNameMap {
8 | 'lapp-secondary-tab-closable': LappClosableTab;
9 | }
10 | }
11 |
12 | @customElement('lapp-secondary-tab-closable')
13 | export class LappClosableTab extends Closable(MdSecondaryTab) {
14 | static override styles = [...MdSecondaryTab.styles, styles];
15 | }
16 |
--------------------------------------------------------------------------------
/packages/cmp/toolbar/README.md:
--------------------------------------------------------------------------------
1 | # Toolbar Component
2 |
3 | A toolbar component that properly manages focus and accessibility.
4 |
5 | It follow the pattern of the [WAI-ARIA Authoring Practices](https://www.w3.org/WAI/ARIA/apg/patterns/toolbar/) for a toolbar.
6 |
7 | It uses @material/list-controller to manage the focus and the selection of the items.
8 |
9 |
--------------------------------------------------------------------------------
/packages/cmp/tooltip/README.md:
--------------------------------------------------------------------------------
1 | # Tooltip
2 |
3 | Tooltip implementation. For the time being, it just a re-import of pwi-tooltip under a different name.
4 |
5 | ## TODO
6 |
7 | - [ ] improve accessibility of the tooltip - see `vaadin-tooltip` and use of `aria-describedby`
8 | - [ ] avoid slotting the tooltip content, an id / for relationship would be better
9 | - [ ] replace all pwi-tooltip elements with lapp-tooltip
10 | - [ ] replace all pwi-form-tooltip with lapp-tooltip in the code
11 | - [ ] replace all pwi-firebase tooltip with lapp-tooltip in the code
12 | - [ ] remove pwi-tooltip from package
13 |
14 |
--------------------------------------------------------------------------------
/packages/cmp/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "paths": {
5 | "lit": [
6 | "./node_modules/lit"
7 | ]
8 | }
9 | },
10 | "include": ["./**/*.ts"],
11 | "exclude": []
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/types.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/cmp/types.ts
--------------------------------------------------------------------------------
/packages/cmp/upload/internals/normalizeFile.ts:
--------------------------------------------------------------------------------
1 | import { UploadFile } from "@vaadin/upload/vaadin-lit-upload.js";
2 |
3 | export function normalizeFile(file: UploadFile): UploadFile & { timestamp: string } {
4 | return {
5 | ...file,
6 | lastModified: file.lastModified || 0,
7 | name: file.name || '',
8 | size: file.size || 0,
9 | type: file.type || '',
10 | timestamp: new Date().toISOString()
11 | } as UploadFile & { timestamp: string }
12 | }
--------------------------------------------------------------------------------
/packages/cmp/user/README.md:
--------------------------------------------------------------------------------
1 | # User
2 |
3 | Components for user display:
4 |
5 | - ``: display user image
6 | - ``: display user name
7 | - ``: display a user card with image and name
8 | - ``: select / search a user from a list
9 | - ``: display a list of users
10 |
11 | ## TODO
12 |
13 | - [ ] adapt user-select and base it from search component
14 | - [ ] make this a standalone package:
15 | - [ ] remove firebase dependency
16 |
--------------------------------------------------------------------------------
/packages/cmp/user/card.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserCard } from './internal/card.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-card': LappUserCard;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user card when provided with uid
13 | */
14 | @customElement('lapp-user-card')
15 | export class LappUserCard extends UserCard {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/img-list.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserImgList } from './internal/img-list.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-img-list': LappUserImg;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display users with a list of images
13 | */
14 | @customElement('lapp-user-img-list')
15 | export class LappUserImg extends UserImgList {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/img.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserImg } from './internal/img.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-img': LappUserImg;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user image when provided with uid
13 | */
14 | @customElement('lapp-user-img')
15 | export class LappUserImg extends UserImg {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/internal/card.ts:
--------------------------------------------------------------------------------
1 | import userItemMixin from './user-item-mixin.js';
2 | import { MdListItem } from '@material/web/list/list-item.js';
3 | import('@material/web/list/list-item.js');
4 |
5 | /**
6 | * A card widget to display user information
7 | */
8 |
9 | export class UserCard extends userItemMixin(MdListItem) {
10 |
11 |
12 | }
13 |
--------------------------------------------------------------------------------
/packages/cmp/user/internal/select-item.ts:
--------------------------------------------------------------------------------
1 | import userItemMixin from './user-item-mixin.js';
2 | import { MdSelectOption } from '@material/web/select/select-option.js';
3 | import('@material/web/select/select-option.js');
4 |
5 | /**
6 | * A card widget to display user information
7 | */
8 |
9 | export class UserSelectItem extends userItemMixin(MdSelectOption ) {
10 |
11 |
12 |
13 |
14 | }
15 |
--------------------------------------------------------------------------------
/packages/cmp/user/invite-list.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { InviteList } from './internal/invite-list.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-invite-list': LappInviteList;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user list when provided with uid
13 | */
14 | @customElement('lapp-invite-list')
15 | export class LappInviteList extends InviteList {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/list.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserList } from './internal/list.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-list': LappUserList;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user list when provided with uid
13 | */
14 | @customElement('lapp-user-list')
15 | export class LappUserList extends UserList {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/name.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserName } from './internal/name.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-name': LappUserName;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user name when provided with uid
13 | */
14 | @customElement('lapp-user-name')
15 | export class LappUserName extends UserName {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/quote.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserQuote } from './internal/quote.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-quote': LappUserQuote;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user image when provided with uid
13 | */
14 | @customElement('lapp-user-quote')
15 | export class LappUserQuote extends UserQuote {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/search.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserSearch } from './internal/search.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-search': LappUserSearch;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user select when provided with uid
13 | */
14 | @customElement('lapp-user-search')
15 | export class LappUserSearch extends UserSearch {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/select-item.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserSelectItem } from './internal/select-item.js';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-select-item': LappUserSelectItem;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user card when provided with uid
13 | */
14 | @customElement('lapp-user-select-item')
15 | export class LappUserSelectItem extends UserSelectItem {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/spotlight.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserSpotlight } from './internal/spotlight';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-spotlight': LappUserSpotlight;
8 | }
9 | }
10 |
11 | /**
12 | * An element to display user spotlight when provided with uid
13 | */
14 | @customElement('lapp-user-spotlight')
15 | export class LappUserSpotlight extends UserSpotlight {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/cmp/user/thread.ts:
--------------------------------------------------------------------------------
1 | import {customElement} from 'lit/decorators.js';
2 |
3 | import { UserThread } from './internal/thread';
4 |
5 | declare global {
6 | interface HTMLElementTagNameMap {
7 | 'lapp-user-thread': LappUserThread;
8 | }
9 | }
10 |
11 | /**
12 | * A card like container with an avatar on the left
13 | */
14 | @customElement('lapp-user-thread')
15 | export class LappUserThread extends UserThread {
16 |
17 | }
18 |
--------------------------------------------------------------------------------
/packages/entity/LabelM.ts:
--------------------------------------------------------------------------------
1 | export interface LabelUI {
2 | /**
3 | * The title of the label
4 | */
5 | title: string
6 | description?: StringConstructor
7 | /**
8 | * starred labels have priority
9 | */
10 | starred?: boolean
11 | /**
12 | * background color of the label
13 | */
14 | color?: string
15 | }
16 |
17 | export interface LabelI extends LabelUI {
18 | }
19 |
20 |
21 |
--------------------------------------------------------------------------------
/packages/entity/README.md:
--------------------------------------------------------------------------------
1 | # Entity
2 |
3 | A package that provides a base class for entities to be shared across different applications.
4 |
--------------------------------------------------------------------------------
/packages/entity/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | router-slot
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/entity/locale.mjs:
--------------------------------------------------------------------------------
1 | // export * from './field/locale.mjs';
--------------------------------------------------------------------------------
/packages/entity/public/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/entity/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/entity/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/entity/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/entity/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/entity/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "paths": {
5 | "lit": [
6 | "./node_modules/lit"
7 | ]
8 |
9 | }
10 | },
11 | "include": ["./**/*.ts"],
12 | "exclude": []
13 | }
14 |
--------------------------------------------------------------------------------
/packages/entity/types.ts:
--------------------------------------------------------------------------------
1 |
2 | export interface UserPreferenceI {
3 | theme?: string
4 | language?: string
5 | shortcut: {
6 | team: string[]
7 | }
8 | }
--------------------------------------------------------------------------------
/packages/form/context-form.ts:
--------------------------------------------------------------------------------
1 | export * from './src/context-form';
--------------------------------------------------------------------------------
/packages/form/demo/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 | FORM
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/packages/form/form.ts:
--------------------------------------------------------------------------------
1 | export * from './src/form';
--------------------------------------------------------------------------------
/packages/form/index.ts:
--------------------------------------------------------------------------------
1 | export { ConsumeFormMixin, } from './src/context-form';
2 | export { BindFieldEvent, UnbindFieldEvent } from './src/form';
3 | import './src/form';
4 |
--------------------------------------------------------------------------------
/packages/form/locale.mjs:
--------------------------------------------------------------------------------
1 | // export * from './field/locale.mjs';
--------------------------------------------------------------------------------
/packages/form/public/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/form/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/form/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/form/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/form/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/form/src/types.ts:
--------------------------------------------------------------------------------
1 | import { ConstraintValidation } from "@material/web/labs/behaviors/constraint-validation.js";
2 |
3 | export type MimeTypesT = "application/x-www-form-urlencoded" | "multipart/form-data" | "text/plain";
4 | // export type FormMethodT = 'get' | 'post';
5 |
6 | export interface FormFieldI extends ConstraintValidation {
7 | focus(options?: FocusOptions): void;
8 | blur(): void;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/form/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 |
5 | },
6 | "include": ["./**/*.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/packages/location/locale.mjs:
--------------------------------------------------------------------------------
1 | // export * from './field/locale.mjs';
--------------------------------------------------------------------------------
/packages/location/public/README.md:
--------------------------------------------------------------------------------
1 | # Documentation for the location package
2 |
3 | Flags have been downloaded from https://alexsobolenko.github.io/flag-icons/
4 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/are.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/arm.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/aut.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/aze.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bel.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ben.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bes.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bfa.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bgd.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bgr.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bhr.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/bwa.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/cat.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/che.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/civ.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/cod.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/cog.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/col.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/cri.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/cze.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/deu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/dnk.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/dza.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/eng.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/est.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/fin.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/fra.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/fro.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/gab.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/gha.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/gin.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/gmb.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/grl.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/guf.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/guy.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/hun.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/idn.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/irl.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/isl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ita.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/jam.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/jpn.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/kwt.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/lao.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/lby.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/lca.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ltu.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/lux.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/lva.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mar.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mco.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mdg.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mdv.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mkd.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mli.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mrt.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/mus.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ner.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/nga.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/nld.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/nor.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/plw.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/pol.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/pse.svg:
--------------------------------------------------------------------------------
1 |
16 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/qat.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/reu.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/rou.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/rus.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sco.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sdn.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sen.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sjm.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sle.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/som.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ssd.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/sur.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/syr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/tcd.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/tha.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ton.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/tto.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/tur.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/ukr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/vct.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/vnm.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/wlf.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/1x1/yem.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/are.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/arm.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/aut.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/aze.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bel.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ben.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bes.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bfa.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bgd.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bgr.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bhr.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bhs.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/bwa.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/cat.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/che.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/chl.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/civ.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/cod.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/cog.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/col.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/cri.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/cze.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/deu.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/dnk.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/dza.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/eng.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/est.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/fin.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/fra.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/fro.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/gab.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/gha.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/gin.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/gmb.svg:
--------------------------------------------------------------------------------
1 |
15 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/grl.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/guf.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/guy.svg:
--------------------------------------------------------------------------------
1 |
10 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/hun.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/idn.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/irl.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/isl.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ita.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/jam.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/jpn.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/kwt.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/lao.svg:
--------------------------------------------------------------------------------
1 |
13 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/lby.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/lca.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ltu.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/lux.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/lva.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mar.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mco.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mdg.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mdv.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mkd.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mli.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mrt.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/mus.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ner.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/nga.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/nld.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/nor.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/plw.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/pol.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/qat.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/reu.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/rou.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/rus.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sco.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sdn.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sen.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sjm.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sle.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/som.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ssd.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/sur.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/syr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/tcd.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/tha.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ton.svg:
--------------------------------------------------------------------------------
1 |
11 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/tto.svg:
--------------------------------------------------------------------------------
1 |
6 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/tur.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/tza.svg:
--------------------------------------------------------------------------------
1 |
14 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/ukr.svg:
--------------------------------------------------------------------------------
1 |
7 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/vct.svg:
--------------------------------------------------------------------------------
1 |
9 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/vnm.svg:
--------------------------------------------------------------------------------
1 |
12 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/wlf.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/flags/4x3/yem.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/packages/location/public/fonts:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/fonts
--------------------------------------------------------------------------------
/packages/location/public/i18n/continent/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "AFR": "Africa",
3 | "ANT": "Antarctica",
4 | "ASI": "Asia",
5 | "EUR": "Europe",
6 | "NOA": "North America",
7 | "OCE": "Oceania",
8 | "LAC": "Latin America and the Caribbean"
9 | }
--------------------------------------------------------------------------------
/packages/location/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/location/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/location/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/location/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/location/src/continent.json:
--------------------------------------------------------------------------------
1 | [
2 | "AFR",
3 | "ANT",
4 | "ASI",
5 | "EUR",
6 | "NOA",
7 | "OCE",
8 | "LAC"
9 | ]
--------------------------------------------------------------------------------
/packages/location/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "resolveJsonModule": true,
5 | "paths": {
6 | "lit": [
7 | "./node_modules/lit"
8 | ]
9 | }
10 | },
11 | "include": ["./**/*.ts", "*.ts"],
12 | "exclude": []
13 | }
14 |
--------------------------------------------------------------------------------
/packages/location/types.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/location/types.ts
--------------------------------------------------------------------------------
/packages/model/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | src/**/*.js
16 | src/**/*.d.ts
17 | src/**/*.map
18 |
19 | public/docs/*
20 | public/README.md
21 | public/package.json
22 |
23 | # Editor directories and files
24 | .vscode/*
25 | !.vscode/extensions.json
26 | .idea
27 | .DS_Store
28 | *.suo
29 | *.ntvs*
30 | *.njsproj
31 | *.sln
32 | *.sw?
33 |
--------------------------------------------------------------------------------
/packages/model/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # @lit-app/model Changelog
2 |
3 | ## [0.1.0] (14/11/2022) - unpublished
4 |
5 | Initial version
6 |
7 | Features:
8 |
--------------------------------------------------------------------------------
/packages/model/entity-grid-provider.ts:
--------------------------------------------------------------------------------
1 | import './src/cmp/entity-grid-provider.js';
2 |
--------------------------------------------------------------------------------
/packages/model/src/mixin/context-app-id-mixin.ts:
--------------------------------------------------------------------------------
1 | import { createContext } from '@lit/context';
2 | import { ContextMixinFactory } from '@lit-app/shared/context/context-mixin-factory.js';
3 |
4 | export const appIdContext = createContext('app-id-context');
5 | export const {
6 | ConsumeMixin: ConsumeAppIdMixin,
7 | ProvideMixin: ProvideAppIdMixin
8 | } = ContextMixinFactory<{appID: string}>(appIdContext, 'appID');
9 |
--------------------------------------------------------------------------------
/packages/model/src/mixin/context-doc-id-mixin.ts:
--------------------------------------------------------------------------------
1 | import { ContextMixinFactory } from '@lit-app/shared/context/context-mixin-factory.js';
2 | import { createContext } from '@lit/context';
3 |
4 | type DocIdT = string | undefined;
5 | export const docIdContext = createContext('doc-id-context');
6 | export const {
7 | ConsumeMixin: ConsumeDocIdMixin,
8 | ProvideMixin: ProvideDocIdMixin
9 | } = ContextMixinFactory<{ docId: DocIdT }>(docIdContext, 'docId');
10 |
--------------------------------------------------------------------------------
/packages/model/src/types/communication.ts:
--------------------------------------------------------------------------------
1 | // PresentationI extends TeamUI because of the way data inherits prototype from parent data
2 |
3 | export interface CommunicationI {
4 | email: string
5 | replyTo: string
6 | signature: string
7 | footer: string
8 | }
--------------------------------------------------------------------------------
/packages/model/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "compilerOptions": {
3 | "paths": {
4 | "lit": [
5 | "./node_modules/lit"
6 | ],
7 | "@lit-app/cmp": [
8 | "./node_modules/@lit-app/cmp"
9 | ],
10 | }
11 | },
12 | "extends": "../../tsconfig.json",
13 | "include": [
14 | "src/**/*.ts",
15 | "index.ts"
16 | ],
17 | "exclude": []
18 | }
--------------------------------------------------------------------------------
/packages/model/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 |
3 | // https://vitejs.dev/config/
4 | export default defineConfig({
5 | build: {
6 | lib: {
7 | entry: 'src/index',
8 | name: 'state',
9 | formats: ['es'],
10 | fileName: 'index'
11 | },
12 | rollupOptions: {
13 | external: /^lit/,
14 | output: {
15 | globals: {
16 | lit: 'lit'
17 | }
18 | }
19 | }
20 | },
21 | test: {
22 | globals: true,
23 | environment: 'happy-dom',
24 | },
25 | resolve: {
26 | dedupe: [
27 | "lit"
28 | ]
29 | },
30 | });
31 |
--------------------------------------------------------------------------------
/packages/plot/README.md:
--------------------------------------------------------------------------------
1 | # PLOT
2 |
3 | This is a package for a series of plot web-components that can be used in any web application.
4 |
5 | It is based on [Observable Plot](https://observablehq.com/@observablehq/plot) and [D3](https://d3js.org/).
6 |
7 |
--------------------------------------------------------------------------------
/packages/plot/public/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/plot/public/fonts:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/fonts
--------------------------------------------------------------------------------
/packages/plot/public/images/material-symbols:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/app-dependencies/material-design-icons/symbols/web
--------------------------------------------------------------------------------
/packages/plot/public/index.css:
--------------------------------------------------------------------------------
1 | body {
2 | background: #fafafa;
3 | margin: 0;
4 | }
5 |
6 | body,
7 | html {
8 | font-family: 'Roboto', 'Noto', sans-serif;
9 | }
10 |
11 | :root {}
--------------------------------------------------------------------------------
/packages/plot/public/robots.txt:
--------------------------------------------------------------------------------
1 | # https://www.robotstxt.org/robotstxt.html
2 | User-agent: *
3 | Disallow:
4 |
--------------------------------------------------------------------------------
/packages/plot/public/theme.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/theme.css
--------------------------------------------------------------------------------
/packages/plot/public/variables.css:
--------------------------------------------------------------------------------
1 | /home/christophe/Programming/preignition/a14y/public/variables.css
--------------------------------------------------------------------------------
/packages/plot/src/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/plot/src/index.ts
--------------------------------------------------------------------------------
/packages/plot/src/myScheme.ts:
--------------------------------------------------------------------------------
1 | export default [
2 | 'var(--plot-color-0)',
3 | 'var(--plot-color-1)',
4 | 'var(--plot-color-2)',
5 | 'var(--plot-color-3)',
6 | 'var(--plot-color-4)',
7 | 'var(--plot-color-5)',
8 | 'var(--plot-color-6)',
9 | 'var(--plot-color-7)',
10 | 'var(--plot-color-8)',
11 | 'var(--plot-color-9)',
12 | ]
--------------------------------------------------------------------------------
/packages/plot/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 |
5 | },
6 | "include": ["./**/*.ts", "*.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/packages/plot/types.ts:
--------------------------------------------------------------------------------
1 | export type SeriesT = {
2 | label: string
3 | key: string
4 | }
5 | /**
6 | * Options for the plot
7 | */
8 | export type OptionT = {
9 | height?: number
10 | title?: string
11 | subtitle?: string
12 | caption?: string
13 | items: SeriesT[]
14 | }
15 |
--------------------------------------------------------------------------------
/packages/shared/a11y/index.ts:
--------------------------------------------------------------------------------
1 | export { announce } from './announce.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/browser/README.md:
--------------------------------------------------------------------------------
1 | # Browser
2 |
3 | A collection of utilities for working with the browser.
4 |
--------------------------------------------------------------------------------
/packages/shared/browser/index.ts:
--------------------------------------------------------------------------------
1 | export { hasTouchscreen } from './hasTouchscreen';
2 | export { version as chromeVersion, is as isChrome } from './isChrome';
3 | export { version as edgeVersion, is as isEdge } from './isEdge';
4 | export { version as firefoxVersion, is as isFirefox } from './isFirefox';
5 | export { is as isOpera, version as operaVersion } from './isOpera';
6 | export { is as isSafari, version as safariVersion } from './isSafari';
7 |
--------------------------------------------------------------------------------
/packages/shared/browser/isChrome.ts:
--------------------------------------------------------------------------------
1 | function isChrome(): boolean {
2 | return !!navigator.userAgent.match(/Chrome/u) && !!navigator.vendor.match(/Google Inc/u);
3 | }
4 |
5 | function getVersion(): number | undefined {
6 | const version = navigator.userAgent.match(/Chrome\/([\d\.]+)/)?.[1];
7 | return version ? parseFloat(version) : undefined;
8 | }
9 |
10 | const is = isChrome();
11 | const version = getVersion();
12 | export default is;
13 | export { is, version };
--------------------------------------------------------------------------------
/packages/shared/browser/isEdge.ts:
--------------------------------------------------------------------------------
1 | function isEdge(): boolean {
2 | return !!navigator.userAgent.match(/Edge/u)
3 | }
4 | function getVersion(): number | undefined {
5 | const version = navigator.userAgent.match(/Edge\/([\d\.]+)/)?.[1];
6 | return version ? parseFloat(version) : undefined;
7 | }
8 |
9 | const is = isEdge();
10 | const version = getVersion();
11 | export default is;
12 | export { is, version };
--------------------------------------------------------------------------------
/packages/shared/browser/isFirefox.ts:
--------------------------------------------------------------------------------
1 | function isFirefox(): boolean {
2 | return !!navigator.userAgent.match(/Firefox/u)
3 | }
4 | function getVersion(): number | undefined {
5 | const version = navigator.userAgent.match(/Firefox\/([\d\.]+)/)?.[1];
6 | return version ? parseFloat(version) : undefined;
7 | }
8 |
9 | const is = isFirefox();
10 | const version = getVersion();
11 | export default is;
12 | export { is, version };
--------------------------------------------------------------------------------
/packages/shared/browser/isOpera.ts:
--------------------------------------------------------------------------------
1 | function isOpera(): boolean {
2 | return !!navigator.userAgent.match(/Opera|OPR/u);
3 | }
4 | function getVersion(): number | undefined {
5 | const version = navigator.userAgent.match(/Opera|OPR\/([\d\.]+)/)?.[1];
6 | return version ? parseFloat(version) : undefined;
7 | }
8 |
9 | const is = isOpera();
10 | const version = getVersion();
11 | export default is;
12 | export { is, version };
--------------------------------------------------------------------------------
/packages/shared/browser/isSafari.ts:
--------------------------------------------------------------------------------
1 | function isSafari(): boolean {
2 | return !!navigator.userAgent.match(/Version\/[\d\.]+.*Safari/)
3 | }
4 | function getVersion(): number | undefined {
5 | const version = navigator.userAgent.match(/Version\/([\d\.]+)/)?.[1];
6 | return version ? parseFloat(version) : undefined;
7 | }
8 |
9 | const is = isSafari();
10 | const version = getVersion();
11 | export default is;
12 | export { is, version };
--------------------------------------------------------------------------------
/packages/shared/context/index.ts:
--------------------------------------------------------------------------------
1 | export {ContextMixinFactory} from './context-mixin-factory';
--------------------------------------------------------------------------------
/packages/shared/controller/index.ts:
--------------------------------------------------------------------------------
1 | export { HasScrollbar } from './hasScrollbar.js';
2 | export { IsEndPage } from './isEndPage.js';
3 | export { IsNarrow } from './isNarrow.js';
4 | export { ResizeController } from './resizeController.js';
5 |
6 |
--------------------------------------------------------------------------------
/packages/shared/dataUtils/README.md:
--------------------------------------------------------------------------------
1 | # Data utils
2 |
3 | A couple of utility functions to help with data processing.
4 |
5 | function in this module are taken out from Vaadin Grid multi dataProvider
--------------------------------------------------------------------------------
/packages/shared/dataUtils/index.ts:
--------------------------------------------------------------------------------
1 | export { cast } from './cast';
2 | export { compare } from './compare';
3 | export { deep, get, set } from './deep';
4 | export { filter } from './filter';
5 |
6 |
--------------------------------------------------------------------------------
/packages/shared/dataUtils/normalizeEmptyValue.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Normalizes an empty value by converting undefined or null to an empty string.
3 | * If the value is NaN, it is converted to a string representation.
4 | * @param value - The value to be normalized.
5 | * @returns The normalized value.
6 | */
7 | export default function normalizeEmptyValue(value : any): string {
8 | if ([undefined, null].indexOf(value) >= 0) {
9 | return '';
10 | } else if (isNaN(value)) {
11 | return value.toString();
12 | } else {
13 | return value;
14 | }
15 | }
--------------------------------------------------------------------------------
/packages/shared/dd/index.ts:
--------------------------------------------------------------------------------
1 | export { DragMixin } from './drag-mixin.js';
2 | export { DragStore } from './drag-store.js';
3 |
4 |
--------------------------------------------------------------------------------
/packages/shared/decorator/index.ts:
--------------------------------------------------------------------------------
1 | export { default as watch } from './watch.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/directive/index.ts:
--------------------------------------------------------------------------------
1 | export { spread } from './spreadDirective';
2 |
--------------------------------------------------------------------------------
/packages/shared/domUtils/index.ts:
--------------------------------------------------------------------------------
1 |
2 | export { default as closest } from './closest.js';
3 | export { default as closestWithFilter } from './closestWithFilter.js';
4 | export { scrollInto } from './scrollInto.js';
5 |
6 |
7 |
--------------------------------------------------------------------------------
/packages/shared/ellipsis.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Truncates a string and adds an ellipsis ('...') if it exceeds the specified maximum length.
3 | *
4 | * @param str - The string to be truncated.
5 | * @param maxLength - The maximum length of the string including the ellipsis. Defaults to 40.
6 | * @returns The truncated string with an ellipsis if it exceeds the maximum length.
7 | */
8 | export function ellipsis(str: string, maxLength: number = 40): string {
9 | if (!str) {
10 | return '';
11 | }
12 | if (str.length <= maxLength) {
13 | return str;
14 | }
15 | return str.slice(0, maxLength - 3) + '...';
16 | }
--------------------------------------------------------------------------------
/packages/shared/error/index.ts:
--------------------------------------------------------------------------------
1 | export * from './errors.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/event/README.md:
--------------------------------------------------------------------------------
1 | [](https://app.netlify.com/sites/vite-lit-starter/deploys)
2 |
3 | # My-Element title
4 |
5 | This project includes a sample component using LitElement with JavaScript.
6 |
7 | ## Demo
8 |
9 |
10 | ## API
11 |
12 |
13 | ## DOCs
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/packages/shared/event/app-back.ts:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * This event is fired when the application need to go back to a previous page.
4 | */
5 | export default class AppBackEvent extends Event {
6 | static readonly eventName = 'app-back';
7 | constructor() {
8 | super(AppBackEvent.eventName, {
9 | bubbles: true,
10 | composed: true,
11 | });
12 | }
13 | }
14 |
15 | declare global {
16 | interface HTMLElementEventMap {
17 | 'app-back': AppBackEvent,
18 | }
19 | }
--------------------------------------------------------------------------------
/packages/shared/event/app-connected.ts:
--------------------------------------------------------------------------------
1 |
2 | /**
3 | * This event is fired when a new app is connected to the DOM
4 | * so that it can be tracked by the main app
5 | */
6 | export default class AppConnectedEvent extends Event {
7 | static readonly eventName = 'app-connected';
8 | constructor() {
9 | super(AppConnectedEvent.eventName, {
10 | bubbles: true,
11 | composed: true,
12 | });
13 | }
14 | }
15 |
16 | declare global {
17 | interface HTMLElementEventMap {
18 | 'app-connected': AppConnectedEvent,
19 | }
20 | }
--------------------------------------------------------------------------------
/packages/shared/event/docs/custom-elements.json:
--------------------------------------------------------------------------------
1 | {
2 | "schemaVersion": "1.0.0",
3 | "readme": "",
4 | "modules": []
5 | }
6 |
--------------------------------------------------------------------------------
/packages/shared/event/docs/custom-elements.md:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/shared/event/docs/custom-elements.md
--------------------------------------------------------------------------------
/packages/shared/event/index.ts:
--------------------------------------------------------------------------------
1 | import AppErrorEvent from './app-error';
2 | import ToastEvent from './toast-event';
3 | import UICloseEvent from './ui-event';
4 | import ValueChangedEvent from './value-changed';
5 | export {
6 | AppErrorEvent, ToastEvent, UICloseEvent, ValueChangedEvent
7 | };
8 |
--------------------------------------------------------------------------------
/packages/shared/grid/index.ts:
--------------------------------------------------------------------------------
1 | export { activeItemChanged } from './activeItemChanged.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/index.ts:
--------------------------------------------------------------------------------
1 | export { debounce } from './debounce';
2 | export { deep, get, set } from './deep';
3 | export { scrollInto } from './domUtils/scrollInto.js';
4 | export { ellipsis } from './ellipsis';
5 | export { interceptMethod } from './support/method-interception';
6 | export { throttle } from './throttle';
7 | export { wait } from './wait';
8 |
9 |
--------------------------------------------------------------------------------
/packages/shared/locale/currency-native.ts:
--------------------------------------------------------------------------------
1 | // sourcehttps://en.wikipedia.org/wiki/List_of_language_names
2 |
3 | type Native = {[key: string]: string};
4 |
5 | export const native: Native = {
6 | eur: 'Euro (€)',
7 | usd: 'United States Dollar ($)',
8 | gbp: 'British Pound Sterling (£)',
9 | };
10 |
11 | export default native;
12 |
--------------------------------------------------------------------------------
/packages/shared/md/README.md:
--------------------------------------------------------------------------------
1 | # MD
2 |
3 | This is a shared package for parsing markdown.
4 |
--------------------------------------------------------------------------------
/packages/shared/md/index.ts:
--------------------------------------------------------------------------------
1 | import parse, { replacePlaceholders, sanitizeHTML } from './parse'
2 | import parseInline from './parseInline'
3 |
4 | export {
5 | parse, parseInline, replacePlaceholders,
6 | sanitizeHTML
7 | }
8 |
9 |
--------------------------------------------------------------------------------
/packages/shared/md/marked.ts:
--------------------------------------------------------------------------------
1 | import {marked} from 'marked';
2 | import { gfmHeadingId } from 'marked-gfm-heading-id';
3 |
4 | marked.use({
5 | ...gfmHeadingId({prefix: 'md-'})
6 | });
7 |
8 | export {marked}
--------------------------------------------------------------------------------
/packages/shared/mixin/index.ts:
--------------------------------------------------------------------------------
1 | export { PromiseEventDialogEvent, default as PromiseEventDialogMixin } from './promise-event-dialog-mixin.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/network/index.ts:
--------------------------------------------------------------------------------
1 | export { default as fetchWithTimeout } from './fetchWithTimeout.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/string/camelToDash.ts:
--------------------------------------------------------------------------------
1 | const map: { [key: string]: string } = {};
2 | const CAMEL_TO_DASH = /([A-Z])/g;
3 |
4 | /**
5 | * Converts a camelCase string to a dash-case string.
6 | *
7 | * @param camel - The camelCase string to be converted.
8 | * @returns The converted dash-case string. If the input is an empty string, returns an empty string.
9 | */
10 | export const camelToDash = (camel: string): string => {
11 | if (!camel) {
12 | return '';
13 | }
14 | return map[camel] || (
15 | map[camel] = camel.replace(CAMEL_TO_DASH, '-$1').toLowerCase()
16 | );
17 | };
18 |
--------------------------------------------------------------------------------
/packages/shared/string/index.ts:
--------------------------------------------------------------------------------
1 | // TODO: add other string functions here (ellipsis, etc.)
2 | export { camelToDash } from './camelToDash.js';
3 | export { dashToCamel } from './dashToCamel.js';
4 | export { template } from './template.js';
5 |
--------------------------------------------------------------------------------
/packages/shared/styles/class/icon.ts:
--------------------------------------------------------------------------------
1 | import { CSSResult, css } from 'lit';
2 |
3 | /**
4 | * Global style for all components that user
5 | * See https://github.com/material-components/material-web/issues/4679
6 | */
7 | const styles: CSSResult = css`
8 | md-icon {
9 | font-variation-settings: 'FILL' 1;
10 | }
11 | `;
12 |
13 | // @deprecated
14 | export default styles;
--------------------------------------------------------------------------------
/packages/shared/styles/class/label.ts:
--------------------------------------------------------------------------------
1 | import { CSSResult, css } from 'lit';
2 |
3 |
4 | /**
5 | * CSS styles for label elements, typically used for checkbox, radio, switch, etc.
6 | *
7 | * - The `label` element is styled to be a flex container with centered alignment and a small font size.
8 | * - The `md-switch` element inside a `label` has small margins on both the start and end of the inline axis.
9 | */
10 | const style: CSSResult = css`
11 | label {
12 | display: flex;
13 | align-items: center;
14 | font-size: var(--font-size-small);
15 | gap: var(--space-small);
16 | }
17 |
18 | `
19 |
20 | export default style
--------------------------------------------------------------------------------
/packages/shared/styles/class/sr-only.ts:
--------------------------------------------------------------------------------
1 | import { CSSResult, css } from 'lit';
2 |
3 | /**
4 | * A helper css for handling screen reader only elements
5 | *
6 | * it exposes 1 classes:
7 | * - .sr-only : only visible to screen reader
8 | *
9 | */
10 | const style: CSSResult = css`
11 | .sr-only {
12 | position: absolute;
13 | width: 1px;
14 | height: 1px;
15 | padding: 0;
16 | margin: -1px;
17 | overflow: hidden;
18 | clip: rect(0, 0, 0, 0);
19 | border: 0;
20 | }
21 |
22 | `
23 |
24 | export default style;
--------------------------------------------------------------------------------
/packages/shared/styles/class/top-card.ts:
--------------------------------------------------------------------------------
1 | import { css } from "lit";
2 |
3 | /**
4 | * CSS styles for the top card component.
5 | *
6 | * exposes a class .top-card to style a card that is centered in the page
7 | * with a max-width of 900px and a box shadow.
8 | */
9 | const styles = css`
10 | .top-card {
11 | max-width: min(900px, calc(100% - 150px));
12 | margin: 10vh auto;
13 | min-height: 300px;
14 | padding: 50px;
15 | box-shadow: var(--shadow-material);
16 | }
17 | `
18 |
19 | export default styles;
--------------------------------------------------------------------------------
/packages/shared/styles/locale.mjs:
--------------------------------------------------------------------------------
1 | import locale from './themes/locale.mjs';
2 |
3 | export { locale }
4 |
5 |
--------------------------------------------------------------------------------
/packages/shared/styles/patch/alignMwc.ts:
--------------------------------------------------------------------------------
1 | import { css, CSSResult } from 'lit';
2 |
3 | /**
4 | * style to patch with previous version of MD2
5 | */
6 | const style: CSSResult = css`
7 |
8 | md-primary-tab[disabled], md-secondary-tab[disabled] {
9 | pointer-events: none;
10 | }
11 | `;
12 |
13 | export default style;
14 |
--------------------------------------------------------------------------------
/packages/shared/styles/themes/types.ts:
--------------------------------------------------------------------------------
1 | export type ThemeT = {
2 | label?: string,
3 | name: string,
4 | index: number,
5 | desc: string,
6 | longDesc: string,
7 | lightTheme?: string,
8 | darkTheme?: string,
9 | theme: {
10 | [key: string]: string | boolean
11 | }
12 | }
13 |
14 | export type ThemeMapT = {[key: string]: ThemeT}
--------------------------------------------------------------------------------
/packages/shared/styles/utils/index.ts:
--------------------------------------------------------------------------------
1 | export { getAdjustedColor } from './getAdjustedColor.js';
2 | export { themeResetColors } from './themeReset.js';
3 |
--------------------------------------------------------------------------------
/packages/shared/styles/vaadin/README.md:
--------------------------------------------------------------------------------
1 | # Vaadin Themes
2 |
3 | This directory contains the Vaadin themes used in the Vaadin components.
4 |
--------------------------------------------------------------------------------
/packages/shared/styles/vaadin/card.ts:
--------------------------------------------------------------------------------
1 | import { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
2 | import { css, CSSResult } from "lit";
3 |
4 |
5 | /**
6 | * User theme for vaadin-card
7 | */
8 | const user: CSSResult = css`
9 | :host([theme~='user']) [part~='media'] {
10 | max-height: 350px;
11 | filter: grayscale(80%);
12 | }
13 | /* :host([theme~='user']) [part~='tile'] {
14 | font-size: var(--font-size-large);
15 | } */
16 | `
17 | registerStyles(
18 | 'vaadin-card',
19 | user
20 | )
21 | export { user };
22 |
--------------------------------------------------------------------------------
/packages/shared/styles/vaadin/context-menu-overlay.ts:
--------------------------------------------------------------------------------
1 | import { registerStyles } from '@vaadin/vaadin-themable-mixin/vaadin-themable-mixin.js';
2 | import { css, CSSResult } from "lit";
3 |
4 | const style: CSSResult = css`
5 | /**
6 | * Add hover style for lumo;
7 | */
8 | :host([theme~='dense']) [part~='content'] {
9 | padding: 0;
10 | }
11 | `
12 |
13 | export default style;
14 |
15 | registerStyles(
16 | 'vaadin-context-menu-overlay',
17 | style
18 | )
--------------------------------------------------------------------------------
/packages/shared/styles/vaadin/index.ts:
--------------------------------------------------------------------------------
1 | import './card.js';
2 | import './context-menu-overlay.js';
3 | import './grid.js';
4 | import './init-vaadin.js';
5 |
6 |
--------------------------------------------------------------------------------
/packages/shared/styles/vaadin/init-vaadin.ts:
--------------------------------------------------------------------------------
1 | // @ts-nocheck
2 | window.Vaadin ||= {};
3 | window.Vaadin.featureFlags ||= {};
4 | window.Vaadin.featureFlags.cardComponent = true;
--------------------------------------------------------------------------------
/packages/shared/support/README.md:
--------------------------------------------------------------------------------
1 | # Support
2 |
3 | This directory contains shared support code that is used by multiple packages.
4 |
5 | Those functions are copied from [@lit-labs/virtualizer/](https://github.com/lit/lit/tree/main/packages/labs/virtualizer/src/support).
6 |
7 | - method-interceptor.ts: A method interceptor that can be used to intercept method calls on a class.
8 | - resize-observers-errors.ts: A set of errors that removes the ResizeObservers errors.
9 |
--------------------------------------------------------------------------------
/packages/shared/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 | "paths": {
5 | "firebase": [
6 | "./node_modules/firebase"
7 | ],
8 | "lit": [
9 | "./node_modules/lit"
10 | ],
11 | }
12 | },
13 | "include": [
14 | "./**/*.ts"
15 | ],
16 | "exclude": []
17 | }
--------------------------------------------------------------------------------
/packages/shared/types/index.ts:
--------------------------------------------------------------------------------
1 | export type { MaterialSymbolsT } from './material-symbols.js';
2 |
--------------------------------------------------------------------------------
/packages/shared/vite.config.js:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 |
3 | // https://vitejs.dev/config/
4 | export default defineConfig({
5 |
6 | test: {
7 | onConsoleLog(log) {
8 | if (log.includes('Download the Vue Devtools extension')) return false
9 | if (log.includes('Lit is in dev mode.')) return false
10 | },
11 | // include: ['./src/**/*.test.ts'],
12 | browser: {
13 | enabled: true,
14 | name: 'chrome',
15 | },
16 | },
17 |
18 | });
19 |
--------------------------------------------------------------------------------
/packages/shared/wait.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns a promise that resolves after a specified number of milliseconds.
3 | *
4 | * @param ms - The number of milliseconds to wait before the promise resolves.
5 | * @returns A promise that resolves after the specified delay.
6 | */
7 | const wait = (ms: number) => {
8 | return new Promise(resolve => {
9 | setTimeout(() => { resolve(null) }, ms);
10 | })
11 | }
12 |
13 | export { wait };
14 |
--------------------------------------------------------------------------------
/packages/state/.gitignore:
--------------------------------------------------------------------------------
1 | # Logs
2 | logs
3 | *.log
4 | npm-debug.log*
5 | yarn-debug.log*
6 | yarn-error.log*
7 | pnpm-debug.log*
8 | lerna-debug.log*
9 |
10 | node_modules
11 | dist
12 | dist-ssr
13 | *.local
14 |
15 | src/**/*.js
16 | src/**/*.d.ts
17 | src/**/*.map
18 |
19 | public/docs/*
20 | public/README.md
21 | public/package.json
22 |
23 | # Editor directories and files
24 | .vscode/*
25 | !.vscode/extensions.json
26 | .idea
27 | .DS_Store
28 | *.suo
29 | *.ntvs*
30 | *.njsproj
31 | *.sln
32 | *.sw?
33 |
--------------------------------------------------------------------------------
/packages/state/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | # @lit-app/state Changelog
2 |
3 | ## [1.0.0] (17/12/2023)
4 |
5 | Features:
6 | - support for @lit/reactive-element@^2
7 |
8 | ## [0.8.4] (22/03/2023)
9 |
10 | Last version supporting @lit/reactive-element < v2
11 |
12 | ## [0.2.0] (18/07/2022)
13 |
14 | First feature complete published version
15 |
16 | ## [0.1.0] (06/07/2022) - unpublished
17 |
18 | Initial version
19 |
20 | Features:
21 | - New state management tool for lit
22 | - decorators for integrating the state with localStorage, URL parameters, or hook with third parties
23 |
--------------------------------------------------------------------------------
/packages/state/src/decorators/parse.ts:
--------------------------------------------------------------------------------
1 | import { PropertyTypes } from './property.js';
2 |
3 | export function parse(value: string | null, type: PropertyTypes| undefined): any {
4 | if (value !== null && (
5 | type === Boolean ||
6 | type === Number ||
7 | type === Array ||
8 | type === Object)) {
9 | try {
10 | value = JSON.parse(value);
11 | } catch (e) {
12 | console.warn('cannot parse value', value);
13 | }
14 | }
15 | return value;
16 | }
17 |
--------------------------------------------------------------------------------
/packages/state/src/env.d.ts:
--------------------------------------------------------------------------------
1 | interface ImportMetaEnv extends Readonly> {
2 | readonly VITE_LOCALSTORAGE_PREFIX: string
3 | }
4 |
5 | interface ImportMeta {
6 | readonly env: ImportMetaEnv
7 | }
--------------------------------------------------------------------------------
/packages/state/src/functionValue.ts:
--------------------------------------------------------------------------------
1 | /**
2 | * Returns a value if it is a value,
3 | * or the result of the function if is is a function
4 | * @param value a value or a function
5 | * @returns a value
6 | */
7 | export function functionValue(value: unknown): unknown {
8 | return typeof value === 'function' ? value() : value;
9 | }
10 |
--------------------------------------------------------------------------------
/packages/state/src/index.ts:
--------------------------------------------------------------------------------
1 | export { State } from './state.js'
2 | export type { Unsubscribe } from './state.js'
3 | export { Hook } from './hook.js'
4 | export { StateEvent } from './state-event.js'
5 | export { StateController } from './state-controller.js'
6 | export { property } from './decorators/property.js'
7 | export { query } from './decorators/query.js'
8 | export { storage } from './decorators/storage.js'
9 | export { hook } from './decorators/hook.js'
10 |
--------------------------------------------------------------------------------
/packages/state/src/types.ts:
--------------------------------------------------------------------------------
1 | import { State } from './state';
2 |
3 | export interface AccessibilityStateI extends State {
4 | signlanguage: boolean;
5 | voice: boolean;
6 | readaloud: boolean;
7 | readaloudConfig: {
8 | rate: number
9 | };
10 | easyread: boolean;
11 | easyreadEmulate: boolean;
12 | accessibleDevice: boolean;
13 | }
--------------------------------------------------------------------------------
/packages/state/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 |
5 | },
6 | "include": ["src/**/*.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/packages/testing/index.ts:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/lit-apps/lit-app/4e5b80a3771381621048606a0d2090d5e6c4b1fc/packages/testing/index.ts
--------------------------------------------------------------------------------
/packages/testing/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "@lit-app/testing",
3 | "version": "1.0.0",
4 | "description": "testing utils for lit-app",
5 | "type": "module",
6 | "main": "index",
7 | "scripts": {
8 | "test": "echo \"Error: no test specified\" && exit 1"
9 | },
10 | "keywords": [
11 | "lit",
12 | "vitejs",
13 | "web-components"
14 | ],
15 | "authors": [
16 | "christophe.geiser "
17 | ],
18 | "license": "ISC",
19 | "dependencies": {
20 | "lit": "^3.3.0"
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/packages/xstate-route/.firebaserc:
--------------------------------------------------------------------------------
1 | {
2 | "projects": {
3 | "default": "xstate-route"
4 | }
5 | }
6 |
--------------------------------------------------------------------------------
/packages/xstate-route/demo/dialog/step-one/step-one.ts:
--------------------------------------------------------------------------------
1 | import { html, LitElement, TemplateResult } from "lit";
2 | import { sharedStyles } from "../../pages/styles";
3 |
4 | export default class StepOneComponent extends LitElement {
5 | static styles = [sharedStyles];
6 | render (): TemplateResult {
7 | return html`
8 | Step 1
9 | `;
10 | }
11 | }
12 |
13 | window.customElements.define("step-one-component", StepOneComponent);
14 |
--------------------------------------------------------------------------------
/packages/xstate-route/demo/dialog/step-two/step-two.ts:
--------------------------------------------------------------------------------
1 | import { html, LitElement, TemplateResult } from "lit";
2 | import { sharedStyles } from "../../pages/styles";
3 |
4 | export default class StepTwoComponent extends LitElement {
5 | static styles = [sharedStyles];
6 | render (): TemplateResult {
7 | return html`
8 | Step 2
9 | `;
10 | }
11 | }
12 |
13 | window.customElements.define("step-two-component", StepTwoComponent);
14 |
--------------------------------------------------------------------------------
/packages/xstate-route/demo/pages/home/secret/code/code.ts:
--------------------------------------------------------------------------------
1 | import { html, LitElement, TemplateResult } from "lit";
2 | import { sharedStyles } from "../../../styles";
3 |
4 | export default class CodeComponent extends LitElement {
5 | static styles = [sharedStyles];
6 | render (): TemplateResult {
7 | return html`
8 | CodeComponent
9 | `;
10 | }
11 | }
12 |
13 | window.customElements.define("code-component", CodeComponent);
14 |
--------------------------------------------------------------------------------
/packages/xstate-route/demo/pages/home/secret/data.ts:
--------------------------------------------------------------------------------
1 | export let data: {secretPassword: string | undefined} = {
2 | secretPassword: undefined
3 | };
4 |
--------------------------------------------------------------------------------
/packages/xstate-route/firebase.json:
--------------------------------------------------------------------------------
1 | {
2 | "hosting": {
3 | "public": "demo/dist",
4 | "ignore": [
5 | "firebase.json",
6 | "**/.*",
7 | "**/node_modules/**"
8 | ],
9 | "rewrites": [
10 | {
11 | "source": "**",
12 | "destination": "/index.html"
13 | }
14 | ]
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/packages/xstate-route/src/types.ts:
--------------------------------------------------------------------------------
1 | export type XstateDataT = {
2 | xstate?: string
3 | }
--------------------------------------------------------------------------------
/packages/xstate-route/tsconfig.json:
--------------------------------------------------------------------------------
1 | {
2 | "extends": "../../tsconfig.json",
3 | "compilerOptions": {
4 |
5 | },
6 | "include": ["src/**/*.ts", "demo/**/*.ts", "test/**/*.ts"],
7 | "exclude": []
8 | }
9 |
--------------------------------------------------------------------------------
/packages/xstate-route/vite.config.mjs:
--------------------------------------------------------------------------------
1 | import { defineConfig } from "vite";
2 |
3 | export default defineConfig({
4 | test: {
5 | browser: {
6 | enabled: true,
7 | name: 'chrome',
8 | },
9 | root: ".",
10 | },
11 | root: "demo",
12 | resolve: {
13 | dedupe: [
14 | "router-slot",
15 | "xstate",
16 | "lit",
17 | "api-viewer-element",
18 | "@material/web"
19 | ]}
20 | });
--------------------------------------------------------------------------------
/pnpm-workspace.yaml:
--------------------------------------------------------------------------------
1 | packages:
2 | - 'packages/*'
--------------------------------------------------------------------------------
/vitetestSetup.js:
--------------------------------------------------------------------------------
1 | // we mock canvas template o avoid warnings
2 | // https://github.com/jsdom/jsdom/issues/1782
3 | window.HTMLCanvasElement.prototype.getContext = () => {
4 | return {};
5 | };
6 |
7 |
--------------------------------------------------------------------------------