diff --git a/.gitignore b/.gitignore
index 2b8391a..9b61dcc 100644
--- a/.gitignore
+++ b/.gitignore
@@ -10,6 +10,10 @@ user/config.php
frontend/node_modules
frontend/package-lock.json
+# backend tooling
+user/plugins/sleeky-backend/node_modules
+user/plugins/sleeky-backend/package-lock.json
+
# SQL
*.sql
*.sql.gz
diff --git a/frontend/assets/sass/styles.scss b/frontend/assets/sass/styles.scss
index 05e0b98..7cb7c98 100644
--- a/frontend/assets/sass/styles.scss
+++ b/frontend/assets/sass/styles.scss
@@ -1,17 +1,18 @@
// Font Imports
-@import url('https://fonts.googleapis.com/css2?family=Montserrat:wght@700&family=Open+Sans&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Oswald:wght@500&family=Montserrat&display=swap');
+@import url('https://fonts.googleapis.com/css2?family=Raleway:wght@300&family=Raleway&display=swap');
-$open-sans: "Open Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
-$montserrat: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+$raleway: "Raleway", system-ui, -apple-system, "Segoe UI", Raleway, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+$oswald: "Oswald", system-ui, -apple-system, "Segoe UI", Oswald, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
// Bootstrap Overrides
$enable-negative-margins: true;
-$font-family-sans-serif: $open-sans;
-$input-btn-font-family: $montserrat;
-$headings-font-family: $montserrat;
+$font-family-sans-serif: $raleway;
+$input-btn-font-family: $oswald;
+$headings-font-family: $oswald;
$input-bg: #ebebeb;
-$input-font-weight: 700;
-$btn-font-weight: 700;
+$input-font-weight: 500;
+$btn-font-weight: 500;
$input-border-width: 0;
$border-radius: 6px;
@@ -46,10 +47,10 @@ $border-radius: 6px;
//@import "../../node_modules/bootstrap/scss/breadcrumb";
//@import "../../node_modules/bootstrap/scss/pagination";
//@import "../../node_modules/bootstrap/scss/badge";
-//@import "../../node_modules/bootstrap/scss/alert";
+@import "../../node_modules/bootstrap/scss/alert";
//@import "../../node_modules/bootstrap/scss/progress";
//@import "../../node_modules/bootstrap/scss/list-group";
-//@import "../../node_modules/bootstrap/scss/close";
+@import "../../node_modules/bootstrap/scss/close";
//@import "../../node_modules/bootstrap/scss/toasts";
//@import "../../node_modules/bootstrap/scss/modal";
//@import "../../node_modules/bootstrap/scss/tooltip";
@@ -67,9 +68,9 @@ $border-radius: 6px;
// Custom Styles
.bold-link {
- font-family: $montserrat;
- font-weight: 700;
- text-transform: uppercase;
+ font-family: $oswald;
+ font-weight: 500;
+ text-transform: none;
}
@include media-breakpoint-down(md) {
diff --git a/frontend/assets/svg/utc-power-c-reverse.svg b/frontend/assets/svg/utc-power-c-reverse.svg
new file mode 100644
index 0000000..1600331
--- /dev/null
+++ b/frontend/assets/svg/utc-power-c-reverse.svg
@@ -0,0 +1,16 @@
+
+
+
diff --git a/frontend/assets/svg/utc-wordmark-reverse.svg b/frontend/assets/svg/utc-wordmark-reverse.svg
new file mode 100644
index 0000000..30f8ea6
--- /dev/null
+++ b/frontend/assets/svg/utc-wordmark-reverse.svg
@@ -0,0 +1,60 @@
+
+
\ No newline at end of file
diff --git a/frontend/config.php b/frontend/config.php
index b4d4c58..cea596f 100644
--- a/frontend/config.php
+++ b/frontend/config.php
@@ -4,19 +4,19 @@
// GENERAL
// Page title for your site
-define('title', 'Sleeky theme for YOURLS');
+define('title', 'UTC URL Shortener');
// The short title of your site, used in the footer and in some sub pages
-define('shortTitle', 'Sleeky');
+define('shortTitle', 'go.UTC.edu');
// A description of your site, shown on the homepage.
-define('description', 'A quick description on why your site is so fantastic, what it does and why people should definitely start using it. Oh, and how it’s free.');
+define('description', 'Long URLs annoy. Shorten and share, Mocs.
Short links and URLs entered at go.UTC.edu are actively monitored by UTC IT.');
// The favicon for your site
-define('favicon', '/frontend/assets/img/favicon.ico');
+define('favicon', 'user/plugins/yourls-favicon/assets/favicon.ico');
// Logo for your site, displayed on home page
-define('logo', '/frontend/assets/img/logo-black.png');
+define('logo', '/frontend/assets/svg/utc-wordmark-reverse.svg');
// Enable reCAPTCHA V3
// It is highly recommended you use reCAPTCHA V3. It will stop spam. You can get a site and secret key from here: https://www.google.com/recaptcha/admin/create
@@ -36,7 +36,7 @@
// Set a primary colour to be used. Default: #007bff
// Here are some other colours you could try:
// #f44336: red, #9c27b0: purple, #00bcd4: teal, #ff5722: orange
-define('colour', '#205493');
+define('colour', '#112E51');
// Optional
// Set a background image to be used.
@@ -50,8 +50,7 @@
// The array follows a title link structure:
// "TITLE" => "LINK",
$footerLinks = [
- "About" => "https://github.com/utctiny",
- "Contact" => "https://www.utc.edu/web",
- // "Legal" => "https://yourls.org/",
- "Admin" => "/admin/"
+ "About" => "https://github.com/UTCWeb/utctiny#utctiny",
+ "Privacy" => "https://www.utc.edu/about/privacy",
+ "Manage My Links" => "/admin/",
];
diff --git a/frontend/dist/styles.css b/frontend/dist/styles.css
index 24d72c5..f9c5aa6 100644
--- a/frontend/dist/styles.css
+++ b/frontend/dist/styles.css
@@ -1,5 +1,6 @@
@charset "UTF-8";
-@import url("https://fonts.googleapis.com/css2?family=Montserrat:wght@700&family=Open+Sans&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Oswald:wght@500&family=Montserrat&display=swap");
+@import url("https://fonts.googleapis.com/css2?family=Raleway:wght@300&family=Raleway&display=swap");
:root,
[data-bs-theme=light] {
--bs-blue: #0d6efd;
@@ -67,7 +68,7 @@
--bs-dark-border-subtle: #adb5bd;
--bs-white-rgb: 255, 255, 255;
--bs-black-rgb: 0, 0, 0;
- --bs-font-sans-serif: "Open Sans", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ --bs-font-sans-serif: "Raleway", system-ui, -apple-system, "Segoe UI", Raleway, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
--bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
--bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));
--bs-body-font-family: var(--bs-font-sans-serif);
@@ -213,7 +214,7 @@ hr {
h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 {
margin-top: 0;
margin-bottom: 0.5rem;
- font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: "Oswald", system-ui, -apple-system, "Segoe UI", Oswald, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-weight: 500;
line-height: 1.2;
color: var(--bs-heading-color);
@@ -1851,9 +1852,9 @@ progress {
display: block;
width: 100%;
padding: 0.375rem 0.75rem;
- font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: "Oswald", system-ui, -apple-system, "Segoe UI", Oswald, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
- font-weight: 700;
+ font-weight: 500;
line-height: 1.5;
color: var(--bs-body-color);
appearance: none;
@@ -2002,9 +2003,9 @@ textarea.form-control-lg {
display: block;
width: 100%;
padding: 0.375rem 2.25rem 0.375rem 0.75rem;
- font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-family: "Oswald", system-ui, -apple-system, "Segoe UI", Oswald, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
font-size: 1rem;
- font-weight: 700;
+ font-weight: 500;
line-height: 1.5;
color: var(--bs-body-color);
appearance: none;
@@ -2393,7 +2394,7 @@ textarea.form-control-lg {
align-items: center;
padding: 0.375rem 0.75rem;
font-size: 1rem;
- font-weight: 700;
+ font-weight: 500;
line-height: 1.5;
color: var(--bs-body-color);
text-align: center;
@@ -2634,9 +2635,9 @@ textarea.form-control-lg {
.btn {
--bs-btn-padding-x: 0.75rem;
--bs-btn-padding-y: 0.375rem;
- --bs-btn-font-family: Montserrat, system-ui, -apple-system, Segoe UI, Roboto, Helvetica Neue, Arial, Noto Sans, Liberation Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
+ --bs-btn-font-family: Oswald, system-ui, -apple-system, Segoe UI, Oswald, Helvetica Neue, Arial, Noto Sans, Liberation Sans, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji;
--bs-btn-font-size: 1rem;
- --bs-btn-font-weight: 700;
+ --bs-btn-font-weight: 500;
--bs-btn-line-height: 1.5;
--bs-btn-color: var(--bs-body-color);
--bs-btn-bg: transparent;
@@ -3379,6 +3380,144 @@ textarea.form-control-lg {
--bs-accordion-btn-active-icon: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%236ea8fe'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e");
}
+.alert {
+ --bs-alert-bg: transparent;
+ --bs-alert-padding-x: 1rem;
+ --bs-alert-padding-y: 1rem;
+ --bs-alert-margin-bottom: 1rem;
+ --bs-alert-color: inherit;
+ --bs-alert-border-color: transparent;
+ --bs-alert-border: var(--bs-border-width) solid var(--bs-alert-border-color);
+ --bs-alert-border-radius: var(--bs-border-radius);
+ --bs-alert-link-color: inherit;
+ position: relative;
+ padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
+ margin-bottom: var(--bs-alert-margin-bottom);
+ color: var(--bs-alert-color);
+ background-color: var(--bs-alert-bg);
+ border: var(--bs-alert-border);
+ border-radius: var(--bs-alert-border-radius);
+}
+
+.alert-heading {
+ color: inherit;
+}
+
+.alert-link {
+ font-weight: 700;
+ color: var(--bs-alert-link-color);
+}
+
+.alert-dismissible {
+ padding-right: 3rem;
+}
+.alert-dismissible .btn-close {
+ position: absolute;
+ top: 0;
+ right: 0;
+ z-index: 2;
+ padding: 1.25rem 1rem;
+}
+
+.alert-primary {
+ --bs-alert-color: var(--bs-primary-text-emphasis);
+ --bs-alert-bg: var(--bs-primary-bg-subtle);
+ --bs-alert-border-color: var(--bs-primary-border-subtle);
+ --bs-alert-link-color: var(--bs-primary-text-emphasis);
+}
+
+.alert-secondary {
+ --bs-alert-color: var(--bs-secondary-text-emphasis);
+ --bs-alert-bg: var(--bs-secondary-bg-subtle);
+ --bs-alert-border-color: var(--bs-secondary-border-subtle);
+ --bs-alert-link-color: var(--bs-secondary-text-emphasis);
+}
+
+.alert-success {
+ --bs-alert-color: var(--bs-success-text-emphasis);
+ --bs-alert-bg: var(--bs-success-bg-subtle);
+ --bs-alert-border-color: var(--bs-success-border-subtle);
+ --bs-alert-link-color: var(--bs-success-text-emphasis);
+}
+
+.alert-info {
+ --bs-alert-color: var(--bs-info-text-emphasis);
+ --bs-alert-bg: var(--bs-info-bg-subtle);
+ --bs-alert-border-color: var(--bs-info-border-subtle);
+ --bs-alert-link-color: var(--bs-info-text-emphasis);
+}
+
+.alert-warning {
+ --bs-alert-color: var(--bs-warning-text-emphasis);
+ --bs-alert-bg: var(--bs-warning-bg-subtle);
+ --bs-alert-border-color: var(--bs-warning-border-subtle);
+ --bs-alert-link-color: var(--bs-warning-text-emphasis);
+}
+
+.alert-danger {
+ --bs-alert-color: var(--bs-danger-text-emphasis);
+ --bs-alert-bg: var(--bs-danger-bg-subtle);
+ --bs-alert-border-color: var(--bs-danger-border-subtle);
+ --bs-alert-link-color: var(--bs-danger-text-emphasis);
+}
+
+.alert-light {
+ --bs-alert-color: var(--bs-light-text-emphasis);
+ --bs-alert-bg: var(--bs-light-bg-subtle);
+ --bs-alert-border-color: var(--bs-light-border-subtle);
+ --bs-alert-link-color: var(--bs-light-text-emphasis);
+}
+
+.alert-dark {
+ --bs-alert-color: var(--bs-dark-text-emphasis);
+ --bs-alert-bg: var(--bs-dark-bg-subtle);
+ --bs-alert-border-color: var(--bs-dark-border-subtle);
+ --bs-alert-link-color: var(--bs-dark-text-emphasis);
+}
+
+.btn-close {
+ --bs-btn-close-color: #000;
+ --bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
+ --bs-btn-close-opacity: 0.5;
+ --bs-btn-close-hover-opacity: 0.75;
+ --bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
+ --bs-btn-close-focus-opacity: 1;
+ --bs-btn-close-disabled-opacity: 0.25;
+ --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
+ box-sizing: content-box;
+ width: 1em;
+ height: 1em;
+ padding: 0.25em 0.25em;
+ color: var(--bs-btn-close-color);
+ background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
+ border: 0;
+ border-radius: 6px;
+ opacity: var(--bs-btn-close-opacity);
+}
+.btn-close:hover {
+ color: var(--bs-btn-close-color);
+ text-decoration: none;
+ opacity: var(--bs-btn-close-hover-opacity);
+}
+.btn-close:focus {
+ outline: 0;
+ box-shadow: var(--bs-btn-close-focus-shadow);
+ opacity: var(--bs-btn-close-focus-opacity);
+}
+.btn-close:disabled, .btn-close.disabled {
+ pointer-events: none;
+ user-select: none;
+ opacity: var(--bs-btn-close-disabled-opacity);
+}
+
+.btn-close-white {
+ filter: var(--bs-btn-close-white-filter);
+}
+
+[data-bs-theme=dark] .btn-close {
+ filter: var(--bs-btn-close-white-filter);
+}
+
.clearfix::after {
display: block;
clear: both;
@@ -9209,9 +9348,9 @@ textarea.form-control-lg {
}
}
.bold-link {
- font-family: "Montserrat", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
- font-weight: 700;
- text-transform: uppercase;
+ font-family: "Oswald", system-ui, -apple-system, "Segoe UI", Oswald, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
+ font-weight: 500;
+ text-transform: none;
}
@media (max-width: 767.98px) {
diff --git a/frontend/footer.php b/frontend/footer.php
index ee3dd56..7b2ef35 100644
--- a/frontend/footer.php
+++ b/frontend/footer.php
@@ -1,5 +1,5 @@
-
-
+
+