hyperdivlite 0.1.9__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- frontend/public/build/bundle.css +1616 -0
- frontend/public/build/bundle.js +6738 -0
- frontend/public/build/shoelace/assets/icons/0-circle-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/0-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/0-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/0-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/1-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/1-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/1-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/1-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/123.svg +3 -0
- frontend/public/build/shoelace/assets/icons/2-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/2-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/2-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/2-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/3-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/3-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/3-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/3-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/4-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/4-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/4-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/4-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/5-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/5-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/5-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/5-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/6-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/6-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/6-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/6-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/7-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/7-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/7-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/7-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/8-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/8-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/8-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/8-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/9-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/9-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/9-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/9-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/LICENSE +21 -0
- frontend/public/build/shoelace/assets/icons/activity.svg +3 -0
- frontend/public/build/shoelace/assets/icons/airplane-engines-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/airplane-engines.svg +3 -0
- frontend/public/build/shoelace/assets/icons/airplane-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/airplane.svg +3 -0
- frontend/public/build/shoelace/assets/icons/alarm-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/alarm.svg +4 -0
- frontend/public/build/shoelace/assets/icons/alexa.svg +3 -0
- frontend/public/build/shoelace/assets/icons/align-bottom.svg +4 -0
- frontend/public/build/shoelace/assets/icons/align-center.svg +3 -0
- frontend/public/build/shoelace/assets/icons/align-end.svg +4 -0
- frontend/public/build/shoelace/assets/icons/align-middle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/align-start.svg +4 -0
- frontend/public/build/shoelace/assets/icons/align-top.svg +4 -0
- frontend/public/build/shoelace/assets/icons/alipay.svg +4 -0
- frontend/public/build/shoelace/assets/icons/alphabet-uppercase.svg +3 -0
- frontend/public/build/shoelace/assets/icons/alphabet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/alt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/amazon.svg +4 -0
- frontend/public/build/shoelace/assets/icons/amd.svg +3 -0
- frontend/public/build/shoelace/assets/icons/android.svg +3 -0
- frontend/public/build/shoelace/assets/icons/android2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/app-indicator.svg +4 -0
- frontend/public/build/shoelace/assets/icons/app.svg +3 -0
- frontend/public/build/shoelace/assets/icons/apple.svg +4 -0
- frontend/public/build/shoelace/assets/icons/archive-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/archive.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-90deg-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-90deg-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-90deg-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-90deg-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-bar-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-bar-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-bar-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-bar-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-clockwise.svg +4 -0
- frontend/public/build/shoelace/assets/icons/arrow-counterclockwise.svg +4 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-left-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-left-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-left-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-left-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-right-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-right-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-right-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-right-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-short.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-short.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-repeat.svg +4 -0
- frontend/public/build/shoelace/assets/icons/arrow-return-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-return-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right-short.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-through-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-through-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-left-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-left-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-left-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-left-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-right-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-right-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-right-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-right-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-short.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrow-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-angle-contract.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-angle-expand.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-collapse-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-collapse.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-expand-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-expand.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-fullscreen.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-move.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/arrows.svg +3 -0
- frontend/public/build/shoelace/assets/icons/aspect-ratio-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/aspect-ratio.svg +4 -0
- frontend/public/build/shoelace/assets/icons/asterisk.svg +3 -0
- frontend/public/build/shoelace/assets/icons/at.svg +3 -0
- frontend/public/build/shoelace/assets/icons/award-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/award.svg +4 -0
- frontend/public/build/shoelace/assets/icons/back.svg +3 -0
- frontend/public/build/shoelace/assets/icons/backpack-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack2.svg +5 -0
- frontend/public/build/shoelace/assets/icons/backpack3-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack3.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack4-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backpack4.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backspace-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/backspace-reverse-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/backspace-reverse.svg +4 -0
- frontend/public/build/shoelace/assets/icons/backspace.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-3d-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-3d.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-4k-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-4k.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-8k-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-8k.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-ad-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-ad.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-ar-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-ar.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-cc-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/badge-cc.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-hd-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-hd.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-sd-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-sd.svg +3 -0
- frontend/public/build/shoelace/assets/icons/badge-tm-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/badge-tm.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-vo-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-vo.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-vr-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-vr.svg +4 -0
- frontend/public/build/shoelace/assets/icons/badge-wc-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/badge-wc.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bag-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bag-dash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bag-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bag-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bag-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bag.svg +3 -0
- frontend/public/build/shoelace/assets/icons/balloon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/balloon-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/balloon-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/balloon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ban-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ban.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bandaid-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bandaid.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bank.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bank2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bar-chart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bar-chart-line-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bar-chart-line.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bar-chart-steps.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bar-chart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/basket-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/basket.svg +3 -0
- frontend/public/build/shoelace/assets/icons/basket2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/basket2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/basket3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/basket3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/battery-charging.svg +6 -0
- frontend/public/build/shoelace/assets/icons/battery-full.svg +4 -0
- frontend/public/build/shoelace/assets/icons/battery-half.svg +4 -0
- frontend/public/build/shoelace/assets/icons/battery.svg +3 -0
- frontend/public/build/shoelace/assets/icons/behance.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bell-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bell-slash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bell-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bell.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bezier.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bezier2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bicycle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bing.svg +5 -0
- frontend/public/build/shoelace/assets/icons/binoculars-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/binoculars.svg +3 -0
- frontend/public/build/shoelace/assets/icons/blockquote-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/blockquote-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bluetooth.svg +3 -0
- frontend/public/build/shoelace/assets/icons/body-text.svg +3 -0
- frontend/public/build/shoelace/assets/icons/book-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/book-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/book.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark-dash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark-star-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-star.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmark-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmark.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bookmarks-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookmarks.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bookshelf.svg +3 -0
- frontend/public/build/shoelace/assets/icons/boombox-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/boombox.svg +6 -0
- frontend/public/build/shoelace/assets/icons/bootstrap-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bootstrap-reboot.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bootstrap.svg +4 -0
- frontend/public/build/shoelace/assets/icons/border-all.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-bottom.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-center.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-inner.svg +5 -0
- frontend/public/build/shoelace/assets/icons/border-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-middle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-outer.svg +4 -0
- frontend/public/build/shoelace/assets/icons/border-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-style.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-top.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border-width.svg +3 -0
- frontend/public/build/shoelace/assets/icons/border.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bounding-box-circles.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bounding-box.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-down-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-down-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-down-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-down-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-up-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-up-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-in-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-up-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-up-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box-seam-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box-seam.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box2-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/box2-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/box2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/boxes.svg +3 -0
- frontend/public/build/shoelace/assets/icons/braces-asterisk.svg +3 -0
- frontend/public/build/shoelace/assets/icons/braces.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bricks.svg +3 -0
- frontend/public/build/shoelace/assets/icons/briefcase-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/briefcase.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-alt-high-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-alt-high.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-alt-low-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-alt-low.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-high-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-high.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-low-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brightness-low.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brilliance.svg +3 -0
- frontend/public/build/shoelace/assets/icons/broadcast-pin.svg +3 -0
- frontend/public/build/shoelace/assets/icons/broadcast.svg +3 -0
- frontend/public/build/shoelace/assets/icons/browser-chrome.svg +3 -0
- frontend/public/build/shoelace/assets/icons/browser-edge.svg +5 -0
- frontend/public/build/shoelace/assets/icons/browser-firefox.svg +3 -0
- frontend/public/build/shoelace/assets/icons/browser-safari.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brush-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/brush.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bucket-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bucket.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bug-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bug.svg +3 -0
- frontend/public/build/shoelace/assets/icons/building-add.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-check.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-dash.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-down.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/building-gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building-slash.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-up.svg +5 -0
- frontend/public/build/shoelace/assets/icons/building-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/building.svg +4 -0
- frontend/public/build/shoelace/assets/icons/buildings-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/buildings.svg +4 -0
- frontend/public/build/shoelace/assets/icons/bullseye.svg +6 -0
- frontend/public/build/shoelace/assets/icons/bus-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/bus-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/c-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/c-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/c-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/c-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cake-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cake.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cake2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cake2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calculator-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calculator.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-date-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-date.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-day-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-day.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-event-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-event.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-month-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-month.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-range-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-range.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-week-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-week.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-check.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-date-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar2-date.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-day-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-day.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-event-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-event.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-minus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-month-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar2-month.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar2-range-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-range.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar2-week-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-week.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar2-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar2-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/calendar2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar3-event-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar3-event.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar3-range-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar3-range.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar3-week-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/calendar3-week.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar3.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar4-event.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar4-range.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar4-week.svg +4 -0
- frontend/public/build/shoelace/assets/icons/calendar4.svg +3 -0
- frontend/public/build/shoelace/assets/icons/camera-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/camera-reels-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/camera-reels.svg +5 -0
- frontend/public/build/shoelace/assets/icons/camera-video-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/camera-video-off-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/camera-video-off.svg +3 -0
- frontend/public/build/shoelace/assets/icons/camera-video.svg +3 -0
- frontend/public/build/shoelace/assets/icons/camera.svg +4 -0
- frontend/public/build/shoelace/assets/icons/camera2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/capslock-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/capslock.svg +3 -0
- frontend/public/build/shoelace/assets/icons/capsule-pill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/capsule.svg +3 -0
- frontend/public/build/shoelace/assets/icons/car-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/car-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/card-checklist.svg +4 -0
- frontend/public/build/shoelace/assets/icons/card-heading.svg +4 -0
- frontend/public/build/shoelace/assets/icons/card-image.svg +4 -0
- frontend/public/build/shoelace/assets/icons/card-list.svg +4 -0
- frontend/public/build/shoelace/assets/icons/card-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/caret-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-down-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-down-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/caret-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-left-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-left-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-left-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/caret-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-right-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-right-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-right-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/caret-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-up-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-up-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/caret-up-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/caret-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cart-dash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cart-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cart4.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cash-coin.svg +6 -0
- frontend/public/build/shoelace/assets/icons/cash-stack.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cassette-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cassette.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cast.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cc-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cc-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cc-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cc-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-dots-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-dots.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-dots-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-dots.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-left-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-left-quote-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-quote.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-left-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-left-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-quote-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-quote.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-right-dots-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-right-dots.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-right-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-right-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-right-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-right-quote-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-right-quote.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-right-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-right-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-dots-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-dots.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-square-quote-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-quote.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-square-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-square-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat-square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chat-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chat.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check-all.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/check-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/check.svg +3 -0
- frontend/public/build/shoelace/assets/icons/check2-all.svg +4 -0
- frontend/public/build/shoelace/assets/icons/check2-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/check2-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/check2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-contract.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-expand.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-bar-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-compact-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-compact-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-compact-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-compact-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-contract.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-double-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chevron-double-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chevron-double-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chevron-double-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/chevron-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-expand.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/chevron-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/circle-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/circle-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/clipboard-check-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-check.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard-data-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-data.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/clipboard-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-heart.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard-minus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-minus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard-plus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-plus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard-pulse.svg +3 -0
- frontend/public/build/shoelace/assets/icons/clipboard-x-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-check-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-check.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-data-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-data.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-heart.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-minus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-minus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-plus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-plus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-pulse-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-pulse.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-x-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clipboard2-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clipboard2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clock-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/clock-history.svg +5 -0
- frontend/public/build/shoelace/assets/icons/clock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-arrow-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-arrow-up-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-download-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-download.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-drizzle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-drizzle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-fog-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-fog.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-fog2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-fog2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-hail-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-hail.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-haze-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-haze.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-haze2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-haze2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-lightning-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-lightning-rain-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-lightning-rain.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-lightning.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-moon-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-moon.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-rain-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-rain-heavy-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-rain-heavy.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-rain.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-slash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-sleet-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-sleet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-snow-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-snow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-sun-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-sun.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud-upload-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloud-upload.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloud.svg +3 -0
- frontend/public/build/shoelace/assets/icons/clouds-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/clouds.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cloudy-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cloudy.svg +3 -0
- frontend/public/build/shoelace/assets/icons/code-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/code-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/code.svg +3 -0
- frontend/public/build/shoelace/assets/icons/coin.svg +5 -0
- frontend/public/build/shoelace/assets/icons/collection-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/collection-play-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/collection-play.svg +4 -0
- frontend/public/build/shoelace/assets/icons/collection.svg +3 -0
- frontend/public/build/shoelace/assets/icons/columns-gap.svg +3 -0
- frontend/public/build/shoelace/assets/icons/columns.svg +3 -0
- frontend/public/build/shoelace/assets/icons/command.svg +3 -0
- frontend/public/build/shoelace/assets/icons/compass-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/compass.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cone-striped.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cone.svg +3 -0
- frontend/public/build/shoelace/assets/icons/controller.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cookie.svg +4 -0
- frontend/public/build/shoelace/assets/icons/copy.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cpu-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cpu.svg +3 -0
- frontend/public/build/shoelace/assets/icons/credit-card-2-back-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/credit-card-2-back.svg +4 -0
- frontend/public/build/shoelace/assets/icons/credit-card-2-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/credit-card-2-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/credit-card-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/credit-card.svg +4 -0
- frontend/public/build/shoelace/assets/icons/crop.svg +3 -0
- frontend/public/build/shoelace/assets/icons/crosshair.svg +3 -0
- frontend/public/build/shoelace/assets/icons/crosshair2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cup-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cup-hot-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cup-hot.svg +4 -0
- frontend/public/build/shoelace/assets/icons/cup-straw.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cup.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-bitcoin.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-dollar.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-euro.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-exchange.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-pound.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-rupee.svg +3 -0
- frontend/public/build/shoelace/assets/icons/currency-yen.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cursor-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cursor-text.svg +3 -0
- frontend/public/build/shoelace/assets/icons/cursor.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-circle-dotted.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dash-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-square-dotted.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dash-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/database-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-exclamation.svg +5 -0
- frontend/public/build/shoelace/assets/icons/database-fill-gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-lock.svg +5 -0
- frontend/public/build/shoelace/assets/icons/database-fill-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-fill-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/database-fill.svg +6 -0
- frontend/public/build/shoelace/assets/icons/database-gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/database.svg +3 -0
- frontend/public/build/shoelace/assets/icons/device-hdd-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/device-hdd.svg +5 -0
- frontend/public/build/shoelace/assets/icons/device-ssd-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/device-ssd.svg +4 -0
- frontend/public/build/shoelace/assets/icons/diagram-2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diagram-2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diagram-3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diagram-3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diamond-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diamond-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/diamond.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-1-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-1.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dice-2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dice-3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-3.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dice-4-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-4.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dice-5-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-5.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dice-6-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dice-6.svg +4 -0
- frontend/public/build/shoelace/assets/icons/disc-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/disc.svg +4 -0
- frontend/public/build/shoelace/assets/icons/discord.svg +3 -0
- frontend/public/build/shoelace/assets/icons/display-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/display.svg +3 -0
- frontend/public/build/shoelace/assets/icons/displayport-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/displayport.svg +4 -0
- frontend/public/build/shoelace/assets/icons/distribute-horizontal.svg +4 -0
- frontend/public/build/shoelace/assets/icons/distribute-vertical.svg +4 -0
- frontend/public/build/shoelace/assets/icons/door-closed-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/door-closed.svg +4 -0
- frontend/public/build/shoelace/assets/icons/door-open-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/door-open.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dot.svg +3 -0
- frontend/public/build/shoelace/assets/icons/download.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dpad-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dpad.svg +4 -0
- frontend/public/build/shoelace/assets/icons/dribbble.svg +3 -0
- frontend/public/build/shoelace/assets/icons/dropbox.svg +3 -0
- frontend/public/build/shoelace/assets/icons/droplet-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/droplet-half.svg +4 -0
- frontend/public/build/shoelace/assets/icons/droplet.svg +4 -0
- frontend/public/build/shoelace/assets/icons/duffle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/duffle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ear-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ear.svg +3 -0
- frontend/public/build/shoelace/assets/icons/earbuds.svg +3 -0
- frontend/public/build/shoelace/assets/icons/easel-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/easel.svg +3 -0
- frontend/public/build/shoelace/assets/icons/easel2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/easel2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/easel3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/easel3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/egg-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/egg-fried.svg +4 -0
- frontend/public/build/shoelace/assets/icons/egg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/eject-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/eject.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-angry-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-angry.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-astonished-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-astonished.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-dizzy-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-dizzy.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-expressionless-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-expressionless.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-frown-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-frown.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-grimace-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-grimace.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-grin-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-grin.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-heart-eyes-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-heart-eyes.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-kiss-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-kiss.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-laughing-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-laughing.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-neutral-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-neutral.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-smile-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-smile-upside-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-smile-upside-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-smile.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-sunglasses-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-sunglasses.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-surprise-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-surprise.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-tear-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-tear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/emoji-wink-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/emoji-wink.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-arrow-down-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-arrow-up-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-at-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-at.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-check-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-dash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-exclamation-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-open-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-open-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-open-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-open.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-paper-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-paper-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-paper-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-paper.svg +3 -0
- frontend/public/build/shoelace/assets/icons/envelope-plus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-slash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-x-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/envelope.svg +3 -0
- frontend/public/build/shoelace/assets/icons/eraser-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/eraser.svg +3 -0
- frontend/public/build/shoelace/assets/icons/escape.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ethernet.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ev-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ev-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ev-station-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ev-station.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation-diamond-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-diamond.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-octagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-octagon.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation-triangle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclamation-triangle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exclamation.svg +3 -0
- frontend/public/build/shoelace/assets/icons/exclude.svg +3 -0
- frontend/public/build/shoelace/assets/icons/explicit-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/explicit.svg +4 -0
- frontend/public/build/shoelace/assets/icons/exposure.svg +4 -0
- frontend/public/build/shoelace/assets/icons/eye-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/eye-slash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/eye-slash.svg +5 -0
- frontend/public/build/shoelace/assets/icons/eye.svg +4 -0
- frontend/public/build/shoelace/assets/icons/eyedropper.svg +3 -0
- frontend/public/build/shoelace/assets/icons/eyeglasses.svg +3 -0
- frontend/public/build/shoelace/assets/icons/facebook.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fan.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fast-forward-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fast-forward-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fast-forward-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fast-forward-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fast-forward-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fast-forward.svg +4 -0
- frontend/public/build/shoelace/assets/icons/feather.svg +3 -0
- frontend/public/build/shoelace/assets/icons/feather2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-arrow-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-arrow-up-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-bar-graph-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-bar-graph.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-binary-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-binary.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-break-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-break.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-code-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-code.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-diff-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-diff.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-arrow-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-arrow-up-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-bar-graph-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-bar-graph.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-binary-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-binary.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-break-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-break.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-code-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-code.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-diff-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-diff.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-easel-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-easel.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-excel-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-excel.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-font-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-font.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-image-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-image.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-lock-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-lock2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-lock2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-medical-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-medical.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-music-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-music.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-pdf-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-pdf.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-person-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-person.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-play-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-play.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-post-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-post.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-ppt-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-ppt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-richtext-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-richtext.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-ruled-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-ruled.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-slides-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-slides.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-spreadsheet-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-spreadsheet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-word-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-word.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-zip-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark-zip.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-earmark.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-easel-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-easel.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-excel-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-excel.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-font-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-font.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-image-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-image.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-lock-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-lock2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-lock2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-medical-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-medical.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-music-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-music.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-pdf-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-pdf.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-person-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-person.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-play-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-play.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-post-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-post.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-ppt-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-ppt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-richtext-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-richtext.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-ruled-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-ruled.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-slides-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-slides.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-spreadsheet-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-spreadsheet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-text-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-word-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-word.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/file-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-zip-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file-zip.svg +4 -0
- frontend/public/build/shoelace/assets/icons/file.svg +3 -0
- frontend/public/build/shoelace/assets/icons/files-alt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/files.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-aac.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-ai.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-bmp.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-cs.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-css.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-csv.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-doc.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-docx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-exe.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-gif.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-heic.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-html.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-java.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-jpg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-js.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-json.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-jsx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-key.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-m4p.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-md.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-mdx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-mov.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-mp3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-mp4.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-otf.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-pdf.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-php.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-png.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-ppt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-pptx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-psd.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-py.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-raw.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-rb.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-sass.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-scss.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-sh.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-sql.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-svg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-tiff.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-tsx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-ttf.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-txt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-wav.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-woff.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-xls.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-xlsx.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-xml.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filetype-yml.svg +3 -0
- frontend/public/build/shoelace/assets/icons/film.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filter-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filter-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/filter-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filter-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filter-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/filter-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/filter.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fingerprint.svg +7 -0
- frontend/public/build/shoelace/assets/icons/fire.svg +3 -0
- frontend/public/build/shoelace/assets/icons/flag-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/flag.svg +3 -0
- frontend/public/build/shoelace/assets/icons/floppy-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/floppy.svg +4 -0
- frontend/public/build/shoelace/assets/icons/floppy2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/floppy2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/flower1.svg +3 -0
- frontend/public/build/shoelace/assets/icons/flower2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/flower3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/folder-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/folder-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/folder-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/folder-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/folder-symlink-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/folder-symlink.svg +4 -0
- frontend/public/build/shoelace/assets/icons/folder-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/folder.svg +3 -0
- frontend/public/build/shoelace/assets/icons/folder2-open.svg +3 -0
- frontend/public/build/shoelace/assets/icons/folder2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fonts.svg +3 -0
- frontend/public/build/shoelace/assets/icons/forward-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/forward.svg +3 -0
- frontend/public/build/shoelace/assets/icons/front.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fuel-pump-diesel-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fuel-pump-diesel.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fuel-pump-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fuel-pump.svg +4 -0
- frontend/public/build/shoelace/assets/icons/fullscreen-exit.svg +3 -0
- frontend/public/build/shoelace/assets/icons/fullscreen.svg +3 -0
- frontend/public/build/shoelace/assets/icons/funnel-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/funnel.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gear-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gear-wide-connected.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gear-wide.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/gem.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gender-ambiguous.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gender-female.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gender-male.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gender-neuter.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gender-trans.svg +3 -0
- frontend/public/build/shoelace/assets/icons/geo-alt-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/geo-alt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/geo-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/geo.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gift-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gift.svg +3 -0
- frontend/public/build/shoelace/assets/icons/git.svg +3 -0
- frontend/public/build/shoelace/assets/icons/github.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gitlab.svg +3 -0
- frontend/public/build/shoelace/assets/icons/globe-americas.svg +3 -0
- frontend/public/build/shoelace/assets/icons/globe-asia-australia.svg +4 -0
- frontend/public/build/shoelace/assets/icons/globe-central-south-asia.svg +3 -0
- frontend/public/build/shoelace/assets/icons/globe-europe-africa.svg +3 -0
- frontend/public/build/shoelace/assets/icons/globe.svg +3 -0
- frontend/public/build/shoelace/assets/icons/globe2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/google-play.svg +3 -0
- frontend/public/build/shoelace/assets/icons/google.svg +3 -0
- frontend/public/build/shoelace/assets/icons/gpu-card.svg +5 -0
- frontend/public/build/shoelace/assets/icons/graph-down-arrow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/graph-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/graph-up-arrow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/graph-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-1x2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-1x2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x2-gap-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x2-gap.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x3-gap-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x3-gap.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-3x3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grid.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grip-horizontal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/grip-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/h-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/h-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/h-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/h-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/hammer.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-index-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-index-thumb-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-index-thumb.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-index.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-thumbs-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-thumbs-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-thumbs-up-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hand-thumbs-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/handbag-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/handbag.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdd-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdd-network-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdd-network.svg +4 -0
- frontend/public/build/shoelace/assets/icons/hdd-rack-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdd-rack.svg +4 -0
- frontend/public/build/shoelace/assets/icons/hdd-stack-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdd-stack.svg +5 -0
- frontend/public/build/shoelace/assets/icons/hdd.svg +4 -0
- frontend/public/build/shoelace/assets/icons/hdmi-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hdmi.svg +4 -0
- frontend/public/build/shoelace/assets/icons/headphones.svg +3 -0
- frontend/public/build/shoelace/assets/icons/headset-vr.svg +4 -0
- frontend/public/build/shoelace/assets/icons/headset.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heart-arrow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heart-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heart-pulse-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/heart-pulse.svg +4 -0
- frontend/public/build/shoelace/assets/icons/heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heartbreak-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heartbreak.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hearts.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heptagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heptagon-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/heptagon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hexagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hexagon-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hexagon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/highlighter.svg +3 -0
- frontend/public/build/shoelace/assets/icons/highlights.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hospital-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hospital.svg +4 -0
- frontend/public/build/shoelace/assets/icons/hourglass-bottom.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hourglass-split.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hourglass-top.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hourglass.svg +3 -0
- frontend/public/build/shoelace/assets/icons/house-add-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-check-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-dash-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-door-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/house-door.svg +3 -0
- frontend/public/build/shoelace/assets/icons/house-down-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-exclamation-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-gear-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-gear.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-lock-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-slash-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-up-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house-x-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/house-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/house.svg +3 -0
- frontend/public/build/shoelace/assets/icons/houses-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/houses.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hr.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hurricane.svg +3 -0
- frontend/public/build/shoelace/assets/icons/hypnotize.svg +4 -0
- frontend/public/build/shoelace/assets/icons/icons.json +24701 -0
- frontend/public/build/shoelace/assets/icons/image-alt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/image-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/image.svg +4 -0
- frontend/public/build/shoelace/assets/icons/images.svg +4 -0
- frontend/public/build/shoelace/assets/icons/inbox-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/inbox.svg +3 -0
- frontend/public/build/shoelace/assets/icons/inboxes-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/inboxes.svg +3 -0
- frontend/public/build/shoelace/assets/icons/incognito.svg +3 -0
- frontend/public/build/shoelace/assets/icons/indent.svg +4 -0
- frontend/public/build/shoelace/assets/icons/infinity.svg +3 -0
- frontend/public/build/shoelace/assets/icons/info-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/info-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/info-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/info-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/info-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/info.svg +3 -0
- frontend/public/build/shoelace/assets/icons/input-cursor-text.svg +4 -0
- frontend/public/build/shoelace/assets/icons/input-cursor.svg +4 -0
- frontend/public/build/shoelace/assets/icons/instagram.svg +3 -0
- frontend/public/build/shoelace/assets/icons/intersect.svg +3 -0
- frontend/public/build/shoelace/assets/icons/journal-album.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-arrow-down.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-arrow-up.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-bookmark-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-bookmark.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-check.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-code.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-medical.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-minus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-plus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-richtext.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-text.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/journal.svg +4 -0
- frontend/public/build/shoelace/assets/icons/journals.svg +4 -0
- frontend/public/build/shoelace/assets/icons/joystick.svg +4 -0
- frontend/public/build/shoelace/assets/icons/justify-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/justify-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/justify.svg +3 -0
- frontend/public/build/shoelace/assets/icons/kanban-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/kanban.svg +4 -0
- frontend/public/build/shoelace/assets/icons/key-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/key.svg +4 -0
- frontend/public/build/shoelace/assets/icons/keyboard-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/keyboard.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ladder.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lamp-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/lamp.svg +4 -0
- frontend/public/build/shoelace/assets/icons/laptop-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/laptop.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layer-backward.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layer-forward.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layers-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layers-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layers.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layout-sidebar-inset-reverse.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-sidebar-inset.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-sidebar-reverse.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layout-sidebar.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layout-split.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layout-text-sidebar-reverse.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-text-sidebar.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-text-window-reverse.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-text-window.svg +4 -0
- frontend/public/build/shoelace/assets/icons/layout-three-columns.svg +3 -0
- frontend/public/build/shoelace/assets/icons/layout-wtf.svg +3 -0
- frontend/public/build/shoelace/assets/icons/life-preserver.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightbulb-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightbulb-off-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightbulb-off.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightbulb.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightning-charge-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightning-charge.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightning-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lightning.svg +3 -0
- frontend/public/build/shoelace/assets/icons/line.svg +3 -0
- frontend/public/build/shoelace/assets/icons/link-45deg.svg +4 -0
- frontend/public/build/shoelace/assets/icons/link.svg +4 -0
- frontend/public/build/shoelace/assets/icons/linkedin.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list-check.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list-columns-reverse.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list-columns.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list-nested.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list-ol.svg +4 -0
- frontend/public/build/shoelace/assets/icons/list-stars.svg +4 -0
- frontend/public/build/shoelace/assets/icons/list-task.svg +5 -0
- frontend/public/build/shoelace/assets/icons/list-ul.svg +3 -0
- frontend/public/build/shoelace/assets/icons/list.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lock-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lock.svg +3 -0
- frontend/public/build/shoelace/assets/icons/luggage-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/luggage.svg +4 -0
- frontend/public/build/shoelace/assets/icons/lungs-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/lungs.svg +3 -0
- frontend/public/build/shoelace/assets/icons/magic.svg +3 -0
- frontend/public/build/shoelace/assets/icons/magnet-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/magnet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mailbox-flag.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mailbox.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mailbox2-flag.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mailbox2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/map-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/map.svg +3 -0
- frontend/public/build/shoelace/assets/icons/markdown-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/markdown.svg +6 -0
- frontend/public/build/shoelace/assets/icons/marker-tip.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mask.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mastodon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/medium.svg +3 -0
- frontend/public/build/shoelace/assets/icons/megaphone-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/megaphone.svg +3 -0
- frontend/public/build/shoelace/assets/icons/memory.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-app-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-app.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-button-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-button-wide-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-button-wide.svg +4 -0
- frontend/public/build/shoelace/assets/icons/menu-button.svg +4 -0
- frontend/public/build/shoelace/assets/icons/menu-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/menu-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/messenger.svg +3 -0
- frontend/public/build/shoelace/assets/icons/meta.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mic-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mic-mute-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mic-mute.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mic.svg +4 -0
- frontend/public/build/shoelace/assets/icons/microsoft-teams.svg +4 -0
- frontend/public/build/shoelace/assets/icons/microsoft.svg +3 -0
- frontend/public/build/shoelace/assets/icons/minecart-loaded.svg +4 -0
- frontend/public/build/shoelace/assets/icons/minecart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/modem-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/modem.svg +4 -0
- frontend/public/build/shoelace/assets/icons/moisture.svg +3 -0
- frontend/public/build/shoelace/assets/icons/moon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/moon-stars-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/moon-stars.svg +4 -0
- frontend/public/build/shoelace/assets/icons/moon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mortarboard-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mortarboard.svg +4 -0
- frontend/public/build/shoelace/assets/icons/motherboard-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/motherboard.svg +4 -0
- frontend/public/build/shoelace/assets/icons/mouse-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mouse.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mouse2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mouse2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mouse3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/mouse3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/music-note-beamed.svg +5 -0
- frontend/public/build/shoelace/assets/icons/music-note-list.svg +6 -0
- frontend/public/build/shoelace/assets/icons/music-note.svg +5 -0
- frontend/public/build/shoelace/assets/icons/music-player-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/music-player.svg +5 -0
- frontend/public/build/shoelace/assets/icons/newspaper.svg +4 -0
- frontend/public/build/shoelace/assets/icons/nintendo-switch.svg +4 -0
- frontend/public/build/shoelace/assets/icons/node-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/node-minus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/node-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/node-plus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/noise-reduction.svg +4 -0
- frontend/public/build/shoelace/assets/icons/nut-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/nut.svg +4 -0
- frontend/public/build/shoelace/assets/icons/nvidia.svg +3 -0
- frontend/public/build/shoelace/assets/icons/nvme-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/nvme.svg +4 -0
- frontend/public/build/shoelace/assets/icons/octagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/octagon-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/octagon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/opencollective.svg +4 -0
- frontend/public/build/shoelace/assets/icons/optical-audio-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/optical-audio.svg +5 -0
- frontend/public/build/shoelace/assets/icons/option.svg +3 -0
- frontend/public/build/shoelace/assets/icons/outlet.svg +4 -0
- frontend/public/build/shoelace/assets/icons/p-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/p-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/p-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/p-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/paint-bucket.svg +3 -0
- frontend/public/build/shoelace/assets/icons/palette-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/palette.svg +4 -0
- frontend/public/build/shoelace/assets/icons/palette2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/paperclip.svg +3 -0
- frontend/public/build/shoelace/assets/icons/paragraph.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pass-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pass.svg +4 -0
- frontend/public/build/shoelace/assets/icons/passport-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/passport.svg +4 -0
- frontend/public/build/shoelace/assets/icons/patch-check-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/patch-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/patch-exclamation-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/patch-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/patch-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/patch-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/patch-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/patch-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/patch-question-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/patch-question.svg +5 -0
- frontend/public/build/shoelace/assets/icons/pause-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pause-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pause-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pause-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pause-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pause.svg +3 -0
- frontend/public/build/shoelace/assets/icons/paypal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pc-display-horizontal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pc-display.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pc-horizontal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pc.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pci-card-network.svg +5 -0
- frontend/public/build/shoelace/assets/icons/pci-card-sound.svg +5 -0
- frontend/public/build/shoelace/assets/icons/pci-card.svg +4 -0
- frontend/public/build/shoelace/assets/icons/peace-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/peace.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pen-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pen.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pencil-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pencil-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pencil.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pentagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pentagon-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pentagon.svg +3 -0
- frontend/public/build/shoelace/assets/icons/people-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/people.svg +3 -0
- frontend/public/build/shoelace/assets/icons/percent.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-arms-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-badge-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-badge.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-bounding-box.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-check-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-dash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-add.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-gear.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-fill-lock.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-fill-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-fill-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-gear.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-hearts.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-lines-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-lock.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-plus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-raised-hand.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-rolodex.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-standing-dress.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-standing.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-vcard-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-vcard.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-video.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-video2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-video3.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-walking.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-wheelchair.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-workspace.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/person-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/person.svg +3 -0
- frontend/public/build/shoelace/assets/icons/phone-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/phone-flip.svg +3 -0
- frontend/public/build/shoelace/assets/icons/phone-landscape-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/phone-landscape.svg +4 -0
- frontend/public/build/shoelace/assets/icons/phone-vibrate-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/phone-vibrate.svg +4 -0
- frontend/public/build/shoelace/assets/icons/phone.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pie-chart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pie-chart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/piggy-bank-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/piggy-bank.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pin-angle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pin-angle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pin-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pin-map-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pin-map.svg +4 -0
- frontend/public/build/shoelace/assets/icons/pin.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pinterest.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pip-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/pip.svg +4 -0
- frontend/public/build/shoelace/assets/icons/play-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/play-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/play-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/play-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/play-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/play.svg +3 -0
- frontend/public/build/shoelace/assets/icons/playstation.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plug-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plug.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plugin.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-circle-dotted.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/plus-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-slash-minus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-square-dotted.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/plus-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/plus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/postage-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postage-heart-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postage-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postage.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postcard-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postcard-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/postcard-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/postcard.svg +3 -0
- frontend/public/build/shoelace/assets/icons/power.svg +4 -0
- frontend/public/build/shoelace/assets/icons/prescription.svg +4 -0
- frontend/public/build/shoelace/assets/icons/prescription2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/printer-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/printer.svg +4 -0
- frontend/public/build/shoelace/assets/icons/projector-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/projector.svg +4 -0
- frontend/public/build/shoelace/assets/icons/puzzle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/puzzle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/qr-code-scan.svg +7 -0
- frontend/public/build/shoelace/assets/icons/qr-code.svg +7 -0
- frontend/public/build/shoelace/assets/icons/question-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/question-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/question-diamond-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/question-diamond.svg +4 -0
- frontend/public/build/shoelace/assets/icons/question-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/question-octagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/question-octagon.svg +4 -0
- frontend/public/build/shoelace/assets/icons/question-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/question-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/question.svg +3 -0
- frontend/public/build/shoelace/assets/icons/quora.svg +3 -0
- frontend/public/build/shoelace/assets/icons/quote.svg +3 -0
- frontend/public/build/shoelace/assets/icons/r-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/r-circle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/r-square-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/r-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/radar.svg +3 -0
- frontend/public/build/shoelace/assets/icons/radioactive.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rainbow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/receipt-cutoff.svg +4 -0
- frontend/public/build/shoelace/assets/icons/receipt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/reception-0.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reception-1.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reception-2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reception-3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reception-4.svg +3 -0
- frontend/public/build/shoelace/assets/icons/record-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/record-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/record-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/record-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/record-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/record.svg +3 -0
- frontend/public/build/shoelace/assets/icons/record2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/record2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/recycle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reddit.svg +4 -0
- frontend/public/build/shoelace/assets/icons/regex.svg +3 -0
- frontend/public/build/shoelace/assets/icons/repeat-1.svg +4 -0
- frontend/public/build/shoelace/assets/icons/repeat.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reply-all-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/reply-all.svg +4 -0
- frontend/public/build/shoelace/assets/icons/reply-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/reply.svg +3 -0
- frontend/public/build/shoelace/assets/icons/rewind-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/rewind-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rewind-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/rewind-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rewind-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rewind.svg +4 -0
- frontend/public/build/shoelace/assets/icons/robot.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rocket-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rocket-takeoff-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rocket-takeoff.svg +5 -0
- frontend/public/build/shoelace/assets/icons/rocket.svg +5 -0
- frontend/public/build/shoelace/assets/icons/router-fill.svg +6 -0
- frontend/public/build/shoelace/assets/icons/router.svg +6 -0
- frontend/public/build/shoelace/assets/icons/rss-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/rss.svg +4 -0
- frontend/public/build/shoelace/assets/icons/rulers.svg +3 -0
- frontend/public/build/shoelace/assets/icons/safe-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/safe.svg +4 -0
- frontend/public/build/shoelace/assets/icons/safe2-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/safe2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/save-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/save.svg +3 -0
- frontend/public/build/shoelace/assets/icons/save2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/save2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/scissors.svg +3 -0
- frontend/public/build/shoelace/assets/icons/scooter.svg +3 -0
- frontend/public/build/shoelace/assets/icons/screwdriver.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sd-card-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sd-card.svg +4 -0
- frontend/public/build/shoelace/assets/icons/search-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/search-heart.svg +4 -0
- frontend/public/build/shoelace/assets/icons/search.svg +3 -0
- frontend/public/build/shoelace/assets/icons/segmented-nav.svg +3 -0
- frontend/public/build/shoelace/assets/icons/send-arrow-down-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-arrow-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-arrow-up-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-arrow-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-check-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-dash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-exclamation-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/send-plus-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-slash-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-slash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-x-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/send.svg +3 -0
- frontend/public/build/shoelace/assets/icons/server.svg +5 -0
- frontend/public/build/shoelace/assets/icons/shadows.svg +3 -0
- frontend/public/build/shoelace/assets/icons/share-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/share.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-check.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield-exclamation.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield-fill-check.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-fill-exclamation.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-fill-minus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-fill-plus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-fill-x.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-lock-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-lock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield-shaded.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-slash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shield-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/shield.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shift-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shift.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shop-window.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shop.svg +3 -0
- frontend/public/build/shoelace/assets/icons/shuffle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-dead-end-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-dead-end.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-do-not-enter-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-do-not-enter.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-side-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-side.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-t-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-t.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-y-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection-y.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-intersection.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-merge-left-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-merge-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-merge-right-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-merge-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-no-left-turn-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-no-left-turn.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-no-parking-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-no-parking.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-no-right-turn-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-no-right-turn.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-railroad-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sign-railroad.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-stop-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-stop-lights-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-stop-lights.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-stop.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-left-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-right-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-slight-left-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-slight-left.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-slight-right-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sign-turn-slight-right.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-yield-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sign-yield.svg +5 -0
- frontend/public/build/shoelace/assets/icons/signal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost-2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost-2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost-split-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost-split.svg +3 -0
- frontend/public/build/shoelace/assets/icons/signpost.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sim-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sim-slash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sim-slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sim.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sina-weibo.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-backward-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-backward-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-backward-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-backward-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-backward-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-backward.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-end-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-end-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-end-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-end-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-end-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-end.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-forward-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-forward-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-forward-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-forward-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-forward-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-forward.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-start-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-start-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-start-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-start-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/skip-start-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skip-start.svg +3 -0
- frontend/public/build/shoelace/assets/icons/skype.svg +3 -0
- frontend/public/build/shoelace/assets/icons/slack.svg +3 -0
- frontend/public/build/shoelace/assets/icons/slash-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/slash-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/slash-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/slash-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/slash-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/slash.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sliders.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sliders2-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sliders2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/smartwatch.svg +4 -0
- frontend/public/build/shoelace/assets/icons/snapchat.svg +3 -0
- frontend/public/build/shoelace/assets/icons/snow.svg +3 -0
- frontend/public/build/shoelace/assets/icons/snow2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/snow3.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sort-alpha-down-alt.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sort-alpha-down.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sort-alpha-up-alt.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sort-alpha-up.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sort-down-alt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sort-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sort-numeric-down-alt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sort-numeric-down.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sort-numeric-up-alt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sort-numeric-up.svg +5 -0
- frontend/public/build/shoelace/assets/icons/sort-up-alt.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sort-up.svg +3 -0
- frontend/public/build/shoelace/assets/icons/soundwave.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sourceforge.svg +4 -0
- frontend/public/build/shoelace/assets/icons/speaker-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/speaker.svg +4 -0
- frontend/public/build/shoelace/assets/icons/speedometer.svg +4 -0
- frontend/public/build/shoelace/assets/icons/speedometer2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/spellcheck.svg +4 -0
- frontend/public/build/shoelace/assets/icons/spotify.svg +3 -0
- frontend/public/build/shoelace/assets/icons/square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/square-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/square.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stack-overflow.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stack.svg +4 -0
- frontend/public/build/shoelace/assets/icons/star-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/star-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/star.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stars.svg +3 -0
- frontend/public/build/shoelace/assets/icons/steam.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stickies-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stickies.svg +4 -0
- frontend/public/build/shoelace/assets/icons/sticky-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sticky.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stop-btn-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stop-btn.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stop-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stop-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stop-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stop.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stoplights-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stoplights.svg +4 -0
- frontend/public/build/shoelace/assets/icons/stopwatch-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stopwatch.svg +4 -0
- frontend/public/build/shoelace/assets/icons/strava.svg +3 -0
- frontend/public/build/shoelace/assets/icons/stripe.svg +3 -0
- frontend/public/build/shoelace/assets/icons/subscript.svg +3 -0
- frontend/public/build/shoelace/assets/icons/substack.svg +3 -0
- frontend/public/build/shoelace/assets/icons/subtract.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-club-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-club.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-diamond-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-diamond.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-heart-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-heart.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-spade-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suit-spade.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suitcase-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suitcase-lg-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suitcase-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suitcase.svg +4 -0
- frontend/public/build/shoelace/assets/icons/suitcase2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/suitcase2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sun-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sun.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sunglasses.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sunrise-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sunrise.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sunset-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/sunset.svg +3 -0
- frontend/public/build/shoelace/assets/icons/superscript.svg +3 -0
- frontend/public/build/shoelace/assets/icons/symmetry-horizontal.svg +3 -0
- frontend/public/build/shoelace/assets/icons/symmetry-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/table.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tablet-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tablet-landscape-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tablet-landscape.svg +4 -0
- frontend/public/build/shoelace/assets/icons/tablet.svg +4 -0
- frontend/public/build/shoelace/assets/icons/tag-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tag.svg +4 -0
- frontend/public/build/shoelace/assets/icons/tags-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/tags.svg +4 -0
- frontend/public/build/shoelace/assets/icons/taxi-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/taxi-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/telegram.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-forward-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-forward.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-inbound-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-inbound.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-minus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-minus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/telephone-outbound-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-outbound.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-plus-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/telephone-x-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/telephone-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/telephone.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tencent-qq.svg +4 -0
- frontend/public/build/shoelace/assets/icons/terminal-dash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/terminal-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/terminal-plus.svg +4 -0
- frontend/public/build/shoelace/assets/icons/terminal-split.svg +4 -0
- frontend/public/build/shoelace/assets/icons/terminal-x.svg +4 -0
- frontend/public/build/shoelace/assets/icons/terminal.svg +4 -0
- frontend/public/build/shoelace/assets/icons/text-center.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-indent-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-indent-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-left.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-paragraph.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-right.svg +3 -0
- frontend/public/build/shoelace/assets/icons/text-wrap.svg +3 -0
- frontend/public/build/shoelace/assets/icons/textarea-resize.svg +3 -0
- frontend/public/build/shoelace/assets/icons/textarea-t.svg +4 -0
- frontend/public/build/shoelace/assets/icons/textarea.svg +3 -0
- frontend/public/build/shoelace/assets/icons/thermometer-half.svg +4 -0
- frontend/public/build/shoelace/assets/icons/thermometer-high.svg +4 -0
- frontend/public/build/shoelace/assets/icons/thermometer-low.svg +4 -0
- frontend/public/build/shoelace/assets/icons/thermometer-snow.svg +4 -0
- frontend/public/build/shoelace/assets/icons/thermometer-sun.svg +4 -0
- frontend/public/build/shoelace/assets/icons/thermometer.svg +4 -0
- frontend/public/build/shoelace/assets/icons/threads-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/threads.svg +3 -0
- frontend/public/build/shoelace/assets/icons/three-dots-vertical.svg +3 -0
- frontend/public/build/shoelace/assets/icons/three-dots.svg +3 -0
- frontend/public/build/shoelace/assets/icons/thunderbolt-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/thunderbolt.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ticket-detailed-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ticket-detailed.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ticket-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ticket-perforated-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ticket-perforated.svg +4 -0
- frontend/public/build/shoelace/assets/icons/ticket.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tiktok.svg +3 -0
- frontend/public/build/shoelace/assets/icons/toggle-off.svg +3 -0
- frontend/public/build/shoelace/assets/icons/toggle-on.svg +3 -0
- frontend/public/build/shoelace/assets/icons/toggle2-off.svg +4 -0
- frontend/public/build/shoelace/assets/icons/toggle2-on.svg +4 -0
- frontend/public/build/shoelace/assets/icons/toggles.svg +3 -0
- frontend/public/build/shoelace/assets/icons/toggles2.svg +5 -0
- frontend/public/build/shoelace/assets/icons/tools.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tornado.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-freight-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-freight-front.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-front.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-lightrail-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/train-lightrail-front.svg +3 -0
- frontend/public/build/shoelace/assets/icons/translate.svg +4 -0
- frontend/public/build/shoelace/assets/icons/transparency.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trash-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trash.svg +4 -0
- frontend/public/build/shoelace/assets/icons/trash2-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trash2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trash3-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trash3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tree-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tree.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trello.svg +3 -0
- frontend/public/build/shoelace/assets/icons/triangle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/triangle-half.svg +3 -0
- frontend/public/build/shoelace/assets/icons/triangle.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trophy-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/trophy.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tropical-storm.svg +4 -0
- frontend/public/build/shoelace/assets/icons/truck-flatbed.svg +3 -0
- frontend/public/build/shoelace/assets/icons/truck-front-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/truck-front.svg +4 -0
- frontend/public/build/shoelace/assets/icons/truck.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tsunami.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tv-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/tv.svg +3 -0
- frontend/public/build/shoelace/assets/icons/twitch.svg +4 -0
- frontend/public/build/shoelace/assets/icons/twitter-x.svg +3 -0
- frontend/public/build/shoelace/assets/icons/twitter.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-bold.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h1.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h3.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h4.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h5.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-h6.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-italic.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-strikethrough.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type-underline.svg +3 -0
- frontend/public/build/shoelace/assets/icons/type.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ubuntu.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ui-checks-grid.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ui-checks.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ui-radios-grid.svg +3 -0
- frontend/public/build/shoelace/assets/icons/ui-radios.svg +3 -0
- frontend/public/build/shoelace/assets/icons/umbrella-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/umbrella.svg +3 -0
- frontend/public/build/shoelace/assets/icons/unindent.svg +4 -0
- frontend/public/build/shoelace/assets/icons/union.svg +3 -0
- frontend/public/build/shoelace/assets/icons/unity.svg +3 -0
- frontend/public/build/shoelace/assets/icons/universal-access-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/universal-access.svg +3 -0
- frontend/public/build/shoelace/assets/icons/unlock-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/unlock.svg +3 -0
- frontend/public/build/shoelace/assets/icons/upc-scan.svg +3 -0
- frontend/public/build/shoelace/assets/icons/upc.svg +3 -0
- frontend/public/build/shoelace/assets/icons/upload.svg +4 -0
- frontend/public/build/shoelace/assets/icons/usb-c-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-c.svg +4 -0
- frontend/public/build/shoelace/assets/icons/usb-drive-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-drive.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-micro-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-micro.svg +4 -0
- frontend/public/build/shoelace/assets/icons/usb-mini-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-mini.svg +4 -0
- frontend/public/build/shoelace/assets/icons/usb-plug-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-plug.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb-symbol.svg +3 -0
- frontend/public/build/shoelace/assets/icons/usb.svg +4 -0
- frontend/public/build/shoelace/assets/icons/valentine.svg +4 -0
- frontend/public/build/shoelace/assets/icons/valentine2.svg +4 -0
- frontend/public/build/shoelace/assets/icons/vector-pen.svg +4 -0
- frontend/public/build/shoelace/assets/icons/view-list.svg +3 -0
- frontend/public/build/shoelace/assets/icons/view-stacked.svg +3 -0
- frontend/public/build/shoelace/assets/icons/vignette.svg +4 -0
- frontend/public/build/shoelace/assets/icons/vimeo.svg +3 -0
- frontend/public/build/shoelace/assets/icons/vinyl-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/vinyl.svg +5 -0
- frontend/public/build/shoelace/assets/icons/virus.svg +3 -0
- frontend/public/build/shoelace/assets/icons/virus2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/voicemail.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-down-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-down.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-mute-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-mute.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-off-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-off.svg +3 -0
- frontend/public/build/shoelace/assets/icons/volume-up-fill.svg +5 -0
- frontend/public/build/shoelace/assets/icons/volume-up.svg +5 -0
- frontend/public/build/shoelace/assets/icons/vr.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wallet-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wallet.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wallet2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/watch.svg +4 -0
- frontend/public/build/shoelace/assets/icons/water.svg +3 -0
- frontend/public/build/shoelace/assets/icons/webcam-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/webcam.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wechat.svg +4 -0
- frontend/public/build/shoelace/assets/icons/whatsapp.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wifi-1.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wifi-2.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wifi-off.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wifi.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wikipedia.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wind.svg +3 -0
- frontend/public/build/shoelace/assets/icons/window-dash.svg +5 -0
- frontend/public/build/shoelace/assets/icons/window-desktop.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-dock.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-fullscreen.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-plus.svg +5 -0
- frontend/public/build/shoelace/assets/icons/window-sidebar.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-split.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-stack.svg +4 -0
- frontend/public/build/shoelace/assets/icons/window-x.svg +5 -0
- frontend/public/build/shoelace/assets/icons/window.svg +4 -0
- frontend/public/build/shoelace/assets/icons/windows.svg +3 -0
- frontend/public/build/shoelace/assets/icons/wordpress.svg +5 -0
- frontend/public/build/shoelace/assets/icons/wrench-adjustable-circle-fill.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wrench-adjustable-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wrench-adjustable.svg +4 -0
- frontend/public/build/shoelace/assets/icons/wrench.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-circle-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-circle.svg +4 -0
- frontend/public/build/shoelace/assets/icons/x-diamond-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-diamond.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-lg.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-octagon-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-octagon.svg +4 -0
- frontend/public/build/shoelace/assets/icons/x-square-fill.svg +3 -0
- frontend/public/build/shoelace/assets/icons/x-square.svg +4 -0
- frontend/public/build/shoelace/assets/icons/x.svg +3 -0
- frontend/public/build/shoelace/assets/icons/xbox.svg +3 -0
- frontend/public/build/shoelace/assets/icons/yelp.svg +3 -0
- frontend/public/build/shoelace/assets/icons/yin-yang.svg +4 -0
- frontend/public/build/shoelace/assets/icons/youtube.svg +3 -0
- frontend/public/build/shoelace/assets/icons/zoom-in.svg +5 -0
- frontend/public/build/shoelace/assets/icons/zoom-out.svg +5 -0
- frontend/public/fonts/inconsolata-v31-latin-300.eot +0 -0
- frontend/public/fonts/inconsolata-v31-latin-300.svg +358 -0
- frontend/public/fonts/inconsolata-v31-latin-300.ttf +0 -0
- frontend/public/fonts/inconsolata-v31-latin-300.woff +0 -0
- frontend/public/fonts/inconsolata-v31-latin-300.woff2 +0 -0
- frontend/public/fonts/inconsolata-v31-latin-500.eot +0 -0
- frontend/public/fonts/inconsolata-v31-latin-500.svg +359 -0
- frontend/public/fonts/inconsolata-v31-latin-500.ttf +0 -0
- frontend/public/fonts/inconsolata-v31-latin-500.woff +0 -0
- frontend/public/fonts/inconsolata-v31-latin-500.woff2 +0 -0
- frontend/public/fonts/inconsolata-v31-latin-700.eot +0 -0
- frontend/public/fonts/inconsolata-v31-latin-700.svg +358 -0
- frontend/public/fonts/inconsolata-v31-latin-700.ttf +0 -0
- frontend/public/fonts/inconsolata-v31-latin-700.woff +0 -0
- frontend/public/fonts/inconsolata-v31-latin-700.woff2 +0 -0
- frontend/public/fonts/inconsolata-v31-latin-regular.eot +0 -0
- frontend/public/fonts/inconsolata-v31-latin-regular.svg +358 -0
- frontend/public/fonts/inconsolata-v31-latin-regular.ttf +0 -0
- frontend/public/fonts/inconsolata-v31-latin-regular.woff +0 -0
- frontend/public/fonts/inconsolata-v31-latin-regular.woff2 +0 -0
- frontend/public/fonts/inter-v12-latin-300.eot +0 -0
- frontend/public/fonts/inter-v12-latin-300.svg +350 -0
- frontend/public/fonts/inter-v12-latin-300.ttf +0 -0
- frontend/public/fonts/inter-v12-latin-300.woff +0 -0
- frontend/public/fonts/inter-v12-latin-300.woff2 +0 -0
- frontend/public/fonts/inter-v12-latin-500.eot +0 -0
- frontend/public/fonts/inter-v12-latin-500.svg +351 -0
- frontend/public/fonts/inter-v12-latin-500.ttf +0 -0
- frontend/public/fonts/inter-v12-latin-500.woff +0 -0
- frontend/public/fonts/inter-v12-latin-500.woff2 +0 -0
- frontend/public/fonts/inter-v12-latin-700.eot +0 -0
- frontend/public/fonts/inter-v12-latin-700.svg +352 -0
- frontend/public/fonts/inter-v12-latin-700.ttf +0 -0
- frontend/public/fonts/inter-v12-latin-700.woff +0 -0
- frontend/public/fonts/inter-v12-latin-700.woff2 +0 -0
- frontend/public/fonts/inter-v12-latin-regular.eot +0 -0
- frontend/public/fonts/inter-v12-latin-regular.svg +351 -0
- frontend/public/fonts/inter-v12-latin-regular.ttf +0 -0
- frontend/public/fonts/inter-v12-latin-regular.woff +0 -0
- frontend/public/fonts/inter-v12-latin-regular.woff2 +0 -0
- frontend/public/fonts/lora-v32-latin-500.eot +0 -0
- frontend/public/fonts/lora-v32-latin-500.svg +431 -0
- frontend/public/fonts/lora-v32-latin-500.ttf +0 -0
- frontend/public/fonts/lora-v32-latin-500.woff +0 -0
- frontend/public/fonts/lora-v32-latin-500.woff2 +0 -0
- frontend/public/fonts/lora-v32-latin-700.eot +0 -0
- frontend/public/fonts/lora-v32-latin-700.svg +430 -0
- frontend/public/fonts/lora-v32-latin-700.ttf +0 -0
- frontend/public/fonts/lora-v32-latin-700.woff +0 -0
- frontend/public/fonts/lora-v32-latin-700.woff2 +0 -0
- frontend/public/fonts/lora-v32-latin-regular.eot +0 -0
- frontend/public/fonts/lora-v32-latin-regular.svg +430 -0
- frontend/public/fonts/lora-v32-latin-regular.ttf +0 -0
- frontend/public/fonts/lora-v32-latin-regular.woff +0 -0
- frontend/public/fonts/lora-v32-latin-regular.woff2 +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-300.eot +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-300.svg +305 -0
- frontend/public/fonts/nunito-sans-v12-latin-300.ttf +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-300.woff +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-300.woff2 +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-600.eot +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-600.svg +306 -0
- frontend/public/fonts/nunito-sans-v12-latin-600.ttf +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-600.woff +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-600.woff2 +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-700.eot +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-700.svg +306 -0
- frontend/public/fonts/nunito-sans-v12-latin-700.ttf +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-700.woff +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-700.woff2 +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-regular.eot +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-regular.ttf +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-regular.woff +0 -0
- frontend/public/fonts/nunito-sans-v12-latin-regular.woff2 +0 -0
- frontend/public/fonts/open-sans-v34-latin-300.eot +0 -0
- frontend/public/fonts/open-sans-v34-latin-300.svg +346 -0
- frontend/public/fonts/open-sans-v34-latin-300.ttf +0 -0
- frontend/public/fonts/open-sans-v34-latin-300.woff +0 -0
- frontend/public/fonts/open-sans-v34-latin-300.woff2 +0 -0
- frontend/public/fonts/open-sans-v34-latin-600.eot +0 -0
- frontend/public/fonts/open-sans-v34-latin-600.svg +348 -0
- frontend/public/fonts/open-sans-v34-latin-600.ttf +0 -0
- frontend/public/fonts/open-sans-v34-latin-600.woff +0 -0
- frontend/public/fonts/open-sans-v34-latin-600.woff2 +0 -0
- frontend/public/fonts/open-sans-v34-latin-700.eot +0 -0
- frontend/public/fonts/open-sans-v34-latin-700.svg +349 -0
- frontend/public/fonts/open-sans-v34-latin-700.ttf +0 -0
- frontend/public/fonts/open-sans-v34-latin-700.woff +0 -0
- frontend/public/fonts/open-sans-v34-latin-700.woff2 +0 -0
- frontend/public/fonts/open-sans-v34-latin-regular.eot +0 -0
- frontend/public/fonts/open-sans-v34-latin-regular.svg +349 -0
- frontend/public/fonts/open-sans-v34-latin-regular.ttf +0 -0
- frontend/public/fonts/open-sans-v34-latin-regular.woff +0 -0
- frontend/public/fonts/open-sans-v34-latin-regular.woff2 +0 -0
- frontend/public/hd-logo-black.svg +1 -0
- frontend/public/hd-logo-white.svg +1 -0
- hyperdiv/__init__.py +141 -0
- hyperdiv/app_runner.py +505 -0
- hyperdiv/application_state.py +48 -0
- hyperdiv/backends/__init__.py +62 -0
- hyperdiv/backends/granian.py +276 -0
- hyperdiv/cache.py +202 -0
- hyperdiv/cli.py +53 -0
- hyperdiv/collector.py +64 -0
- hyperdiv/component_base.py +329 -0
- hyperdiv/component_keys.py +61 -0
- hyperdiv/component_mixins/__init__.py +5 -0
- hyperdiv/component_mixins/boxy.py +170 -0
- hyperdiv/component_mixins/interactive.py +18 -0
- hyperdiv/component_mixins/slottable.py +43 -0
- hyperdiv/component_mixins/styled.py +307 -0
- hyperdiv/component_mixins/tests/__init__.py +0 -0
- hyperdiv/component_mixins/tests/component_mixins_tests.py +105 -0
- hyperdiv/component_mixins/togglable.py +31 -0
- hyperdiv/components/__init__.py +0 -0
- hyperdiv/components/alert.py +66 -0
- hyperdiv/components/anchor.py +30 -0
- hyperdiv/components/animation.py +219 -0
- hyperdiv/components/async_command.py +50 -0
- hyperdiv/components/audio.py +52 -0
- hyperdiv/components/avatar.py +43 -0
- hyperdiv/components/badge.py +36 -0
- hyperdiv/components/box.py +192 -0
- hyperdiv/components/box_list.py +53 -0
- hyperdiv/components/box_list_item.py +34 -0
- hyperdiv/components/breadcrumb.py +39 -0
- hyperdiv/components/breadcrumb_item.py +37 -0
- hyperdiv/components/button.py +125 -0
- hyperdiv/components/button_group.py +28 -0
- hyperdiv/components/card.py +75 -0
- hyperdiv/components/carousel.py +119 -0
- hyperdiv/components/carousel_item.py +16 -0
- hyperdiv/components/charts/__init__.py +9 -0
- hyperdiv/components/charts/bar_chart.py +43 -0
- hyperdiv/components/charts/bubble_chart.py +73 -0
- hyperdiv/components/charts/cartesian_chart.py +411 -0
- hyperdiv/components/charts/chart.py +58 -0
- hyperdiv/components/charts/common/__init__.py +0 -0
- hyperdiv/components/charts/common/color_utils.py +42 -0
- hyperdiv/components/charts/common/radial_chart_utils.py +35 -0
- hyperdiv/components/charts/line_chart.py +44 -0
- hyperdiv/components/charts/pie_chart.py +49 -0
- hyperdiv/components/charts/polar_chart.py +75 -0
- hyperdiv/components/charts/radar_chart.py +122 -0
- hyperdiv/components/charts/scatter_chart.py +43 -0
- hyperdiv/components/charts/tests/__init__.py +0 -0
- hyperdiv/components/charts/tests/chart_tests.py +263 -0
- hyperdiv/components/checkbox.py +60 -0
- hyperdiv/components/clipboard.py +30 -0
- hyperdiv/components/code.py +34 -0
- hyperdiv/components/color_picker.py +130 -0
- hyperdiv/components/common/__init__.py +0 -0
- hyperdiv/components/common/label_component.py +86 -0
- hyperdiv/components/common/list_base.py +14 -0
- hyperdiv/components/common/media_base.py +43 -0
- hyperdiv/components/common/shoelace_types.py +60 -0
- hyperdiv/components/common/text_utils.py +2 -0
- hyperdiv/components/cookies.py +231 -0
- hyperdiv/components/details.py +96 -0
- hyperdiv/components/dialog.py +42 -0
- hyperdiv/components/divider.py +42 -0
- hyperdiv/components/drawer.py +115 -0
- hyperdiv/components/dropdown.py +115 -0
- hyperdiv/components/form.py +577 -0
- hyperdiv/components/icon.py +47 -0
- hyperdiv/components/icon_button.py +29 -0
- hyperdiv/components/image.py +86 -0
- hyperdiv/components/image_comparer.py +45 -0
- hyperdiv/components/lifecycle.py +47 -0
- hyperdiv/components/link.py +89 -0
- hyperdiv/components/list.py +47 -0
- hyperdiv/components/list_item.py +11 -0
- hyperdiv/components/local_storage.py +123 -0
- hyperdiv/components/location.py +132 -0
- hyperdiv/components/markdown.py +127 -0
- hyperdiv/components/media_source.py +15 -0
- hyperdiv/components/menu.py +130 -0
- hyperdiv/components/menu_item.py +64 -0
- hyperdiv/components/menu_label.py +26 -0
- hyperdiv/components/nav.py +16 -0
- hyperdiv/components/option.py +53 -0
- hyperdiv/components/ordered_list.py +49 -0
- hyperdiv/components/plaintext.py +27 -0
- hyperdiv/components/popup.py +124 -0
- hyperdiv/components/progress_bar.py +70 -0
- hyperdiv/components/progress_ring.py +57 -0
- hyperdiv/components/radio.py +40 -0
- hyperdiv/components/radio_button.py +51 -0
- hyperdiv/components/radio_group.py +167 -0
- hyperdiv/components/scope.py +112 -0
- hyperdiv/components/select_.py +151 -0
- hyperdiv/components/slider.py +135 -0
- hyperdiv/components/spinner.py +40 -0
- hyperdiv/components/split_panel.py +146 -0
- hyperdiv/components/state.py +101 -0
- hyperdiv/components/style.py +27 -0
- hyperdiv/components/switch.py +56 -0
- hyperdiv/components/tab.py +46 -0
- hyperdiv/components/tab_group.py +175 -0
- hyperdiv/components/table.py +217 -0
- hyperdiv/components/tag.py +77 -0
- hyperdiv/components/task.py +232 -0
- hyperdiv/components/tests/__init__.py +0 -0
- hyperdiv/components/tests/alert_tests.py +24 -0
- hyperdiv/components/tests/animation_tests.py +19 -0
- hyperdiv/components/tests/audio_tests.py +52 -0
- hyperdiv/components/tests/box_list_tests.py +15 -0
- hyperdiv/components/tests/button_tests.py +17 -0
- hyperdiv/components/tests/carousel_tests.py +19 -0
- hyperdiv/components/tests/checkbox_tests.py +20 -0
- hyperdiv/components/tests/clipboard_tests.py +12 -0
- hyperdiv/components/tests/cookie_tests.py +123 -0
- hyperdiv/components/tests/form_tests.py +107 -0
- hyperdiv/components/tests/local_storage_tests.py +101 -0
- hyperdiv/components/tests/markdown_tests.py +47 -0
- hyperdiv/components/tests/popup_test.py +24 -0
- hyperdiv/components/tests/radio_group_tests.py +22 -0
- hyperdiv/components/tests/style_tests.py +28 -0
- hyperdiv/components/tests/tab_group_tests.py +56 -0
- hyperdiv/components/tests/tree_tests.py +83 -0
- hyperdiv/components/text.py +112 -0
- hyperdiv/components/text_input.py +241 -0
- hyperdiv/components/textarea.py +68 -0
- hyperdiv/components/theme.py +75 -0
- hyperdiv/components/tooltip.py +91 -0
- hyperdiv/components/tree.py +144 -0
- hyperdiv/components/tree_item.py +109 -0
- hyperdiv/components/video.py +62 -0
- hyperdiv/components/window.py +47 -0
- hyperdiv/connection.py +86 -0
- hyperdiv/debug.py +86 -0
- hyperdiv/design_tokens.py +431 -0
- hyperdiv/diff.py +208 -0
- hyperdiv/equalities.py +29 -0
- hyperdiv/exceptions.py +2 -0
- hyperdiv/ext/__init__.py +6 -0
- hyperdiv/ext/data_table.py +472 -0
- hyperdiv/ext/icon_link.py +94 -0
- hyperdiv/ext/navigation_menu.py +179 -0
- hyperdiv/ext/router.py +217 -0
- hyperdiv/ext/template.py +277 -0
- hyperdiv/ext/tests/__init__.py +0 -0
- hyperdiv/ext/tests/data_table_tests.py +102 -0
- hyperdiv/ext/tests/router_tests.py +60 -0
- hyperdiv/ext/tests/template_tests.py +12 -0
- hyperdiv/ext/theme_switcher.py +67 -0
- hyperdiv/frame.py +324 -0
- hyperdiv/frontend.py +27 -0
- hyperdiv/global_state.py +82 -0
- hyperdiv/icons.py +1956 -0
- hyperdiv/index_page.py +333 -0
- hyperdiv/main.py +132 -0
- hyperdiv/plugin.py +209 -0
- hyperdiv/prop.py +160 -0
- hyperdiv/prop_types/__init__.py +23 -0
- hyperdiv/prop_types/any_type.py +11 -0
- hyperdiv/prop_types/border.py +107 -0
- hyperdiv/prop_types/border_edge.py +82 -0
- hyperdiv/prop_types/box_size.py +77 -0
- hyperdiv/prop_types/clamped_number.py +72 -0
- hyperdiv/prop_types/color.py +194 -0
- hyperdiv/prop_types/color_constant.py +74 -0
- hyperdiv/prop_types/constant.py +16 -0
- hyperdiv/prop_types/css.py +15 -0
- hyperdiv/prop_types/css_field.py +35 -0
- hyperdiv/prop_types/design_token.py +31 -0
- hyperdiv/prop_types/event.py +42 -0
- hyperdiv/prop_types/float_type.py +28 -0
- hyperdiv/prop_types/hyperdiv_type.py +27 -0
- hyperdiv/prop_types/list_type.py +26 -0
- hyperdiv/prop_types/native.py +62 -0
- hyperdiv/prop_types/one_of.py +19 -0
- hyperdiv/prop_types/one_or_more_of.py +25 -0
- hyperdiv/prop_types/optional.py +24 -0
- hyperdiv/prop_types/size.py +169 -0
- hyperdiv/prop_types/tests/__init__.py +0 -0
- hyperdiv/prop_types/tests/any_type_tests.py +8 -0
- hyperdiv/prop_types/tests/base_size_tests.py +59 -0
- hyperdiv/prop_types/tests/border_edge_tests.py +36 -0
- hyperdiv/prop_types/tests/border_tests.py +98 -0
- hyperdiv/prop_types/tests/box_size_tests.py +44 -0
- hyperdiv/prop_types/tests/clamped_number_tests.py +20 -0
- hyperdiv/prop_types/tests/color_constant_tests.py +63 -0
- hyperdiv/prop_types/tests/constant_tests.py +13 -0
- hyperdiv/prop_types/tests/css_field_tests.py +15 -0
- hyperdiv/prop_types/tests/design_token_tests.py +20 -0
- hyperdiv/prop_types/tests/event_tests.py +18 -0
- hyperdiv/prop_types/tests/float_tests.py +11 -0
- hyperdiv/prop_types/tests/list_tests.py +25 -0
- hyperdiv/prop_types/tests/native_tests.py +18 -0
- hyperdiv/prop_types/tests/one_of_tests.py +14 -0
- hyperdiv/prop_types/tests/one_or_more_of_tests.py +24 -0
- hyperdiv/prop_types/tests/optional_tests.py +22 -0
- hyperdiv/prop_types/tests/time_value_tests.py +31 -0
- hyperdiv/prop_types/tests/tuple_type_tests.py +26 -0
- hyperdiv/prop_types/tests/union_tests.py +18 -0
- hyperdiv/prop_types/time_value.py +55 -0
- hyperdiv/prop_types/tuple_type.py +43 -0
- hyperdiv/prop_types/union.py +28 -0
- hyperdiv/renderer.py +260 -0
- hyperdiv/server.py +163 -0
- hyperdiv/slot.py +35 -0
- hyperdiv/sqlite.py +127 -0
- hyperdiv/style_part.py +47 -0
- hyperdiv/task_runtime.py +54 -0
- hyperdiv/test_utils.py +134 -0
- hyperdiv/tests/__init__.py +0 -0
- hyperdiv/tests/app_runner_tests.py +266 -0
- hyperdiv/tests/application_state_tests.py +67 -0
- hyperdiv/tests/component_base_tests.py +180 -0
- hyperdiv/tests/design_token_tests.py +37 -0
- hyperdiv/tests/equalities_tests.py +44 -0
- hyperdiv/tests/index_page_tests.py +156 -0
- hyperdiv/tests/plugin_tests.py +280 -0
- hyperdiv/tests/server_tests.py +103 -0
- hyperdiv/tests/sqlite_tests.py +80 -0
- hyperdiv/tests/style_part_tests.py +54 -0
- hyperdiv/ui_command.py +108 -0
- hyperdiv/ui_prop_state.py +92 -0
- hyperdiv/ui_singleton.py +70 -0
- hyperdivlite-0.1.9.dist-info/METADATA +163 -0
- hyperdivlite-0.1.9.dist-info/RECORD +2380 -0
- hyperdivlite-0.1.9.dist-info/WHEEL +4 -0
- hyperdivlite-0.1.9.dist-info/entry_points.txt +3 -0
- hyperdivlite-0.1.9.dist-info/licenses/LICENSE +202 -0
- hyperdivlite-0.1.9.dist-info/licenses/NOTICE +11 -0
|
@@ -0,0 +1,276 @@
|
|
|
1
|
+
"""基于 Starlette + Granian 的 Hyperdiv 后端。
|
|
2
|
+
|
|
3
|
+
设计约束:`AppRunner` 只依赖连接对象的 `send(message: dict)`,且该调用是
|
|
4
|
+
同步的(由 AppRunner 的工作线程发起)。因此这里的 WebSocket 适配器必须
|
|
5
|
+
提供一个 *同步* 的 `send`,内部把协程投递回 WebSocket 所在的 asyncio
|
|
6
|
+
事件循环执行,避免修改上游 `app_runner.py`。
|
|
7
|
+
|
|
8
|
+
与 Tornado 后端的语义对齐点:
|
|
9
|
+
- `/ws` 接受 `clientId` / `updates` 查询参数,收到 JSON 消息后汇总 updates;
|
|
10
|
+
- 静态资源找不到时回落到 index 页面(支持任意 Hyperdiv 路径);
|
|
11
|
+
- 插件资源走 `/hyperdiv-plugins/<plugin>/<path>`;
|
|
12
|
+
- 应用目录下的 `assets/` 映射到 `/assets/`。
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
from __future__ import annotations
|
|
16
|
+
|
|
17
|
+
import asyncio
|
|
18
|
+
import datetime
|
|
19
|
+
import json
|
|
20
|
+
import os
|
|
21
|
+
import sys
|
|
22
|
+
import threading
|
|
23
|
+
import uuid
|
|
24
|
+
from urllib.parse import parse_qs
|
|
25
|
+
|
|
26
|
+
from starlette.applications import Starlette
|
|
27
|
+
from starlette.responses import FileResponse, HTMLResponse, Response
|
|
28
|
+
from starlette.routing import Route, WebSocketRoute
|
|
29
|
+
from starlette.websockets import WebSocket, WebSocketDisconnect
|
|
30
|
+
|
|
31
|
+
from ..app_runner import AppRunner
|
|
32
|
+
from ..debug import logger
|
|
33
|
+
from ..frontend import get_frontend_public_path
|
|
34
|
+
from ..plugin import PLUGINS_PREFIX, PluginAssetsCollector
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
class Connection:
|
|
38
|
+
"""ASGI WebSocket 会话,接口与 Tornado 版 Connection 对齐。"""
|
|
39
|
+
|
|
40
|
+
_active_connections: dict[uuid.UUID, "Connection"] = {}
|
|
41
|
+
|
|
42
|
+
def __init__(self, websocket: WebSocket, app_function, task_runtime):
|
|
43
|
+
self.websocket = websocket
|
|
44
|
+
self.loop = asyncio.get_running_loop()
|
|
45
|
+
self.client_id = uuid.uuid4()
|
|
46
|
+
Connection._active_connections[self.client_id] = self
|
|
47
|
+
|
|
48
|
+
updates = []
|
|
49
|
+
raw_updates = websocket.query_params.get("updates")
|
|
50
|
+
if raw_updates:
|
|
51
|
+
try:
|
|
52
|
+
updates = json.loads(raw_updates)
|
|
53
|
+
except Exception as e: # noqa: BLE001 - 与上游一致,容错
|
|
54
|
+
logger.warning(f"Corrupted `updates` argument: {e}")
|
|
55
|
+
|
|
56
|
+
self.runner = AppRunner(self, task_runtime, app_function, updates)
|
|
57
|
+
|
|
58
|
+
def send(self, message: dict) -> None:
|
|
59
|
+
"""同步下发消息(AppRunner 在工作线程中调用)。"""
|
|
60
|
+
try:
|
|
61
|
+
future = asyncio.run_coroutine_threadsafe(
|
|
62
|
+
self.websocket.send_json(message), self.loop
|
|
63
|
+
)
|
|
64
|
+
# 不阻塞等待,让渲染线程继续;异常在回调里记录。
|
|
65
|
+
future.add_done_callback(self._log_failure)
|
|
66
|
+
except RuntimeError:
|
|
67
|
+
# 事件循环已关闭,说明连接正在销毁。
|
|
68
|
+
pass
|
|
69
|
+
|
|
70
|
+
@staticmethod
|
|
71
|
+
def _log_failure(future) -> None:
|
|
72
|
+
try:
|
|
73
|
+
future.result()
|
|
74
|
+
except Exception as e: # noqa: BLE001
|
|
75
|
+
logger.debug(f"Failed to write to client: {e}")
|
|
76
|
+
|
|
77
|
+
async def serve(self) -> None:
|
|
78
|
+
await self.websocket.accept()
|
|
79
|
+
logger.info(
|
|
80
|
+
"Connection opened. %d connections open."
|
|
81
|
+
% len(Connection._active_connections)
|
|
82
|
+
)
|
|
83
|
+
try:
|
|
84
|
+
self.runner.start()
|
|
85
|
+
while True:
|
|
86
|
+
raw = await self.websocket.receive_text()
|
|
87
|
+
self._on_message(raw)
|
|
88
|
+
except WebSocketDisconnect:
|
|
89
|
+
pass
|
|
90
|
+
except Exception as e: # noqa: BLE001
|
|
91
|
+
logger.exception(f"WebSocket error: {e}")
|
|
92
|
+
finally:
|
|
93
|
+
self.runner.stop()
|
|
94
|
+
Connection._active_connections.pop(self.client_id, None)
|
|
95
|
+
logger.info(
|
|
96
|
+
"Connection closed. %d connections open."
|
|
97
|
+
% len(Connection._active_connections)
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
def _on_message(self, raw: str) -> None:
|
|
101
|
+
try:
|
|
102
|
+
messages = json.loads(raw)
|
|
103
|
+
except Exception as e: # noqa: BLE001
|
|
104
|
+
logger.warning(f"Corrupted WebSocket message: {e}")
|
|
105
|
+
return
|
|
106
|
+
ui_updates = []
|
|
107
|
+
for m in messages:
|
|
108
|
+
ui_updates.extend(m["updates"])
|
|
109
|
+
self.runner.enqueue_ui_updates(ui_updates)
|
|
110
|
+
|
|
111
|
+
@staticmethod
|
|
112
|
+
def close_all_connections() -> None:
|
|
113
|
+
logger.info(f"Closing {len(Connection._active_connections)} connections.")
|
|
114
|
+
for conn in list(Connection._active_connections.values()):
|
|
115
|
+
conn.runner.stop()
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _guess_content_type(path: str) -> str:
|
|
119
|
+
"""按扩展名返回静态资源的 content-type。"""
|
|
120
|
+
ext = os.path.splitext(path)[1].lower()
|
|
121
|
+
return {
|
|
122
|
+
".html": "text/html; charset=utf-8",
|
|
123
|
+
".js": "text/javascript; charset=utf-8",
|
|
124
|
+
".mjs": "text/javascript; charset=utf-8",
|
|
125
|
+
".css": "text/css; charset=utf-8",
|
|
126
|
+
".json": "application/json",
|
|
127
|
+
".svg": "image/svg+xml",
|
|
128
|
+
".png": "image/png",
|
|
129
|
+
".jpg": "image/jpeg",
|
|
130
|
+
".jpeg": "image/jpeg",
|
|
131
|
+
".gif": "image/gif",
|
|
132
|
+
".ico": "image/x-icon",
|
|
133
|
+
".woff": "font/woff",
|
|
134
|
+
".woff2": "font/woff2",
|
|
135
|
+
".ttf": "font/ttf",
|
|
136
|
+
".map": "application/json",
|
|
137
|
+
".txt": "text/plain; charset=utf-8",
|
|
138
|
+
}.get(ext, "application/octet-stream")
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
def _safe_join(root: str, relative: str) -> str | None:
|
|
142
|
+
"""把相对路径安全地拼到 root 下,拒绝越界访问。"""
|
|
143
|
+
relative = relative.lstrip("/")
|
|
144
|
+
candidate = os.path.realpath(os.path.join(root, relative))
|
|
145
|
+
root_real = os.path.realpath(root)
|
|
146
|
+
if candidate == root_real or candidate.startswith(root_real + os.sep):
|
|
147
|
+
return candidate
|
|
148
|
+
return None
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def build_asgi_app(app_function, task_runtime, index_page: str) -> Starlette:
|
|
152
|
+
"""构造与 Tornado 路由行为等价的 Starlette 应用。"""
|
|
153
|
+
public_path = get_frontend_public_path()
|
|
154
|
+
index_bytes = index_page.encode("utf-8")
|
|
155
|
+
modified_time = datetime.datetime.now()
|
|
156
|
+
|
|
157
|
+
assets_dir = os.path.join(os.path.dirname(os.path.abspath(sys.argv[0])), "assets")
|
|
158
|
+
|
|
159
|
+
async def websocket_endpoint(websocket: WebSocket) -> None:
|
|
160
|
+
conn = Connection(websocket, app_function, task_runtime)
|
|
161
|
+
await conn.serve()
|
|
162
|
+
|
|
163
|
+
async def index_endpoint(request) -> Response:
|
|
164
|
+
return HTMLResponse(
|
|
165
|
+
content=index_bytes,
|
|
166
|
+
headers={"Last-Modified": modified_time.strftime("%a, %d %b %Y %H:%M:%S GMT")},
|
|
167
|
+
)
|
|
168
|
+
|
|
169
|
+
async def plugin_assets_endpoint(request) -> Response:
|
|
170
|
+
raw = request.path_params["path"]
|
|
171
|
+
plugin_name, _, asset_path = raw.partition("/")
|
|
172
|
+
config = PluginAssetsCollector.plugin_assets.get(plugin_name)
|
|
173
|
+
if not config or not asset_path:
|
|
174
|
+
return Response(status_code=404)
|
|
175
|
+
target = _safe_join(config["assets_root"], asset_path)
|
|
176
|
+
if not target or not os.path.isfile(target):
|
|
177
|
+
return Response(status_code=404)
|
|
178
|
+
return FileResponse(target, media_type=_guess_content_type(target))
|
|
179
|
+
|
|
180
|
+
async def assets_endpoint(request) -> Response:
|
|
181
|
+
raw = request.path_params["path"]
|
|
182
|
+
if not os.path.isdir(assets_dir):
|
|
183
|
+
return await index_endpoint(request)
|
|
184
|
+
target = _safe_join(assets_dir, raw)
|
|
185
|
+
if not target or not os.path.isfile(target):
|
|
186
|
+
return await index_endpoint(request)
|
|
187
|
+
return FileResponse(target, media_type=_guess_content_type(target))
|
|
188
|
+
|
|
189
|
+
async def static_or_index(request) -> Response:
|
|
190
|
+
raw = request.path_params.get("path", "")
|
|
191
|
+
target = _safe_join(public_path, raw) if raw else None
|
|
192
|
+
if target and os.path.isfile(target):
|
|
193
|
+
return FileResponse(target, media_type=_guess_content_type(target))
|
|
194
|
+
return await index_endpoint(request)
|
|
195
|
+
|
|
196
|
+
routes = [
|
|
197
|
+
WebSocketRoute("/ws", endpoint=websocket_endpoint),
|
|
198
|
+
Route(f"{PLUGINS_PREFIX}/{{path:path}}", plugin_assets_endpoint),
|
|
199
|
+
Route("/assets/{path:path}", assets_endpoint),
|
|
200
|
+
# catch-all 放最后:不存在的一律回落 index,与 Tornado 行为一致
|
|
201
|
+
Route("/{path:path}", static_or_index),
|
|
202
|
+
]
|
|
203
|
+
return Starlette(routes=routes, debug=False)
|
|
204
|
+
|
|
205
|
+
|
|
206
|
+
class GranianServer:
|
|
207
|
+
"""用 Granian(内嵌模式)承载 Starlette ASGI app 的 Hyperdiv Server。
|
|
208
|
+
|
|
209
|
+
内嵌模式在当前进程、当前事件循环中运行,因此无需把应用工厂写成
|
|
210
|
+
可导入字符串,也没有 Windows spawn 的序列化限制。
|
|
211
|
+
"""
|
|
212
|
+
|
|
213
|
+
_instance = None
|
|
214
|
+
|
|
215
|
+
def __init__(self, port, app_function, task_runtime, index_page):
|
|
216
|
+
if GranianServer._instance:
|
|
217
|
+
raise Exception("Hyperdiv is already running.")
|
|
218
|
+
GranianServer._instance = self
|
|
219
|
+
self.port = port
|
|
220
|
+
self.task_runtime = task_runtime
|
|
221
|
+
self.app_function = app_function
|
|
222
|
+
self.index_page = index_page
|
|
223
|
+
self.asgi_app = build_asgi_app(app_function, task_runtime, index_page)
|
|
224
|
+
self._server = None
|
|
225
|
+
self._stopped = threading.Event()
|
|
226
|
+
self._loop = None
|
|
227
|
+
|
|
228
|
+
@property
|
|
229
|
+
def host(self) -> str:
|
|
230
|
+
return os.environ.get("HD_HOST", "localhost")
|
|
231
|
+
|
|
232
|
+
@property
|
|
233
|
+
def bind_address(self) -> str:
|
|
234
|
+
"""Granian 需要具体 IP,把 localhost 解析为回环地址。"""
|
|
235
|
+
host = self.host
|
|
236
|
+
if host in ("localhost", "127.0.0.1", ""):
|
|
237
|
+
return "127.0.0.1"
|
|
238
|
+
return host
|
|
239
|
+
|
|
240
|
+
def _make_server(self):
|
|
241
|
+
from granian.constants import Interfaces
|
|
242
|
+
from granian.server.embed import Server as EmbeddedServer
|
|
243
|
+
|
|
244
|
+
return EmbeddedServer(
|
|
245
|
+
self.asgi_app,
|
|
246
|
+
address=self.bind_address,
|
|
247
|
+
port=self.port,
|
|
248
|
+
interface=Interfaces.ASGI,
|
|
249
|
+
websockets=True,
|
|
250
|
+
log_enabled=True,
|
|
251
|
+
)
|
|
252
|
+
|
|
253
|
+
def listen(self):
|
|
254
|
+
"""构建服务实例;端口在 start() 的事件循环中真正绑定。"""
|
|
255
|
+
self._server = self._make_server()
|
|
256
|
+
|
|
257
|
+
def start(self):
|
|
258
|
+
print(f"Running at http://{self.host}:{self.port}", file=sys.stderr)
|
|
259
|
+
print("Ctrl-C to exit", file=sys.stderr)
|
|
260
|
+
try:
|
|
261
|
+
asyncio.run(self._run())
|
|
262
|
+
except KeyboardInterrupt:
|
|
263
|
+
logger.info("Interrupted.")
|
|
264
|
+
finally:
|
|
265
|
+
self.close()
|
|
266
|
+
|
|
267
|
+
async def _run(self):
|
|
268
|
+
self._loop = asyncio.get_running_loop()
|
|
269
|
+
await self._server.serve()
|
|
270
|
+
|
|
271
|
+
def close(self):
|
|
272
|
+
if self._stopped.is_set():
|
|
273
|
+
return
|
|
274
|
+
self._stopped.set()
|
|
275
|
+
Connection.close_all_connections()
|
|
276
|
+
GranianServer._instance = None
|
hyperdiv/cache.py
ADDED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
import traceback
|
|
2
|
+
from functools import wraps
|
|
3
|
+
from cachetools.keys import hashkey
|
|
4
|
+
from textwrap import dedent
|
|
5
|
+
from termcolor import colored
|
|
6
|
+
from .frame import AppRunnerFrame
|
|
7
|
+
from .debug import timing
|
|
8
|
+
from .collector import ShadowCollector
|
|
9
|
+
from .component_keys import get_component_key
|
|
10
|
+
from .component_base import Component
|
|
11
|
+
from .exceptions import Stop
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class Cache:
|
|
15
|
+
NotFound = object()
|
|
16
|
+
|
|
17
|
+
def __init__(self):
|
|
18
|
+
self.cache = dict()
|
|
19
|
+
|
|
20
|
+
def put(self, key, value):
|
|
21
|
+
self.cache[key] = value
|
|
22
|
+
|
|
23
|
+
def get(self, key):
|
|
24
|
+
if key not in self.cache:
|
|
25
|
+
return Cache.NotFound
|
|
26
|
+
return self.cache[key]
|
|
27
|
+
|
|
28
|
+
def eject_entries_for_mutated_props(self, mutations):
|
|
29
|
+
with timing("Cache ejection"):
|
|
30
|
+
keys_to_eject = set()
|
|
31
|
+
for key, entry in self.cache.items():
|
|
32
|
+
deps = entry["deps"]
|
|
33
|
+
for mutation in mutations:
|
|
34
|
+
if mutation in deps:
|
|
35
|
+
keys_to_eject.add(key)
|
|
36
|
+
break
|
|
37
|
+
for key_to_eject in keys_to_eject:
|
|
38
|
+
self.cache.pop(key_to_eject)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def cached_wrapper(cache_key, fn, *args, **kwargs):
|
|
42
|
+
frame = AppRunnerFrame.current()
|
|
43
|
+
|
|
44
|
+
cached_value = frame.cache_get(cache_key)
|
|
45
|
+
|
|
46
|
+
if cached_value == Cache.NotFound:
|
|
47
|
+
saved_deps = frame.deps
|
|
48
|
+
fn_deps = set()
|
|
49
|
+
frame.deps = fn_deps
|
|
50
|
+
collector = ShadowCollector()
|
|
51
|
+
frame.collector_stack.push(collector)
|
|
52
|
+
|
|
53
|
+
# Run the function
|
|
54
|
+
try:
|
|
55
|
+
result = fn(*args, **kwargs)
|
|
56
|
+
except Stop:
|
|
57
|
+
raise
|
|
58
|
+
except Exception as e:
|
|
59
|
+
# If the user function raises an error we print a
|
|
60
|
+
# stacktrace and stop the loop.
|
|
61
|
+
|
|
62
|
+
# TODO: Show better stack traces that pertain to the
|
|
63
|
+
# user's code, and avoid showing the pieces of the stack
|
|
64
|
+
# trace from inside Hyperdiv, which can be confusing.
|
|
65
|
+
tb = traceback.extract_tb(e.__traceback__)
|
|
66
|
+
user_traceback = []
|
|
67
|
+
|
|
68
|
+
# hyperdiv_dir = os.path.dirname(source_path)
|
|
69
|
+
|
|
70
|
+
for trace in tb:
|
|
71
|
+
# if not trace.filename.startswith(hyperdiv_dir):
|
|
72
|
+
user_traceback.append(trace)
|
|
73
|
+
|
|
74
|
+
message = (
|
|
75
|
+
dedent("".join(traceback.format_list(user_traceback)))
|
|
76
|
+
+ f"{e.__class__.__name__}: {e}"
|
|
77
|
+
)
|
|
78
|
+
|
|
79
|
+
print(colored(message, "red"))
|
|
80
|
+
|
|
81
|
+
raise Stop()
|
|
82
|
+
|
|
83
|
+
if isinstance(result, Component):
|
|
84
|
+
# TODO: If the function leaks out a component, we
|
|
85
|
+
# don't want children to be added to it, because those
|
|
86
|
+
# children would remain in the cached value in
|
|
87
|
+
# subsequent frames. We could make this more
|
|
88
|
+
# user-friendly by invalidating the cache when a child
|
|
89
|
+
# is added.
|
|
90
|
+
result._sealed = True
|
|
91
|
+
|
|
92
|
+
frame.collector_stack.pop()
|
|
93
|
+
frame.deps = saved_deps
|
|
94
|
+
|
|
95
|
+
cached_value = dict(
|
|
96
|
+
result=result,
|
|
97
|
+
collector=collector,
|
|
98
|
+
deps=fn_deps,
|
|
99
|
+
)
|
|
100
|
+
|
|
101
|
+
frame.cache_put(cache_key, cached_value)
|
|
102
|
+
|
|
103
|
+
frame.collector_stack.internal_current()._extend(cached_value["collector"])
|
|
104
|
+
frame.deps.update(cached_value["deps"])
|
|
105
|
+
|
|
106
|
+
return cached_value["result"]
|
|
107
|
+
|
|
108
|
+
|
|
109
|
+
def cached(fn):
|
|
110
|
+
"""
|
|
111
|
+
To help improve performance when building large, modular apps,
|
|
112
|
+
Hyperdiv functions that generate UI components can be wrapped in
|
|
113
|
+
`@cached` to avoid re-running those function calls if their read
|
|
114
|
+
dependencies have not changed.
|
|
115
|
+
|
|
116
|
+
For example:
|
|
117
|
+
|
|
118
|
+
```py
|
|
119
|
+
@hd.cached
|
|
120
|
+
def my_counter(label):
|
|
121
|
+
state = hd.state(count=0)
|
|
122
|
+
with hd.box(
|
|
123
|
+
gap=1,
|
|
124
|
+
padding=1,
|
|
125
|
+
border="1px solid neutral-100",
|
|
126
|
+
border_radius=1,
|
|
127
|
+
):
|
|
128
|
+
hd.markdown(f"### {label}")
|
|
129
|
+
hd.text(state.count)
|
|
130
|
+
if hd.button("Increment").clicked:
|
|
131
|
+
state.count += 1
|
|
132
|
+
|
|
133
|
+
my_counter("Counter")
|
|
134
|
+
my_counter("Counter")
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
In this example. If we click the `Increment` button in the first
|
|
138
|
+
counter, that first call to `my_function("Counter")` will re-run,
|
|
139
|
+
because its read dependency on `button.clicked` is invalidated.
|
|
140
|
+
But the second call will *not* re-run, since its read dependencies
|
|
141
|
+
have not changed.
|
|
142
|
+
|
|
143
|
+
Similarly, if we click the button in the second counter, the first
|
|
144
|
+
call to `my_function("Counter")` will not rerun. Instead, the
|
|
145
|
+
cached UI generated by the previous call to the function will be
|
|
146
|
+
reused.
|
|
147
|
+
"""
|
|
148
|
+
|
|
149
|
+
@wraps(fn)
|
|
150
|
+
def wrapper(*args, **kwargs):
|
|
151
|
+
call_stack_key = get_component_key()
|
|
152
|
+
qualname = f"{fn.__module__}.{fn.__name__}"
|
|
153
|
+
cache_key = (qualname,) + hashkey(call_stack_key, *args, **kwargs)
|
|
154
|
+
|
|
155
|
+
return cached_wrapper(cache_key, fn, *args, **kwargs)
|
|
156
|
+
|
|
157
|
+
return wrapper
|
|
158
|
+
|
|
159
|
+
|
|
160
|
+
def cached_app(app_fn):
|
|
161
|
+
"""
|
|
162
|
+
Works like @cached but only for the top-level app function. Unlike
|
|
163
|
+
@cached, it does not use a component key to generate the cache
|
|
164
|
+
key, enabling the addition of helper functions `is_dirty`, `deps`,
|
|
165
|
+
and `get_dirty_deps` which help AppRuntime decide when to re-run
|
|
166
|
+
the user app, as well as print useful debugging info.
|
|
167
|
+
"""
|
|
168
|
+
|
|
169
|
+
@wraps(app_fn)
|
|
170
|
+
def wrapper():
|
|
171
|
+
return cached_wrapper(make_cache_key(), app_fn)
|
|
172
|
+
|
|
173
|
+
def make_cache_key():
|
|
174
|
+
return f"{app_fn.__module__}.{app_fn.__name__}"
|
|
175
|
+
|
|
176
|
+
def get_deps(*args, **kwargs):
|
|
177
|
+
cached_value = AppRunnerFrame.current().cache_get(make_cache_key())
|
|
178
|
+
if cached_value == Cache.NotFound:
|
|
179
|
+
return None
|
|
180
|
+
return cached_value["deps"]
|
|
181
|
+
|
|
182
|
+
def is_dirty(*args, **kwargs):
|
|
183
|
+
frame = AppRunnerFrame.current()
|
|
184
|
+
deps = get_deps(*args, **kwargs)
|
|
185
|
+
if deps is None:
|
|
186
|
+
return True
|
|
187
|
+
return frame.deps_are_dirty(deps)
|
|
188
|
+
|
|
189
|
+
def get_dirty_deps(*args, **kwargs):
|
|
190
|
+
frame = AppRunnerFrame.current()
|
|
191
|
+
deps = get_deps(*args, **kwargs)
|
|
192
|
+
if deps is None:
|
|
193
|
+
return None
|
|
194
|
+
return frame.filter_dirty_deps(deps)
|
|
195
|
+
|
|
196
|
+
wrapper.is_dirty = is_dirty
|
|
197
|
+
|
|
198
|
+
# Useful for debugging:
|
|
199
|
+
wrapper.deps = get_deps
|
|
200
|
+
wrapper.get_dirty_deps = get_dirty_deps
|
|
201
|
+
|
|
202
|
+
return wrapper
|
hyperdiv/cli.py
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
|
|
3
|
+
import sys
|
|
4
|
+
import os
|
|
5
|
+
import click
|
|
6
|
+
import shutil
|
|
7
|
+
from importlib.metadata import version
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def get_version():
|
|
11
|
+
# Note: This assumes that hyperdiv is installed in the current
|
|
12
|
+
# virtualenv or distribution. This assumption holds when
|
|
13
|
+
# developing locally with poetry, because `poetry install`
|
|
14
|
+
# installs the local project into the virtualenv, using a `.pth`
|
|
15
|
+
# alias.
|
|
16
|
+
return version("hyperdiv")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
@click.group()
|
|
20
|
+
@click.version_option(get_version(), prog_name="Hyperdiv")
|
|
21
|
+
def cli():
|
|
22
|
+
"""Hyperdiv command-line utility."""
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
@cli.command("docs")
|
|
26
|
+
def docs():
|
|
27
|
+
"""Open the Hyperdiv documentation."""
|
|
28
|
+
docs_app_location = os.path.abspath(
|
|
29
|
+
os.path.join(
|
|
30
|
+
os.path.dirname(__file__),
|
|
31
|
+
"hyperdiv-docs",
|
|
32
|
+
"start.py",
|
|
33
|
+
)
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
if not os.path.isfile(docs_app_location):
|
|
37
|
+
print("ERROR: Cannot find the docs app :(")
|
|
38
|
+
sys.exit(1)
|
|
39
|
+
|
|
40
|
+
python = shutil.which("python3")
|
|
41
|
+
if not python:
|
|
42
|
+
python = shutil.which("python")
|
|
43
|
+
|
|
44
|
+
if not python:
|
|
45
|
+
print("ERROR: Cannot find python3 or python")
|
|
46
|
+
sys.exit(1)
|
|
47
|
+
|
|
48
|
+
os.environ["HD_PRODUCTION_LOCAL"] = "1"
|
|
49
|
+
os.execl(python, "python", docs_app_location)
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
if __name__ == "__main__":
|
|
53
|
+
cli()
|
hyperdiv/collector.py
ADDED
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
class Collector:
|
|
2
|
+
"""
|
|
3
|
+
The base class that collects the children of Hyperdiv components
|
|
4
|
+
that can have children.
|
|
5
|
+
|
|
6
|
+
Should not be instantiated directly.
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
def __init__(self):
|
|
10
|
+
self._children = []
|
|
11
|
+
|
|
12
|
+
def _collect_child(self, child):
|
|
13
|
+
self._children.append(child)
|
|
14
|
+
|
|
15
|
+
def _extend(self, other_collector):
|
|
16
|
+
for child in other_collector._children:
|
|
17
|
+
self._collect_child(child)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class ShadowCollector(Collector):
|
|
21
|
+
pass
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class CollectorStack:
|
|
25
|
+
"""Collects the UI hierarchy from the application. The 'stack' handles
|
|
26
|
+
nested containers.
|
|
27
|
+
|
|
28
|
+
with box() as b1: # pushes b1's default slot onto the stack
|
|
29
|
+
text('a') # collects into b1
|
|
30
|
+
with box() as b2: # pushes b2's default slot onto the stack
|
|
31
|
+
text('b') # collects into b2
|
|
32
|
+
# b2 is popped
|
|
33
|
+
text('c') # collects into b1
|
|
34
|
+
# b1 is popped
|
|
35
|
+
|
|
36
|
+
The top-level of the application is collected into a hidden 'root
|
|
37
|
+
container'.
|
|
38
|
+
"""
|
|
39
|
+
|
|
40
|
+
def __init__(self):
|
|
41
|
+
self.stack = []
|
|
42
|
+
|
|
43
|
+
def push(self, collector):
|
|
44
|
+
self.stack.append(collector)
|
|
45
|
+
|
|
46
|
+
def pop(self):
|
|
47
|
+
self.stack.pop()
|
|
48
|
+
|
|
49
|
+
def current(self):
|
|
50
|
+
"""`current()` is a semi-public interface and can be used by
|
|
51
|
+
components to introspect the parent component in which they're
|
|
52
|
+
being collected. It skips ShadowCollectors which are internal
|
|
53
|
+
collectors used by the cache.
|
|
54
|
+
"""
|
|
55
|
+
top_index = -1
|
|
56
|
+
while isinstance(self.stack[top_index], ShadowCollector):
|
|
57
|
+
top_index -= 1
|
|
58
|
+
return self.stack[top_index]
|
|
59
|
+
|
|
60
|
+
def internal_current(self):
|
|
61
|
+
return self.stack[-1]
|
|
62
|
+
|
|
63
|
+
def collect(self, item):
|
|
64
|
+
self.internal_current()._collect_child(item)
|