diff --git a/.formatter.exs b/.formatter.exs
index 8a6391c..ef8840c 100644
--- a/.formatter.exs
+++ b/.formatter.exs
@@ -1,5 +1,6 @@
[
- import_deps: [:ecto, :phoenix],
- inputs: ["*.{ex,exs}", "priv/*/seeds.exs", "{config,lib,test}/**/*.{ex,exs}"],
- subdirectories: ["priv/*/migrations"]
+ import_deps: [:ecto, :ecto_sql, :phoenix],
+ subdirectories: ["priv/*/migrations"],
+ plugins: [Phoenix.LiveView.HTMLFormatter],
+ inputs: ["*.{heex,ex,exs}", "{config,lib,test}/**/*.{heex,ex,exs}", "priv/*/seeds.exs"]
]
diff --git a/.gitignore b/.gitignore
index 994672e..fe58011 100644
--- a/.gitignore
+++ b/.gitignore
@@ -19,19 +19,18 @@ erl_crash.dump
# Also ignore archive artifacts (built via "mix archive.build").
*.ez
+# Temporary files, for example, from tests.
+/tmp/
+
# Ignore package tarball (built via "mix hex.build").
homepage-*.tar
# Ignore assets that are produced by build tools.
-/priv/static/
/priv/static/assets/
-/rel/
-
# Ignore digested assets cache.
/priv/static/cache_manifest.json
-
# In case you use Node.js/npm, you want to ignore these.
npm-debug.log
/assets/node_modules/
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
deleted file mode 100644
index fef13ef..0000000
--- a/.gitlab-ci.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-# You can override the included template(s) by including variable overrides
-# SAST customization: https://docs.gitlab.com/ee/user/application_security/sast/#customizing-the-sast-settings
-# Secret Detection customization: https://docs.gitlab.com/ee/user/application_security/secret_detection/#customizing-settings
-# Dependency Scanning customization: https://docs.gitlab.com/ee/user/application_security/dependency_scanning/#customizing-the-dependency-scanning-settings
-# Container Scanning customization: https://docs.gitlab.com/ee/user/application_security/container_scanning/#customizing-the-container-scanning-settings
-# Note that environment variables can be set in several places
-# See https://docs.gitlab.com/ee/ci/variables/#cicd-variable-precedence
-stages:
-- test
-sast:
- stage: test
-include:
-- template: Security/SAST.gitlab-ci.yml
diff --git a/README.md b/README.md
index 6a6b3af..db7c64a 100644
--- a/README.md
+++ b/README.md
@@ -1,92 +1,18 @@
-# homepage
+# Homepage
-My personal homepage
+To start your Phoenix server:
-## Getting started
+ * Run `mix setup` to install and setup dependencies
+ * Start Phoenix endpoint with `mix phx.server` or inside IEx with `iex -S mix phx.server`
-To make it easy for you to get started with GitLab, here's a list of recommended next steps.
+Now you can visit [`localhost:4000`](http://localhost:4000) from your browser.
-Already a pro? Just edit this README.md and make it your own. Want to make it easy? [Use the template at the bottom](#editing-this-readme)!
+Ready to run in production? Please [check our deployment guides](https://hexdocs.pm/phoenix/deployment.html).
-## Add your files
+## Learn more
-- [ ] [Create](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#create-a-file) or [upload](https://docs.gitlab.com/ee/user/project/repository/web_editor.html#upload-a-file) files
-- [ ] [Add files using the command line](https://docs.gitlab.com/ee/gitlab-basics/add-file.html#add-a-file-using-the-command-line) or push an existing Git repository with the following command:
-
-```
-cd existing_repo
-git remote add origin https://gitlab.com/rdiedrich/homepage.git
-git branch -M main
-git push -uf origin main
-```
-
-## Integrate with your tools
-
-- [ ] [Set up project integrations](https://gitlab.com/rdiedrich/homepage/-/settings/integrations)
-
-## Collaborate with your team
-
-- [ ] [Invite team members and collaborators](https://docs.gitlab.com/ee/user/project/members/)
-- [ ] [Create a new merge request](https://docs.gitlab.com/ee/user/project/merge_requests/creating_merge_requests.html)
-- [ ] [Automatically close issues from merge requests](https://docs.gitlab.com/ee/user/project/issues/managing_issues.html#closing-issues-automatically)
-- [ ] [Enable merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)
-- [ ] [Automatically merge when pipeline succeeds](https://docs.gitlab.com/ee/user/project/merge_requests/merge_when_pipeline_succeeds.html)
-
-## Test and Deploy
-
-Use the built-in continuous integration in GitLab.
-
-- [ ] [Get started with GitLab CI/CD](https://docs.gitlab.com/ee/ci/quick_start/index.html)
-- [ ] [Analyze your code for known vulnerabilities with Static Application Security Testing(SAST)](https://docs.gitlab.com/ee/user/application_security/sast/)
-- [ ] [Deploy to Kubernetes, Amazon EC2, or Amazon ECS using Auto Deploy](https://docs.gitlab.com/ee/topics/autodevops/requirements.html)
-- [ ] [Use pull-based deployments for improved Kubernetes management](https://docs.gitlab.com/ee/user/clusters/agent/)
-- [ ] [Set up protected environments](https://docs.gitlab.com/ee/ci/environments/protected_environments.html)
-
-***
-
-# Editing this README
-
-When you're ready to make this README your own, just edit this file and use the handy template below (or feel free to structure it however you want - this is just a starting point!). Thank you to [makeareadme.com](https://www.makeareadme.com/) for this template.
-
-## Suggestions for a good README
-Every project is different, so consider which of these sections apply to yours. The sections used in the template are suggestions for most open source projects. Also keep in mind that while a README can be too long and detailed, too long is better than too short. If you think your README is too long, consider utilizing another form of documentation rather than cutting out information.
-
-## Name
-Choose a self-explaining name for your project.
-
-## Description
-Let people know what your project can do specifically. Provide context and add a link to any reference visitors might be unfamiliar with. A list of Features or a Background subsection can also be added here. If there are alternatives to your project, this is a good place to list differentiating factors.
-
-## Badges
-On some READMEs, you may see small images that convey metadata, such as whether or not all the tests are passing for the project. You can use Shields to add some to your README. Many services also have instructions for adding a badge.
-
-## Visuals
-Depending on what you are making, it can be a good idea to include screenshots or even a video (you'll frequently see GIFs rather than actual videos). Tools like ttygif can help, but check out Asciinema for a more sophisticated method.
-
-## Installation
-Within a particular ecosystem, there may be a common way of installing things, such as using Yarn, NuGet, or Homebrew. However, consider the possibility that whoever is reading your README is a novice and would like more guidance. Listing specific steps helps remove ambiguity and gets people to using your project as quickly as possible. If it only runs in a specific context like a particular programming language version or operating system or has dependencies that have to be installed manually, also add a Requirements subsection.
-
-## Usage
-Use examples liberally, and show the expected output if you can. It's helpful to have inline the smallest example of usage that you can demonstrate, while providing links to more sophisticated examples if they are too long to reasonably include in the README.
-
-## Support
-Tell people where they can go to for help. It can be any combination of an issue tracker, a chat room, an email address, etc.
-
-## Roadmap
-If you have ideas for releases in the future, it is a good idea to list them in the README.
-
-## Contributing
-State if you are open to contributions and what your requirements are for accepting them.
-
-For people who want to make changes to your project, it's helpful to have some documentation on how to get started. Perhaps there is a script that they should run or some environment variables that they need to set. Make these steps explicit. These instructions could also be useful to your future self.
-
-You can also document commands to lint the code or run tests. These steps help to ensure high code quality and reduce the likelihood that the changes inadvertently break something. Having instructions for running tests is especially helpful if it requires external setup, such as starting a Selenium server for testing in a browser.
-
-## Authors and acknowledgment
-Show your appreciation to those who have contributed to the project.
-
-## License
-For open source projects, say how it is licensed.
-
-## Project status
-If you have run out of energy or time for your project, put a note at the top of the README saying that development has slowed down or stopped completely. Someone may choose to fork your project or volunteer to step in as a maintainer or owner, allowing your project to keep going. You can also make an explicit request for maintainers.
+ * Official website: https://www.phoenixframework.org/
+ * Guides: https://hexdocs.pm/phoenix/overview.html
+ * Docs: https://hexdocs.pm/phoenix
+ * Forum: https://elixirforum.com/c/phoenix-forum
+ * Source: https://github.com/phoenixframework/phoenix
diff --git a/assets/android-chrome-192x192.png b/assets/android-chrome-192x192.png
new file mode 100644
index 0000000..f3d0cc9
Binary files /dev/null and b/assets/android-chrome-192x192.png differ
diff --git a/assets/android-chrome-512x512.png b/assets/android-chrome-512x512.png
new file mode 100644
index 0000000..00ed59f
Binary files /dev/null and b/assets/android-chrome-512x512.png differ
diff --git a/assets/apple-touch-icon.png b/assets/apple-touch-icon.png
new file mode 100644
index 0000000..347bf8f
Binary files /dev/null and b/assets/apple-touch-icon.png differ
diff --git a/assets/css/app.css b/assets/css/app.css
index 9aae13c..7e6064a 100644
--- a/assets/css/app.css
+++ b/assets/css/app.css
@@ -2,138 +2,45 @@
@import "tailwindcss/components";
@import "tailwindcss/utilities";
-/* This file is for your main application CSS */
+@font-face {
+ font-family: 'Inter var';
+ font-style: normal;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url('/fonts/Inter-roman.var.woff2?v=3.19') format('woff2');
+ font-named-instance: 'Regular';
+}
-/*
- Layout
-*/
+@font-face {
+ font-family: 'Inter var';
+ font-style: italic;
+ font-weight: 100 900;
+ font-display: swap;
+ src: url('/fonts/Inter-italic.var.woff2?v=3.19') format('woff2');
+ font-named-instance: 'Italic';
+}
+
+html { @apply bg-white; }
body {
- @apply font-sans;
+ @apply font-sans text-black-olive;
+ @apply grid grid-rows-[min-content_1fr_min-content];
}
-#root {
- margin: 0 auto;
+section p { @apply mb-4; }
+strong { @apply font-semibold; }
- display: grid;
- grid-template-columns: 1fr min(1440px,100%) 1fr;
+.dropdown .btn { @apply normal-case text-base; }
+header { @apply flex justify-end; }
+
+header h1 { @apply font-normal text-lg m-2; }
+
+section h2 {
+ @apply font-bold text-4xl;
+ @apply mb-8;
}
-#root > * {
- grid-column: 2;
-}
+.projects h3 { @apply font-semibold text-lg; }
+.project { @apply mb-4; }
-.color-box {
- @apply block w-8 h-8 m-1;
-}
-
-i.icon svg { @apply inline; }
-h2 > i.icon svg { @apply w-6 h-6 stroke-2; }
-
-/* Alerts and form errors used by phx.new */
-.alert {
- @apply rounded;
-}
-.alert-danger {
- @apply bg-error text-error-content;
-}
-.alert-warning {
- color: #8a6d3b;
- background-color: #fcf8e3;
- border-color: #faebcc;
-}
-.alert p {
- margin-bottom: 0;
-}
-.alert:empty {
- display: none;
-}
-.invalid-feedback {
- @apply text-error;
- display: block;
- margin: -1rem 0 2rem;
-}
-
-/* LiveView specific classes for your customization */
-.phx-no-feedback.invalid-feedback,
-.phx-no-feedback .invalid-feedback {
- display: none;
-}
-
-.phx-click-loading {
- opacity: 0.5;
- transition: opacity 1s ease-out;
-}
-
-.phx-loading{
- cursor: wait;
-}
-
-.phx-modal {
- opacity: 1!important;
- position: fixed;
- z-index: 1;
- left: 0;
- top: 0;
- width: 100%;
- height: 100%;
- overflow: auto;
- background-color: rgba(0,0,0,0.4);
-}
-
-.phx-modal-content {
- background-color: #fefefe;
- margin: 15vh auto;
- padding: 20px;
- border: 1px solid #888;
- width: 80%;
-}
-
-.phx-modal-close {
- color: #aaa;
- float: right;
- font-size: 28px;
- font-weight: bold;
-}
-
-.phx-modal-close:hover,
-.phx-modal-close:focus {
- color: black;
- text-decoration: none;
- cursor: pointer;
-}
-
-.fade-in-scale {
- animation: 0.2s ease-in 0s normal forwards 1 fade-in-scale-keys;
-}
-
-.fade-out-scale {
- animation: 0.2s ease-out 0s normal forwards 1 fade-out-scale-keys;
-}
-
-.fade-in {
- animation: 0.2s ease-out 0s normal forwards 1 fade-in-keys;
-}
-.fade-out {
- animation: 0.2s ease-out 0s normal forwards 1 fade-out-keys;
-}
-
-@keyframes fade-in-scale-keys{
- 0% { scale: 0.95; opacity: 0; }
- 100% { scale: 1.0; opacity: 1; }
-}
-
-@keyframes fade-out-scale-keys{
- 0% { scale: 1.0; opacity: 1; }
- 100% { scale: 0.95; opacity: 0; }
-}
-
-@keyframes fade-in-keys{
- 0% { opacity: 0; }
- 100% { opacity: 1; }
-}
-
-@keyframes fade-out-keys{
- 0% { opacity: 1; }
- 100% { opacity: 0; }
-}
+.icon-link { @apply flex items-start gap-1; }
\ No newline at end of file
diff --git a/assets/css/phoenix.css b/assets/css/phoenix.css
deleted file mode 100644
index 0d59050..0000000
--- a/assets/css/phoenix.css
+++ /dev/null
@@ -1,101 +0,0 @@
-/* Includes some default style for the starter application.
- * This can be safely deleted to start fresh.
- */
-
-/* Milligram v1.4.1 https://milligram.github.io
- * Copyright (c) 2020 CJ Patoilo Licensed under the MIT license
- */
-
-*,*:after,*:before{box-sizing:inherit}html{box-sizing:border-box;font-size:62.5%}body{color:#000000;font-family:'Helvetica Neue', 'Helvetica', 'Arial', sans-serif;font-size:1.6em;font-weight:300;letter-spacing:.01em;line-height:1.6}blockquote{border-left:0.3rem solid #d1d1d1;margin-left:0;margin-right:0;padding:1rem 1.5rem}blockquote *:last-child{margin-bottom:0}.button,button,input[type='button'],input[type='reset'],input[type='submit']{background-color:#0069d9;border:0.1rem solid #0069d9;border-radius:.4rem;color:#fff;cursor:pointer;display:inline-block;font-size:1.1rem;font-weight:700;height:3.8rem;letter-spacing:.1rem;line-height:3.8rem;padding:0 3.0rem;text-align:center;text-decoration:none;text-transform:uppercase;white-space:nowrap}.button:focus,.button:hover,button:focus,button:hover,input[type='button']:focus,input[type='button']:hover,input[type='reset']:focus,input[type='reset']:hover,input[type='submit']:focus,input[type='submit']:hover{background-color:#606c76;border-color:#606c76;color:#fff;outline:0}.button[disabled],button[disabled],input[type='button'][disabled],input[type='reset'][disabled],input[type='submit'][disabled]{cursor:default;opacity:.5}.button[disabled]:focus,.button[disabled]:hover,button[disabled]:focus,button[disabled]:hover,input[type='button'][disabled]:focus,input[type='button'][disabled]:hover,input[type='reset'][disabled]:focus,input[type='reset'][disabled]:hover,input[type='submit'][disabled]:focus,input[type='submit'][disabled]:hover{background-color:#0069d9;border-color:#0069d9}.button.button-outline,button.button-outline,input[type='button'].button-outline,input[type='reset'].button-outline,input[type='submit'].button-outline{background-color:transparent;color:#0069d9}.button.button-outline:focus,.button.button-outline:hover,button.button-outline:focus,button.button-outline:hover,input[type='button'].button-outline:focus,input[type='button'].button-outline:hover,input[type='reset'].button-outline:focus,input[type='reset'].button-outline:hover,input[type='submit'].button-outline:focus,input[type='submit'].button-outline:hover{background-color:transparent;border-color:#606c76;color:#606c76}.button.button-outline[disabled]:focus,.button.button-outline[disabled]:hover,button.button-outline[disabled]:focus,button.button-outline[disabled]:hover,input[type='button'].button-outline[disabled]:focus,input[type='button'].button-outline[disabled]:hover,input[type='reset'].button-outline[disabled]:focus,input[type='reset'].button-outline[disabled]:hover,input[type='submit'].button-outline[disabled]:focus,input[type='submit'].button-outline[disabled]:hover{border-color:inherit;color:#0069d9}.button.button-clear,button.button-clear,input[type='button'].button-clear,input[type='reset'].button-clear,input[type='submit'].button-clear{background-color:transparent;border-color:transparent;color:#0069d9}.button.button-clear:focus,.button.button-clear:hover,button.button-clear:focus,button.button-clear:hover,input[type='button'].button-clear:focus,input[type='button'].button-clear:hover,input[type='reset'].button-clear:focus,input[type='reset'].button-clear:hover,input[type='submit'].button-clear:focus,input[type='submit'].button-clear:hover{background-color:transparent;border-color:transparent;color:#606c76}.button.button-clear[disabled]:focus,.button.button-clear[disabled]:hover,button.button-clear[disabled]:focus,button.button-clear[disabled]:hover,input[type='button'].button-clear[disabled]:focus,input[type='button'].button-clear[disabled]:hover,input[type='reset'].button-clear[disabled]:focus,input[type='reset'].button-clear[disabled]:hover,input[type='submit'].button-clear[disabled]:focus,input[type='submit'].button-clear[disabled]:hover{color:#0069d9}code{background:#f4f5f6;border-radius:.4rem;font-size:86%;margin:0 .2rem;padding:.2rem .5rem;white-space:nowrap}pre{background:#f4f5f6;border-left:0.3rem solid #0069d9;overflow-y:hidden}pre>code{border-radius:0;display:block;padding:1rem 1.5rem;white-space:pre}hr{border:0;border-top:0.1rem solid #f4f5f6;margin:3.0rem 0}input[type='color'],input[type='date'],input[type='datetime'],input[type='datetime-local'],input[type='email'],input[type='month'],input[type='number'],input[type='password'],input[type='search'],input[type='tel'],input[type='text'],input[type='url'],input[type='week'],input:not([type]),textarea,select{-webkit-appearance:none;background-color:transparent;border:0.1rem solid #d1d1d1;border-radius:.4rem;box-shadow:none;box-sizing:inherit;height:3.8rem;padding:.6rem 1.0rem .7rem;width:100%}input[type='color']:focus,input[type='date']:focus,input[type='datetime']:focus,input[type='datetime-local']:focus,input[type='email']:focus,input[type='month']:focus,input[type='number']:focus,input[type='password']:focus,input[type='search']:focus,input[type='tel']:focus,input[type='text']:focus,input[type='url']:focus,input[type='week']:focus,input:not([type]):focus,textarea:focus,select:focus{border-color:#0069d9;outline:0}select{background:url('data:image/svg+xml;utf8, ') center right no-repeat;padding-right:3.0rem}select:focus{background-image:url('data:image/svg+xml;utf8, ')}select[multiple]{background:none;height:auto}textarea{min-height:6.5rem}label,legend{display:block;font-size:1.6rem;font-weight:700;margin-bottom:.5rem}fieldset{border-width:0;padding:0}input[type='checkbox'],input[type='radio']{display:inline}.label-inline{display:inline-block;font-weight:normal;margin-left:.5rem}.container{margin:0 auto;max-width:112.0rem;padding:0 2.0rem;position:relative;width:100%}.row{display:flex;flex-direction:column;padding:0;width:100%}.row.row-no-padding{padding:0}.row.row-no-padding>.column{padding:0}.row.row-wrap{flex-wrap:wrap}.row.row-top{align-items:flex-start}.row.row-bottom{align-items:flex-end}.row.row-center{align-items:center}.row.row-stretch{align-items:stretch}.row.row-baseline{align-items:baseline}.row .column{display:block;flex:1 1 auto;margin-left:0;max-width:100%;width:100%}.row .column.column-offset-10{margin-left:10%}.row .column.column-offset-20{margin-left:20%}.row .column.column-offset-25{margin-left:25%}.row .column.column-offset-33,.row .column.column-offset-34{margin-left:33.3333%}.row .column.column-offset-40{margin-left:40%}.row .column.column-offset-50{margin-left:50%}.row .column.column-offset-60{margin-left:60%}.row .column.column-offset-66,.row .column.column-offset-67{margin-left:66.6666%}.row .column.column-offset-75{margin-left:75%}.row .column.column-offset-80{margin-left:80%}.row .column.column-offset-90{margin-left:90%}.row .column.column-10{flex:0 0 10%;max-width:10%}.row .column.column-20{flex:0 0 20%;max-width:20%}.row .column.column-25{flex:0 0 25%;max-width:25%}.row .column.column-33,.row .column.column-34{flex:0 0 33.3333%;max-width:33.3333%}.row .column.column-40{flex:0 0 40%;max-width:40%}.row .column.column-50{flex:0 0 50%;max-width:50%}.row .column.column-60{flex:0 0 60%;max-width:60%}.row .column.column-66,.row .column.column-67{flex:0 0 66.6666%;max-width:66.6666%}.row .column.column-75{flex:0 0 75%;max-width:75%}.row .column.column-80{flex:0 0 80%;max-width:80%}.row .column.column-90{flex:0 0 90%;max-width:90%}.row .column .column-top{align-self:flex-start}.row .column .column-bottom{align-self:flex-end}.row .column .column-center{align-self:center}@media (min-width: 40rem){.row{flex-direction:row;margin-left:-1.0rem;width:calc(100% + 2.0rem)}.row .column{margin-bottom:inherit;padding:0 1.0rem}}a{color:#0069d9;text-decoration:none}a:focus,a:hover{color:#606c76}dl,ol,ul{list-style:none;margin-top:0;padding-left:0}dl dl,dl ol,dl ul,ol dl,ol ol,ol ul,ul dl,ul ol,ul ul{font-size:90%;margin:1.5rem 0 1.5rem 3.0rem}ol{list-style:decimal inside}ul{list-style:circle inside}.button,button,dd,dt,li{margin-bottom:1.0rem}fieldset,input,select,textarea{margin-bottom:1.5rem}blockquote,dl,figure,form,ol,p,pre,table,ul{margin-bottom:2.5rem}table{border-spacing:0;display:block;overflow-x:auto;text-align:left;width:100%}td,th{border-bottom:0.1rem solid #e1e1e1;padding:1.2rem 1.5rem}td:first-child,th:first-child{padding-left:0}td:last-child,th:last-child{padding-right:0}@media (min-width: 40rem){table{display:table;overflow-x:initial}}b,strong{font-weight:bold}p{margin-top:0}h1,h2,h3,h4,h5,h6{font-weight:300;letter-spacing:-.1rem;margin-bottom:2.0rem;margin-top:0}h1{font-size:4.6rem;line-height:1.2}h2{font-size:3.6rem;line-height:1.25}h3{font-size:2.8rem;line-height:1.3}h4{font-size:2.2rem;letter-spacing:-.08rem;line-height:1.35}h5{font-size:1.8rem;letter-spacing:-.05rem;line-height:1.5}h6{font-size:1.6rem;letter-spacing:0;line-height:1.4}img{max-width:100%}.clearfix:after{clear:both;content:' ';display:table}.float-left{float:left}.float-right{float:right}
-
-/* General style */
-h1{font-size: 3.6rem; line-height: 1.25}
-h2{font-size: 2.8rem; line-height: 1.3}
-h3{font-size: 2.2rem; letter-spacing: -.08rem; line-height: 1.35}
-h4{font-size: 1.8rem; letter-spacing: -.05rem; line-height: 1.5}
-h5{font-size: 1.6rem; letter-spacing: 0; line-height: 1.4}
-h6{font-size: 1.4rem; letter-spacing: 0; line-height: 1.2}
-pre{padding: 1em;}
-
-.container{
- margin: 0 auto;
- max-width: 80.0rem;
- padding: 0 2.0rem;
- position: relative;
- width: 100%
-}
-select {
- width: auto;
-}
-
-/* Phoenix promo and logo */
-.phx-hero {
- text-align: center;
- border-bottom: 1px solid #e3e3e3;
- background: #eee;
- border-radius: 6px;
- padding: 3em 3em 1em;
- margin-bottom: 3rem;
- font-weight: 200;
- font-size: 120%;
-}
-.phx-hero input {
- background: #ffffff;
-}
-.phx-logo {
- min-width: 300px;
- margin: 1rem;
- display: block;
-}
-.phx-logo img {
- width: auto;
- display: block;
-}
-
-/* Headers */
-header {
- width: 100%;
- background: #fdfdfd;
- border-bottom: 1px solid #eaeaea;
- margin-bottom: 2rem;
-}
-header section {
- align-items: center;
- display: flex;
- flex-direction: column;
- justify-content: space-between;
-}
-header section :first-child {
- order: 2;
-}
-header section :last-child {
- order: 1;
-}
-header nav ul,
-header nav li {
- margin: 0;
- padding: 0;
- display: block;
- text-align: right;
- white-space: nowrap;
-}
-header nav ul {
- margin: 1rem;
- margin-top: 0;
-}
-header nav a {
- display: block;
-}
-
-@media (min-width: 40.0rem) { /* Small devices (landscape phones, 576px and up) */
- header section {
- flex-direction: row;
- }
- header nav ul {
- margin: 1rem;
- }
- .phx-logo {
- flex-basis: 527px;
- margin: 2rem 1rem;
- }
-}
diff --git a/assets/favicon-16x16.png b/assets/favicon-16x16.png
new file mode 100644
index 0000000..8aa122b
Binary files /dev/null and b/assets/favicon-16x16.png differ
diff --git a/assets/favicon-32x32.png b/assets/favicon-32x32.png
new file mode 100644
index 0000000..efdc937
Binary files /dev/null and b/assets/favicon-32x32.png differ
diff --git a/assets/favicon.ico b/assets/favicon.ico
new file mode 100644
index 0000000..bba4309
Binary files /dev/null and b/assets/favicon.ico differ
diff --git a/assets/fonts/Inter-italic.var.woff2 b/assets/fonts/Inter-italic.var.woff2
new file mode 100644
index 0000000..b826d5a
Binary files /dev/null and b/assets/fonts/Inter-italic.var.woff2 differ
diff --git a/assets/js/app.js b/assets/js/app.js
index bf203ba..df0cdd9 100644
--- a/assets/js/app.js
+++ b/assets/js/app.js
@@ -1,6 +1,3 @@
-// We import the CSS which is extracted to its own file by esbuild.
-// Remove this line if you add a your own CSS build pipeline (e.g postcss).
-
// If you want to use Phoenix channels, run `mix help phx.gen.channel`
// to get started and then uncomment the line below.
// import "./user_socket.js"
@@ -30,8 +27,8 @@ let liveSocket = new LiveSocket("/live", Socket, {params: {_csrf_token: csrfToke
// Show progress bar on live navigation and form submits
topbar.config({barColors: {0: "#29d"}, shadowColor: "rgba(0, 0, 0, .3)"})
-window.addEventListener("phx:page-loading-start", info => topbar.show())
-window.addEventListener("phx:page-loading-stop", info => topbar.hide())
+window.addEventListener("phx:page-loading-start", _info => topbar.show(300))
+window.addEventListener("phx:page-loading-stop", _info => topbar.hide())
// connect if there are any LiveViews on the page
liveSocket.connect()
diff --git a/assets/package.json b/assets/package.json
index 0604419..6084dd4 100644
--- a/assets/package.json
+++ b/assets/package.json
@@ -1,11 +1,7 @@
{
"dependencies": {
- "@tailwindcss/typography": "^0.5.2",
- "daisyui": "^2.14.2",
- "tailwindcss": "^3.0.24"
- },
- "devDependencies": {
- "autoprefixer": "^10.4.5",
- "postcss": "^8.4.12"
+ "autoprefixer": "^10.4.14",
+ "daisyui": "^2.51.6",
+ "postcss": "^8.4.23"
}
}
diff --git a/assets/pnpm-lock.yaml b/assets/pnpm-lock.yaml
index f5f7b48..2beba25 100644
--- a/assets/pnpm-lock.yaml
+++ b/assets/pnpm-lock.yaml
@@ -1,23 +1,56 @@
-lockfileVersion: 5.3
+lockfileVersion: 5.4
specifiers:
- '@tailwindcss/typography': ^0.5.2
- autoprefixer: ^10.4.5
- daisyui: ^2.14.2
- postcss: ^8.4.12
- tailwindcss: ^3.0.24
+ autoprefixer: ^10.4.14
+ daisyui: ^2.51.6
+ postcss: ^8.4.23
dependencies:
- '@tailwindcss/typography': 0.5.2_tailwindcss@3.0.24
- daisyui: 2.14.2_c01214db2e04c60602bae73116393d69
- tailwindcss: 3.0.24
-
-devDependencies:
- autoprefixer: 10.4.5_postcss@8.4.12
- postcss: 8.4.12
+ autoprefixer: 10.4.14_postcss@8.4.23
+ daisyui: 2.51.6_zmwpaxxolxfsc5pnrezed2bx24
+ postcss: 8.4.23
packages:
+ /@alloc/quick-lru/5.2.0:
+ resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==}
+ engines: {node: '>=10'}
+ dev: false
+
+ /@jridgewell/gen-mapping/0.3.3:
+ resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
+ engines: {node: '>=6.0.0'}
+ dependencies:
+ '@jridgewell/set-array': 1.1.2
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.18
+ dev: false
+
+ /@jridgewell/resolve-uri/3.1.0:
+ resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/set-array/1.1.2:
+ resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
+ engines: {node: '>=6.0.0'}
+ dev: false
+
+ /@jridgewell/sourcemap-codec/1.4.14:
+ resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==}
+ dev: false
+
+ /@jridgewell/sourcemap-codec/1.4.15:
+ resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ dev: false
+
+ /@jridgewell/trace-mapping/0.3.18:
+ resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==}
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.0
+ '@jridgewell/sourcemap-codec': 1.4.14
+ dev: false
+
/@nodelib/fs.scandir/2.1.5:
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -36,72 +69,57 @@ packages:
engines: {node: '>= 8'}
dependencies:
'@nodelib/fs.scandir': 2.1.5
- fastq: 1.13.0
+ fastq: 1.15.0
dev: false
- /@tailwindcss/typography/0.5.2_tailwindcss@3.0.24:
- resolution: {integrity: sha512-coq8DBABRPFcVhVIk6IbKyyHUt7YTEC/C992tatFB+yEx5WGBQrCgsSFjxHUr8AWXphWckadVJbominEduYBqw==}
- peerDependencies:
- tailwindcss: '>=3.0.0 || >= 3.0.0-alpha.1 || insiders'
- dependencies:
- lodash.castarray: 4.4.0
- lodash.isplainobject: 4.0.6
- lodash.merge: 4.6.2
- tailwindcss: 3.0.24
+ /any-promise/1.3.0:
+ resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==}
dev: false
- /acorn-node/1.8.2:
- resolution: {integrity: sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==}
- dependencies:
- acorn: 7.4.1
- acorn-walk: 7.2.0
- xtend: 4.0.2
- dev: false
-
- /acorn-walk/7.2.0:
- resolution: {integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==}
- engines: {node: '>=0.4.0'}
- dev: false
-
- /acorn/7.4.1:
- resolution: {integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==}
- engines: {node: '>=0.4.0'}
- hasBin: true
- dev: false
-
- /anymatch/3.1.2:
- resolution: {integrity: sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==}
+ /anymatch/3.1.3:
+ resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
dev: false
- /arg/5.0.1:
- resolution: {integrity: sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==}
+ /arg/5.0.2:
+ resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
dev: false
- /autoprefixer/10.4.5_postcss@8.4.12:
- resolution: {integrity: sha512-Fvd8yCoA7lNX/OUllvS+aS1I7WRBclGXsepbvT8ZaPgrH24rgXpZzF0/6Hh3ZEkwg+0AES/Osd196VZmYoEFtw==}
+ /autoprefixer/10.4.14_postcss@8.4.23:
+ resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==}
engines: {node: ^10 || ^12 || >=14}
hasBin: true
peerDependencies:
postcss: ^8.1.0
dependencies:
- browserslist: 4.20.3
- caniuse-lite: 1.0.30001334
+ browserslist: 4.21.5
+ caniuse-lite: 1.0.30001486
fraction.js: 4.2.0
normalize-range: 0.1.2
picocolors: 1.0.0
- postcss: 8.4.12
+ postcss: 8.4.23
postcss-value-parser: 4.2.0
- dev: true
+ dev: false
+
+ /balanced-match/1.0.2:
+ resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
+ dev: false
/binary-extensions/2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: false
+ /brace-expansion/1.1.11:
+ resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==}
+ dependencies:
+ balanced-match: 1.0.2
+ concat-map: 0.0.1
+ dev: false
+
/braces/3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
@@ -109,32 +127,31 @@ packages:
fill-range: 7.0.1
dev: false
- /browserslist/4.20.3:
- resolution: {integrity: sha512-NBhymBQl1zM0Y5dQT/O+xiLP9/rzOIQdKM/eMJBAq7yBgaB6krIYLGejrwVYnSHZdqjscB1SPuAjHwxjvN6Wdg==}
+ /browserslist/4.21.5:
+ resolution: {integrity: sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
dependencies:
- caniuse-lite: 1.0.30001334
- electron-to-chromium: 1.4.124
- escalade: 3.1.1
- node-releases: 2.0.3
- picocolors: 1.0.0
- dev: true
+ caniuse-lite: 1.0.30001486
+ electron-to-chromium: 1.4.388
+ node-releases: 2.0.10
+ update-browserslist-db: 1.0.11_browserslist@4.21.5
+ dev: false
/camelcase-css/2.0.1:
resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==}
engines: {node: '>= 6'}
dev: false
- /caniuse-lite/1.0.30001334:
- resolution: {integrity: sha512-kbaCEBRRVSoeNs74sCuq92MJyGrMtjWVfhltoHUCW4t4pXFvGjUBrfo47weBRViHkiV3eBYyIsfl956NtHGazw==}
- dev: true
+ /caniuse-lite/1.0.30001486:
+ resolution: {integrity: sha512-uv7/gXuHi10Whlj0pp5q/tsK/32J2QSqVRKQhs2j8VsDCjgyruAh/eEXHF822VqO9yT6iZKw3nRwZRSPBE9OQg==}
+ dev: false
/chokidar/3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
- anymatch: 3.1.2
+ anymatch: 3.1.3
braces: 3.0.2
glob-parent: 5.1.2
is-binary-path: 2.1.0
@@ -171,6 +188,15 @@ packages:
color-string: 1.9.1
dev: false
+ /commander/4.1.1:
+ resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /concat-map/0.0.1:
+ resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==}
+ dev: false
+
/css-selector-tokenizer/0.8.0:
resolution: {integrity: sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==}
dependencies:
@@ -184,36 +210,22 @@ packages:
hasBin: true
dev: false
- /daisyui/2.14.2_c01214db2e04c60602bae73116393d69:
- resolution: {integrity: sha512-/FxRBLC/xydIqxv+EJHfmmH+UndrwcaAxbWsS/oVLnoeOdb4MN4VlkJ3sYOYrl3tmw/D1L5Lp0PK07ebY0O6QA==}
+ /daisyui/2.51.6_zmwpaxxolxfsc5pnrezed2bx24:
+ resolution: {integrity: sha512-JRqOKayuFCmWe4X4k6Qvx1y7V/VNao8U5eTSOhusOKIzCsYqf56+TCSe4d7zmqGE0V6JiLDYAT8JeoWUeRKFCw==}
peerDependencies:
autoprefixer: ^10.0.2
postcss: ^8.1.6
dependencies:
- autoprefixer: 10.4.5_postcss@8.4.12
+ autoprefixer: 10.4.14_postcss@8.4.23
color: 4.2.3
css-selector-tokenizer: 0.8.0
- postcss: 8.4.12
- postcss-js: 4.0.0_postcss@8.4.12
- tailwindcss: 3.0.24
+ postcss: 8.4.23
+ postcss-js: 4.0.1_postcss@8.4.23
+ tailwindcss: 3.3.2
transitivePeerDependencies:
- ts-node
dev: false
- /defined/1.0.0:
- resolution: {integrity: sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=}
- dev: false
-
- /detective/5.2.0:
- resolution: {integrity: sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==}
- engines: {node: '>=0.8.0'}
- hasBin: true
- dependencies:
- acorn-node: 1.8.2
- defined: 1.0.0
- minimist: 1.2.6
- dev: false
-
/didyoumean/1.2.2:
resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==}
dev: false
@@ -222,17 +234,17 @@ packages:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
dev: false
- /electron-to-chromium/1.4.124:
- resolution: {integrity: sha512-VhaE9VUYU6d2eIb+4xf83CATD+T+3bTzvxvlADkQE+c2hisiw3sZmvEDtsW704+Zky9WZGhBuQXijDVqSriQLA==}
- dev: true
+ /electron-to-chromium/1.4.388:
+ resolution: {integrity: sha512-xZ0y4zjWZgp65okzwwt00f2rYibkFPHUv9qBz+Vzn8cB9UXIo9Zc6Dw81LJYhhNt0G/vR1OJEfStZ49NKl0YxQ==}
+ dev: false
/escalade/3.1.1:
resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
engines: {node: '>=6'}
- dev: true
+ dev: false
- /fast-glob/3.2.11:
- resolution: {integrity: sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==}
+ /fast-glob/3.2.12:
+ resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==}
engines: {node: '>=8.6.0'}
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -246,8 +258,8 @@ packages:
resolution: {integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==}
dev: false
- /fastq/1.13.0:
- resolution: {integrity: sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==}
+ /fastq/1.15.0:
+ resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
dependencies:
reusify: 1.0.4
dev: false
@@ -261,7 +273,11 @@ packages:
/fraction.js/4.2.0:
resolution: {integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==}
- dev: true
+ dev: false
+
+ /fs.realpath/1.0.0:
+ resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==}
+ dev: false
/fsevents/2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
@@ -289,6 +305,17 @@ packages:
is-glob: 4.0.3
dev: false
+ /glob/7.1.6:
+ resolution: {integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==}
+ dependencies:
+ fs.realpath: 1.0.0
+ inflight: 1.0.6
+ inherits: 2.0.4
+ minimatch: 3.1.2
+ once: 1.4.0
+ path-is-absolute: 1.0.1
+ dev: false
+
/has/1.0.3:
resolution: {integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==}
engines: {node: '>= 0.4.0'}
@@ -296,6 +323,17 @@ packages:
function-bind: 1.1.1
dev: false
+ /inflight/1.0.6:
+ resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==}
+ dependencies:
+ once: 1.4.0
+ wrappy: 1.0.2
+ dev: false
+
+ /inherits/2.0.4:
+ resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
+ dev: false
+
/is-arrayish/0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
dev: false
@@ -307,14 +345,14 @@ packages:
binary-extensions: 2.2.0
dev: false
- /is-core-module/2.9.0:
- resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
+ /is-core-module/2.12.0:
+ resolution: {integrity: sha512-RECHCBCd/viahWmwj6enj19sKbHfJrddi/6cBDsNTKbNq0f7VeaUkBo60BqzvPqo/W54ChS62Z5qyun7cfOMqQ==}
dependencies:
has: 1.0.3
dev: false
/is-extglob/2.1.1:
- resolution: {integrity: sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=}
+ resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: false
@@ -330,21 +368,18 @@ packages:
engines: {node: '>=0.12.0'}
dev: false
- /lilconfig/2.0.5:
- resolution: {integrity: sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==}
+ /jiti/1.18.2:
+ resolution: {integrity: sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==}
+ hasBin: true
+ dev: false
+
+ /lilconfig/2.1.0:
+ resolution: {integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==}
engines: {node: '>=10'}
dev: false
- /lodash.castarray/4.4.0:
- resolution: {integrity: sha1-wCUTUV4wna3dTCTGDP3c9ZdtkRU=}
- dev: false
-
- /lodash.isplainobject/4.0.6:
- resolution: {integrity: sha1-fFJqUtibRcRcxpC4gWO+BJf1UMs=}
- dev: false
-
- /lodash.merge/4.6.2:
- resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==}
+ /lines-and-columns/1.2.4:
+ resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==}
dev: false
/merge2/1.4.1:
@@ -360,18 +395,29 @@ packages:
picomatch: 2.3.1
dev: false
- /minimist/1.2.6:
- resolution: {integrity: sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==}
+ /minimatch/3.1.2:
+ resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==}
+ dependencies:
+ brace-expansion: 1.1.11
dev: false
- /nanoid/3.3.3:
- resolution: {integrity: sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==}
+ /mz/2.7.0:
+ resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==}
+ dependencies:
+ any-promise: 1.3.0
+ object-assign: 4.1.1
+ thenify-all: 1.6.0
+ dev: false
+
+ /nanoid/3.3.6:
+ resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
+ dev: false
- /node-releases/2.0.3:
- resolution: {integrity: sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==}
- dev: true
+ /node-releases/2.0.10:
+ resolution: {integrity: sha512-5GFldHPXVG/YZmFzJvKK2zDSzPKhEp0+ZR5SVaoSag9fsL5YgHbUHDfnG5494ISANDcK4KwPXAx2xqVEydmd7w==}
+ dev: false
/normalize-path/3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
@@ -379,40 +425,79 @@ packages:
dev: false
/normalize-range/0.1.2:
- resolution: {integrity: sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=}
+ resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==}
engines: {node: '>=0.10.0'}
- dev: true
+ dev: false
+
+ /object-assign/4.1.1:
+ resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
/object-hash/3.0.0:
resolution: {integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==}
engines: {node: '>= 6'}
dev: false
+ /once/1.4.0:
+ resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
+ dependencies:
+ wrappy: 1.0.2
+ dev: false
+
+ /path-is-absolute/1.0.1:
+ resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==}
+ engines: {node: '>=0.10.0'}
+ dev: false
+
/path-parse/1.0.7:
resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
dev: false
/picocolors/1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ dev: false
/picomatch/2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: false
- /postcss-js/4.0.0_postcss@8.4.12:
- resolution: {integrity: sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==}
- engines: {node: ^12 || ^14 || >= 16}
- peerDependencies:
- postcss: ^8.3.3
- dependencies:
- camelcase-css: 2.0.1
- postcss: 8.4.12
+ /pify/2.3.0:
+ resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==}
+ engines: {node: '>=0.10.0'}
dev: false
- /postcss-load-config/3.1.4_postcss@8.4.12:
- resolution: {integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==}
- engines: {node: '>= 10'}
+ /pirates/4.0.5:
+ resolution: {integrity: sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==}
+ engines: {node: '>= 6'}
+ dev: false
+
+ /postcss-import/15.1.0_postcss@8.4.23:
+ resolution: {integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ postcss: ^8.0.0
+ dependencies:
+ postcss: 8.4.23
+ postcss-value-parser: 4.2.0
+ read-cache: 1.0.0
+ resolve: 1.22.2
+ dev: false
+
+ /postcss-js/4.0.1_postcss@8.4.23:
+ resolution: {integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==}
+ engines: {node: ^12 || ^14 || >= 16}
+ peerDependencies:
+ postcss: ^8.4.21
+ dependencies:
+ camelcase-css: 2.0.1
+ postcss: 8.4.23
+ dev: false
+
+ /postcss-load-config/4.0.1_postcss@8.4.23:
+ resolution: {integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==}
+ engines: {node: '>= 14'}
peerDependencies:
postcss: '>=8.0.9'
ts-node: '>=9.0.0'
@@ -422,23 +507,23 @@ packages:
ts-node:
optional: true
dependencies:
- lilconfig: 2.0.5
- postcss: 8.4.12
- yaml: 1.10.2
+ lilconfig: 2.1.0
+ postcss: 8.4.23
+ yaml: 2.2.2
dev: false
- /postcss-nested/5.0.6_postcss@8.4.12:
- resolution: {integrity: sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==}
+ /postcss-nested/6.0.1_postcss@8.4.23:
+ resolution: {integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==}
engines: {node: '>=12.0'}
peerDependencies:
postcss: ^8.2.14
dependencies:
- postcss: 8.4.12
- postcss-selector-parser: 6.0.10
+ postcss: 8.4.23
+ postcss-selector-parser: 6.0.12
dev: false
- /postcss-selector-parser/6.0.10:
- resolution: {integrity: sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==}
+ /postcss-selector-parser/6.0.12:
+ resolution: {integrity: sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==}
engines: {node: '>=4'}
dependencies:
cssesc: 3.0.0
@@ -447,22 +532,25 @@ packages:
/postcss-value-parser/4.2.0:
resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==}
+ dev: false
- /postcss/8.4.12:
- resolution: {integrity: sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==}
+ /postcss/8.4.23:
+ resolution: {integrity: sha512-bQ3qMcpF6A/YjR55xtoTr0jGOlnPOKAIMdOWiv0EIT6HVPEaJiJB4NLljSbiHoC2RX7DN5Uvjtpbg1NPdwv1oA==}
engines: {node: ^10 || ^12 || >=14}
dependencies:
- nanoid: 3.3.3
+ nanoid: 3.3.6
picocolors: 1.0.0
source-map-js: 1.0.2
+ dev: false
/queue-microtask/1.2.3:
resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==}
dev: false
- /quick-lru/5.1.1:
- resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==}
- engines: {node: '>=10'}
+ /read-cache/1.0.0:
+ resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==}
+ dependencies:
+ pify: 2.3.0
dev: false
/readdirp/3.6.0:
@@ -472,11 +560,11 @@ packages:
picomatch: 2.3.1
dev: false
- /resolve/1.22.0:
- resolution: {integrity: sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==}
+ /resolve/1.22.2:
+ resolution: {integrity: sha512-Sb+mjNHOULsBv818T40qSPeRiuWLyaGMa5ewydRLFimneixmVy2zdivRl+AF6jaYPC8ERxGDmFSiqui6SfPd+g==}
hasBin: true
dependencies:
- is-core-module: 2.9.0
+ is-core-module: 2.12.0
path-parse: 1.0.7
supports-preserve-symlinks-flag: 1.0.0
dev: false
@@ -493,7 +581,7 @@ packages:
dev: false
/simple-swizzle/0.2.2:
- resolution: {integrity: sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=}
+ resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
dependencies:
is-arrayish: 0.3.2
dev: false
@@ -501,42 +589,72 @@ packages:
/source-map-js/1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
+ dev: false
+
+ /sucrase/3.32.0:
+ resolution: {integrity: sha512-ydQOU34rpSyj2TGyz4D2p8rbktIOZ8QY9s+DGLvFU1i5pWJE8vkpruCjGCMHsdXwnD7JDcS+noSwM/a7zyNFDQ==}
+ engines: {node: '>=8'}
+ hasBin: true
+ dependencies:
+ '@jridgewell/gen-mapping': 0.3.3
+ commander: 4.1.1
+ glob: 7.1.6
+ lines-and-columns: 1.2.4
+ mz: 2.7.0
+ pirates: 4.0.5
+ ts-interface-checker: 0.1.13
+ dev: false
/supports-preserve-symlinks-flag/1.0.0:
resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
engines: {node: '>= 0.4'}
dev: false
- /tailwindcss/3.0.24:
- resolution: {integrity: sha512-H3uMmZNWzG6aqmg9q07ZIRNIawoiEcNFKDfL+YzOPuPsXuDXxJxB9icqzLgdzKNwjG3SAro2h9SYav8ewXNgig==}
- engines: {node: '>=12.13.0'}
+ /tailwindcss/3.3.2:
+ resolution: {integrity: sha512-9jPkMiIBXvPc2KywkraqsUfbfj+dHDb+JPWtSJa9MLFdrPyazI7q6WX2sUrm7R9eVR7qqv3Pas7EvQFzxKnI6w==}
+ engines: {node: '>=14.0.0'}
hasBin: true
dependencies:
- arg: 5.0.1
+ '@alloc/quick-lru': 5.2.0
+ arg: 5.0.2
chokidar: 3.5.3
- color-name: 1.1.4
- detective: 5.2.0
didyoumean: 1.2.2
dlv: 1.1.3
- fast-glob: 3.2.11
+ fast-glob: 3.2.12
glob-parent: 6.0.2
is-glob: 4.0.3
- lilconfig: 2.0.5
+ jiti: 1.18.2
+ lilconfig: 2.1.0
+ micromatch: 4.0.5
normalize-path: 3.0.0
object-hash: 3.0.0
picocolors: 1.0.0
- postcss: 8.4.12
- postcss-js: 4.0.0_postcss@8.4.12
- postcss-load-config: 3.1.4_postcss@8.4.12
- postcss-nested: 5.0.6_postcss@8.4.12
- postcss-selector-parser: 6.0.10
+ postcss: 8.4.23
+ postcss-import: 15.1.0_postcss@8.4.23
+ postcss-js: 4.0.1_postcss@8.4.23
+ postcss-load-config: 4.0.1_postcss@8.4.23
+ postcss-nested: 6.0.1_postcss@8.4.23
+ postcss-selector-parser: 6.0.12
postcss-value-parser: 4.2.0
- quick-lru: 5.1.1
- resolve: 1.22.0
+ resolve: 1.22.2
+ sucrase: 3.32.0
transitivePeerDependencies:
- ts-node
dev: false
+ /thenify-all/1.6.0:
+ resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==}
+ engines: {node: '>=0.8'}
+ dependencies:
+ thenify: 3.3.1
+ dev: false
+
+ /thenify/3.3.1:
+ resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==}
+ dependencies:
+ any-promise: 1.3.0
+ dev: false
+
/to-regex-range/5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
@@ -544,16 +662,30 @@ packages:
is-number: 7.0.0
dev: false
+ /ts-interface-checker/0.1.13:
+ resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==}
+ dev: false
+
+ /update-browserslist-db/1.0.11_browserslist@4.21.5:
+ resolution: {integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==}
+ hasBin: true
+ peerDependencies:
+ browserslist: '>= 4.21.0'
+ dependencies:
+ browserslist: 4.21.5
+ escalade: 3.1.1
+ picocolors: 1.0.0
+ dev: false
+
/util-deprecate/1.0.2:
- resolution: {integrity: sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=}
+ resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
- /xtend/4.0.2:
- resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
- engines: {node: '>=0.4'}
+ /wrappy/1.0.2:
+ resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: false
- /yaml/1.10.2:
- resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
- engines: {node: '>= 6'}
+ /yaml/2.2.2:
+ resolution: {integrity: sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==}
+ engines: {node: '>= 14'}
dev: false
diff --git a/assets/robots.txt b/assets/robots.txt
new file mode 100644
index 0000000..26e06b5
--- /dev/null
+++ b/assets/robots.txt
@@ -0,0 +1,5 @@
+# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+#
+# To ban all spiders from the entire site uncomment the next two lines:
+# User-agent: *
+# Disallow: /
diff --git a/assets/site.webmanifest b/assets/site.webmanifest
new file mode 100644
index 0000000..45dc8a2
--- /dev/null
+++ b/assets/site.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/assets/tailwind.config.js b/assets/tailwind.config.js
index 97b6b50..9588616 100644
--- a/assets/tailwind.config.js
+++ b/assets/tailwind.config.js
@@ -1,37 +1,42 @@
// See the Tailwind configuration guide for advanced usage
// https://tailwindcss.com/docs/configuration
-const theme_colors = {
+
+const plugin = require("tailwindcss/plugin")
+const fs = require("fs")
+const path = require("path")
+
+const homepage_colors = {
transparent: 'transparent',
current: 'currentColor',
- blueViolet: '#540D6E',
- paradisePink: '#ee4266',
+ indigo: '#540D6E',
+ 'red-crayola': '#ee4266',
sunglow: '#ffd23f',
honeydew: '#f3fcf0',
- pineTree: '#1f271b'
+ 'black-olive': '#1f271b',
+ brand: "#540D6E"
}
module.exports = {
content: [
- './js/**/*.js',
- '../lib/*_web.ex',
- '../lib/*_web/**/*.*ex'
+ "./js/**/*.js",
+ "../lib/*_web.ex",
+ "../lib/*_web/**/*.*ex"
],
theme: {
- colors: theme_colors,
extend: {
+ colors: homepage_colors,
fontFamily: {
- mono: ["Input", "monospace"],
- sans: ["Inter", "sans-serif"]
+ sans: ["Inter var", "sans-serif"]
}
},
},
daisyui: {
themes: [{
mytheme: {
- "primary": theme_colors.blueViolet,
- "secondary": theme_colors.paradisePink,
- "accent": theme_colors.sunglow,
- "neutral": theme_colors.pineTree,
+ "primary": homepage_colors.indigo,
+ "secondary": homepage_colors['red-crayola'],
+ "accent": homepage_colors.sunglow,
+ "neutral": homepage_colors['black-olive'],
"base-100": "#fff",
"info": "#79D3E7",
"success": "#20BC5E",
@@ -41,8 +46,50 @@ module.exports = {
}]
},
plugins: [
- require('@tailwindcss/typography'),
- require('@tailwindcss/forms'),
+ require("@tailwindcss/forms"),
require("daisyui"),
+ // Allows prefixing tailwind classes with LiveView classes to add rules
+ // only when LiveView classes are applied, for example:
+ //
+ //
+ //
+ plugin(({addVariant}) => addVariant("phx-no-feedback", [".phx-no-feedback&", ".phx-no-feedback &"])),
+ plugin(({addVariant}) => addVariant("phx-click-loading", [".phx-click-loading&", ".phx-click-loading &"])),
+ plugin(({addVariant}) => addVariant("phx-submit-loading", [".phx-submit-loading&", ".phx-submit-loading &"])),
+ plugin(({addVariant}) => addVariant("phx-change-loading", [".phx-change-loading&", ".phx-change-loading &"])),
+
+ // Embeds Hero Icons (https://heroicons.com) into your app.css bundle
+ // See your `CoreComponents.icon/1` for more information.
+ //
+ plugin(function({matchComponents, theme}) {
+ let iconsDir = path.join(__dirname, "./vendor/heroicons/optimized")
+ let values = {}
+ let icons = [
+ ["", "/24/outline"],
+ ["-solid", "/24/solid"],
+ ["-mini", "/20/solid"]
+ ]
+ icons.forEach(([suffix, dir]) => {
+ fs.readdirSync(path.join(iconsDir, dir)).map(file => {
+ let name = path.basename(file, ".svg") + suffix
+ values[name] = {name, fullPath: path.join(iconsDir, dir, file)}
+ })
+ })
+ matchComponents({
+ "hero": ({name, fullPath}) => {
+ let content = fs.readFileSync(fullPath).toString().replace(/\r?\n|\r/g, "")
+ return {
+ [`--hero-${name}`]: `url('data:image/svg+xml;utf8,${content}')`,
+ "-webkit-mask": `var(--hero-${name})`,
+ "mask": `var(--hero-${name})`,
+ "background-color": "currentColor",
+ "vertical-align": "middle",
+ "display": "inline-block",
+ "width": theme("spacing.5"),
+ "height": theme("spacing.5")
+ }
+ }
+ }, {values})
+ })
]
}
diff --git a/assets/vendor/heroicons/LICENSE.md b/assets/vendor/heroicons/LICENSE.md
new file mode 100644
index 0000000..1ac3e40
--- /dev/null
+++ b/assets/vendor/heroicons/LICENSE.md
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020 Refactoring UI Inc.
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/assets/vendor/heroicons/UPGRADE.md b/assets/vendor/heroicons/UPGRADE.md
new file mode 100644
index 0000000..d8fdb1c
--- /dev/null
+++ b/assets/vendor/heroicons/UPGRADE.md
@@ -0,0 +1,6 @@
+You are running heroicons v2.0.16. To upgrade in place, you can run the following command,
+where your `HERO_VSN` export is your desired version:
+
+ export HERO_VSN="2.0.16" ; \
+ curl -L "https://github.com/tailwindlabs/heroicons/archive/refs/tags/v${HERO_VSN}.tar.gz" | \
+ tar -xv --strip-components=1 heroicons-${HERO_VSN}/optimized
diff --git a/assets/vendor/heroicons/optimized/20/solid/academic-cap.svg b/assets/vendor/heroicons/optimized/20/solid/academic-cap.svg
new file mode 100644
index 0000000..bb980e6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/academic-cap.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/adjustments-horizontal.svg b/assets/vendor/heroicons/optimized/20/solid/adjustments-horizontal.svg
new file mode 100644
index 0000000..13f9251
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/adjustments-vertical.svg b/assets/vendor/heroicons/optimized/20/solid/adjustments-vertical.svg
new file mode 100644
index 0000000..6f75b6c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/archive-box-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/archive-box-arrow-down.svg
new file mode 100644
index 0000000..5ccef9d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/archive-box-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/archive-box-x-mark.svg b/assets/vendor/heroicons/optimized/20/solid/archive-box-x-mark.svg
new file mode 100644
index 0000000..73acbef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/archive-box-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/archive-box.svg b/assets/vendor/heroicons/optimized/20/solid/archive-box.svg
new file mode 100644
index 0000000..2205ae8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/archive-box.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-circle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-circle.svg
new file mode 100644
index 0000000..bb21a89
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-left.svg
new file mode 100644
index 0000000..f0c3624
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square-stack.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..d9c4db0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square.svg
new file mode 100644
index 0000000..4e8ee0f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-right.svg
new file mode 100644
index 0000000..65cdada
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down-tray.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down-tray.svg
new file mode 100644
index 0000000..5c3589d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-down.svg
new file mode 100644
index 0000000..8d577b1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-left-circle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-left-circle.svg
new file mode 100644
index 0000000..8cce243
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-left-circle.svg
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-left-on-rectangle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..74d0699
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-left-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-left.svg
new file mode 100644
index 0000000..c7efd30
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-long-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-long-down.svg
new file mode 100644
index 0000000..d263061
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-long-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-long-left.svg
new file mode 100644
index 0000000..297553c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-long-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-long-right.svg
new file mode 100644
index 0000000..eea945e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-long-up.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-long-up.svg
new file mode 100644
index 0000000..193ff97
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-path-rounded-square.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-path-rounded-square.svg
new file mode 100644
index 0000000..7d3deb5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-path.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-path.svg
new file mode 100644
index 0000000..1a31b4c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-right-circle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-right-circle.svg
new file mode 100644
index 0000000..4178da9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-right-on-rectangle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..27c4dff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-right-on-rectangle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-right.svg
new file mode 100644
index 0000000..95cc517
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-small-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-small-down.svg
new file mode 100644
index 0000000..b986c6c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-small-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-small-left.svg
new file mode 100644
index 0000000..0cb7e71
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-small-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-small-right.svg
new file mode 100644
index 0000000..16beb5e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-small-up.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-small-up.svg
new file mode 100644
index 0000000..7fda0e5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-top-right-on-square.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-top-right-on-square.svg
new file mode 100644
index 0000000..c93df54
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-top-right-on-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-trending-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-trending-down.svg
new file mode 100644
index 0000000..5ec7c03
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-trending-up.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-trending-up.svg
new file mode 100644
index 0000000..67af2cc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-circle.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-circle.svg
new file mode 100644
index 0000000..21d87f2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-left.svg
new file mode 100644
index 0000000..fb50038
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square-stack.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..0df0ed2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square.svg
new file mode 100644
index 0000000..01f18a8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-right.svg
new file mode 100644
index 0000000..4841916
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up-tray.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up-tray.svg
new file mode 100644
index 0000000..832afe5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up-tray.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-up.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-up.svg
new file mode 100644
index 0000000..24b12b7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-down.svg
new file mode 100644
index 0000000..6839676
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-left.svg
new file mode 100644
index 0000000..6691aa4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-right.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-right.svg
new file mode 100644
index 0000000..9a6e23b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-up.svg b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-up.svg
new file mode 100644
index 0000000..8e65bf8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-in.svg b/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-in.svg
new file mode 100644
index 0000000..6275807
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-out.svg b/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-out.svg
new file mode 100644
index 0000000..14e1bcd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrows-right-left.svg b/assets/vendor/heroicons/optimized/20/solid/arrows-right-left.svg
new file mode 100644
index 0000000..87616d3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/arrows-up-down.svg b/assets/vendor/heroicons/optimized/20/solid/arrows-up-down.svg
new file mode 100644
index 0000000..b9c43d9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/at-symbol.svg b/assets/vendor/heroicons/optimized/20/solid/at-symbol.svg
new file mode 100644
index 0000000..a9e960d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/backspace.svg b/assets/vendor/heroicons/optimized/20/solid/backspace.svg
new file mode 100644
index 0000000..d3c1686
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/backward.svg b/assets/vendor/heroicons/optimized/20/solid/backward.svg
new file mode 100644
index 0000000..8d341b2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/banknotes.svg b/assets/vendor/heroicons/optimized/20/solid/banknotes.svg
new file mode 100644
index 0000000..979c586
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/banknotes.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-2.svg b/assets/vendor/heroicons/optimized/20/solid/bars-2.svg
new file mode 100644
index 0000000..4ce1e19
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-left.svg b/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-left.svg
new file mode 100644
index 0000000..ebf785d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-right.svg b/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-right.svg
new file mode 100644
index 0000000..af69c3d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-3-center-left.svg b/assets/vendor/heroicons/optimized/20/solid/bars-3-center-left.svg
new file mode 100644
index 0000000..ee8a526
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-3.svg b/assets/vendor/heroicons/optimized/20/solid/bars-3.svg
new file mode 100644
index 0000000..d164cfd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-4.svg b/assets/vendor/heroicons/optimized/20/solid/bars-4.svg
new file mode 100644
index 0000000..8e3f650
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/bars-arrow-down.svg
new file mode 100644
index 0000000..fd8f98d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bars-arrow-up.svg b/assets/vendor/heroicons/optimized/20/solid/bars-arrow-up.svg
new file mode 100644
index 0000000..ba77dbe
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/battery-0.svg b/assets/vendor/heroicons/optimized/20/solid/battery-0.svg
new file mode 100644
index 0000000..2320f7e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/battery-100.svg b/assets/vendor/heroicons/optimized/20/solid/battery-100.svg
new file mode 100644
index 0000000..e04408f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/battery-100.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/battery-50.svg b/assets/vendor/heroicons/optimized/20/solid/battery-50.svg
new file mode 100644
index 0000000..e5e8498
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/battery-50.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/beaker.svg b/assets/vendor/heroicons/optimized/20/solid/beaker.svg
new file mode 100644
index 0000000..025c46b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bell-alert.svg b/assets/vendor/heroicons/optimized/20/solid/bell-alert.svg
new file mode 100644
index 0000000..c84dc7c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bell-alert.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bell-slash.svg b/assets/vendor/heroicons/optimized/20/solid/bell-slash.svg
new file mode 100644
index 0000000..a4296ac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bell-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bell-snooze.svg b/assets/vendor/heroicons/optimized/20/solid/bell-snooze.svg
new file mode 100644
index 0000000..ad4f8c5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bell.svg b/assets/vendor/heroicons/optimized/20/solid/bell.svg
new file mode 100644
index 0000000..2a81bba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bolt-slash.svg b/assets/vendor/heroicons/optimized/20/solid/bolt-slash.svg
new file mode 100644
index 0000000..e4c2499
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bolt-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bolt.svg b/assets/vendor/heroicons/optimized/20/solid/bolt.svg
new file mode 100644
index 0000000..53f4fb9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/book-open.svg b/assets/vendor/heroicons/optimized/20/solid/book-open.svg
new file mode 100644
index 0000000..99cf0d4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bookmark-slash.svg b/assets/vendor/heroicons/optimized/20/solid/bookmark-slash.svg
new file mode 100644
index 0000000..1442fd4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bookmark-square.svg b/assets/vendor/heroicons/optimized/20/solid/bookmark-square.svg
new file mode 100644
index 0000000..849c425
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bookmark.svg b/assets/vendor/heroicons/optimized/20/solid/bookmark.svg
new file mode 100644
index 0000000..a3e68de
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/briefcase.svg b/assets/vendor/heroicons/optimized/20/solid/briefcase.svg
new file mode 100644
index 0000000..275f4b3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/briefcase.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/bug-ant.svg b/assets/vendor/heroicons/optimized/20/solid/bug-ant.svg
new file mode 100644
index 0000000..bc86615
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/building-library.svg b/assets/vendor/heroicons/optimized/20/solid/building-library.svg
new file mode 100644
index 0000000..610bce7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/building-library.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/building-office-2.svg b/assets/vendor/heroicons/optimized/20/solid/building-office-2.svg
new file mode 100644
index 0000000..b25c33d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/building-office.svg b/assets/vendor/heroicons/optimized/20/solid/building-office.svg
new file mode 100644
index 0000000..8fb3fab
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/building-storefront.svg b/assets/vendor/heroicons/optimized/20/solid/building-storefront.svg
new file mode 100644
index 0000000..0d7da7c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/building-storefront.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cake.svg b/assets/vendor/heroicons/optimized/20/solid/cake.svg
new file mode 100644
index 0000000..c58d3b9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/calculator.svg b/assets/vendor/heroicons/optimized/20/solid/calculator.svg
new file mode 100644
index 0000000..cc26160
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/calendar-days.svg b/assets/vendor/heroicons/optimized/20/solid/calendar-days.svg
new file mode 100644
index 0000000..ded2318
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/calendar-days.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/calendar.svg b/assets/vendor/heroicons/optimized/20/solid/calendar.svg
new file mode 100644
index 0000000..dea374d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/camera.svg b/assets/vendor/heroicons/optimized/20/solid/camera.svg
new file mode 100644
index 0000000..17356ae
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chart-bar-square.svg b/assets/vendor/heroicons/optimized/20/solid/chart-bar-square.svg
new file mode 100644
index 0000000..6d5b976
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chart-bar.svg b/assets/vendor/heroicons/optimized/20/solid/chart-bar.svg
new file mode 100644
index 0000000..c496112
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chart-pie.svg b/assets/vendor/heroicons/optimized/20/solid/chart-pie.svg
new file mode 100644
index 0000000..37d18c9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center-text.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..fee91be
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..24de840
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-ellipsis.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..7e2b06c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-right.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-right.svg
new file mode 100644
index 0000000..fceca7f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left.svg
new file mode 100644
index 0000000..cd706f9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left-ellipsis.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..88d9c32
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left.svg b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left.svg
new file mode 100644
index 0000000..f3b3883
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/check-badge.svg b/assets/vendor/heroicons/optimized/20/solid/check-badge.svg
new file mode 100644
index 0000000..b13190c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/check-circle.svg b/assets/vendor/heroicons/optimized/20/solid/check-circle.svg
new file mode 100644
index 0000000..dbbc905
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/check.svg b/assets/vendor/heroicons/optimized/20/solid/check.svg
new file mode 100644
index 0000000..d1956aa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-double-down.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-double-down.svg
new file mode 100644
index 0000000..3c65193
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-double-left.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-double-left.svg
new file mode 100644
index 0000000..a41e615
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-double-right.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-double-right.svg
new file mode 100644
index 0000000..d78c932
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-double-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-double-up.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-double-up.svg
new file mode 100644
index 0000000..f7ac668
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-double-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-down.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-down.svg
new file mode 100644
index 0000000..6b63dfb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-left.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-left.svg
new file mode 100644
index 0000000..b484a40
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-right.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-right.svg
new file mode 100644
index 0000000..9ce3745
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-up-down.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-up-down.svg
new file mode 100644
index 0000000..2499bb1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/chevron-up.svg b/assets/vendor/heroicons/optimized/20/solid/chevron-up.svg
new file mode 100644
index 0000000..8aaaa1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/circle-stack.svg b/assets/vendor/heroicons/optimized/20/solid/circle-stack.svg
new file mode 100644
index 0000000..fae2090
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/circle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/clipboard-document-check.svg b/assets/vendor/heroicons/optimized/20/solid/clipboard-document-check.svg
new file mode 100644
index 0000000..2447012
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/clipboard-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/clipboard-document-list.svg b/assets/vendor/heroicons/optimized/20/solid/clipboard-document-list.svg
new file mode 100644
index 0000000..a78b24c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/clipboard-document-list.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/clipboard-document.svg b/assets/vendor/heroicons/optimized/20/solid/clipboard-document.svg
new file mode 100644
index 0000000..f29a433
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/clipboard-document.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/clipboard.svg b/assets/vendor/heroicons/optimized/20/solid/clipboard.svg
new file mode 100644
index 0000000..3b2a7ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/clock.svg b/assets/vendor/heroicons/optimized/20/solid/clock.svg
new file mode 100644
index 0000000..d72dd62
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-down.svg
new file mode 100644
index 0000000..cb32c04
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-up.svg b/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-up.svg
new file mode 100644
index 0000000..06b2c4a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cloud.svg b/assets/vendor/heroicons/optimized/20/solid/cloud.svg
new file mode 100644
index 0000000..c5eb0c8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/code-bracket-square.svg b/assets/vendor/heroicons/optimized/20/solid/code-bracket-square.svg
new file mode 100644
index 0000000..e4e3530
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/code-bracket.svg b/assets/vendor/heroicons/optimized/20/solid/code-bracket.svg
new file mode 100644
index 0000000..4adfd32
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cog-6-tooth.svg b/assets/vendor/heroicons/optimized/20/solid/cog-6-tooth.svg
new file mode 100644
index 0000000..435032f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cog-6-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cog-8-tooth.svg b/assets/vendor/heroicons/optimized/20/solid/cog-8-tooth.svg
new file mode 100644
index 0000000..0450feb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cog-8-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cog.svg b/assets/vendor/heroicons/optimized/20/solid/cog.svg
new file mode 100644
index 0000000..10f43b5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cog.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/command-line.svg b/assets/vendor/heroicons/optimized/20/solid/command-line.svg
new file mode 100644
index 0000000..59cf34c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/computer-desktop.svg b/assets/vendor/heroicons/optimized/20/solid/computer-desktop.svg
new file mode 100644
index 0000000..4eeac1b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cpu-chip.svg b/assets/vendor/heroicons/optimized/20/solid/cpu-chip.svg
new file mode 100644
index 0000000..f7c49b4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cpu-chip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/credit-card.svg b/assets/vendor/heroicons/optimized/20/solid/credit-card.svg
new file mode 100644
index 0000000..d650fea
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/credit-card.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cube-transparent.svg b/assets/vendor/heroicons/optimized/20/solid/cube-transparent.svg
new file mode 100644
index 0000000..bfe9dae
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cube.svg b/assets/vendor/heroicons/optimized/20/solid/cube.svg
new file mode 100644
index 0000000..c3436ed
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-bangladeshi.svg b/assets/vendor/heroicons/optimized/20/solid/currency-bangladeshi.svg
new file mode 100644
index 0000000..2a27260
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-dollar.svg b/assets/vendor/heroicons/optimized/20/solid/currency-dollar.svg
new file mode 100644
index 0000000..1b00de7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-euro.svg b/assets/vendor/heroicons/optimized/20/solid/currency-euro.svg
new file mode 100644
index 0000000..43fda8e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-pound.svg b/assets/vendor/heroicons/optimized/20/solid/currency-pound.svg
new file mode 100644
index 0000000..9bc57fe
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-rupee.svg b/assets/vendor/heroicons/optimized/20/solid/currency-rupee.svg
new file mode 100644
index 0000000..67da528
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/currency-yen.svg b/assets/vendor/heroicons/optimized/20/solid/currency-yen.svg
new file mode 100644
index 0000000..68fca06
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-rays.svg b/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-rays.svg
new file mode 100644
index 0000000..d2d36a7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-ripple.svg b/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-ripple.svg
new file mode 100644
index 0000000..89ccfda
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/cursor-arrow-ripple.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/device-phone-mobile.svg b/assets/vendor/heroicons/optimized/20/solid/device-phone-mobile.svg
new file mode 100644
index 0000000..68fac4f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/device-phone-mobile.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/device-tablet.svg b/assets/vendor/heroicons/optimized/20/solid/device-tablet.svg
new file mode 100644
index 0000000..2490e1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/device-tablet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/document-arrow-down.svg
new file mode 100644
index 0000000..a51461d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-arrow-up.svg b/assets/vendor/heroicons/optimized/20/solid/document-arrow-up.svg
new file mode 100644
index 0000000..d55aacd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-chart-bar.svg b/assets/vendor/heroicons/optimized/20/solid/document-chart-bar.svg
new file mode 100644
index 0000000..8d5f60a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-check.svg b/assets/vendor/heroicons/optimized/20/solid/document-check.svg
new file mode 100644
index 0000000..b28da14
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-duplicate.svg b/assets/vendor/heroicons/optimized/20/solid/document-duplicate.svg
new file mode 100644
index 0000000..64768cf
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-duplicate.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-magnifying-glass.svg b/assets/vendor/heroicons/optimized/20/solid/document-magnifying-glass.svg
new file mode 100644
index 0000000..0dc8eba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-magnifying-glass.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-minus.svg b/assets/vendor/heroicons/optimized/20/solid/document-minus.svg
new file mode 100644
index 0000000..bf7af06
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-plus.svg b/assets/vendor/heroicons/optimized/20/solid/document-plus.svg
new file mode 100644
index 0000000..133cc82
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document-text.svg b/assets/vendor/heroicons/optimized/20/solid/document-text.svg
new file mode 100644
index 0000000..f7d91ba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/document.svg b/assets/vendor/heroicons/optimized/20/solid/document.svg
new file mode 100644
index 0000000..aa7070c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal-circle.svg b/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..799cf88
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal.svg b/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal.svg
new file mode 100644
index 0000000..a82211c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/ellipsis-vertical.svg b/assets/vendor/heroicons/optimized/20/solid/ellipsis-vertical.svg
new file mode 100644
index 0000000..ac9c83f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/envelope-open.svg b/assets/vendor/heroicons/optimized/20/solid/envelope-open.svg
new file mode 100644
index 0000000..a60035b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/envelope-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/envelope.svg b/assets/vendor/heroicons/optimized/20/solid/envelope.svg
new file mode 100644
index 0000000..b582b8f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/envelope.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/exclamation-circle.svg b/assets/vendor/heroicons/optimized/20/solid/exclamation-circle.svg
new file mode 100644
index 0000000..3cf5b59
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/exclamation-triangle.svg b/assets/vendor/heroicons/optimized/20/solid/exclamation-triangle.svg
new file mode 100644
index 0000000..a6cc02f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/eye-dropper.svg b/assets/vendor/heroicons/optimized/20/solid/eye-dropper.svg
new file mode 100644
index 0000000..cce0833
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/eye-slash.svg b/assets/vendor/heroicons/optimized/20/solid/eye-slash.svg
new file mode 100644
index 0000000..cc2e222
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/eye-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/eye.svg b/assets/vendor/heroicons/optimized/20/solid/eye.svg
new file mode 100644
index 0000000..b17cec9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/face-frown.svg b/assets/vendor/heroicons/optimized/20/solid/face-frown.svg
new file mode 100644
index 0000000..8cbb3b3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/face-smile.svg b/assets/vendor/heroicons/optimized/20/solid/face-smile.svg
new file mode 100644
index 0000000..434c83e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/film.svg b/assets/vendor/heroicons/optimized/20/solid/film.svg
new file mode 100644
index 0000000..9573445
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/finger-print.svg b/assets/vendor/heroicons/optimized/20/solid/finger-print.svg
new file mode 100644
index 0000000..409d67e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/fire.svg b/assets/vendor/heroicons/optimized/20/solid/fire.svg
new file mode 100644
index 0000000..88fb85e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/fire.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/flag.svg b/assets/vendor/heroicons/optimized/20/solid/flag.svg
new file mode 100644
index 0000000..b790f05
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/folder-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/folder-arrow-down.svg
new file mode 100644
index 0000000..4c2a915
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/folder-minus.svg b/assets/vendor/heroicons/optimized/20/solid/folder-minus.svg
new file mode 100644
index 0000000..248388b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/folder-open.svg b/assets/vendor/heroicons/optimized/20/solid/folder-open.svg
new file mode 100644
index 0000000..79d245e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/folder-plus.svg b/assets/vendor/heroicons/optimized/20/solid/folder-plus.svg
new file mode 100644
index 0000000..0780a54
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/folder.svg b/assets/vendor/heroicons/optimized/20/solid/folder.svg
new file mode 100644
index 0000000..c92e0ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/forward.svg b/assets/vendor/heroicons/optimized/20/solid/forward.svg
new file mode 100644
index 0000000..11fd161
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/funnel.svg b/assets/vendor/heroicons/optimized/20/solid/funnel.svg
new file mode 100644
index 0000000..af3078f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/gif.svg b/assets/vendor/heroicons/optimized/20/solid/gif.svg
new file mode 100644
index 0000000..ff1cd38
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/gift-top.svg b/assets/vendor/heroicons/optimized/20/solid/gift-top.svg
new file mode 100644
index 0000000..d650d04
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/gift-top.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/gift.svg b/assets/vendor/heroicons/optimized/20/solid/gift.svg
new file mode 100644
index 0000000..90362ab
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/gift.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/globe-alt.svg b/assets/vendor/heroicons/optimized/20/solid/globe-alt.svg
new file mode 100644
index 0000000..c8ff599
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/globe-americas.svg b/assets/vendor/heroicons/optimized/20/solid/globe-americas.svg
new file mode 100644
index 0000000..7de8723
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/globe-asia-australia.svg b/assets/vendor/heroicons/optimized/20/solid/globe-asia-australia.svg
new file mode 100644
index 0000000..b3da4dd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/globe-asia-australia.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/globe-europe-africa.svg b/assets/vendor/heroicons/optimized/20/solid/globe-europe-africa.svg
new file mode 100644
index 0000000..92db1e1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/hand-raised.svg b/assets/vendor/heroicons/optimized/20/solid/hand-raised.svg
new file mode 100644
index 0000000..caa27db
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/hand-thumb-down.svg b/assets/vendor/heroicons/optimized/20/solid/hand-thumb-down.svg
new file mode 100644
index 0000000..06ffbe0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/hand-thumb-up.svg b/assets/vendor/heroicons/optimized/20/solid/hand-thumb-up.svg
new file mode 100644
index 0000000..3d67d98
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/hashtag.svg b/assets/vendor/heroicons/optimized/20/solid/hashtag.svg
new file mode 100644
index 0000000..29c9f10
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/heart.svg b/assets/vendor/heroicons/optimized/20/solid/heart.svg
new file mode 100644
index 0000000..96e63d9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/home-modern.svg b/assets/vendor/heroicons/optimized/20/solid/home-modern.svg
new file mode 100644
index 0000000..95033a3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/home-modern.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/home.svg b/assets/vendor/heroicons/optimized/20/solid/home.svg
new file mode 100644
index 0000000..ae2acdc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/home.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/identification.svg b/assets/vendor/heroicons/optimized/20/solid/identification.svg
new file mode 100644
index 0000000..7a8338c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/inbox-arrow-down.svg b/assets/vendor/heroicons/optimized/20/solid/inbox-arrow-down.svg
new file mode 100644
index 0000000..37f464e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/inbox-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/inbox-stack.svg b/assets/vendor/heroicons/optimized/20/solid/inbox-stack.svg
new file mode 100644
index 0000000..b8f22d1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/inbox-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/inbox.svg b/assets/vendor/heroicons/optimized/20/solid/inbox.svg
new file mode 100644
index 0000000..87ae30d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/information-circle.svg b/assets/vendor/heroicons/optimized/20/solid/information-circle.svg
new file mode 100644
index 0000000..25ac644
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/key.svg b/assets/vendor/heroicons/optimized/20/solid/key.svg
new file mode 100644
index 0000000..97e8ad8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/language.svg b/assets/vendor/heroicons/optimized/20/solid/language.svg
new file mode 100644
index 0000000..e7524be
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/language.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/lifebuoy.svg b/assets/vendor/heroicons/optimized/20/solid/lifebuoy.svg
new file mode 100644
index 0000000..79134c1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/light-bulb.svg b/assets/vendor/heroicons/optimized/20/solid/light-bulb.svg
new file mode 100644
index 0000000..415e374
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/light-bulb.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/link.svg b/assets/vendor/heroicons/optimized/20/solid/link.svg
new file mode 100644
index 0000000..e820413
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/link.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/list-bullet.svg b/assets/vendor/heroicons/optimized/20/solid/list-bullet.svg
new file mode 100644
index 0000000..3637934
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/lock-closed.svg b/assets/vendor/heroicons/optimized/20/solid/lock-closed.svg
new file mode 100644
index 0000000..e7e1dc1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/lock-open.svg b/assets/vendor/heroicons/optimized/20/solid/lock-open.svg
new file mode 100644
index 0000000..2ac4b14
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-circle.svg b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-circle.svg
new file mode 100644
index 0000000..e025769
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-minus.svg b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-minus.svg
new file mode 100644
index 0000000..a8fb7a2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-minus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-plus.svg b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-plus.svg
new file mode 100644
index 0000000..e55fc4c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass-plus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/magnifying-glass.svg b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass.svg
new file mode 100644
index 0000000..d90520a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/map-pin.svg b/assets/vendor/heroicons/optimized/20/solid/map-pin.svg
new file mode 100644
index 0000000..7adc8a9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/map-pin.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/map.svg b/assets/vendor/heroicons/optimized/20/solid/map.svg
new file mode 100644
index 0000000..7e25c7b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/megaphone.svg b/assets/vendor/heroicons/optimized/20/solid/megaphone.svg
new file mode 100644
index 0000000..cf73785
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/microphone.svg b/assets/vendor/heroicons/optimized/20/solid/microphone.svg
new file mode 100644
index 0000000..635ded0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/microphone.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/minus-circle.svg b/assets/vendor/heroicons/optimized/20/solid/minus-circle.svg
new file mode 100644
index 0000000..5c361e2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/minus-small.svg b/assets/vendor/heroicons/optimized/20/solid/minus-small.svg
new file mode 100644
index 0000000..4e041d3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/minus.svg b/assets/vendor/heroicons/optimized/20/solid/minus.svg
new file mode 100644
index 0000000..6d8dd24
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/moon.svg b/assets/vendor/heroicons/optimized/20/solid/moon.svg
new file mode 100644
index 0000000..b592110
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/musical-note.svg b/assets/vendor/heroicons/optimized/20/solid/musical-note.svg
new file mode 100644
index 0000000..c7f0aa8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/newspaper.svg b/assets/vendor/heroicons/optimized/20/solid/newspaper.svg
new file mode 100644
index 0000000..be785e3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/newspaper.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/no-symbol.svg b/assets/vendor/heroicons/optimized/20/solid/no-symbol.svg
new file mode 100644
index 0000000..8463da2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/paint-brush.svg b/assets/vendor/heroicons/optimized/20/solid/paint-brush.svg
new file mode 100644
index 0000000..c2db8c0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/paper-airplane.svg b/assets/vendor/heroicons/optimized/20/solid/paper-airplane.svg
new file mode 100644
index 0000000..35315ad
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/paper-clip.svg b/assets/vendor/heroicons/optimized/20/solid/paper-clip.svg
new file mode 100644
index 0000000..b38155e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/pause-circle.svg b/assets/vendor/heroicons/optimized/20/solid/pause-circle.svg
new file mode 100644
index 0000000..732530a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/pause.svg b/assets/vendor/heroicons/optimized/20/solid/pause.svg
new file mode 100644
index 0000000..b6544ba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/pencil-square.svg b/assets/vendor/heroicons/optimized/20/solid/pencil-square.svg
new file mode 100644
index 0000000..129ee44
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/pencil-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/pencil.svg b/assets/vendor/heroicons/optimized/20/solid/pencil.svg
new file mode 100644
index 0000000..fa50498
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/phone-arrow-down-left.svg b/assets/vendor/heroicons/optimized/20/solid/phone-arrow-down-left.svg
new file mode 100644
index 0000000..feeb636
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/phone-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/phone-arrow-up-right.svg b/assets/vendor/heroicons/optimized/20/solid/phone-arrow-up-right.svg
new file mode 100644
index 0000000..e1d9331
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/phone-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/phone-x-mark.svg b/assets/vendor/heroicons/optimized/20/solid/phone-x-mark.svg
new file mode 100644
index 0000000..6f1fd36
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/phone.svg b/assets/vendor/heroicons/optimized/20/solid/phone.svg
new file mode 100644
index 0000000..5fd57fc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/photo.svg b/assets/vendor/heroicons/optimized/20/solid/photo.svg
new file mode 100644
index 0000000..db063d3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/play-circle.svg b/assets/vendor/heroicons/optimized/20/solid/play-circle.svg
new file mode 100644
index 0000000..d1587b7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/play-pause.svg b/assets/vendor/heroicons/optimized/20/solid/play-pause.svg
new file mode 100644
index 0000000..cdfa63b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/play.svg b/assets/vendor/heroicons/optimized/20/solid/play.svg
new file mode 100644
index 0000000..2cd53e1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/plus-circle.svg b/assets/vendor/heroicons/optimized/20/solid/plus-circle.svg
new file mode 100644
index 0000000..3925a14
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/plus-small.svg b/assets/vendor/heroicons/optimized/20/solid/plus-small.svg
new file mode 100644
index 0000000..eb22598
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/plus.svg b/assets/vendor/heroicons/optimized/20/solid/plus.svg
new file mode 100644
index 0000000..218ab93
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/power.svg b/assets/vendor/heroicons/optimized/20/solid/power.svg
new file mode 100644
index 0000000..1603820
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/presentation-chart-bar.svg b/assets/vendor/heroicons/optimized/20/solid/presentation-chart-bar.svg
new file mode 100644
index 0000000..e1a4242
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/presentation-chart-line.svg b/assets/vendor/heroicons/optimized/20/solid/presentation-chart-line.svg
new file mode 100644
index 0000000..2e9281f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/printer.svg b/assets/vendor/heroicons/optimized/20/solid/printer.svg
new file mode 100644
index 0000000..81d93dc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/puzzle-piece.svg b/assets/vendor/heroicons/optimized/20/solid/puzzle-piece.svg
new file mode 100644
index 0000000..e5329e5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/qr-code.svg b/assets/vendor/heroicons/optimized/20/solid/qr-code.svg
new file mode 100644
index 0000000..d5daf2a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/qr-code.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/question-mark-circle.svg b/assets/vendor/heroicons/optimized/20/solid/question-mark-circle.svg
new file mode 100644
index 0000000..893dab5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/queue-list.svg b/assets/vendor/heroicons/optimized/20/solid/queue-list.svg
new file mode 100644
index 0000000..91f5b57
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/radio.svg b/assets/vendor/heroicons/optimized/20/solid/radio.svg
new file mode 100644
index 0000000..9a12c8b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/receipt-percent.svg b/assets/vendor/heroicons/optimized/20/solid/receipt-percent.svg
new file mode 100644
index 0000000..1a8f254
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/receipt-refund.svg b/assets/vendor/heroicons/optimized/20/solid/receipt-refund.svg
new file mode 100644
index 0000000..a134c56
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/rectangle-group.svg b/assets/vendor/heroicons/optimized/20/solid/rectangle-group.svg
new file mode 100644
index 0000000..599d5f4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/rectangle-stack.svg b/assets/vendor/heroicons/optimized/20/solid/rectangle-stack.svg
new file mode 100644
index 0000000..94b5654
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/rocket-launch.svg b/assets/vendor/heroicons/optimized/20/solid/rocket-launch.svg
new file mode 100644
index 0000000..b97e89e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/rocket-launch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/rss.svg b/assets/vendor/heroicons/optimized/20/solid/rss.svg
new file mode 100644
index 0000000..538ae9a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/rss.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/scale.svg b/assets/vendor/heroicons/optimized/20/solid/scale.svg
new file mode 100644
index 0000000..60b0ed9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/scissors.svg b/assets/vendor/heroicons/optimized/20/solid/scissors.svg
new file mode 100644
index 0000000..3122658
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/scissors.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/server-stack.svg b/assets/vendor/heroicons/optimized/20/solid/server-stack.svg
new file mode 100644
index 0000000..2247dbe
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/server-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/server.svg b/assets/vendor/heroicons/optimized/20/solid/server.svg
new file mode 100644
index 0000000..6c8899b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/server.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/share.svg b/assets/vendor/heroicons/optimized/20/solid/share.svg
new file mode 100644
index 0000000..e5aafee
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/shield-check.svg b/assets/vendor/heroicons/optimized/20/solid/shield-check.svg
new file mode 100644
index 0000000..a8572d4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/shield-exclamation.svg b/assets/vendor/heroicons/optimized/20/solid/shield-exclamation.svg
new file mode 100644
index 0000000..8562de4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/shopping-bag.svg b/assets/vendor/heroicons/optimized/20/solid/shopping-bag.svg
new file mode 100644
index 0000000..e70c815
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/shopping-cart.svg b/assets/vendor/heroicons/optimized/20/solid/shopping-cart.svg
new file mode 100644
index 0000000..855a631
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/signal-slash.svg b/assets/vendor/heroicons/optimized/20/solid/signal-slash.svg
new file mode 100644
index 0000000..822179a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/signal.svg b/assets/vendor/heroicons/optimized/20/solid/signal.svg
new file mode 100644
index 0000000..7539204
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/signal.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/sparkles.svg b/assets/vendor/heroicons/optimized/20/solid/sparkles.svg
new file mode 100644
index 0000000..a247c94
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/speaker-wave.svg b/assets/vendor/heroicons/optimized/20/solid/speaker-wave.svg
new file mode 100644
index 0000000..2e6b3e0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/speaker-wave.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/speaker-x-mark.svg b/assets/vendor/heroicons/optimized/20/solid/speaker-x-mark.svg
new file mode 100644
index 0000000..0c39f61
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/square-2-stack.svg b/assets/vendor/heroicons/optimized/20/solid/square-2-stack.svg
new file mode 100644
index 0000000..177d43a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/square-2-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/square-3-stack-3d.svg b/assets/vendor/heroicons/optimized/20/solid/square-3-stack-3d.svg
new file mode 100644
index 0000000..7d6b44f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/square-3-stack-3d.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/squares-2x2.svg b/assets/vendor/heroicons/optimized/20/solid/squares-2x2.svg
new file mode 100644
index 0000000..47c1817
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/squares-plus.svg b/assets/vendor/heroicons/optimized/20/solid/squares-plus.svg
new file mode 100644
index 0000000..019eb37
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/star.svg b/assets/vendor/heroicons/optimized/20/solid/star.svg
new file mode 100644
index 0000000..a870365
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/stop-circle.svg b/assets/vendor/heroicons/optimized/20/solid/stop-circle.svg
new file mode 100644
index 0000000..9167a64
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/stop-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/stop.svg b/assets/vendor/heroicons/optimized/20/solid/stop.svg
new file mode 100644
index 0000000..b0e40db
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/sun.svg b/assets/vendor/heroicons/optimized/20/solid/sun.svg
new file mode 100644
index 0000000..449e36c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/swatch.svg b/assets/vendor/heroicons/optimized/20/solid/swatch.svg
new file mode 100644
index 0000000..1089548
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/swatch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/table-cells.svg b/assets/vendor/heroicons/optimized/20/solid/table-cells.svg
new file mode 100644
index 0000000..aa8eacd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/tag.svg b/assets/vendor/heroicons/optimized/20/solid/tag.svg
new file mode 100644
index 0000000..d6c9c8b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/ticket.svg b/assets/vendor/heroicons/optimized/20/solid/ticket.svg
new file mode 100644
index 0000000..7d04b01
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/trash.svg b/assets/vendor/heroicons/optimized/20/solid/trash.svg
new file mode 100644
index 0000000..16bd5c6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/trophy.svg b/assets/vendor/heroicons/optimized/20/solid/trophy.svg
new file mode 100644
index 0000000..e2ebdaf
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/truck.svg b/assets/vendor/heroicons/optimized/20/solid/truck.svg
new file mode 100644
index 0000000..a50085a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/truck.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/tv.svg b/assets/vendor/heroicons/optimized/20/solid/tv.svg
new file mode 100644
index 0000000..b0c7209
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/tv.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/user-circle.svg b/assets/vendor/heroicons/optimized/20/solid/user-circle.svg
new file mode 100644
index 0000000..abd6c98
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/user-group.svg b/assets/vendor/heroicons/optimized/20/solid/user-group.svg
new file mode 100644
index 0000000..dc83736
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/user-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/user-minus.svg b/assets/vendor/heroicons/optimized/20/solid/user-minus.svg
new file mode 100644
index 0000000..b092b77
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/user-plus.svg b/assets/vendor/heroicons/optimized/20/solid/user-plus.svg
new file mode 100644
index 0000000..afd5965
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/user.svg b/assets/vendor/heroicons/optimized/20/solid/user.svg
new file mode 100644
index 0000000..4d9b2ee
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/users.svg b/assets/vendor/heroicons/optimized/20/solid/users.svg
new file mode 100644
index 0000000..43526a6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/variable.svg b/assets/vendor/heroicons/optimized/20/solid/variable.svg
new file mode 100644
index 0000000..3460817
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/video-camera-slash.svg b/assets/vendor/heroicons/optimized/20/solid/video-camera-slash.svg
new file mode 100644
index 0000000..95b9413
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/video-camera.svg b/assets/vendor/heroicons/optimized/20/solid/video-camera.svg
new file mode 100644
index 0000000..4d22f16
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/view-columns.svg b/assets/vendor/heroicons/optimized/20/solid/view-columns.svg
new file mode 100644
index 0000000..1111492
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/viewfinder-circle.svg b/assets/vendor/heroicons/optimized/20/solid/viewfinder-circle.svg
new file mode 100644
index 0000000..5cfe9fb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/wallet.svg b/assets/vendor/heroicons/optimized/20/solid/wallet.svg
new file mode 100644
index 0000000..6ce8050
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/wifi.svg b/assets/vendor/heroicons/optimized/20/solid/wifi.svg
new file mode 100644
index 0000000..f3c7118
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/window.svg b/assets/vendor/heroicons/optimized/20/solid/window.svg
new file mode 100644
index 0000000..9110a2b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/wrench-screwdriver.svg b/assets/vendor/heroicons/optimized/20/solid/wrench-screwdriver.svg
new file mode 100644
index 0000000..2ad879f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/wrench-screwdriver.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/wrench.svg b/assets/vendor/heroicons/optimized/20/solid/wrench.svg
new file mode 100644
index 0000000..2643e00
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/wrench.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/x-circle.svg b/assets/vendor/heroicons/optimized/20/solid/x-circle.svg
new file mode 100644
index 0000000..a660014
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/20/solid/x-mark.svg b/assets/vendor/heroicons/optimized/20/solid/x-mark.svg
new file mode 100644
index 0000000..0635bac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/20/solid/x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/academic-cap.svg b/assets/vendor/heroicons/optimized/24/outline/academic-cap.svg
new file mode 100644
index 0000000..fc18107
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/academic-cap.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/adjustments-horizontal.svg b/assets/vendor/heroicons/optimized/24/outline/adjustments-horizontal.svg
new file mode 100644
index 0000000..e859e5d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/adjustments-vertical.svg b/assets/vendor/heroicons/optimized/24/outline/adjustments-vertical.svg
new file mode 100644
index 0000000..6153809
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/archive-box-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/archive-box-arrow-down.svg
new file mode 100644
index 0000000..1a0a830
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/archive-box-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/archive-box-x-mark.svg b/assets/vendor/heroicons/optimized/24/outline/archive-box-x-mark.svg
new file mode 100644
index 0000000..49bd087
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/archive-box-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/archive-box.svg b/assets/vendor/heroicons/optimized/24/outline/archive-box.svg
new file mode 100644
index 0000000..704f353
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/archive-box.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-circle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-circle.svg
new file mode 100644
index 0000000..248b0e8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-left.svg
new file mode 100644
index 0000000..262b5ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square-stack.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..42a5b84
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square.svg
new file mode 100644
index 0000000..da1b827
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-right.svg
new file mode 100644
index 0000000..9cc7a30
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down-tray.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down-tray.svg
new file mode 100644
index 0000000..a77546c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-down.svg
new file mode 100644
index 0000000..b5b04fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-left-circle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-left-circle.svg
new file mode 100644
index 0000000..849cc5f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-left-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-left-on-rectangle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..0d6a3cc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-left-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-left.svg
new file mode 100644
index 0000000..49f15d4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-long-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-long-down.svg
new file mode 100644
index 0000000..eb7a92b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-long-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-long-left.svg
new file mode 100644
index 0000000..d3e9005
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-long-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-long-right.svg
new file mode 100644
index 0000000..413d6b5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-long-up.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-long-up.svg
new file mode 100644
index 0000000..fb029f4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-path-rounded-square.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-path-rounded-square.svg
new file mode 100644
index 0000000..0cfe39e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-path.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-path.svg
new file mode 100644
index 0000000..7da4fd2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-right-circle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-right-circle.svg
new file mode 100644
index 0000000..e7bcb80
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-right-on-rectangle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..2b49bec
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-right-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-right.svg
new file mode 100644
index 0000000..8527a52
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-small-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-small-down.svg
new file mode 100644
index 0000000..1f1a210
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-small-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-small-left.svg
new file mode 100644
index 0000000..778cb17
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-small-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-small-right.svg
new file mode 100644
index 0000000..1b5fc64
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-small-up.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-small-up.svg
new file mode 100644
index 0000000..4ed197e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-top-right-on-square.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-top-right-on-square.svg
new file mode 100644
index 0000000..c4a9239
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-top-right-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-trending-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-trending-down.svg
new file mode 100644
index 0000000..aebbb18
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-trending-up.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-trending-up.svg
new file mode 100644
index 0000000..868f3d3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-circle.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-circle.svg
new file mode 100644
index 0000000..51340d6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-left.svg
new file mode 100644
index 0000000..ba4e54e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square-stack.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..0d4d823
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square.svg
new file mode 100644
index 0000000..2c38ea0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-right.svg
new file mode 100644
index 0000000..0b7a372
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up-tray.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up-tray.svg
new file mode 100644
index 0000000..448b853
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-up.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-up.svg
new file mode 100644
index 0000000..e269624
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-down.svg
new file mode 100644
index 0000000..51f9929
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-left.svg
new file mode 100644
index 0000000..b8f240e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-right.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-right.svg
new file mode 100644
index 0000000..ece5091
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-up.svg b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-up.svg
new file mode 100644
index 0000000..b76c54b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-in.svg b/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-in.svg
new file mode 100644
index 0000000..0a8872d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-out.svg b/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-out.svg
new file mode 100644
index 0000000..936ac45
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrows-right-left.svg b/assets/vendor/heroicons/optimized/24/outline/arrows-right-left.svg
new file mode 100644
index 0000000..18890f3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/arrows-up-down.svg b/assets/vendor/heroicons/optimized/24/outline/arrows-up-down.svg
new file mode 100644
index 0000000..da4cdf3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/at-symbol.svg b/assets/vendor/heroicons/optimized/24/outline/at-symbol.svg
new file mode 100644
index 0000000..fe2f644
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/backspace.svg b/assets/vendor/heroicons/optimized/24/outline/backspace.svg
new file mode 100644
index 0000000..f76c5df
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/backward.svg b/assets/vendor/heroicons/optimized/24/outline/backward.svg
new file mode 100644
index 0000000..fb1da49
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/banknotes.svg b/assets/vendor/heroicons/optimized/24/outline/banknotes.svg
new file mode 100644
index 0000000..0603b0d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/banknotes.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-2.svg b/assets/vendor/heroicons/optimized/24/outline/bars-2.svg
new file mode 100644
index 0000000..9c49ca2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-left.svg b/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-left.svg
new file mode 100644
index 0000000..e23bbc3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-right.svg b/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-right.svg
new file mode 100644
index 0000000..a0f683d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-3-center-left.svg b/assets/vendor/heroicons/optimized/24/outline/bars-3-center-left.svg
new file mode 100644
index 0000000..a8e83e1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-3.svg b/assets/vendor/heroicons/optimized/24/outline/bars-3.svg
new file mode 100644
index 0000000..a7cf320
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-4.svg b/assets/vendor/heroicons/optimized/24/outline/bars-4.svg
new file mode 100644
index 0000000..f34bddf
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/bars-arrow-down.svg
new file mode 100644
index 0000000..200fd3a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bars-arrow-up.svg b/assets/vendor/heroicons/optimized/24/outline/bars-arrow-up.svg
new file mode 100644
index 0000000..d88bf4e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/battery-0.svg b/assets/vendor/heroicons/optimized/24/outline/battery-0.svg
new file mode 100644
index 0000000..fd2aa9d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/battery-100.svg b/assets/vendor/heroicons/optimized/24/outline/battery-100.svg
new file mode 100644
index 0000000..ba012c6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/battery-100.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/battery-50.svg b/assets/vendor/heroicons/optimized/24/outline/battery-50.svg
new file mode 100644
index 0000000..f6f9838
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/battery-50.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/beaker.svg b/assets/vendor/heroicons/optimized/24/outline/beaker.svg
new file mode 100644
index 0000000..2d143fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bell-alert.svg b/assets/vendor/heroicons/optimized/24/outline/bell-alert.svg
new file mode 100644
index 0000000..c4af427
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bell-alert.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bell-slash.svg b/assets/vendor/heroicons/optimized/24/outline/bell-slash.svg
new file mode 100644
index 0000000..2df7520
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bell-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bell-snooze.svg b/assets/vendor/heroicons/optimized/24/outline/bell-snooze.svg
new file mode 100644
index 0000000..117de29
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bell.svg b/assets/vendor/heroicons/optimized/24/outline/bell.svg
new file mode 100644
index 0000000..63ab153
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bolt-slash.svg b/assets/vendor/heroicons/optimized/24/outline/bolt-slash.svg
new file mode 100644
index 0000000..13af346
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bolt-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bolt.svg b/assets/vendor/heroicons/optimized/24/outline/bolt.svg
new file mode 100644
index 0000000..5e629fe
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/book-open.svg b/assets/vendor/heroicons/optimized/24/outline/book-open.svg
new file mode 100644
index 0000000..a4153b6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bookmark-slash.svg b/assets/vendor/heroicons/optimized/24/outline/bookmark-slash.svg
new file mode 100644
index 0000000..f3ae625
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bookmark-square.svg b/assets/vendor/heroicons/optimized/24/outline/bookmark-square.svg
new file mode 100644
index 0000000..00e5cc3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bookmark.svg b/assets/vendor/heroicons/optimized/24/outline/bookmark.svg
new file mode 100644
index 0000000..6d06e4f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/briefcase.svg b/assets/vendor/heroicons/optimized/24/outline/briefcase.svg
new file mode 100644
index 0000000..adab6ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/briefcase.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/bug-ant.svg b/assets/vendor/heroicons/optimized/24/outline/bug-ant.svg
new file mode 100644
index 0000000..ac04fad
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/building-library.svg b/assets/vendor/heroicons/optimized/24/outline/building-library.svg
new file mode 100644
index 0000000..4e2e1da
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/building-library.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/building-office-2.svg b/assets/vendor/heroicons/optimized/24/outline/building-office-2.svg
new file mode 100644
index 0000000..45e063c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/building-office.svg b/assets/vendor/heroicons/optimized/24/outline/building-office.svg
new file mode 100644
index 0000000..0efd982
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/building-storefront.svg b/assets/vendor/heroicons/optimized/24/outline/building-storefront.svg
new file mode 100644
index 0000000..31fca55
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/building-storefront.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cake.svg b/assets/vendor/heroicons/optimized/24/outline/cake.svg
new file mode 100644
index 0000000..a603e90
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/calculator.svg b/assets/vendor/heroicons/optimized/24/outline/calculator.svg
new file mode 100644
index 0000000..d97740e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/calendar-days.svg b/assets/vendor/heroicons/optimized/24/outline/calendar-days.svg
new file mode 100644
index 0000000..64b5f8f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/calendar-days.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/calendar.svg b/assets/vendor/heroicons/optimized/24/outline/calendar.svg
new file mode 100644
index 0000000..5e44911
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/camera.svg b/assets/vendor/heroicons/optimized/24/outline/camera.svg
new file mode 100644
index 0000000..b8bdae3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/camera.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chart-bar-square.svg b/assets/vendor/heroicons/optimized/24/outline/chart-bar-square.svg
new file mode 100644
index 0000000..d7fa42c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chart-bar.svg b/assets/vendor/heroicons/optimized/24/outline/chart-bar.svg
new file mode 100644
index 0000000..27f20fa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chart-pie.svg b/assets/vendor/heroicons/optimized/24/outline/chart-pie.svg
new file mode 100644
index 0000000..fa51c16
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center-text.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..4bc306e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..d59d02a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-ellipsis.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..9a0ec73
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-right.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-right.svg
new file mode 100644
index 0000000..4d366b8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left.svg
new file mode 100644
index 0000000..a41bf1e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left-ellipsis.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..83d1751
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left.svg b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left.svg
new file mode 100644
index 0000000..d0d0d89
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/check-badge.svg b/assets/vendor/heroicons/optimized/24/outline/check-badge.svg
new file mode 100644
index 0000000..8d6b79a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/check-circle.svg b/assets/vendor/heroicons/optimized/24/outline/check-circle.svg
new file mode 100644
index 0000000..d4471d6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/check.svg b/assets/vendor/heroicons/optimized/24/outline/check.svg
new file mode 100644
index 0000000..7644e30
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-double-down.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-double-down.svg
new file mode 100644
index 0000000..d7e9370
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-double-left.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-double-left.svg
new file mode 100644
index 0000000..95834af
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-double-right.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-double-right.svg
new file mode 100644
index 0000000..37a809d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-double-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-double-up.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-double-up.svg
new file mode 100644
index 0000000..5182691
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-double-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-down.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-down.svg
new file mode 100644
index 0000000..b38efa5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-left.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-left.svg
new file mode 100644
index 0000000..73fe99a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-right.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-right.svg
new file mode 100644
index 0000000..1e31bfd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-up-down.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-up-down.svg
new file mode 100644
index 0000000..27b1d4f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/chevron-up.svg b/assets/vendor/heroicons/optimized/24/outline/chevron-up.svg
new file mode 100644
index 0000000..713a6f1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/circle-stack.svg b/assets/vendor/heroicons/optimized/24/outline/circle-stack.svg
new file mode 100644
index 0000000..b8fb769
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/circle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/clipboard-document-check.svg b/assets/vendor/heroicons/optimized/24/outline/clipboard-document-check.svg
new file mode 100644
index 0000000..7bb03a1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/clipboard-document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/clipboard-document-list.svg b/assets/vendor/heroicons/optimized/24/outline/clipboard-document-list.svg
new file mode 100644
index 0000000..4670777
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/clipboard-document-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/clipboard-document.svg b/assets/vendor/heroicons/optimized/24/outline/clipboard-document.svg
new file mode 100644
index 0000000..783a333
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/clipboard-document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/clipboard.svg b/assets/vendor/heroicons/optimized/24/outline/clipboard.svg
new file mode 100644
index 0000000..ad9b943
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/clock.svg b/assets/vendor/heroicons/optimized/24/outline/clock.svg
new file mode 100644
index 0000000..337196c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-down.svg
new file mode 100644
index 0000000..7074791
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-up.svg b/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-up.svg
new file mode 100644
index 0000000..8b45081
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cloud.svg b/assets/vendor/heroicons/optimized/24/outline/cloud.svg
new file mode 100644
index 0000000..55fd725
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/code-bracket-square.svg b/assets/vendor/heroicons/optimized/24/outline/code-bracket-square.svg
new file mode 100644
index 0000000..8308024
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/code-bracket.svg b/assets/vendor/heroicons/optimized/24/outline/code-bracket.svg
new file mode 100644
index 0000000..3361add
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cog-6-tooth.svg b/assets/vendor/heroicons/optimized/24/outline/cog-6-tooth.svg
new file mode 100644
index 0000000..d585645
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cog-6-tooth.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cog-8-tooth.svg b/assets/vendor/heroicons/optimized/24/outline/cog-8-tooth.svg
new file mode 100644
index 0000000..28f85f4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cog-8-tooth.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cog.svg b/assets/vendor/heroicons/optimized/24/outline/cog.svg
new file mode 100644
index 0000000..f2bad9f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cog.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/command-line.svg b/assets/vendor/heroicons/optimized/24/outline/command-line.svg
new file mode 100644
index 0000000..baaf362
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/computer-desktop.svg b/assets/vendor/heroicons/optimized/24/outline/computer-desktop.svg
new file mode 100644
index 0000000..fb9a6e0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cpu-chip.svg b/assets/vendor/heroicons/optimized/24/outline/cpu-chip.svg
new file mode 100644
index 0000000..cabc435
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cpu-chip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/credit-card.svg b/assets/vendor/heroicons/optimized/24/outline/credit-card.svg
new file mode 100644
index 0000000..3c0c917
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/credit-card.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cube-transparent.svg b/assets/vendor/heroicons/optimized/24/outline/cube-transparent.svg
new file mode 100644
index 0000000..5a8adac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cube.svg b/assets/vendor/heroicons/optimized/24/outline/cube.svg
new file mode 100644
index 0000000..70b0091
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-bangladeshi.svg b/assets/vendor/heroicons/optimized/24/outline/currency-bangladeshi.svg
new file mode 100644
index 0000000..7f2fca3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-dollar.svg b/assets/vendor/heroicons/optimized/24/outline/currency-dollar.svg
new file mode 100644
index 0000000..d376f4c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-dollar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-euro.svg b/assets/vendor/heroicons/optimized/24/outline/currency-euro.svg
new file mode 100644
index 0000000..8b9dd2e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-pound.svg b/assets/vendor/heroicons/optimized/24/outline/currency-pound.svg
new file mode 100644
index 0000000..8e7c52d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-rupee.svg b/assets/vendor/heroicons/optimized/24/outline/currency-rupee.svg
new file mode 100644
index 0000000..078bf05
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/currency-yen.svg b/assets/vendor/heroicons/optimized/24/outline/currency-yen.svg
new file mode 100644
index 0000000..254011a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-rays.svg b/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-rays.svg
new file mode 100644
index 0000000..c29d0fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-ripple.svg b/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-ripple.svg
new file mode 100644
index 0000000..500a04c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/cursor-arrow-ripple.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/device-phone-mobile.svg b/assets/vendor/heroicons/optimized/24/outline/device-phone-mobile.svg
new file mode 100644
index 0000000..1caf911
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/device-phone-mobile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/device-tablet.svg b/assets/vendor/heroicons/optimized/24/outline/device-tablet.svg
new file mode 100644
index 0000000..7090ecb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/device-tablet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/document-arrow-down.svg
new file mode 100644
index 0000000..04f6e65
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-arrow-up.svg b/assets/vendor/heroicons/optimized/24/outline/document-arrow-up.svg
new file mode 100644
index 0000000..c0ca80f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-chart-bar.svg b/assets/vendor/heroicons/optimized/24/outline/document-chart-bar.svg
new file mode 100644
index 0000000..2ffa3fe
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-check.svg b/assets/vendor/heroicons/optimized/24/outline/document-check.svg
new file mode 100644
index 0000000..5ea7d9c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-duplicate.svg b/assets/vendor/heroicons/optimized/24/outline/document-duplicate.svg
new file mode 100644
index 0000000..acc6464
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-duplicate.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-magnifying-glass.svg b/assets/vendor/heroicons/optimized/24/outline/document-magnifying-glass.svg
new file mode 100644
index 0000000..f94eff6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-minus.svg b/assets/vendor/heroicons/optimized/24/outline/document-minus.svg
new file mode 100644
index 0000000..173cb1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-plus.svg b/assets/vendor/heroicons/optimized/24/outline/document-plus.svg
new file mode 100644
index 0000000..9ec31ad
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document-text.svg b/assets/vendor/heroicons/optimized/24/outline/document-text.svg
new file mode 100644
index 0000000..cd77136
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/document.svg b/assets/vendor/heroicons/optimized/24/outline/document.svg
new file mode 100644
index 0000000..863a8aa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/document.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal-circle.svg b/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..09aac53
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal.svg b/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal.svg
new file mode 100644
index 0000000..7541be5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/ellipsis-vertical.svg b/assets/vendor/heroicons/optimized/24/outline/ellipsis-vertical.svg
new file mode 100644
index 0000000..4676cf3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/envelope-open.svg b/assets/vendor/heroicons/optimized/24/outline/envelope-open.svg
new file mode 100644
index 0000000..ff9dccd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/envelope-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/envelope.svg b/assets/vendor/heroicons/optimized/24/outline/envelope.svg
new file mode 100644
index 0000000..ae8ff72
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/envelope.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/exclamation-circle.svg b/assets/vendor/heroicons/optimized/24/outline/exclamation-circle.svg
new file mode 100644
index 0000000..25ef36f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/exclamation-triangle.svg b/assets/vendor/heroicons/optimized/24/outline/exclamation-triangle.svg
new file mode 100644
index 0000000..c9742f1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/eye-dropper.svg b/assets/vendor/heroicons/optimized/24/outline/eye-dropper.svg
new file mode 100644
index 0000000..c7263e1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/eye-slash.svg b/assets/vendor/heroicons/optimized/24/outline/eye-slash.svg
new file mode 100644
index 0000000..072c9f2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/eye-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/eye.svg b/assets/vendor/heroicons/optimized/24/outline/eye.svg
new file mode 100644
index 0000000..2a54d63
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/face-frown.svg b/assets/vendor/heroicons/optimized/24/outline/face-frown.svg
new file mode 100644
index 0000000..ba0cab3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/face-smile.svg b/assets/vendor/heroicons/optimized/24/outline/face-smile.svg
new file mode 100644
index 0000000..5246524
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/film.svg b/assets/vendor/heroicons/optimized/24/outline/film.svg
new file mode 100644
index 0000000..d76e594
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/finger-print.svg b/assets/vendor/heroicons/optimized/24/outline/finger-print.svg
new file mode 100644
index 0000000..0c1eeb2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/fire.svg b/assets/vendor/heroicons/optimized/24/outline/fire.svg
new file mode 100644
index 0000000..54c9748
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/fire.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/flag.svg b/assets/vendor/heroicons/optimized/24/outline/flag.svg
new file mode 100644
index 0000000..dff4126
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/folder-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/folder-arrow-down.svg
new file mode 100644
index 0000000..96290cd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/folder-minus.svg b/assets/vendor/heroicons/optimized/24/outline/folder-minus.svg
new file mode 100644
index 0000000..824cb0e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/folder-open.svg b/assets/vendor/heroicons/optimized/24/outline/folder-open.svg
new file mode 100644
index 0000000..0721502
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/folder-plus.svg b/assets/vendor/heroicons/optimized/24/outline/folder-plus.svg
new file mode 100644
index 0000000..3df62d2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/folder.svg b/assets/vendor/heroicons/optimized/24/outline/folder.svg
new file mode 100644
index 0000000..3054819
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/forward.svg b/assets/vendor/heroicons/optimized/24/outline/forward.svg
new file mode 100644
index 0000000..cc80dc9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/funnel.svg b/assets/vendor/heroicons/optimized/24/outline/funnel.svg
new file mode 100644
index 0000000..338fa52
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/gif.svg b/assets/vendor/heroicons/optimized/24/outline/gif.svg
new file mode 100644
index 0000000..ba8a186
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/gift-top.svg b/assets/vendor/heroicons/optimized/24/outline/gift-top.svg
new file mode 100644
index 0000000..055b6d2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/gift-top.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/gift.svg b/assets/vendor/heroicons/optimized/24/outline/gift.svg
new file mode 100644
index 0000000..5445815
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/gift.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/globe-alt.svg b/assets/vendor/heroicons/optimized/24/outline/globe-alt.svg
new file mode 100644
index 0000000..a605be0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/globe-americas.svg b/assets/vendor/heroicons/optimized/24/outline/globe-americas.svg
new file mode 100644
index 0000000..5d1a5cb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/globe-asia-australia.svg b/assets/vendor/heroicons/optimized/24/outline/globe-asia-australia.svg
new file mode 100644
index 0000000..f4898fa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/globe-asia-australia.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/globe-europe-africa.svg b/assets/vendor/heroicons/optimized/24/outline/globe-europe-africa.svg
new file mode 100644
index 0000000..c8f797d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/hand-raised.svg b/assets/vendor/heroicons/optimized/24/outline/hand-raised.svg
new file mode 100644
index 0000000..859f1ab
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/hand-thumb-down.svg b/assets/vendor/heroicons/optimized/24/outline/hand-thumb-down.svg
new file mode 100644
index 0000000..c588a53
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/hand-thumb-up.svg b/assets/vendor/heroicons/optimized/24/outline/hand-thumb-up.svg
new file mode 100644
index 0000000..66ca9c3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/hashtag.svg b/assets/vendor/heroicons/optimized/24/outline/hashtag.svg
new file mode 100644
index 0000000..3ae1060
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/heart.svg b/assets/vendor/heroicons/optimized/24/outline/heart.svg
new file mode 100644
index 0000000..1084768
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/home-modern.svg b/assets/vendor/heroicons/optimized/24/outline/home-modern.svg
new file mode 100644
index 0000000..20f4e2c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/home-modern.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/home.svg b/assets/vendor/heroicons/optimized/24/outline/home.svg
new file mode 100644
index 0000000..9543375
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/home.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/identification.svg b/assets/vendor/heroicons/optimized/24/outline/identification.svg
new file mode 100644
index 0000000..bfd302a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/inbox-arrow-down.svg b/assets/vendor/heroicons/optimized/24/outline/inbox-arrow-down.svg
new file mode 100644
index 0000000..db6ebda
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/inbox-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/inbox-stack.svg b/assets/vendor/heroicons/optimized/24/outline/inbox-stack.svg
new file mode 100644
index 0000000..6c1e55c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/inbox-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/inbox.svg b/assets/vendor/heroicons/optimized/24/outline/inbox.svg
new file mode 100644
index 0000000..56b35cb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/information-circle.svg b/assets/vendor/heroicons/optimized/24/outline/information-circle.svg
new file mode 100644
index 0000000..c7fa9d7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/key.svg b/assets/vendor/heroicons/optimized/24/outline/key.svg
new file mode 100644
index 0000000..e9684cd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/language.svg b/assets/vendor/heroicons/optimized/24/outline/language.svg
new file mode 100644
index 0000000..0c606ef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/lifebuoy.svg b/assets/vendor/heroicons/optimized/24/outline/lifebuoy.svg
new file mode 100644
index 0000000..1660e99
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/light-bulb.svg b/assets/vendor/heroicons/optimized/24/outline/light-bulb.svg
new file mode 100644
index 0000000..e3f2d9a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/light-bulb.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/link.svg b/assets/vendor/heroicons/optimized/24/outline/link.svg
new file mode 100644
index 0000000..916a703
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/link.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/list-bullet.svg b/assets/vendor/heroicons/optimized/24/outline/list-bullet.svg
new file mode 100644
index 0000000..1474573
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/lock-closed.svg b/assets/vendor/heroicons/optimized/24/outline/lock-closed.svg
new file mode 100644
index 0000000..08b23c9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/lock-open.svg b/assets/vendor/heroicons/optimized/24/outline/lock-open.svg
new file mode 100644
index 0000000..c5595dd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-circle.svg b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-circle.svg
new file mode 100644
index 0000000..e71f8bf
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-minus.svg b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-minus.svg
new file mode 100644
index 0000000..6bd11c1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-plus.svg b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-plus.svg
new file mode 100644
index 0000000..5dab7de
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/magnifying-glass.svg b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass.svg
new file mode 100644
index 0000000..7cff88f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/map-pin.svg b/assets/vendor/heroicons/optimized/24/outline/map-pin.svg
new file mode 100644
index 0000000..1f272f4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/map-pin.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/map.svg b/assets/vendor/heroicons/optimized/24/outline/map.svg
new file mode 100644
index 0000000..f96c988
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/megaphone.svg b/assets/vendor/heroicons/optimized/24/outline/megaphone.svg
new file mode 100644
index 0000000..ec19508
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/microphone.svg b/assets/vendor/heroicons/optimized/24/outline/microphone.svg
new file mode 100644
index 0000000..670b34f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/microphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/minus-circle.svg b/assets/vendor/heroicons/optimized/24/outline/minus-circle.svg
new file mode 100644
index 0000000..b9630fc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/minus-small.svg b/assets/vendor/heroicons/optimized/24/outline/minus-small.svg
new file mode 100644
index 0000000..3e1a8b7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/minus.svg b/assets/vendor/heroicons/optimized/24/outline/minus.svg
new file mode 100644
index 0000000..781994c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/moon.svg b/assets/vendor/heroicons/optimized/24/outline/moon.svg
new file mode 100644
index 0000000..91501fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/musical-note.svg b/assets/vendor/heroicons/optimized/24/outline/musical-note.svg
new file mode 100644
index 0000000..c0667fc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/newspaper.svg b/assets/vendor/heroicons/optimized/24/outline/newspaper.svg
new file mode 100644
index 0000000..0a4ac57
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/newspaper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/no-symbol.svg b/assets/vendor/heroicons/optimized/24/outline/no-symbol.svg
new file mode 100644
index 0000000..19b0bd0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/paint-brush.svg b/assets/vendor/heroicons/optimized/24/outline/paint-brush.svg
new file mode 100644
index 0000000..b66098f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/paper-airplane.svg b/assets/vendor/heroicons/optimized/24/outline/paper-airplane.svg
new file mode 100644
index 0000000..32da43e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/paper-clip.svg b/assets/vendor/heroicons/optimized/24/outline/paper-clip.svg
new file mode 100644
index 0000000..1d78d81
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/pause-circle.svg b/assets/vendor/heroicons/optimized/24/outline/pause-circle.svg
new file mode 100644
index 0000000..a9a9e93
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/pause.svg b/assets/vendor/heroicons/optimized/24/outline/pause.svg
new file mode 100644
index 0000000..9843f7b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/pencil-square.svg b/assets/vendor/heroicons/optimized/24/outline/pencil-square.svg
new file mode 100644
index 0000000..3de435b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/pencil-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/pencil.svg b/assets/vendor/heroicons/optimized/24/outline/pencil.svg
new file mode 100644
index 0000000..0c8759a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/phone-arrow-down-left.svg b/assets/vendor/heroicons/optimized/24/outline/phone-arrow-down-left.svg
new file mode 100644
index 0000000..b1b2e61
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/phone-arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/phone-arrow-up-right.svg b/assets/vendor/heroicons/optimized/24/outline/phone-arrow-up-right.svg
new file mode 100644
index 0000000..faaf659
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/phone-arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/phone-x-mark.svg b/assets/vendor/heroicons/optimized/24/outline/phone-x-mark.svg
new file mode 100644
index 0000000..0b8de6d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/phone.svg b/assets/vendor/heroicons/optimized/24/outline/phone.svg
new file mode 100644
index 0000000..6f73149
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/photo.svg b/assets/vendor/heroicons/optimized/24/outline/photo.svg
new file mode 100644
index 0000000..6982a11
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/play-circle.svg b/assets/vendor/heroicons/optimized/24/outline/play-circle.svg
new file mode 100644
index 0000000..3a2fa63
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/play-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/play-pause.svg b/assets/vendor/heroicons/optimized/24/outline/play-pause.svg
new file mode 100644
index 0000000..4ce4e55
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/play.svg b/assets/vendor/heroicons/optimized/24/outline/play.svg
new file mode 100644
index 0000000..c0ae6de
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/plus-circle.svg b/assets/vendor/heroicons/optimized/24/outline/plus-circle.svg
new file mode 100644
index 0000000..4da4d1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/plus-small.svg b/assets/vendor/heroicons/optimized/24/outline/plus-small.svg
new file mode 100644
index 0000000..991ed59
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/plus.svg b/assets/vendor/heroicons/optimized/24/outline/plus.svg
new file mode 100644
index 0000000..0480817
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/power.svg b/assets/vendor/heroicons/optimized/24/outline/power.svg
new file mode 100644
index 0000000..c4b2706
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/presentation-chart-bar.svg b/assets/vendor/heroicons/optimized/24/outline/presentation-chart-bar.svg
new file mode 100644
index 0000000..87d8a6d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/presentation-chart-line.svg b/assets/vendor/heroicons/optimized/24/outline/presentation-chart-line.svg
new file mode 100644
index 0000000..2262e1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/printer.svg b/assets/vendor/heroicons/optimized/24/outline/printer.svg
new file mode 100644
index 0000000..6f7c5fa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/puzzle-piece.svg b/assets/vendor/heroicons/optimized/24/outline/puzzle-piece.svg
new file mode 100644
index 0000000..13aa1a5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/qr-code.svg b/assets/vendor/heroicons/optimized/24/outline/qr-code.svg
new file mode 100644
index 0000000..662a4bd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/qr-code.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/question-mark-circle.svg b/assets/vendor/heroicons/optimized/24/outline/question-mark-circle.svg
new file mode 100644
index 0000000..9fb2542
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/queue-list.svg b/assets/vendor/heroicons/optimized/24/outline/queue-list.svg
new file mode 100644
index 0000000..91c3f11
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/radio.svg b/assets/vendor/heroicons/optimized/24/outline/radio.svg
new file mode 100644
index 0000000..f9c177a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/receipt-percent.svg b/assets/vendor/heroicons/optimized/24/outline/receipt-percent.svg
new file mode 100644
index 0000000..2d19255
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/receipt-refund.svg b/assets/vendor/heroicons/optimized/24/outline/receipt-refund.svg
new file mode 100644
index 0000000..dc569fc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/rectangle-group.svg b/assets/vendor/heroicons/optimized/24/outline/rectangle-group.svg
new file mode 100644
index 0000000..b184964
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/rectangle-stack.svg b/assets/vendor/heroicons/optimized/24/outline/rectangle-stack.svg
new file mode 100644
index 0000000..e1c0272
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/rocket-launch.svg b/assets/vendor/heroicons/optimized/24/outline/rocket-launch.svg
new file mode 100644
index 0000000..6400ee8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/rocket-launch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/rss.svg b/assets/vendor/heroicons/optimized/24/outline/rss.svg
new file mode 100644
index 0000000..1c36b21
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/rss.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/scale.svg b/assets/vendor/heroicons/optimized/24/outline/scale.svg
new file mode 100644
index 0000000..500e3c6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/scissors.svg b/assets/vendor/heroicons/optimized/24/outline/scissors.svg
new file mode 100644
index 0000000..a23dc81
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/scissors.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/server-stack.svg b/assets/vendor/heroicons/optimized/24/outline/server-stack.svg
new file mode 100644
index 0000000..3b7fe32
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/server-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/server.svg b/assets/vendor/heroicons/optimized/24/outline/server.svg
new file mode 100644
index 0000000..c1675f3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/server.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/share.svg b/assets/vendor/heroicons/optimized/24/outline/share.svg
new file mode 100644
index 0000000..125b6d1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/shield-check.svg b/assets/vendor/heroicons/optimized/24/outline/shield-check.svg
new file mode 100644
index 0000000..f9fa2b9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/shield-exclamation.svg b/assets/vendor/heroicons/optimized/24/outline/shield-exclamation.svg
new file mode 100644
index 0000000..b52a2ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/shopping-bag.svg b/assets/vendor/heroicons/optimized/24/outline/shopping-bag.svg
new file mode 100644
index 0000000..f5a51bd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/shopping-cart.svg b/assets/vendor/heroicons/optimized/24/outline/shopping-cart.svg
new file mode 100644
index 0000000..661477b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/signal-slash.svg b/assets/vendor/heroicons/optimized/24/outline/signal-slash.svg
new file mode 100644
index 0000000..62992c3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/signal.svg b/assets/vendor/heroicons/optimized/24/outline/signal.svg
new file mode 100644
index 0000000..56114d3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/signal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/sparkles.svg b/assets/vendor/heroicons/optimized/24/outline/sparkles.svg
new file mode 100644
index 0000000..5a78b09
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/speaker-wave.svg b/assets/vendor/heroicons/optimized/24/outline/speaker-wave.svg
new file mode 100644
index 0000000..1b6dde7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/speaker-wave.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/speaker-x-mark.svg b/assets/vendor/heroicons/optimized/24/outline/speaker-x-mark.svg
new file mode 100644
index 0000000..427e21e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/square-2-stack.svg b/assets/vendor/heroicons/optimized/24/outline/square-2-stack.svg
new file mode 100644
index 0000000..bc5e253
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/square-2-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/square-3-stack-3d.svg b/assets/vendor/heroicons/optimized/24/outline/square-3-stack-3d.svg
new file mode 100644
index 0000000..8af2704
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/square-3-stack-3d.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/squares-2x2.svg b/assets/vendor/heroicons/optimized/24/outline/squares-2x2.svg
new file mode 100644
index 0000000..601366d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/squares-plus.svg b/assets/vendor/heroicons/optimized/24/outline/squares-plus.svg
new file mode 100644
index 0000000..b8033c1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/star.svg b/assets/vendor/heroicons/optimized/24/outline/star.svg
new file mode 100644
index 0000000..98aa481
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/stop-circle.svg b/assets/vendor/heroicons/optimized/24/outline/stop-circle.svg
new file mode 100644
index 0000000..b570e8e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/stop-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/stop.svg b/assets/vendor/heroicons/optimized/24/outline/stop.svg
new file mode 100644
index 0000000..4ee917a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/sun.svg b/assets/vendor/heroicons/optimized/24/outline/sun.svg
new file mode 100644
index 0000000..5667cb3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/swatch.svg b/assets/vendor/heroicons/optimized/24/outline/swatch.svg
new file mode 100644
index 0000000..5b136eb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/swatch.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/table-cells.svg b/assets/vendor/heroicons/optimized/24/outline/table-cells.svg
new file mode 100644
index 0000000..cb37937
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/tag.svg b/assets/vendor/heroicons/optimized/24/outline/tag.svg
new file mode 100644
index 0000000..9620545
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/tag.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/ticket.svg b/assets/vendor/heroicons/optimized/24/outline/ticket.svg
new file mode 100644
index 0000000..da2d69e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/trash.svg b/assets/vendor/heroicons/optimized/24/outline/trash.svg
new file mode 100644
index 0000000..0d32d58
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/trophy.svg b/assets/vendor/heroicons/optimized/24/outline/trophy.svg
new file mode 100644
index 0000000..f846e52
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/truck.svg b/assets/vendor/heroicons/optimized/24/outline/truck.svg
new file mode 100644
index 0000000..6e1ea69
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/truck.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/tv.svg b/assets/vendor/heroicons/optimized/24/outline/tv.svg
new file mode 100644
index 0000000..7b8a706
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/tv.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/user-circle.svg b/assets/vendor/heroicons/optimized/24/outline/user-circle.svg
new file mode 100644
index 0000000..a177f26
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/user-group.svg b/assets/vendor/heroicons/optimized/24/outline/user-group.svg
new file mode 100644
index 0000000..4e7089b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/user-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/user-minus.svg b/assets/vendor/heroicons/optimized/24/outline/user-minus.svg
new file mode 100644
index 0000000..703478e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/user-plus.svg b/assets/vendor/heroicons/optimized/24/outline/user-plus.svg
new file mode 100644
index 0000000..24533d1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/user.svg b/assets/vendor/heroicons/optimized/24/outline/user.svg
new file mode 100644
index 0000000..e9b6c20
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/users.svg b/assets/vendor/heroicons/optimized/24/outline/users.svg
new file mode 100644
index 0000000..87304a0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/variable.svg b/assets/vendor/heroicons/optimized/24/outline/variable.svg
new file mode 100644
index 0000000..81fab04
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/video-camera-slash.svg b/assets/vendor/heroicons/optimized/24/outline/video-camera-slash.svg
new file mode 100644
index 0000000..d1de13e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/video-camera.svg b/assets/vendor/heroicons/optimized/24/outline/video-camera.svg
new file mode 100644
index 0000000..aae1a19
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/view-columns.svg b/assets/vendor/heroicons/optimized/24/outline/view-columns.svg
new file mode 100644
index 0000000..22a668e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/viewfinder-circle.svg b/assets/vendor/heroicons/optimized/24/outline/viewfinder-circle.svg
new file mode 100644
index 0000000..0583eef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/wallet.svg b/assets/vendor/heroicons/optimized/24/outline/wallet.svg
new file mode 100644
index 0000000..8f19d64
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/wifi.svg b/assets/vendor/heroicons/optimized/24/outline/wifi.svg
new file mode 100644
index 0000000..084b3e1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/window.svg b/assets/vendor/heroicons/optimized/24/outline/window.svg
new file mode 100644
index 0000000..4ffea71
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/wrench-screwdriver.svg b/assets/vendor/heroicons/optimized/24/outline/wrench-screwdriver.svg
new file mode 100644
index 0000000..1023ae9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/wrench-screwdriver.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/wrench.svg b/assets/vendor/heroicons/optimized/24/outline/wrench.svg
new file mode 100644
index 0000000..de3a6e2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/wrench.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/x-circle.svg b/assets/vendor/heroicons/optimized/24/outline/x-circle.svg
new file mode 100644
index 0000000..294ba20
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/outline/x-mark.svg b/assets/vendor/heroicons/optimized/24/outline/x-mark.svg
new file mode 100644
index 0000000..a6d9eb7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/outline/x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/academic-cap.svg b/assets/vendor/heroicons/optimized/24/solid/academic-cap.svg
new file mode 100644
index 0000000..2a13ef2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/academic-cap.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/adjustments-horizontal.svg b/assets/vendor/heroicons/optimized/24/solid/adjustments-horizontal.svg
new file mode 100644
index 0000000..ed9b950
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/adjustments-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/adjustments-vertical.svg b/assets/vendor/heroicons/optimized/24/solid/adjustments-vertical.svg
new file mode 100644
index 0000000..fc4b90c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/adjustments-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/archive-box-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/archive-box-arrow-down.svg
new file mode 100644
index 0000000..5999b72
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/archive-box-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/archive-box-x-mark.svg b/assets/vendor/heroicons/optimized/24/solid/archive-box-x-mark.svg
new file mode 100644
index 0000000..e7dd0d6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/archive-box-x-mark.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/archive-box.svg b/assets/vendor/heroicons/optimized/24/solid/archive-box.svg
new file mode 100644
index 0000000..74e0471
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/archive-box.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-circle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-circle.svg
new file mode 100644
index 0000000..c85a4ff
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-left.svg
new file mode 100644
index 0000000..5cd0d4d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square-stack.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square-stack.svg
new file mode 100644
index 0000000..d2ef0b3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square.svg
new file mode 100644
index 0000000..35eab41
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-right.svg
new file mode 100644
index 0000000..8c60942
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down-tray.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down-tray.svg
new file mode 100644
index 0000000..a18c62d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-down.svg
new file mode 100644
index 0000000..5cb396b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-left-circle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-left-circle.svg
new file mode 100644
index 0000000..a937f8e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-left-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-left-on-rectangle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-left-on-rectangle.svg
new file mode 100644
index 0000000..972a85e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-left-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-left.svg
new file mode 100644
index 0000000..51bef70
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-long-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-long-down.svg
new file mode 100644
index 0000000..891774e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-long-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-long-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-long-left.svg
new file mode 100644
index 0000000..aa12c0c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-long-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-long-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-long-right.svg
new file mode 100644
index 0000000..0bcb6a0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-long-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-long-up.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-long-up.svg
new file mode 100644
index 0000000..b36d8e0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-long-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-path-rounded-square.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-path-rounded-square.svg
new file mode 100644
index 0000000..0808a57
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-path-rounded-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-path.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-path.svg
new file mode 100644
index 0000000..48a71fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-path.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-right-circle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-right-circle.svg
new file mode 100644
index 0000000..424f75a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-right-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-right-on-rectangle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-right-on-rectangle.svg
new file mode 100644
index 0000000..73a7a7e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-right-on-rectangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-right.svg
new file mode 100644
index 0000000..1b1bbd1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-small-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-small-down.svg
new file mode 100644
index 0000000..790993f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-small-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-small-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-small-left.svg
new file mode 100644
index 0000000..231b1b2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-small-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-small-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-small-right.svg
new file mode 100644
index 0000000..5d91261
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-small-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-small-up.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-small-up.svg
new file mode 100644
index 0000000..33b31cf
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-small-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-top-right-on-square.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-top-right-on-square.svg
new file mode 100644
index 0000000..ac1bc37
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-top-right-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-trending-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-trending-down.svg
new file mode 100644
index 0000000..f46b609
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-trending-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-trending-up.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-trending-up.svg
new file mode 100644
index 0000000..f2ece6e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-trending-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-circle.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-circle.svg
new file mode 100644
index 0000000..0a9999f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-left.svg
new file mode 100644
index 0000000..b6f9c2e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square-stack.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square-stack.svg
new file mode 100644
index 0000000..b661da7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square.svg
new file mode 100644
index 0000000..cba893e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-on-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-right.svg
new file mode 100644
index 0000000..7554631
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up-tray.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up-tray.svg
new file mode 100644
index 0000000..19093f6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up-tray.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-up.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-up.svg
new file mode 100644
index 0000000..16f6c79
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-down.svg
new file mode 100644
index 0000000..6975024
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-left.svg
new file mode 100644
index 0000000..f0b679a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-right.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-right.svg
new file mode 100644
index 0000000..2da0f98
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-up.svg b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-up.svg
new file mode 100644
index 0000000..8cfe23d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrow-uturn-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-in.svg b/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-in.svg
new file mode 100644
index 0000000..604920f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-in.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-out.svg b/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-out.svg
new file mode 100644
index 0000000..2399662
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrows-pointing-out.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrows-right-left.svg b/assets/vendor/heroicons/optimized/24/solid/arrows-right-left.svg
new file mode 100644
index 0000000..93fb7f1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrows-right-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/arrows-up-down.svg b/assets/vendor/heroicons/optimized/24/solid/arrows-up-down.svg
new file mode 100644
index 0000000..356e9ca
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/arrows-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/at-symbol.svg b/assets/vendor/heroicons/optimized/24/solid/at-symbol.svg
new file mode 100644
index 0000000..a02c654
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/at-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/backspace.svg b/assets/vendor/heroicons/optimized/24/solid/backspace.svg
new file mode 100644
index 0000000..e5a79c2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/backspace.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/backward.svg b/assets/vendor/heroicons/optimized/24/solid/backward.svg
new file mode 100644
index 0000000..bdf2a01
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/backward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/banknotes.svg b/assets/vendor/heroicons/optimized/24/solid/banknotes.svg
new file mode 100644
index 0000000..1cc1803
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/banknotes.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-2.svg b/assets/vendor/heroicons/optimized/24/solid/bars-2.svg
new file mode 100644
index 0000000..6ee47ab
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-left.svg b/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-left.svg
new file mode 100644
index 0000000..a804c11
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-right.svg b/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-right.svg
new file mode 100644
index 0000000..2fd11ad
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-3-bottom-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-3-center-left.svg b/assets/vendor/heroicons/optimized/24/solid/bars-3-center-left.svg
new file mode 100644
index 0000000..9a2c170
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-3-center-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-3.svg b/assets/vendor/heroicons/optimized/24/solid/bars-3.svg
new file mode 100644
index 0000000..85584e8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-3.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-4.svg b/assets/vendor/heroicons/optimized/24/solid/bars-4.svg
new file mode 100644
index 0000000..e3591d1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-4.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/bars-arrow-down.svg
new file mode 100644
index 0000000..10140b8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bars-arrow-up.svg b/assets/vendor/heroicons/optimized/24/solid/bars-arrow-up.svg
new file mode 100644
index 0000000..4b3d4a7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bars-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/battery-0.svg b/assets/vendor/heroicons/optimized/24/solid/battery-0.svg
new file mode 100644
index 0000000..f03a737
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/battery-0.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/battery-100.svg b/assets/vendor/heroicons/optimized/24/solid/battery-100.svg
new file mode 100644
index 0000000..62e4ec9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/battery-100.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/battery-50.svg b/assets/vendor/heroicons/optimized/24/solid/battery-50.svg
new file mode 100644
index 0000000..63344d7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/battery-50.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/beaker.svg b/assets/vendor/heroicons/optimized/24/solid/beaker.svg
new file mode 100644
index 0000000..e0b73cc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/beaker.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bell-alert.svg b/assets/vendor/heroicons/optimized/24/solid/bell-alert.svg
new file mode 100644
index 0000000..f280b00
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bell-alert.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bell-slash.svg b/assets/vendor/heroicons/optimized/24/solid/bell-slash.svg
new file mode 100644
index 0000000..0ef076c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bell-slash.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bell-snooze.svg b/assets/vendor/heroicons/optimized/24/solid/bell-snooze.svg
new file mode 100644
index 0000000..cf93ae0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bell-snooze.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bell.svg b/assets/vendor/heroicons/optimized/24/solid/bell.svg
new file mode 100644
index 0000000..818496e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bell.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bolt-slash.svg b/assets/vendor/heroicons/optimized/24/solid/bolt-slash.svg
new file mode 100644
index 0000000..59d24f7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bolt-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bolt.svg b/assets/vendor/heroicons/optimized/24/solid/bolt.svg
new file mode 100644
index 0000000..596c47a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bolt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/book-open.svg b/assets/vendor/heroicons/optimized/24/solid/book-open.svg
new file mode 100644
index 0000000..2e0a181
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/book-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bookmark-slash.svg b/assets/vendor/heroicons/optimized/24/solid/bookmark-slash.svg
new file mode 100644
index 0000000..8435a02
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bookmark-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bookmark-square.svg b/assets/vendor/heroicons/optimized/24/solid/bookmark-square.svg
new file mode 100644
index 0000000..a4d3ca5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bookmark-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bookmark.svg b/assets/vendor/heroicons/optimized/24/solid/bookmark.svg
new file mode 100644
index 0000000..e9f3fb7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bookmark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/briefcase.svg b/assets/vendor/heroicons/optimized/24/solid/briefcase.svg
new file mode 100644
index 0000000..a66af56
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/briefcase.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/bug-ant.svg b/assets/vendor/heroicons/optimized/24/solid/bug-ant.svg
new file mode 100644
index 0000000..3c16cbc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/bug-ant.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/building-library.svg b/assets/vendor/heroicons/optimized/24/solid/building-library.svg
new file mode 100644
index 0000000..90f8640
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/building-library.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/building-office-2.svg b/assets/vendor/heroicons/optimized/24/solid/building-office-2.svg
new file mode 100644
index 0000000..240eedb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/building-office-2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/building-office.svg b/assets/vendor/heroicons/optimized/24/solid/building-office.svg
new file mode 100644
index 0000000..9883e33
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/building-office.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/building-storefront.svg b/assets/vendor/heroicons/optimized/24/solid/building-storefront.svg
new file mode 100644
index 0000000..f3b54ba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/building-storefront.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cake.svg b/assets/vendor/heroicons/optimized/24/solid/cake.svg
new file mode 100644
index 0000000..f13b308
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cake.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/calculator.svg b/assets/vendor/heroicons/optimized/24/solid/calculator.svg
new file mode 100644
index 0000000..e058510
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/calculator.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/calendar-days.svg b/assets/vendor/heroicons/optimized/24/solid/calendar-days.svg
new file mode 100644
index 0000000..0df9b16
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/calendar-days.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/calendar.svg b/assets/vendor/heroicons/optimized/24/solid/calendar.svg
new file mode 100644
index 0000000..27e208c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/calendar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/camera.svg b/assets/vendor/heroicons/optimized/24/solid/camera.svg
new file mode 100644
index 0000000..e58165d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/camera.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chart-bar-square.svg b/assets/vendor/heroicons/optimized/24/solid/chart-bar-square.svg
new file mode 100644
index 0000000..d4af840
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chart-bar-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chart-bar.svg b/assets/vendor/heroicons/optimized/24/solid/chart-bar.svg
new file mode 100644
index 0000000..abe5349
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chart-pie.svg b/assets/vendor/heroicons/optimized/24/solid/chart-pie.svg
new file mode 100644
index 0000000..5aea729
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chart-pie.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center-text.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center-text.svg
new file mode 100644
index 0000000..bff24c4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center-text.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center.svg
new file mode 100644
index 0000000..eab7a41
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-bottom-center.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-ellipsis.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-ellipsis.svg
new file mode 100644
index 0000000..1ee6159
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-right.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-right.svg
new file mode 100644
index 0000000..80ad26d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left.svg
new file mode 100644
index 0000000..3dd81b7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left-ellipsis.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left-ellipsis.svg
new file mode 100644
index 0000000..815c6d7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left-ellipsis.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left.svg b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left.svg
new file mode 100644
index 0000000..473b921
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chat-bubble-oval-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/check-badge.svg b/assets/vendor/heroicons/optimized/24/solid/check-badge.svg
new file mode 100644
index 0000000..058b329
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/check-badge.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/check-circle.svg b/assets/vendor/heroicons/optimized/24/solid/check-circle.svg
new file mode 100644
index 0000000..2b90831
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/check-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/check.svg b/assets/vendor/heroicons/optimized/24/solid/check.svg
new file mode 100644
index 0000000..2a6bc17
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-double-down.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-double-down.svg
new file mode 100644
index 0000000..ddbe304
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-double-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-double-left.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-double-left.svg
new file mode 100644
index 0000000..5c6539d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-double-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-double-right.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-double-right.svg
new file mode 100644
index 0000000..7e25238
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-double-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-double-up.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-double-up.svg
new file mode 100644
index 0000000..029e687
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-double-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-down.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-down.svg
new file mode 100644
index 0000000..4f9ce7e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-left.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-left.svg
new file mode 100644
index 0000000..2d89e8b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-left.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-right.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-right.svg
new file mode 100644
index 0000000..36e4859
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-right.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-up-down.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-up-down.svg
new file mode 100644
index 0000000..58edbc3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-up-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/chevron-up.svg b/assets/vendor/heroicons/optimized/24/solid/chevron-up.svg
new file mode 100644
index 0000000..9abe9cd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/chevron-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/circle-stack.svg b/assets/vendor/heroicons/optimized/24/solid/circle-stack.svg
new file mode 100644
index 0000000..5a49d80
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/circle-stack.svg
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/clipboard-document-check.svg b/assets/vendor/heroicons/optimized/24/solid/clipboard-document-check.svg
new file mode 100644
index 0000000..21ec021
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/clipboard-document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/clipboard-document-list.svg b/assets/vendor/heroicons/optimized/24/solid/clipboard-document-list.svg
new file mode 100644
index 0000000..d60bed5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/clipboard-document-list.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/clipboard-document.svg b/assets/vendor/heroicons/optimized/24/solid/clipboard-document.svg
new file mode 100644
index 0000000..d70b708
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/clipboard-document.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/clipboard.svg b/assets/vendor/heroicons/optimized/24/solid/clipboard.svg
new file mode 100644
index 0000000..c09970f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/clipboard.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/clock.svg b/assets/vendor/heroicons/optimized/24/solid/clock.svg
new file mode 100644
index 0000000..1d6fb4a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/clock.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-down.svg
new file mode 100644
index 0000000..d6cf7c5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-up.svg b/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-up.svg
new file mode 100644
index 0000000..7e0dcee
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cloud-arrow-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cloud.svg b/assets/vendor/heroicons/optimized/24/solid/cloud.svg
new file mode 100644
index 0000000..95d0c73
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cloud.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/code-bracket-square.svg b/assets/vendor/heroicons/optimized/24/solid/code-bracket-square.svg
new file mode 100644
index 0000000..103f73b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/code-bracket-square.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/code-bracket.svg b/assets/vendor/heroicons/optimized/24/solid/code-bracket.svg
new file mode 100644
index 0000000..9f331ef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/code-bracket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cog-6-tooth.svg b/assets/vendor/heroicons/optimized/24/solid/cog-6-tooth.svg
new file mode 100644
index 0000000..ba6fca5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cog-6-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cog-8-tooth.svg b/assets/vendor/heroicons/optimized/24/solid/cog-8-tooth.svg
new file mode 100644
index 0000000..9b9b1a6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cog-8-tooth.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cog.svg b/assets/vendor/heroicons/optimized/24/solid/cog.svg
new file mode 100644
index 0000000..e854f73
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cog.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/command-line.svg b/assets/vendor/heroicons/optimized/24/solid/command-line.svg
new file mode 100644
index 0000000..e2a0af8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/command-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/computer-desktop.svg b/assets/vendor/heroicons/optimized/24/solid/computer-desktop.svg
new file mode 100644
index 0000000..5b7f2ef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/computer-desktop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cpu-chip.svg b/assets/vendor/heroicons/optimized/24/solid/cpu-chip.svg
new file mode 100644
index 0000000..e20f6fb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cpu-chip.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/credit-card.svg b/assets/vendor/heroicons/optimized/24/solid/credit-card.svg
new file mode 100644
index 0000000..fe4dc14
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/credit-card.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cube-transparent.svg b/assets/vendor/heroicons/optimized/24/solid/cube-transparent.svg
new file mode 100644
index 0000000..5577f26
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cube-transparent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cube.svg b/assets/vendor/heroicons/optimized/24/solid/cube.svg
new file mode 100644
index 0000000..b0029f2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cube.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-bangladeshi.svg b/assets/vendor/heroicons/optimized/24/solid/currency-bangladeshi.svg
new file mode 100644
index 0000000..ca13c68
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-bangladeshi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-dollar.svg b/assets/vendor/heroicons/optimized/24/solid/currency-dollar.svg
new file mode 100644
index 0000000..e0155df
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-dollar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-euro.svg b/assets/vendor/heroicons/optimized/24/solid/currency-euro.svg
new file mode 100644
index 0000000..2926c25
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-euro.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-pound.svg b/assets/vendor/heroicons/optimized/24/solid/currency-pound.svg
new file mode 100644
index 0000000..547f725
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-pound.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-rupee.svg b/assets/vendor/heroicons/optimized/24/solid/currency-rupee.svg
new file mode 100644
index 0000000..2ee9b46
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-rupee.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/currency-yen.svg b/assets/vendor/heroicons/optimized/24/solid/currency-yen.svg
new file mode 100644
index 0000000..65ef9bc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/currency-yen.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-rays.svg b/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-rays.svg
new file mode 100644
index 0000000..c0e462b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-rays.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-ripple.svg b/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-ripple.svg
new file mode 100644
index 0000000..867faa4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/cursor-arrow-ripple.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/device-phone-mobile.svg b/assets/vendor/heroicons/optimized/24/solid/device-phone-mobile.svg
new file mode 100644
index 0000000..eec0738
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/device-phone-mobile.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/device-tablet.svg b/assets/vendor/heroicons/optimized/24/solid/device-tablet.svg
new file mode 100644
index 0000000..88e2cc8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/device-tablet.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/document-arrow-down.svg
new file mode 100644
index 0000000..77ac19c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-arrow-up.svg b/assets/vendor/heroicons/optimized/24/solid/document-arrow-up.svg
new file mode 100644
index 0000000..bc26cb9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-arrow-up.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-chart-bar.svg b/assets/vendor/heroicons/optimized/24/solid/document-chart-bar.svg
new file mode 100644
index 0000000..83d0eac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-chart-bar.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-check.svg b/assets/vendor/heroicons/optimized/24/solid/document-check.svg
new file mode 100644
index 0000000..e827854
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-check.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-duplicate.svg b/assets/vendor/heroicons/optimized/24/solid/document-duplicate.svg
new file mode 100644
index 0000000..fa7375d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-duplicate.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-magnifying-glass.svg b/assets/vendor/heroicons/optimized/24/solid/document-magnifying-glass.svg
new file mode 100644
index 0000000..ab165f7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-magnifying-glass.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-minus.svg b/assets/vendor/heroicons/optimized/24/solid/document-minus.svg
new file mode 100644
index 0000000..265c6eb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-minus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-plus.svg b/assets/vendor/heroicons/optimized/24/solid/document-plus.svg
new file mode 100644
index 0000000..5e31459
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-plus.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document-text.svg b/assets/vendor/heroicons/optimized/24/solid/document-text.svg
new file mode 100644
index 0000000..73b30cd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document-text.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/document.svg b/assets/vendor/heroicons/optimized/24/solid/document.svg
new file mode 100644
index 0000000..a05f20f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/document.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal-circle.svg b/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal-circle.svg
new file mode 100644
index 0000000..6ec2b50
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal.svg b/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal.svg
new file mode 100644
index 0000000..ddb5a3f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/ellipsis-horizontal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/ellipsis-vertical.svg b/assets/vendor/heroicons/optimized/24/solid/ellipsis-vertical.svg
new file mode 100644
index 0000000..792c0ae
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/ellipsis-vertical.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/envelope-open.svg b/assets/vendor/heroicons/optimized/24/solid/envelope-open.svg
new file mode 100644
index 0000000..e6bf97b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/envelope-open.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/envelope.svg b/assets/vendor/heroicons/optimized/24/solid/envelope.svg
new file mode 100644
index 0000000..702341b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/envelope.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/exclamation-circle.svg b/assets/vendor/heroicons/optimized/24/solid/exclamation-circle.svg
new file mode 100644
index 0000000..fdaadc0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/exclamation-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/exclamation-triangle.svg b/assets/vendor/heroicons/optimized/24/solid/exclamation-triangle.svg
new file mode 100644
index 0000000..627a712
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/exclamation-triangle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/eye-dropper.svg b/assets/vendor/heroicons/optimized/24/solid/eye-dropper.svg
new file mode 100644
index 0000000..15b16d0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/eye-dropper.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/eye-slash.svg b/assets/vendor/heroicons/optimized/24/solid/eye-slash.svg
new file mode 100644
index 0000000..11ef99b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/eye-slash.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/eye.svg b/assets/vendor/heroicons/optimized/24/solid/eye.svg
new file mode 100644
index 0000000..a648db3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/eye.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/face-frown.svg b/assets/vendor/heroicons/optimized/24/solid/face-frown.svg
new file mode 100644
index 0000000..7040d58
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/face-frown.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/face-smile.svg b/assets/vendor/heroicons/optimized/24/solid/face-smile.svg
new file mode 100644
index 0000000..d5e75a2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/face-smile.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/film.svg b/assets/vendor/heroicons/optimized/24/solid/film.svg
new file mode 100644
index 0000000..fbd26cc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/film.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/finger-print.svg b/assets/vendor/heroicons/optimized/24/solid/finger-print.svg
new file mode 100644
index 0000000..68e72b4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/finger-print.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/fire.svg b/assets/vendor/heroicons/optimized/24/solid/fire.svg
new file mode 100644
index 0000000..93b1b1f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/fire.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/flag.svg b/assets/vendor/heroicons/optimized/24/solid/flag.svg
new file mode 100644
index 0000000..8c67b01
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/flag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/folder-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/folder-arrow-down.svg
new file mode 100644
index 0000000..5d963b4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/folder-arrow-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/folder-minus.svg b/assets/vendor/heroicons/optimized/24/solid/folder-minus.svg
new file mode 100644
index 0000000..d0292b8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/folder-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/folder-open.svg b/assets/vendor/heroicons/optimized/24/solid/folder-open.svg
new file mode 100644
index 0000000..b9d80ba
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/folder-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/folder-plus.svg b/assets/vendor/heroicons/optimized/24/solid/folder-plus.svg
new file mode 100644
index 0000000..efaf949
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/folder-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/folder.svg b/assets/vendor/heroicons/optimized/24/solid/folder.svg
new file mode 100644
index 0000000..a7847f8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/folder.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/forward.svg b/assets/vendor/heroicons/optimized/24/solid/forward.svg
new file mode 100644
index 0000000..de90863
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/forward.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/funnel.svg b/assets/vendor/heroicons/optimized/24/solid/funnel.svg
new file mode 100644
index 0000000..fe5699f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/funnel.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/gif.svg b/assets/vendor/heroicons/optimized/24/solid/gif.svg
new file mode 100644
index 0000000..283e6e5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/gif.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/gift-top.svg b/assets/vendor/heroicons/optimized/24/solid/gift-top.svg
new file mode 100644
index 0000000..4bd4e6f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/gift-top.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/gift.svg b/assets/vendor/heroicons/optimized/24/solid/gift.svg
new file mode 100644
index 0000000..2ca6c92
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/gift.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/globe-alt.svg b/assets/vendor/heroicons/optimized/24/solid/globe-alt.svg
new file mode 100644
index 0000000..0cbacae
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/globe-alt.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/globe-americas.svg b/assets/vendor/heroicons/optimized/24/solid/globe-americas.svg
new file mode 100644
index 0000000..5ae0d5d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/globe-americas.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/globe-asia-australia.svg b/assets/vendor/heroicons/optimized/24/solid/globe-asia-australia.svg
new file mode 100644
index 0000000..14249d6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/globe-asia-australia.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/globe-europe-africa.svg b/assets/vendor/heroicons/optimized/24/solid/globe-europe-africa.svg
new file mode 100644
index 0000000..49a78fd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/globe-europe-africa.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/hand-raised.svg b/assets/vendor/heroicons/optimized/24/solid/hand-raised.svg
new file mode 100644
index 0000000..1717d51
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/hand-raised.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/hand-thumb-down.svg b/assets/vendor/heroicons/optimized/24/solid/hand-thumb-down.svg
new file mode 100644
index 0000000..7a2b9a6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/hand-thumb-down.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/hand-thumb-up.svg b/assets/vendor/heroicons/optimized/24/solid/hand-thumb-up.svg
new file mode 100644
index 0000000..4942d2d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/hand-thumb-up.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/hashtag.svg b/assets/vendor/heroicons/optimized/24/solid/hashtag.svg
new file mode 100644
index 0000000..29e677d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/hashtag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/heart.svg b/assets/vendor/heroicons/optimized/24/solid/heart.svg
new file mode 100644
index 0000000..b5f0d95
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/heart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/home-modern.svg b/assets/vendor/heroicons/optimized/24/solid/home-modern.svg
new file mode 100644
index 0000000..488685a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/home-modern.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/home.svg b/assets/vendor/heroicons/optimized/24/solid/home.svg
new file mode 100644
index 0000000..ec0bae1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/home.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/identification.svg b/assets/vendor/heroicons/optimized/24/solid/identification.svg
new file mode 100644
index 0000000..829b24d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/identification.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/inbox-arrow-down.svg b/assets/vendor/heroicons/optimized/24/solid/inbox-arrow-down.svg
new file mode 100644
index 0000000..4fd220b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/inbox-arrow-down.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/inbox-stack.svg b/assets/vendor/heroicons/optimized/24/solid/inbox-stack.svg
new file mode 100644
index 0000000..fffab99
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/inbox-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/inbox.svg b/assets/vendor/heroicons/optimized/24/solid/inbox.svg
new file mode 100644
index 0000000..b74380e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/inbox.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/information-circle.svg b/assets/vendor/heroicons/optimized/24/solid/information-circle.svg
new file mode 100644
index 0000000..bd2723b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/information-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/key.svg b/assets/vendor/heroicons/optimized/24/solid/key.svg
new file mode 100644
index 0000000..6acee27
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/key.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/language.svg b/assets/vendor/heroicons/optimized/24/solid/language.svg
new file mode 100644
index 0000000..60d1aee
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/language.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/lifebuoy.svg b/assets/vendor/heroicons/optimized/24/solid/lifebuoy.svg
new file mode 100644
index 0000000..9ddc8d4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/lifebuoy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/light-bulb.svg b/assets/vendor/heroicons/optimized/24/solid/light-bulb.svg
new file mode 100644
index 0000000..ff49cb3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/light-bulb.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/link.svg b/assets/vendor/heroicons/optimized/24/solid/link.svg
new file mode 100644
index 0000000..a6dc093
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/link.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/list-bullet.svg b/assets/vendor/heroicons/optimized/24/solid/list-bullet.svg
new file mode 100644
index 0000000..7983877
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/list-bullet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/lock-closed.svg b/assets/vendor/heroicons/optimized/24/solid/lock-closed.svg
new file mode 100644
index 0000000..8a5a6d7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/lock-closed.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/lock-open.svg b/assets/vendor/heroicons/optimized/24/solid/lock-open.svg
new file mode 100644
index 0000000..4562f7e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/lock-open.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-circle.svg b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-circle.svg
new file mode 100644
index 0000000..17a6f28
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-circle.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-minus.svg b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-minus.svg
new file mode 100644
index 0000000..06ae161
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-plus.svg b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-plus.svg
new file mode 100644
index 0000000..92040d0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/magnifying-glass.svg b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass.svg
new file mode 100644
index 0000000..b602e08
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/magnifying-glass.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/map-pin.svg b/assets/vendor/heroicons/optimized/24/solid/map-pin.svg
new file mode 100644
index 0000000..92e6785
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/map-pin.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/map.svg b/assets/vendor/heroicons/optimized/24/solid/map.svg
new file mode 100644
index 0000000..9d4f7dd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/map.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/megaphone.svg b/assets/vendor/heroicons/optimized/24/solid/megaphone.svg
new file mode 100644
index 0000000..b1f1e10
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/megaphone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/microphone.svg b/assets/vendor/heroicons/optimized/24/solid/microphone.svg
new file mode 100644
index 0000000..a5f4cb6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/microphone.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/minus-circle.svg b/assets/vendor/heroicons/optimized/24/solid/minus-circle.svg
new file mode 100644
index 0000000..8c981ab
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/minus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/minus-small.svg b/assets/vendor/heroicons/optimized/24/solid/minus-small.svg
new file mode 100644
index 0000000..782213e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/minus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/minus.svg b/assets/vendor/heroicons/optimized/24/solid/minus.svg
new file mode 100644
index 0000000..1fa7117
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/moon.svg b/assets/vendor/heroicons/optimized/24/solid/moon.svg
new file mode 100644
index 0000000..97d5c5a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/moon.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/musical-note.svg b/assets/vendor/heroicons/optimized/24/solid/musical-note.svg
new file mode 100644
index 0000000..a9ab9b5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/musical-note.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/newspaper.svg b/assets/vendor/heroicons/optimized/24/solid/newspaper.svg
new file mode 100644
index 0000000..d1f2c1e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/newspaper.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/no-symbol.svg b/assets/vendor/heroicons/optimized/24/solid/no-symbol.svg
new file mode 100644
index 0000000..42eb771
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/no-symbol.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/paint-brush.svg b/assets/vendor/heroicons/optimized/24/solid/paint-brush.svg
new file mode 100644
index 0000000..35fd5a6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/paint-brush.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/paper-airplane.svg b/assets/vendor/heroicons/optimized/24/solid/paper-airplane.svg
new file mode 100644
index 0000000..9365a57
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/paper-airplane.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/paper-clip.svg b/assets/vendor/heroicons/optimized/24/solid/paper-clip.svg
new file mode 100644
index 0000000..0a0dcdd
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/paper-clip.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/pause-circle.svg b/assets/vendor/heroicons/optimized/24/solid/pause-circle.svg
new file mode 100644
index 0000000..4fe4f2b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/pause-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/pause.svg b/assets/vendor/heroicons/optimized/24/solid/pause.svg
new file mode 100644
index 0000000..2e121ac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/pencil-square.svg b/assets/vendor/heroicons/optimized/24/solid/pencil-square.svg
new file mode 100644
index 0000000..5f4aaf8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/pencil-square.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/pencil.svg b/assets/vendor/heroicons/optimized/24/solid/pencil.svg
new file mode 100644
index 0000000..78ec61a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/pencil.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/phone-arrow-down-left.svg b/assets/vendor/heroicons/optimized/24/solid/phone-arrow-down-left.svg
new file mode 100644
index 0000000..06f3ba0
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/phone-arrow-down-left.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/phone-arrow-up-right.svg b/assets/vendor/heroicons/optimized/24/solid/phone-arrow-up-right.svg
new file mode 100644
index 0000000..678c4f6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/phone-arrow-up-right.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/phone-x-mark.svg b/assets/vendor/heroicons/optimized/24/solid/phone-x-mark.svg
new file mode 100644
index 0000000..a017a7d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/phone-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/phone.svg b/assets/vendor/heroicons/optimized/24/solid/phone.svg
new file mode 100644
index 0000000..ca2a6bc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/phone.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/photo.svg b/assets/vendor/heroicons/optimized/24/solid/photo.svg
new file mode 100644
index 0000000..57e023d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/photo.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/play-circle.svg b/assets/vendor/heroicons/optimized/24/solid/play-circle.svg
new file mode 100644
index 0000000..752273a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/play-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/play-pause.svg b/assets/vendor/heroicons/optimized/24/solid/play-pause.svg
new file mode 100644
index 0000000..e5bb17c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/play-pause.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/play.svg b/assets/vendor/heroicons/optimized/24/solid/play.svg
new file mode 100644
index 0000000..da0e4e2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/play.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/plus-circle.svg b/assets/vendor/heroicons/optimized/24/solid/plus-circle.svg
new file mode 100644
index 0000000..b45f965
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/plus-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/plus-small.svg b/assets/vendor/heroicons/optimized/24/solid/plus-small.svg
new file mode 100644
index 0000000..0c4b744
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/plus-small.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/plus.svg b/assets/vendor/heroicons/optimized/24/solid/plus.svg
new file mode 100644
index 0000000..85d3b14
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/power.svg b/assets/vendor/heroicons/optimized/24/solid/power.svg
new file mode 100644
index 0000000..2bf830f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/power.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/presentation-chart-bar.svg b/assets/vendor/heroicons/optimized/24/solid/presentation-chart-bar.svg
new file mode 100644
index 0000000..cb0bc9a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/presentation-chart-bar.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/presentation-chart-line.svg b/assets/vendor/heroicons/optimized/24/solid/presentation-chart-line.svg
new file mode 100644
index 0000000..54e10b2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/presentation-chart-line.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/printer.svg b/assets/vendor/heroicons/optimized/24/solid/printer.svg
new file mode 100644
index 0000000..4fce791
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/printer.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/puzzle-piece.svg b/assets/vendor/heroicons/optimized/24/solid/puzzle-piece.svg
new file mode 100644
index 0000000..4f85b37
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/puzzle-piece.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/qr-code.svg b/assets/vendor/heroicons/optimized/24/solid/qr-code.svg
new file mode 100644
index 0000000..7f676ca
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/qr-code.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/question-mark-circle.svg b/assets/vendor/heroicons/optimized/24/solid/question-mark-circle.svg
new file mode 100644
index 0000000..2ae51be
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/question-mark-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/queue-list.svg b/assets/vendor/heroicons/optimized/24/solid/queue-list.svg
new file mode 100644
index 0000000..536fd88
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/queue-list.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/radio.svg b/assets/vendor/heroicons/optimized/24/solid/radio.svg
new file mode 100644
index 0000000..92ca514
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/radio.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/receipt-percent.svg b/assets/vendor/heroicons/optimized/24/solid/receipt-percent.svg
new file mode 100644
index 0000000..5eb6371
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/receipt-percent.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/receipt-refund.svg b/assets/vendor/heroicons/optimized/24/solid/receipt-refund.svg
new file mode 100644
index 0000000..6a1a154
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/receipt-refund.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/rectangle-group.svg b/assets/vendor/heroicons/optimized/24/solid/rectangle-group.svg
new file mode 100644
index 0000000..289d198
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/rectangle-group.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/rectangle-stack.svg b/assets/vendor/heroicons/optimized/24/solid/rectangle-stack.svg
new file mode 100644
index 0000000..82a1334
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/rectangle-stack.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/rocket-launch.svg b/assets/vendor/heroicons/optimized/24/solid/rocket-launch.svg
new file mode 100644
index 0000000..522fc64
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/rocket-launch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/rss.svg b/assets/vendor/heroicons/optimized/24/solid/rss.svg
new file mode 100644
index 0000000..b9a8ab2
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/rss.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/scale.svg b/assets/vendor/heroicons/optimized/24/solid/scale.svg
new file mode 100644
index 0000000..b7e57c7
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/scale.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/scissors.svg b/assets/vendor/heroicons/optimized/24/solid/scissors.svg
new file mode 100644
index 0000000..9c971b3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/scissors.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/server-stack.svg b/assets/vendor/heroicons/optimized/24/solid/server-stack.svg
new file mode 100644
index 0000000..c0d3074
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/server-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/server.svg b/assets/vendor/heroicons/optimized/24/solid/server.svg
new file mode 100644
index 0000000..55f9aed
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/server.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/share.svg b/assets/vendor/heroicons/optimized/24/solid/share.svg
new file mode 100644
index 0000000..8f45dfc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/share.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/shield-check.svg b/assets/vendor/heroicons/optimized/24/solid/shield-check.svg
new file mode 100644
index 0000000..2596ace
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/shield-check.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/shield-exclamation.svg b/assets/vendor/heroicons/optimized/24/solid/shield-exclamation.svg
new file mode 100644
index 0000000..ce53fcc
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/shield-exclamation.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/shopping-bag.svg b/assets/vendor/heroicons/optimized/24/solid/shopping-bag.svg
new file mode 100644
index 0000000..e6503ee
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/shopping-bag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/shopping-cart.svg b/assets/vendor/heroicons/optimized/24/solid/shopping-cart.svg
new file mode 100644
index 0000000..931a12f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/shopping-cart.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/signal-slash.svg b/assets/vendor/heroicons/optimized/24/solid/signal-slash.svg
new file mode 100644
index 0000000..21c65cb
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/signal-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/signal.svg b/assets/vendor/heroicons/optimized/24/solid/signal.svg
new file mode 100644
index 0000000..9027aef
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/signal.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/sparkles.svg b/assets/vendor/heroicons/optimized/24/solid/sparkles.svg
new file mode 100644
index 0000000..0d8d0c1
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/sparkles.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/speaker-wave.svg b/assets/vendor/heroicons/optimized/24/solid/speaker-wave.svg
new file mode 100644
index 0000000..bd84477
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/speaker-wave.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/speaker-x-mark.svg b/assets/vendor/heroicons/optimized/24/solid/speaker-x-mark.svg
new file mode 100644
index 0000000..e71f1b6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/speaker-x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/square-2-stack.svg b/assets/vendor/heroicons/optimized/24/solid/square-2-stack.svg
new file mode 100644
index 0000000..c3726a5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/square-2-stack.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/square-3-stack-3d.svg b/assets/vendor/heroicons/optimized/24/solid/square-3-stack-3d.svg
new file mode 100644
index 0000000..8ed638d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/square-3-stack-3d.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/squares-2x2.svg b/assets/vendor/heroicons/optimized/24/solid/squares-2x2.svg
new file mode 100644
index 0000000..475f6c3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/squares-2x2.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/squares-plus.svg b/assets/vendor/heroicons/optimized/24/solid/squares-plus.svg
new file mode 100644
index 0000000..88a2dda
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/squares-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/star.svg b/assets/vendor/heroicons/optimized/24/solid/star.svg
new file mode 100644
index 0000000..8509819
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/star.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/stop-circle.svg b/assets/vendor/heroicons/optimized/24/solid/stop-circle.svg
new file mode 100644
index 0000000..8e57a2c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/stop-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/stop.svg b/assets/vendor/heroicons/optimized/24/solid/stop.svg
new file mode 100644
index 0000000..1bf426f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/stop.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/sun.svg b/assets/vendor/heroicons/optimized/24/solid/sun.svg
new file mode 100644
index 0000000..1b597fa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/sun.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/swatch.svg b/assets/vendor/heroicons/optimized/24/solid/swatch.svg
new file mode 100644
index 0000000..9b26c03
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/swatch.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/table-cells.svg b/assets/vendor/heroicons/optimized/24/solid/table-cells.svg
new file mode 100644
index 0000000..151a30c
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/table-cells.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/tag.svg b/assets/vendor/heroicons/optimized/24/solid/tag.svg
new file mode 100644
index 0000000..efcd01b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/tag.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/ticket.svg b/assets/vendor/heroicons/optimized/24/solid/ticket.svg
new file mode 100644
index 0000000..e947c41
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/ticket.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/trash.svg b/assets/vendor/heroicons/optimized/24/solid/trash.svg
new file mode 100644
index 0000000..ed7bf43
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/trash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/trophy.svg b/assets/vendor/heroicons/optimized/24/solid/trophy.svg
new file mode 100644
index 0000000..ed7ee15
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/trophy.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/truck.svg b/assets/vendor/heroicons/optimized/24/solid/truck.svg
new file mode 100644
index 0000000..c218da6
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/truck.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/tv.svg b/assets/vendor/heroicons/optimized/24/solid/tv.svg
new file mode 100644
index 0000000..8f27026
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/tv.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/user-circle.svg b/assets/vendor/heroicons/optimized/24/solid/user-circle.svg
new file mode 100644
index 0000000..978d0b8
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/user-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/user-group.svg b/assets/vendor/heroicons/optimized/24/solid/user-group.svg
new file mode 100644
index 0000000..7ae7600
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/user-group.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/user-minus.svg b/assets/vendor/heroicons/optimized/24/solid/user-minus.svg
new file mode 100644
index 0000000..062a7c9
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/user-minus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/user-plus.svg b/assets/vendor/heroicons/optimized/24/solid/user-plus.svg
new file mode 100644
index 0000000..ef313fa
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/user-plus.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/user.svg b/assets/vendor/heroicons/optimized/24/solid/user.svg
new file mode 100644
index 0000000..207213d
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/user.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/users.svg b/assets/vendor/heroicons/optimized/24/solid/users.svg
new file mode 100644
index 0000000..2959115
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/users.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/variable.svg b/assets/vendor/heroicons/optimized/24/solid/variable.svg
new file mode 100644
index 0000000..5601cac
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/variable.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/video-camera-slash.svg b/assets/vendor/heroicons/optimized/24/solid/video-camera-slash.svg
new file mode 100644
index 0000000..2a344d5
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/video-camera-slash.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/video-camera.svg b/assets/vendor/heroicons/optimized/24/solid/video-camera.svg
new file mode 100644
index 0000000..55bf7b4
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/video-camera.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/view-columns.svg b/assets/vendor/heroicons/optimized/24/solid/view-columns.svg
new file mode 100644
index 0000000..f7295e3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/view-columns.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/viewfinder-circle.svg b/assets/vendor/heroicons/optimized/24/solid/viewfinder-circle.svg
new file mode 100644
index 0000000..e04b727
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/viewfinder-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/wallet.svg b/assets/vendor/heroicons/optimized/24/solid/wallet.svg
new file mode 100644
index 0000000..001b38a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/wallet.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/wifi.svg b/assets/vendor/heroicons/optimized/24/solid/wifi.svg
new file mode 100644
index 0000000..eb4fd4e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/wifi.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/window.svg b/assets/vendor/heroicons/optimized/24/solid/window.svg
new file mode 100644
index 0000000..4de83b3
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/window.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/wrench-screwdriver.svg b/assets/vendor/heroicons/optimized/24/solid/wrench-screwdriver.svg
new file mode 100644
index 0000000..b7e0e9e
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/wrench-screwdriver.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/wrench.svg b/assets/vendor/heroicons/optimized/24/solid/wrench.svg
new file mode 100644
index 0000000..3b61d5b
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/wrench.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/x-circle.svg b/assets/vendor/heroicons/optimized/24/solid/x-circle.svg
new file mode 100644
index 0000000..913782a
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/x-circle.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/heroicons/optimized/24/solid/x-mark.svg b/assets/vendor/heroicons/optimized/24/solid/x-mark.svg
new file mode 100644
index 0000000..e525a8f
--- /dev/null
+++ b/assets/vendor/heroicons/optimized/24/solid/x-mark.svg
@@ -0,0 +1,3 @@
+
+
+
diff --git a/assets/vendor/topbar.js b/assets/vendor/topbar.js
index 1f62209..4195727 100644
--- a/assets/vendor/topbar.js
+++ b/assets/vendor/topbar.js
@@ -1,6 +1,6 @@
/**
* @license MIT
- * topbar 1.0.0, 2021-01-06
+ * topbar 2.0.0, 2023-02-04
* https://buunguyen.github.io/topbar
* Copyright (c) 2021 Buu Nguyen
*/
@@ -35,10 +35,11 @@
})();
var canvas,
- progressTimerId,
- fadeTimerId,
currentProgress,
showing,
+ progressTimerId = null,
+ fadeTimerId = null,
+ delayTimerId = null,
addEvent = function (elem, type, handler) {
if (elem.addEventListener) elem.addEventListener(type, handler, false);
else if (elem.attachEvent) elem.attachEvent("on" + type, handler);
@@ -95,21 +96,26 @@
for (var key in opts)
if (options.hasOwnProperty(key)) options[key] = opts[key];
},
- show: function () {
+ show: function (delay) {
if (showing) return;
- showing = true;
- if (fadeTimerId !== null) window.cancelAnimationFrame(fadeTimerId);
- if (!canvas) createCanvas();
- canvas.style.opacity = 1;
- canvas.style.display = "block";
- topbar.progress(0);
- if (options.autoRun) {
- (function loop() {
- progressTimerId = window.requestAnimationFrame(loop);
- topbar.progress(
- "+" + 0.05 * Math.pow(1 - Math.sqrt(currentProgress), 2)
- );
- })();
+ if (delay) {
+ if (delayTimerId) return;
+ delayTimerId = setTimeout(() => topbar.show(), delay);
+ } else {
+ showing = true;
+ if (fadeTimerId !== null) window.cancelAnimationFrame(fadeTimerId);
+ if (!canvas) createCanvas();
+ canvas.style.opacity = 1;
+ canvas.style.display = "block";
+ topbar.progress(0);
+ if (options.autoRun) {
+ (function loop() {
+ progressTimerId = window.requestAnimationFrame(loop);
+ topbar.progress(
+ "+" + 0.05 * Math.pow(1 - Math.sqrt(currentProgress), 2)
+ );
+ })();
+ }
}
},
progress: function (to) {
@@ -125,6 +131,8 @@
return currentProgress;
},
hide: function () {
+ clearTimeout(delayTimerId);
+ delayTimerId = null;
if (!showing) return;
showing = false;
if (progressTimerId != null) {
diff --git a/config/config.exs b/config/config.exs
index 45241a0..8a377d3 100644
--- a/config/config.exs
+++ b/config/config.exs
@@ -11,11 +11,16 @@ config :homepage,
ecto_repos: [Homepage.Repo]
# Configures the endpoint
+host = System.get_env("PHX_HOST") || "localhost"
config :homepage, HomepageWeb.Endpoint,
- url: [host: "www.rdiedri.ch"],
- render_errors: [view: HomepageWeb.ErrorView, accepts: ~w(html json), layout: false],
+ adapter: Bandit.PhoenixAdapter,
+ url: [host: host],
+ render_errors: [
+ formats: [html: HomepageWeb.ErrorHTML, json: HomepageWeb.ErrorJSON],
+ layout: false
+ ],
pubsub_server: Homepage.PubSub,
- live_view: [signing_salt: "Ws4ex2xq"]
+ live_view: [signing_salt: "7d3vC+0c"]
# Configures the mailer
#
@@ -26,12 +31,9 @@ config :homepage, HomepageWeb.Endpoint,
# at the `config/runtime.exs`.
config :homepage, Homepage.Mailer, adapter: Swoosh.Adapters.Local
-# Swoosh API client is needed for adapters other than SMTP.
-config :swoosh, :api_client, false
-
# Configure esbuild (the version is required)
config :esbuild,
- version: "0.14.0",
+ version: "0.17.11",
default: [
args:
~w(js/app.js --bundle --target=es2017 --outdir=../priv/static/assets --external:/fonts/* --external:/images/*),
@@ -39,14 +41,17 @@ config :esbuild,
env: %{"NODE_PATH" => Path.expand("../deps", __DIR__)}
]
-config :tailwind, version: "3.0.24", default: [
- args: ~w(
- --config=tailwind.config.js
- --input=css/app.css
- --output=../priv/static/assets/app.css
- ),
- cd: Path.expand("../assets", __DIR__)
-]
+# Configure tailwind (the version is required)
+config :tailwind,
+ version: "3.2.7",
+ default: [
+ args: ~w(
+ --config=tailwind.config.js
+ --input=css/app.css
+ --output=../priv/static/assets/app.css
+ ),
+ cd: Path.expand("../assets", __DIR__)
+ ]
# Configures Elixir's Logger
config :logger, :console,
diff --git a/config/dev.exs b/config/dev.exs
index 8747b9a..2f3d752 100644
--- a/config/dev.exs
+++ b/config/dev.exs
@@ -5,8 +5,8 @@ config :homepage, Homepage.Repo,
username: "postgres",
password: "postgres",
hostname: "localhost",
- port: 5432,
database: "homepage_dev",
+ stacktrace: true,
show_sensitive_data_on_connection_error: true,
pool_size: 10
@@ -19,13 +19,12 @@ config :homepage, Homepage.Repo,
config :homepage, HomepageWeb.Endpoint,
# Binding to loopback ipv4 address prevents access from other machines.
# Change to `ip: {0, 0, 0, 0}` to allow access from other machines.
- http: [ip: {127, 0, 0, 1}, port: 4000],
+ http: [ip: {0, 0, 0, 0}, port: 4000],
check_origin: false,
code_reloader: true,
debug_errors: true,
- secret_key_base: "aKJ7SFuEOLy0I/zpYQbQZt9HEsRHNTGeNRhd0/RFBoxgWPIsWBtZ2qPilEo5A6yS",
+ secret_key_base: "HiJgYCX+1XEGvFg6ctjDGqP5aAaFzyCbSmqYVeFhvkLVqCGm94tYQ4m2WExOnMUj",
watchers: [
- # Start the esbuild watcher by calling Esbuild.install_and_run(:default, args)
esbuild: {Esbuild, :install_and_run, [:default, ~w(--sourcemap=inline --watch)]},
tailwind: {Tailwind, :install_and_run, [:default, ~w(--watch)]}
]
@@ -38,7 +37,6 @@ config :homepage, HomepageWeb.Endpoint,
#
# mix phx.gen.cert
#
-# Note that this task requires Erlang/OTP 20 or later.
# Run `mix help phx.gen.cert` for more information.
#
# The `http:` config above can be replaced with:
@@ -60,11 +58,13 @@ config :homepage, HomepageWeb.Endpoint,
patterns: [
~r"priv/static/.*(js|css|png|jpeg|jpg|gif|svg)$",
~r"priv/gettext/.*(po)$",
- ~r"lib/homepage_web/(live|views)/.*(ex)$",
- ~r"lib/homepage_web/templates/.*(eex)$"
+ ~r"lib/homepage_web/(controllers|live|components)/.*(ex|heex)$"
]
]
+# Enable dev routes for dashboard and mailbox
+config :homepage, dev_routes: true
+
# Do not include metadata nor timestamps in development logs
config :logger, :console, format: "[$level] $message\n"
@@ -74,3 +74,6 @@ config :phoenix, :stacktrace_depth, 20
# Initialize plugs at runtime for faster development compilation
config :phoenix, :plug_init_mode, :runtime
+
+# Disable swoosh api client as it is only required for production adapters.
+config :swoosh, :api_client, false
diff --git a/config/prod.exs b/config/prod.exs
index f18f782..ea1a10e 100644
--- a/config/prod.exs
+++ b/config/prod.exs
@@ -3,47 +3,20 @@ import Config
# For production, don't forget to configure the url host
# to something meaningful, Phoenix uses this information
# when generating URLs.
-#
+
# Note we also include the path to a cache manifest
# containing the digested version of static files. This
-# manifest is generated by the `mix phx.digest` task,
+# manifest is generated by the `mix assets.deploy` task,
# which you should run after static files are built and
# before starting your production server.
-config :homepage, HomepageWeb.Endpoint, cache_static_manifest: "priv/static/cache_manifest.json"
+config :homepage, HomepageWeb.Endpoint,
+ cache_static_manifest: "priv/static/cache_manifest.json"
+
+# Configures Swoosh API Client
+config :swoosh, api_client: Swoosh.ApiClient.Finch, finch_name: Homepage.Finch
# Do not print debug messages in production
config :logger, level: :info
-# ## SSL Support
-#
-# To get SSL working, you will need to add the `https` key
-# to the previous section and set your `:url` port to 443:
-#
-# config :homepage, HomepageWeb.Endpoint,
-# ...,
-# url: [host: "example.com", port: 443],
-# https: [
-# ...,
-# port: 443,
-# cipher_suite: :strong,
-# keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
-# certfile: System.get_env("SOME_APP_SSL_CERT_PATH")
-# ]
-#
-# The `cipher_suite` is set to `:strong` to support only the
-# latest and more secure SSL ciphers. This means old browsers
-# and clients may not be supported. You can set it to
-# `:compatible` for wider support.
-#
-# `:keyfile` and `:certfile` expect an absolute path to the key
-# and cert in disk or a relative path inside priv, for example
-# "priv/ssl/server.key". For all supported SSL configuration
-# options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
-#
-# We also recommend setting `force_ssl` in your endpoint, ensuring
-# no data is ever sent via http, always redirecting to https:
-#
-# config :homepage, HomepageWeb.Endpoint,
-# force_ssl: [hsts: true]
-#
-# Check `Plug.SSL` for all available options in `force_ssl`.
+# Runtime production configuration, including reading
+# of environment variables, is done on config/runtime.exs.
diff --git a/config/runtime.exs b/config/runtime.exs
index 74cf786..099716b 100644
--- a/config/runtime.exs
+++ b/config/runtime.exs
@@ -7,8 +7,16 @@ import Config
# any compile-time configuration in here, as it won't be applied.
# The block below contains prod specific runtime configuration.
-# Start the phoenix server if environment is set and running in a release
-if System.get_env("PHX_SERVER") && System.get_env("RELEASE_NAME") do
+# ## Using releases
+#
+# If you use `mix release`, you need to explicitly enable the server
+# by passing the PHX_SERVER=true when you start it:
+#
+# PHX_SERVER=true bin/homepage start
+#
+# Alternatively, you can use `mix phx.gen.release` to generate a `bin/server`
+# script that automatically sets the env var above.
+if System.get_env("PHX_SERVER") do
config :homepage, HomepageWeb.Endpoint, server: true
end
@@ -20,7 +28,7 @@ if config_env() == :prod do
For example: ecto://USER:PASS@HOST/DATABASE
"""
- maybe_ipv6 = if System.get_env("ECTO_IPV6"), do: [:inet6], else: []
+ maybe_ipv6 = if System.get_env("ECTO_IPV6") in ~w(true 1), do: [:inet6], else: []
config :homepage, Homepage.Repo,
# ssl: true,
@@ -41,10 +49,12 @@ if config_env() == :prod do
"""
host = System.get_env("PHX_HOST") || "example.com"
+ cdn = System.get_env("PHX_CDN") || "cdn.example.com"
port = String.to_integer(System.get_env("PORT") || "4000")
config :homepage, HomepageWeb.Endpoint,
- url: [host: host, port: 443],
+ url: [host: host, port: 443, scheme: "https"],
+ static_url: [host: cdn, port: 443, scheme: "https"],
http: [
# Enable IPv6 and bind on all interfaces.
# Set it to {0, 0, 0, 0, 0, 0, 0, 1} for local network only access.
@@ -55,15 +65,37 @@ if config_env() == :prod do
],
secret_key_base: secret_key_base
- # ## Using releases
+ # ## SSL Support
#
- # If you are doing OTP releases, you need to instruct Phoenix
- # to start each relevant endpoint:
+ # To get SSL working, you will need to add the `https` key
+ # to your endpoint configuration:
#
- # config :homepage, HomepageWeb.Endpoint, server: true
+ # config :homepage, HomepageWeb.Endpoint,
+ # https: [
+ # ...,
+ # port: 443,
+ # cipher_suite: :strong,
+ # keyfile: System.get_env("SOME_APP_SSL_KEY_PATH"),
+ # certfile: System.get_env("SOME_APP_SSL_CERT_PATH")
+ # ]
#
- # Then you can assemble a release by calling `mix release`.
- # See `mix help release` for more information.
+ # The `cipher_suite` is set to `:strong` to support only the
+ # latest and more secure SSL ciphers. This means old browsers
+ # and clients may not be supported. You can set it to
+ # `:compatible` for wider support.
+ #
+ # `:keyfile` and `:certfile` expect an absolute path to the key
+ # and cert in disk or a relative path inside priv, for example
+ # "priv/ssl/server.key". For all supported SSL configuration
+ # options, see https://hexdocs.pm/plug/Plug.SSL.html#configure/1
+ #
+ # We also recommend setting `force_ssl` in your endpoint, ensuring
+ # no data is ever sent via http, always redirecting to https:
+ #
+ # config :homepage, HomepageWeb.Endpoint,
+ # force_ssl: [hsts: true]
+ #
+ # Check `Plug.SSL` for all available options in `force_ssl`.
# ## Configuring the mailer
#
diff --git a/config/test.exs b/config/test.exs
index 65487b8..21423f4 100644
--- a/config/test.exs
+++ b/config/test.exs
@@ -17,14 +17,17 @@ config :homepage, Homepage.Repo,
# you can enable the server option below.
config :homepage, HomepageWeb.Endpoint,
http: [ip: {127, 0, 0, 1}, port: 4002],
- secret_key_base: "4edrZ1YcleMolqOLMfLxvi8oxi6ZkRxoibuMugj9rW+zr/bGKi0N+hz8sD++zLc/",
+ secret_key_base: "s2QyAnSkP8WskaN/HwxLPGg3XQ8iJfUnpGDbQepVZ7zyre5ZObEAhUqT3cqX28bV",
server: false
# In test we don't send emails.
config :homepage, Homepage.Mailer, adapter: Swoosh.Adapters.Test
+# Disable swoosh api client as it is only required for production adapters.
+config :swoosh, :api_client, false
+
# Print only warnings and errors during test
-config :logger, level: :warn
+config :logger, level: :warning
# Initialize plugs at runtime for faster test compilation
config :phoenix, :plug_init_mode, :runtime
diff --git a/lib/homepage/application.ex b/lib/homepage/application.ex
index 8a5d5f7..150596b 100644
--- a/lib/homepage/application.ex
+++ b/lib/homepage/application.ex
@@ -8,12 +8,14 @@ defmodule Homepage.Application do
@impl true
def start(_type, _args) do
children = [
- # Start the Ecto repository
- Homepage.Repo,
# Start the Telemetry supervisor
HomepageWeb.Telemetry,
+ # Start the Ecto repository
+ Homepage.Repo,
# Start the PubSub system
{Phoenix.PubSub, name: Homepage.PubSub},
+ # Start Finch
+ {Finch, name: Homepage.Finch},
# Start the Endpoint (http/https)
HomepageWeb.Endpoint
# Start a worker by calling: Homepage.Worker.start_link(arg)
diff --git a/lib/homepage/release.ex b/lib/homepage/release.ex
new file mode 100644
index 0000000..2f4dd6a
--- /dev/null
+++ b/lib/homepage/release.ex
@@ -0,0 +1,28 @@
+defmodule Homepage.Release do
+ @moduledoc """
+ Used for executing DB release tasks when run in production without Mix
+ installed.
+ """
+ @app :homepage
+
+ def migrate do
+ load_app()
+
+ for repo <- repos() do
+ {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :up, all: true))
+ end
+ end
+
+ def rollback(repo, version) do
+ load_app()
+ {:ok, _, _} = Ecto.Migrator.with_repo(repo, &Ecto.Migrator.run(&1, :down, to: version))
+ end
+
+ defp repos do
+ Application.fetch_env!(@app, :ecto_repos)
+ end
+
+ defp load_app do
+ Application.load(@app)
+ end
+end
diff --git a/lib/homepage_web.ex b/lib/homepage_web.ex
index dfc0b17..d5dc181 100644
--- a/lib/homepage_web.ex
+++ b/lib/homepage_web.ex
@@ -1,76 +1,30 @@
defmodule HomepageWeb do
@moduledoc """
The entrypoint for defining your web interface, such
- as controllers, views, channels and so on.
+ as controllers, components, channels, and so on.
This can be used in your application as:
use HomepageWeb, :controller
- use HomepageWeb, :view
+ use HomepageWeb, :html
- The definitions below will be executed for every view,
- controller, etc, so keep them short and clean, focused
+ The definitions below will be executed for every controller,
+ component, etc, so keep them short and clean, focused
on imports, uses and aliases.
Do NOT define functions inside the quoted expressions
- below. Instead, define any helper function in modules
- and import those modules here.
+ below. Instead, define additional modules and import
+ those modules here.
"""
- def controller do
- quote do
- use Phoenix.Controller, namespace: HomepageWeb
-
- import Plug.Conn
- import HomepageWeb.Gettext
- alias HomepageWeb.Router.Helpers, as: Routes
- end
- end
-
- def view do
- quote do
- use Phoenix.View,
- root: "lib/homepage_web/templates",
- namespace: HomepageWeb
-
- # Import convenience functions from controllers
- import Phoenix.Controller,
- only: [get_flash: 1, get_flash: 2, view_module: 1, view_template: 1]
-
- # Include shared imports and aliases for views
- unquote(view_helpers())
- end
- end
-
- def live_view do
- quote do
- use Phoenix.LiveView,
- layout: {HomepageWeb.LayoutView, "live.html"}
-
- unquote(view_helpers())
- end
- end
-
- def live_component do
- quote do
- use Phoenix.LiveComponent
-
- unquote(view_helpers())
- end
- end
-
- def component do
- quote do
- use Phoenix.Component
-
- unquote(view_helpers())
- end
- end
+ def static_paths, do: ~w(assets fonts images favicon.ico robots.txt)
+ def static_digested, do: ~w(android-chrome apple-touch-icon favicon site.webmanifest)
def router do
quote do
- use Phoenix.Router
+ use Phoenix.Router, helpers: false
+ # Import common connection and controller functions to use in pipelines
import Plug.Conn
import Phoenix.Controller
import Phoenix.LiveView.Router
@@ -80,24 +34,74 @@ defmodule HomepageWeb do
def channel do
quote do
use Phoenix.Channel
- import HomepageWeb.Gettext
end
end
- defp view_helpers do
+ def controller do
quote do
- # Use all HTML functionality (forms, tags, etc)
- use Phoenix.HTML
+ use Phoenix.Controller,
+ formats: [:html, :json],
+ layouts: [html: HomepageWeb.Layouts]
- # Import LiveView and .heex helpers (live_render, live_patch, <.form>, etc)
- import Phoenix.LiveView.Helpers
-
- # Import basic rendering functionality (render, render_layout, etc)
- import Phoenix.View
-
- import HomepageWeb.ErrorHelpers
+ import Plug.Conn
import HomepageWeb.Gettext
- alias HomepageWeb.Router.Helpers, as: Routes
+
+ unquote(verified_routes())
+ end
+ end
+
+ def live_view do
+ quote do
+ use Phoenix.LiveView,
+ layout: {HomepageWeb.Layouts, :app}
+
+ unquote(html_helpers())
+ end
+ end
+
+ def live_component do
+ quote do
+ use Phoenix.LiveComponent
+
+ unquote(html_helpers())
+ end
+ end
+
+ def html do
+ quote do
+ use Phoenix.Component
+
+ # Import convenience functions from controllers
+ import Phoenix.Controller,
+ only: [get_csrf_token: 0, view_module: 1, view_template: 1]
+
+ # Include general helpers for rendering HTML
+ unquote(html_helpers())
+ end
+ end
+
+ defp html_helpers do
+ quote do
+ # HTML escaping functionality
+ import Phoenix.HTML
+ # Core UI components and translation
+ import HomepageWeb.CoreComponents
+ import HomepageWeb.Gettext
+
+ # Shortcut for generating JS commands
+ alias Phoenix.LiveView.JS
+
+ # Routes generation with the ~p sigil
+ unquote(verified_routes())
+ end
+ end
+
+ def verified_routes do
+ quote do
+ use Phoenix.VerifiedRoutes,
+ endpoint: HomepageWeb.Endpoint,
+ router: HomepageWeb.Router,
+ statics: HomepageWeb.static_paths()
end
end
diff --git a/lib/homepage_web/components/core_components.ex b/lib/homepage_web/components/core_components.ex
new file mode 100644
index 0000000..76b8d26
--- /dev/null
+++ b/lib/homepage_web/components/core_components.ex
@@ -0,0 +1,640 @@
+defmodule HomepageWeb.CoreComponents do
+ @moduledoc """
+ Provides core UI components.
+
+ At the first glance, this module may seem daunting, but its goal is
+ to provide some core building blocks in your application, such modals,
+ tables, and forms. The components are mostly markup and well documented
+ with doc strings and declarative assigns. You may customize and style
+ them in any way you want, based on your application growth and needs.
+
+ The default components use Tailwind CSS, a utility-first CSS framework.
+ See the [Tailwind CSS documentation](https://tailwindcss.com) to learn
+ how to customize them or feel free to swap in another framework altogether.
+
+ Icons are provided by [heroicons](https://heroicons.com). See `icon/1` for usage.
+ """
+ use Phoenix.Component
+
+ alias Phoenix.LiveView.JS
+ import HomepageWeb.Gettext
+
+ @doc """
+ Renders a modal.
+
+ ## Examples
+
+ <.modal id="confirm-modal">
+ This is a modal.
+
+
+ JS commands may be passed to the `:on_cancel` to configure
+ the closing/cancel event, for example:
+
+ <.modal id="confirm" on_cancel={JS.navigate(~p"/posts")}>
+ This is another modal.
+
+
+ """
+ attr :id, :string, required: true
+ attr :show, :boolean, default: false
+ attr :on_cancel, JS, default: %JS{}
+ slot :inner_block, required: true
+
+ def modal(assigns) do
+ ~H"""
+
+
+
+
+
+ <.focus_wrap
+ id={"#{@id}-container"}
+ phx-window-keydown={JS.exec("data-cancel", to: "##{@id}")}
+ phx-key="escape"
+ phx-click-away={JS.exec("data-cancel", to: "##{@id}")}
+ class="shadow-zinc-700/10 ring-zinc-700/10 relative hidden rounded-2xl bg-white p-14 shadow-lg ring-1 transition"
+ >
+
+
+ <.icon name="hero-x-mark-solid" class="h-5 w-5" />
+
+
+
+ <%= render_slot(@inner_block) %>
+
+
+
+
+
+
+ """
+ end
+
+ @doc """
+ Renders flash notices.
+
+ ## Examples
+
+ <.flash kind={:info} flash={@flash} />
+ <.flash kind={:info} phx-mounted={show("#flash")}>Welcome Back!
+ """
+ attr :id, :string, default: "flash", doc: "the optional id of flash container"
+ attr :flash, :map, default: %{}, doc: "the map of flash messages to display"
+ attr :title, :string, default: nil
+ attr :kind, :atom, values: [:info, :error], doc: "used for styling and flash lookup"
+ attr :rest, :global, doc: "the arbitrary HTML attributes to add to the flash container"
+
+ slot :inner_block, doc: "the optional inner block that renders the flash message"
+
+ def flash(assigns) do
+ ~H"""
+
hide("##{@id}")}
+ role="alert"
+ class={[
+ "fixed top-2 right-2 w-80 sm:w-96 z-50 rounded-lg p-3 ring-1",
+ @kind == :info && "bg-emerald-50 text-emerald-800 ring-emerald-500 fill-cyan-900",
+ @kind == :error && "bg-rose-50 text-rose-900 shadow-md ring-rose-500 fill-rose-900"
+ ]}
+ {@rest}
+ >
+
+ <.icon :if={@kind == :info} name="hero-information-circle-mini" class="h-4 w-4" />
+ <.icon :if={@kind == :error} name="hero-exclamation-circle-mini" class="h-4 w-4" />
+ <%= @title %>
+
+
<%= msg %>
+
+ <.icon name="hero-x-mark-solid" class="h-5 w-5 opacity-40 group-hover:opacity-70" />
+
+
+ """
+ end
+
+ @doc """
+ Shows the flash group with standard titles and content.
+
+ ## Examples
+
+ <.flash_group flash={@flash} />
+ """
+ attr :flash, :map, required: true, doc: "the map of flash messages"
+
+ def flash_group(assigns) do
+ ~H"""
+ <.flash kind={:info} title="Success!" flash={@flash} />
+ <.flash kind={:error} title="Error!" flash={@flash} />
+ <.flash
+ id="disconnected"
+ kind={:error}
+ title="We can't find the internet"
+ phx-disconnected={show("#disconnected")}
+ phx-connected={hide("#disconnected")}
+ hidden
+ >
+ Attempting to reconnect <.icon name="hero-arrow-path" class="ml-1 h-3 w-3 animate-spin" />
+
+ """
+ end
+
+ @doc """
+ Renders a simple form.
+
+ ## Examples
+
+ <.simple_form for={@form} phx-change="validate" phx-submit="save">
+ <.input field={@form[:email]} label="Email"/>
+ <.input field={@form[:username]} label="Username" />
+ <:actions>
+ <.button>Save
+
+
+ """
+ attr :for, :any, required: true, doc: "the datastructure for the form"
+ attr :as, :any, default: nil, doc: "the server side parameter to collect all input under"
+
+ attr :rest, :global,
+ include: ~w(autocomplete name rel action enctype method novalidate target),
+ doc: "the arbitrary HTML attributes to apply to the form tag"
+
+ slot :inner_block, required: true
+ slot :actions, doc: "the slot for form actions, such as a submit button"
+
+ def simple_form(assigns) do
+ ~H"""
+ <.form :let={f} for={@for} as={@as} {@rest}>
+
+ <%= render_slot(@inner_block, f) %>
+
+ <%= render_slot(action, f) %>
+
+
+
+ """
+ end
+
+ @doc """
+ Renders a button.
+
+ ## Examples
+
+ <.button>Send!
+ <.button phx-click="go" class="ml-2">Send!
+ """
+ attr :type, :string, default: nil
+ attr :class, :string, default: nil
+ attr :rest, :global, include: ~w(disabled form name value)
+
+ slot :inner_block, required: true
+
+ def button(assigns) do
+ ~H"""
+
+ <%= render_slot(@inner_block) %>
+
+ """
+ end
+
+ @doc """
+ Renders an input with label and error messages.
+
+ A `%Phoenix.HTML.Form{}` and field name may be passed to the input
+ to build input names and error messages, or all the attributes and
+ errors may be passed explicitly.
+
+ ## Examples
+
+ <.input field={@form[:email]} type="email" />
+ <.input name="my-input" errors={["oh no!"]} />
+ """
+ attr :id, :any, default: nil
+ attr :name, :any
+ attr :label, :string, default: nil
+ attr :value, :any
+
+ attr :type, :string,
+ default: "text",
+ values: ~w(checkbox color date datetime-local email file hidden month number password
+ range radio search select tel text textarea time url week)
+
+ attr :field, Phoenix.HTML.FormField,
+ doc: "a form field struct retrieved from the form, for example: @form[:email]"
+
+ attr :errors, :list, default: []
+ attr :checked, :boolean, doc: "the checked flag for checkbox inputs"
+ attr :prompt, :string, default: nil, doc: "the prompt for select inputs"
+ attr :options, :list, doc: "the options to pass to Phoenix.HTML.Form.options_for_select/2"
+ attr :multiple, :boolean, default: false, doc: "the multiple flag for select inputs"
+
+ attr :rest, :global,
+ include: ~w(autocomplete cols disabled form list max maxlength min minlength
+ pattern placeholder readonly required rows size step)
+
+ slot :inner_block
+
+ def input(%{field: %Phoenix.HTML.FormField{} = field} = assigns) do
+ assigns
+ |> assign(field: nil, id: assigns.id || field.id)
+ |> assign(:errors, Enum.map(field.errors, &translate_error(&1)))
+ |> assign_new(:name, fn -> if assigns.multiple, do: field.name <> "[]", else: field.name end)
+ |> assign_new(:value, fn -> field.value end)
+ |> input()
+ end
+
+ def input(%{type: "checkbox", value: value} = assigns) do
+ assigns =
+ assign_new(assigns, :checked, fn -> Phoenix.HTML.Form.normalize_value("checkbox", value) end)
+
+ ~H"""
+
+
+
+
+ <%= @label %>
+
+ <.error :for={msg <- @errors}><%= msg %>
+
+ """
+ end
+
+ def input(%{type: "select"} = assigns) do
+ ~H"""
+
+ <.label for={@id}><%= @label %>
+
+ <%= @prompt %>
+ <%= Phoenix.HTML.Form.options_for_select(@options, @value) %>
+
+ <.error :for={msg <- @errors}><%= msg %>
+
+ """
+ end
+
+ def input(%{type: "textarea"} = assigns) do
+ ~H"""
+
+ <.label for={@id}><%= @label %>
+
+ <.error :for={msg <- @errors}><%= msg %>
+
+ """
+ end
+
+ # All other inputs text, datetime-local, url, password, etc. are handled here...
+ def input(assigns) do
+ ~H"""
+
+ <.label for={@id}><%= @label %>
+
+ <.error :for={msg <- @errors}><%= msg %>
+
+ """
+ end
+
+ @doc """
+ Renders a label.
+ """
+ attr :for, :string, default: nil
+ slot :inner_block, required: true
+
+ def label(assigns) do
+ ~H"""
+
+ <%= render_slot(@inner_block) %>
+
+ """
+ end
+
+ @doc """
+ Generates a generic error message.
+ """
+ slot :inner_block, required: true
+
+ def error(assigns) do
+ ~H"""
+
+ <.icon name="hero-exclamation-circle-mini" class="mt-0.5 h-5 w-5 flex-none" />
+ <%= render_slot(@inner_block) %>
+
+ """
+ end
+
+ @doc """
+ Renders a header with title.
+ """
+ attr :class, :string, default: nil
+
+ slot :inner_block, required: true
+ slot :subtitle
+ slot :actions
+
+ def header(assigns) do
+ ~H"""
+
+ """
+ end
+
+ @doc ~S"""
+ Renders a table with generic styling.
+
+ ## Examples
+
+ <.table id="users" rows={@users}>
+ <:col :let={user} label="id"><%= user.id %>
+ <:col :let={user} label="username"><%= user.username %>
+
+ """
+ attr :id, :string, required: true
+ attr :rows, :list, required: true
+ attr :row_id, :any, default: nil, doc: "the function for generating the row id"
+ attr :row_click, :any, default: nil, doc: "the function for handling phx-click on each row"
+
+ attr :row_item, :any,
+ default: &Function.identity/1,
+ doc: "the function for mapping each row before calling the :col and :action slots"
+
+ slot :col, required: true do
+ attr :label, :string
+ end
+
+ slot :action, doc: "the slot for showing user actions in the last table column"
+
+ def table(assigns) do
+ assigns =
+ with %{rows: %Phoenix.LiveView.LiveStream{}} <- assigns do
+ assign(assigns, row_id: assigns.row_id || fn {id, _item} -> id end)
+ end
+
+ ~H"""
+
+
+
+
+ <%= col[:label] %>
+ <%= gettext("Actions") %>
+
+
+
+
+
+
+
+
+ <%= render_slot(col, @row_item.(row)) %>
+
+
+
+
+
+
+
+ <%= render_slot(action, @row_item.(row)) %>
+
+
+
+
+
+
+
+ """
+ end
+
+ @doc """
+ Renders a data list.
+
+ ## Examples
+
+ <.list>
+ <:item title="Title"><%= @post.title %>
+ <:item title="Views"><%= @post.views %>
+
+ """
+ slot :item, required: true do
+ attr :title, :string, required: true
+ end
+
+ def list(assigns) do
+ ~H"""
+
+
+
+
<%= item.title %>
+ <%= render_slot(item) %>
+
+
+
+ """
+ end
+
+ @doc """
+ Renders a back navigation link.
+
+ ## Examples
+
+ <.back navigate={~p"/posts"}>Back to posts
+ """
+ attr :navigate, :any, required: true
+ slot :inner_block, required: true
+
+ def back(assigns) do
+ ~H"""
+
+ <.link
+ navigate={@navigate}
+ class="text-sm font-semibold leading-6 text-zinc-900 hover:text-zinc-700"
+ >
+ <.icon name="hero-arrow-left-solid" class="h-3 w-3" />
+ <%= render_slot(@inner_block) %>
+
+
+ """
+ end
+
+ @doc """
+ Renders a [Hero Icon](https://heroicons.com).
+
+ Hero icons come in three styles – outline, solid, and mini.
+ By default, the outline style is used, but solid an mini may
+ be applied by using the `-solid` and `-mini` suffix.
+
+ You can customize the size and colors of the icons by setting
+ width, height, and background color classes.
+
+ Icons are extracted from your `assets/vendor/heroicons` directory and bundled
+ within your compiled app.css by the plugin in your `assets/tailwind.config.js`.
+
+ ## Examples
+
+ <.icon name="hero-x-mark-solid" />
+ <.icon name="hero-arrow-path" class="ml-1 w-3 h-3 animate-spin" />
+ """
+ attr :name, :string, required: true
+ attr :class, :string, default: nil
+
+ def icon(%{name: "hero-" <> _} = assigns) do
+ ~H"""
+
+ """
+ end
+
+ ## JS Commands
+
+ def show(js \\ %JS{}, selector) do
+ JS.show(js,
+ to: selector,
+ transition:
+ {"transition-all transform ease-out duration-300",
+ "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
+ "opacity-100 translate-y-0 sm:scale-100"}
+ )
+ end
+
+ def hide(js \\ %JS{}, selector) do
+ JS.hide(js,
+ to: selector,
+ time: 200,
+ transition:
+ {"transition-all transform ease-in duration-200",
+ "opacity-100 translate-y-0 sm:scale-100",
+ "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95"}
+ )
+ end
+
+ def show_modal(js \\ %JS{}, id) when is_binary(id) do
+ js
+ |> JS.show(to: "##{id}")
+ |> JS.show(
+ to: "##{id}-bg",
+ transition: {"transition-all transform ease-out duration-300", "opacity-0", "opacity-100"}
+ )
+ |> show("##{id}-container")
+ |> JS.add_class("overflow-hidden", to: "body")
+ |> JS.focus_first(to: "##{id}-content")
+ end
+
+ def hide_modal(js \\ %JS{}, id) do
+ js
+ |> JS.hide(
+ to: "##{id}-bg",
+ transition: {"transition-all transform ease-in duration-200", "opacity-100", "opacity-0"}
+ )
+ |> hide("##{id}-container")
+ |> JS.hide(to: "##{id}", transition: {"block", "block", "hidden"})
+ |> JS.remove_class("overflow-hidden", to: "body")
+ |> JS.pop_focus()
+ end
+
+ @doc """
+ Translates an error message using gettext.
+ """
+ def translate_error({msg, opts}) do
+ # When using gettext, we typically pass the strings we want
+ # to translate as a static argument:
+ #
+ # # Translate the number of files with plural rules
+ # dngettext("errors", "1 file", "%{count} files", count)
+ #
+ # However the error messages in our forms and APIs are generated
+ # dynamically, so we need to translate them by calling Gettext
+ # with our gettext backend as first argument. Translations are
+ # available in the errors.po file (as we use the "errors" domain).
+ if count = opts[:count] do
+ Gettext.dngettext(HomepageWeb.Gettext, "errors", msg, msg, count, opts)
+ else
+ Gettext.dgettext(HomepageWeb.Gettext, "errors", msg, opts)
+ end
+ end
+
+ @doc """
+ Translates the errors for a field from a keyword list of errors.
+ """
+ def translate_errors(errors, field) when is_list(errors) do
+ for {^field, {msg, opts}} <- errors, do: translate_error({msg, opts})
+ end
+end
diff --git a/lib/homepage_web/components/helper_components.ex b/lib/homepage_web/components/helper_components.ex
new file mode 100644
index 0000000..71d196c
--- /dev/null
+++ b/lib/homepage_web/components/helper_components.ex
@@ -0,0 +1,63 @@
+defmodule HomepageWeb.HelperComponents do
+ use HomepageWeb, :html
+
+ slot :label, required: true
+ slot :entry, default: []
+ def dropdown(assigns) do
+ ~H"""
+
+
+ <%= render_slot(@label) %>
+
+
+
+ <%= render_slot(ent) %>
+
+
+
+ """
+ end
+
+ slot :inner_block, required: true
+ def markdown(assigns) do
+ ~H"""
+ <%= render_slot(@inner_block)
+ |> slot_markdown_as_html()
+ |> raw()
+ %>
+ """
+ end
+
+ defp slot_markdown_as_html(%{dynamic: dynamic_slot, static: ["", ""]}) do
+ [slot] = dynamic_slot.(false)
+ slot |> slot_markdown_as_html()
+ end
+
+ defp slot_markdown_as_html(rendered_slot) do
+ %{static: [markdown]} = rendered_slot
+
+ trim_leading_space(markdown)
+ |> String.replace(~S("\""), ~S("""), global: true)
+ |> Earmark.as_html!(compact_output: true)
+ end
+
+ defp trim_leading_space(markdown) do
+ lines =
+ markdown
+ |> String.split("\n")
+ |> Enum.drop_while(fn str -> String.trim(str) == "" end)
+
+ case lines do
+ [first | _] ->
+ [space] = Regex.run(~r/^\s*/, first)
+
+ lines
+ |> Enum.map(fn line -> String.replace_prefix(line, space, "") end)
+ |> Enum.join("\n")
+
+ _ ->
+ ""
+ end
+ end
+end
\ No newline at end of file
diff --git a/lib/homepage_web/components/layouts.ex b/lib/homepage_web/components/layouts.ex
new file mode 100644
index 0000000..7fac3ab
--- /dev/null
+++ b/lib/homepage_web/components/layouts.ex
@@ -0,0 +1,6 @@
+defmodule HomepageWeb.Layouts do
+ use HomepageWeb, :html
+ import HomepageWeb.HelperComponents
+
+ embed_templates "layouts/*"
+end
diff --git a/lib/homepage_web/components/layouts/app.html.heex b/lib/homepage_web/components/layouts/app.html.heex
new file mode 100644
index 0000000..6cb1212
--- /dev/null
+++ b/lib/homepage_web/components/layouts/app.html.heex
@@ -0,0 +1,32 @@
+
+ <.dropdown>
+ <:label>@rdiedrich
+ <:entry>
+ <.link
+ title="send an e-mail"
+ href="mailto:hallo@rdiedri.ch">
+ <.icon name="hero-envelope" />
+ hallo@rdiedri.ch
+
+
+
+ <:entry>
+ <.link
+ title="chat with me on matrix"
+ href="https://matrix.to/#/@rdiedrich:matrix.org"
+ target="_blank">
+ <.icon name="hero-chat-bubble-bottom-center-text" />
+ @rdiedrich:matrix.org
+
+
+
+
+
+
+
+ <.flash_group flash={@flash} />
+ <%= @inner_content %>
+
+
+
\ No newline at end of file
diff --git a/lib/homepage_web/components/layouts/root.html.heex b/lib/homepage_web/components/layouts/root.html.heex
new file mode 100644
index 0000000..fddd7bd
--- /dev/null
+++ b/lib/homepage_web/components/layouts/root.html.heex
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+ <.live_title suffix="">
+ <%= assigns[:page_title] || "Homepage" %>
+
+
+
+
+
+
+
+
+
+ <%= @inner_content %>
+
+
diff --git a/lib/homepage_web/controllers/error_html.ex b/lib/homepage_web/controllers/error_html.ex
new file mode 100644
index 0000000..3452629
--- /dev/null
+++ b/lib/homepage_web/controllers/error_html.ex
@@ -0,0 +1,19 @@
+defmodule HomepageWeb.ErrorHTML do
+ use HomepageWeb, :html
+
+ # If you want to customize your error pages,
+ # uncomment the embed_templates/1 call below
+ # and add pages to the error directory:
+ #
+ # * lib/homepage_web/controllers/error_html/404.html.heex
+ # * lib/homepage_web/controllers/error_html/500.html.heex
+ #
+ # embed_templates "error_html/*"
+
+ # The default is to render a plain text page based on
+ # the template name. For example, "404.html" becomes
+ # "Not Found".
+ def render(template, _assigns) do
+ Phoenix.Controller.status_message_from_template(template)
+ end
+end
diff --git a/lib/homepage_web/controllers/error_json.ex b/lib/homepage_web/controllers/error_json.ex
new file mode 100644
index 0000000..8c54b3e
--- /dev/null
+++ b/lib/homepage_web/controllers/error_json.ex
@@ -0,0 +1,15 @@
+defmodule HomepageWeb.ErrorJSON do
+ # If you want to customize a particular status code,
+ # you may add your own clauses, such as:
+ #
+ # def render("500.json", _assigns) do
+ # %{errors: %{detail: "Internal Server Error"}}
+ # end
+
+ # By default, Phoenix returns the status message from
+ # the template name. For example, "404.json" becomes
+ # "Not Found".
+ def render(template, _assigns) do
+ %{errors: %{detail: Phoenix.Controller.status_message_from_template(template)}}
+ end
+end
diff --git a/lib/homepage_web/controllers/page_controller.ex b/lib/homepage_web/controllers/page_controller.ex
index 4355e8a..64fb089 100644
--- a/lib/homepage_web/controllers/page_controller.ex
+++ b/lib/homepage_web/controllers/page_controller.ex
@@ -1,7 +1,10 @@
defmodule HomepageWeb.PageController do
use HomepageWeb, :controller
- def index(conn, _params) do
- render(conn, "index.html")
+ def home(conn, _params) do
+ # The home page is often custom made,
+ # so skip the default app layout.
+ #render(conn, :home, layout: false)
+ render(conn, :home)
end
end
diff --git a/lib/homepage_web/controllers/page_html.ex b/lib/homepage_web/controllers/page_html.ex
new file mode 100644
index 0000000..99cf6ab
--- /dev/null
+++ b/lib/homepage_web/controllers/page_html.ex
@@ -0,0 +1,34 @@
+defmodule HomepageWeb.PageHTML do
+ use HomepageWeb, :html
+ import HomepageWeb.HelperComponents
+
+ embed_templates "page_html/*"
+
+ attr :url, :string, required: true
+ attr :forge_url, :string, default: nil
+ slot :inner_block, required: true
+ slot :title, required: true
+ def project(assigns) do
+ ~H"""
+
+ <.link target="_blank" class="" href={@url}>
+
<%= render_slot(@title) %>
+
+
+ <.markdown><%= render_slot(@inner_block) %>
+
+
+ <.link target="_blank" href={@url} class="icon-link">
+ <.icon name="hero-arrow-top-right-on-square" />
+ Visit website
+
+
+ <.link target="_blank" href={@forge_url} :if={@forge_url} class="icon-link">
+ <.icon name="hero-code-bracket-square" />
+ See the code
+
+
+
+ """
+ end
+end
diff --git a/lib/homepage_web/controllers/page_html/home.html.heex b/lib/homepage_web/controllers/page_html/home.html.heex
new file mode 100644
index 0000000..22748a9
--- /dev/null
+++ b/lib/homepage_web/controllers/page_html/home.html.heex
@@ -0,0 +1,42 @@
+
+ about
+ <.markdown>
+ Hi, my name is **Rüdiger Diedrich** and this is my homepage.
+
+ For the last couple of years I am a big proponent of the Elixir and
+ Erlang/OTP ecosystem: be it projects like Phoenix framework which
+ bends the rules of traditional client-server-based web development
+ or Livebook - built on top of Phoenix - which for me is simply the
+ next generation of interactive notebooks and completely changed
+ the way I go about prototyping and data analysis.
+
+ Check out some of the projects I've been working on.
+
+
+
+
+ projects
+ <.project
+ url="https://chicken.rdiedri.ch"
+ forge_url="https://forge.rdiedri.ch/rdiedrich/exponential-chicken-egg">
+ <:title>Exponential Chicken Egg
+ The chicken is very busy.
+ 100% implemented in Phoenix Liveview. Press spacebar (or tap) for fun.
+
+ <.project
+ url="https://app.rdiedri.ch"
+ forge_url="https://forge.rdiedri.ch/rdiedrich/physics">
+ <:title>Physics
+ Random falling blocks under the yoke of gravity.
+ Typescript using the pixi engine. Click or tap a block to give it a boost.
+
+ <.project
+ url="https://colorer.vercel.app"
+ forge_url="https://forge.rdiedri.ch/rdiedrich/colorer">
+ <:title>Colorer
+ Play around with HSLA color.
+ Reactive app show-casing SolidJS, deployed on vercel.
+
+
+
+
a
\ No newline at end of file
diff --git a/lib/homepage_web/controllers/page_html/phoenix.html.heex b/lib/homepage_web/controllers/page_html/phoenix.html.heex
new file mode 100644
index 0000000..70980a5
--- /dev/null
+++ b/lib/homepage_web/controllers/page_html/phoenix.html.heex
@@ -0,0 +1,17 @@
+
+Phoenix framework
+<.markdown>
+ Phoenix is enabling developers to built concurrent distributed
+ systems without the technological and mental overhead this usually
+ requires, while also offering modern frontend engineering principles
+ in component-based design.
+ On the other side of the equation, end-users can expect highly
+ interactive applications with built-in live collaboration and
+ featuring user interfaces that feel snappy to use and are also
+ pretty to look at.
+
+ And all of this at a fraction of the needed ressources on the
+ engineering side to built as well as on the infrastructure side
+ to run these systems.
+
+
diff --git a/lib/homepage_web/controllers/resume_controller.ex b/lib/homepage_web/controllers/resume_controller.ex
deleted file mode 100644
index 2dd231e..0000000
--- a/lib/homepage_web/controllers/resume_controller.ex
+++ /dev/null
@@ -1,7 +0,0 @@
-defmodule HomepageWeb.ResumeController do
- use HomepageWeb, :controller
-
- def index(conn, _params) do
- render(conn, "index.html")
- end
-end
diff --git a/lib/homepage_web/endpoint.ex b/lib/homepage_web/endpoint.ex
index 7676b62..a5ea4c1 100644
--- a/lib/homepage_web/endpoint.ex
+++ b/lib/homepage_web/endpoint.ex
@@ -7,7 +7,8 @@ defmodule HomepageWeb.Endpoint do
@session_options [
store: :cookie,
key: "_homepage_key",
- signing_salt: "HBldD12f"
+ signing_salt: "gxQ6oTQt",
+ same_site: "Lax"
]
socket "/live", Phoenix.LiveView.Socket, websocket: [connect_info: [session: @session_options]]
@@ -19,8 +20,10 @@ defmodule HomepageWeb.Endpoint do
plug Plug.Static,
at: "/",
from: :homepage,
- gzip: false,
- only: ~w(assets fonts images favicon.ico robots.txt)
+ headers: [{"access-control-allow-origin", "*"}],
+ gzip: true,
+ only_matching: HomepageWeb.static_digested(),
+ only: HomepageWeb.static_paths()
# Code reloading can be explicitly enabled under the
# :code_reloader configuration of your endpoint.
diff --git a/lib/homepage_web/icons.ex b/lib/homepage_web/icons.ex
deleted file mode 100644
index 586057f..0000000
--- a/lib/homepage_web/icons.ex
+++ /dev/null
@@ -1,37 +0,0 @@
-defmodule HomepageWeb.Icons do
- import Phoenix.LiveView.Helpers
-
- @priv_dir Path.join(:code.priv_dir(:homepage), "icons")
- @repo_url "https://github.com/CoreyGinnivan/system-uicons.git"
-
- System.cmd("rm", ["-rf", Path.join(@priv_dir, "system-uicons")])
- System.cmd("git", ["clone", "--depth=1", @repo_url, Path.join(@priv_dir, "system-uicons")])
-
- source_data = File.read!(Path.join(@priv_dir, "system-uicons/src/js/data.js"))
-
- <<"var sourceData = "::utf8 , rest::binary>> = source_data
- # remove trailing semicolon
- sslice = String.slice(rest, 0..-3//1)
- # quote object keys
- quote_keys = Regex.replace(~r/([\w_]+):/, sslice, "\"\\1\":")
- # remove trailing commas
- rm_trailing_commas = Regex.replace(~r/,\s+(}|])/, quote_keys, "\\1")
- icon_data = Jason.decode!(rm_trailing_commas)
-
- icon_map = Enum.map(icon_data, fn %{"icon_path" => path} = icon ->
- svg = File.read!(Path.join(@priv_dir, "system-uicons/src/images/icons/#{path}.svg"))
- Map.put_new(icon, "icon_svg", svg)
- |> Map.new(fn {k, v} -> {String.to_atom(k), v} end)
- end)
-
- for %{icon_path: path, icon_svg: svg} <- icon_map do
- def unquote(String.to_atom(path))(assigns) do
- svg = unquote(svg)
- ~H"""
-
- <%= Phoenix.HTML.raw svg %>
-
- """
- end
- end
-end
diff --git a/lib/homepage_web/router.ex b/lib/homepage_web/router.ex
index 17cb0d5..261d070 100644
--- a/lib/homepage_web/router.ex
+++ b/lib/homepage_web/router.ex
@@ -5,7 +5,7 @@ defmodule HomepageWeb.Router do
plug :accepts, ["html"]
plug :fetch_session
plug :fetch_live_flash
- plug :put_root_layout, {HomepageWeb.LayoutView, :root}
+ plug :put_root_layout, {HomepageWeb.Layouts, :root}
plug :protect_from_forgery
plug :put_secure_browser_headers
end
@@ -17,8 +17,7 @@ defmodule HomepageWeb.Router do
scope "/", HomepageWeb do
pipe_through :browser
- get "/", PageController, :index
- get "/resume", ResumeController, :index
+ get "/", PageController, :home
end
# Other scopes may use custom stacks.
@@ -26,31 +25,19 @@ defmodule HomepageWeb.Router do
# pipe_through :api
# end
- # Enables LiveDashboard only for development
- #
- # If you want to use the LiveDashboard in production, you should put
- # it behind authentication and allow only admins to access it.
- # If your application does not have an admins-only section yet,
- # you can use Plug.BasicAuth to set up some basic authentication
- # as long as you are also using SSL (which you should anyway).
- if Mix.env() in [:dev, :test] do
+ # Enable LiveDashboard and Swoosh mailbox preview in development
+ if Application.compile_env(:homepage, :dev_routes) do
+ # If you want to use the LiveDashboard in production, you should put
+ # it behind authentication and allow only admins to access it.
+ # If your application does not have an admins-only section yet,
+ # you can use Plug.BasicAuth to set up some basic authentication
+ # as long as you are also using SSL (which you should anyway).
import Phoenix.LiveDashboard.Router
- scope "/" do
- pipe_through :browser
-
- live_dashboard "/dashboard", metrics: HomepageWeb.Telemetry
- end
- end
-
- # Enables the Swoosh mailbox preview in development.
- #
- # Note that preview only shows emails that were sent by the same
- # node running the Phoenix server.
- if Mix.env() == :dev do
scope "/dev" do
pipe_through :browser
+ live_dashboard "/dashboard", metrics: HomepageWeb.Telemetry
forward "/mailbox", Plug.Swoosh.MailboxPreview
end
end
diff --git a/lib/homepage_web/telemetry.ex b/lib/homepage_web/telemetry.ex
index 9779fdb..82d1d0a 100644
--- a/lib/homepage_web/telemetry.ex
+++ b/lib/homepage_web/telemetry.ex
@@ -22,13 +22,34 @@ defmodule HomepageWeb.Telemetry do
def metrics do
[
# Phoenix Metrics
+ summary("phoenix.endpoint.start.system_time",
+ unit: {:native, :millisecond}
+ ),
summary("phoenix.endpoint.stop.duration",
unit: {:native, :millisecond}
),
+ summary("phoenix.router_dispatch.start.system_time",
+ tags: [:route],
+ unit: {:native, :millisecond}
+ ),
+ summary("phoenix.router_dispatch.exception.duration",
+ tags: [:route],
+ unit: {:native, :millisecond}
+ ),
summary("phoenix.router_dispatch.stop.duration",
tags: [:route],
unit: {:native, :millisecond}
),
+ summary("phoenix.socket_connected.duration",
+ unit: {:native, :millisecond}
+ ),
+ summary("phoenix.channel_join.duration",
+ unit: {:native, :millisecond}
+ ),
+ summary("phoenix.channel_handled_in.duration",
+ tags: [:event],
+ unit: {:native, :millisecond}
+ ),
# Database Metrics
summary("homepage.repo.query.total_time",
diff --git a/lib/homepage_web/templates/layout/app.html.heex b/lib/homepage_web/templates/layout/app.html.heex
deleted file mode 100644
index f06c675..0000000
--- a/lib/homepage_web/templates/layout/app.html.heex
+++ /dev/null
@@ -1,5 +0,0 @@
-
- <%= get_flash(@conn, :info) %>
- <%= get_flash(@conn, :error) %>
- <%= @inner_content %>
-
diff --git a/lib/homepage_web/templates/layout/live.html.heex b/lib/homepage_web/templates/layout/live.html.heex
deleted file mode 100644
index a29d604..0000000
--- a/lib/homepage_web/templates/layout/live.html.heex
+++ /dev/null
@@ -1,11 +0,0 @@
-
- <%= live_flash(@flash, :info) %>
-
- <%= live_flash(@flash, :error) %>
-
- <%= @inner_content %>
-
diff --git a/lib/homepage_web/templates/layout/root.html.heex b/lib/homepage_web/templates/layout/root.html.heex
deleted file mode 100644
index 07016a3..0000000
--- a/lib/homepage_web/templates/layout/root.html.heex
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
- <%= csrf_meta_tag() %>
- <%= live_title_tag assigns[:page_title] || "rdiedri.ch", suffix: "" %>
-
-
-
-
- <%= @inner_content %>
-
-
diff --git a/lib/homepage_web/templates/page/index.html.heex b/lib/homepage_web/templates/page/index.html.heex
deleted file mode 100644
index 68df090..0000000
--- a/lib/homepage_web/templates/page/index.html.heex
+++ /dev/null
@@ -1,3 +0,0 @@
-
- ch
-
diff --git a/lib/homepage_web/templates/resume/index.html.heex b/lib/homepage_web/templates/resume/index.html.heex
deleted file mode 100644
index 2f3e378..0000000
--- a/lib/homepage_web/templates/resume/index.html.heex
+++ /dev/null
@@ -1,103 +0,0 @@
-
-
-
-
-
-
-
-
-
-
- <.article heading="Berufserfahrung">
- <.para
- heading="Spectrum Wirtschaftswerbung"
- subheading="April 2019 – heute">
- Produktentwicklung Augmented Reality, Online-Magazin;
- Projektleitung, technische Betreuung, Web-Entwicklung, Web-Design
-
-
-
- <.para
- heading="Selbstständige Tätigkeit, Magdeburg"
- subheading="Oktober 2010 – April 2019">
- u.a. Abtshof: Webdesign, Logopädische Praxis - Katharina Neils: Webdesign
-
-
- <.para
- heading="Galerie Atelier Bischof, Karlsruhe"
- subheading="2010">
-
- Erfahrungen im Bereich Kommunikationsdesign, Erweiterung von wordpress-Systemen, Entwicklung einer E-Commerce-Lösung basierend auf Satchmo, Frontend-Design und Umsetzung
-
- <.para
- heading="scriptmesh, Karlsruhe"
- subheading="November 2009 – Mai 2010">
-
- Software-Entwickler in einem Startup, Planung, Entwurf und Entwicklung einer Dokumenten-Archivierung- und Ausstausch-Plattform
-
-
- <.para
- heading="brandmaker GmbH, Karlsruhe"
- subheading="Mai 2008 – Oktober 2009">
-
- PHP-Entwickler, Frontend-Entwickler, Projektleitung, Kundenbetreuung, Wartung und Weiterentwicklung des hauseigenen CMS „OSIRIS“, Template-Programmierung
-
-
- <.para
- heading="Stadtjugendausschuss Karlsruhe"
- subheading="Oktober 2007 – Mai 2008">
-
- IT-Assistent und Assistent der Medienpädagogik, Einrichtung und Wartung der Desktop-Computer und der mobilen Computeranlage, Betreuung und Schulung von Kindern und Jugendlichen in einem Internet-Café sowie in Computer-Kursen
-
-
- <.para
- heading="Chrystall-Net, Magdeburg"
- subheading="September 2003 - Juli 2005">
-
- Entwicklung einer Spieleseite, Datenbank-Programmierung, Benutzermanagement
-
-
-
- <.article heading="Projekte">
-
-
-
- <.article
- heading="Kompetenzen">
-
-
- <.article
- heading="Bildung">
-
- <.para
- heading="Karlsruher Institut für Technologie"
- subheading="Oktober 2005 – September 2007">
- Informatikstudium, Diplomstudiengang
-
-
- <.para
- heading="Otto-v-Guericke-Universität Magdeburg"
- subheading="April 2002 – September 2003">
- Philosophie- / Soziologiestudium, Magisterstudiengang
-
-
- <.para
- heading="Albert-Einstein-Gymnasium Magdeburg"
- subheading="September 1993 – Juli 2000">
- Abschluss: Abitur
-
-
- <.article
- heading="Sprachkenntnisse">
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/lib/homepage_web/views/error_helpers.ex b/lib/homepage_web/views/error_helpers.ex
deleted file mode 100644
index d27f626..0000000
--- a/lib/homepage_web/views/error_helpers.ex
+++ /dev/null
@@ -1,47 +0,0 @@
-defmodule HomepageWeb.ErrorHelpers do
- @moduledoc """
- Conveniences for translating and building error messages.
- """
-
- use Phoenix.HTML
-
- @doc """
- Generates tag for inlined form input errors.
- """
- def error_tag(form, field) do
- Enum.map(Keyword.get_values(form.errors, field), fn error ->
- content_tag(:span, translate_error(error),
- class: "invalid-feedback",
- phx_feedback_for: input_name(form, field)
- )
- end)
- end
-
- @doc """
- Translates an error message using gettext.
- """
- def translate_error({msg, opts}) do
- # When using gettext, we typically pass the strings we want
- # to translate as a static argument:
- #
- # # Translate "is invalid" in the "errors" domain
- # dgettext("errors", "is invalid")
- #
- # # Translate the number of files with plural rules
- # dngettext("errors", "1 file", "%{count} files", count)
- #
- # Because the error messages we show in our forms and APIs
- # are defined inside Ecto, we need to translate them dynamically.
- # This requires us to call the Gettext module passing our gettext
- # backend as first argument.
- #
- # Note we use the "errors" domain, which means translations
- # should be written to the errors.po file. The :count option is
- # set by Ecto and indicates we should also apply plural rules.
- if count = opts[:count] do
- Gettext.dngettext(HomepageWeb.Gettext, "errors", msg, msg, count, opts)
- else
- Gettext.dgettext(HomepageWeb.Gettext, "errors", msg, opts)
- end
- end
-end
diff --git a/lib/homepage_web/views/error_view.ex b/lib/homepage_web/views/error_view.ex
deleted file mode 100644
index 6861388..0000000
--- a/lib/homepage_web/views/error_view.ex
+++ /dev/null
@@ -1,16 +0,0 @@
-defmodule HomepageWeb.ErrorView do
- use HomepageWeb, :view
-
- # If you want to customize a particular status code
- # for a certain format, you may uncomment below.
- # def render("500.html", _assigns) do
- # "Internal Server Error"
- # end
-
- # By default, Phoenix returns the status message from
- # the template name. For example, "404.html" becomes
- # "Not Found".
- def template_not_found(template, _assigns) do
- Phoenix.Controller.status_message_from_template(template)
- end
-end
diff --git a/lib/homepage_web/views/layout_view.ex b/lib/homepage_web/views/layout_view.ex
deleted file mode 100644
index fc0d2a2..0000000
--- a/lib/homepage_web/views/layout_view.ex
+++ /dev/null
@@ -1,7 +0,0 @@
-defmodule HomepageWeb.LayoutView do
- use HomepageWeb, :view
-
- # Phoenix LiveDashboard is available only in development by default,
- # so we instruct Elixir to not warn if the dashboard route is missing.
- @compile {:no_warn_undefined, {Routes, :live_dashboard_path, 2}}
-end
diff --git a/lib/homepage_web/views/page_view.ex b/lib/homepage_web/views/page_view.ex
deleted file mode 100644
index aec7810..0000000
--- a/lib/homepage_web/views/page_view.ex
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule HomepageWeb.PageView do
- use HomepageWeb, :view
-end
diff --git a/lib/homepage_web/views/resume_view.ex b/lib/homepage_web/views/resume_view.ex
deleted file mode 100644
index 53c1f3e..0000000
--- a/lib/homepage_web/views/resume_view.ex
+++ /dev/null
@@ -1,29 +0,0 @@
-defmodule HomepageWeb.ResumeView do
- use HomepageWeb, :view
-
- alias HomepageWeb.Icons
-
- def para(assigns) do
- ~H"""
-
-
<%= @heading %>
- <%= if assigns[:subheading] do %>
-
<%= @subheading %>
- <% end %>
-
- <%= render_slot(@inner_block) %>
-
-
- """
- end
-
- def article(assigns) do
- ~H"""
-
-
- <%= @heading %>
- <%= render_slot(@inner_block) %>
-
- """
- end
-end
diff --git a/make_release.sh b/make_release.sh
new file mode 100755
index 0000000..552618f
--- /dev/null
+++ b/make_release.sh
@@ -0,0 +1,12 @@
+#!/bin/sh
+set -e
+
+export SECRET_KEY_BASE=$(mix phx.gen.secret)
+export DATABASE_URL=ecto://postgres:postgres@localhost/homepage_dev
+
+mix deps.get --only prod
+MIX_ENV=prod mix assets.deploy
+MIX_ENV=prod mix compile
+mix phx.gen.release
+
+MIX_ENV=prod mix release
diff --git a/mix.exs b/mix.exs
index 5aaf63f..f2d7440 100644
--- a/mix.exs
+++ b/mix.exs
@@ -4,10 +4,9 @@ defmodule Homepage.MixProject do
def project do
[
app: :homepage,
- version: "0.1.0",
- elixir: "~> 1.13",
+ version: "0.1.5",
+ elixir: "~> 1.14",
elixirc_paths: elixirc_paths(Mix.env()),
- compilers: [:gettext] ++ Mix.compilers(),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps()
@@ -33,25 +32,25 @@ defmodule Homepage.MixProject do
# Type `mix help deps` for examples and options.
defp deps do
[
- # default
- {:phoenix, "~> 1.6.6"},
+ {:phoenix, "~> 1.7.2"},
{:phoenix_ecto, "~> 4.4"},
{:ecto_sql, "~> 3.6"},
{:postgrex, ">= 0.0.0"},
- {:phoenix_html, "~> 3.0"},
+ {:phoenix_html, "~> 3.3"},
{:phoenix_live_reload, "~> 1.2", only: :dev},
- {:phoenix_live_view, "~> 0.17.5"},
+ {:phoenix_live_view, "~> 0.18.16"},
{:floki, ">= 0.30.0", only: :test},
- {:phoenix_live_dashboard, "~> 0.6"},
- {:esbuild, "~> 0.3", runtime: Mix.env() == :dev},
+ {:phoenix_live_dashboard, "~> 0.7.2"},
+ {:esbuild, "~> 0.7", runtime: Mix.env() == :dev},
+ {:tailwind, "~> 0.2.0", runtime: Mix.env() == :dev},
{:swoosh, "~> 1.3"},
+ {:finch, "~> 0.13"},
{:telemetry_metrics, "~> 0.6"},
{:telemetry_poller, "~> 1.0"},
- {:gettext, "~> 0.18"},
+ {:gettext, "~> 0.20"},
{:jason, "~> 1.2"},
- {:plug_cowboy, "~> 2.5"},
- # custom
- {:tailwind, "~> 0.1", runtime: Mix.env() == :dev}
+ {:bandit, ">= 0.7.7"},
+ {:earmark, "~> 1.4"}
]
end
@@ -63,10 +62,12 @@ defmodule Homepage.MixProject do
# See the documentation for `Mix` for more info on aliases.
defp aliases do
[
- setup: ["deps.get", "ecto.setup"],
+ setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
+ "assets.setup": ["tailwind.install --if-missing", "esbuild.install --if-missing"],
+ "assets.build": ["tailwind default", "esbuild default"],
"assets.deploy": ["tailwind default --minify", "esbuild default --minify", "phx.digest"]
]
end
diff --git a/mix.lock b/mix.lock
index 3e276b2..5565ed9 100644
--- a/mix.lock
+++ b/mix.lock
@@ -1,36 +1,41 @@
%{
- "castore": {:hex, :castore, "0.1.17", "ba672681de4e51ed8ec1f74ed624d104c0db72742ea1a5e74edbc770c815182f", [:mix], [], "hexpm", "d9844227ed52d26e7519224525cb6868650c272d4a3d327ce3ca5570c12163f9"},
- "connection": {:hex, :connection, "1.1.0", "ff2a49c4b75b6fb3e674bfc5536451607270aac754ffd1bdfe175abe4a6d7a68", [:mix], [], "hexpm", "722c1eb0a418fbe91ba7bd59a47e28008a189d47e37e0e7bb85585a016b2869c"},
- "cowboy": {:hex, :cowboy, "2.9.0", "865dd8b6607e14cf03282e10e934023a1bd8be6f6bacf921a7e2a96d800cd452", [:make, :rebar3], [{:cowlib, "2.11.0", [hex: :cowlib, repo: "hexpm", optional: false]}, {:ranch, "1.8.0", [hex: :ranch, repo: "hexpm", optional: false]}], "hexpm", "2c729f934b4e1aa149aff882f57c6372c15399a20d54f65c8d67bef583021bde"},
- "cowboy_telemetry": {:hex, :cowboy_telemetry, "0.4.0", "f239f68b588efa7707abce16a84d0d2acf3a0f50571f8bb7f56a15865aae820c", [:rebar3], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7d98bac1ee4565d31b62d59f8823dfd8356a169e7fcbb83831b8a5397404c9de"},
- "cowlib": {:hex, :cowlib, "2.11.0", "0b9ff9c346629256c42ebe1eeb769a83c6cb771a6ee5960bd110ab0b9b872063", [:make, :rebar3], [], "hexpm", "2b3e9da0b21c4565751a6d4901c20d1b4cc25cbb7fd50d91d2ab6dd287bc86a9"},
- "db_connection": {:hex, :db_connection, "2.4.2", "f92e79aff2375299a16bcb069a14ee8615c3414863a6fef93156aee8e86c2ff3", [:mix], [{:connection, "~> 1.0", [hex: :connection, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "4fe53ca91b99f55ea249693a0229356a08f4d1a7931d8ffa79289b145fe83668"},
- "decimal": {:hex, :decimal, "2.0.0", "a78296e617b0f5dd4c6caf57c714431347912ffb1d0842e998e9792b5642d697", [:mix], [], "hexpm", "34666e9c55dea81013e77d9d87370fe6cb6291d1ef32f46a1600230b1d44f577"},
- "ecto": {:hex, :ecto, "3.8.4", "e06b8b87e62b27fea17fd2ff6041572ddd10339fd16cdf58446e402c6c90a74b", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f9244288b8d42db40515463a008cf3f4e0e564bb9c249fe87bf28a6d79fe82d4"},
- "ecto_sql": {:hex, :ecto_sql, "3.8.3", "a7d22c624202546a39d615ed7a6b784580391e65723f2d24f65941b4dd73d471", [:mix], [{:db_connection, "~> 2.5 or ~> 2.4.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.8.4", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.15.0 or ~> 0.16.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "348cb17fb9e6daf6f251a87049eafcb57805e2892e5e6a0f5dea0985d367329b"},
- "esbuild": {:hex, :esbuild, "0.5.0", "d5bb08ff049d7880ee3609ed5c4b864bd2f46445ea40b16b4acead724fb4c4a3", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "f183a0b332d963c4cfaf585477695ea59eef9a6f2204fdd0efa00e099694ffe5"},
+ "bandit": {:hex, :bandit, "0.7.7", "48456d09022607a312cf723a91992236aeaffe4af50615e6e2d2e383fb6bef10", [:mix], [{:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:thousand_island, "~> 0.6.7", [hex: :thousand_island, repo: "hexpm", optional: false]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "772f0a32632c2ce41026d85e24b13a469151bb8cea1891e597fb38fde103640a"},
+ "castore": {:hex, :castore, "1.0.1", "240b9edb4e9e94f8f56ab39d8d2d0a57f49e46c56aced8f873892df8ff64ff5a", [:mix], [], "hexpm", "b4951de93c224d44fac71614beabd88b71932d0b1dea80d2f80fb9044e01bbb3"},
+ "db_connection": {:hex, :db_connection, "2.5.0", "bb6d4f30d35ded97b29fe80d8bd6f928a1912ca1ff110831edcd238a1973652c", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "c92d5ba26cd69ead1ff7582dbb860adeedfff39774105a4f1c92cbb654b55aa2"},
+ "decimal": {:hex, :decimal, "2.1.1", "5611dca5d4b2c3dd497dec8f68751f1f1a54755e8ed2a966c2633cf885973ad6", [:mix], [], "hexpm", "53cfe5f497ed0e7771ae1a475575603d77425099ba5faef9394932b35020ffcc"},
+ "earmark": {:hex, :earmark, "1.4.38", "ba8fda946c259c6e8f6759d3647d448e9216e2c0afed8c6ae7f8ce1f7072a497", [:mix], [{:earmark_parser, "~> 1.4.32", [hex: :earmark_parser, repo: "hexpm", optional: false]}], "hexpm", "f938e30de4167e7d8f3bf588b01dc041138278dda1e5a13fb9ec89b43dd5ec7f"},
+ "earmark_parser": {:hex, :earmark_parser, "1.4.32", "fa739a0ecfa34493de19426681b23f6814573faee95dfd4b4aafe15a7b5b32c6", [:mix], [], "hexpm", "b8b0dd77d60373e77a3d7e8afa598f325e49e8663a51bcc2b88ef41838cca755"},
+ "ecto": {:hex, :ecto, "3.10.1", "c6757101880e90acc6125b095853176a02da8f1afe056f91f1f90b80c9389822", [:mix], [{:decimal, "~> 1.6 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "d2ac4255f1601bdf7ac74c0ed971102c6829dc158719b94bd30041bbad77f87a"},
+ "ecto_sql": {:hex, :ecto_sql, "3.10.1", "6ea6b3036a0b0ca94c2a02613fd9f742614b5cfe494c41af2e6571bb034dd94c", [:mix], [{:db_connection, "~> 2.4.1 or ~> 2.5", [hex: :db_connection, repo: "hexpm", optional: false]}, {:ecto, "~> 3.10.0", [hex: :ecto, repo: "hexpm", optional: false]}, {:myxql, "~> 0.6.0", [hex: :myxql, repo: "hexpm", optional: true]}, {:postgrex, "~> 0.16.0 or ~> 0.17.0 or ~> 1.0", [hex: :postgrex, repo: "hexpm", optional: true]}, {:tds, "~> 2.1.1 or ~> 2.2", [hex: :tds, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.0 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f6a25bdbbd695f12c8171eaff0851fa4c8e72eec1e98c7364402dda9ce11c56b"},
+ "esbuild": {:hex, :esbuild, "0.7.0", "ce3afb13cd2c5fd63e13c0e2d0e0831487a97a7696cfa563707342bb825d122a", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "4ae9f4f237c5ebcb001390b8ada65a12fb2bb04f3fe3d1f1692b7a06fbfe8752"},
+ "expo": {:hex, :expo, "0.4.1", "1c61d18a5df197dfda38861673d392e642649a9cef7694d2f97a587b2cfb319b", [:mix], [], "hexpm", "2ff7ba7a798c8c543c12550fa0e2cbc81b95d4974c65855d8d15ba7b37a1ce47"},
"file_system": {:hex, :file_system, "0.2.10", "fb082005a9cd1711c05b5248710f8826b02d7d1784e7c3451f9c1231d4fc162d", [:mix], [], "hexpm", "41195edbfb562a593726eda3b3e8b103a309b733ad25f3d642ba49696bf715dc"},
- "floki": {:hex, :floki, "0.33.1", "f20f1eb471e726342b45ccb68edb9486729e7df94da403936ea94a794f072781", [:mix], [{:html_entities, "~> 0.5.0", [hex: :html_entities, repo: "hexpm", optional: false]}], "hexpm", "461035fd125f13fdf30f243c85a0b1e50afbec876cbf1ceefe6fddd2e6d712c6"},
- "gettext": {:hex, :gettext, "0.19.1", "564953fd21f29358e68b91634799d9d26989f8d039d7512622efb3c3b1c97892", [:mix], [], "hexpm", "10c656c0912b8299adba9b061c06947511e3f109ab0d18b44a866a4498e77222"},
- "html_entities": {:hex, :html_entities, "0.5.2", "9e47e70598da7de2a9ff6af8758399251db6dbb7eebe2b013f2bbd2515895c3c", [:mix], [], "hexpm", "c53ba390403485615623b9531e97696f076ed415e8d8058b1dbaa28181f4fdcc"},
- "jason": {:hex, :jason, "1.3.0", "fa6b82a934feb176263ad2df0dbd91bf633d4a46ebfdffea0c8ae82953714946", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "53fc1f51255390e0ec7e50f9cb41e751c260d065dcba2bf0d08dc51a4002c2ac"},
- "mime": {:hex, :mime, "2.0.2", "0b9e1a4c840eafb68d820b0e2158ef5c49385d17fb36855ac6e7e087d4b1dcc5", [:mix], [], "hexpm", "e6a3f76b4c277739e36c2e21a2c640778ba4c3846189d5ab19f97f126df5f9b7"},
- "phoenix": {:hex, :phoenix, "1.6.10", "7a9e8348c5c62e7fd2f74a1884b88d98251f87186a430048bfbdbab3e3f46736", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.0", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 1.0", [hex: :phoenix_view, repo: "hexpm", optional: false]}, {:plug, "~> 1.10", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.2", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "08cf70d42f61dd0ea381805bac3cddef57b7b92ade5acc6f6036aa25ecaca9a2"},
+ "finch": {:hex, :finch, "0.16.0", "40733f02c89f94a112518071c0a91fe86069560f5dbdb39f9150042f44dcfb1a", [:mix], [{:castore, "~> 0.1 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: false]}, {:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.3", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 0.2.6 or ~> 1.0", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "f660174c4d519e5fec629016054d60edd822cdfe2b7270836739ac2f97735ec5"},
+ "floki": {:hex, :floki, "0.34.2", "5fad07ef153b3b8ec110b6b155ec3780c4b2c4906297d0b4be1a7162d04a7e02", [:mix], [], "hexpm", "26b9d50f0f01796bc6be611ca815c5e0de034d2128e39cc9702eee6b66a4d1c8"},
+ "gettext": {:hex, :gettext, "0.22.1", "e7942988383c3d9eed4bdc22fc63e712b655ae94a672a27e4900e3d4a2c43581", [:mix], [{:expo, "~> 0.4.0", [hex: :expo, repo: "hexpm", optional: false]}], "hexpm", "ad105b8dab668ee3f90c0d3d94ba75e9aead27a62495c101d94f2657a190ac5d"},
+ "hpax": {:hex, :hpax, "0.1.2", "09a75600d9d8bbd064cdd741f21fc06fc1f4cf3d0fcc335e5aa19be1a7235c84", [:mix], [], "hexpm", "2c87843d5a23f5f16748ebe77969880e29809580efdaccd615cd3bed628a8c13"},
+ "jason": {:hex, :jason, "1.4.0", "e855647bc964a44e2f67df589ccf49105ae039d4179db7f6271dfd3843dc27e6", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "79a3791085b2a0f743ca04cec0f7be26443738779d09302e01318f97bdb82121"},
+ "mime": {:hex, :mime, "2.0.3", "3676436d3d1f7b81b5a2d2bd8405f412c677558c81b1c92be58c00562bb59095", [:mix], [], "hexpm", "27a30bf0db44d25eecba73755acf4068cbfe26a4372f9eb3e4ea3a45956bff6b"},
+ "mint": {:hex, :mint, "1.5.1", "8db5239e56738552d85af398798c80648db0e90f343c8469f6c6d8898944fb6f", [:mix], [{:castore, "~> 0.1.0 or ~> 1.0", [hex: :castore, repo: "hexpm", optional: true]}, {:hpax, "~> 0.1.1", [hex: :hpax, repo: "hexpm", optional: false]}], "hexpm", "4a63e1e76a7c3956abd2c72f370a0d0aecddc3976dea5c27eccbecfa5e7d5b1e"},
+ "nimble_options": {:hex, :nimble_options, "1.0.2", "92098a74df0072ff37d0c12ace58574d26880e522c22801437151a159392270e", [:mix], [], "hexpm", "fd12a8db2021036ce12a309f26f564ec367373265b53e25403f0ee697380f1b8"},
+ "nimble_pool": {:hex, :nimble_pool, "1.0.0", "5eb82705d138f4dd4423f69ceb19ac667b3b492ae570c9f5c900bb3d2f50a847", [:mix], [], "hexpm", "80be3b882d2d351882256087078e1b1952a28bf98d0a287be87e4a24a710b67a"},
+ "phoenix": {:hex, :phoenix, "1.7.2", "c375ffb482beb4e3d20894f84dd7920442884f5f5b70b9f4528cbe0cedefec63", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.4", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "1ebca94b32b4d0e097ab2444a9742ed8ff3361acad17365e4e6b2e79b4792159"},
"phoenix_ecto": {:hex, :phoenix_ecto, "4.4.0", "0672ed4e4808b3fbed494dded89958e22fb882de47a97634c0b13e7b0b5f7720", [:mix], [{:ecto, "~> 3.3", [hex: :ecto, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}, {:plug, "~> 1.9", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "09864e558ed31ee00bd48fcc1d4fc58ae9678c9e81649075431e69dbabb43cc1"},
- "phoenix_html": {:hex, :phoenix_html, "3.2.0", "1c1219d4b6cb22ac72f12f73dc5fad6c7563104d083f711c3fcd8551a1f4ae11", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "36ec97ba56d25c0136ef1992c37957e4246b649d620958a1f9fa86165f8bc54f"},
- "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.6.5", "1495bb014be12c9a9252eca04b9af54246f6b5c1e4cd1f30210cd00ec540cf8e", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.3", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.17.7", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "ef4fa50dd78364409039c99cf6f98ab5209b4c5f8796c17f4db118324f0db852"},
- "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.3.3", "3a53772a6118d5679bf50fc1670505a290e32a1d195df9e069d8c53ab040c054", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "766796676e5f558dbae5d1bdb066849673e956005e3730dfd5affd7a6da4abac"},
- "phoenix_live_view": {:hex, :phoenix_live_view, "0.17.10", "a8b61b1a825dc1f9c0808583c2a7e8d18dfbe22edb6d7271744a2013eca8adb1", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.1", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "3e77cf0fc9909e9e87fa48f82fa3c4e6f471b19edf481b1b1b31e7d47810f235"},
+ "phoenix_html": {:hex, :phoenix_html, "3.3.1", "4788757e804a30baac6b3fc9695bf5562465dd3f1da8eb8460ad5b404d9a2178", [:mix], [{:plug, "~> 1.5", [hex: :plug, repo: "hexpm", optional: true]}], "hexpm", "bed1906edd4906a15fd7b412b85b05e521e1f67c9a85418c55999277e553d0d3"},
+ "phoenix_live_dashboard": {:hex, :phoenix_live_dashboard, "0.7.2", "97cc4ff2dba1ebe504db72cb45098cb8e91f11160528b980bd282cc45c73b29c", [:mix], [{:ecto, "~> 3.6.2 or ~> 3.7", [hex: :ecto, repo: "hexpm", optional: true]}, {:ecto_mysql_extras, "~> 0.5", [hex: :ecto_mysql_extras, repo: "hexpm", optional: true]}, {:ecto_psql_extras, "~> 0.7", [hex: :ecto_psql_extras, repo: "hexpm", optional: true]}, {:mime, "~> 1.6 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:phoenix_live_view, "~> 0.18.3", [hex: :phoenix_live_view, repo: "hexpm", optional: false]}, {:telemetry_metrics, "~> 0.6 or ~> 1.0", [hex: :telemetry_metrics, repo: "hexpm", optional: false]}], "hexpm", "0e5fdf063c7a3b620c566a30fcf68b7ee02e5e46fe48ee46a6ec3ba382dc05b7"},
+ "phoenix_live_reload": {:hex, :phoenix_live_reload, "1.4.1", "2aff698f5e47369decde4357ba91fc9c37c6487a512b41732818f2204a8ef1d3", [:mix], [{:file_system, "~> 0.2.1 or ~> 0.3", [hex: :file_system, repo: "hexpm", optional: false]}, {:phoenix, "~> 1.4", [hex: :phoenix, repo: "hexpm", optional: false]}], "hexpm", "9bffb834e7ddf08467fe54ae58b5785507aaba6255568ae22b4d46e2bb3615ab"},
+ "phoenix_live_view": {:hex, :phoenix_live_view, "0.18.18", "1f38fbd7c363723f19aad1a04b5490ff3a178e37daaf6999594d5f34796c47fc", [:mix], [{:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a5810d0472f3189ede6d2a95bda7f31c6113156b91784a3426cb0ab6a6d85214"},
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.1", "ba04e489ef03763bf28a17eb2eaddc2c20c6d217e2150a61e3298b0f4c2012b5", [:mix], [], "hexpm", "81367c6d1eea5878ad726be80808eb5a787a23dee699f96e72b1109c57cdd8d9"},
- "phoenix_view": {:hex, :phoenix_view, "1.1.2", "1b82764a065fb41051637872c7bd07ed2fdb6f5c3bd89684d4dca6e10115c95a", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "7ae90ad27b09091266f6adbb61e1d2516a7c3d7062c6789d46a7554ec40f3a56"},
- "plug": {:hex, :plug, "1.13.6", "187beb6b67c6cec50503e940f0434ea4692b19384d47e5fdfd701e93cadb4cc2", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "02b9c6b9955bce92c829f31d6284bf53c591ca63c4fb9ff81dfd0418667a34ff"},
- "plug_cowboy": {:hex, :plug_cowboy, "2.5.2", "62894ccd601cf9597e2c23911ff12798a8a18d237e9739f58a6b04e4988899fe", [:mix], [{:cowboy, "~> 2.7", [hex: :cowboy, repo: "hexpm", optional: false]}, {:cowboy_telemetry, "~> 0.3", [hex: :cowboy_telemetry, repo: "hexpm", optional: false]}, {:plug, "~> 1.7", [hex: :plug, repo: "hexpm", optional: false]}], "hexpm", "ea6e87f774c8608d60c8d34022a7d073bd7680a0a013f049fc62bf35efea1044"},
- "plug_crypto": {:hex, :plug_crypto, "1.2.2", "05654514ac717ff3a1843204b424477d9e60c143406aa94daf2274fdd280794d", [:mix], [], "hexpm", "87631c7ad914a5a445f0a3809f99b079113ae4ed4b867348dd9eec288cecb6db"},
- "postgrex": {:hex, :postgrex, "0.16.3", "fac79a81a9a234b11c44235a4494d8565303fa4b9147acf57e48978a074971db", [:mix], [{:connection, "~> 1.1", [hex: :connection, repo: "hexpm", optional: false]}, {:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "aeaae1d2d1322da4e5fe90d241b0a564ce03a3add09d7270fb85362166194590"},
- "ranch": {:hex, :ranch, "1.8.0", "8c7a100a139fd57f17327b6413e4167ac559fbc04ca7448e9be9057311597a1d", [:make, :rebar3], [], "hexpm", "49fbcfd3682fab1f5d109351b61257676da1a2fdbe295904176d5e521a2ddfe5"},
- "swoosh": {:hex, :swoosh, "1.7.1", "53bb5b8efaf5577bbad1480fb057d8bcb7b16097aa015ab9f369a01592c961ec", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "8206d7da5038f0e11292b775b7e588fcd5dc74ac4dd8b661fe72f58207234747"},
- "tailwind": {:hex, :tailwind, "0.1.6", "d8d05ed1b8bfcfdc896f107f5bc0c740d7d509d6d0f1cb381d58aabff2ddff39", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "41ccc86cc42ba97bef23391f21548694709da0c3001714a971fa008ab12ae170"},
- "telemetry": {:hex, :telemetry, "1.1.0", "a589817034a27eab11144ad24d5c0f9fab1f58173274b1e9bae7074af9cbee51", [:rebar3], [], "hexpm", "b727b2a1f75614774cff2d7565b64d0dfa5bd52ba517f16543e6fc7efcc0df48"},
+ "phoenix_template": {:hex, :phoenix_template, "1.0.1", "85f79e3ad1b0180abb43f9725973e3b8c2c3354a87245f91431eec60553ed3ef", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "157dc078f6226334c91cb32c1865bf3911686f8bcd6bcff86736f6253e6993ee"},
+ "plug": {:hex, :plug, "1.14.2", "cff7d4ec45b4ae176a227acd94a7ab536d9b37b942c8e8fa6dfc0fff98ff4d80", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "842fc50187e13cf4ac3b253d47d9474ed6c296a8732752835ce4a86acdf68d13"},
+ "plug_crypto": {:hex, :plug_crypto, "1.2.5", "918772575e48e81e455818229bf719d4ab4181fcbf7f85b68a35620f78d89ced", [:mix], [], "hexpm", "26549a1d6345e2172eb1c233866756ae44a9609bd33ee6f99147ab3fd87fd842"},
+ "postgrex": {:hex, :postgrex, "0.17.1", "01c29fd1205940ee55f7addb8f1dc25618ca63a8817e56fac4f6846fc2cddcbe", [:mix], [{:db_connection, "~> 2.1", [hex: :db_connection, repo: "hexpm", optional: false]}, {:decimal, "~> 1.5 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:table, "~> 0.1.0", [hex: :table, repo: "hexpm", optional: true]}], "hexpm", "14b057b488e73be2beee508fb1955d8db90d6485c6466428fe9ccf1d6692a555"},
+ "swoosh": {:hex, :swoosh, "1.10.2", "77acdc1261de404b893e24224d47459d1b42deb02577c7b31514e0a720f949d6", [:mix], [{:cowboy, "~> 1.1 or ~> 2.4", [hex: :cowboy, repo: "hexpm", optional: true]}, {:ex_aws, "~> 2.1", [hex: :ex_aws, repo: "hexpm", optional: true]}, {:finch, "~> 0.6", [hex: :finch, repo: "hexpm", optional: true]}, {:gen_smtp, "~> 0.13 or ~> 1.0", [hex: :gen_smtp, repo: "hexpm", optional: true]}, {:hackney, "~> 1.9", [hex: :hackney, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}, {:mail, "~> 0.2", [hex: :mail, repo: "hexpm", optional: true]}, {:mime, "~> 1.1 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_cowboy, ">= 1.0.0", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "1736faf374ed49c6091845cdfd5b3a68c88c5f2bfd989447d12bffafc0dda03a"},
+ "tailwind": {:hex, :tailwind, "0.2.0", "95f9e4a32020c5bec480f1d6a43a49ac8030b13183127b577605f506d6e13a66", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}], "hexpm", "385e939fcd7fe4654be5130b187e358aaabade385513f9d200ffecdbb9552a9e"},
+ "telemetry": {:hex, :telemetry, "1.2.1", "68fdfe8d8f05a8428483a97d7aab2f268aaff24b49e0f599faa091f1d4e7f61c", [:rebar3], [], "hexpm", "dad9ce9d8effc621708f99eac538ef1cbe05d6a874dd741de2e689c47feafed5"},
"telemetry_metrics": {:hex, :telemetry_metrics, "0.6.1", "315d9163a1d4660aedc3fee73f33f1d355dcc76c5c3ab3d59e76e3edf80eef1f", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "7be9e0871c41732c233be71e4be11b96e56177bf15dde64a8ac9ce72ac9834c6"},
"telemetry_poller": {:hex, :telemetry_poller, "1.0.0", "db91bb424e07f2bb6e73926fcafbfcbcb295f0193e0a00e825e589a0a47e8453", [:rebar3], [{:telemetry, "~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "b3a24eafd66c3f42da30fc3ca7dda1e9d546c12250a2d60d7b81d264fbec4f6e"},
+ "thousand_island": {:hex, :thousand_island, "0.6.7", "3a91a7e362ca407036c6691e8a4f6e01ac8e901db3598875863a149279ac8571", [:mix], [{:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "541a5cb26b88adf8d8180b6b96a90f09566b4aad7a6b3608dcac969648cf6765"},
+ "websock": {:hex, :websock, "0.5.1", "c496036ce95bc26d08ba086b2a827b212c67e7cabaa1c06473cd26b40ed8cf10", [:mix], [], "hexpm", "b9f785108b81cd457b06e5f5dabe5f65453d86a99118b2c0a515e1e296dc2d2c"},
+ "websock_adapter": {:hex, :websock_adapter, "0.5.1", "292e6c56724e3457e808e525af0e9bcfa088cc7b9c798218e78658c7f9b85066", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "8e2e1544bfde5f9d0442f9cec2f5235398b224f75c9e06b60557debf64248ec1"},
}
diff --git a/priv/gettext/errors.pot b/priv/gettext/errors.pot
index 39a220b..ccf5c68 100644
--- a/priv/gettext/errors.pot
+++ b/priv/gettext/errors.pot
@@ -48,18 +48,18 @@ msgid "are still associated with this entry"
msgstr ""
## From Ecto.Changeset.validate_length/3
-msgid "should be %{count} character(s)"
-msgid_plural "should be %{count} character(s)"
-msgstr[0] ""
-msgstr[1] ""
-
msgid "should have %{count} item(s)"
msgid_plural "should have %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
-msgid "should be at least %{count} character(s)"
-msgid_plural "should be at least %{count} character(s)"
+msgid "should be %{count} character(s)"
+msgid_plural "should be %{count} character(s)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "should be %{count} byte(s)"
+msgid_plural "should be %{count} byte(s)"
msgstr[0] ""
msgstr[1] ""
@@ -68,8 +68,13 @@ msgid_plural "should have at least %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
-msgid "should be at most %{count} character(s)"
-msgid_plural "should be at most %{count} character(s)"
+msgid "should be at least %{count} character(s)"
+msgid_plural "should be at least %{count} character(s)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "should be at least %{count} byte(s)"
+msgid_plural "should be at least %{count} byte(s)"
msgstr[0] ""
msgstr[1] ""
@@ -78,6 +83,16 @@ msgid_plural "should have at most %{count} item(s)"
msgstr[0] ""
msgstr[1] ""
+msgid "should be at most %{count} character(s)"
+msgid_plural "should be at most %{count} character(s)"
+msgstr[0] ""
+msgstr[1] ""
+
+msgid "should be at most %{count} byte(s)"
+msgid_plural "should be at most %{count} byte(s)"
+msgstr[0] ""
+msgstr[1] ""
+
## From Ecto.Changeset.validate_number/3
msgid "must be less than %{number}"
msgstr ""
diff --git a/priv/static/android-chrome-192x192-51b4b636e89e4f729028356295f3df95.png b/priv/static/android-chrome-192x192-51b4b636e89e4f729028356295f3df95.png
new file mode 100644
index 0000000..f3d0cc9
Binary files /dev/null and b/priv/static/android-chrome-192x192-51b4b636e89e4f729028356295f3df95.png differ
diff --git a/priv/static/android-chrome-192x192.png b/priv/static/android-chrome-192x192.png
new file mode 100644
index 0000000..f3d0cc9
Binary files /dev/null and b/priv/static/android-chrome-192x192.png differ
diff --git a/priv/static/android-chrome-512x512-a51b512f6cb152ff4a02811bab422b90.png b/priv/static/android-chrome-512x512-a51b512f6cb152ff4a02811bab422b90.png
new file mode 100644
index 0000000..00ed59f
Binary files /dev/null and b/priv/static/android-chrome-512x512-a51b512f6cb152ff4a02811bab422b90.png differ
diff --git a/priv/static/android-chrome-512x512.png b/priv/static/android-chrome-512x512.png
new file mode 100644
index 0000000..00ed59f
Binary files /dev/null and b/priv/static/android-chrome-512x512.png differ
diff --git a/priv/static/apple-touch-icon-e4665fb265c78d3571a19f7a8b1fd5e3.png b/priv/static/apple-touch-icon-e4665fb265c78d3571a19f7a8b1fd5e3.png
new file mode 100644
index 0000000..347bf8f
Binary files /dev/null and b/priv/static/apple-touch-icon-e4665fb265c78d3571a19f7a8b1fd5e3.png differ
diff --git a/priv/static/apple-touch-icon.png b/priv/static/apple-touch-icon.png
new file mode 100644
index 0000000..347bf8f
Binary files /dev/null and b/priv/static/apple-touch-icon.png differ
diff --git a/priv/static/favicon-16x16-55e1412ac90db096f6a9b8e4c42505f3.png b/priv/static/favicon-16x16-55e1412ac90db096f6a9b8e4c42505f3.png
new file mode 100644
index 0000000..8aa122b
Binary files /dev/null and b/priv/static/favicon-16x16-55e1412ac90db096f6a9b8e4c42505f3.png differ
diff --git a/priv/static/favicon-16x16.png b/priv/static/favicon-16x16.png
new file mode 100644
index 0000000..8aa122b
Binary files /dev/null and b/priv/static/favicon-16x16.png differ
diff --git a/priv/static/favicon-32x32-929c29d94f8993eb6fe4f803012fde78.png b/priv/static/favicon-32x32-929c29d94f8993eb6fe4f803012fde78.png
new file mode 100644
index 0000000..efdc937
Binary files /dev/null and b/priv/static/favicon-32x32-929c29d94f8993eb6fe4f803012fde78.png differ
diff --git a/priv/static/favicon-32x32.png b/priv/static/favicon-32x32.png
new file mode 100644
index 0000000..efdc937
Binary files /dev/null and b/priv/static/favicon-32x32.png differ
diff --git a/priv/static/favicon-e0350f437e62f59c09731f51555e3f50.ico b/priv/static/favicon-e0350f437e62f59c09731f51555e3f50.ico
new file mode 100644
index 0000000..bba4309
Binary files /dev/null and b/priv/static/favicon-e0350f437e62f59c09731f51555e3f50.ico differ
diff --git a/priv/static/favicon.ico b/priv/static/favicon.ico
index 73de524..bba4309 100644
Binary files a/priv/static/favicon.ico and b/priv/static/favicon.ico differ
diff --git a/priv/static/fonts/Inter-roman.var-66c6e40883646a7ad993108b2ce2da32.woff2 b/priv/static/fonts/Inter-roman.var-66c6e40883646a7ad993108b2ce2da32.woff2
new file mode 100644
index 0000000..6a256a0
Binary files /dev/null and b/priv/static/fonts/Inter-roman.var-66c6e40883646a7ad993108b2ce2da32.woff2 differ
diff --git a/priv/static/fonts/Inter-roman.var.woff2 b/priv/static/fonts/Inter-roman.var.woff2
new file mode 100644
index 0000000..6a256a0
Binary files /dev/null and b/priv/static/fonts/Inter-roman.var.woff2 differ
diff --git a/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg b/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg
new file mode 100644
index 0000000..7347634
--- /dev/null
+++ b/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg.gz b/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg.gz
new file mode 100644
index 0000000..9cd1598
Binary files /dev/null and b/priv/static/images/logo-6324e4f1039462023b0410cd1d5b7e83.svg.gz differ
diff --git a/priv/static/images/logo.svg b/priv/static/images/logo.svg
new file mode 100644
index 0000000..7347634
--- /dev/null
+++ b/priv/static/images/logo.svg
@@ -0,0 +1,6 @@
+
+
+
\ No newline at end of file
diff --git a/priv/static/images/logo.svg.gz b/priv/static/images/logo.svg.gz
new file mode 100644
index 0000000..9cd1598
Binary files /dev/null and b/priv/static/images/logo.svg.gz differ
diff --git a/priv/static/images/phoenix.png b/priv/static/images/phoenix.png
deleted file mode 100644
index 9c81075..0000000
Binary files a/priv/static/images/phoenix.png and /dev/null differ
diff --git a/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt b/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt
new file mode 100644
index 0000000..26e06b5
--- /dev/null
+++ b/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt
@@ -0,0 +1,5 @@
+# See https://www.robotstxt.org/robotstxt.html for documentation on how to use the robots.txt file
+#
+# To ban all spiders from the entire site uncomment the next two lines:
+# User-agent: *
+# Disallow: /
diff --git a/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt.gz b/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt.gz
new file mode 100644
index 0000000..043be33
Binary files /dev/null and b/priv/static/robots-9e2c81b0855bbff2baa8371bc4a78186.txt.gz differ
diff --git a/priv/static/robots.txt.gz b/priv/static/robots.txt.gz
new file mode 100644
index 0000000..043be33
Binary files /dev/null and b/priv/static/robots.txt.gz differ
diff --git a/priv/static/site-053100cb84a50d2ae7f5492f7dd7f25e.webmanifest b/priv/static/site-053100cb84a50d2ae7f5492f7dd7f25e.webmanifest
new file mode 100644
index 0000000..45dc8a2
--- /dev/null
+++ b/priv/static/site-053100cb84a50d2ae7f5492f7dd7f25e.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/priv/static/site.webmanifest b/priv/static/site.webmanifest
new file mode 100644
index 0000000..45dc8a2
--- /dev/null
+++ b/priv/static/site.webmanifest
@@ -0,0 +1 @@
+{"name":"","short_name":"","icons":[{"src":"/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
\ No newline at end of file
diff --git a/rel/overlays/bin/migrate b/rel/overlays/bin/migrate
new file mode 100755
index 0000000..2ce795a
--- /dev/null
+++ b/rel/overlays/bin/migrate
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd -P -- "$(dirname -- "$0")"
+exec ./homepage eval Homepage.Release.migrate
diff --git a/rel/overlays/bin/migrate.bat b/rel/overlays/bin/migrate.bat
new file mode 100755
index 0000000..f771006
--- /dev/null
+++ b/rel/overlays/bin/migrate.bat
@@ -0,0 +1 @@
+call "%~dp0\homepage" eval Homepage.Release.migrate
diff --git a/rel/overlays/bin/server b/rel/overlays/bin/server
new file mode 100755
index 0000000..27584ab
--- /dev/null
+++ b/rel/overlays/bin/server
@@ -0,0 +1,3 @@
+#!/bin/sh
+cd -P -- "$(dirname -- "$0")"
+PHX_SERVER=true exec ./homepage start
diff --git a/rel/overlays/bin/server.bat b/rel/overlays/bin/server.bat
new file mode 100755
index 0000000..41ef6ce
--- /dev/null
+++ b/rel/overlays/bin/server.bat
@@ -0,0 +1,2 @@
+set PHX_SERVER=true
+call "%~dp0\homepage" start
diff --git a/sync_prod.sh b/sync_prod.sh
new file mode 100755
index 0000000..7d8fa3e
--- /dev/null
+++ b/sync_prod.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -e
+
+rsync -vau _build/prod/rel/homepage/ servi-eins:/srv/www/homepage/
\ No newline at end of file
diff --git a/test/homepage_web/controllers/error_html_test.exs b/test/homepage_web/controllers/error_html_test.exs
new file mode 100644
index 0000000..bc666b4
--- /dev/null
+++ b/test/homepage_web/controllers/error_html_test.exs
@@ -0,0 +1,14 @@
+defmodule HomepageWeb.ErrorHTMLTest do
+ use HomepageWeb.ConnCase, async: true
+
+ # Bring render_to_string/4 for testing custom views
+ import Phoenix.Template
+
+ test "renders 404.html" do
+ assert render_to_string(HomepageWeb.ErrorHTML, "404", "html", []) == "Not Found"
+ end
+
+ test "renders 500.html" do
+ assert render_to_string(HomepageWeb.ErrorHTML, "500", "html", []) == "Internal Server Error"
+ end
+end
diff --git a/test/homepage_web/controllers/error_json_test.exs b/test/homepage_web/controllers/error_json_test.exs
new file mode 100644
index 0000000..24a0c11
--- /dev/null
+++ b/test/homepage_web/controllers/error_json_test.exs
@@ -0,0 +1,12 @@
+defmodule HomepageWeb.ErrorJSONTest do
+ use HomepageWeb.ConnCase, async: true
+
+ test "renders 404" do
+ assert HomepageWeb.ErrorJSON.render("404.json", %{}) == %{errors: %{detail: "Not Found"}}
+ end
+
+ test "renders 500" do
+ assert HomepageWeb.ErrorJSON.render("500.json", %{}) ==
+ %{errors: %{detail: "Internal Server Error"}}
+ end
+end
diff --git a/test/homepage_web/controllers/page_controller_test.exs b/test/homepage_web/controllers/page_controller_test.exs
index 411e6b0..0e3887f 100644
--- a/test/homepage_web/controllers/page_controller_test.exs
+++ b/test/homepage_web/controllers/page_controller_test.exs
@@ -2,7 +2,7 @@ defmodule HomepageWeb.PageControllerTest do
use HomepageWeb.ConnCase
test "GET /", %{conn: conn} do
- conn = get(conn, "/")
- assert html_response(conn, 200) =~ "Welcome to Phoenix!"
+ conn = get(conn, ~p"/")
+ assert html_response(conn, 200) =~ "Peace of mind from prototype to production"
end
end
diff --git a/test/homepage_web/views/error_view_test.exs b/test/homepage_web/views/error_view_test.exs
deleted file mode 100644
index 5348250..0000000
--- a/test/homepage_web/views/error_view_test.exs
+++ /dev/null
@@ -1,14 +0,0 @@
-defmodule HomepageWeb.ErrorViewTest do
- use HomepageWeb.ConnCase, async: true
-
- # Bring render/3 and render_to_string/3 for testing custom views
- import Phoenix.View
-
- test "renders 404.html" do
- assert render_to_string(HomepageWeb.ErrorView, "404.html", []) == "Not Found"
- end
-
- test "renders 500.html" do
- assert render_to_string(HomepageWeb.ErrorView, "500.html", []) == "Internal Server Error"
- end
-end
diff --git a/test/homepage_web/views/layout_view_test.exs b/test/homepage_web/views/layout_view_test.exs
deleted file mode 100644
index 7daebae..0000000
--- a/test/homepage_web/views/layout_view_test.exs
+++ /dev/null
@@ -1,8 +0,0 @@
-defmodule HomepageWeb.LayoutViewTest do
- use HomepageWeb.ConnCase, async: true
-
- # When testing helpers, you may want to import Phoenix.HTML and
- # use functions such as safe_to_string() to convert the helper
- # result into an HTML string.
- # import Phoenix.HTML
-end
diff --git a/test/homepage_web/views/page_view_test.exs b/test/homepage_web/views/page_view_test.exs
deleted file mode 100644
index 5bad549..0000000
--- a/test/homepage_web/views/page_view_test.exs
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule HomepageWeb.PageViewTest do
- use HomepageWeb.ConnCase, async: true
-end
diff --git a/test/support/channel_case.ex b/test/support/channel_case.ex
deleted file mode 100644
index cd825fa..0000000
--- a/test/support/channel_case.ex
+++ /dev/null
@@ -1,36 +0,0 @@
-defmodule HomepageWeb.ChannelCase do
- @moduledoc """
- This module defines the test case to be used by
- channel tests.
-
- Such tests rely on `Phoenix.ChannelTest` and also
- import other functionality to make it easier
- to build common data structures and query the data layer.
-
- Finally, if the test case interacts with the database,
- we enable the SQL sandbox, so changes done to the database
- are reverted at the end of every test. If you are using
- PostgreSQL, you can even run database tests asynchronously
- by setting `use HomepageWeb.ChannelCase, async: true`, although
- this option is not recommended for other databases.
- """
-
- use ExUnit.CaseTemplate
-
- using do
- quote do
- # Import conveniences for testing with channels
- import Phoenix.ChannelTest
- import HomepageWeb.ChannelCase
-
- # The default endpoint for testing
- @endpoint HomepageWeb.Endpoint
- end
- end
-
- setup tags do
- pid = Ecto.Adapters.SQL.Sandbox.start_owner!(Homepage.Repo, shared: not tags[:async])
- on_exit(fn -> Ecto.Adapters.SQL.Sandbox.stop_owner(pid) end)
- :ok
- end
-end
diff --git a/test/support/conn_case.ex b/test/support/conn_case.ex
index ae7d5c9..9bbd75a 100644
--- a/test/support/conn_case.ex
+++ b/test/support/conn_case.ex
@@ -19,21 +19,20 @@ defmodule HomepageWeb.ConnCase do
using do
quote do
+ # The default endpoint for testing
+ @endpoint HomepageWeb.Endpoint
+
+ use HomepageWeb, :verified_routes
+
# Import conveniences for testing with connections
import Plug.Conn
import Phoenix.ConnTest
import HomepageWeb.ConnCase
-
- alias HomepageWeb.Router.Helpers, as: Routes
-
- # The default endpoint for testing
- @endpoint HomepageWeb.Endpoint
end
end
setup tags do
- pid = Ecto.Adapters.SQL.Sandbox.start_owner!(Homepage.Repo, shared: not tags[:async])
- on_exit(fn -> Ecto.Adapters.SQL.Sandbox.stop_owner(pid) end)
+ Homepage.DataCase.setup_sandbox(tags)
{:ok, conn: Phoenix.ConnTest.build_conn()}
end
end
diff --git a/test/support/data_case.ex b/test/support/data_case.ex
index 397b03e..794e008 100644
--- a/test/support/data_case.ex
+++ b/test/support/data_case.ex
@@ -28,9 +28,16 @@ defmodule Homepage.DataCase do
end
setup tags do
+ Homepage.DataCase.setup_sandbox(tags)
+ :ok
+ end
+
+ @doc """
+ Sets up the sandbox based on the test tags.
+ """
+ def setup_sandbox(tags) do
pid = Ecto.Adapters.SQL.Sandbox.start_owner!(Homepage.Repo, shared: not tags[:async])
on_exit(fn -> Ecto.Adapters.SQL.Sandbox.stop_owner(pid) end)
- :ok
end
@doc """