Initial commit
This commit is contained in:
commit
fc2321db6e
18 changed files with 7550 additions and 0 deletions
21
.gitignore
vendored
Normal file
21
.gitignore
vendored
Normal file
|
@ -0,0 +1,21 @@
|
|||
# build output
|
||||
dist/
|
||||
|
||||
# generated types
|
||||
.astro/
|
||||
|
||||
# dependencies
|
||||
node_modules/
|
||||
|
||||
# logs
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# environment variables
|
||||
.env
|
||||
.env.production
|
||||
|
||||
# macOS-specific files
|
||||
.DS_Store
|
7
.prettierrc
Normal file
7
.prettierrc
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
"printWidth": 80,
|
||||
"trailingComma": "none",
|
||||
"tabWidth": 2,
|
||||
"singleQuote": false,
|
||||
"plugins": ["prettier-plugin-astro"]
|
||||
}
|
8
astro.config.mjs
Normal file
8
astro.config.mjs
Normal file
|
@ -0,0 +1,8 @@
|
|||
import { defineConfig } from 'astro/config';
|
||||
|
||||
import mdx from "@astrojs/mdx";
|
||||
|
||||
// https://astro.build/config
|
||||
export default defineConfig({
|
||||
integrations: [mdx()]
|
||||
});
|
7135
package-lock.json
generated
Normal file
7135
package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load diff
22
package.json
Normal file
22
package.json
Normal file
|
@ -0,0 +1,22 @@
|
|||
{
|
||||
"name": "goatcorp-website",
|
||||
"type": "module",
|
||||
"version": "0.0.1",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"start": "astro dev",
|
||||
"build": "astro check && astro build",
|
||||
"preview": "astro preview",
|
||||
"astro": "astro"
|
||||
},
|
||||
"dependencies": {
|
||||
"@astrojs/check": "^0.5.9",
|
||||
"@astrojs/mdx": "^2.2.0",
|
||||
"astro": "^4.5.6",
|
||||
"typescript": "^5.4.2"
|
||||
},
|
||||
"devDependencies": {
|
||||
"prettier": "^3.2.5",
|
||||
"prettier-plugin-astro": "^0.13.0"
|
||||
}
|
||||
}
|
BIN
public/favicon.ico
Normal file
BIN
public/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 15 KiB |
BIN
src/assets/header.png
Normal file
BIN
src/assets/header.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 107 KiB |
BIN
src/assets/screenshot.png
Normal file
BIN
src/assets/screenshot.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 171 KiB |
61
src/components/Card.astro
Normal file
61
src/components/Card.astro
Normal file
|
@ -0,0 +1,61 @@
|
|||
---
|
||||
interface Props {
|
||||
title: string;
|
||||
body: string;
|
||||
href: string;
|
||||
}
|
||||
|
||||
const { href, title, body } = Astro.props;
|
||||
---
|
||||
|
||||
<li class="link-card">
|
||||
<a href={href}>
|
||||
<h2>
|
||||
{title}
|
||||
<span>→</span>
|
||||
</h2>
|
||||
<p>
|
||||
{body}
|
||||
</p>
|
||||
</a>
|
||||
</li>
|
||||
<style>
|
||||
.link-card {
|
||||
list-style: none;
|
||||
display: flex;
|
||||
padding: 1px;
|
||||
background-color: #23262d;
|
||||
background-image: none;
|
||||
background-size: 400%;
|
||||
border-radius: 7px;
|
||||
background-position: 100%;
|
||||
transition: background-position 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.link-card > a {
|
||||
width: 100%;
|
||||
text-decoration: none;
|
||||
line-height: 1.4;
|
||||
padding: calc(1.5rem - 1px);
|
||||
border-radius: 8px;
|
||||
color: white;
|
||||
background-color: #23262d;
|
||||
opacity: 0.8;
|
||||
}
|
||||
h2 {
|
||||
margin: 0;
|
||||
font-size: 1.25rem;
|
||||
transition: color 0.6s cubic-bezier(0.22, 1, 0.36, 1);
|
||||
}
|
||||
p {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.link-card:is(:hover, :focus-within) {
|
||||
background-position: 0;
|
||||
background-image: var(--accent-gradient);
|
||||
}
|
||||
.link-card:is(:hover, :focus-within) h2 {
|
||||
color: rgb(var(--accent-light));
|
||||
}
|
||||
</style>
|
37
src/components/Header.astro
Normal file
37
src/components/Header.astro
Normal file
|
@ -0,0 +1,37 @@
|
|||
---
|
||||
import { Image } from "astro:assets";
|
||||
import header from "../assets/header.png";
|
||||
---
|
||||
|
||||
<header>
|
||||
<Image src={header} alt="XIVLauncher logo" class="headerLogo" />
|
||||
<a href="/">Home</a>
|
||||
<a href="/faq">FAQ</a>
|
||||
<a href="https://discord.gg/3NMcUV5">Discord</a>
|
||||
</header>
|
||||
|
||||
<style>
|
||||
header,
|
||||
.headerLogo {
|
||||
height: 3rem;
|
||||
}
|
||||
|
||||
header {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
gap: 2ch;
|
||||
align-items: center;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--fg);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.headerLogo {
|
||||
width: auto;
|
||||
}
|
||||
</style>
|
76
src/components/ScreenshotDownload.astro
Normal file
76
src/components/ScreenshotDownload.astro
Normal file
|
@ -0,0 +1,76 @@
|
|||
---
|
||||
import { Image } from "astro:assets";
|
||||
import screenshot from "../assets/screenshot.png";
|
||||
import Download from "../components/icons/Download.astro";
|
||||
import FAQ from "../components/icons/FAQ.astro";
|
||||
---
|
||||
|
||||
<div class="screenshotDownloadContainer">
|
||||
<h1>A custom launcher for FFXIV</h1>
|
||||
|
||||
<div class="screenshotDownloadContent">
|
||||
<a
|
||||
class="download"
|
||||
href="https://github.com/goatcorp/FFXIVQuickLauncher/releases/latest"
|
||||
>
|
||||
<Download />
|
||||
Download
|
||||
</a>
|
||||
<a class="faq" href="/faq"><FAQ /> FAQ and Help</a>
|
||||
</div>
|
||||
|
||||
<Image src={screenshot} alt="XIVLauncher screenshot" />
|
||||
</div>
|
||||
|
||||
<style>
|
||||
img {
|
||||
height: auto;
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
h1 {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.screenshotDownloadContainer {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.screenshotDownloadContent {
|
||||
text-align: center;
|
||||
margin-bottom: 1.5rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
|
||||
a {
|
||||
padding: 0.75rem;
|
||||
border-radius: 0.25rem;
|
||||
color: var(--fg);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.download > svg {
|
||||
vertical-align: bottom;
|
||||
}
|
||||
|
||||
.faq > svg {
|
||||
vertical-align: -0.1em;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.download {
|
||||
background-color: var(--xl);
|
||||
}
|
||||
|
||||
.faq {
|
||||
background-color: var(--card);
|
||||
}
|
||||
</style>
|
16
src/components/icons/Download.astro
Normal file
16
src/components/icons/Download.astro
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
const props = Astro.props;
|
||||
---
|
||||
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 24 24"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M2 12h2v5h16v-5h2v5c0 1.11-.89 2-2 2H4a2 2 0 0 1-2-2zm10 3l5.55-5.46l-1.42-1.41L13 11.25V2h-2v9.25L7.88 8.13L6.46 9.55z"
|
||||
></path>
|
||||
</svg>
|
16
src/components/icons/FAQ.astro
Normal file
16
src/components/icons/FAQ.astro
Normal file
|
@ -0,0 +1,16 @@
|
|||
---
|
||||
const props = Astro.props;
|
||||
---
|
||||
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
width="1em"
|
||||
height="1em"
|
||||
viewBox="0 0 24 24"
|
||||
{...props}
|
||||
>
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M18 22a2 2 0 0 0 2-2V4a2 2 0 0 0-2-2h-6v7L9.5 7.5L7 9V2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2z"
|
||||
></path>
|
||||
</svg>
|
1
src/env.d.ts
vendored
Normal file
1
src/env.d.ts
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
/// <reference types="astro/client" />
|
72
src/layouts/Layout.astro
Normal file
72
src/layouts/Layout.astro
Normal file
|
@ -0,0 +1,72 @@
|
|||
---
|
||||
import Header from "../components/Header.astro";
|
||||
|
||||
interface Props {
|
||||
title: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
const { title, description } = Astro.props;
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<title>{title}</title>
|
||||
<meta name="description" content={description} />
|
||||
<meta name="viewport" content="width=device-width" />
|
||||
<link rel="icon" type="image/icon" href="/favicon.ico" />
|
||||
<meta name="generator" content={Astro.generator} />
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<Header />
|
||||
<slot />
|
||||
</body>
|
||||
</html>
|
||||
|
||||
<style is:global>
|
||||
:root {
|
||||
--fg: #ececec;
|
||||
--fgalt: #8d8d8d;
|
||||
--bg: #303030;
|
||||
--card: #424242;
|
||||
--xl: #2196f3;
|
||||
--dalamud: #ff0000;
|
||||
}
|
||||
|
||||
@media (prefers-color-scheme: light) {
|
||||
:root {
|
||||
--fg: #303030;
|
||||
--bg: #ececec;
|
||||
--card: #f5f5f5;
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100vw;
|
||||
height: 100vh;
|
||||
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
|
||||
Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
|
||||
font-size: 1.2rem;
|
||||
background-color: var(--bg);
|
||||
color: var(--fg);
|
||||
}
|
||||
|
||||
body {
|
||||
max-width: min(100vw, 50rem);
|
||||
margin: 0 auto;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--xl);
|
||||
}
|
||||
|
||||
footer {
|
||||
color: var(--fgalt);
|
||||
}
|
||||
</style>
|
10
src/layouts/Markdown.astro
Normal file
10
src/layouts/Markdown.astro
Normal file
|
@ -0,0 +1,10 @@
|
|||
---
|
||||
import Layout from "./Layout.astro";
|
||||
const { frontmatter } = Astro.props;
|
||||
---
|
||||
|
||||
<Layout title={frontmatter.title} description={frontmatter.description}>
|
||||
<main>
|
||||
<slot />
|
||||
</main>
|
||||
</Layout>
|
65
src/pages/index.mdx
Normal file
65
src/pages/index.mdx
Normal file
|
@ -0,0 +1,65 @@
|
|||
---
|
||||
title: XIVLauncher
|
||||
description: A faster launcher for FFXIV with addons and enhancements
|
||||
layout: ../layouts/Markdown.astro
|
||||
---
|
||||
import ScreenshotDownload from "../components/ScreenshotDownload.astro";
|
||||
|
||||
<ScreenshotDownload />
|
||||
|
||||
## Why?
|
||||
|
||||
The original FFXIV launcher is slow and cannot save your password. This project aims to fix that and add some QoL features to the game, such as:
|
||||
|
||||
- Auto-login
|
||||
- Fast patching
|
||||
- Saving your account password & logging into multiple accounts
|
||||
- Game install repair
|
||||
- In-game plugin system
|
||||
|
||||
## How to install the launcher
|
||||
|
||||
[Download the latest "Setup.exe" from the releases](https://github.com/goatcorp/FFXIVQuickLauncher/releases/latest) page and run it. XIVLauncher will start and will be installed to your start menu.
|
||||
To uninstall, you can use the Windows Programs & Apps menu or right click XIVLauncher in your start menu.
|
||||
|
||||
**Attention!** If you receive errors during the installation or if the launcher doesn't work correctly, make sure to **check your antivirus** first and disable it for XIVLauncher. Many commercial antivirus programs detect XIVLauncher as a false positive. You can check for yourself on VirusTotal. If you need any help with this, please [check our FAQ](https://goatcorp.github.io/faq/xl_troubleshooting#q-how-do-i-whitelist-xivlauncher-and-dalamud-so-my-antivirus-leaves-them-alone) or join our Discord channel.
|
||||
|
||||
## On Steam Deck and Desktop Linux
|
||||
|
||||
XIVLauncher now has a native Linux version that works on Steam Deck and Desktop Linux - no more messing around with scripts and command lines, just a few easy steps to install the game and add it to Steam, with a Wine version especially tuned to FFXIV. [Click here to read a comprehensive guide.](/todo)
|
||||
|
||||
## How to install plugins
|
||||
|
||||
XIVLauncher supports the installation of plugins made by community developers in-game. Open the system menu in-game by pressing Escape, and then select "Dalamud Plugins" from there. You can also use the `/xlplugins` command in chat. If the command is not found, or the options don't show up, make sure that the in-game addon is enabled in the launcher settings.
|
||||
|
||||
## Need any help?
|
||||
|
||||
[Please check out our exhaustive FAQ](/faq), you may find what you need there. You can also [join our Discord server](https://discord.gg/3NMcUV5) and ask our incredibly forthcoming community.
|
||||
|
||||
## Is XIVLauncher safe to use?
|
||||
|
||||
We put a lot of effort into ensuring that XIVLauncher is safe to use for everyone. Please read through our [FAQ entry](/todo) on this matter if you want to know more.
|
||||
|
||||
## Plugin API
|
||||
|
||||
XIVLauncher lets you use many community-created plugins that improve your game. To make your own in-game plugins for XIVLauncher, check out the [API documentation](https://dalamud.dev/) and the [sample plugin](https://github.com/goatcorp/SamplePlugin). If you want to contribute to the plugin API itself, you can check it out [here](https://github.com/goatcorp/Dalamud).
|
||||
|
||||
## Is this cheating?
|
||||
|
||||
We don't think so - our official guideline for plugins on this launcher is this:
|
||||
|
||||
Make sure that your plugin does not directly interact with the game servers in a way that is...
|
||||
|
||||
1. *outside of specification*, as in allowing the player to do things or submit data to the server that would not be possible by normal means or by a normal player on PC or PS4.
|
||||
2. *automatic*, as in polling data or making requests without direct interaction from the user which could create unwanted load on the server or give away that XIVLauncher is being used.
|
||||
3. *circumvent paywalls*, as in any attempts to bypass restrictions that require purchase to be lifted such as enabling access to mog station emotes.
|
||||
|
||||
We feel like that this offers developers the *freedom to improve the game's functionality* in ways that SE can't, while officially disallowing plugins that can give *unfair advantages over players on other platforms*.
|
||||
|
||||
## Disclaimer
|
||||
|
||||
XIVLauncher is not in-line with Square Enix ToS. We are doing our best to make it safe to use for everyone, and to our knowledge, no one ever got into trouble for using XIVLauncher, but please be aware that it is a possibility. You can read through our [FAQ entry](/todo) on this matter if you want to know more.
|
||||
|
||||
<footer>
|
||||
FINAL FANTASY is a registered trademark of Square Enix Holdings Co., Ltd. FINAL FANTASY XIV © 2010-2024 SQUARE ENIX CO., LTD. All Rights Reserved. We are not affiliated with SQUARE ENIX CO., LTD. in any way.
|
||||
</footer>
|
3
tsconfig.json
Normal file
3
tsconfig.json
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"extends": "astro/tsconfigs/strict"
|
||||
}
|
Loading…
Reference in a new issue