first commit

This commit is contained in:
Julien Calixte
2022-02-26 13:31:39 +01:00
commit d469314fc0
22 changed files with 3332 additions and 0 deletions

29
.gitignore vendored Normal file
View File

@@ -0,0 +1,29 @@
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
pnpm-debug.log*
lerna-debug.log*
node_modules
.DS_Store
dist
dist-ssr
*.local
/cypress/videos/
/cypress/screenshots/
# Editor directories and files
.vscode
!.vscode/extensions.json
.idea
*.suo
*.ntvs*
*.njsproj
*.sln
*.sw?
.iles-ssg-temp/

1
.npmrc Normal file
View File

@@ -0,0 +1 @@
shamefully-hoist=true

50
README.md Normal file
View File

@@ -0,0 +1,50 @@
# blog
[îles]: https://github.com/ElMassimo/iles
[configuration reference]: https://iles-docs.netlify.app/config
This template should help get you started developing with [îles].
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=johnsoncodehk.volar) (and disable Vetur).
## Type Support for `.vue` Imports in TS
Since TypeScript cannot handle type information for `.vue` imports, they are shimmed to be a generic `PageComponent` type by default. In most cases this is fine if you don't really care about component prop types outside of templates.
However, if you wish to get actual prop types in `.vue` imports (for example to get props validation when using manual `h(...)` calls), you can run `Volar: Switch TS Plugin on/off` from VSCode command palette.
## Customize configuration
See îles [Configuration Reference].
## Project Setup
```sh
npm install
```
### Compile and Hot-Reload for Development
```sh
npm run dev
```
### Type-Check, Compile and Minify for Production
```sh
npm run build
```
### Run Unit Tests with [Cypress Component Testing](https://docs.cypress.io/guides/component-testing/introduction)
```sh
npm run test:unit # or `npm run test:unit:ci` for headless testing
```
### Run End-to-End Tests with [Cypress](https://www.cypress.io/)
```sh
npm run test:e2e # or `npm run test:e2e:ci` for headless testing
```

20
components.d.ts vendored Normal file
View File

@@ -0,0 +1,20 @@
// generated by unplugin-vue-components
// We suggest you to commit this file into source control
// Read more: https://github.com/vuejs/vue-next/pull/3399
declare module 'vue' {
export interface GlobalComponents {
CommunityIcon: typeof import('./src/components/icons/CommunityIcon.vue')['default']
DocumentationIcon: typeof import('./src/components/icons/DocumentationIcon.vue')['default']
EcosystemIcon: typeof import('./src/components/icons/EcosystemIcon.vue')['default']
FrameworkLink: typeof import('./src/components/FrameworkLink.vue')['default']
HelloWorld: typeof import('./src/components/HelloWorld.vue')['default']
Island: typeof import('./node_modules/.pnpm/iles@0.7.32/node_modules/iles/dist/client/app/components/Island.vue')['default']
SupportIcon: typeof import('./src/components/icons/SupportIcon.vue')['default']
ToolingIcon: typeof import('./src/components/icons/ToolingIcon.vue')['default']
Welcome: typeof import('./src/components/Welcome.vue')['default']
WelcomeItem: typeof import('./src/components/WelcomeItem.vue')['default']
}
}
export { }

12
composables.d.ts vendored Normal file
View File

@@ -0,0 +1,12 @@
// generated by iles
// We suggest you to commit this file into source control
declare global {
const definePageComponent: typeof import('iles')['definePageComponent']
const useDocuments: typeof import('iles')['useDocuments']
const useHead: typeof import('iles')['useHead']
const usePage: typeof import('iles')['usePage']
const useRoute: typeof import('iles')['useRoute']
}
export { }

2
env.d.ts vendored Normal file
View File

@@ -0,0 +1,2 @@
/// <reference types="vite/client" />
/// <reference types="iles" />

3
iles.config.ts Normal file
View File

@@ -0,0 +1,3 @@
import { defineConfig } from 'iles'
export default defineConfig({})

20
package.json Normal file
View File

@@ -0,0 +1,20 @@
{
"name": "iles-app",
"version": "0.0.0",
"scripts": {
"dev": "iles dev --open",
"build": "iles build",
"preview": "iles preview --open --port 5050",
"test": "iles test",
"typecheck": "vue-tsc --noEmit"
},
"engines": {
"node": "^14.18 || >= 16.0.0"
},
"devDependencies": {
"iles": "^0.7.19",
"typescript": "^4.5",
"vitest": "*",
"vue-tsc": "^0.29"
}
}

2967
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

BIN
public/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

3
src/app.ts Normal file
View File

@@ -0,0 +1,3 @@
import { defineApp } from 'iles'
export default defineApp({})

74
src/assets/base.css Normal file
View File

@@ -0,0 +1,74 @@
/* color palette from <https://github.com/vuejs/theme> */
:root {
--vt-c-white: #ffffff;
--vt-c-white-soft: #f8f8f8;
--vt-c-white-mute: #f2f2f2;
--vt-c-black: #181818;
--vt-c-black-soft: #222222;
--vt-c-black-mute: #282828;
--vt-c-indigo: #2c3e50;
--vt-c-divider-light-1: rgba(60, 60, 60, 0.29);
--vt-c-divider-light-2: rgba(60, 60, 60, 0.12);
--vt-c-divider-dark-1: rgba(84, 84, 84, 0.65);
--vt-c-divider-dark-2: rgba(84, 84, 84, 0.48);
--vt-c-text-light-1: var(--vt-c-indigo);
--vt-c-text-light-2: rgba(60, 60, 60, 0.66);
--vt-c-text-dark-1: var(--vt-c-white);
--vt-c-text-dark-2: rgba(235, 235, 235, 0.64);
}
/* semantic color variables for this project */
:root {
--color-background: var(--vt-c-white);
--color-background-soft: var(--vt-c-white-soft);
--color-background-mute: var(--vt-c-white-mute);
--color-border: var(--vt-c-divider-light-2);
--color-border-hover: var(--vt-c-divider-light-1);
--color-heading: var(--vt-c-text-light-1);
--color-text: var(--vt-c-text-light-1);
--section-gap: 160px;
}
@media (prefers-color-scheme: dark) {
:root {
--color-background: var(--vt-c-black);
--color-background-soft: var(--vt-c-black-soft);
--color-background-mute: var(--vt-c-black-mute);
--color-border: var(--vt-c-divider-dark-2);
--color-border-hover: var(--vt-c-divider-dark-1);
--color-heading: var(--vt-c-text-dark-1);
--color-text: var(--vt-c-text-dark-2);
}
}
*,
*::before,
*::after {
box-sizing: border-box;
margin: 0;
position: relative;
font-weight: normal;
}
body {
min-height: 100vh;
color: var(--color-text);
background: var(--color-background);
transition: color 0.5s, background-color 0.5s;
line-height: 1.6;
font-family: Inter, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu,
Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
font-size: 15px;
text-rendering: optimizeLegibility;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}

1
src/assets/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 5.1 KiB

View File

@@ -0,0 +1,6 @@
<template>
<a target="_blank" href="https://v3.vuejs.org/">
Vue 3
<slot />
</a>
</template>

View File

@@ -0,0 +1,42 @@
<script setup lang="ts">
defineProps<{
msg: String
}>()
</script>
<template>
<div class="greetings">
<h1 class="green">{{ msg }}</h1>
<h3>
Youve successfully created a project with
<a target="_blank" href="https://iles-docs.netlify.app/">îles</a> +
<a target="_blank" href="https://vitejs.dev/">Vite</a> + <FrameworkLink client:none />. What's
next?
</h3>
</div>
</template>
<style scoped>
h1 {
font-weight: 500;
font-size: 2.6rem;
top: -10px;
}
h3 {
font-size: 1.2rem;
}
.greetings h1,
.greetings h3 {
text-align: center;
}
@media (min-width: 1024px) {
.greetings h1,
.greetings h3 {
display: block;
text-align: left;
}
}
</style>

View File

@@ -0,0 +1 @@
<template>Home</template>

41
src/layouts/default.vue Normal file
View File

@@ -0,0 +1,41 @@
<template>
<div>
<header>
<div class="wrapper">
<div id="nav">
<router-link to="/">Home</router-link>
<router-link to="/about">About</router-link>
</div>
</div>
</header>
<slot />
</div>
</template>
<style>
@import "~/assets/base.css";
.logo {
display: block;
margin: 0 auto 2rem;
}
#nav a.router-link-exact-active {
color: var(--color-text);
}
#nav a.router-link-exact-active:hover {
background-color: transparent;
}
#nav a {
display: inline-block;
padding: 0 1rem;
border-left: 1px solid var(--color-border);
}
#nav a:first-of-type {
border: 0;
}
</style>

19
src/pages/about.vue Normal file
View File

@@ -0,0 +1,19 @@
<page>
title: About
</page>
<template>
<div class="about">
<h1>This is an about page</h1>
</div>
</template>
<style>
@media (min-width: 1024px) {
.about {
min-height: 100vh;
display: flex;
align-items: center;
}
}
</style>

7
src/pages/index.mdx Normal file
View File

@@ -0,0 +1,7 @@
---
title: Julien Calixte
---
<main>
<Welcome />
</main>

4
src/site.ts Normal file
View File

@@ -0,0 +1,4 @@
export default {
title: 'îles',
description: 'Islands of interactivity with Vue in Vite.js'
}

9
tests/example.spec.ts Normal file
View File

@@ -0,0 +1,9 @@
import { test, describe, expect } from 'vitest'
import Index from '../src/pages/index.mdx'
describe('example test', () => {
test('stub default layout', () => {
expect(Index.title).toEqual('You did it!')
})
})

21
tsconfig.json Normal file
View File

@@ -0,0 +1,21 @@
{
"compilerOptions": {
"baseUrl": "./",
"target": "esnext",
"useDefineForClassFields": true,
"module": "esnext",
"moduleResolution": "node",
"isolatedModules": true,
"strict": true,
"jsx": "preserve",
"sourceMap": true,
"resolveJsonModule": true,
"esModuleInterop": true,
"paths": {
"@/*": ["src/*"],
"~/*": ["src/*"]
},
"lib": ["esnext", "dom", "dom.iterable", "scripthost"],
"skipLibCheck": true
}
}