diff --git a/public/.htaccess b/public/.htaccess
new file mode 100644
index 0000000..3aec5e2
--- /dev/null
+++ b/public/.htaccess
@@ -0,0 +1,21 @@
+
+
+ Options -MultiViews -Indexes
+
+
+ RewriteEngine On
+
+ # Handle Authorization Header
+ RewriteCond %{HTTP:Authorization} .
+ RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
+
+ # Redirect Trailing Slashes If Not A Folder...
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_URI} (.+)/$
+ RewriteRule ^ %1 [L,R=301]
+
+ # Send Requests To Front Controller...
+ RewriteCond %{REQUEST_FILENAME} !-d
+ RewriteCond %{REQUEST_FILENAME} !-f
+ RewriteRule ^ index.php [L]
+
diff --git a/public/favicon.ico b/public/favicon.ico
new file mode 100644
index 0000000..e69de29
diff --git a/public/index.php b/public/index.php
new file mode 100644
index 0000000..1d69f3a
--- /dev/null
+++ b/public/index.php
@@ -0,0 +1,55 @@
+make(Kernel::class);
+
+$response = $kernel->handle(
+ $request = Request::capture()
+)->send();
+
+$kernel->terminate($request, $response);
diff --git a/public/robots.txt b/public/robots.txt
new file mode 100644
index 0000000..eb05362
--- /dev/null
+++ b/public/robots.txt
@@ -0,0 +1,2 @@
+User-agent: *
+Disallow:
diff --git a/resources/css/_roboto.css b/resources/css/_roboto.css
new file mode 100644
index 0000000..d94ddab
--- /dev/null
+++ b/resources/css/_roboto.css
@@ -0,0 +1,972 @@
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz0dL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzQdL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzwdL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzMdL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz8dL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEz4dL-vwnYh2eg.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin Italic"), local("Roboto-ThinItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOiCnqEu92Fr1Mu51QrEzAdL-vwnYg.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc3CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc-CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc2CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc5CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc1CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc0CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light Italic"), local("Roboto-LightItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TjASc6CsTYl4BO.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xFIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xMIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xEIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xLIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xHIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xGIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto Italic"), local("Roboto-Italic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1Mu51xIIzIXKMny.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc3CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc-CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc2CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc5CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc1CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc0CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium Italic"), local("Roboto-MediumItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51S7ACc6CsTYl4BO.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic3CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic-CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic2CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic5CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic1CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic0CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold Italic"), local("Roboto-BoldItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TzBic6CsTYl4BO.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc3CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc-CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc2CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc5CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc1CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc0CsTYl4BOQ3o.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: italic;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black Italic"), local("Roboto-BlackItalic"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOjCnqEu92Fr1Mu51TLBCc6CsTYl4BO.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxFIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxMIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxEIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxLIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxHIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxGIzIXKMnyrYk.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 100;
+ font-display: swap;
+ src: local("Roboto Thin"), local("Roboto-Thin"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOkCnqEu92Fr1MmgVxIIzIXKMny.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCRc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fABc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCBc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fCxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fChc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 300;
+ font-display: swap;
+ src: local("Roboto Light"), local("Roboto-Light"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmSU5fBBc4AMP6lQ.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu72xKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu5mxKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7mxKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4WxKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7WxKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu7GxKKTU1Kvnz.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 400;
+ font-display: swap;
+ src: local("Roboto"), local("Roboto-Regular"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOmCnqEu92Fr1Mu4mxKKTU1Kg.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCRc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fABc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCBc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fCxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fChc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 500;
+ font-display: swap;
+ src: local("Roboto Medium"), local("Roboto-Medium"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmEU9fBBc4AMP6lQ.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCRc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfABc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCBc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfCxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfChc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 700;
+ font-display: swap;
+ src: local("Roboto Bold"), local("Roboto-Bold"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmWUlfBBc4AMP6lQ.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
+/* cyrillic-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCRc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,
+ U+FE2E-FE2F;
+}
+/* cyrillic */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfABc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;
+}
+/* greek-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCBc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+1F00-1FFF;
+}
+/* greek */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0370-03FF;
+}
+/* vietnamese */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfCxc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0102-0103, U+0110-0111, U+1EA0-1EF9, U+20AB;
+}
+/* latin-ext */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfChc4AMP6lbBP.woff2)
+ format("woff2");
+ unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,
+ U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
+}
+/* latin */
+@font-face {
+ font-family: "Roboto";
+ font-style: normal;
+ font-weight: 900;
+ font-display: swap;
+ src: local("Roboto Black"), local("Roboto-Black"),
+ url(https://fonts.gstatic.com/s/roboto/v20/KFOlCnqEu92Fr1MmYUtfBBc4AMP6lQ.woff2)
+ format("woff2");
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
+ U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,
+ U+FEFF, U+FFFD;
+}
diff --git a/resources/css/_tailwind.css b/resources/css/_tailwind.css
new file mode 100644
index 0000000..b5c61c9
--- /dev/null
+++ b/resources/css/_tailwind.css
@@ -0,0 +1,3 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
diff --git a/resources/css/app.css b/resources/css/app.css
new file mode 100644
index 0000000..912a83c
--- /dev/null
+++ b/resources/css/app.css
@@ -0,0 +1,79 @@
+/*
+ |--------------------------------------------------------------------------
+ | TailwindCSS Directives
+ |--------------------------------------------------------------------------
+ |
+ | Import TailwindCSS directives and swipe out at build-time with all of
+ | the styles it generates based on your configured design system.
+ |
+ | Please check this link for more details:
+ | https://tailwindcss.com/docs/installation#include-tailwind-in-your-css
+ |
+ */
+@import "./_tailwind.css";
+
+/*
+ |--------------------------------------------------------------------------
+ | Fonts
+ |--------------------------------------------------------------------------
+ |
+ | Import all fonts used in the template, the font configuration can be
+ | seen in "tailwind.config.js".
+ |
+ | Please check this link for more details:
+ | https://tailwindcss.com/docs/theme
+ |
+ */
+@import "./_roboto.css";
+
+/*
+ |--------------------------------------------------------------------------
+ | 3rd Party Libraries
+ |--------------------------------------------------------------------------
+ |
+ | Import 3rd party library CSS files.
+ |
+ */
+@import "simplebar/src/simplebar.css";
+@import "dropzone/dist/dropzone.css";
+@import "tabulator-tables/dist/css/tabulator.css";
+@import "tom-select/dist/css/tom-select.css";
+@import "zoom-vanilla.js/dist/zoom.css";
+@import "toastify-js/src/toastify.css";
+@import "highlight.js/styles/github.css";
+@import "tippy.js/dist/tippy.css";
+@import "tippy.js/themes/light.css";
+@import "tippy.js/dist/svg-arrow.css";
+@import "tippy.js/animations/shift-away.css";
+@import "tiny-slider/dist/tiny-slider.css";
+@import "leaflet/dist/leaflet.css";
+@import "leaflet.markercluster/dist/MarkerCluster.css";
+
+/*
+ |--------------------------------------------------------------------------
+ | Components
+ |--------------------------------------------------------------------------
+ |
+ | Import CSS components.
+ |
+ */
+@import "./components/_global.css";
+@import "./components/_side-nav.css";
+@import "./components/_mobile-menu.css";
+@import "./components/_top-nav.css";
+@import "./components/_intro.css";
+@import "./components/_zoom-in.css";
+@import "./components/_image-fit.css";
+@import "./components/_typing-dots.css";
+@import "./components/_scrollbar-hidden.css";
+@import "./components/_box.css";
+@import "./components/_tiny-slider.css";
+@import "./components/_tippy.css";
+@import "./components/_toastify.css";
+@import "./components/_zoom-vanilla.css";
+@import "./components/_tom-select.css";
+@import "./components/_ckeditor.css";
+@import "./components/_litepicker.css";
+@import "./components/_full-calendar.css";
+@import "./components/_tabulator.css";
+@import "./components/_tailwind-merge.css";
diff --git a/resources/css/components/_box.css b/resources/css/components/_box.css
new file mode 100644
index 0000000..eceffb3
--- /dev/null
+++ b/resources/css/components/_box.css
@@ -0,0 +1,16 @@
+@layer components {
+ .box {
+ box-shadow: 0px 3px 20px #0000000b;
+ background-color: white;
+ border-color: transparent;
+ border-radius: theme("borderRadius.md");
+ position: relative;
+ }
+
+ .dark {
+ .box {
+ background-color: theme("backgroundColor.darkmode.600");
+ border-color: transparent;
+ }
+ }
+}
diff --git a/resources/css/components/_ckeditor.css b/resources/css/components/_ckeditor.css
new file mode 100644
index 0000000..f0c42b4
--- /dev/null
+++ b/resources/css/components/_ckeditor.css
@@ -0,0 +1,289 @@
+.ck-editor,
+.document-editor,
+.ck-editor__editable {
+ box-shadow: theme("boxShadow.sm");
+}
+
+.document-editor {
+ display: flex;
+ max-height: 700px;
+ flex-flow: column nowrap;
+ border-radius: var(--ck-border-radius);
+ border: 1px solid theme("colors.slate.200");
+ .document-editor__toolbar {
+ z-index: 1;
+ border-bottom: 1px solid theme("colors.slate.200");
+ }
+ .document-editor__toolbar .ck-toolbar {
+ border: 0;
+ border-radius: 0;
+ background-color: theme("colors.slate.100");
+ .ck-icon {
+ width: 16px;
+ }
+ }
+ .document-editor__editable-container {
+ overflow-y: scroll;
+ padding: calc(2 * var(--ck-spacing-large));
+ background-color: theme("colors.slate.100");
+ }
+ .document-editor__editable-container .ck-editor__editable {
+ width: 15.8cm;
+ margin: 0 auto;
+ min-height: 21cm;
+ background: white;
+ padding: 1cm 2cm 2cm;
+ border-radius: var(--ck-border-radius);
+ border: 1px solid theme("colors.slate.200");
+ box-shadow: theme("boxShadow.sm");
+ }
+ .ck-heading-dropdown .ck-list .ck-button__label {
+ line-height: calc(
+ 1.7 * var(--ck-line-height-base) * var(--ck-font-size-base)
+ );
+ min-width: 6em;
+ }
+ .ck-heading-dropdown
+ .ck-list
+ .ck-button:not(.ck-heading_paragraph)
+ .ck-button__label {
+ transform: scale(0.8);
+ transform-origin: left;
+ }
+ .ck-content h2,
+ .ck-heading-dropdown .ck-heading_heading1 .ck-button__label {
+ font-size: 2.18em;
+ font-weight: normal;
+ }
+ .ck-content h2 {
+ line-height: 1.37em;
+ padding-top: 0.342em;
+ margin-bottom: 0.142em;
+ }
+ .ck-content h3,
+ .ck-heading-dropdown .ck-heading_heading2 .ck-button__label {
+ font-size: 1.75em;
+ font-weight: normal;
+ color: hsl(203, 100%, 50%);
+ }
+ .ck-heading-dropdown .ck-heading_heading2.ck-on .ck-button__label {
+ color: var(--ck-color-list-button-on-text);
+ }
+ .ck-content h3 {
+ line-height: 1.86em;
+ padding-top: 0.171em;
+ margin-bottom: 0.357em;
+ }
+ .ck-content h4,
+ .ck-heading-dropdown .ck-heading_heading3 .ck-button__label {
+ font-size: 1.31em;
+ font-weight: bold;
+ }
+ .ck-content h4 {
+ line-height: 1.24em;
+ padding-top: 0.286em;
+ margin-bottom: 0.952em;
+ }
+ .ck-content p {
+ font-size: 1em;
+ line-height: 1.63em;
+ padding-top: 0.5em;
+ margin-bottom: 1.13em;
+ }
+ .ck-content blockquote {
+ font-family: Georgia, serif;
+ margin-left: calc(2 * var(--ck-spacing-large));
+ margin-right: calc(2 * var(--ck-spacing-large));
+ }
+}
+
+.ck.ck-content {
+ min-height: 250px;
+ &.ck-editor__editable_inline {
+ border: 1px solid theme("colors.slate.200");
+ }
+}
+
+.ck .ck {
+ .ck-content {
+ min-height: 250px;
+ &.ck-editor__editable_inline {
+ border: 1px solid theme("colors.slate.200");
+ }
+ blockquote,
+ dl,
+ dd,
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6,
+ hr,
+ figure,
+ p,
+ pre {
+ margin: revert;
+ }
+ ol,
+ ul {
+ list-style: revert;
+ margin: revert;
+ padding: revert;
+ }
+ h1,
+ h2,
+ h3,
+ h4,
+ h5,
+ h6 {
+ font-size: revert;
+ font-weight: revert;
+ }
+ img,
+ svg,
+ video,
+ canvas,
+ audio,
+ iframe,
+ embed,
+ object {
+ display: revert;
+ vertical-align: revert;
+ }
+ }
+ &.ck-reset_all,
+ &.ck-reset_all * {
+ color: theme("colors.slate.800");
+ }
+ &.ck-toolbar,
+ &.ck-balloon-panel {
+ background-color: theme("colors.slate.100");
+ border-color: theme("colors.slate.200");
+ .ck-icon {
+ width: 16px;
+ }
+ }
+ &.ck-editor__main > .ck-editor__editable:not(.ck-focused) {
+ border-color: theme("colors.slate.200");
+ }
+ &.ck-button:not(.ck-disabled):hover,
+ &a.ck-button:not(.ck-disabled):hover {
+ background-color: theme("colors.slate.200");
+ }
+}
+
+.dark {
+ .document-editor {
+ border-color: theme("colors.darkmode.900" / 30%);
+ .document-editor__toolbar {
+ border-color: theme("colors.darkmode.900" / 20%);
+ }
+ .document-editor__toolbar .ck-toolbar {
+ background-color: theme("colors.darkmode.900" / 20%);
+ .ck-toolbar__separator {
+ background-color: theme("colors.darkmode.800");
+ }
+ .ck-tooltip .ck-tooltip__text {
+ color: theme("colors.slate.200");
+ background-color: theme("colors.darkmode.800");
+ &:after {
+ border-bottom: theme("colors.darkmode.800");
+ }
+ }
+ .ck.ck-icon :not([fill]) {
+ fill: theme("colors.slate.300");
+ }
+ .ck.ck-dropdown__panel {
+ border-color: theme("colors.darkmode.800");
+ }
+ .ck.ck-button.ck-on,
+ a.ck.ck-button.ck-on {
+ background-color: theme("colors.darkmode.800");
+ }
+ }
+ .document-editor__editable-container {
+ background-color: theme("colors.darkmode.600");
+ }
+ .document-editor__editable-container .ck-editor__editable {
+ border-color: theme("colors.darkmode.900" / 20%);
+ background-color: theme("colors.darkmode.800");
+ }
+ }
+
+ .ck.ck-content.ck-editor__editable_inline {
+ border-color: theme("colors.darkmode.900" / 20%);
+ background-color: theme("colors.darkmode.800");
+ }
+
+ .ck {
+ &.ck-list {
+ background-color: theme("colors.darkmode.800");
+ }
+ &.ck-dropdown__panel {
+ background-color: theme("colors.darkmode.800");
+ border-color: theme("colors.darkmode.800");
+ }
+ &.ck.ck-input-text {
+ background-color: theme("colors.darkmode.400");
+ border-color: theme("colors.darkmode.400");
+ &:focus {
+ box-shadow: none;
+ }
+ }
+ .ck-insert-table-dropdown-grid-box {
+ border-color: theme("colors.darkmode.400");
+ }
+ &.ck-reset_all,
+ &.ck-reset_all * {
+ color: theme("colors.slate.300") !important;
+ }
+ .ck {
+ .ck-content.ck-editor__editable_inline {
+ border-color: theme("colors.darkmode.900" / 20%);
+ background-color: theme("colors.darkmode.800");
+ }
+ &.ck-toolbar,
+ &.ck-balloon-panel {
+ background-color: theme("colors.darkmode.700");
+ border-color: theme("colors.darkmode.900" / 20%);
+ &:before {
+ border-bottom-color: theme("colors.darkmode.900" / 20%) !important;
+ }
+ &:after {
+ border-bottom-color: theme("colors.darkmode.900" / 20%) !important;
+ }
+ .ck-toolbar__separator {
+ background-color: theme("colors.darkmode.800");
+ }
+ .ck-tooltip .ck-tooltip__text {
+ color: theme("colors.slate.200");
+ background-color: theme("colors.darkmode.800");
+ &:after {
+ border-bottom-color: theme("colors.darkmode.900" / 20%);
+ }
+ }
+ .ck.ck-icon :not([fill]) {
+ fill: theme("colors.slate.300");
+ }
+ .ck.ck-dropdown__panel {
+ border-color: theme("colors.darkmode.800");
+ }
+ .ck.ck-button.ck-on,
+ a.ck.ck-button.ck-on {
+ background-color: theme("colors.darkmode.800");
+ }
+ }
+ &.ck-editor__main > .ck-editor__editable {
+ background-color: theme("colors.darkmode.800");
+ &:not(.ck-focused) {
+ border-color: theme("colors.darkmode.900" / 20%);
+ }
+ }
+ &.ck-button:not(.ck-disabled):hover,
+ &a.ck-button:not(.ck-disabled):hover {
+ background-color: theme("colors.darkmode.900" / 20%);
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_full-calendar.css b/resources/css/components/_full-calendar.css
new file mode 100644
index 0000000..3185b61
--- /dev/null
+++ b/resources/css/components/_full-calendar.css
@@ -0,0 +1,218 @@
+.full-calendar {
+ --fc-border-color: theme("colors.slate.200");
+ .fc-toolbar {
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ flex-direction: column;
+ }
+ .fc-toolbar-chunk {
+ &:nth-child(1) {
+ order: 3;
+ }
+ &:nth-child(2) {
+ order: 1;
+ }
+ &:nth-child(3) {
+ order: 2;
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ margin-top: theme("spacing.3");
+ margin-bottom: theme("spacing.3");
+ }
+ .fc-button-group {
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ display: block;
+ }
+ button {
+ width: theme("spacing.20");
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ width: 100%;
+ border-radius: theme("borderRadius.md");
+ margin-bottom: theme("spacing.2");
+ }
+ }
+ }
+ }
+ }
+ .fc-toolbar-title {
+ font-size: theme("fontSize.lg");
+ font-weight: theme("fontWeight.medium");
+ }
+ }
+ .fc-toolbar-chunk .fc-button-primary {
+ &:first-child {
+ border-top-left-radius: theme("borderRadius.md");
+ border-bottom-left-radius: theme("borderRadius.md");
+ }
+ &:last-child {
+ border-top-right-radius: theme("borderRadius.md");
+ border-bottom-right-radius: theme("borderRadius.md");
+ }
+ }
+ .fc-theme-standard {
+ .fc-scrollgrid,
+ th,
+ td,
+ .fc-list {
+ border-color: theme("colors.slate.200" / 60%);
+ }
+ }
+ table {
+ border-radius: theme("borderRadius.md");
+ tr th .fc-scrollgrid-sync-inner {
+ padding-top: theme("spacing.3");
+ padding-bottom: theme("spacing.3");
+ }
+ }
+ .fc-daygrid-event-harness {
+ margin-left: theme("spacing.5");
+ margin-right: theme("spacing.5");
+ }
+ .fc-h-event {
+ background-color: theme("colors.primary");
+ border-color: theme("colors.primary");
+ border-radius: theme("borderRadius.md");
+ }
+ .fc-event-title-container {
+ padding: theme("spacing.1") theme("spacing.2");
+ font-size: theme("fontSize.xs");
+ }
+ .fc-daygrid-event {
+ font-size: theme("fontSize.xs");
+ }
+ .fc-daygrid-event-dot {
+ border-color: theme("colors.primary");
+ margin-right: theme("spacing.2");
+ }
+ .fc-daygrid-dot-event .fc-event-title {
+ font-weight: theme("fontWeight.medium");
+ }
+ .fc-col-header-cell-cushion {
+ font-weight: theme("fontWeight.medium");
+ }
+ &.fc .fc-view-harness {
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ min-height: 400px !important;
+ }
+ }
+ &.fc .fc-daygrid-day-frame {
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ min-height: 60px !important;
+ }
+ }
+ .fc-daygrid-more-link {
+ font-size: theme("fontSize.sm");
+ @media (max-width: calc(theme("screens.md") - 1px)) {
+ color: theme("colors.slate.500");
+ font-size: 10px;
+ }
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ padding-left: 0;
+ display: block;
+ margin-top: calc(theme("spacing.3") * -1);
+ leading: 10px;
+ }
+ }
+ .fc-daygrid-day-bottom {
+ padding-top: theme("spacing.1");
+ }
+ .fc-day-other {
+ background-color: theme("colors.slate.100" / 50%);
+ }
+ .fc-button-primary {
+ font-weight: theme("fontWeight.normal") !important;
+ display: inline-block !important;
+ border: 1px solid theme("colors.slate.200" / 60%) !important;
+ color: theme("colors.slate.500") !important;
+ background-color: transparent !important;
+ text-transform: capitalize !important;
+ padding: 0.4em 0.65em !important;
+ transition-property: color, background-color, border-color,
+ text-decoration-color, fill, stroke, opacity, box-shadow, transform,
+ filter, backdrop-filter;
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ transition-duration: 200ms;
+ box-shadow: theme("boxShadow.sm");
+ align-items: center;
+ justify-content: center;
+ border-radius: theme("borderRadius.md");
+ cursor: pointer;
+ &:focus {
+ box-shadow: theme("ringWidth.4");
+ --tw-ring-color: theme("colors.primary");
+ --tw-text-opacity: 0.2;
+ }
+ &:hover:not(:disabled) {
+ --tw-background-opacity: 0.9;
+ --tw-border-opacity: 0.9;
+ }
+ &:not(button) {
+ text-align: center;
+ }
+ &:disabled {
+ opacity: 0.7;
+ cursor: not-allowed;
+ }
+ .fc-icon {
+ font-size: 1.2em !important;
+ }
+ &:focus {
+ box-shadow: none !important;
+ }
+ }
+ .fc-button-primary:not(:disabled):active,
+ .fc-button-primary:not(:disabled).fc-button-active {
+ color: white !important;
+ background-color: theme("colors.primary") !important;
+ border-color: theme("colors.primary") !important;
+ }
+ .fc-list-day-cushion {
+ background-color: theme("colors.slate.100" / 50%) !important;
+ padding: 0.75rem 1.25rem !important;
+ }
+ .fc-list-event td {
+ padding: theme("spacing.3") theme("spacing.5");
+ }
+ .fc-list-event-dot {
+ border-color: theme("colors.primary") !important;
+ }
+ .fc-event-time {
+ padding-left: theme("spacing.[0.5]");
+ padding-right: theme("spacing.[0.5]");
+ font-size: 0.75rem !important;
+ }
+ .fc-daygrid-more-link {
+ padding-left: theme("spacing.2");
+ }
+}
+
+.dark {
+ .full-calendar {
+ --fc-border-color: theme("colors.darkmode.400");
+ .fc-button-primary {
+ background-color: theme("colors.darkmode.400") !important;
+ border-color: theme("colors.darkmode.400") !important;
+ }
+ .fc-list-day-cushion {
+ background-color: theme("colors.darkmode.400") !important;
+ }
+ .fc-event:hover td {
+ border-color: theme("colors.darkmode.400") !important;
+ background-color: theme("colors.darkmode.400") !important;
+ }
+ .fc-theme-standard {
+ .fc-scrollgrid,
+ th,
+ td,
+ .fc-list {
+ border-color: theme("colors.darkmode.400");
+ }
+ }
+ .fc-day-other {
+ background-color: theme("colors.darkmode.700");
+ }
+ .fc-button-primary:focus {
+ --tw-ring-color: theme("colors.slate.700");
+ --tw-ring-opacity: 0.5;
+ transition-property: none;
+ }
+ }
+}
diff --git a/resources/css/components/_global.css b/resources/css/components/_global.css
new file mode 100644
index 0000000..e3a48dd
--- /dev/null
+++ b/resources/css/components/_global.css
@@ -0,0 +1,31 @@
+html {
+ scroll-behavior: smooth;
+ background-color: theme("colors.primary");
+ &.dark {
+ background-color: theme("colors.darkmode.800");
+ body {
+ color: theme("colors.slate.300");
+ *,
+ ::before,
+ ::after {
+ border-color: theme("colors.white" / 5%);
+ }
+ }
+ }
+ body {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ overflow-x: hidden;
+ padding-top: theme("spacing.3");
+ padding-left: theme("spacing.3");
+ padding-right: theme("spacing.3");
+ font-family: theme("fontFamily.roboto");
+ font-size: theme("fontSize.sm");
+ line-height: theme("lineHeight.5");
+ color: theme("colors.slate.800");
+ @media screen(sm) {
+ padding-left: theme("spacing.8");
+ padding-right: theme("spacing.8");
+ }
+ }
+}
diff --git a/resources/css/components/_image-fit.css b/resources/css/components/_image-fit.css
new file mode 100644
index 0000000..68fa006
--- /dev/null
+++ b/resources/css/components/_image-fit.css
@@ -0,0 +1,12 @@
+@layer components {
+ .image-fit {
+ position: relative;
+ & > img {
+ position: absolute;
+ object-fit: cover;
+ top: 0;
+ width: 100%;
+ height: 100%;
+ }
+ }
+}
diff --git a/resources/css/components/_intro.css b/resources/css/components/_intro.css
new file mode 100644
index 0000000..db675a0
--- /dev/null
+++ b/resources/css/components/_intro.css
@@ -0,0 +1,53 @@
+* {
+ @for $i from 1 to 50 {
+ > .intro-x:nth-child($i) {
+ z-index: calc(50 - $i);
+ opacity: 0;
+ position: relative;
+ transform: translateX(50px);
+ animation: 0.4s intro-x-animation ease-in-out 0.33333s;
+ animation-fill-mode: forwards;
+ animation-delay: calc($i * 0.1s);
+ }
+ > .-intro-x:nth-child($i) {
+ z-index: calc(50 - $i);
+ opacity: 0;
+ position: relative;
+ transform: translateX(-50px);
+ animation: 0.4s intro-x-animation ease-in-out 0.33333s;
+ animation-fill-mode: forwards;
+ animation-delay: calc($i * 0.1s);
+ }
+ > .intro-y:nth-child($i) {
+ z-index: calc(50 - $i);
+ opacity: 0;
+ position: relative;
+ transform: translateY(50px);
+ animation: 0.4s intro-y-animation ease-in-out 0.33333s;
+ animation-fill-mode: forwards;
+ animation-delay: calc($i * 0.1s);
+ }
+ > .-intro-y:nth-child($i) {
+ z-index: calc(50 - $i);
+ opacity: 0;
+ position: relative;
+ transform: translateY(-50px);
+ animation: 0.4s intro-y-animation ease-in-out 0.33333s;
+ animation-fill-mode: forwards;
+ animation-delay: calc($i * 0.1s);
+ }
+ }
+}
+
+@keyframes intro-x-animation {
+ 100% {
+ opacity: 1;
+ transform: translateX(0px);
+ }
+}
+@keyframes intro-y-animation {
+ 100% {
+ opacity: 1;
+ transform: translateY(0px);
+ }
+}
diff --git a/resources/css/components/_litepicker.css b/resources/css/components/_litepicker.css
new file mode 100755
index 0000000..4be2c7e
--- /dev/null
+++ b/resources/css/components/_litepicker.css
@@ -0,0 +1,282 @@
+.litepicker {
+ background-color: white;
+ border-radius: theme("borderRadius.md");
+ font-size: theme("fontSize.sm");
+ z-index: 999999 !important;
+ margin-top: 7px;
+ box-shadow: 0px 3px 20px #00000014;
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ width: 310px;
+ }
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ left: 0px !important;
+ right: 0px;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ &:before {
+ content: "";
+ left: 9px;
+ top: -7px;
+ border-bottom-color: #f7f7f7;
+ border-right: 7px solid transparent;
+ border-left: 7px solid transparent;
+ border-bottom: 7px solid #e8e8e8;
+ position: absolute;
+ display: inline-block;
+ }
+ &:after {
+ content: "";
+ left: 10px;
+ top: -6px;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #fff;
+ border-left: 6px solid transparent;
+ position: absolute;
+ display: inline-block;
+ }
+ .container__months,
+ .container__footer {
+ box-shadow: none;
+ background-color: transparent;
+ padding-top: 0;
+ }
+ .container__footer {
+ border-top: 1px solid theme("colors.slate.200" / 60%);
+ margin: 0;
+ padding: theme("spacing.3");
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ display: flex;
+ flex-direction: column-reverse;
+ text-align: center;
+ }
+ .preview-date-range {
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ width: 100%;
+ display: block;
+ order: 1;
+ margin-bottom: theme("spacing.[1.5]");
+ }
+ }
+ .button-cancel {
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ width: 100% !important;
+ margin-left: 0px !important;
+ padding-top: 0.375rem !important;
+ padding-bottom: 0.375rem !important;
+ }
+ }
+ .button-apply {
+ @media (max-width: calc(theme("screens.lg") - 1px)) {
+ width: 100% !important;
+ margin-left: 0px !important;
+ padding-top: 0.375rem !important;
+ padding-bottom: 0.375rem !important;
+ margin-bottom: theme("spacing.[1.5]");
+ }
+ }
+ .button-apply,
+ .button-cancel {
+ width: theme("spacing.20");
+ padding: theme("spacing.1") theme("spacing.2");
+ border-radius: theme("borderRadius.md");
+ font-weight: theme("fontWeight.medium");
+ margin-left: theme("spacing.1");
+ margin-right: 0;
+ }
+ .button-apply {
+ background-color: theme("colors.primary");
+ color: white;
+ }
+ .button-cancel {
+ background-color: theme("colors.slate.200" / 70%);
+ color: theme("colors.slate.500");
+ }
+ }
+ .container__months {
+ padding-left: theme("spacing.1");
+ padding-right: theme("spacing.1");
+ .month-item-weekdays-row {
+ color: theme("colors.slate.400");
+ margin-top: theme("spacing.3");
+ }
+ .month-item-header {
+ padding-left: 0;
+ padding-right: 0;
+ padding-bottom: 0;
+ padding-top: theme("spacing.2");
+ .button-previous-month {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: theme("spacing.8");
+ height: theme("spacing.8");
+ &:hover {
+ background-color: theme("colors.slate.100");
+ }
+ svg {
+ transform: rotate(135deg);
+ margin-right: calc(theme("spacing.1") * -1);
+ }
+ }
+ .button-next-month {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ width: theme("spacing.8");
+ height: theme("spacing.8");
+ &:hover {
+ background-color: theme("colors.slate.100");
+ }
+ svg {
+ transform: rotate(-45deg);
+ margin-left: calc(theme("spacing.1") * -1);
+ }
+ }
+ .button-previous-month:hover svg,
+ .button-previous-month svg,
+ .button-next-month:hover svg,
+ .button-next-month svg {
+ fill: transparent;
+ border: solid black;
+ border-width: 0 2px 2px 0;
+ border-radius: 0;
+ display: inline-block;
+ border-color: #4a5568;
+ width: theme("spacing.2");
+ height: theme("spacing.2");
+ display: block;
+ }
+ div > .month-item-name,
+ div > .month-item-year {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ background-size: 15px;
+ background-position: center right 0.6rem;
+ background-color: transparent;
+ font-size: theme("fontSize.sm");
+ border-width: 1px;
+ border-style: solid;
+ background-repeat: no-repeat;
+ padding-top: theme("spacing.1");
+ padding-bottom: theme("spacing.1");
+ padding-left: theme("spacing.2");
+ padding-right: theme("spacing.8");
+ border-radius: theme("borderRadius.md");
+ border-color: theme("colors.slate.200");
+ font-weight: theme("fontWeight.normal");
+ &:focus {
+ outline: none;
+ border-color: theme("colors.slate.200");
+ --tw-ring-color: transparent;
+ }
+ }
+ }
+ }
+ .container__days {
+ .day-item {
+ color: theme("colors.slate.800");
+ &:hover {
+ box-shadow: none;
+ background-color: theme("colors.slate.100");
+ color: theme("colors.slate.800");
+ }
+ &.is-today,
+ &.is-today:hover {
+ font-weight: theme("fontWeight.medium");
+ color: theme("colors.primary");
+ }
+ &.is-start-date,
+ &.is-start-date:hover,
+ &.is-end-date,
+ &.is-end-date:hover {
+ background-color: theme("colors.primary");
+ color: white;
+ }
+ &.is-in-range,
+ &.is-in-range:hover {
+ background-color: theme("colors.slate.100");
+ }
+ }
+ .week-number {
+ color: theme("colors.slate.400");
+ }
+ }
+}
+@media (max-width: calc(theme("screens.lg") - 1px)) {
+ :root {
+ --litepicker-day-width: 35px;
+ }
+}
+
+.dark {
+ .litepicker {
+ background-color: theme("colors.darkmode.600");
+ &:before,
+ &:after {
+ border-right-color: transparent;
+ border-left-color: transparent;
+ border-bottom-color: theme("colors.darkmode.600");
+ }
+ .container__months {
+ .button-previous-month:hover {
+ background-color: theme("colors.darkmode.400");
+ }
+ .button-next-month:hover {
+ background-color: theme("colors.darkmode.400");
+ }
+ .month-item-header {
+ .button-previous-month:hover svg,
+ .button-previous-month svg,
+ .button-next-month:hover svg,
+ .button-next-month svg {
+ border-color: theme("colors.slate.200");
+ }
+ div > .month-item-name,
+ div > .month-item-year {
+ color: theme("colors.slate.200");
+ }
+ div > .month-item-name,
+ div > .month-item-year {
+ border-color: theme("colors.darkmode.400");
+ }
+ }
+ }
+ .container__days {
+ .day-item {
+ color: theme("colors.slate.200");
+ &:hover {
+ background-color: theme("colors.darkmode.400");
+ }
+ &.is-start-date,
+ &.is-start-date:hover,
+ &.is-end-date,
+ &.is-end-date:hover {
+ background-color: theme("colors.primary");
+ color: theme("colors.slate.200");
+ }
+ &.is-in-range,
+ &.is-in-range:hover {
+ background-color: theme("colors.darkmode.400");
+ }
+ &.is-today,
+ &.is-today:hover {
+ color: theme("colors.slate.200");
+ }
+ }
+ }
+ .container__footer {
+ border-color: theme("colors.darkmode.400");
+ .button-cancel {
+ background-color: theme("colors.darkmode.400");
+ color: theme("colors.slate.300");
+ }
+ }
+ .container__tooltip {
+ background-color: theme("colors.darkmode.400");
+ &:before,
+ &:after {
+ border-top-color: theme("colors.darkmode.600");
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_mobile-menu.css b/resources/css/components/_mobile-menu.css
new file mode 100644
index 0000000..63a923f
--- /dev/null
+++ b/resources/css/components/_mobile-menu.css
@@ -0,0 +1,90 @@
+.mobile-menu {
+ .menu__divider {
+ width: 100%;
+ height: 1px;
+ background-color: theme("colors.white" / 8%);
+ position: relative;
+ }
+ .menu {
+ height: 50px;
+ display: flex;
+ align-items: center;
+ color: white;
+ .menu__title {
+ display: flex;
+ align-items: center;
+ width: 100%;
+ margin-left: theme("spacing.3");
+ .menu__sub-icon {
+ transition-property: theme("transitionProperty.DEFAULT");
+ transition-timing-function: theme(
+ "transitionTimingFunction.in"
+ );
+ transition-duration: theme("transitionDuration.100");
+ margin-left: auto;
+ svg {
+ width: theme("spacing.5");
+ height: theme("spacing.5");
+ }
+ }
+ }
+ }
+ ul {
+ & > li {
+ /* First level */
+ & > .menu {
+ padding-left: theme("spacing.6");
+ padding-right: theme("spacing.6");
+ }
+ & > ul {
+ background: theme("colors.black" / 10%);
+ border-radius: theme("borderRadius.lg");
+ margin: theme("spacing.1") theme("spacing.4");
+ &:not(.menu__sub-open) {
+ display: none;
+ }
+ & > li {
+ /* Second level */
+ & > .menu {
+ padding-left: theme("spacing.4");
+ padding-right: theme("spacing.4");
+ }
+ & > ul {
+ background: theme("colors.black" / 10%);
+ border-radius: theme("borderRadius.lg");
+ margin: theme("spacing.1") auto;
+ &:not(.menu__sub-open) {
+ display: none;
+ }
+ & > li {
+ /* Third level */
+ & > .menu {
+ padding-left: theme("spacing.4");
+ padding-right: theme("spacing.4");
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+.dark {
+ .mobile-menu {
+ ul {
+ & > li {
+ /* First level */
+ & > ul {
+ background-color: theme("colors.darkmode.700");
+ & > li {
+ /* Second level */
+ & > ul {
+ background-color: theme("colors.darkmode.600");
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_scrollbar-hidden.css b/resources/css/components/_scrollbar-hidden.css
new file mode 100644
index 0000000..6be28a9
--- /dev/null
+++ b/resources/css/components/_scrollbar-hidden.css
@@ -0,0 +1,7 @@
+@layer components {
+ .scrollbar-hidden {
+ &::-webkit-scrollbar {
+ @apply w-0 bg-transparent;
+ }
+ }
+}
diff --git a/resources/css/components/_side-nav.css b/resources/css/components/_side-nav.css
new file mode 100644
index 0000000..b373ca1
--- /dev/null
+++ b/resources/css/components/_side-nav.css
@@ -0,0 +1,293 @@
+.side-nav {
+ &.side-nav--simple {
+ .side-menu {
+ .side-menu__title {
+ @apply hidden;
+ .side-menu__sub-icon {
+ @apply hidden;
+ }
+ }
+ }
+ }
+ .side-nav__divider {
+ width: 100%;
+ height: 1px;
+ background-color: theme("colors.white" / 8%);
+ z-index: 10;
+ position: relative;
+ }
+ .side-menu {
+ height: 50px;
+ display: flex;
+ align-items: center;
+ padding-left: theme("spacing.5");
+ color: white;
+ margin-bottom: theme("spacing.1");
+ position: relative;
+ border-radius: theme("borderRadius.lg");
+ .side-menu__title {
+ display: none;
+ align-items: center;
+ width: 100%;
+ margin-left: theme("spacing.3");
+ @media screen(xl) {
+ display: flex;
+ }
+ .side-menu__sub-icon {
+ transition-property: theme("transitionProperty.DEFAULT");
+ transition-timing-function: theme(
+ "transitionTimingFunction.in"
+ );
+ transition-duration: theme("transitionDuration.100");
+ margin-left: auto;
+ margin-right: theme("spacing.5");
+ display: none;
+ @media screen(xl) {
+ display: block;
+ }
+ svg {
+ width: theme("spacing.4");
+ height: theme("spacing.4");
+ }
+ }
+ }
+ }
+ & > ul {
+ & > li {
+ /* First level */
+ & > .side-menu {
+ &.side-menu--active {
+ background-color: theme("colors.primary");
+ z-index: 10;
+ &:before {
+ content: "";
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.white" / 8%);
+ border-radius: theme("borderRadius.lg");
+ position: absolute;
+ border-bottom: 3px solid theme("colors.black" / 10%);
+ }
+ &:after {
+ content: "";
+ width: 20px;
+ height: 80px;
+ background-repeat: no-repeat;
+ background-size: cover;
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ margin-top: auto;
+ margin-bottom: auto;
+ background-image: theme("backgroundImage.menu-active");
+ margin-right: -47px;
+ opacity: 0;
+ animation: 0.3s ease-in-out 1s active-side-menu-chevron;
+ animation-fill-mode: forwards;
+ }
+ .side-menu__icon {
+ z-index: 10;
+ }
+ .side-menu__title {
+ font-weight: theme("fontWeight.medium");
+ z-index: 10;
+ }
+ }
+ &:hover {
+ &:not(.side-menu--active):not(.side-menu--open) {
+ background-color: theme("colors.primary" / 60%);
+ &:before {
+ content: "";
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.white" / 4%);
+ border-radius: theme("borderRadius.lg");
+ position: absolute;
+ z-index: -1;
+ }
+ }
+ }
+ }
+ & > ul {
+ background-color: theme("colors.white" / 4%);
+ border-radius: theme("borderRadius.lg");
+ position: relative;
+ &:before {
+ content: "";
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.primary" / 60%);
+ border-radius: theme("borderRadius.lg");
+ position: absolute;
+ z-index: -1;
+ }
+ &:not(.side-menu__sub-open) {
+ display: none;
+ }
+ & > li {
+ /* Second level */
+ & > .side-menu {
+ &.side-menu--active {
+ .side-menu__title {
+ font-weight: theme("fontWeight.medium");
+ }
+ }
+ &:not(.side-menu--active) {
+ color: theme("colors.white" / 70%);
+ }
+ &:hover {
+ }
+ .side-menu__icon {
+ }
+ }
+ & > ul {
+ background-color: theme("colors.white" / 4%);
+ border-radius: theme("borderRadius.lg");
+ position: relative;
+ &:before {
+ content: "";
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.primary" / 60%);
+ border-radius: theme("borderRadius.lg");
+ position: absolute;
+ z-index: -1;
+ }
+ &:not(.side-menu__sub-open) {
+ display: none;
+ }
+ & > li {
+ /* Third level */
+ & > .side-menu {
+ &.side-menu--active {
+ .side-menu__title {
+ font-weight: theme("fontWeight.medium");
+ }
+ }
+ &:not(.side-menu--active) {
+ color: theme("colors.white" / 70%);
+ }
+ &:hover {
+ }
+ .side-menu__icon {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+@keyframes active-side-menu-chevron {
+ 100% {
+ opacity: 1;
+ margin-right: -27px;
+ }
+}
+
+.dark {
+ .side-nav {
+ .side-nav__divider {
+ background-color: theme("colors.white" / 7%);
+ }
+ & > ul {
+ & > li {
+ /* First level */
+ & > .side-menu {
+ &.side-menu--active {
+ background-color: transparent;
+ &:before {
+ border-color: theme("colors.black" / 10%);
+ background-color: theme("colors.darkmode.700");
+ }
+ &:after {
+ background-image: theme(
+ "backgroundImage.menu-active-dark"
+ );
+ }
+ .side-menu__icon {
+ color: theme("colors.slate.300");
+ }
+ .side-menu__title {
+ color: theme("colors.slate.300");
+ }
+ }
+ &:not(.side-menu--active) {
+ .side-menu__icon {
+ color: theme("colors.slate.400");
+ }
+ .side-menu__title {
+ color: theme("colors.slate.400");
+ }
+ }
+ &:hover {
+ &:not(.side-menu--active):not(.side-menu--open) {
+ &:before {
+ background-color: theme("colors.darkmode.700");
+ }
+ }
+ }
+ }
+ & > ul {
+ background-color: transparent;
+ &:before {
+ background-color: theme("colors.darkmode.900" / 30%);
+ }
+ & > li {
+ /* Second level */
+ & > .side-menu {
+ &.side-menu--active {
+ color: theme("colors.slate.300");
+ }
+ &:not(.side-menu--active) {
+ color: theme("colors.slate.400");
+ }
+ &:hover {
+ }
+ .side-menu__icon {
+ }
+ }
+ & > ul {
+ background-color: transparent;
+ &:before {
+ background-color: theme(
+ "colors.darkmode.900" / 30%
+ );
+ }
+ & > li {
+ /* Third level */
+ & > .side-menu {
+ &.side-menu--active {
+ color: theme("colors.slate.300");
+ }
+ &:not(.side-menu--active) {
+ color: theme("colors.slate.400");
+ }
+ &:hover {
+ }
+ .side-menu__icon {
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_tabulator.css b/resources/css/components/_tabulator.css
new file mode 100644
index 0000000..b685744
--- /dev/null
+++ b/resources/css/components/_tabulator.css
@@ -0,0 +1,300 @@
+.tabulator-print-fullscreen-hide:before {
+ content: "";
+ position: fixed;
+ background-color: white;
+ top: 0;
+ left: 0;
+ width: 100%;
+ height: 100vh;
+}
+.tabulator {
+ overflow: hidden;
+ border: 0;
+ background-color: transparent;
+ .tabulator-header {
+ font-weight: theme("fontWeight.medium");
+ color: currentColor;
+ border-top: 1px solid theme("colors.slate.200");
+ border-bottom: 1px solid theme("colors.slate.200");
+ background-color: transparent;
+ .tabulator-headers {
+ .tabulator-col {
+ background-color: transparent;
+ border-right-width: 0;
+ &:hover {
+ background-color: theme("colors.slate.100");
+ }
+ .tabulator-col-content {
+ padding: theme("spacing.3") theme("spacing.5");
+ .tabulator-col-title {
+ padding-right: 0;
+ }
+ .tabulator-arrow {
+ top: -3px;
+ border-left-width: 5px;
+ border-right-width: 5px;
+ bottom: 0;
+ margin-top: auto;
+ margin-bottom: auto;
+ }
+ }
+ &.tabulator-sortable[aria-sort="none"]
+ .tabulator-col-content
+ .tabulator-arrow {
+ border-bottom-color: #cbd5e0;
+ }
+ }
+ }
+ }
+ .tabulator-row {
+ border-bottom: 1px solid theme("colors.slate.200");
+ &:hover,
+ &.tabulator-row-even:hover {
+ background-color: theme("colors.slate.200");
+ }
+ &.tabulator-row-even {
+ background-color: theme("colors.slate.100");
+ }
+ .tabulator-cell {
+ border-right: 0;
+ padding: theme("spacing.3") theme("spacing.5");
+ &.tabulator-row-handle {
+ padding-left: 0;
+ padding-right: 0;
+ }
+ .tabulator-responsive-collapse-toggle {
+ width: theme("spacing.4");
+ height: theme("spacing.4");
+ margin-right: calc(theme("spacing.5") * -1);
+ background-color: theme("colors.slate.400");
+ border-radius: theme("borderRadius.full");
+ }
+ }
+ .tabulator-responsive-collapse {
+ padding: theme("spacing.3");
+ border-color: theme("colors.slate.200");
+ border-bottom: 0;
+ td {
+ padding: theme("spacing.2");
+ strong {
+ font-weight: theme("fontWeight.medium");
+ }
+ }
+ }
+ }
+ .tabulator-footer {
+ background-color: transparent;
+ border-top: 0;
+ padding: 0;
+ margin-top: theme("spacing.2");
+ @media (max-width: calc(theme("screens.md") - 1px)) {
+ white-space: normal;
+ }
+ .tabulator-paginator {
+ display: flex;
+ align-items: center;
+ @media (max-width: calc(theme("screens.md") - 1px)) {
+ display: block;
+ text-align: left;
+ }
+ > label {
+ font-weight: theme("fontWeight.normal");
+ color: theme("colors.slate.700");
+ }
+ .tabulator-page-size {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74, 85, 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ background-size: 15px;
+ background-position: center right 0.6rem;
+ padding-top: theme("spacing.2");
+ padding-bottom: theme("spacing.2");
+ padding-left: theme("spacing.3");
+ padding-right: theme("spacing.8");
+ margin-left: theme("spacing.2");
+ margin-right: auto;
+ border-radius: theme("borderRadius.md");
+ appearance: none;
+ font-weight: theme("fontWeight.normal");
+ background-color: white;
+ border-color: theme("colors.slate.200");
+ background-repeat: no-repeat;
+ @media (max-width: calc(theme("screens.md") - 1px)) {
+ margin-right: theme("spacing.3");
+ }
+ }
+ .tabulator-page {
+ min-width: 40px;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ border-color: transparent;
+ color: theme("colors.slate.700");
+ transition-property: color, background-color, border-color,
+ text-decoration-color, fill, stroke, opacity, box-shadow, transform,
+ filter, backdrop-filter;
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ transition-duration: 200ms;
+ border-width: 1px;
+ box-shadow: theme("boxShadow.sm");
+ align-items: center;
+ justify-content: center;
+ padding: theme("spacing.2") theme("spacing.3");
+ border-radius: theme("borderRadius.md");
+ font-weight: theme("fontWeight.normal");
+ cursor: pointer;
+ &:focus {
+ box-shadow: theme("ringWidth.4");
+ --tw-ring-color: theme("colors.primary");
+ --tw-text-opacity: 0.2;
+ }
+ &:hover:not(:disabled) {
+ --tw-background-opacity: 0.9;
+ --tw-border-opacity: 0.9;
+ }
+ &:not(button) {
+ text-align: center;
+ }
+ &:disabled {
+ opacity: 0.7;
+ cursor: not-allowed;
+ }
+ @media (max-width: calc(theme("screens.sm") - 1px)) {
+ margin-right: 0;
+ padding-left: theme("spacing.1");
+ padding-right: theme("spacing.1");
+ }
+ &:hover {
+ background-color: theme("colors.slate.200");
+ color: theme("colors.slate.700");
+ }
+ &.active {
+ background-color: theme("colors.slate.100");
+ font-weight: theme("fontWeight.medium");
+ &:hover {
+ background-color: theme("colors.slate.100");
+ }
+ }
+ &[data-page="first"],
+ &[data-page="prev"],
+ &[data-page="next"],
+ &[data-page="last"] {
+ width: theme("spacing.5");
+ color: transparent;
+ }
+ &[data-page="first"] {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='11 17 6 12 11 7'%3E%3C/polyline%3E%3Cpolyline points='18 17 13 12 18 7'%3E%3C/polyline%3E%3C/svg%3E");
+ background-size: 50%;
+ background-position: center;
+ background-repeat: no-repeat;
+ }
+ &[data-page="prev"] {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='15 18 9 12 15 6'%3E%3C/polyline%3E%3C/svg%3E");
+ background-size: 45%;
+ background-position: center;
+ background-repeat: no-repeat;
+ }
+ &[data-page="next"] {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='9 18 15 12 9 6'%3E%3C/polyline%3E%3C/svg%3E");
+ background-size: 45%;
+ background-position: center;
+ background-repeat: no-repeat;
+ }
+ &[data-page="last"] {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' width='24' height='24' stroke='%232d3748' stroke-width='1.1' fill='none' stroke-linecap='round' stroke-linejoin='round' class='css-i6dzq1'%3E%3Cpolyline points='13 17 18 12 13 7'%3E%3C/polyline%3E%3Cpolyline points='6 17 11 12 6 7'%3E%3C/polyline%3E%3C/svg%3E");
+ background-size: 50%;
+ background-position: center;
+ background-repeat: no-repeat;
+ }
+ }
+ }
+ }
+ .tabulator-tableholder {
+ overflow-x: auto;
+ overflow-y: hidden;
+ .tabulator-placeholder {
+ margin-top: calc(theme("spacing.2") * -1);
+ .tabulator-placeholder-contents {
+ color: theme("colors.slate.500");
+ font-weight: theme("fontWeight.normal");
+ font-size: theme("fontSize.sm");
+ }
+ }
+ }
+ .tabulator-alert {
+ background: #ffffffbd;
+ .tabulator-alert-msg {
+ font-weight: theme("fontWeight.normal");
+ font-size: theme("fontSize.base");
+ background-color: transparent;
+ &.tabulator-alert-state-msg {
+ border-width: 0;
+ color: theme("colors.slate.700");
+ }
+ &.tabulator-alert-state-error {
+ border-width: 0;
+ color: theme("colors.danger");
+ }
+ }
+ }
+}
+
+.dark {
+ .tabulator {
+ .tabulator-header {
+ color: theme("colors.slate.300");
+ border-color: theme("colors.darkmode.400");
+ .tabulator-headers .tabulator-col:hover {
+ background-color: theme("colors.darkmode.300");
+ }
+ }
+ .tabulator-table {
+ background-color: transparent;
+ color: theme("colors.slate.200");
+ .tabulator-row {
+ background-color: transparent;
+ border-color: transparent;
+ &:hover,
+ &.tabulator-row-even:hover {
+ background-color: theme("colors.darkmode.700");
+ }
+ &.tabulator-row-even {
+ background-color: theme("colors.darkmode.400");
+ }
+ }
+ }
+ .tabulator-footer {
+ .tabulator-paginator {
+ > label {
+ color: theme("colors.slate.200");
+ }
+ .tabulator-page-size {
+ background-color: theme("colors.darkmode.300");
+ border-color: theme("colors.darkmode.600");
+ color: theme("colors.slate.200");
+ }
+ .tabulator-page {
+ background: transparent;
+ color: theme("colors.slate.200");
+ &:focus {
+ --tw-ring-color: theme("colors.slate.700");
+ --tw-ring-opacity: 0.5;
+ transition: none;
+ }
+ &:hover {
+ background-color: theme("colors.darkmode.700");
+ color: theme("colors.slate.300");
+ }
+ &.active,
+ &.active:hover {
+ background-color: theme("colors.darkmode.300");
+ }
+ }
+ }
+ }
+ .tabulator-alert {
+ background-color: theme("colors.black"/ 30%);
+ .tabulator-alert-msg.tabulator-alert-state-msg {
+ color: theme("colors.slate.200");
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_tailwind-merge.css b/resources/css/components/_tailwind-merge.css
new file mode 100644
index 0000000..81a9c33
--- /dev/null
+++ b/resources/css/components/_tailwind-merge.css
@@ -0,0 +1,3 @@
+[data-tw-merge] {
+ visibility: hidden;
+}
diff --git a/resources/css/components/_tiny-slider.css b/resources/css/components/_tiny-slider.css
new file mode 100644
index 0000000..53da112
--- /dev/null
+++ b/resources/css/components/_tiny-slider.css
@@ -0,0 +1,110 @@
+.tns-outer {
+ position: relative;
+ .tns-controls button {
+ width: theme("spacing.5");
+ height: theme("spacing.5");
+ background-color: theme("colors.slate.200");
+ color: transparent;
+ border-radius: theme("borderRadius.full");
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ margin-top: auto;
+ margin-bottom: auto;
+ z-index: theme("zIndex.10");
+ outline: none;
+ &:hover {
+ background-color: theme("colors.slate.300");
+ }
+ &[data-controls="prev"] {
+ left: 0;
+ margin-left: calc(theme("spacing.6") * -1);
+ &:before {
+ content: "";
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ background-size: 80%;
+ width: 100%;
+ height: 100%;
+ background-position: center;
+ transform: rotate(90deg);
+ position: absolute;
+ margin: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+ }
+ &[data-controls="next"] {
+ right: 0;
+ margin-right: calc(theme("spacing.6") * -1);
+ &:before {
+ content: "";
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(102 113 132)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ background-size: 80%;
+ width: 100%;
+ height: 100%;
+ background-position: center;
+ transform: rotate(-90deg);
+ position: absolute;
+ margin: auto;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ }
+ }
+ }
+ .tns-nav {
+ margin-bottom: -1.8rem;
+ width: 100%;
+ position: absolute;
+ bottom: 0;
+ z-index: theme("zIndex.10");
+ display: flex;
+ justify-content: center;
+ button {
+ width: theme("spacing.3");
+ height: theme("spacing.3");
+ background-color: theme("colors.slate.300");
+ border-radius: theme("borderRadius.full");
+ margin-left: theme("spacing.1");
+ margin-right: theme("spacing.1");
+ outline: none;
+ &.tns-nav-active {
+ background-color: theme("colors.slate.500");
+ }
+ }
+ }
+ button[data-action] {
+ display: none;
+ }
+ .tns-visually-hidden {
+ display: none;
+ }
+}
+
+.dark {
+ .tns-outer {
+ .tns-controls button {
+ background-color: theme("colors.darkmode.300");
+ &:hover {
+ background-color: theme("colors.darkmode.200");
+ }
+ }
+ .tns-nav {
+ button {
+ background-color: theme("colors.darkmode.300");
+ &.tns-nav-active {
+ background-color: theme("colors.darkmode.200");
+ }
+ }
+ }
+ button[data-action] {
+ display: none;
+ }
+ .tns-visually-hidden {
+ display: none;
+ }
+ }
+}
diff --git a/resources/css/components/_tippy.css b/resources/css/components/_tippy.css
new file mode 100755
index 0000000..6cc59df
--- /dev/null
+++ b/resources/css/components/_tippy.css
@@ -0,0 +1,52 @@
+.tooltip-content {
+ left: 10000px;
+ position: fixed;
+}
+.tippy-box {
+ border-radius: theme("borderRadius.md");
+ .tippy-content {
+ padding: theme("spacing.[1.5]") theme("spacing.3");
+ }
+}
+.tippy-popper {
+ &[x-placement="left"],
+ &[x-placement="right"],
+ &[x-placement="left-start"],
+ &[x-placement="left-end"],
+ &[x-placement="right-start"],
+ &[x-placement="right-end"] {
+ .tippy-roundarrow,
+ .tippy-arrow {
+ top: 0;
+ bottom: 0;
+ margin-top: auto;
+ margin-bottom: auto;
+ }
+ }
+ &[x-placement="top"],
+ &[x-placement="bottom"],
+ &[x-placement="top-start"],
+ &[x-placement="top-end"],
+ &[x-placement="bottom-start"],
+ &[x-placement="bottom-end"] {
+ .tippy-roundarrow,
+ .tippy-arrow {
+ left: 0;
+ right: 0;
+ margin-left: auto;
+ margin-right: auto;
+ }
+ }
+}
+
+.dark {
+ .tippy-box {
+ box-shadow: 0 0 20px 4px #00000026, 0 4px 80px -8px #24282f40,
+ 0 4px 4px -2px #5b5e6926;
+ color: theme("colors.slate.300");
+ background-color: theme("colors.darkmode.300");
+ & > .tippy-svg-arrow {
+ fill: theme("colors.darkmode.300");
+ }
+ }
+}
diff --git a/resources/css/components/_toastify.css b/resources/css/components/_toastify.css
new file mode 100644
index 0000000..13f4437
--- /dev/null
+++ b/resources/css/components/_toastify.css
@@ -0,0 +1,29 @@
+.toastify {
+ background: none;
+ box-shadow: none;
+ padding: 0;
+ color: theme("colors.slate.700");
+ max-width: calc(100% - 30px);
+ @media screen(md) {
+ max-width: none;
+ }
+ .toast-close {
+ color: transparent;
+ position: absolute;
+ opacity: 1;
+ top: 0;
+ bottom: 0;
+ right: 0;
+ padding-right: theme("spacing.3");
+ display: flex;
+ align-items: center;
+ &:before {
+ content: "×";
+ display: block;
+ color: theme("colors.slate.500");
+ font-size: theme("fontSize.3xl");
+ margin-top: calc(theme("spacing.[1.5]") * -1);
+ font-weight: theme("fontWeight.light");
+ }
+ }
+}
diff --git a/resources/css/components/_tom-select.css b/resources/css/components/_tom-select.css
new file mode 100644
index 0000000..8f48b6f
--- /dev/null
+++ b/resources/css/components/_tom-select.css
@@ -0,0 +1,173 @@
+.tom-select {
+ &.ts-wrapper,
+ &.plugin-dropdown_input.focus.dropdown-active {
+ border-width: 1px;
+ border-style: solid;
+ box-shadow: theme("boxShadow.sm");
+ border-radius: theme("borderRadius.DEFAULT");
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ background-size: 18px;
+ background-position: center right 0.6rem;
+ background-repeat: no-repeat;
+ .ts-control {
+ border: 0;
+ display: flex;
+ outline: none;
+ min-height: 36px;
+ align-items: center;
+ background-color: transparent;
+ font-size: inherit;
+ padding: theme("spacing.2") theme("spacing.3");
+ input {
+ font-size: inherit;
+ }
+ }
+ }
+ &.ts-wrapper.disabled {
+ background-color: theme("colors.slate.100");
+ }
+ &.ts-wrapper.single.input-active .ts-control {
+ background-color: transparent;
+ }
+ &.ts-wrapper.multi {
+ &.has-items .ts-control {
+ column-gap: theme("spacing.[2.5]");
+ row-gap: theme("spacing.1");
+ padding: theme("spacing.1") theme("spacing.[2.5]");
+ }
+ .ts-control > div {
+ padding: 0 theme("spacing.2");
+ margin: 0 0 0 calc(theme("spacing.[1.5]") * -1);
+ border-radius: theme("borderRadius.DEFAULT");
+ background-color: theme("colors.slate.200");
+ }
+ }
+ &.ts-wrapper.plugin-remove_button .item .remove {
+ display: flex;
+ align-items: center;
+ justify-content: center;
+ border-color: theme("colors.slate.300");
+ padding: theme("spacing.1") theme("spacing.2");
+ }
+ &.ts-wrapper.plugin-remove_button:not(.rtl) .item .remove {
+ margin-left: theme("spacing.2");
+ }
+ &.ts-wrapper .dropdown-header {
+ border-color: theme("colors.slate.200");
+ background-color: theme("colors.slate.100");
+ padding: theme("spacing.[2.5]");
+ font-weight: theme("fontWeight.medium");
+ }
+ &.plugin-dropdown_input.focus.dropdown-active {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(74 85 104)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ }
+ &.plugin-dropdown_input .dropdown-input-wrap .dropdown-input {
+ outline: none;
+ }
+ .ts-dropdown {
+ left: -1px;
+ right: -1px;
+ width: auto;
+ z-index: 50;
+ margin-top: 1px;
+ font-size: inherit;
+ box-shadow: theme("boxShadow.sm");
+ border-radius: theme("borderRadius.DEFAULT");
+ border: 1px solid theme("colors.slate.200");
+ .dropdown-input-wrap {
+ padding: theme("spacing.2");
+ .dropdown-input {
+ border-radius: theme("borderRadius.DEFAULT");
+ border: 1px solid theme("colors.slate.200");
+ }
+ }
+ .optgroup-header {
+ padding: theme("spacing.[2.5]") theme("spacing.3");
+ font-weight: theme("fontWeight.medium");
+ background-color: theme("colors.slate.100");
+ }
+ .option {
+ padding: theme("spacing.[2.5]") theme("spacing.3");
+ &[data-selectable] {
+ &.active:not(.selected) {
+ color: inherit;
+ background-color: transparent;
+ background-color: theme("colors.slate.100");
+ }
+ &:hover:not(.selected) {
+ color: inherit;
+ background-color: theme("colors.slate.100");
+ }
+ }
+ }
+ .selected {
+ color: white;
+ background-color: theme("colors.primary");
+ }
+ [data-selectable] .highlight {
+ color: white;
+ background-color: theme("colors.danger");
+ }
+ }
+}
+
+.dark {
+ .tom-select {
+ &.ts-wrapper,
+ &.plugin-dropdown_input.focus.dropdown-active {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ .ts-control {
+ color: theme("colors.slate.300");
+ }
+ }
+ &.ts-wrapper.disabled {
+ border-color: transparent;
+ background-color: theme("colors.darkmode.800" / 50%);
+ }
+ &.ts-wrapper.multi {
+ .ts-control > div {
+ color: theme("colors.slate.300");
+ background-color: theme("colors.darkmode.600");
+ }
+ }
+ &.ts-wrapper.plugin-remove_button .item .remove {
+ border-color: theme("colors.darkmode.400");
+ }
+ &.ts-wrapper .dropdown-header {
+ border-color: theme("colors.darkmode.800");
+ background-color: theme("colors.darkmode.800");
+ }
+ &.plugin-dropdown_input.focus.dropdown-active {
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' transform='rotate(180)' fill='none' stroke='rgb(255 255 255)' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-chevron-down'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
+ }
+ .ts-dropdown {
+ color: theme("colors.slate.300");
+ border-color: theme("colors.darkmode.800");
+ background-color: theme("colors.darkmode.700");
+ .dropdown-input-wrap {
+ .dropdown-input {
+ border-color: theme("colors.darkmode.800");
+ background-color: theme("colors.darkmode.600");
+ }
+ }
+ .optgroup-header {
+ color: theme("colors.slate.300");
+ background-color: theme("colors.darkmode.800");
+ }
+ .option {
+ &[data-selectable] {
+ &.active:not(.selected) {
+ background-color: theme("colors.darkmode.600");
+ }
+ &:hover:not(.selected) {
+ background-color: theme("colors.darkmode.600");
+ }
+ }
+ }
+ }
+ }
+ .ts-wrapper {
+ border-color: theme("colors.darkmode.800");
+ background-color: theme("colors.darkmode.800");
+ }
+}
diff --git a/resources/css/components/_top-nav.css b/resources/css/components/_top-nav.css
new file mode 100644
index 0000000..e5f2495
--- /dev/null
+++ b/resources/css/components/_top-nav.css
@@ -0,0 +1,327 @@
+.top-nav {
+ .top-menu {
+ height: 55px;
+ display: flex;
+ align-items: center;
+ padding-left: theme("spacing.5");
+ padding-right: theme("spacing.5");
+ margin-right: theme("spacing.1");
+ color: white;
+ position: relative;
+ border-radius: theme("borderRadius.full");
+ @media screen(xl) {
+ height: 47px;
+ border-radius: theme("borderRadius.lg");
+ }
+ .top-menu__icon {
+ z-index: 10;
+ }
+ .top-menu__title {
+ width: 100%;
+ margin-left: theme("spacing.3");
+ display: flex;
+ align-items: center;
+ white-space: nowrap;
+ z-index: 10;
+ .top-menu__sub-icon {
+ transition-property: theme("transitionProperty.DEFAULT");
+ transition-timing-function: theme(
+ "transitionTimingFunction.in"
+ );
+ transition-duration: theme("transitionDuration.100");
+ width: theme("spacing.4");
+ height: theme("spacing.4");
+ display: none;
+ @media screen(xl) {
+ display: block;
+ }
+ }
+ }
+ }
+ & > ul {
+ & > li {
+ /* First level */
+ &:hover {
+ position: relative;
+ & > .top-menu {
+ background: theme("colors.primary"/ 60%);
+ &:before {
+ content: "";
+ display: block;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.white" / 4%);
+ border-radius: theme("borderRadius.full");
+ position: absolute;
+ z-index: -1;
+ @media screen(xl) {
+ background-color: theme("colors.white" / 10%);
+ border-radius: theme("borderRadius.lg");
+ }
+ }
+ .top-menu__title {
+ .top-menu__sub-icon {
+ transform: rotate(180deg);
+ }
+ }
+ }
+ & > ul {
+ display: block;
+ }
+ }
+ & > .top-menu {
+ margin-top: 3px;
+ &.top-menu--active {
+ background-color: theme("colors.slate.100");
+ @media screen(xl) {
+ background-color: theme("colors.primary");
+ }
+ &:before {
+ content: "";
+ display: none;
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ background-color: theme("colors.white" / 8%);
+ border-radius: theme("borderRadius.lg");
+ position: absolute;
+ border-bottom: 3px solid theme("colors.black" / 10%);
+ @media screen(xl) {
+ display: block;
+ }
+ }
+ &:after {
+ content: "";
+ animation: 0.3s ease-in-out 1s active-top-menu-chevron;
+ animation-fill-mode: forwards;
+ display: none;
+ width: 20px;
+ height: 80px;
+ margin-bottom: -74px;
+ background-image: theme("backgroundImage.menu-active");
+ background-repeat: no-repeat;
+ background-size: cover;
+ position: absolute;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ margin-left: auto;
+ margin-right: auto;
+ transform: rotate(90deg);
+ opacity: 0;
+ @media screen(xl) {
+ display: block;
+ }
+ }
+ .top-menu__icon {
+ color: theme("colors.primary");
+ @media screen(xl) {
+ color: white;
+ }
+ }
+ .top-menu__title {
+ font-weight: theme("fontWeight.medium");
+ color: theme("colors.slate.800");
+ @media screen(xl) {
+ color: white;
+ }
+ }
+ }
+ .top-menu__icon {
+ margin-top: -3px;
+ }
+ .top-menu__title {
+ margin-top: -3px;
+ .top-menu__sub-icon {
+ margin-left: theme("spacing.2");
+ }
+ }
+ }
+ & > ul {
+ box-shadow: 0px 3px 20px #0000000b;
+ background-color: theme("colors.primary");
+ display: none;
+ width: theme("spacing.56");
+ position: absolute;
+ border-radius: theme("borderRadius.md");
+ z-index: 20;
+ padding-left: 0;
+ padding-right: 0;
+ margin-top: theme("spacing.1");
+ &:before {
+ content: "";
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: theme("colors.white" / 4%);
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ border-radius: theme("borderRadius.md");
+ z-index: -1;
+ }
+ &:after {
+ content: "";
+ width: 100%;
+ height: theme("spacing.1");
+ position: absolute;
+ top: 0;
+ left: 0;
+ margin-top: calc(theme("spacing.1") * -1);
+ cursor: pointer;
+ }
+ & > li {
+ /* Second level */
+ padding-left: theme("spacing.5");
+ padding-right: theme("spacing.5");
+ position: relative;
+ &:hover {
+ position: relative;
+ & > .top-menu {
+ .top-menu__title {
+ .top-menu__sub-icon {
+ transform: rotate(-90deg);
+ }
+ }
+ }
+ & > ul {
+ display: block;
+ }
+ }
+ & > .top-menu {
+ padding-left: 0;
+ padding-right: 0;
+ margin-right: 0;
+ .top-menu__title {
+ width: 100%;
+ .top-menu__sub-icon {
+ margin-left: auto;
+ }
+ }
+ }
+ & > ul {
+ box-shadow: 0px 3px 20px #0000000b;
+ left: 100%;
+ background-color: theme("colors.primary");
+ display: none;
+ border-radius: theme("borderRadius.md");
+ margin-top: 0;
+ margin-left: 0;
+ top: 0;
+ width: theme("spacing.56");
+ position: absolute;
+ z-index: 20;
+ padding-left: 0;
+ padding-right: 0;
+ &:before {
+ content: "";
+ display: block;
+ position: absolute;
+ width: 100%;
+ height: 100%;
+ background-color: theme("colors.white" / 4%);
+ top: 0;
+ left: 0;
+ right: 0;
+ bottom: 0;
+ border-radius: theme("borderRadius.md");
+ z-index: -1;
+ }
+ & > li {
+ /* Third level */
+ padding-left: theme("spacing.5");
+ padding-right: theme("spacing.5");
+ & > .top-menu {
+ padding-left: 0;
+ padding-right: 0;
+ margin-right: 0;
+ .top-menu__title {
+ width: 100%;
+ .top-menu__sub-icon {
+ margin-left: auto;
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
+
+@keyframes active-top-menu-chevron {
+ 100% {
+ opacity: 1;
+ margin-bottom: -54px;
+ }
+}
+
+.dark {
+ .top-nav {
+ .top-menu {
+ .top-menu__icon {
+ color: theme("colors.slate.400");
+ }
+ .top-menu__title {
+ color: theme("colors.slate.400");
+ }
+ }
+ & > ul {
+ & > li {
+ /* First level */
+ &:hover {
+ & > .top-menu {
+ &:not(.top-menu--active) {
+ background-color: transparent;
+ &:before {
+ background-color: theme("colors.darkmode.700");
+ }
+ }
+ }
+ }
+ & > .top-menu {
+ &.top-menu--active {
+ background-color: theme("colors.darkmode.700");
+ &:before {
+ background-color: theme("colors.darkmode.700");
+ }
+ &:after {
+ background-image: theme(
+ "backgroundImage.menu-active-dark"
+ );
+ }
+ .top-menu__icon {
+ color: theme("colors.white");
+ }
+ .top-menu__title {
+ color: theme("colors.white");
+ }
+ }
+ }
+ & > ul {
+ background-color: theme("colors.darkmode.600");
+ box-shadow: 0px 3px 7px #0000001c;
+ &:before {
+ background-color: theme("colors.black" / 10%);
+ }
+ & > li {
+ /* Second level */
+ & > ul {
+ background-color: theme("colors.darkmode.600");
+ box-shadow: 0px 3px 7px #0000001c;
+ &:before {
+ background-color: theme("colors.black" / 10%);
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/resources/css/components/_typing-dots.css b/resources/css/components/_typing-dots.css
new file mode 100644
index 0000000..7c41de8
--- /dev/null
+++ b/resources/css/components/_typing-dots.css
@@ -0,0 +1,22 @@
+@layer components {
+ .typing-dots {
+ span {
+ @apply opacity-0;
+ &:nth-child(1) {
+ animation: 1s type-animation infinite 0.33333s;
+ }
+ &:nth-child(2) {
+ animation: 1s type-animation infinite 0.66666s;
+ }
+ &:nth-child(3) {
+ animation: 1s type-animation infinite 0.99999s;
+ }
+ }
+ }
+
+ @keyframes type-animation {
+ 50% {
+ @apply opacity-100;
+ }
+ }
+}
diff --git a/resources/css/components/_zoom-in.css b/resources/css/components/_zoom-in.css
new file mode 100644
index 0000000..f9df277
--- /dev/null
+++ b/resources/css/components/_zoom-in.css
@@ -0,0 +1,14 @@
+@layer components {
+ .zoom-in {
+ transition-property: transform, box-shadow;
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ transition-duration: 150ms;
+ transition-duration: 300ms;
+ transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
+ cursor: pointer;
+ &:hover {
+ transform: scale(theme("scale.105"));
+ box-shadow: theme("boxShadow.xl");
+ }
+ }
+}
diff --git a/resources/css/components/_zoom-vanilla.css b/resources/css/components/_zoom-vanilla.css
new file mode 100644
index 0000000..2c59d26
--- /dev/null
+++ b/resources/css/components/_zoom-vanilla.css
@@ -0,0 +1,9 @@
+.zoom-overlay {
+ background-color: theme("colors.black" / 75%);
+}
+
+.dark {
+ .zoom-overlay {
+ background-color: theme("colors.black" / 40%);
+ }
+}
diff --git a/resources/images/error-illustration.svg b/resources/images/error-illustration.svg
new file mode 100644
index 0000000..19f09e9
--- /dev/null
+++ b/resources/images/error-illustration.svg
@@ -0,0 +1,72 @@
+
diff --git a/resources/images/illustration.svg b/resources/images/illustration.svg
new file mode 100644
index 0000000..a0ae933
--- /dev/null
+++ b/resources/images/illustration.svg
@@ -0,0 +1,121 @@
+
diff --git a/resources/images/logo.svg b/resources/images/logo.svg
new file mode 100644
index 0000000..28c5228
--- /dev/null
+++ b/resources/images/logo.svg
@@ -0,0 +1,9 @@
+
diff --git a/resources/images/phone-illustration.svg b/resources/images/phone-illustration.svg
new file mode 100644
index 0000000..279c65a
--- /dev/null
+++ b/resources/images/phone-illustration.svg
@@ -0,0 +1,11 @@
+
diff --git a/resources/images/placeholders/200x200.jpg b/resources/images/placeholders/200x200.jpg
new file mode 100755
index 0000000..4d40faa
Binary files /dev/null and b/resources/images/placeholders/200x200.jpg differ
diff --git a/resources/images/placeholders/800x800.jpg b/resources/images/placeholders/800x800.jpg
new file mode 100755
index 0000000..560c7f6
Binary files /dev/null and b/resources/images/placeholders/800x800.jpg differ
diff --git a/resources/images/woman-illustration.svg b/resources/images/woman-illustration.svg
new file mode 100644
index 0000000..f023ddf
--- /dev/null
+++ b/resources/images/woman-illustration.svg
@@ -0,0 +1,32 @@
+
diff --git a/resources/json/location.json b/resources/json/location.json
new file mode 100755
index 0000000..6b40df8
--- /dev/null
+++ b/resources/json/location.json
@@ -0,0 +1 @@
+[{"name":"Official Store 1","latitude":"-6.1852503","longitude":"106.874831"},{"name":"Official Store 2","latitude":"-6.183166","longitude":"106.927962"},{"name":"Official Store 3","latitude":"-6.1441182","longitude":"106.8838333"},{"name":"Official Store 4","latitude":"5.5416023","longitude":"95.3367786"},{"name":"Official Store 5","latitude":"3.5374288","longitude":"98.7093122"},{"name":"Official Store 6","latitude":"3.6141928","longitude":"98.7069495"},{"name":"Official Store 7","latitude":"-0.8676445","longitude":"100.3798576"},{"name":"Official Store 8","latitude":"0.4249965","longitude":"101.4378315"},{"name":"Official Store 9","latitude":"1.1375711","longitude":"104.0167512"},{"name":"Official Store 10","latitude":"-2.9098656","longitude":"104.7148521"},{"name":"Official Store 11","latitude":"-2.9716029","longitude":"104.7123907"},{"name":"Official Store 12","latitude":"-1.6192371","longitude":"103.5948793"},{"name":"Official Store 13","latitude":"-3.86789","longitude":"102.3496487"},{"name":"Official Store 14","latitude":"-4.844925","longitude":"105.4727718"},{"name":"Official Store 15","latitude":"-6.4093355","longitude":"107.4820524"},{"name":"Official Store 16","latitude":"-6.2705453","longitude":"107.0887695"},{"name":"Official Store 17","latitude":"-6.9661824","longitude":"107.8209252"},{"name":"Official Store 18","latitude":"-6.9488713","longitude":"107.6226518"},{"name":"Official Store 19","latitude":"-7.0897999","longitude":"110.4095698"},{"name":"Official Store 20","latitude":"-6.959065","longitude":"110.445554"},{"name":"Official Store 21","latitude":"-7.5602719","longitude":"110.7599826"},{"name":"Official Store 22","latitude":"-7.3593881","longitude":"112.6789783"},{"name":"Official Store 23","latitude":"-8.613003","longitude":"115.1927548"},{"name":"Official Store 24","latitude":"-8.599562","longitude":"116.1826897"},{"name":"Official Store 25","latitude":"-0.0752469","longitude":"109.3652061"},{"name":"Official Store 26","latitude":"-2.5378343","longitude":"112.9251494"},{"name":"Official Store 27","latitude":"-3.4165662","longitude":"114.6798992"},{"name":"Official Store 28","latitude":"-0.4642793","longitude":"117.1406547"},{"name":"Official Store 29","latitude":"1.4707077","longitude":"124.9195984"},{"name":"Official Store 30","latitude":"-0.8533082","longitude":"119.8837662"},{"name":"Official Store 31","latitude":"-5.103227","longitude":"119.4581237"},{"name":"Official Store 32","latitude":"-3.9977317","longitude":"122.4997843"},{"name":"Official Store 33","latitude":"-3.638957","longitude":"128.2460404"},{"name":"Official Store 34","latitude":"-0.8902418","longitude":"131.3136297"},{"name":"Official Store 35","latitude":"-1.1618514","longitude":"116.850629"},{"name":"Official Store 36","latitude":"-6.1639704","longitude":"106.675014"},{"name":"Official Store 37","latitude":"3.5531273","longitude":"98.8489318"},{"name":"Official Store 38","latitude":"-1.2310798","longitude":"116.8749021"},{"name":"Official Store 39","latitude":"1.1375679","longitude":"104.0166845"},{"name":"Official Store 40","latitude":"-1.2760395","longitude":"116.8443807"},{"name":"Official Store 41","latitude":"-6.5065577","longitude":"106.8425623"},{"name":"Official Store 42","latitude":"-6.3113721","longitude":"106.7542655"},{"name":"Official Store 43","latitude":"1.3523704","longitude":"99.2879552"},{"name":"Official Store 44","latitude":"2.0640159","longitude":"99.8483406"},{"name":"Official Store 45","latitude":"-3.0422556","longitude":"104.7490286"},{"name":"Official Store 46","latitude":"0.3929823","longitude":"101.857644"},{"name":"Official Store 47","latitude":"0.4250072","longitude":"101.437869"},{"name":"Official Store 48","latitude":"-3.7858528","longitude":"103.6412456"},{"name":"Official Store 49","latitude":"-4.1249887","longitude":"104.1679203"},{"name":"Official Store 50","latitude":"-2.1852028","longitude":"106.1328731"},{"name":"Official Store 51","latitude":"-1.4989263","longitude":"102.1033271"},{"name":"Official Store 52","latitude":"-6.6727806","longitude":"106.8469738"},{"name":"Official Store 53","latitude":"-4.2924954","longitude":"105.2206822"},{"name":"Official Store 54","latitude":"-4.954338","longitude":"105.2156682"},{"name":"Official Store 55","latitude":"-6.7238977","longitude":"108.5381016"},{"name":"Official Store 56","latitude":"-6.0327028","longitude":"106.0856715"},{"name":"Official Store 57","latitude":"-6.2149033","longitude":"106.4903782"},{"name":"Official Store 58","latitude":"-7.3184246","longitude":"108.2280875"},{"name":"Official Store 59","latitude":"-6.950399","longitude":"110.4827914"},{"name":"Official Store 60","latitude":"-6.868285","longitude":"109.22041"},{"name":"Official Store 61","latitude":"-7.6761041","longitude":"109.0591339"},{"name":"Official Store 62","latitude":"-6.8428042","longitude":"110.8420163"},{"name":"Official Store 63","latitude":"-7.4895108","longitude":"110.2349109"},{"name":"Official Store 64","latitude":"-7.8993929","longitude":"112.6632471"},{"name":"Official Store 65","latitude":"-7.6876068","longitude":"110.3415865"},{"name":"Official Store 66","latitude":"-7.4425494","longitude":"109.2344842"},{"name":"Official Store 67","latitude":"-7.3593312","longitude":"112.6790201"},{"name":"Official Store 68","latitude":"-8.245422","longitude":"114.3504847"},{"name":"Official Store 69","latitude":"-8.2008189","longitude":"113.6256908"},{"name":"Official Store 70","latitude":"-6.8810115","longitude":"112.0453495"},{"name":"Official Store 71","latitude":"-0.0752237","longitude":"109.3652161"},{"name":"Official Store 72","latitude":"0.9013566","longitude":"108.9813182"},{"name":"Official Store 73","latitude":"-2.5978551","longitude":"111.740685"},{"name":"Official Store 74","latitude":"-0.4936963","longitude":"117.1272444"},{"name":"Official Store 75","latitude":"-3.416548","longitude":"114.6799044"},{"name":"Official Store 76","latitude":"0.5729273","longitude":"123.0534948"},{"name":"Official Store 77","latitude":"0.4719387","longitude":"121.9316166"},{"name":"Official Store 78","latitude":"-2.6853294","longitude":"118.8695314"},{"name":"Official Store 79","latitude":"-0.9472804","longitude":"122.7922123"},{"name":"Official Store 80","latitude":"0.7914249","longitude":"127.3860326"},{"name":"Official Store 81","latitude":"-6.331041","longitude":"106.6791615"},{"name":"Official Store 82","latitude":"-0.247822","longitude":"100.6113003"},{"name":"Official Store 83","latitude":"-3.0121331","longitude":"120.20444"},{"name":"Official Store 84","latitude":"-5.1031794","longitude":"119.4580494"},{"name":"Official Store 85","latitude":"3.5744226","longitude":"98.6264121"},{"name":"Official Store 86","latitude":"-2.7440137","longitude":"107.6662278"},{"name":"Official Store 87","latitude":"-7.8206124","longitude":"110.2392692"},{"name":"Official Store 88","latitude":"-8.4476922","longitude":"115.6101601"},{"name":"Official Store 89","latitude":"-8.5996004","longitude":"116.1826362"},{"name":"Official Store 90","latitude":"-7.770832","longitude":"113.1712474"},{"name":"Official Store 91","latitude":"-6.2877282","longitude":"106.9861742"},{"name":"Official Store 92","latitude":"-2.2418841","longitude":"113.9194271"},{"name":"Official Store 93","latitude":"-7.2292908","longitude":"112.709374"},{"name":"Official Store 94","latitude":"-8.0731916","longitude":"112.2111097"},{"name":"Official Store 95","latitude":"-7.4588653","longitude":"110.9553393"},{"name":"Official Store 96","latitude":"5.1790259","longitude":"97.1240924"},{"name":"Official Store 97","latitude":"-6.1044717","longitude":"106.1368467"},{"name":"Official Store 98","latitude":"3.6141774","longitude":"98.7070673"},{"name":"Official Store 99","latitude":"-7.5198744","longitude":"112.4180372"},{"name":"Official Store 100","latitude":"-4.5382239","longitude":"120.294035"},{"name":"Official Store 101","latitude":"-7.6464859","longitude":"111.5179105"},{"name":"Official Store 102","latitude":"3.6142321","longitude":"98.7070834"},{"name":"Official Store 103","latitude":"0.7059175","longitude":"100.5407274"},{"name":"Official Store 104","latitude":"-3.7835933","longitude":"103.5641778"},{"name":"Official Store 105","latitude":"-3.2706462","longitude":"102.9248041"},{"name":"Official Store 106","latitude":"-2.9755856","longitude":"104.7624241"},{"name":"Official Store 107","latitude":"-2.3050903","longitude":"102.6772189"},{"name":"Official Store 108","latitude":"-6.1339166","longitude":"106.7295565"},{"name":"Official Store 109","latitude":"-6.8387844","longitude":"107.4756305"},{"name":"Official Store 110","latitude":"-7.1847671","longitude":"107.8896932"},{"name":"Official Store 111","latitude":"-6.9168548","longitude":"109.7499356"},{"name":"Official Store 112","latitude":"-7.7544311","longitude":"112.0262064"},{"name":"Official Store 113","latitude":"-8.1276566","longitude":"115.0658719"},{"name":"Official Store 114","latitude":"-8.8096814","longitude":"121.6715332"},{"name":"Official Store 115","latitude":"-8.6208244","longitude":"122.2076267"},{"name":"Official Store 116","latitude":"-10.146679","longitude":"123.6298891"},{"name":"Official Store 117","latitude":"-8.6142786","longitude":"120.4314793"},{"name":"Official Store 118","latitude":"0.0697573","longitude":"111.4806546"},{"name":"Official Store 119","latitude":"-3.7601255","longitude":"115.4139977"},{"name":"Official Store 120","latitude":"-3.4511767","longitude":"116.002277"},{"name":"Official Store 121","latitude":"1.4429846","longitude":"124.8519072"},{"name":"Official Store 122","latitude":"-4.0015738","longitude":"119.632362"},{"name":"Official Store 123","latitude":"-5.2148973","longitude":"119.4496198"},{"name":"Official Store 124","latitude":"-2.5799295","longitude":"140.6864192"},{"name":"Official Store 125","latitude":"-3.8678528","longitude":"102.3496463"},{"name":"Official Store 126","latitude":"0.1222243","longitude":"110.5756725"},{"name":"Official Store 127","latitude":"-6.2749144","longitude":"107.2755399"},{"name":"Official Store 128","latitude":"-7.3982536","longitude":"109.6551233"},{"name":"Official Store 129","latitude":"-0.2478614","longitude":"100.6113663"},{"name":"Official Store 130","latitude":"-0.3933928","longitude":"102.4336727"},{"name":"Official Store 131","latitude":"-6.4007392","longitude":"106.8306165"},{"name":"Official Store 132","latitude":"-6.1250467","longitude":"106.7544877"},{"name":"Official Store 133","latitude":"-6.1476444","longitude":"106.8996159"},{"name":"Official Store 134","latitude":"-3.9876005","longitude":"119.6367823"},{"name":"Official Store 135","latitude":"-2.849401","longitude":"104.2354745"},{"name":"Official Store 136","latitude":"-2.8889114","longitude":"103.8592004"},{"name":"Official Store 137","latitude":"-6.4771433","longitude":"106.8835818"},{"name":"Official Store 138","latitude":"-6.267291","longitude":"107.2279994"},{"name":"Official Store 139","latitude":"-6.9756942","longitude":"110.3236059"},{"name":"Official Store 140","latitude":"-0.4619491","longitude":"117.1817322"},{"name":"Official Store 141","latitude":"-6.135616","longitude":"106.9350036"},{"name":"Official Store 142","latitude":"-5.5367405","longitude":"120.1958579"},{"name":"Official Store 143","latitude":"-5.4690771","longitude":"122.5902344"},{"name":"Official Store 144","latitude":"-6.9261476","longitude":"107.5918776"},{"name":"Official Store 145","latitude":"-2.9658194","longitude":"104.7951967"},{"name":"Official Store 146","latitude":"-6.2098193","longitude":"106.6239816"},{"name":"Official Store 147","latitude":"-6.2954638","longitude":"106.8688722"},{"name":"Official Store 148","latitude":"-6.9661829","longitude":"107.8209667"},{"name":"Official Store 149","latitude":"-6.8387546","longitude":"107.4757013"},{"name":"Official Store 150","latitude":"-6.9590747","longitude":"110.4434533"},{"name":"Official Store 151","latitude":"-7.6959958","longitude":"109.6974416"},{"name":"Official Store 152","latitude":"0.5420181","longitude":"123.0612653"},{"name":"Official Store 153","latitude":"-2.2617467","longitude":"120.4127428"},{"name":"Official Store 154","latitude":"0.7914448","longitude":"127.383961"},{"name":"Official Store 155","latitude":"0.7914448","longitude":"127.383961"},{"name":"Official Store 156","latitude":"-0.8656033","longitude":"134.0544935"},{"name":"Official Store 157","latitude":"3.5531566","longitude":"98.8489569"},{"name":"Official Store 158","latitude":"-6.2094091","longitude":"106.5658609"}]
\ No newline at end of file
diff --git a/storage/app/.gitignore b/storage/app/.gitignore
new file mode 100644
index 0000000..8f4803c
--- /dev/null
+++ b/storage/app/.gitignore
@@ -0,0 +1,3 @@
+*
+!public/
+!.gitignore
diff --git a/storage/app/public/.gitignore b/storage/app/public/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/app/public/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/.gitignore b/storage/framework/.gitignore
new file mode 100644
index 0000000..05c4471
--- /dev/null
+++ b/storage/framework/.gitignore
@@ -0,0 +1,9 @@
+compiled.php
+config.php
+down
+events.scanned.php
+maintenance.php
+routes.php
+routes.scanned.php
+schedule-*
+services.json
diff --git a/storage/framework/cache/.gitignore b/storage/framework/cache/.gitignore
new file mode 100644
index 0000000..01e4a6c
--- /dev/null
+++ b/storage/framework/cache/.gitignore
@@ -0,0 +1,3 @@
+*
+!data/
+!.gitignore
diff --git a/storage/framework/cache/data/.gitignore b/storage/framework/cache/data/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/cache/data/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/sessions/.gitignore b/storage/framework/sessions/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/sessions/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/testing/.gitignore b/storage/framework/testing/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/testing/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/framework/views/.gitignore b/storage/framework/views/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/framework/views/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/storage/logs/.gitignore b/storage/logs/.gitignore
new file mode 100644
index 0000000..d6b7ef3
--- /dev/null
+++ b/storage/logs/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore