├── .credo.exs ├── .formatter.exs ├── .github ├── ISSUE_TEMPLATE │ ├── bug_report.md │ └── feature_request.md ├── cherry-pick-bot.yml ├── dependabot.yml └── workflows │ ├── quality.yml │ ├── test.yml │ └── test_tasks.yml ├── .gitignore ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.md ├── README.md ├── RELEASE.md ├── ROADMAP.md ├── assets ├── .eslintrc.js ├── .prettierignore ├── .prettierrc.js ├── css │ └── beacon.css ├── images │ ├── beacon.png │ ├── dockyard.png │ └── youtube_card.png ├── js │ └── beacon.js ├── package-lock.json ├── package.json ├── tailwind.config.js └── vendor │ ├── heroicons │ ├── LICENSE.md │ ├── UPGRADE.md │ └── optimized │ │ ├── 20 │ │ └── solid │ │ │ ├── academic-cap.svg │ │ │ ├── adjustments-horizontal.svg │ │ │ ├── adjustments-vertical.svg │ │ │ ├── archive-box-arrow-down.svg │ │ │ ├── archive-box-x-mark.svg │ │ │ ├── archive-box.svg │ │ │ ├── arrow-down-circle.svg │ │ │ ├── arrow-down-left.svg │ │ │ ├── arrow-down-on-square-stack.svg │ │ │ ├── arrow-down-on-square.svg │ │ │ ├── arrow-down-right.svg │ │ │ ├── arrow-down-tray.svg │ │ │ ├── arrow-down.svg │ │ │ ├── arrow-left-circle.svg │ │ │ ├── arrow-left-on-rectangle.svg │ │ │ ├── arrow-left.svg │ │ │ ├── arrow-long-down.svg │ │ │ ├── arrow-long-left.svg │ │ │ ├── arrow-long-right.svg │ │ │ ├── arrow-long-up.svg │ │ │ ├── arrow-path-rounded-square.svg │ │ │ ├── arrow-path.svg │ │ │ ├── arrow-right-circle.svg │ │ │ ├── arrow-right-on-rectangle.svg │ │ │ ├── arrow-right.svg │ │ │ ├── arrow-small-down.svg │ │ │ ├── arrow-small-left.svg │ │ │ ├── arrow-small-right.svg │ │ │ ├── arrow-small-up.svg │ │ │ ├── arrow-top-right-on-square.svg │ │ │ ├── arrow-trending-down.svg │ │ │ ├── arrow-trending-up.svg │ │ │ ├── arrow-up-circle.svg │ │ │ ├── arrow-up-left.svg │ │ │ ├── arrow-up-on-square-stack.svg │ │ │ ├── arrow-up-on-square.svg │ │ │ ├── arrow-up-right.svg │ │ │ ├── arrow-up-tray.svg │ │ │ ├── arrow-up.svg │ │ │ ├── arrow-uturn-down.svg │ │ │ ├── arrow-uturn-left.svg │ │ │ ├── arrow-uturn-right.svg │ │ │ ├── arrow-uturn-up.svg │ │ │ ├── arrows-pointing-in.svg │ │ │ ├── arrows-pointing-out.svg │ │ │ ├── arrows-right-left.svg │ │ │ ├── arrows-up-down.svg │ │ │ ├── at-symbol.svg │ │ │ ├── backspace.svg │ │ │ ├── backward.svg │ │ │ ├── banknotes.svg │ │ │ ├── bars-2.svg │ │ │ ├── bars-3-bottom-left.svg │ │ │ ├── bars-3-bottom-right.svg │ │ │ ├── bars-3-center-left.svg │ │ │ ├── bars-3.svg │ │ │ ├── bars-4.svg │ │ │ ├── bars-arrow-down.svg │ │ │ ├── bars-arrow-up.svg │ │ │ ├── battery-0.svg │ │ │ ├── battery-100.svg │ │ │ ├── battery-50.svg │ │ │ ├── beaker.svg │ │ │ ├── bell-alert.svg │ │ │ ├── bell-slash.svg │ │ │ ├── bell-snooze.svg │ │ │ ├── bell.svg │ │ │ ├── bolt-slash.svg │ │ │ ├── bolt.svg │ │ │ ├── book-open.svg │ │ │ ├── bookmark-slash.svg │ │ │ ├── bookmark-square.svg │ │ │ ├── bookmark.svg │ │ │ ├── briefcase.svg │ │ │ ├── bug-ant.svg │ │ │ ├── building-library.svg │ │ │ ├── building-office-2.svg │ │ │ ├── building-office.svg │ │ │ ├── building-storefront.svg │ │ │ ├── cake.svg │ │ │ ├── calculator.svg │ │ │ ├── calendar-days.svg │ │ │ ├── calendar.svg │ │ │ ├── camera.svg │ │ │ ├── chart-bar-square.svg │ │ │ ├── chart-bar.svg │ │ │ ├── chart-pie.svg │ │ │ ├── chat-bubble-bottom-center-text.svg │ │ │ ├── chat-bubble-bottom-center.svg │ │ │ ├── chat-bubble-left-ellipsis.svg │ │ │ ├── chat-bubble-left-right.svg │ │ │ ├── chat-bubble-left.svg │ │ │ ├── chat-bubble-oval-left-ellipsis.svg │ │ │ ├── chat-bubble-oval-left.svg │ │ │ ├── check-badge.svg │ │ │ ├── check-circle.svg │ │ │ ├── check.svg │ │ │ ├── chevron-double-down.svg │ │ │ ├── chevron-double-left.svg │ │ │ ├── chevron-double-right.svg │ │ │ ├── chevron-double-up.svg │ │ │ ├── chevron-down.svg │ │ │ ├── chevron-left.svg │ │ │ ├── chevron-right.svg │ │ │ ├── chevron-up-down.svg │ │ │ ├── chevron-up.svg │ │ │ ├── circle-stack.svg │ │ │ ├── clipboard-document-check.svg │ │ │ ├── clipboard-document-list.svg │ │ │ ├── clipboard-document.svg │ │ │ ├── clipboard.svg │ │ │ ├── clock.svg │ │ │ ├── cloud-arrow-down.svg │ │ │ ├── cloud-arrow-up.svg │ │ │ ├── cloud.svg │ │ │ ├── code-bracket-square.svg │ │ │ ├── code-bracket.svg │ │ │ ├── cog-6-tooth.svg │ │ │ ├── cog-8-tooth.svg │ │ │ ├── cog.svg │ │ │ ├── command-line.svg │ │ │ ├── computer-desktop.svg │ │ │ ├── cpu-chip.svg │ │ │ ├── credit-card.svg │ │ │ ├── cube-transparent.svg │ │ │ ├── cube.svg │ │ │ ├── currency-bangladeshi.svg │ │ │ ├── currency-dollar.svg │ │ │ ├── currency-euro.svg │ │ │ ├── currency-pound.svg │ │ │ ├── currency-rupee.svg │ │ │ ├── currency-yen.svg │ │ │ ├── cursor-arrow-rays.svg │ │ │ ├── cursor-arrow-ripple.svg │ │ │ ├── device-phone-mobile.svg │ │ │ ├── device-tablet.svg │ │ │ ├── document-arrow-down.svg │ │ │ ├── document-arrow-up.svg │ │ │ ├── document-chart-bar.svg │ │ │ ├── document-check.svg │ │ │ ├── document-duplicate.svg │ │ │ ├── document-magnifying-glass.svg │ │ │ ├── document-minus.svg │ │ │ ├── document-plus.svg │ │ │ ├── document-text.svg │ │ │ ├── document.svg │ │ │ ├── ellipsis-horizontal-circle.svg │ │ │ ├── ellipsis-horizontal.svg │ │ │ ├── ellipsis-vertical.svg │ │ │ ├── envelope-open.svg │ │ │ ├── envelope.svg │ │ │ ├── exclamation-circle.svg │ │ │ ├── exclamation-triangle.svg │ │ │ ├── eye-dropper.svg │ │ │ ├── eye-slash.svg │ │ │ ├── eye.svg │ │ │ ├── face-frown.svg │ │ │ ├── face-smile.svg │ │ │ ├── film.svg │ │ │ ├── finger-print.svg │ │ │ ├── fire.svg │ │ │ ├── flag.svg │ │ │ ├── folder-arrow-down.svg │ │ │ ├── folder-minus.svg │ │ │ ├── folder-open.svg │ │ │ ├── folder-plus.svg │ │ │ ├── folder.svg │ │ │ ├── forward.svg │ │ │ ├── funnel.svg │ │ │ ├── gif.svg │ │ │ ├── gift-top.svg │ │ │ ├── gift.svg │ │ │ ├── globe-alt.svg │ │ │ ├── globe-americas.svg │ │ │ ├── globe-asia-australia.svg │ │ │ ├── globe-europe-africa.svg │ │ │ ├── hand-raised.svg │ │ │ ├── hand-thumb-down.svg │ │ │ ├── hand-thumb-up.svg │ │ │ ├── hashtag.svg │ │ │ ├── heart.svg │ │ │ ├── home-modern.svg │ │ │ ├── home.svg │ │ │ ├── identification.svg │ │ │ ├── inbox-arrow-down.svg │ │ │ ├── inbox-stack.svg │ │ │ ├── inbox.svg │ │ │ ├── information-circle.svg │ │ │ ├── key.svg │ │ │ ├── language.svg │ │ │ ├── lifebuoy.svg │ │ │ ├── light-bulb.svg │ │ │ ├── link.svg │ │ │ ├── list-bullet.svg │ │ │ ├── lock-closed.svg │ │ │ ├── lock-open.svg │ │ │ ├── magnifying-glass-circle.svg │ │ │ ├── magnifying-glass-minus.svg │ │ │ ├── magnifying-glass-plus.svg │ │ │ ├── magnifying-glass.svg │ │ │ ├── map-pin.svg │ │ │ ├── map.svg │ │ │ ├── megaphone.svg │ │ │ ├── microphone.svg │ │ │ ├── minus-circle.svg │ │ │ ├── minus-small.svg │ │ │ ├── minus.svg │ │ │ ├── moon.svg │ │ │ ├── musical-note.svg │ │ │ ├── newspaper.svg │ │ │ ├── no-symbol.svg │ │ │ ├── paint-brush.svg │ │ │ ├── paper-airplane.svg │ │ │ ├── paper-clip.svg │ │ │ ├── pause-circle.svg │ │ │ ├── pause.svg │ │ │ ├── pencil-square.svg │ │ │ ├── pencil.svg │ │ │ ├── phone-arrow-down-left.svg │ │ │ ├── phone-arrow-up-right.svg │ │ │ ├── phone-x-mark.svg │ │ │ ├── phone.svg │ │ │ ├── photo.svg │ │ │ ├── play-circle.svg │ │ │ ├── play-pause.svg │ │ │ ├── play.svg │ │ │ ├── plus-circle.svg │ │ │ ├── plus-small.svg │ │ │ ├── plus.svg │ │ │ ├── power.svg │ │ │ ├── presentation-chart-bar.svg │ │ │ ├── presentation-chart-line.svg │ │ │ ├── printer.svg │ │ │ ├── puzzle-piece.svg │ │ │ ├── qr-code.svg │ │ │ ├── question-mark-circle.svg │ │ │ ├── queue-list.svg │ │ │ ├── radio.svg │ │ │ ├── receipt-percent.svg │ │ │ ├── receipt-refund.svg │ │ │ ├── rectangle-group.svg │ │ │ ├── rectangle-stack.svg │ │ │ ├── rocket-launch.svg │ │ │ ├── rss.svg │ │ │ ├── scale.svg │ │ │ ├── scissors.svg │ │ │ ├── server-stack.svg │ │ │ ├── server.svg │ │ │ ├── share.svg │ │ │ ├── shield-check.svg │ │ │ ├── shield-exclamation.svg │ │ │ ├── shopping-bag.svg │ │ │ ├── shopping-cart.svg │ │ │ ├── signal-slash.svg │ │ │ ├── signal.svg │ │ │ ├── sparkles.svg │ │ │ ├── speaker-wave.svg │ │ │ ├── speaker-x-mark.svg │ │ │ ├── square-2-stack.svg │ │ │ ├── square-3-stack-3d.svg │ │ │ ├── squares-2x2.svg │ │ │ ├── squares-plus.svg │ │ │ ├── star.svg │ │ │ ├── stop-circle.svg │ │ │ ├── stop.svg │ │ │ ├── sun.svg │ │ │ ├── swatch.svg │ │ │ ├── table-cells.svg │ │ │ ├── tag.svg │ │ │ ├── ticket.svg │ │ │ ├── trash.svg │ │ │ ├── trophy.svg │ │ │ ├── truck.svg │ │ │ ├── tv.svg │ │ │ ├── user-circle.svg │ │ │ ├── user-group.svg │ │ │ ├── user-minus.svg │ │ │ ├── user-plus.svg │ │ │ ├── user.svg │ │ │ ├── users.svg │ │ │ ├── variable.svg │ │ │ ├── video-camera-slash.svg │ │ │ ├── video-camera.svg │ │ │ ├── view-columns.svg │ │ │ ├── viewfinder-circle.svg │ │ │ ├── wallet.svg │ │ │ ├── wifi.svg │ │ │ ├── window.svg │ │ │ ├── wrench-screwdriver.svg │ │ │ ├── wrench.svg │ │ │ ├── x-circle.svg │ │ │ └── x-mark.svg │ │ └── 24 │ │ ├── outline │ │ ├── academic-cap.svg │ │ ├── adjustments-horizontal.svg │ │ ├── adjustments-vertical.svg │ │ ├── archive-box-arrow-down.svg │ │ ├── archive-box-x-mark.svg │ │ ├── archive-box.svg │ │ ├── arrow-down-circle.svg │ │ ├── arrow-down-left.svg │ │ ├── arrow-down-on-square-stack.svg │ │ ├── arrow-down-on-square.svg │ │ ├── arrow-down-right.svg │ │ ├── arrow-down-tray.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left-circle.svg │ │ ├── arrow-left-on-rectangle.svg │ │ ├── arrow-left.svg │ │ ├── arrow-long-down.svg │ │ ├── arrow-long-left.svg │ │ ├── arrow-long-right.svg │ │ ├── arrow-long-up.svg │ │ ├── arrow-path-rounded-square.svg │ │ ├── arrow-path.svg │ │ ├── arrow-right-circle.svg │ │ ├── arrow-right-on-rectangle.svg │ │ ├── arrow-right.svg │ │ ├── arrow-small-down.svg │ │ ├── arrow-small-left.svg │ │ ├── arrow-small-right.svg │ │ ├── arrow-small-up.svg │ │ ├── arrow-top-right-on-square.svg │ │ ├── arrow-trending-down.svg │ │ ├── arrow-trending-up.svg │ │ ├── arrow-up-circle.svg │ │ ├── arrow-up-left.svg │ │ ├── arrow-up-on-square-stack.svg │ │ ├── arrow-up-on-square.svg │ │ ├── arrow-up-right.svg │ │ ├── arrow-up-tray.svg │ │ ├── arrow-up.svg │ │ ├── arrow-uturn-down.svg │ │ ├── arrow-uturn-left.svg │ │ ├── arrow-uturn-right.svg │ │ ├── arrow-uturn-up.svg │ │ ├── arrows-pointing-in.svg │ │ ├── arrows-pointing-out.svg │ │ ├── arrows-right-left.svg │ │ ├── arrows-up-down.svg │ │ ├── at-symbol.svg │ │ ├── backspace.svg │ │ ├── backward.svg │ │ ├── banknotes.svg │ │ ├── bars-2.svg │ │ ├── bars-3-bottom-left.svg │ │ ├── bars-3-bottom-right.svg │ │ ├── bars-3-center-left.svg │ │ ├── bars-3.svg │ │ ├── bars-4.svg │ │ ├── bars-arrow-down.svg │ │ ├── bars-arrow-up.svg │ │ ├── battery-0.svg │ │ ├── battery-100.svg │ │ ├── battery-50.svg │ │ ├── beaker.svg │ │ ├── bell-alert.svg │ │ ├── bell-slash.svg │ │ ├── bell-snooze.svg │ │ ├── bell.svg │ │ ├── bolt-slash.svg │ │ ├── bolt.svg │ │ ├── book-open.svg │ │ ├── bookmark-slash.svg │ │ ├── bookmark-square.svg │ │ ├── bookmark.svg │ │ ├── briefcase.svg │ │ ├── bug-ant.svg │ │ ├── building-library.svg │ │ ├── building-office-2.svg │ │ ├── building-office.svg │ │ ├── building-storefront.svg │ │ ├── cake.svg │ │ ├── calculator.svg │ │ ├── calendar-days.svg │ │ ├── calendar.svg │ │ ├── camera.svg │ │ ├── chart-bar-square.svg │ │ ├── chart-bar.svg │ │ ├── chart-pie.svg │ │ ├── chat-bubble-bottom-center-text.svg │ │ ├── chat-bubble-bottom-center.svg │ │ ├── chat-bubble-left-ellipsis.svg │ │ ├── chat-bubble-left-right.svg │ │ ├── chat-bubble-left.svg │ │ ├── chat-bubble-oval-left-ellipsis.svg │ │ ├── chat-bubble-oval-left.svg │ │ ├── check-badge.svg │ │ ├── check-circle.svg │ │ ├── check.svg │ │ ├── chevron-double-down.svg │ │ ├── chevron-double-left.svg │ │ ├── chevron-double-right.svg │ │ ├── chevron-double-up.svg │ │ ├── chevron-down.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right.svg │ │ ├── chevron-up-down.svg │ │ ├── chevron-up.svg │ │ ├── circle-stack.svg │ │ ├── clipboard-document-check.svg │ │ ├── clipboard-document-list.svg │ │ ├── clipboard-document.svg │ │ ├── clipboard.svg │ │ ├── clock.svg │ │ ├── cloud-arrow-down.svg │ │ ├── cloud-arrow-up.svg │ │ ├── cloud.svg │ │ ├── code-bracket-square.svg │ │ ├── code-bracket.svg │ │ ├── cog-6-tooth.svg │ │ ├── cog-8-tooth.svg │ │ ├── cog.svg │ │ ├── command-line.svg │ │ ├── computer-desktop.svg │ │ ├── cpu-chip.svg │ │ ├── credit-card.svg │ │ ├── cube-transparent.svg │ │ ├── cube.svg │ │ ├── currency-bangladeshi.svg │ │ ├── currency-dollar.svg │ │ ├── currency-euro.svg │ │ ├── currency-pound.svg │ │ ├── currency-rupee.svg │ │ ├── currency-yen.svg │ │ ├── cursor-arrow-rays.svg │ │ ├── cursor-arrow-ripple.svg │ │ ├── device-phone-mobile.svg │ │ ├── device-tablet.svg │ │ ├── document-arrow-down.svg │ │ ├── document-arrow-up.svg │ │ ├── document-chart-bar.svg │ │ ├── document-check.svg │ │ ├── document-duplicate.svg │ │ ├── document-magnifying-glass.svg │ │ ├── document-minus.svg │ │ ├── document-plus.svg │ │ ├── document-text.svg │ │ ├── document.svg │ │ ├── ellipsis-horizontal-circle.svg │ │ ├── ellipsis-horizontal.svg │ │ ├── ellipsis-vertical.svg │ │ ├── envelope-open.svg │ │ ├── envelope.svg │ │ ├── exclamation-circle.svg │ │ ├── exclamation-triangle.svg │ │ ├── eye-dropper.svg │ │ ├── eye-slash.svg │ │ ├── eye.svg │ │ ├── face-frown.svg │ │ ├── face-smile.svg │ │ ├── film.svg │ │ ├── finger-print.svg │ │ ├── fire.svg │ │ ├── flag.svg │ │ ├── folder-arrow-down.svg │ │ ├── folder-minus.svg │ │ ├── folder-open.svg │ │ ├── folder-plus.svg │ │ ├── folder.svg │ │ ├── forward.svg │ │ ├── funnel.svg │ │ ├── gif.svg │ │ ├── gift-top.svg │ │ ├── gift.svg │ │ ├── globe-alt.svg │ │ ├── globe-americas.svg │ │ ├── globe-asia-australia.svg │ │ ├── globe-europe-africa.svg │ │ ├── hand-raised.svg │ │ ├── hand-thumb-down.svg │ │ ├── hand-thumb-up.svg │ │ ├── hashtag.svg │ │ ├── heart.svg │ │ ├── home-modern.svg │ │ ├── home.svg │ │ ├── identification.svg │ │ ├── inbox-arrow-down.svg │ │ ├── inbox-stack.svg │ │ ├── inbox.svg │ │ ├── information-circle.svg │ │ ├── key.svg │ │ ├── language.svg │ │ ├── lifebuoy.svg │ │ ├── light-bulb.svg │ │ ├── link.svg │ │ ├── list-bullet.svg │ │ ├── lock-closed.svg │ │ ├── lock-open.svg │ │ ├── magnifying-glass-circle.svg │ │ ├── magnifying-glass-minus.svg │ │ ├── magnifying-glass-plus.svg │ │ ├── magnifying-glass.svg │ │ ├── map-pin.svg │ │ ├── map.svg │ │ ├── megaphone.svg │ │ ├── microphone.svg │ │ ├── minus-circle.svg │ │ ├── minus-small.svg │ │ ├── minus.svg │ │ ├── moon.svg │ │ ├── musical-note.svg │ │ ├── newspaper.svg │ │ ├── no-symbol.svg │ │ ├── paint-brush.svg │ │ ├── paper-airplane.svg │ │ ├── paper-clip.svg │ │ ├── pause-circle.svg │ │ ├── pause.svg │ │ ├── pencil-square.svg │ │ ├── pencil.svg │ │ ├── phone-arrow-down-left.svg │ │ ├── phone-arrow-up-right.svg │ │ ├── phone-x-mark.svg │ │ ├── phone.svg │ │ ├── photo.svg │ │ ├── play-circle.svg │ │ ├── play-pause.svg │ │ ├── play.svg │ │ ├── plus-circle.svg │ │ ├── plus-small.svg │ │ ├── plus.svg │ │ ├── power.svg │ │ ├── presentation-chart-bar.svg │ │ ├── presentation-chart-line.svg │ │ ├── printer.svg │ │ ├── puzzle-piece.svg │ │ ├── qr-code.svg │ │ ├── question-mark-circle.svg │ │ ├── queue-list.svg │ │ ├── radio.svg │ │ ├── receipt-percent.svg │ │ ├── receipt-refund.svg │ │ ├── rectangle-group.svg │ │ ├── rectangle-stack.svg │ │ ├── rocket-launch.svg │ │ ├── rss.svg │ │ ├── scale.svg │ │ ├── scissors.svg │ │ ├── server-stack.svg │ │ ├── server.svg │ │ ├── share.svg │ │ ├── shield-check.svg │ │ ├── shield-exclamation.svg │ │ ├── shopping-bag.svg │ │ ├── shopping-cart.svg │ │ ├── signal-slash.svg │ │ ├── signal.svg │ │ ├── sparkles.svg │ │ ├── speaker-wave.svg │ │ ├── speaker-x-mark.svg │ │ ├── square-2-stack.svg │ │ ├── square-3-stack-3d.svg │ │ ├── squares-2x2.svg │ │ ├── squares-plus.svg │ │ ├── star.svg │ │ ├── stop-circle.svg │ │ ├── stop.svg │ │ ├── sun.svg │ │ ├── swatch.svg │ │ ├── table-cells.svg │ │ ├── tag.svg │ │ ├── ticket.svg │ │ ├── trash.svg │ │ ├── trophy.svg │ │ ├── truck.svg │ │ ├── tv.svg │ │ ├── user-circle.svg │ │ ├── user-group.svg │ │ ├── user-minus.svg │ │ ├── user-plus.svg │ │ ├── user.svg │ │ ├── users.svg │ │ ├── variable.svg │ │ ├── video-camera-slash.svg │ │ ├── video-camera.svg │ │ ├── view-columns.svg │ │ ├── viewfinder-circle.svg │ │ ├── wallet.svg │ │ ├── wifi.svg │ │ ├── window.svg │ │ ├── wrench-screwdriver.svg │ │ ├── wrench.svg │ │ ├── x-circle.svg │ │ └── x-mark.svg │ │ └── solid │ │ ├── academic-cap.svg │ │ ├── adjustments-horizontal.svg │ │ ├── adjustments-vertical.svg │ │ ├── archive-box-arrow-down.svg │ │ ├── archive-box-x-mark.svg │ │ ├── archive-box.svg │ │ ├── arrow-down-circle.svg │ │ ├── arrow-down-left.svg │ │ ├── arrow-down-on-square-stack.svg │ │ ├── arrow-down-on-square.svg │ │ ├── arrow-down-right.svg │ │ ├── arrow-down-tray.svg │ │ ├── arrow-down.svg │ │ ├── arrow-left-circle.svg │ │ ├── arrow-left-on-rectangle.svg │ │ ├── arrow-left.svg │ │ ├── arrow-long-down.svg │ │ ├── arrow-long-left.svg │ │ ├── arrow-long-right.svg │ │ ├── arrow-long-up.svg │ │ ├── arrow-path-rounded-square.svg │ │ ├── arrow-path.svg │ │ ├── arrow-right-circle.svg │ │ ├── arrow-right-on-rectangle.svg │ │ ├── arrow-right.svg │ │ ├── arrow-small-down.svg │ │ ├── arrow-small-left.svg │ │ ├── arrow-small-right.svg │ │ ├── arrow-small-up.svg │ │ ├── arrow-top-right-on-square.svg │ │ ├── arrow-trending-down.svg │ │ ├── arrow-trending-up.svg │ │ ├── arrow-up-circle.svg │ │ ├── arrow-up-left.svg │ │ ├── arrow-up-on-square-stack.svg │ │ ├── arrow-up-on-square.svg │ │ ├── arrow-up-right.svg │ │ ├── arrow-up-tray.svg │ │ ├── arrow-up.svg │ │ ├── arrow-uturn-down.svg │ │ ├── arrow-uturn-left.svg │ │ ├── arrow-uturn-right.svg │ │ ├── arrow-uturn-up.svg │ │ ├── arrows-pointing-in.svg │ │ ├── arrows-pointing-out.svg │ │ ├── arrows-right-left.svg │ │ ├── arrows-up-down.svg │ │ ├── at-symbol.svg │ │ ├── backspace.svg │ │ ├── backward.svg │ │ ├── banknotes.svg │ │ ├── bars-2.svg │ │ ├── bars-3-bottom-left.svg │ │ ├── bars-3-bottom-right.svg │ │ ├── bars-3-center-left.svg │ │ ├── bars-3.svg │ │ ├── bars-4.svg │ │ ├── bars-arrow-down.svg │ │ ├── bars-arrow-up.svg │ │ ├── battery-0.svg │ │ ├── battery-100.svg │ │ ├── battery-50.svg │ │ ├── beaker.svg │ │ ├── bell-alert.svg │ │ ├── bell-slash.svg │ │ ├── bell-snooze.svg │ │ ├── bell.svg │ │ ├── bolt-slash.svg │ │ ├── bolt.svg │ │ ├── book-open.svg │ │ ├── bookmark-slash.svg │ │ ├── bookmark-square.svg │ │ ├── bookmark.svg │ │ ├── briefcase.svg │ │ ├── bug-ant.svg │ │ ├── building-library.svg │ │ ├── building-office-2.svg │ │ ├── building-office.svg │ │ ├── building-storefront.svg │ │ ├── cake.svg │ │ ├── calculator.svg │ │ ├── calendar-days.svg │ │ ├── calendar.svg │ │ ├── camera.svg │ │ ├── chart-bar-square.svg │ │ ├── chart-bar.svg │ │ ├── chart-pie.svg │ │ ├── chat-bubble-bottom-center-text.svg │ │ ├── chat-bubble-bottom-center.svg │ │ ├── chat-bubble-left-ellipsis.svg │ │ ├── chat-bubble-left-right.svg │ │ ├── chat-bubble-left.svg │ │ ├── chat-bubble-oval-left-ellipsis.svg │ │ ├── chat-bubble-oval-left.svg │ │ ├── check-badge.svg │ │ ├── check-circle.svg │ │ ├── check.svg │ │ ├── chevron-double-down.svg │ │ ├── chevron-double-left.svg │ │ ├── chevron-double-right.svg │ │ ├── chevron-double-up.svg │ │ ├── chevron-down.svg │ │ ├── chevron-left.svg │ │ ├── chevron-right.svg │ │ ├── chevron-up-down.svg │ │ ├── chevron-up.svg │ │ ├── circle-stack.svg │ │ ├── clipboard-document-check.svg │ │ ├── clipboard-document-list.svg │ │ ├── clipboard-document.svg │ │ ├── clipboard.svg │ │ ├── clock.svg │ │ ├── cloud-arrow-down.svg │ │ ├── cloud-arrow-up.svg │ │ ├── cloud.svg │ │ ├── code-bracket-square.svg │ │ ├── code-bracket.svg │ │ ├── cog-6-tooth.svg │ │ ├── cog-8-tooth.svg │ │ ├── cog.svg │ │ ├── command-line.svg │ │ ├── computer-desktop.svg │ │ ├── cpu-chip.svg │ │ ├── credit-card.svg │ │ ├── cube-transparent.svg │ │ ├── cube.svg │ │ ├── currency-bangladeshi.svg │ │ ├── currency-dollar.svg │ │ ├── currency-euro.svg │ │ ├── currency-pound.svg │ │ ├── currency-rupee.svg │ │ ├── currency-yen.svg │ │ ├── cursor-arrow-rays.svg │ │ ├── cursor-arrow-ripple.svg │ │ ├── device-phone-mobile.svg │ │ ├── device-tablet.svg │ │ ├── document-arrow-down.svg │ │ ├── document-arrow-up.svg │ │ ├── document-chart-bar.svg │ │ ├── document-check.svg │ │ ├── document-duplicate.svg │ │ ├── document-magnifying-glass.svg │ │ ├── document-minus.svg │ │ ├── document-plus.svg │ │ ├── document-text.svg │ │ ├── document.svg │ │ ├── ellipsis-horizontal-circle.svg │ │ ├── ellipsis-horizontal.svg │ │ ├── ellipsis-vertical.svg │ │ ├── envelope-open.svg │ │ ├── envelope.svg │ │ ├── exclamation-circle.svg │ │ ├── exclamation-triangle.svg │ │ ├── eye-dropper.svg │ │ ├── eye-slash.svg │ │ ├── eye.svg │ │ ├── face-frown.svg │ │ ├── face-smile.svg │ │ ├── film.svg │ │ ├── finger-print.svg │ │ ├── fire.svg │ │ ├── flag.svg │ │ ├── folder-arrow-down.svg │ │ ├── folder-minus.svg │ │ ├── folder-open.svg │ │ ├── folder-plus.svg │ │ ├── folder.svg │ │ ├── forward.svg │ │ ├── funnel.svg │ │ ├── gif.svg │ │ ├── gift-top.svg │ │ ├── gift.svg │ │ ├── globe-alt.svg │ │ ├── globe-americas.svg │ │ ├── globe-asia-australia.svg │ │ ├── globe-europe-africa.svg │ │ ├── hand-raised.svg │ │ ├── hand-thumb-down.svg │ │ ├── hand-thumb-up.svg │ │ ├── hashtag.svg │ │ ├── heart.svg │ │ ├── home-modern.svg │ │ ├── home.svg │ │ ├── identification.svg │ │ ├── inbox-arrow-down.svg │ │ ├── inbox-stack.svg │ │ ├── inbox.svg │ │ ├── information-circle.svg │ │ ├── key.svg │ │ ├── language.svg │ │ ├── lifebuoy.svg │ │ ├── light-bulb.svg │ │ ├── link.svg │ │ ├── list-bullet.svg │ │ ├── lock-closed.svg │ │ ├── lock-open.svg │ │ ├── magnifying-glass-circle.svg │ │ ├── magnifying-glass-minus.svg │ │ ├── magnifying-glass-plus.svg │ │ ├── magnifying-glass.svg │ │ ├── map-pin.svg │ │ ├── map.svg │ │ ├── megaphone.svg │ │ ├── microphone.svg │ │ ├── minus-circle.svg │ │ ├── minus-small.svg │ │ ├── minus.svg │ │ ├── moon.svg │ │ ├── musical-note.svg │ │ ├── newspaper.svg │ │ ├── no-symbol.svg │ │ ├── paint-brush.svg │ │ ├── paper-airplane.svg │ │ ├── paper-clip.svg │ │ ├── pause-circle.svg │ │ ├── pause.svg │ │ ├── pencil-square.svg │ │ ├── pencil.svg │ │ ├── phone-arrow-down-left.svg │ │ ├── phone-arrow-up-right.svg │ │ ├── phone-x-mark.svg │ │ ├── phone.svg │ │ ├── photo.svg │ │ ├── play-circle.svg │ │ ├── play-pause.svg │ │ ├── play.svg │ │ ├── plus-circle.svg │ │ ├── plus-small.svg │ │ ├── plus.svg │ │ ├── power.svg │ │ ├── presentation-chart-bar.svg │ │ ├── presentation-chart-line.svg │ │ ├── printer.svg │ │ ├── puzzle-piece.svg │ │ ├── qr-code.svg │ │ ├── question-mark-circle.svg │ │ ├── queue-list.svg │ │ ├── radio.svg │ │ ├── receipt-percent.svg │ │ ├── receipt-refund.svg │ │ ├── rectangle-group.svg │ │ ├── rectangle-stack.svg │ │ ├── rocket-launch.svg │ │ ├── rss.svg │ │ ├── scale.svg │ │ ├── scissors.svg │ │ ├── server-stack.svg │ │ ├── server.svg │ │ ├── share.svg │ │ ├── shield-check.svg │ │ ├── shield-exclamation.svg │ │ ├── shopping-bag.svg │ │ ├── shopping-cart.svg │ │ ├── signal-slash.svg │ │ ├── signal.svg │ │ ├── sparkles.svg │ │ ├── speaker-wave.svg │ │ ├── speaker-x-mark.svg │ │ ├── square-2-stack.svg │ │ ├── square-3-stack-3d.svg │ │ ├── squares-2x2.svg │ │ ├── squares-plus.svg │ │ ├── star.svg │ │ ├── stop-circle.svg │ │ ├── stop.svg │ │ ├── sun.svg │ │ ├── swatch.svg │ │ ├── table-cells.svg │ │ ├── tag.svg │ │ ├── ticket.svg │ │ ├── trash.svg │ │ ├── trophy.svg │ │ ├── truck.svg │ │ ├── tv.svg │ │ ├── user-circle.svg │ │ ├── user-group.svg │ │ ├── user-minus.svg │ │ ├── user-plus.svg │ │ ├── user.svg │ │ ├── users.svg │ │ ├── variable.svg │ │ ├── video-camera-slash.svg │ │ ├── video-camera.svg │ │ ├── view-columns.svg │ │ ├── viewfinder-circle.svg │ │ ├── wallet.svg │ │ ├── wifi.svg │ │ ├── window.svg │ │ ├── wrench-screwdriver.svg │ │ ├── wrench.svg │ │ ├── x-circle.svg │ │ └── x-mark.svg │ └── topbar.js ├── config ├── config.exs └── test.exs ├── dev.exs ├── docker-compose.yml ├── guides ├── deployment │ ├── deploy-to-flyio.md │ └── deployment-topologies.md ├── general │ └── troubleshooting.md ├── introduction │ ├── installation.md │ └── your-first-site.md ├── recipes │ ├── access-page-info.md │ ├── add-custom-page-fields.md │ ├── create-a-blog.md │ ├── custom-repo.md │ ├── customize-markdown-rendering.md │ ├── embed-tweets.md │ ├── heroicons.md │ ├── javascript-interoperability.md │ ├── libraries-in-js-hooks.md │ ├── multiple-domains-hosting.md │ ├── notify-page-published.md │ ├── on_mount_handle_info_loop.md │ ├── protect-pages-with-basic-auth.md │ ├── reuse-app-css.md │ ├── tailwind-setup.md │ └── testing.md └── upgrading │ ├── v0.1.0-rc.0.md │ ├── v0.1.0-rc.1.md │ ├── v0.1.0-rc.2.md │ ├── v0.1.0.md │ ├── v0.3.0.md │ └── v0.4.0.md ├── lib ├── beacon │ ├── application.ex │ ├── beacon.ex │ ├── behaviors │ │ └── helpers.ex │ ├── boot.ex │ ├── cluster.ex │ ├── compiler.ex │ ├── config.ex │ ├── content.ex │ ├── content │ │ ├── component.ex │ │ ├── component_attr.ex │ │ ├── component_slot.ex │ │ ├── component_slot_attr.ex │ │ ├── error_page.ex │ │ ├── event_handler.ex │ │ ├── info_handler.ex │ │ ├── js_hook.ex │ │ ├── layout.ex │ │ ├── layout_event.ex │ │ ├── layout_snapshot.ex │ │ ├── live_data.ex │ │ ├── live_data_assign.ex │ │ ├── page.ex │ │ ├── page │ │ │ └── helper.ex │ │ ├── page_event.ex │ │ ├── page_field.ex │ │ ├── page_snapshot.ex │ │ ├── page_variant.ex │ │ ├── snippets │ │ │ ├── helper.ex │ │ │ ├── parser.ex │ │ │ └── tag_helper.ex │ │ └── stylesheet.ex │ ├── error_handler.ex │ ├── gettext.ex │ ├── igniter.ex │ ├── lifecycle.ex │ ├── lifecycle │ │ ├── asset.ex │ │ ├── page.ex │ │ └── template.ex │ ├── loader.ex │ ├── loader │ │ ├── components.ex │ │ ├── error_page.ex │ │ ├── event_handlers.ex │ │ ├── info_handlers.ex │ │ ├── layout.ex │ │ ├── live_data.ex │ │ ├── page.ex │ │ ├── routes.ex │ │ ├── snippets.ex │ │ ├── stylesheet.ex │ │ └── worker.ex │ ├── media_library.ex │ ├── media_library │ │ ├── asset.ex │ │ ├── asset_field.ex │ │ ├── asset_fields │ │ │ └── alt_text.ex │ │ ├── processors │ │ │ ├── default.ex │ │ │ └── image.ex │ │ ├── provider.ex │ │ ├── provider │ │ │ ├── repo.ex │ │ │ ├── s3.ex │ │ │ └── s3 │ │ │ │ ├── signed.ex │ │ │ │ └── unsigned.ex │ │ └── upload_metadata.ex │ ├── media_types.ex │ ├── migration.ex │ ├── migrations │ │ ├── v001.ex │ │ ├── v002.ex │ │ └── v003.ex │ ├── plug.ex │ ├── private.ex │ ├── proxy_endpoint.ex │ ├── pub_sub.ex │ ├── registry.ex │ ├── router.ex │ ├── router_server.ex │ ├── runtime_css.ex │ ├── runtime_js.ex │ ├── safe_code_impl.ex │ ├── schema.ex │ ├── site_supervisor.ex │ ├── tailwind_compiler.ex │ ├── template.ex │ ├── template │ │ ├── heex.ex │ │ ├── load_metadata.ex │ │ ├── markdown.ex │ │ └── render_metadata.ex │ ├── test.ex │ ├── test │ │ └── fixtures.ex │ ├── types │ │ ├── atom.ex │ │ ├── binary.ex │ │ ├── json_array_map.ex │ │ └── site.ex │ ├── utils.ex │ └── web │ │ ├── beacon_assigns.ex │ │ ├── cache.ex │ │ ├── cache │ │ └── stale.ex │ │ ├── components │ │ ├── components.ex │ │ ├── core_components.ex │ │ ├── layouts.ex │ │ └── layouts │ │ │ ├── app.html.heex │ │ │ ├── dynamic.html.heex │ │ │ └── runtime.html.heex │ │ ├── controllers │ │ ├── assets_controller.ex │ │ ├── check_controller.ex │ │ ├── error_html.ex │ │ ├── fallback_controller.ex │ │ ├── media_library_controller.ex │ │ └── sitemap_controller.ex │ │ ├── data_source.ex │ │ ├── live │ │ └── page_live.ex │ │ ├── robots │ │ └── robots.txt.eex │ │ ├── robots_txt.ex │ │ ├── sitemap │ │ ├── sitemap.xml.eex │ │ └── sitemap_index.xml.eex │ │ └── sitemap_xml.ex ├── beacon_web.ex ├── errors.ex ├── heroicons.ex └── mix │ └── tasks │ ├── beacon.gen.proxy_endpoint.ex │ ├── beacon.gen.site.ex │ ├── beacon.gen.tailwind_config.ex │ └── beacon.install.ex ├── mix.exs ├── mix.lock ├── priv ├── beacon.png ├── layouts │ └── runtime_error.html.heex ├── static │ ├── beacon.js │ └── beacon.min.js ├── tailwind.config.bundle.js ├── tailwind.css └── templates │ └── install │ └── beacon_router_scope.ex └── test ├── beacon ├── asset_field_test.exs ├── compiler_test.exs ├── config_test.exs ├── content │ ├── js_hook_test.exs │ └── page_field_test.exs ├── content_test.exs ├── error_handler_test.exs ├── igniter_test.exs ├── lifecycle │ ├── asset_test.exs │ └── template_test.exs ├── lifecycle_test.exs ├── loader │ ├── components_test.exs │ ├── error_page_test.exs │ ├── live_data_test.exs │ ├── page_test.exs │ └── routes_test.exs ├── loader_test.exs ├── media_library │ └── upload_metadata_test.exs ├── media_library_test.exs ├── private_test.exs ├── registry_test.exs ├── router_server_test.exs ├── router_test.exs ├── runtime_css_test.exs ├── runtime_js_test.exs ├── schema_test.exs ├── tailwind_compiler_test.exs ├── template │ └── heex_test.exs ├── test_test.exs └── types │ ├── atom_test.exs │ ├── binary_test.exs │ ├── json_array_map_test.exs │ └── site_test.exs ├── beacon_web ├── beacon_assigns_test.exs ├── cache_test.exs ├── components │ └── components_test.exs ├── controllers │ ├── assets_controller_test.exs │ ├── error_html_test.exs │ ├── media_library_controller_test.exs │ ├── robots_controller_test.exs │ └── sitemap_controller_test.exs ├── data_source_test.exs └── live │ └── page_live_test.exs ├── beacon_web_test.exs ├── mix └── tasks │ ├── gen_proxy_endpoint_test.exs │ ├── gen_site_test.exs │ ├── gen_tailwind_config_test.exs │ └── install_test.exs ├── support ├── beacon_web.ex ├── bypass_helpers.ex ├── code_gen_case.ex ├── conn_case.ex ├── data_case.ex ├── endpoints.ex ├── fixtures │ ├── image.gif │ ├── image.jpg │ ├── image.png │ └── image.webp ├── install_files │ ├── dummy_config.exs │ └── dummy_router ├── live_views.ex ├── migrations │ └── 001_add_beacon_tables.exs ├── page_fields.ex ├── repo.ex ├── routers.ex ├── tailwind.config.custom.js ├── tailwind.config.templates.js ├── tailwind.custom.css └── templates │ ├── tailwind.html.heex │ └── tailwind_view.ex └── test_helper.exs /.github/cherry-pick-bot.yml: -------------------------------------------------------------------------------- 1 | enabled: true 2 | preservePullRequestTitle: true -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: "mix" 4 | directory: "/" 5 | schedule: 6 | interval: "weekly" 7 | groups: 8 | production-dependencies: 9 | dependency-type: "production" 10 | development-dependencies: 11 | dependency-type: "development" 12 | - package-ecosystem: "github-actions" 13 | directory: "/" 14 | schedule: 15 | interval: "weekly" 16 | -------------------------------------------------------------------------------- /assets/.eslintrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | env: { 3 | browser: true, 4 | node: true, 5 | es2021: true, 6 | }, 7 | extends: ["eslint:recommended", "prettier"], 8 | globals: { 9 | global: "writable", 10 | }, 11 | parserOptions: { 12 | ecmaVersion: 12, 13 | sourceType: "module", 14 | }, 15 | } 16 | -------------------------------------------------------------------------------- /assets/.prettierignore: -------------------------------------------------------------------------------- 1 | /vendor -------------------------------------------------------------------------------- /assets/.prettierrc.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | printWidth: 120, 3 | semi: false, 4 | } 5 | -------------------------------------------------------------------------------- /assets/css/beacon.css: -------------------------------------------------------------------------------- 1 | @import "tailwindcss/base"; 2 | @import "tailwindcss/components"; 3 | @import "tailwindcss/utilities"; 4 | -------------------------------------------------------------------------------- /assets/images/beacon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/assets/images/beacon.png -------------------------------------------------------------------------------- /assets/images/dockyard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/assets/images/dockyard.png -------------------------------------------------------------------------------- /assets/images/youtube_card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/assets/images/youtube_card.png -------------------------------------------------------------------------------- /assets/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "beacon", 3 | "version": "0.5.1", 4 | "license": "MIT", 5 | "repository": {}, 6 | "scripts": { 7 | "format": "prettier --write .", 8 | "format-check": "prettier --check ." 9 | }, 10 | "devDependencies": { 11 | "prettier": "^3.2" 12 | }, 13 | "dependencies": { 14 | "tailwindcss": "^3.4", 15 | "@tailwindcss/forms": "^0.5", 16 | "@tailwindcss/typography": "^0.5" 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/UPGRADE.md: -------------------------------------------------------------------------------- 1 | You are running heroicons v2.0.16. To upgrade in place, you can run the following command, 2 | where your `HERO_VSN` export is your desired version: 3 | 4 | export HERO_VSN="2.0.16" ; \ 5 | curl -L "https://github.com/tailwindlabs/heroicons/archive/refs/tags/v${HERO_VSN}.tar.gz" | \ 6 | tar -xv --strip-components=1 heroicons-${HERO_VSN}/optimized 7 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/archive-box.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-down-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-down-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-down-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-long-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-long-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-long-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-long-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-right-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-small-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-small-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-small-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-small-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-up-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-up-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-uturn-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-uturn-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-uturn-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/arrow-uturn-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/at-symbol.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/backward.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bars-2.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bars-3-center-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bars-3.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/battery-0.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bell.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bolt.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/book-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bookmark-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bookmark-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/bookmark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/camera.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chart-bar.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chart-pie.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/check-badge.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/check-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/check.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-double-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-double-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-double-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-up-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/clock.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/cloud-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/cloud-arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/cloud.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/credit-card.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/cube.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/currency-yen.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/device-tablet.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/document-check.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/document-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/document-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/document-text.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/document.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/ellipsis-vertical.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/envelope-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/envelope.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/exclamation-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/exclamation-triangle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/eye.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/face-frown.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/face-smile.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/flag.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/folder-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/folder-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/folder.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/forward.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/hand-raised.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/heart.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/home.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/information-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/key.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/light-bulb.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/lock-closed.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/lock-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/magnifying-glass-circle.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/magnifying-glass-minus.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/magnifying-glass-plus.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/magnifying-glass.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/microphone.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/minus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/minus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/moon.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/no-symbol.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/paint-brush.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/paper-airplane.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/pause-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/pause.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/pencil.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/play-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/play-pause.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/play.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/plus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/power.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/question-mark-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/queue-list.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/share.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/square-2-stack.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/stop-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/stop.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/swatch.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/tag.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/tv.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/user-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/user-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/user-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/user.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/video-camera-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/video-camera.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/view-columns.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/x-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/20/solid/x-mark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/adjustments-horizontal.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/adjustments-vertical.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down-tray.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-left-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-left-on-rectangle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-long-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-long-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-long-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-long-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-path.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-right-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-right-on-rectangle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-small-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-small-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-small-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-small-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-top-right-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-trending-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-trending-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up-tray.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-uturn-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-uturn-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-uturn-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrow-uturn-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrows-pointing-in.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrows-pointing-out.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrows-right-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/arrows-up-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/at-symbol.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-2.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-3-center-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-3.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-4.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bars-arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/battery-0.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/battery-100.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/battery-50.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bell-snooze.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bell.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bolt-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bolt.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/book-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bookmark-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bookmark-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/bookmark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/building-library.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/building-office.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/calendar.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chart-bar-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chart-pie.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/check-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/check.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-double-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-double-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-double-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-double-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-up-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/clock.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cloud-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cloud-arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cloud.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/code-bracket-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/code-bracket.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/command-line.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/credit-card.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cube.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/currency-bangladeshi.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/currency-euro.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/currency-pound.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/currency-rupee.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/currency-yen.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cursor-arrow-rays.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/cursor-arrow-ripple.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/device-phone-mobile.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/device-tablet.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/ellipsis-vertical.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/exclamation-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/exclamation-triangle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/flag.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/folder-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/folder-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/folder-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/hashtag.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/heart.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/home-modern.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/home.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/information-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/key.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/link.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/lock-closed.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/lock-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/magnifying-glass-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/magnifying-glass-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/magnifying-glass-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/magnifying-glass.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/map-pin.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/microphone.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/minus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/minus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/moon.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/no-symbol.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/paper-airplane.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/paper-clip.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/pause-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/pause.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/pencil.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/play-circle.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/play-pause.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/play.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/plus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/power.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/presentation-chart-bar.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/question-mark-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/queue-list.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/receipt-refund.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/rss.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/shield-check.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/shield-exclamation.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/square-2-stack.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/square-3-stack-3d.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/stop-circle.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/stop.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/sun.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/tv.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/user-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/user-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/user-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/user.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/video-camera.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/view-columns.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/viewfinder-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/wifi.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/window.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/x-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/outline/x-mark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-down-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-down-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-down-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-left-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-long-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-long-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-long-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-long-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-right-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-small-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-small-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-small-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-small-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-up-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-up-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-up-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-uturn-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-uturn-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-uturn-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/arrow-uturn-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/backward.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bars-2.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bars-3-center-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bars-3.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/battery-0.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bell.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bolt-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bolt.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bookmark-slash.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bookmark-square.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/bookmark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/calendar.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chart-pie.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/check-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/check.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-double-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-double-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-double-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-double-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-left.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-right.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-up-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/chevron-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/clipboard.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/clock.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/cloud-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/cloud-arrow-up.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/cloud.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/command-line.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/credit-card.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/cube.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/ellipsis-vertical.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/envelope.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/exclamation-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/exclamation-triangle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/fire.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/folder-arrow-down.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/folder-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/folder-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/folder-plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/folder.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/forward.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/lock-closed.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/lock-open.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/magnifying-glass-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/magnifying-glass.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/microphone.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/minus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/minus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/moon.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/no-symbol.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/paper-airplane.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/pause.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/pencil.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/play-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/play.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/plus-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/plus-small.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/plus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/power.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/queue-list.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/rectangle-stack.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/share.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/square-2-stack.svg: -------------------------------------------------------------------------------- 1 | 5 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/stop-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/stop.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/tag.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/user-minus.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/user.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/video-camera.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/view-columns.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/x-circle.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /assets/vendor/heroicons/optimized/24/solid/x-mark.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.9" 2 | services: 3 | db: 4 | image: postgres:13.1 5 | ports: 6 | - "5432:5432" 7 | environment: 8 | - POSTGRES_USER=postgres 9 | - POSTGRES_PASSWORD=postgres 10 | -------------------------------------------------------------------------------- /guides/recipes/heroicons.md: -------------------------------------------------------------------------------- 1 | # Heroicons 2 | 3 | [Heroicons](https://heroicons.com/) is a popular icon library added by default in new Phoenix applications and also available in Beacon as a component. 4 | 5 | The component `heroicon` is added by default in new Beacon sites without extra configuration to let you render icons in your pages. 6 | 7 | For example, to render a `light-bulb` icon in the solid style: 8 | 9 | ```heex 10 | <.heroicon name="light-bulb" solid /> 11 | ``` 12 | -------------------------------------------------------------------------------- /lib/beacon/content/page/helper.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Content.Page.Helper do 2 | @moduledoc false 3 | use Ecto.Schema 4 | 5 | embedded_schema do 6 | field :name, :string 7 | field :args, :string 8 | field :code, :string 9 | end 10 | end 11 | -------------------------------------------------------------------------------- /lib/beacon/content/snippets/parser.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Content.Snippets.Parser do 2 | @moduledoc false 3 | 4 | use Solid.Parser.Base, custom_tags: [Beacon.Content.Snippets.TagHelper] 5 | end 6 | -------------------------------------------------------------------------------- /lib/beacon/gettext.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Gettext do 2 | @moduledoc false 3 | use Gettext.Backend, otp_app: :beacon 4 | end 5 | -------------------------------------------------------------------------------- /lib/beacon/media_library/provider/s3/unsigned.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.MediaLibrary.Provider.S3.Unsigned do 2 | @moduledoc false 3 | alias Beacon.MediaLibrary.Provider.S3 4 | 5 | defdelegate send_to_cdn(metadata, config \\ []), to: S3 6 | defdelegate key_for(metadata), to: S3 7 | defdelegate bucket(), to: S3 8 | defdelegate list(), to: S3 9 | defdelegate url_for(asset, config \\ []), to: S3 10 | defdelegate provider_key(), to: S3 11 | end 12 | -------------------------------------------------------------------------------- /lib/beacon/media_types.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.MediaTypes do 2 | @moduledoc false 3 | 4 | @doc """ 5 | Browsers' media types are often out of date, 6 | returning an empty string or a deprecated media type 7 | which the Elixir MIME library no longer supports. 8 | """ 9 | def normalize(""), do: nil 10 | def normalize("application/font-woff"), do: "font/woff" 11 | def normalize(media_type), do: media_type 12 | end 13 | -------------------------------------------------------------------------------- /lib/beacon/safe_code_impl.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.SafeCodeImpl do 2 | @moduledoc false 3 | 4 | @behaviour SafeCode.Validator.FunctionValidators.Behaviour 5 | 6 | @impl true 7 | def safe_function?(:my_component), do: true 8 | def safe_function?(_), do: false 9 | 10 | @impl true 11 | def safe_module_function?(_, _), do: false 12 | end 13 | -------------------------------------------------------------------------------- /lib/beacon/template/load_metadata.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Template.LoadMetadata do 2 | @moduledoc """ 3 | Metadata passed to page loading lifecycle. 4 | """ 5 | 6 | defstruct [:site, :path] 7 | 8 | @type t :: %__MODULE__{ 9 | site: Beacon.Types.Site.t(), 10 | path: String.t() 11 | } 12 | end 13 | -------------------------------------------------------------------------------- /lib/beacon/web/components/layouts/app.html.heex: -------------------------------------------------------------------------------- 1 |
2 |
3 | <%= @inner_content %> 4 |
5 |
6 | -------------------------------------------------------------------------------- /lib/beacon/web/components/layouts/dynamic.html.heex: -------------------------------------------------------------------------------- 1 | 2 | <%= render_dynamic_layout(assigns) %> 3 | -------------------------------------------------------------------------------- /lib/beacon/web/robots/robots.txt.eex: -------------------------------------------------------------------------------- 1 | # http://www.robotstxt.org 2 | User-agent: * 3 | Sitemap: <%= @sitemap_index_url %> 4 | -------------------------------------------------------------------------------- /lib/beacon/web/robots_txt.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Web.RobotsTxt do 2 | @moduledoc false 3 | import Phoenix.Template, only: [embed_templates: 1] 4 | embed_templates "robots/*.txt" 5 | end 6 | -------------------------------------------------------------------------------- /lib/beacon/web/sitemap/sitemap.xml.eex: -------------------------------------------------------------------------------- 1 | 2 | 3 | <%= for page <- @pages do %> 4 | <%= page.loc %> 5 | <%= page.lastmod %> 6 | <% end %> 7 | 8 | -------------------------------------------------------------------------------- /lib/beacon/web/sitemap/sitemap_index.xml.eex: -------------------------------------------------------------------------------- 1 | 2 | <%= for url <- @urls do %> 3 | 4 | <%= url %> 5 | <% end %> 6 | 7 | -------------------------------------------------------------------------------- /lib/beacon/web/sitemap_xml.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Web.SitemapXML do 2 | @moduledoc false 3 | import Phoenix.Template, only: [embed_templates: 1] 4 | embed_templates "sitemap/*.xml" 5 | end 6 | -------------------------------------------------------------------------------- /priv/beacon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/priv/beacon.png -------------------------------------------------------------------------------- /priv/layouts/runtime_error.html.heex: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | /> 5 | Error 6 | /> 7 | 9 | 10 | 11 | <%= @inner_content %> 12 | 13 | 14 | -------------------------------------------------------------------------------- /priv/templates/install/beacon_router_scope.ex: -------------------------------------------------------------------------------- 1 | 2 | use Beacon.Router 3 | 4 | scope "/" do 5 | pipe_through :browser 6 | beacon_site "<%= path %>", site: :<%= site %> 7 | end 8 | -------------------------------------------------------------------------------- /test/beacon/private_test.exs: -------------------------------------------------------------------------------- 1 | defmodule Beacon.PrivateTest do 2 | use Beacon.Web.ConnCase, async: true 3 | use Beacon.Test, site: :my_site 4 | 5 | setup do 6 | beacon_page_fixture(path: "/on_mount") 7 | :ok 8 | end 9 | 10 | test "router assigns" do 11 | assert Beacon.Private.route_assigns(default_site(), "/on_mount") == %{on_mount_var: "on_mount_test"} 12 | end 13 | end 14 | -------------------------------------------------------------------------------- /test/beacon_web/controllers/error_html_test.exs: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Web.ErrorHTMLTest do 2 | use ExUnit.Case, async: true 3 | 4 | alias Beacon.Web.ErrorHTML 5 | 6 | @tag capture_log: true 7 | test "invalid status code" do 8 | assert ErrorHTML.render("invalid", %{conn: nil}) == "Internal Server Error" 9 | end 10 | 11 | @tag capture_log: true 12 | test "invalid conn" do 13 | assert ErrorHTML.render("404.html", %{conn: nil}) == "Not Found" 14 | end 15 | end 16 | -------------------------------------------------------------------------------- /test/support/fixtures/image.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/test/support/fixtures/image.gif -------------------------------------------------------------------------------- /test/support/fixtures/image.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/test/support/fixtures/image.jpg -------------------------------------------------------------------------------- /test/support/fixtures/image.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/test/support/fixtures/image.png -------------------------------------------------------------------------------- /test/support/fixtures/image.webp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/BeaconCMS/beacon/236da4b187fe9498a2d9bd1c7e0e4a7704e73c0d/test/support/fixtures/image.webp -------------------------------------------------------------------------------- /test/support/install_files/dummy_config.exs: -------------------------------------------------------------------------------- 1 | import Config 2 | 3 | config :beacon_test, 4 | ecto_repos: [BeaconTest.Repo] 5 | -------------------------------------------------------------------------------- /test/support/install_files/dummy_router: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Web.RouterTest do 2 | use Beacon.Web, :router 3 | 4 | pipeline :browser do 5 | plug :accepts, ["html"] 6 | plug :fetch_session 7 | plug :fetch_live_flash 8 | plug :put_root_layout, {BeaconDemoWeb.Layouts, :root} 9 | plug :protect_from_forgery 10 | plug :put_secure_browser_headers 11 | end 12 | 13 | pipeline :api do 14 | plug :accepts, ["json"] 15 | end 16 | end 17 | -------------------------------------------------------------------------------- /test/support/live_views.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.BeaconTest.LiveViews.FooBarLive do 2 | use Phoenix.LiveView 3 | def render(assigns), do: ~H"" 4 | end 5 | -------------------------------------------------------------------------------- /test/support/migrations/001_add_beacon_tables.exs: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Support.Migrations.AddBeaconTables do 2 | use Ecto.Migration 3 | def up, do: Beacon.Migration.up() 4 | def down, do: Beacon.Migration.down() 5 | end 6 | -------------------------------------------------------------------------------- /test/support/repo.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.BeaconTest.Repo do 2 | @moduledoc false 3 | use Ecto.Repo, 4 | otp_app: :beacon, 5 | adapter: Ecto.Adapters.Postgres 6 | end 7 | -------------------------------------------------------------------------------- /test/support/tailwind.config.custom.js: -------------------------------------------------------------------------------- 1 | export default { 2 | content: [] 3 | } 4 | -------------------------------------------------------------------------------- /test/support/tailwind.config.templates.js: -------------------------------------------------------------------------------- 1 | export default { 2 | content: [ 3 | 'test/support/templates/*.ex', 4 | 'test/support/templates/*.heex' 5 | ] 6 | } -------------------------------------------------------------------------------- /test/support/tailwind.custom.css: -------------------------------------------------------------------------------- 1 | /* tailwind */ 2 | @import "tailwindcss/base"; 3 | @import "tailwindcss/components"; 4 | @import "tailwindcss/utilities"; 5 | 6 | .custom-font-style { @apply font-sans; color: #5e5e5e } -------------------------------------------------------------------------------- /test/support/templates/tailwind.html.heex: -------------------------------------------------------------------------------- 1 |
2 | -------------------------------------------------------------------------------- /test/support/templates/tailwind_view.ex: -------------------------------------------------------------------------------- 1 | defmodule Beacon.Web.TailwindView do 2 | @moduledoc false 3 | use Beacon.Web, :html 4 | 5 | def render(_, assigns) do 6 | ~H""" 7 |
8 | """ 9 | end 10 | end 11 | --------------------------------------------------------------------------------