🎉 Initial Commit
This commit is contained in:
commit
4bd65aee9f
24
.gitignore
vendored
Normal file
24
.gitignore
vendored
Normal file
@ -0,0 +1,24 @@
|
||||
# Nuxt dev/build outputs
|
||||
.output
|
||||
.data
|
||||
.nuxt
|
||||
.nitro
|
||||
.cache
|
||||
dist
|
||||
|
||||
# Node dependencies
|
||||
node_modules
|
||||
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
|
||||
# Misc
|
||||
.DS_Store
|
||||
.fleet
|
||||
.idea
|
||||
|
||||
# Local env files
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
75
README.md
Normal file
75
README.md
Normal file
@ -0,0 +1,75 @@
|
||||
# Nuxt 3 Minimal Starter
|
||||
|
||||
Look at the [Nuxt 3 documentation](https://nuxt.com/docs/getting-started/introduction) to learn more.
|
||||
|
||||
## Setup
|
||||
|
||||
Make sure to install the dependencies:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm install
|
||||
|
||||
# pnpm
|
||||
pnpm install
|
||||
|
||||
# yarn
|
||||
yarn install
|
||||
|
||||
# bun
|
||||
bun install
|
||||
```
|
||||
|
||||
## Development Server
|
||||
|
||||
Start the development server on `http://localhost:3000`:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run dev
|
||||
|
||||
# pnpm
|
||||
pnpm run dev
|
||||
|
||||
# yarn
|
||||
yarn dev
|
||||
|
||||
# bun
|
||||
bun run dev
|
||||
```
|
||||
|
||||
## Production
|
||||
|
||||
Build the application for production:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run build
|
||||
|
||||
# pnpm
|
||||
pnpm run build
|
||||
|
||||
# yarn
|
||||
yarn build
|
||||
|
||||
# bun
|
||||
bun run build
|
||||
```
|
||||
|
||||
Locally preview production build:
|
||||
|
||||
```bash
|
||||
# npm
|
||||
npm run preview
|
||||
|
||||
# pnpm
|
||||
pnpm run preview
|
||||
|
||||
# yarn
|
||||
yarn preview
|
||||
|
||||
# bun
|
||||
bun run preview
|
||||
```
|
||||
|
||||
Check out the [deployment documentation](https://nuxt.com/docs/getting-started/deployment) for more information.
|
8
app.vue
Normal file
8
app.vue
Normal file
@ -0,0 +1,8 @@
|
||||
<template>
|
||||
<v-app>
|
||||
<nuxt-layout>
|
||||
<nuxt-loading-indicator />
|
||||
<nuxt-page />
|
||||
</nuxt-layout>
|
||||
</v-app>
|
||||
</template>
|
BIN
assets/products/feature.jpg
Normal file
BIN
assets/products/feature.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 2.0 MiB |
17
assets/products/solar.svg
Executable file
17
assets/products/solar.svg
Executable file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 29 KiB |
6
content/products/solarpass.md
Normal file
6
content/products/solarpass.md
Normal file
@ -0,0 +1,6 @@
|
||||
---
|
||||
icon: "https://id.solsynth.dev/favicon.svg"
|
||||
name: "Solarpass"
|
||||
code: "Hydrogen.Solarpass"
|
||||
description: "The unified identity service for Solar Network."
|
||||
---
|
26
layouts/default.vue
Normal file
26
layouts/default.vue
Normal file
@ -0,0 +1,26 @@
|
||||
<template>
|
||||
<v-app-bar flat scroll-behavior="elevated">
|
||||
<v-container class="mx-auto d-flex align-center justify-center">
|
||||
<v-avatar
|
||||
class="me-4"
|
||||
color="transparent"
|
||||
size="32"
|
||||
image="/favicon.svg"
|
||||
></v-avatar>
|
||||
|
||||
<nuxt-link v-for="link in navbars" :to="link.to">
|
||||
<v-btn variant="text">{{ link.label }}</v-btn>
|
||||
</nuxt-link>
|
||||
|
||||
<v-spacer></v-spacer>
|
||||
</v-container>
|
||||
</v-app-bar>
|
||||
|
||||
<v-main class="bg-grey-lighten-3 min-h-[calc(100vh - 64px)]">
|
||||
<slot />
|
||||
</v-main>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const navbars = [{ label: "Home", to: "/" }];
|
||||
</script>
|
42
nuxt.config.ts
Normal file
42
nuxt.config.ts
Normal file
@ -0,0 +1,42 @@
|
||||
import vuetify, { transformAssetUrls } from "vite-plugin-vuetify";
|
||||
|
||||
// https://nuxt.com/docs/api/configuration/nuxt-config
|
||||
export default defineNuxtConfig({
|
||||
devtools: { enabled: true },
|
||||
|
||||
app: {
|
||||
head: {
|
||||
title: "Solsynth",
|
||||
meta: [
|
||||
{
|
||||
name: "description",
|
||||
content:
|
||||
"Solsynth LLC official website. We build amazing, wonderful, open-source software.",
|
||||
},
|
||||
],
|
||||
link: [{ rel: "icon", type: "image/xml+svg", href: "/favicon.svg" }],
|
||||
},
|
||||
},
|
||||
content: {},
|
||||
|
||||
build: {
|
||||
transpile: ["vuetify"],
|
||||
},
|
||||
modules: [
|
||||
"@unocss/nuxt",
|
||||
"@nuxt/content",
|
||||
(_options, nuxt) => {
|
||||
nuxt.hooks.hook("vite:extendConfig", (config) => {
|
||||
// @ts-expect-error
|
||||
config.plugins.push(vuetify({ autoImport: true }));
|
||||
});
|
||||
},
|
||||
],
|
||||
vite: {
|
||||
vue: {
|
||||
template: {
|
||||
transformAssetUrls,
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
26
package.json
Normal file
26
package.json
Normal file
@ -0,0 +1,26 @@
|
||||
{
|
||||
"name": "nuxt-app",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"build": "nuxt build",
|
||||
"dev": "nuxt dev",
|
||||
"generate": "nuxt generate",
|
||||
"preview": "nuxt preview",
|
||||
"postinstall": "nuxt prepare"
|
||||
},
|
||||
"dependencies": {
|
||||
"@fontsource/roboto": "^5.0.12",
|
||||
"@mdi/font": "^7.4.47",
|
||||
"@nuxt/content": "^2.12.1",
|
||||
"nuxt": "^3.10.3",
|
||||
"vue": "^3.4.21",
|
||||
"vue-router": "^4.3.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@unocss/nuxt": "^0.58.6",
|
||||
"@unocss/reset": "^0.58.6",
|
||||
"vite-plugin-vuetify": "^2.0.3",
|
||||
"vuetify": "^3.5.9"
|
||||
}
|
||||
}
|
132
pages/index.vue
Normal file
132
pages/index.vue
Normal file
@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<v-container>
|
||||
<v-row class="h-fullpage" align-content="center" id="landing">
|
||||
<v-col :xs="12" :sm="6" class="max-md:text-center">
|
||||
<img
|
||||
src="/assets/products/solar.svg"
|
||||
class="w-[180px] h-[192px] max-md:mx-auto"
|
||||
/>
|
||||
<h1 class="text-6xl font-bold mt-8">
|
||||
<span class="text-primary">Internet.</span> <br />
|
||||
<span>Redefined.</span>
|
||||
</h1>
|
||||
|
||||
<p class="text-lg mt-3">This is, the Solar Network.</p>
|
||||
|
||||
<div class="mt-12 w-full flex max-md:justify-center">
|
||||
<v-btn
|
||||
append-icon="mdi-magnify"
|
||||
variant="tonal"
|
||||
size="large"
|
||||
href="#about"
|
||||
>
|
||||
Explore more
|
||||
</v-btn>
|
||||
</div>
|
||||
</v-col>
|
||||
|
||||
<v-col
|
||||
:xs="12"
|
||||
:sm="6"
|
||||
class="flex items-center max-md:justify-center md:justify-end"
|
||||
>
|
||||
<v-card class="w-full">
|
||||
<img src="/assets/products/feature.jpg" class="object-cover" />
|
||||
</v-card>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-row class="h-fullpage" align-content="center" id="about">
|
||||
<v-col :xs="12" :sm="6" class="max-md:text-center">
|
||||
<v-icon
|
||||
icon="mdi-information-slab-symbol"
|
||||
size="48"
|
||||
color="grey-darken-3"
|
||||
class="mb-3 mx-[-16px]"
|
||||
/>
|
||||
<h1 class="text-2xl font-bold">About us</h1>
|
||||
<p>
|
||||
We are a group of developers who are love open-source. Founded in
|
||||
2019. We've been building open-source software that people love ever
|
||||
since. For us, "By open-source, for open-source" is not only a
|
||||
principle, but also the motto of our faith.
|
||||
</p>
|
||||
|
||||
<div class="mt-3 w-full flex max-md:justify-center">
|
||||
<v-btn
|
||||
class="mx-[-16px]"
|
||||
append-icon="mdi-shape"
|
||||
variant="text"
|
||||
href="#products"
|
||||
>
|
||||
Discover products
|
||||
</v-btn>
|
||||
</div>
|
||||
</v-col>
|
||||
|
||||
<v-col
|
||||
:xs="12"
|
||||
:sm="6"
|
||||
class="flex flex-col gap-2 max-md:items-center md:items-end"
|
||||
>
|
||||
<v-card hover class="pa-5">
|
||||
<template #text>
|
||||
<img src="/favicon.svg" width="128" height="128" />
|
||||
</template>
|
||||
</v-card>
|
||||
<p class="uppercase caption">Crystal Lotus</p>
|
||||
<p class="text-sm opacity-80 mt-[-8px] md:text-right">
|
||||
A crystal flower born in GoatLand. <br />
|
||||
Home flower of Solsynth. <br />
|
||||
Mr. Sheep felt homesick every time he saw it.
|
||||
</p>
|
||||
</v-col>
|
||||
</v-row>
|
||||
|
||||
<v-row
|
||||
class="h-fullpage text-center"
|
||||
align-content="center"
|
||||
justify="center"
|
||||
id="products"
|
||||
>
|
||||
<v-col :cols="12">
|
||||
<h2 class="text-2xl font-bold">Products</h2>
|
||||
<p>Let's see what we got.</p>
|
||||
|
||||
<div class="mt-4 flex justify-center gap-2">
|
||||
<v-tooltip v-for="item in products" location="top">
|
||||
<template #activator="{ props }">
|
||||
<v-card v-bind="props" hover class="w-24 h-24">
|
||||
<div class="h-full w-full flex justify-center items-center">
|
||||
<img :src="item.icon" width="64" height="64" class="block" />
|
||||
</div>
|
||||
</v-card>
|
||||
</template>
|
||||
|
||||
<div>
|
||||
<p class="font-bold">{{ item.title }}</p>
|
||||
<p class="font-mono text-xs">{{ item.code }}</p>
|
||||
<p class="mt-2">{{ item.description }}</p>
|
||||
</div>
|
||||
</v-tooltip>
|
||||
</div>
|
||||
</v-col>
|
||||
</v-row>
|
||||
</v-container>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const { data: products } = await useAsyncData("products", () =>
|
||||
queryContent("products").limit(5).find()
|
||||
);
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.h-fullpage {
|
||||
height: calc(100vh - 64px);
|
||||
}
|
||||
|
||||
.caption {
|
||||
letter-spacing: 2px;
|
||||
}
|
||||
</style>
|
4
plugins/unocss.ts
Normal file
4
plugins/unocss.ts
Normal file
@ -0,0 +1,4 @@
|
||||
import "@unocss/reset/tailwind.css"
|
||||
import "@fontsource/roboto/latin.css"
|
||||
|
||||
export default defineNuxtPlugin(() => {})
|
36
plugins/vuetify.ts
Normal file
36
plugins/vuetify.ts
Normal file
@ -0,0 +1,36 @@
|
||||
import "@mdi/font/css/materialdesignicons.min.css";
|
||||
|
||||
import "vuetify/styles";
|
||||
import { createVuetify } from "vuetify";
|
||||
import { md3 } from "vuetify/blueprints";
|
||||
import * as components from "vuetify/components";
|
||||
import * as labsComponents from "vuetify/labs/components";
|
||||
import * as directives from "vuetify/directives";
|
||||
|
||||
export default defineNuxtPlugin((app) => {
|
||||
const vuetify = createVuetify({
|
||||
directives,
|
||||
components: {
|
||||
...components,
|
||||
...labsComponents,
|
||||
},
|
||||
blueprint: md3,
|
||||
theme: {
|
||||
defaultTheme: "original",
|
||||
themes: {
|
||||
original: {
|
||||
colors: {
|
||||
primary: "#4a5099",
|
||||
secondary: "#2196f3",
|
||||
accent: "#009688",
|
||||
error: "#f44336",
|
||||
warning: "#ff9800",
|
||||
info: "#03a9f4",
|
||||
success: "#4caf50",
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
app.vueApp.use(vuetify);
|
||||
});
|
12
public/favicon.svg
Executable file
12
public/favicon.svg
Executable file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 28 KiB |
3
server/tsconfig.json
Normal file
3
server/tsconfig.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"extends": "../.nuxt/tsconfig.server.json"
|
||||
}
|
4
tsconfig.json
Normal file
4
tsconfig.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
// https://nuxt.com/docs/guide/concepts/typescript
|
||||
"extends": "./.nuxt/tsconfig.json"
|
||||
}
|
5
uno.config.ts
Normal file
5
uno.config.ts
Normal file
@ -0,0 +1,5 @@
|
||||
import { defineConfig, presetAttributify, presetTypography, presetUno } from "unocss";
|
||||
|
||||
export default defineConfig({
|
||||
presets: [presetAttributify(), presetTypography(), presetUno({ preflight: false })]
|
||||
})
|
Loading…
x
Reference in New Issue
Block a user