Skip to content

Commit 1c3a736

Browse files
committed
initial commit
1 parent c11028b commit 1c3a736

File tree

61 files changed

+8456
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+8456
-0
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
.DS_Store
2+
.eslintcache
3+
4+
node_modules/
5+
dist/
6+
**/.vitepress/dist/
7+
**/.vitepress/cache/

.prettierignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
dist/
2+
.nuxt/
3+
.nitro/
4+
.output/
5+
.temp/
6+
node_modules/
7+
.data/
8+
drizzle/
9+
10+
pnpm-lock.yaml

.vitepress/config.ts

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import { defineConfig } from 'vitepress'
2+
import { defineConfigWithDefaults } from '../default-config'
3+
4+
export default defineConfigWithDefaults({
5+
title: 'falconDev OSS',
6+
description: 'Open Source Software by falconDev',
7+
vite: {
8+
server: {
9+
proxy: {
10+
'/form': {
11+
target: 'http://localhost:5174',
12+
},
13+
'/caps': {
14+
target: 'http://localhost:5175',
15+
},
16+
'/trpc-vue-query': {
17+
target: 'http://localhost:5176',
18+
},
19+
'/lang': {
20+
target: 'http://localhost:5177',
21+
},
22+
'/gha-cache-server': {
23+
target: 'http://localhost:5178',
24+
},
25+
'/nitro-trpc-event-handler': {
26+
target: 'http://localhost:5179',
27+
},
28+
'/expo-event-source-polyfill': {
29+
target: 'http://localhost:5180',
30+
},
31+
'/util': {
32+
target: 'http://localhost:5181',
33+
},
34+
'/configs': {
35+
target: 'http://localhost:5182',
36+
},
37+
},
38+
},
39+
},
40+
themeConfig: {
41+
logo: '/logo.svg',
42+
},
43+
})

.vitepress/theme/CustomLayout.vue

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
<script setup lang="ts">
2+
import { groupBy, prop } from 'remeda'
3+
import { useData } from 'vitepress'
4+
import { computed } from 'vue'
5+
import DefaultTheme, { VPFeatures } from 'vitepress/theme'
6+
7+
const { Layout } = DefaultTheme
8+
9+
const { frontmatter: fm } = useData()
10+
11+
const origin = window.location.origin
12+
console.log('origin', origin, fm.value['grouped-features'])
13+
const groupedFeatures = computed(() =>
14+
groupBy(
15+
fm.value['grouped-features'].map((feature) => ({
16+
...feature,
17+
link: origin + feature.link,
18+
target: '_self',
19+
rel: '',
20+
icon: {
21+
...feature.icon,
22+
src: origin + feature.icon.src,
23+
},
24+
})) as { group?: string }[],
25+
prop('group'),
26+
),
27+
)
28+
</script>
29+
30+
<template>
31+
<Layout>
32+
<template #home-features-after>
33+
<VPFeatures
34+
v-for="(features, idx) of groupedFeatures"
35+
:features="features"
36+
:style="{ marginTop: idx === 0 ? 0 : '8px' }"
37+
/>
38+
</template>
39+
</Layout>
40+
</template>

.vitepress/theme/index.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import DefaultTheme from 'vitepress/theme'
2+
import 'virtual:group-icons.css'
3+
import CustomLayout from './CustomLayout.vue'
4+
5+
export default {
6+
extends: DefaultTheme,
7+
Layout: CustomLayout,
8+
}

.vscode/settings.json

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
{
2+
"prettier.enable": true,
3+
"editor.defaultFormatter": "esbenp.prettier-vscode",
4+
"editor.formatOnSave": true,
5+
"editor.codeActionsOnSave": {
6+
"source.fixAll.eslint": "explicit",
7+
"source.organizeImports": "never"
8+
},
9+
"eslint.workingDirectories": [{ "mode": "auto" }],
10+
"eslint.useFlatConfig": true,
11+
"eslint.validate": [
12+
"javascript",
13+
"javascriptreact",
14+
"typescript",
15+
"typescriptreact",
16+
"vue",
17+
"html",
18+
"markdown",
19+
"json",
20+
"jsonc",
21+
"yaml",
22+
"dockercompose",
23+
"github-actions-workflow"
24+
],
25+
"tailwindCSS.classAttributes": ["class", "className", "ngClass", "classes"],
26+
"tailwindCSS.experimental.classRegex": [
27+
["ui:\\s*{([^)]*)\\s*}", "[\"'`]([^\"'`]*).*?[\"'`]"],
28+
["/\\*ui\\*/\\s*{([^;]*)}", ":\\s*[\"'`]([^\"'`]*).*?[\"'`]"],
29+
"[a-zA-Z]*_(?:class|CLASS)\\s*(?::|=)\\s*'([^']+)'",
30+
"tw`([^`]*)`"
31+
],
32+
"files.associations": {
33+
"*.css": "tailwindcss"
34+
},
35+
"editor.quickSuggestions": {
36+
"strings": true
37+
},
38+
"[prisma]": {
39+
"editor.defaultFormatter": "Prisma.prisma"
40+
},
41+
"vue.server.includeLanguages": ["vue", "markdown"]
42+
}

default-config.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { type DefaultTheme, defineConfig, type UserConfig } from 'vitepress'
2+
import { groupIconMdPlugin, groupIconVitePlugin } from 'vitepress-plugin-group-icons'
3+
import { defu } from 'defu'
4+
5+
export function defineConfigWithDefaults(config: UserConfig<DefaultTheme.Config>) {
6+
return defu(
7+
config,
8+
defineConfig({
9+
vite: {
10+
plugins: [groupIconVitePlugin()],
11+
},
12+
markdown: {
13+
config(md) {
14+
md.use(groupIconMdPlugin)
15+
},
16+
},
17+
}),
18+
)
19+
}

eslint.config.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// @ts-check
2+
import eslintConfig from '@louishaftmann/eslint-config'
3+
import tanstackQueryPlugin from '@tanstack/eslint-plugin-query'
4+
5+
export default eslintConfig({
6+
nuxt: true,
7+
tsconfigPath: './tsconfig.json',
8+
})
9+
.append(tanstackQueryPlugin.configs['flat/recommended'])
10+
.append({
11+
ignores: [
12+
'node_modules/',
13+
'dist/',
14+
'.nuxt/',
15+
'.nitro/',
16+
'.output/',
17+
'.temp/',
18+
'.data/',
19+
'drizzle/',
20+
'pnpm-lock.yaml',
21+
],
22+
})

index.md

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
layout: home
3+
4+
hero:
5+
name: falconDev
6+
text: Open-Source packages
7+
tagline: Focusing on type safety and developer experience
8+
image:
9+
src: /logo.svg
10+
alt: falconDev
11+
actions:
12+
- theme: alt
13+
text: GitHub
14+
link: https://github.com/falcondev-oss
15+
- theme: alt
16+
text: Sponsors
17+
link: https://github.com/sponsors/falcondev-oss
18+
19+
grouped-features:
20+
- title: Caps
21+
details: Type-safe access control made simple
22+
link: '/caps/'
23+
linkText: Learn more
24+
group: 0
25+
icon:
26+
src: /caps/logo.svg
27+
alt: Caps
28+
- title: Form
29+
details: Type-safe form handling made simple
30+
link: '/form/'
31+
linkText: Learn more
32+
group: 0
33+
icon:
34+
src: /form/logo.svg
35+
alt: Form
36+
- title: Lang
37+
details: Type-safe form handling made simple
38+
link: '/lang/'
39+
linkText: Learn more
40+
group: 0
41+
icon:
42+
src: /lang/logo.svg
43+
alt: Lang
44+
45+
- title: tRPC Vue Query
46+
details: Type-safe form handling made simple
47+
link: '/trpc-vue-query/'
48+
linkText: Learn more
49+
group: 1
50+
icon:
51+
src: /trpc-vue-query/logo.svg
52+
alt: tRPC Vue Query
53+
54+
- title: GHA Cache Server
55+
details: Type-safe form handling made simple
56+
link: '/gha-cache-server/'
57+
linkText: Learn more
58+
group: 1
59+
icon:
60+
src: /gha-cache-server/logo.svg
61+
alt: GHA Cache Server
62+
- title: util
63+
details: Type-safe form handling made simple
64+
link: '/util/'
65+
linkText: Learn more
66+
group: 2
67+
icon:
68+
src: /util/logo.svg
69+
alt: util
70+
71+
- title: configs
72+
details: Type-safe form handling made simple
73+
link: '/configs/'
74+
linkText: Learn more
75+
group: 2
76+
icon:
77+
src: /configs/logo.svg
78+
alt: configs
79+
- title: nitro-trpc-event-handler
80+
details: Type-safe form handling made simple
81+
link: '/nitro-trpc-event-handler/'
82+
linkText: Learn more
83+
group: 2
84+
icon:
85+
src: /nitro-trpc-event-handler/logo.svg
86+
alt: nitro-trpc-event-handler
87+
88+
- title: expo-event-source-polyfill
89+
details: Type-safe form handling made simple
90+
link: '/expo-event-source-polyfill/'
91+
linkText: Learn more
92+
group: 2
93+
icon:
94+
src: /expo-event-source-polyfill/logo.svg
95+
alt: expo-event-source-polyfill
96+
---

package.json

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
{
2+
"name": "docs",
3+
"version": "1.0.0",
4+
"description": "",
5+
"type": "module",
6+
"scripts": {
7+
"dev": "concurrently --prefix command 'vitepress dev' \"vitepress dev packages/\"{form,caps,trpc-vue-query,lang,gha-cache-server,expo-event-source-polyfill,nitro-trpc-event-handler,util,configs}",
8+
"build": "vitepress build && vitepress build packages/{form,caps,trpc-vue-query,lang,gha-cache-server,expo-event-source-polyfill,nitro-trpc-event-handler,util,configs}"
9+
},
10+
"keywords": [],
11+
"author": "",
12+
"license": "ISC",
13+
"packageManager": "[email protected]",
14+
"devDependencies": {
15+
"vitepress": "^1.6.3"
16+
},
17+
"dependencies": {
18+
"@eslint/eslintrc": "^3.3.1",
19+
"@louishaftmann/eslint-config": "^4.2.0",
20+
"@louishaftmann/prettier-config": "^4.2.0",
21+
"concurrently": "^9.1.2",
22+
"defu": "^6.1.4",
23+
"eslint": "^9.28.0",
24+
"prettier": "^3.5.3",
25+
"remeda": "^2.23.0",
26+
"vitepress-plugin-group-icons": "^1.6.0",
27+
"vue": "^3.5.16"
28+
}
29+
}

0 commit comments

Comments
 (0)