Skip to content

Commit

Permalink
docs: setup formatting with prettier
Browse files Browse the repository at this point in the history
  • Loading branch information
skryukov committed Oct 25, 2024
1 parent a80cd9e commit a1b914f
Show file tree
Hide file tree
Showing 36 changed files with 1,064 additions and 460 deletions.
22 changes: 22 additions & 0 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
name: Docs

on:
push:
branches:
- main

pull_request:
paths:
- 'docs/**'

jobs:
check_formatting:
runs-on: ubuntu-latest
name: Docs formatting

steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm install
- name: Check formatting
run: npm run format:check
2 changes: 2 additions & 0 deletions .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ on:
- main

pull_request:
paths-ignore:
- 'docs/**'

jobs:
lint:
Expand Down
3 changes: 3 additions & 0 deletions docs/.prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
**/node_modules
**/dist
**/cache
191 changes: 97 additions & 94 deletions docs/.vitepress/config.mts
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
import { defineConfig } from "vitepress";
import { tabsMarkdownPlugin } from "./vitepress-plugin-tabs/tabsMarkdownPlugin";
import { defineConfig } from 'vitepress'
import { tabsMarkdownPlugin } from './vitepress-plugin-tabs/tabsMarkdownPlugin'

const title = "Inertia Rails";
const description = "Community documentation for Inertia.js Rails adapter";
const site = "https://inertia-rails.netlify.app";
const image = `${site}/og_image.jpg`;
const title = 'Inertia Rails'
const description = 'Community documentation for Inertia.js Rails adapter'
const site = 'https://inertia-rails.netlify.app'
const image = `${site}/og_image.jpg`

// https://vitepress.dev/reference/site-config
export default defineConfig({
Expand All @@ -13,138 +13,141 @@ export default defineConfig({

markdown: {
config(md) {
md.use(tabsMarkdownPlugin);
md.use(tabsMarkdownPlugin)
},
},

head: [
["link", { rel: "icon", href: "/favicon.ico", sizes: "32x32" }],
["link", { rel: "icon", href: "/icon.svg", type: "image/svg+xml" }],
['link', { rel: 'icon', href: '/favicon.ico', sizes: '32x32' }],
['link', { rel: 'icon', href: '/icon.svg', type: 'image/svg+xml' }],

["meta", { name: "twitter:card", content: "summary_large_image" }],
["meta", { name: "twitter:site", content: site }],
["meta", { name: "twitter:description", value: description }],
["meta", { name: "twitter:image", content: image }],
['meta', { name: 'twitter:card', content: 'summary_large_image' }],
['meta', { name: 'twitter:site', content: site }],
['meta', { name: 'twitter:description', value: description }],
['meta', { name: 'twitter:image', content: image }],

["meta", { property: "og:type", content: "website" }],
["meta", { property: "og:locale", content: "en_US" }],
["meta", { property: "og:site", content: site }],
["meta", { property: "og:site_name", content: title }],
["meta", { property: "og:image", content: image }],
["meta", { property: "og:description", content: description }],
['meta', { property: 'og:type', content: 'website' }],
['meta', { property: 'og:locale', content: 'en_US' }],
['meta', { property: 'og:site', content: site }],
['meta', { property: 'og:site_name', content: title }],
['meta', { property: 'og:image', content: image }],
['meta', { property: 'og:description', content: description }],
],

themeConfig: {
// https://vitepress.dev/reference/default-theme-config
nav: [
{ text: "Home", link: "/" },
{ text: "Guide", link: "/guide" },
{ text: "Cookbook", link: "/cookbook/integrating-shadcn-ui" },
{ text: 'Home', link: '/' },
{ text: 'Guide', link: '/guide' },
{ text: 'Cookbook', link: '/cookbook/integrating-shadcn-ui' },
{
text: "Links",
text: 'Links',
items: [
{ text: "Official Inertia.js docs", link: "https://inertiajs.com" },
{ text: 'Official Inertia.js docs', link: 'https://inertiajs.com' },
{
text: "Gems",
text: 'Gems',
items: [
{
text: "inertia_rails",
link: "https://github.com/inertiajs/inertia-rails",
text: 'inertia_rails',
link: 'https://github.com/inertiajs/inertia-rails',
},
{
text: "inertia_rails-contrib",
link: "https://github.com/skryukov/inertia_rails-contrib",
text: 'inertia_rails-contrib',
link: 'https://github.com/skryukov/inertia_rails-contrib',
},
],
},
],
},
],

logo: "/logo.svg",
logo: '/logo.svg',

sidebar: {
"/guide": [
'/guide': [
{
items: [
{text: "Introduction", link: "/guide"},
{text: "Demo app", link: "/guide/demo-application"},
{text: "Upgrade guide", link: "/guide/upgrade-guide"},
{ text: 'Introduction', link: '/guide' },
{ text: 'Demo app', link: '/guide/demo-application' },
{ text: 'Upgrade guide', link: '/guide/upgrade-guide' },
],
},
{
text: "Installation",
text: 'Installation',
items: [
{text: "Server-side", link: "/guide/server-side-setup"},
{text: "Client-side", link: "/guide/client-side-setup"},
]
{ text: 'Server-side', link: '/guide/server-side-setup' },
{ text: 'Client-side', link: '/guide/client-side-setup' },
],
},
{
text: "Core concepts",
text: 'Core concepts',
items: [
{text: "Who is it for", link: "/guide/who-is-it-for"},
{text: "How it works", link: "/guide/how-it-works"},
{text: "The protocol", link: "/guide/the-protocol"},
]
{ text: 'Who is it for', link: '/guide/who-is-it-for' },
{ text: 'How it works', link: '/guide/how-it-works' },
{ text: 'The protocol', link: '/guide/the-protocol' },
],
},
{
text: "The basics",
text: 'The basics',
items: [
{text: "Pages", link: "/guide/pages"},
{text: "Responses", link: "/guide/responses"},
{text: "Redirects", link: "/guide/redirects"},
{text: "Routing", link: "/guide/routing"},
{text: "Title & meta", link: "/guide/title-and-meta"},
{text: "Links", link: "/guide/links"},
{text: "Manual visits", link: "/guide/manual-visits"},
{text: "Forms", link: "/guide/forms"},
{text: "File uploads", link: "/guide/file-uploads"},
{text: "Validation", link: "/guide/validation"},
]
{ text: 'Pages', link: '/guide/pages' },
{ text: 'Responses', link: '/guide/responses' },
{ text: 'Redirects', link: '/guide/redirects' },
{ text: 'Routing', link: '/guide/routing' },
{ text: 'Title & meta', link: '/guide/title-and-meta' },
{ text: 'Links', link: '/guide/links' },
{ text: 'Manual visits', link: '/guide/manual-visits' },
{ text: 'Forms', link: '/guide/forms' },
{ text: 'File uploads', link: '/guide/file-uploads' },
{ text: 'Validation', link: '/guide/validation' },
],
},
{
text: "Data & Props",
text: 'Data & Props',
items: [
{text: "Shared data", link: "/guide/shared-data"},
{text: "Partial reloads", link: "/guide/partial-reloads"},
{text: "Deferred props", link: "/guide/deferred-props"},
{text: "Polling", link: "/guide/polling"},
{text: "Prefetching", link: "/guide/prefetching"},
{text: "Load when visible", link: "/guide/load-when-visible"},
{text: "Merging props", link: "/guide/merging-props"},
{text: "Remembering state", link: "/guide/remembering-state"},
]
{ text: 'Shared data', link: '/guide/shared-data' },
{ text: 'Partial reloads', link: '/guide/partial-reloads' },
{ text: 'Deferred props', link: '/guide/deferred-props' },
{ text: 'Polling', link: '/guide/polling' },
{ text: 'Prefetching', link: '/guide/prefetching' },
{ text: 'Load when visible', link: '/guide/load-when-visible' },
{ text: 'Merging props', link: '/guide/merging-props' },
{ text: 'Remembering state', link: '/guide/remembering-state' },
],
},
{
text: "Security",
text: 'Security',
items: [
{text: "Authentication", link: "/guide/authentication"},
{text: "Authorization", link: "/guide/authorization"},
{text: "CSRF protection", link: "/guide/csrf-protection"},
{text: "History encryption", link: "/guide/history-encryption"},
]
{ text: 'Authentication', link: '/guide/authentication' },
{ text: 'Authorization', link: '/guide/authorization' },
{ text: 'CSRF protection', link: '/guide/csrf-protection' },
{ text: 'History encryption', link: '/guide/history-encryption' },
],
},
{
text: "Advanced",
text: 'Advanced',
items: [
{text: "Asset versioning", link: "/guide/asset-versioning"},
{text: "Code splitting", link: "/guide/code-splitting"},
{text: "Error handling", link: "/guide/error-handling"},
{text: "Events", link: "/guide/events"},
{text: "Progress indicators", link: "/guide/progress-indicators"},
{text: "Scroll management", link: "/guide/scroll-management"},
{text: "Server-side rendering", link: "/guide/server-side-rendering"},
{text: "Testing", link: "/guide/testing"},
]
{ text: 'Asset versioning', link: '/guide/asset-versioning' },
{ text: 'Code splitting', link: '/guide/code-splitting' },
{ text: 'Error handling', link: '/guide/error-handling' },
{ text: 'Events', link: '/guide/events' },
{ text: 'Progress indicators', link: '/guide/progress-indicators' },
{ text: 'Scroll management', link: '/guide/scroll-management' },
{
text: 'Server-side rendering',
link: '/guide/server-side-rendering',
},
{ text: 'Testing', link: '/guide/testing' },
],
},
],
"/cookbook": [
'/cookbook': [
{
items: [
{
text: "Integrations",
text: 'Integrations',
items: [
{ text: "shadcn/ui", link: "/cookbook/integrating-shadcn-ui" },
{ text: 'shadcn/ui', link: '/cookbook/integrating-shadcn-ui' },
],
},
],
Expand All @@ -153,24 +156,24 @@ export default defineConfig({
},

search: {
provider: "algolia",
provider: 'algolia',
options: {
appId: "NFLARHZ4Q4",
apiKey: "5e79b6038b027b5bb342ea5a31d0a2e8",
indexName: "inertia-rails",
appId: 'NFLARHZ4Q4',
apiKey: '5e79b6038b027b5bb342ea5a31d0a2e8',
indexName: 'inertia-rails',
},
},

editLink: {
pattern:
"https://github.com/skryukov/inertia_rails-contrib/edit/main/docs/:path",
text: "Edit this page on GitHub",
'https://github.com/skryukov/inertia_rails-contrib/edit/main/docs/:path',
text: 'Edit this page on GitHub',
},

socialLinks: [
{ icon: "github", link: "https://github.com/inertiajs/inertia-rails" },
{ icon: "x", link: "https://x.com/inertiajs" },
{ icon: "discord", link: "https://discord.gg/inertiajs" },
{ icon: 'github', link: 'https://github.com/inertiajs/inertia-rails' },
{ icon: 'x', link: 'https://x.com/inertiajs' },
{ icon: 'discord', link: 'https://discord.gg/inertiajs' },
],
},
});
})
24 changes: 12 additions & 12 deletions docs/.vitepress/theme/frameworksTabs.ts
Original file line number Diff line number Diff line change
@@ -1,24 +1,24 @@
const localStorageKey = "vitepress:tabsSharedState";
const ls = typeof localStorage !== "undefined" ? localStorage : null;
const localStorageKey = 'vitepress:tabsSharedState'
const ls = typeof localStorage !== 'undefined' ? localStorage : null

const getLocalStorageValue = (): Record<string, string> => {
const rawValue = ls?.getItem(localStorageKey);
const rawValue = ls?.getItem(localStorageKey)
if (rawValue) {
try {
return JSON.parse(rawValue);
return JSON.parse(rawValue)
} catch {}
}
return {};
};
return {}
}

const setLocalStorageValue = (v: Record<string, string>) => {
if (!ls) return;
ls.setItem(localStorageKey, JSON.stringify(v));
};
if (!ls) return
ls.setItem(localStorageKey, JSON.stringify(v))
}

export const setupFrameworksTabs = () => {
const v = getLocalStorageValue();
const v = getLocalStorageValue()
if (!v.frameworks) {
setLocalStorageValue({ frameworks: "React" });
setLocalStorageValue({ frameworks: 'React' })
}
};
}
20 changes: 10 additions & 10 deletions docs/.vitepress/theme/index.ts
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
// https://vitepress.dev/guide/custom-theme
import { h } from "vue";
import type { Theme } from "vitepress";
import DefaultTheme from "vitepress/theme";
import { enhanceAppWithTabs } from "vitepress-plugin-tabs/client";
import { setupFrameworksTabs } from "./frameworksTabs";
import "./style.css";
import type { Theme } from 'vitepress'
import { enhanceAppWithTabs } from 'vitepress-plugin-tabs/client'
import DefaultTheme from 'vitepress/theme'
import { h } from 'vue'
import { setupFrameworksTabs } from './frameworksTabs'
import './style.css'

export default {
extends: DefaultTheme,
Layout: () => {
return h(DefaultTheme.Layout, null, {
// https://vitepress.dev/guide/extending-default-theme#layout-slots
});
})
},
enhanceApp({ app, router, siteData }) {
enhanceAppWithTabs(app);
enhanceAppWithTabs(app)
},
setup() {
setupFrameworksTabs();
setupFrameworksTabs()
},
} satisfies Theme;
} satisfies Theme
4 changes: 2 additions & 2 deletions docs/.vitepress/theme/style.css
Original file line number Diff line number Diff line change
Expand Up @@ -153,11 +153,11 @@
padding: 0 !important;
}

.plugin-tabs--content div[class*="language-"] {
.plugin-tabs--content div[class*='language-'] {
background-color: var(--vp-code-block-bg) !important;
}

.plugin-tabs--content div[class*="language-"]:first-child {
.plugin-tabs--content div[class*='language-']:first-child {
border-top-left-radius: 0 !important;
border-top-right-radius: 0 !important;
}
Expand Down
Loading

0 comments on commit a1b914f

Please sign in to comment.