55 Commits

Author SHA1 Message Date
c9703303d5 fix(deps): update react monorepo 2024-04-17 00:58:35 +00:00
Lee
db6ecf5c6a Merge pull request 'fix(deps): update dependency use-lanyard to v1.5.2' () from renovate/use-lanyard-1.x-lockfile into master
Reviewed-on: 
2024-01-16 23:23:35 +00:00
Lee
9281f02688 Merge pull request 'fix(deps): update font awesome to v6.5.1' () from renovate/font-awesome into master
Reviewed-on: 
2024-01-16 23:21:01 +00:00
85324c1398 fix(deps): update font awesome to v6.5.1 2024-01-16 23:18:12 +00:00
c8ad2055e6 fix(deps): update dependency use-lanyard to v1.5.2 2024-01-16 23:17:59 +00:00
Lee
ec7a02ab7e Merge pull request 'chore(deps): update tj-actions/branch-names action to v8' () from renovate/tj-actions-branch-names-8.x into master
Reviewed-on: 
2024-01-16 23:08:15 +00:00
Lee
c07795b18d Merge pull request 'fix(deps): update dependency sharp to ^0.33.0' () from renovate/sharp-0.x into master
Reviewed-on: 
2024-01-16 23:04:18 +00:00
d4d8de0dde chore(deps): update tj-actions/branch-names action to v8 2024-01-16 23:00:13 +00:00
a6a406a9c7 fix(deps): update dependency sharp to ^0.33.0 2024-01-16 22:59:37 +00:00
Lee
7e0b8b0000 Merge pull request 'fix(deps): update dependency tailwindcss to v3.4.1' () from renovate/tailwindcss-3.x-lockfile into master
Reviewed-on: 
2024-01-16 22:45:46 +00:00
cd1c5f2074 fix(deps): update dependency tailwindcss to v3.4.1 2024-01-05 21:03:05 +00:00
Lee
27e1347da8 Merge pull request 'fix(deps): update nextjs monorepo to v13.5.6' () from renovate/nextjs-monorepo into master
Reviewed-on: 
2023-10-20 05:08:36 +00:00
d3f43bed90 fix(deps): update nextjs monorepo to v13.5.6 2023-10-20 05:05:56 +00:00
Lee
1075d6a0d4 Merge pull request 'fix(deps): update dependency @types/node to v20.8.7' () from renovate/node-20.x-lockfile into master
Reviewed-on: 
2023-10-20 05:05:08 +00:00
Lee
7eb08021d0 Merge pull request 'fix(deps): update react monorepo' () from renovate/react-monorepo into master
Reviewed-on: 
2023-10-20 05:05:01 +00:00
189e98c951 fix(deps): update react monorepo 2023-10-19 18:06:18 +00:00
0872ff1158 fix(deps): update dependency @types/node to v20.8.7 2023-10-18 10:05:08 +00:00
Lee
2a3d8f9fb9 Merge pull request 'chore(deps): update docker/setup-buildx-action action to v3' () from renovate/docker-setup-buildx-action-3.x into master
Reviewed-on: 
2023-10-16 09:12:47 +00:00
5889c68f48 chore(deps): update docker/setup-buildx-action action to v3 2023-10-15 03:02:57 +00:00
Lee
65acccf525 Merge pull request 'chore(deps): update docker/login-action action to v3' () from renovate/docker-login-action-3.x into master
Reviewed-on: 
2023-10-15 02:20:51 +00:00
Lee
71355f3bce Merge pull request 'chore(deps): update docker/build-push-action action to v5' () from renovate/docker-build-push-action-5.x into master
Reviewed-on: 
2023-10-15 02:20:42 +00:00
ddb6fef194 chore(deps): update docker/login-action action to v3 2023-10-15 02:12:43 +00:00
1d65569ca6 chore(deps): update docker/build-push-action action to v5 2023-10-15 02:12:42 +00:00
Lee
176e6a7c6b Merge pull request 'chore(deps): update actions/checkout action to v4' () from renovate/actions-checkout-4.x into master
Reviewed-on: 
2023-10-15 01:56:49 +00:00
Lee
c5427e6b22 Merge pull request 'chore(deps): update dependency ubuntu to v22' () from renovate/ubuntu-22.x into master
Reviewed-on: 
2023-10-15 01:56:24 +00:00
9c104fddb7 chore(deps): update dependency ubuntu to v22 2023-10-15 01:55:58 +00:00
2064574471 chore(deps): update actions/checkout action to v4 2023-10-15 01:55:57 +00:00
Lee
58773a6771 Merge pull request 'Configure Renovate' () from renovate/configure into master
Reviewed-on: 
2023-10-15 01:50:58 +00:00
859a59cc6f chore(deps): add renovate.json 2023-10-15 01:48:38 +00:00
0258556030 remove not needed command 2023-10-15 02:02:03 +01:00
556f7b4b4d remove cache clear 2023-10-15 02:00:26 +01:00
83616667bb pnpm is weird 2023-10-15 01:48:37 +01:00
e10d108ca8 im a little silly - update image 2023-10-15 01:47:19 +01:00
450775fe79 update image and usee pnpm 2023-10-15 01:46:09 +01:00
8befe6563a bump version 2023-10-14 17:56:48 +01:00
5ae5746739 update depends 2023-10-14 17:53:47 +01:00
a68d10e0f8 update source link to an icon 2023-10-14 17:45:04 +01:00
8967658ef1 update default favicon 2023-10-14 17:30:40 +01:00
f9b5a471f4 add drop shadow to the buttons 2023-08-02 02:10:40 +01:00
9e9a4885dc add slight transparency to buttons when no info background is visible 2023-07-27 03:28:03 +01:00
ec3ecd8c84 add favicon to auto download 2023-07-27 03:19:54 +01:00
aa89245db3 add example favicon 2023-07-27 03:17:38 +01:00
6ad1b6b85d fix config loading 2023-07-13 10:39:37 +01:00
5336a89dcc add support to readme 2023-07-13 10:20:36 +01:00
254e6740ef update lock file 2023-07-13 10:18:38 +01:00
17af5d61f2 update comment in config 2023-07-13 10:17:31 +01:00
2540bd4004 bump version 2023-07-13 10:13:05 +01:00
e54bd6d0e0 update docker compose 2023-07-13 10:12:48 +01:00
b9093d75fe migrate to yml config (so I can comment the config) 2023-07-13 10:12:07 +01:00
c0e1bec350 add ability to remove the info card color 2023-07-13 09:38:50 +01:00
ae46c845d3 made offline not show a status indicator 2023-07-13 05:48:02 +01:00
afb1e66271 change status colors to match discord 2023-07-13 05:41:36 +01:00
Lee
4e60aea93a Merge pull request 'Update v0.1.9' () from development into master
Reviewed-on: 
2023-07-13 04:32:57 +00:00
Lee
82e8d97858 Merge pull request 'Add Discord status' () from development into master
Reviewed-on: 
2023-07-12 17:25:59 +00:00
Lee
8f91eba0f7 Merge pull request 'Add auto downloading of files' () from development into master
Reviewed-on: 
2023-07-12 13:45:19 +00:00
21 changed files with 13979 additions and 765 deletions

@ -14,14 +14,14 @@ on:
jobs: jobs:
docker: docker:
runs-on: ubuntu-20.04 runs-on: ubuntu-22.04
steps: steps:
- name: Get branch name - name: Get branch name
id: branch-name id: branch-name
uses: tj-actions/branch-names@v7 uses: tj-actions/branch-names@v8
- name: Checkout - name: Checkout
uses: actions/checkout@v3 uses: actions/checkout@v4
- name: Restore Docker Cache - name: Restore Docker Cache
uses: actions/cache@v3 uses: actions/cache@v3
@ -39,10 +39,10 @@ jobs:
echo "Done" echo "Done"
- name: Set up Docker Buildx - name: Set up Docker Buildx
uses: docker/setup-buildx-action@v2 uses: docker/setup-buildx-action@v3
- name: Login to Repo - name: Login to Repo
uses: docker/login-action@v2 uses: docker/login-action@v3
with: with:
username: ${{ secrets.REPO_USERNAME }} username: ${{ secrets.REPO_USERNAME }}
password: ${{ secrets.REPO_TOKEN }} password: ${{ secrets.REPO_TOKEN }}
@ -55,7 +55,7 @@ jobs:
key: ${{ runner.os }}-buildx key: ${{ runner.os }}-buildx
- name: Build and Push (Latest) - name: Build and Push (Latest)
uses: docker/build-push-action@v4 uses: docker/build-push-action@v5
if: steps.branch-name.outputs.current_branch == 'master' if: steps.branch-name.outputs.current_branch == 'master'
with: with:
push: true push: true
@ -65,7 +65,7 @@ jobs:
cache-to: type=local,dest=/tmp/.buildx-cache cache-to: type=local,dest=/tmp/.buildx-cache
- name: Build and Push (Other Branches) - name: Build and Push (Other Branches)
uses: docker/build-push-action@v4 uses: docker/build-push-action@v5
if: steps.branch-name.outputs.current_branch != 'master' if: steps.branch-name.outputs.current_branch != 'master'
with: with:
push: true push: true

2
.gitignore vendored

@ -145,4 +145,4 @@ dist
.pnp.* .pnp.*
# Config # Config
config.json config.yml

@ -1,15 +1,12 @@
FROM node:lts-slim FROM fascinated/docker-images:node-pnpm-latest
ENV NODE_ENV=production ENV NODE_ENV=production
WORKDIR /usr/src/app WORKDIR /usr/src/app
RUN apt update
RUN DEBIAN_FRONTEND=noninteractive apt install wget -y
# Copy package.json and package-lock.json separately to fully utilize Docker layer caching # Copy package.json and package-lock.json separately to fully utilize Docker layer caching
COPY package.json ./ COPY package.json ./
COPY package-lock.json ./ COPY pnpm-lock.yaml ./
RUN npm ci --production --silent && npm cache clean --force RUN pnpm install --production --silent
# Opt out of Next.js telemetry # Opt out of Next.js telemetry
RUN npx next telemetry disable RUN npx next telemetry disable
@ -17,9 +14,6 @@ RUN npx next telemetry disable
# Copy the rest of the files # Copy the rest of the files
COPY . . COPY . .
# Remove development dependencies
RUN npm prune --production
# Environment Variables # Environment Variables
ENV NODE_ENV=production ENV NODE_ENV=production

104
README.md

@ -29,6 +29,10 @@ Simple Links is a lightweight alternative to Linktree and others.
3. Run `docker compose up -d` 3. Run `docker compose up -d`
4. The application is now updated 4. The application is now updated
## Support
If you need any help, you can contact me on my Discord server [here](https://discord.gg/yjj2U3ctEG) or open a issue!
## What if I don't want buttons or icon only links? ## What if I don't want buttons or icon only links?
Just simply remove it from the config and it will not show anymore Just simply remove it from the config and it will not show anymore
@ -36,103 +40,3 @@ Just simply remove it from the config and it will not show anymore
## Showing Discord status ## Showing Discord status
You must be in the [lanyard server](https://discord.gg/UrXF2cfJ7F) for it to work. You must be in the [lanyard server](https://discord.gg/UrXF2cfJ7F) for it to work.
## Help!!! I'm getting an error when launching it
### Config Issue
If your error looks similar to this you are most likely missing part of the config, as some new things may have been added.
```bash
simple-links | Type error: Property 'theme' does not exist on type '{ name: string; description: string; avatar: string; background: { showBackground: boolean; blur: boolean; darken: { enabled: boolean; amount: number; }; backgroundImage: string; }; infoCard: { transparency: number; }; metadata: { ...; }; options: { ...; }; analytics: { ...; }; links: { ...; }[]; }'.
```
## Config Example
```json
{
"name": "Your Name", // The name you want to display on the site
"description": "A description about yourself", // The description you want to use
"avatar": "https://cdn.fascinated.cc/KWprz2.jpg", // The avatar that is shown at the top of the site
// or use a local image
"avatar": "/avatar.webp",
// If you want to use a custom (not dark) background
"background": {
"showBackground": true, // Whether it is enabled or not
"blur": true, // Should we blur the background?
"darken": {
// Should we darken the background?
"enabled": true,
"amount": 0.7
},
"backgroundImage": "https://cdn.fascinated.cc/8twdW8.jpg", // The image to use in the background
// or use a local image
"backgroundImage": "/background.jpg"
},
"theme": "dark", // "dark" or "light" themes
// The card that displays your info and buttons
"infoCard": {
"transparency": 0.85 // How transparent should it be?
},
// Website options
"options": {
"showSourceLink": true // Should we show the "Source Code" link
},
// Show your discord status on the site (You MUST be in the Lanyard server)
// https://discord.gg/UrXF2cfJ7F
"discord": {
"id": "474221560031608833" // Your discord ID
},
// Search engine and embedding metadata (discord, twitter, etc embeds)
"metadata": {
"title": "Your Name", // The title of the embed
"description": "website description", // The description of the embed
"themeColor": "#6441a5", // The color of the embed
"authors": [
// SEO metadata
{
"name": "Fascinated",
"url": "https://fascinated.cc"
}
]
},
// The buttons to show links for
"links": [
{
"title": "Git", // The shown title of the button
"url": "https://git.fascinated.cc", // Where the button goes to when clicked
"icon": "fab fa-github", // The icon of the button (can be removed to show no icon)
// The color of the icon (tailwindcss colors)
"color": "bg-green-700"
},
{
"title": "Twitch",
"url": "https://twitch.tv/fascinated_",
"icon": "fab fa-twitch",
"color": "bg-[#6441a5]"
},
{
"title": "Documentation",
"url": "https://docs.fascinated.cc",
"color": "bg-neutral-700"
}
],
// Icon only links
"socialLinks": [
{
"icon": "fab fa-twitter", // The icon to use
"color": "#1DA1F2", // An optional color
"url": "https://twitter.com" // The link to go to
},
{
"icon": "fab fa-reddit",
"color": "#FF4300",
"url": "https://www.reddit.com/user/ImFascinatedMC"
},
{
"icon": "fab fa-git-alt",
"url": "https://git.fascinated.cc"
}
]
}
```

@ -1,73 +0,0 @@
{
"configVersion": "0.1.4",
"name": "Your Name",
"description": "A description about yourself",
"avatar": "/avatar.webp",
"background": {
"showBackground": true,
"blur": true,
"darken": {
"enabled": true,
"amount": 0.7
},
"backgroundImage": "/background.jpg"
},
"theme": "dark",
"infoCard": {
"transparency": 0.85
},
"discord": {
"id": "set me"
},
"options": {
"showSourceLink": true
},
"metadata": {
"title": "Your Name",
"description": "website description",
"themeColor": "#6441a5",
"authors": [
{
"name": "Fascinated",
"url": "https://fascinated.cc"
}
]
},
"links": [
{
"title": "Git",
"url": "https://git.fascinated.cc",
"icon": "fab fa-git-alt",
"color": {
"normal": "bg-green-700"
}
},
{
"title": "Twitch",
"url": "https://twitch.tv/fascinated_",
"icon": "fab fa-twitch",
"color": "bg-[#6441a5]"
},
{
"title": "Documentation",
"url": "https://docs.fascinated.cc",
"color": "bg-neutral-700"
}
],
"socialLinks": [
{
"icon": "fab fa-twitter",
"color": "#1DA1F2",
"url": "https://twitter.com"
},
{
"icon": "fab fa-reddit",
"color": "#FF4300",
"url": "https://www.reddit.com/user/ImFascinatedMC"
},
{
"icon": "fab fa-git-alt",
"url": "https://git.fascinated.cc"
}
]
}

75
config-example.yml Normal file

@ -0,0 +1,75 @@
# The version of the config (DO NOT CHANGE)
configVersion: "0.2.0"
# Your name to show in the info card
name: "Your Name"
# The description shown in the info card
description: "A description about yourself"
# The avatar to show
avatar: "/avatar.webp"
# Background configuration
background:
# Should we use a custom background?
showBackground: true
# Should we blur that background?
blur: true
# Should we darken that background? and by how much
darken:
enabled: true
amount: 0.7
# The image to show when the background is enabled
backgroundImage: "/background.jpg"
# The theme to use (light or dark)
theme: "dark"
# The info card settings
infoCard:
# How transparent should it be?
transparency: 0.85
# Discord settings (Status indicator)
discord:
# Your discord id
id: "set me"
# Global settings for the site
options:
# Should we show the "Website Source" button?
showSourceLink: true
# Metadata for the website (controls embed settings and SEO info)
# see: https://nextjs.org/docs/app/api-reference/file-conventions/metadata/opengraph-image
metadata:
title: "Your Name"
description: "website description"
themeColor: "#6441a5"
authors:
- name: "Fascinated"
url: "https://fascinated.cc"
# The links to show (buttons)
links:
# The title of the button
- title: "Git"
# Where the button goes to
url: "https://git.fascinated.cc"
# The icon of the button
# see: https://fontawesome.com/search
icon: "fab fa-git-alt"
# The color of the button (TailwindCSS colors or hex color, see below for hex)
color: "bg-green-700"
- title: "Twitch"
url: "https://twitch.tv/fascinated_"
icon: "fab fa-twitch"
color: "bg-[#6441a5]"
- title: "Documentation"
url: "https://docs.fascinated.cc"
color: "bg-neutral-700"
# The links to show (icons only, below buttons)
socialLinks:
# The icon to use
# see: https://fontawesome.com/search
- icon: "fab fa-twitter"
# The color of the icon
color: "#1DA1F2"
# Where the icon goes to when clicked
url: "https://twitter.com"
- icon: "fab fa-reddit"
color: "#FF4300"
url: "https://www.reddit.com/user/ImFascinatedMC"
- icon: "fab fa-git-alt"
url: "https://git.fascinated.cc"

@ -13,5 +13,5 @@ services:
ports: ports:
- 3000:3000 - 3000:3000
volumes: volumes:
- ./config.json:/usr/src/app/config.json:ro # The application config (Must be created before starting the service) - ./config.yml:/usr/src/app/config.yml:ro # The application config (Must be created before starting the service)
- ./public:/usr/src/app/public:rw # Used for public facing images (eg: avatar and background) - ./public:/usr/src/app/public:rw # Used for public facing images (eg: avatar and background)

@ -1,3 +1,5 @@
const withYaml = require("next-plugin-yaml");
/** @type {import('next').NextConfig} */ /** @type {import('next').NextConfig} */
const nextConfig = { const nextConfig = {
images: { images: {
@ -12,4 +14,4 @@ const nextConfig = {
}, },
}; };
module.exports = nextConfig; module.exports = withYaml(nextConfig);

4385
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -1,32 +1,35 @@
{ {
"name": "simple-links", "name": "simple-links",
"version": "0.1.9", "version": "0.2.1",
"private": false, "private": false,
"scripts": { "scripts": {
"dev": "next dev", "dev": "next dev",
"build": "next build", "build": "next build",
"start": "next build && next start", "start": "next build && next start",
"lint": "next lint" "lint": "next lint",
"update-depends": "npm-check -u"
}, },
"dependencies": { "dependencies": {
"@fortawesome/fontawesome-svg-core": "^6.4.0", "@fortawesome/fontawesome-svg-core": "^6.4.2",
"@fortawesome/free-brands-svg-icons": "^6.4.0", "@fortawesome/free-brands-svg-icons": "^6.4.2",
"@fortawesome/free-regular-svg-icons": "^6.4.0", "@fortawesome/free-regular-svg-icons": "^6.4.2",
"@fortawesome/free-solid-svg-icons": "^6.4.0", "@fortawesome/free-solid-svg-icons": "^6.4.2",
"@fortawesome/react-fontawesome": "^0.2.0", "@fortawesome/react-fontawesome": "^0.2.0",
"@types/node": "20.4.1", "@types/node": "^20.8.6",
"@types/react": "18.2.14", "@types/react": "^18.2.28",
"@types/react-dom": "18.2.6", "@types/react-dom": "^18.2.13",
"autoprefixer": "10.4.14", "autoprefixer": "^10.4.16",
"eslint": "8.44.0", "eslint": "^8.51.0",
"eslint-config-next": "13.4.9", "eslint-config-next": "^13.5.4",
"next": "13.4.9", "next": "^13.5.4",
"postcss": "8.4.25", "next-plugin-yaml": "^1.0.1",
"npm-check": "^6.0.1",
"postcss": "^8.4.31",
"react": "18.2.0", "react": "18.2.0",
"react-dom": "18.2.0", "react-dom": "18.2.0",
"sharp": "^0.32.2", "sharp": "^0.33.0",
"tailwindcss": "3.3.2", "tailwindcss": "^3.3.3",
"typescript": "5.1.6", "typescript": "^5.2.2",
"use-lanyard": "^1.4.4" "use-lanyard": "^1.4.4"
} }
} }

5265
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width: 128px  |  Height: 128px  |  Size: 66 KiB

6
renovate.json Normal file

@ -0,0 +1,6 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"local>Fascinated/renovate-config"
]
}

@ -1,10 +1,11 @@
"use client"; "use client";
import { Config } from "@/src/types/config";
import Image from "next/image"; import Image from "next/image";
import { Fragment } from "react"; import { Fragment } from "react";
import { useLanyardWS } from "use-lanyard"; import { useLanyardWS } from "use-lanyard";
import Config from "../../../config.json"; const Config: Config = require("../../../config.yml") as any;
function LanyardWrapper(props: { children: any }) { function LanyardWrapper(props: { children: any }) {
return <Fragment>{props.children}</Fragment>; return <Fragment>{props.children}</Fragment>;
@ -39,10 +40,10 @@ function LanyardComponent(props: { discord: any }) {
const hasLanyard = lanyardData !== undefined; const hasLanyard = lanyardData !== undefined;
const statusColor = { const statusColor = {
online: "bg-green-400", online: "bg-[#43B581]",
offline: "bg-slate-400", offline: "bg-transparent",
dnd: "bg-red-500", dnd: "bg-[#F04747]",
idle: "bg-orange-400", idle: "bg-[#FAA61A]",
}; };
const currentStatus = const currentStatus =
lanyardData !== undefined lanyardData !== undefined

@ -1,9 +1,10 @@
import { Config } from "@/src/types/config";
import { config } from "@fortawesome/fontawesome-svg-core"; import { config } from "@fortawesome/fontawesome-svg-core";
import "@fortawesome/fontawesome-svg-core/styles.css"; import "@fortawesome/fontawesome-svg-core/styles.css";
import { Inter } from "next/font/google"; import { Inter } from "next/font/google";
import "./globals.css"; import "./globals.css";
import Config from "../../config.json"; const Config: Config = require("../../config.yml") as any;
config.autoAddCss = false; config.autoAddCss = false;
const inter = Inter({ subsets: ["latin"] }); const inter = Inter({ subsets: ["latin"] });

@ -1,12 +1,15 @@
import { Config } from "@/src/types/config";
import { library } from "@fortawesome/fontawesome-svg-core"; import { library } from "@fortawesome/fontawesome-svg-core";
import { fab } from "@fortawesome/free-brands-svg-icons"; import { fab } from "@fortawesome/free-brands-svg-icons";
import { far } from "@fortawesome/free-regular-svg-icons"; import { far } from "@fortawesome/free-regular-svg-icons";
import { fas } from "@fortawesome/free-solid-svg-icons"; import { fas } from "@fortawesome/free-solid-svg-icons";
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome";
import Image from "next/image"; import Image from "next/image";
import Config from "../../config.json"; import Link from "next/link";
import Avatar from "./components/Avatar"; import Avatar from "./components/Avatar";
const Config: Config = require("../../config.yml") as any;
library.add(fab, far, fas); // Loading in the icons from FontAwesome library.add(fab, far, fas); // Loading in the icons from FontAwesome
export default function Home() { export default function Home() {
@ -69,11 +72,17 @@ export default function Home() {
}} }}
/> />
)} )}
{/* Info Card */}
<div <div
className={`${selectedTheme.infoCardColor} rounded-lg text-center shadow-lg`} className={`${
infoCard.transparency != 0
? `${selectedTheme.infoCardColor} shadow-lg rounded-lg`
: ``
} text-center`}
style={{ style={{
zIndex: 1, zIndex: 1,
opacity: infoCard.transparency, opacity: infoCard.transparency != 0 ? infoCard.transparency : 1,
}} }}
> >
<div className="m-5"> <div className="m-5">
@ -106,7 +115,13 @@ export default function Home() {
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className={`flex flex-row items-center justify-center mt-4 px-4 w-60 py-2 rounded className={`flex flex-row items-center justify-center mt-4 px-4 w-60 py-2 rounded
${selectedTheme.buttonTextColor} ${color} hover:brightness-75 transition gap-2`} ${selectedTheme.buttonTextColor} ${color} hover:brightness-75 transition gap-2 shadow-lg`}
style={{
opacity:
infoCard.transparency != 0
? infoCard.transparency
: 0.8,
}}
> >
{link.icon && <FontAwesomeIcon icon={icons} />} {link.icon && <FontAwesomeIcon icon={icons} />}
<p>{link.title}</p> <p>{link.title}</p>
@ -127,7 +142,13 @@ export default function Home() {
href={link.url} href={link.url}
target="_blank" target="_blank"
rel="noopener noreferrer" rel="noopener noreferrer"
className="hover:brightness-75 transition" className="hover:brightness-75 transition shadow-lg"
style={{
opacity:
infoCard.transparency != 0
? infoCard.transparency
: 0.8,
}}
> >
{link.icon && ( {link.icon && (
<FontAwesomeIcon <FontAwesomeIcon
@ -148,13 +169,18 @@ export default function Home() {
className={`absolute bottom-0 right-0 mb-5 mr-5 ${selectedTheme.footerTextColor}`} className={`absolute bottom-0 right-0 mb-5 mr-5 ${selectedTheme.footerTextColor}`}
> >
{options.showSourceLink && ( {options.showSourceLink && (
<a <Link
href="https://git.fascinated.cc/Fascinated/simple-links" href="https://git.fascinated.cc/Fascinated/simple-links"
target="_blank" target="_blank"
className="mt-5" className="mt-5"
> >
Website Source <Image
</a> src="https://cdn.fascinated.cc/assets/simple-links/icon.png"
alt="Simple Links Icon"
width={32}
height={32}
/>
</Link>
)} )}
</div> </div>
</main> </main>

55
src/types/config.d.ts vendored Normal file

@ -0,0 +1,55 @@
export interface Config {
configVersion: string;
name: string;
description: string;
avatar: string;
background: {
showBackground: boolean;
blur: boolean;
darken: {
enabled: boolean;
amount: number;
};
backgroundImage: string;
};
theme: string;
infoCard: {
transparency: number;
};
discord: {
id: string;
};
options: {
showSourceLink: boolean;
};
metadata: {
title: string;
description: string;
themeColor: string;
authors: {
name: string;
url: string;
}[];
};
links: {
title: string;
url: string;
icon: string;
color:
| {
normal: string;
}
| string;
}[];
socialLinks: {
icon: string;
color: string;
url: string;
}[];
}
// Parse the YAML content and convert it to the defined type
declare module "*.yml" {
const content: any;
export default content;
}

@ -1,7 +1,7 @@
workDir=/usr/src/app workDir=/usr/src/app
baseUrl=https://git.fascinated.cc/Fascinated/simple-links/raw/branch/master/public/ baseUrl=https://git.fascinated.cc/Fascinated/simple-links/raw/branch/master/public/
toDownload=("avatar.webp" "background.jpg") toDownload=("avatar.webp" "background.jpg" "favicon.ico")
echo "Checking if files need to be downloaded" echo "Checking if files need to be downloaded"
if [ -z "$(ls -A $workDir/public)" ]; then if [ -z "$(ls -A $workDir/public)" ]; then

@ -4,7 +4,7 @@ module.exports = {
"./src/pages/**/*.{js,ts,jsx,tsx,mdx}", "./src/pages/**/*.{js,ts,jsx,tsx,mdx}",
"./src/components/**/*.{js,ts,jsx,tsx,mdx}", "./src/components/**/*.{js,ts,jsx,tsx,mdx}",
"./src/app/**/*.{js,ts,jsx,tsx,mdx}", "./src/app/**/*.{js,ts,jsx,tsx,mdx}",
"./config.json", "./config.yml",
], ],
theme: {}, theme: {},
plugins: [], plugins: [],

@ -21,8 +21,16 @@
], ],
"paths": { "paths": {
"@/*": ["./*"] "@/*": ["./*"]
}
}, },
"include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], "typeRoots": ["./src/types", "./node_modules/@types"],
"types": ["node"]
},
"include": [
"next-env.d.ts",
"src/types/**/*.d.ts",
"**/*.ts",
"**/*.tsx",
".next/types/**/*.ts"
],
"exclude": ["node_modules"] "exclude": ["node_modules"]
} }

4638
yarn.lock Normal file

File diff suppressed because it is too large Load Diff