From c792476340a72056fc1b17a2839de8eee93c5e8c Mon Sep 17 00:00:00 2001 From: mitchell Date: Thu, 20 Jun 2024 02:33:21 -0400 Subject: [PATCH] Initial boilerplate --- .gitignore | 180 +++++++++++++++++++++++++++++++++++++ .vitepress/config.ts | 28 ++++++ .vitepress/theme/index.ts | 17 ++++ .vitepress/theme/style.css | 139 ++++++++++++++++++++++++++++ README.md | 15 ++++ api-examples.md | 49 ++++++++++ bun.lockb | Bin 0 -> 51317 bytes index.md | 25 ++++++ markdown-examples.md | 85 ++++++++++++++++++ package.json | 18 ++++ tsconfig.json | 27 ++++++ 11 files changed, 583 insertions(+) create mode 100644 .gitignore create mode 100644 .vitepress/config.ts create mode 100644 .vitepress/theme/index.ts create mode 100644 .vitepress/theme/style.css create mode 100644 README.md create mode 100644 api-examples.md create mode 100755 bun.lockb create mode 100644 index.md create mode 100644 markdown-examples.md create mode 100644 package.json create mode 100644 tsconfig.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2260708 --- /dev/null +++ b/.gitignore @@ -0,0 +1,180 @@ +# Based on https://raw.githubusercontent.com/github/gitignore/main/Node.gitignore + +# Logs + +logs +_.log +npm-debug.log_ +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Caches + +.cache + +# Diagnostic reports (https://nodejs.org/api/report.html) + +report.[0-9]_.[0-9]_.[0-9]_.[0-9]_.json + +# Runtime data + +pids +_.pid +_.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover + +lib-cov + +# Coverage directory used by tools like istanbul + +coverage +*.lcov + +# nyc test coverage + +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) + +.grunt + +# Bower dependency directory (https://bower.io/) + +bower_components + +# node-waf configuration + +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) + +build/Release + +# Dependency directories + +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) + +web_modules/ + +# TypeScript cache + +*.tsbuildinfo + +# Optional npm cache directory + +.npm + +# Optional eslint cache + +.eslintcache + +# Optional stylelint cache + +.stylelintcache + +# Microbundle cache + +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history + +.node_repl_history + +# Output of 'npm pack' + +*.tgz + +# Yarn Integrity file + +.yarn-integrity + +# dotenv environment variable files + +.env +.env.development.local +.env.test.local +.env.production.local +.env.local + +# parcel-bundler cache (https://parceljs.org/) + +.parcel-cache + +# Next.js build output + +.next +out + +# Nuxt.js build / generate output + +.nuxt +dist + +# Gatsby files + +# Comment in the public line in if your project uses Gatsby and not Next.js + +# https://nextjs.org/blog/next-9-1#public-directory-support + +# public + +# vuepress build output + +.vuepress/dist + +# vuepress v2.x temp and cache directory + +.temp + +# Docusaurus cache and generated files + +.docusaurus + +# Serverless directories + +.serverless/ + +# FuseBox cache + +.fusebox/ + +# DynamoDB Local files + +.dynamodb/ + +# TernJS port file + +.tern-port + +# Stores VSCode versions used for testing VSCode extensions + +.vscode-test + +# yarn v2 + +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +# IntelliJ based IDEs +.idea + +# Finder (MacOS) folder config +.DS_Store + +# VitePress + +.vitepress/dist +.vitepress/cache diff --git a/.vitepress/config.ts b/.vitepress/config.ts new file mode 100644 index 0000000..9de1fd4 --- /dev/null +++ b/.vitepress/config.ts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "Mitchell Simon", + description: "Software Engineer", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' } + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/vuejs/vitepress' } + ] + } +}) diff --git a/.vitepress/theme/index.ts b/.vitepress/theme/index.ts new file mode 100644 index 0000000..def4cfc --- /dev/null +++ b/.vitepress/theme/index.ts @@ -0,0 +1,17 @@ +// https://vitepress.dev/guide/custom-theme +import { h } from 'vue' +import type { Theme } from 'vitepress' +import DefaultTheme from 'vitepress/theme' +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 }) { + // ... + } +} satisfies Theme diff --git a/.vitepress/theme/style.css b/.vitepress/theme/style.css new file mode 100644 index 0000000..d63aee8 --- /dev/null +++ b/.vitepress/theme/style.css @@ -0,0 +1,139 @@ +/** + * Customize default theme styling by overriding CSS variables: + * https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css + */ + +/** + * Colors + * + * Each colors have exact same color scale system with 3 levels of solid + * colors with different brightness, and 1 soft color. + * + * - `XXX-1`: The most solid color used mainly for colored text. It must + * satisfy the contrast ratio against when used on top of `XXX-soft`. + * + * - `XXX-2`: The color used mainly for hover state of the button. + * + * - `XXX-3`: The color for solid background, such as bg color of the button. + * It must satisfy the contrast ratio with pure white (#ffffff) text on + * top of it. + * + * - `XXX-soft`: The color used for subtle background such as custom container + * or badges. It must satisfy the contrast ratio when putting `XXX-1` colors + * on top of it. + * + * The soft color must be semi transparent alpha channel. This is crucial + * because it allows adding multiple "soft" colors on top of each other + * to create a accent, such as when having inline code block inside + * custom containers. + * + * - `default`: The color used purely for subtle indication without any + * special meanings attched to it such as bg color for menu hover state. + * + * - `brand`: Used for primary brand colors, such as link text, button with + * brand theme, etc. + * + * - `tip`: Used to indicate useful information. The default theme uses the + * brand color for this by default. + * + * - `warning`: Used to indicate warning to the users. Used in custom + * container, badges, etc. + * + * - `danger`: Used to show error, or dangerous message to the users. Used + * in custom container, badges, etc. + * -------------------------------------------------------------------------- */ + + :root { + --vp-c-default-1: var(--vp-c-gray-1); + --vp-c-default-2: var(--vp-c-gray-2); + --vp-c-default-3: var(--vp-c-gray-3); + --vp-c-default-soft: var(--vp-c-gray-soft); + + --vp-c-brand-1: var(--vp-c-indigo-1); + --vp-c-brand-2: var(--vp-c-indigo-2); + --vp-c-brand-3: var(--vp-c-indigo-3); + --vp-c-brand-soft: var(--vp-c-indigo-soft); + + --vp-c-tip-1: var(--vp-c-brand-1); + --vp-c-tip-2: var(--vp-c-brand-2); + --vp-c-tip-3: var(--vp-c-brand-3); + --vp-c-tip-soft: var(--vp-c-brand-soft); + + --vp-c-warning-1: var(--vp-c-yellow-1); + --vp-c-warning-2: var(--vp-c-yellow-2); + --vp-c-warning-3: var(--vp-c-yellow-3); + --vp-c-warning-soft: var(--vp-c-yellow-soft); + + --vp-c-danger-1: var(--vp-c-red-1); + --vp-c-danger-2: var(--vp-c-red-2); + --vp-c-danger-3: var(--vp-c-red-3); + --vp-c-danger-soft: var(--vp-c-red-soft); +} + +/** + * Component: Button + * -------------------------------------------------------------------------- */ + +:root { + --vp-button-brand-border: transparent; + --vp-button-brand-text: var(--vp-c-white); + --vp-button-brand-bg: var(--vp-c-brand-3); + --vp-button-brand-hover-border: transparent; + --vp-button-brand-hover-text: var(--vp-c-white); + --vp-button-brand-hover-bg: var(--vp-c-brand-2); + --vp-button-brand-active-border: transparent; + --vp-button-brand-active-text: var(--vp-c-white); + --vp-button-brand-active-bg: var(--vp-c-brand-1); +} + +/** + * Component: Home + * -------------------------------------------------------------------------- */ + +:root { + --vp-home-hero-name-color: transparent; + --vp-home-hero-name-background: -webkit-linear-gradient( + 120deg, + #bd34fe 30%, + #41d1ff + ); + + --vp-home-hero-image-background-image: linear-gradient( + -45deg, + #bd34fe 50%, + #47caff 50% + ); + --vp-home-hero-image-filter: blur(44px); +} + +@media (min-width: 640px) { + :root { + --vp-home-hero-image-filter: blur(56px); + } +} + +@media (min-width: 960px) { + :root { + --vp-home-hero-image-filter: blur(68px); + } +} + +/** + * Component: Custom Block + * -------------------------------------------------------------------------- */ + +:root { + --vp-custom-block-tip-border: transparent; + --vp-custom-block-tip-text: var(--vp-c-text-1); + --vp-custom-block-tip-bg: var(--vp-c-brand-soft); + --vp-custom-block-tip-code-bg: var(--vp-c-brand-soft); +} + +/** + * Component: Algolia + * -------------------------------------------------------------------------- */ + +.DocSearch { + --docsearch-primary-color: var(--vp-c-brand-1) !important; +} + diff --git a/README.md b/README.md new file mode 100644 index 0000000..896835e --- /dev/null +++ b/README.md @@ -0,0 +1,15 @@ +# mjfs-us + +To install dependencies: + +```bash +bun install +``` + +To run: + +```bash +bun run index.md +``` + +This project was created using `bun init` in bun v1.1.12. [Bun](https://bun.sh) is a fast all-in-one JavaScript runtime. diff --git a/api-examples.md b/api-examples.md new file mode 100644 index 0000000..6bd8bb5 --- /dev/null +++ b/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..7c3f8e4fd1916992b5de8a32cb1ec3c3e01ef7e8 GIT binary patch literal 51317 zcmeHw2|Sh07x$%WtE?$1vS!JWEnC@zN@-CkqKk`bcNa@ZB1NT0329Mj6QRXYB8fJY zL`7&Xg-W5_d*&|glV3`_@8{i`|NnHJnKS1*XU?q8JahfzWTw(6>>j^a1KJj9nWe&9Qpoaj#_QAtF~MrJ%P zfIPng`o6G;BvqZ z0ha|H16&HY2b0?XNBNYQaem;aoKCO@+5H?isy~t9N+bEY<66Nf$S?Kq&luq4z)`(& znd#}wcpOt6!c2E#rq2aF4)Pl?Lz{uvqp;XVhBaBG2sD6*6pKL#A>Cj&?M z)&U<2+>a?=%9L9$&N^o^0xcU;! zAdbo(1x^qE4*g5bo#;oJ2I;7s_JfmdOK*ha*bkr{!fg>D05|xVbdj$meAUj-1mz3+X7H4;=NEWZ@!{;g$&somF+^A1 z9MwzPg_Daj6uKxuIBqs}QNojitogo#CQe-*uW-i5fG=Q1|#9}&Po9FvB+6ZQvCB~9> zD>lW>;um~UqpAAs`Zvi{b{x;c>mp5f7I=_jue#eemu77IxNgGsbrQ=Wg1eOT6tnfU zzTUQaVK$k!%fhnalXGf>PWrXp&D*}G7sv^})_=F!PC#g5&8f-w6&kN%#&A>bxclDx zz_}o;qr-H6&5tv^ZJi@0T$_AObezbFZK+Yl&Yb7(zU6HZk~6Xh;rURYYkT8t#`e>z zc!iBs3ORP%xY8Xd6@F-O(#7YAN5_a+_aseklk<*Gi;cyf@NyA041JkQ?aVOgKIb~_ z8=s(*Xt(dm1HJW$MP^e(l(acEKh3Dg5R$A=YPHLGSZ(Tt-y+O(VwSCYbAqch%+p*7xCJ@)PShx_ZFO5N{^g72!fU$3 zg~qp4BqW88T;Z9&%j%V1d2@5=o-C~r1IZHK4i$UL=+~M1bx$-Ji-lC)=ykbA+-n;) zJ)-83_Kfj`dyko9D81+Xd?I*h>$ld)m8o_P-|M&DCi-6Cncj0QImqG|;cVK<>~xdN zC=E$9j|Dds$Rd8%pI7wEcH%5@z`xK!0tjMP*m-cer8&jz`uexMk`)fZ@N$;p9Wo{s?25xG z=|xwcnp`#(=x9s{F1GExLAK&pnW#SAb)?FdH_vx)Tb$2&b%*A#bJ5urqjtGRP9u*b zj6L+|_RE%Ir2TcvbYg6p>kro%ye~6VDxMWAGq%#EqEI4##@C=iU6pTsk}aL9&g4wK zwHUYWqj1xNcv`q$8#%7yMf9l9aGglA@^PcKbJVS!+n$hnyp^w+ti^f5=A^Bd z>!luJZeHV7E}5gT?&In<&+1r_H?jw>r-beEzC(iLdRT#zsSVRBZYsw{{ZZfuU8X*2Q`8QF z2`vAa!NYLMZyKh)92h*D@=2g?GYtRbfxbEDBj2%n@;Cnbz|?2yviP4cSox;GpwWl& z(bySm-$&Ri{U}gG;|I1cXn%mVF@p*${R^P42l}ub#UUFM2Bpm|zn57)@*fH;&WH{C zFRT1nP-z_~AKXaqyMJr{8qhZfeN+mm81bx(hhgyF_X!I4s(BB36@cuXC^3h8ZVHo-Z&>xQd7eL>080Alf0Ye;y{wC0O z8HRrAF!gO|!ziC04zGq||1!`YR{MeeaO(dO^oP^_DsUJ#oboB4 zKOFy+g8p#)#|1A9vxm|CcA!6;`tJh$;ne@>Fw0kgL)qc9e*oxff&b9@G1zw(G}c+` zM+WE{3`4&G^wIktH((C--2q$vIM}qK^@|r0VJrF9?+pK@No%^UzY8#9UW9)`F|eh zn}9y*yD0pv{qdlW=KsO!F-l?glRD5x{%6&HusAIHxuhBM2l5*t77nYNfjCRwNE(OJ zhVoH9lm_1z2NhWQfzpiigVk;<{wENY{%O!h>o@X0s{7y8UrdHE|FH1>R4z--%0D0U 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 kL%?1LZ7Lb)A-~&M_2mJK5DJ_tp*!73nQ@i*|Ga