chore: add env

This commit is contained in:
Jesús Pérez Lorenzo 2021-10-14 15:43:47 +01:00
parent 49e9edae14
commit b496d51ece
9 changed files with 714 additions and 0 deletions

172
auto-imports.d.ts vendored Normal file
View File

@ -0,0 +1,172 @@
// Generated by 'unplugin-auto-import'
// We suggest you to commit this file into source control
declare global {
const asyncComputed: typeof import('@vueuse/core')['asyncComputed']
const autoResetRef: typeof import('@vueuse/core')['autoResetRef']
const biSyncRef: typeof import('@vueuse/core')['biSyncRef']
const computed: typeof import('vue')['computed']
const computedInject: typeof import('@vueuse/core')['computedInject']
const controlledComputed: typeof import('@vueuse/core')['controlledComputed']
const controlledRef: typeof import('@vueuse/core')['controlledRef']
const createApp: typeof import('vue')['createApp']
const createEventHook: typeof import('@vueuse/core')['createEventHook']
const createGlobalState: typeof import('@vueuse/core')['createGlobalState']
const createSharedComposable: typeof import('@vueuse/core')['createSharedComposable']
const customRef: typeof import('vue')['customRef']
const debouncedWatch: typeof import('@vueuse/core')['debouncedWatch']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const eagerComputed: typeof import('@vueuse/core')['eagerComputed']
const extendRef: typeof import('@vueuse/core')['extendRef']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const h: typeof import('vue')['h']
const ignorableWatch: typeof import('@vueuse/core')['ignorableWatch']
const inject: typeof import('vue')['inject']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const makeDestructurable: typeof import('@vueuse/core')['makeDestructurable']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onClickOutside: typeof import('@vueuse/core')['onClickOutside']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onKeyStroke: typeof import('@vueuse/core')['onKeyStroke']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onStartTyping: typeof import('@vueuse/core')['onStartTyping']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const pausableWatch: typeof import('@vueuse/core')['pausableWatch']
const provide: typeof import('vue')['provide']
const reactify: typeof import('@vueuse/core')['reactify']
const reactifyObject: typeof import('@vueuse/core')['reactifyObject']
const reactive: typeof import('vue')['reactive']
const reactivePick: typeof import('@vueuse/core')['reactivePick']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const syncRef: typeof import('@vueuse/core')['syncRef']
const templateRef: typeof import('@vueuse/core')['templateRef']
const throttledWatch: typeof import('@vueuse/core')['throttledWatch']
const toRaw: typeof import('vue')['toRaw']
const toReactive: typeof import('@vueuse/core')['toReactive']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const triggerRef: typeof import('vue')['triggerRef']
const tryOnBeforeUnmount: typeof import('@vueuse/core')['tryOnBeforeUnmount']
const tryOnMounted: typeof import('@vueuse/core')['tryOnMounted']
const tryOnScopeDispose: typeof import('@vueuse/core')['tryOnScopeDispose']
const tryOnUnmounted: typeof import('@vueuse/core')['tryOnUnmounted']
const unref: typeof import('vue')['unref']
const unrefElement: typeof import('@vueuse/core')['unrefElement']
const until: typeof import('@vueuse/core')['until']
const useActiveElement: typeof import('@vueuse/core')['useActiveElement']
const useAsyncState: typeof import('@vueuse/core')['useAsyncState']
const useAttrs: typeof import('vue')['useAttrs']
const useBattery: typeof import('@vueuse/core')['useBattery']
const useBreakpoints: typeof import('@vueuse/core')['useBreakpoints']
const useBrowserLocation: typeof import('@vueuse/core')['useBrowserLocation']
const useClipboard: typeof import('@vueuse/core')['useClipboard']
const useCounter: typeof import('@vueuse/core')['useCounter']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVar: typeof import('@vueuse/core')['useCssVar']
const useDark: typeof import('@vueuse/core')['useDark']
const useDebounce: typeof import('@vueuse/core')['useDebounce']
const useDebouncedRefHistory: typeof import('@vueuse/core')['useDebouncedRefHistory']
const useDebounceFn: typeof import('@vueuse/core')['useDebounceFn']
const useDeviceMotion: typeof import('@vueuse/core')['useDeviceMotion']
const useDeviceOrientation: typeof import('@vueuse/core')['useDeviceOrientation']
const useDevicePixelRatio: typeof import('@vueuse/core')['useDevicePixelRatio']
const useDevicesList: typeof import('@vueuse/core')['useDevicesList']
const useDocumentVisibility: typeof import('@vueuse/core')['useDocumentVisibility']
const useDraggable: typeof import('@vueuse/core')['useDraggable']
const useElementBounding: typeof import('@vueuse/core')['useElementBounding']
const useElementSize: typeof import('@vueuse/core')['useElementSize']
const useElementVisibility: typeof import('@vueuse/core')['useElementVisibility']
const useEventBus: typeof import('@vueuse/core')['useEventBus']
const useEventListener: typeof import('@vueuse/core')['useEventListener']
const useEventSource: typeof import('@vueuse/core')['useEventSource']
const useFavicon: typeof import('@vueuse/core')['useFavicon']
const useFetch: typeof import('@vueuse/core')['useFetch']
const useFullscreen: typeof import('@vueuse/core')['useFullscreen']
const useGeolocation: typeof import('@vueuse/core')['useGeolocation']
const useHead: typeof import('@vueuse/head')['useHead']
const useI18n: typeof import('vue-i18n')['useI18n']
const useIdle: typeof import('@vueuse/core')['useIdle']
const useIntersectionObserver: typeof import('@vueuse/core')['useIntersectionObserver']
const useInterval: typeof import('@vueuse/core')['useInterval']
const useIntervalFn: typeof import('@vueuse/core')['useIntervalFn']
const useKeyModifier: typeof import('@vueuse/core')['useKeyModifier']
const useLastChanged: typeof import('@vueuse/core')['useLastChanged']
const useLocalStorage: typeof import('@vueuse/core')['useLocalStorage']
const useMagicKeys: typeof import('@vueuse/core')['useMagicKeys']
const useManualRefHistory: typeof import('@vueuse/core')['useManualRefHistory']
const useMediaControls: typeof import('@vueuse/core')['useMediaControls']
const useMediaQuery: typeof import('@vueuse/core')['useMediaQuery']
const useMouse: typeof import('@vueuse/core')['useMouse']
const useMouseInElement: typeof import('@vueuse/core')['useMouseInElement']
const useMousePressed: typeof import('@vueuse/core')['useMousePressed']
const useMutationObserver: typeof import('@vueuse/core')['useMutationObserver']
const useNetwork: typeof import('@vueuse/core')['useNetwork']
const useNow: typeof import('@vueuse/core')['useNow']
const useOnline: typeof import('@vueuse/core')['useOnline']
const usePageLeave: typeof import('@vueuse/core')['usePageLeave']
const useParallax: typeof import('@vueuse/core')['useParallax']
const usePermission: typeof import('@vueuse/core')['usePermission']
const usePointer: typeof import('@vueuse/core')['usePointer']
const usePointerSwipe: typeof import('@vueuse/core')['usePointerSwipe']
const usePreferredColorScheme: typeof import('@vueuse/core')['usePreferredColorScheme']
const usePreferredDark: typeof import('@vueuse/core')['usePreferredDark']
const usePreferredLanguages: typeof import('@vueuse/core')['usePreferredLanguages']
const useRafFn: typeof import('@vueuse/core')['useRafFn']
const useRefHistory: typeof import('@vueuse/core')['useRefHistory']
const useResizeObserver: typeof import('@vueuse/core')['useResizeObserver']
const useRoute: typeof import('vue-router')['useRoute']
const useRouter: typeof import('vue-router')['useRouter']
const useScriptTag: typeof import('@vueuse/core')['useScriptTag']
const useScroll: typeof import('@vueuse/core')['useScroll']
const useSessionStorage: typeof import('@vueuse/core')['useSessionStorage']
const useShare: typeof import('@vueuse/core')['useShare']
const useSlots: typeof import('vue')['useSlots']
const useSpeechRecognition: typeof import('@vueuse/core')['useSpeechRecognition']
const useStorage: typeof import('@vueuse/core')['useStorage']
const useSwipe: typeof import('@vueuse/core')['useSwipe']
const useTemplateRefsList: typeof import('@vueuse/core')['useTemplateRefsList']
const useThrottle: typeof import('@vueuse/core')['useThrottle']
const useThrottledRefHistory: typeof import('@vueuse/core')['useThrottledRefHistory']
const useThrottleFn: typeof import('@vueuse/core')['useThrottleFn']
const useTimeAgo: typeof import('@vueuse/core')['useTimeAgo']
const useTimeout: typeof import('@vueuse/core')['useTimeout']
const useTimeoutFn: typeof import('@vueuse/core')['useTimeoutFn']
const useTimestamp: typeof import('@vueuse/core')['useTimestamp']
const useTitle: typeof import('@vueuse/core')['useTitle']
const useToggle: typeof import('@vueuse/core')['useToggle']
const useTransition: typeof import('@vueuse/core')['useTransition']
const useUrlSearchParams: typeof import('@vueuse/core')['useUrlSearchParams']
const useUserMedia: typeof import('@vueuse/core')['useUserMedia']
const useVirtualList: typeof import('@vueuse/core')['useVirtualList']
const useVModel: typeof import('@vueuse/core')['useVModel']
const useVModels: typeof import('@vueuse/core')['useVModels']
const useWakeLock: typeof import('@vueuse/core')['useWakeLock']
const useWebSocket: typeof import('@vueuse/core')['useWebSocket']
const useWebWorker: typeof import('@vueuse/core')['useWebWorker']
const useWebWorkerFn: typeof import('@vueuse/core')['useWebWorkerFn']
const useWindowFocus: typeof import('@vueuse/core')['useWindowFocus']
const useWindowScroll: typeof import('@vueuse/core')['useWindowScroll']
const useWindowSize: typeof import('@vueuse/core')['useWindowSize']
const watch: typeof import('vue')['watch']
const watchAtMost: typeof import('@vueuse/core')['watchAtMost']
const watchEffect: typeof import('vue')['watchEffect']
const watchOnce: typeof import('@vueuse/core')['watchOnce']
const watchWithFilter: typeof import('@vueuse/core')['watchWithFilter']
const whenever: typeof import('@vueuse/core')['whenever']
}
export {}

34
components.d.ts vendored Normal file
View File

@ -0,0 +1,34 @@
// 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 {
AccordionView: typeof import('./src/components/AccordionView.vue')['default']
AppImg: typeof import('./src/components/icons/AppImg.vue')['default']
AppLogoText: typeof import('./src/components/icons/AppLogoText.vue')['default']
AppLogoV: typeof import('./src/components/icons/AppLogoV.vue')['default']
CarbonCampsite: typeof import('~icons/carbon/campsite')['default']
CarbonCheck: typeof import('~icons/carbon/check')['default']
CarbonCheckmark: typeof import('~icons/carbon/checkmark')['default']
CarbonLanguage: typeof import('~icons/carbon/language')['default']
CarbonLogin: typeof import('~icons/carbon/login')['default']
CarbonLogoGithub: typeof import('~icons/carbon/logo-github')['default']
CarbonLogout: typeof import('~icons/carbon/logout')['default']
CarbonMoon: typeof import('~icons/carbon/moon')['default']
CarbonPedestrian: typeof import('~icons/carbon/pedestrian')['default']
CarbonScript: typeof import('~icons/carbon/script')['default']
CarbonSearch: typeof import('~icons/carbon/search')['default']
CarbonSun: typeof import('~icons/carbon/sun')['default']
CarbonWarning: typeof import('~icons/carbon/warning')['default']
CloudGroups: typeof import('./src/components/CloudGroups.vue')['default']
CloudServices: typeof import('./src/components/CloudServices.vue')['default']
CloudSrvc: typeof import('./src/components/CloudSrvc.vue')['default']
Footer: typeof import('./src/components/Footer.vue')['default']
MenuLocales: typeof import('./src/components/menus/MenuLocales.vue')['default']
NavMenu: typeof import('./src/components/NavMenu.vue')['default']
ProfileView: typeof import('./src/components/ProfileView.vue')['default']
}
}
export { }

26
index.html Normal file
View File

@ -0,0 +1,26 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<title>Vitesse Lite</title>
<meta name="description" content="Opinionated Vite Starter Template">
</head>
<body>
<div id="app"></div>
<script>
(function() {
// window.ROOT_LOCATION='https://10.11.5.1'
// window.ROOT_LOCATION='https://status.librecloud.online'
// window.ROOT_LOCATION='https://localhost:8302'
window.ROOT_LOCATION='https://localhost:8302'
const prefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches
const setting = localStorage.getItem('color-schema') || 'auto'
if (setting === 'dark' || (prefersDark && setting !== 'light'))
document.documentElement.classList.toggle('dark', true)
})()
</script>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

7
locales/README.md Normal file
View File

@ -0,0 +1,7 @@
## i18n
This directory is to serve your locale translation files. YAML under this folder would be loaded automatically and register with their filenames as locale code.
Check out [`vue-i18n`](https://github.com/intlify/vue-i18n-next) for more details.
If you are using VS Code, [`i18n Ally`](https://github.com/lokalise/i18n-ally) is recommended to make the i18n experience better.

132
locales/en.yml Normal file
View File

@ -0,0 +1,132 @@
All: All
auth:
invalidcredentials: Invalid credentials
loginForm: ''
newaccount: new account
password: password
register: Register
signin: Sign in
subHeading: Login info
subTitle: ''
wellcome: Wellcome !
bc:
home: librecloud
topographic_anatomy: klouds
bm:
topographic-anatomy: Topographic Anatomy
button:
about: About
back: Back
cancel: Cancel
close-panel: Close panel
delete: Delete
go: Go
home: Home
new: Nuevo
reset: Reset
save: Save
toggle_dark: Toggle dark mode
toggle_langs: Change language
login: Login
logout: Logout
connection:
error: Error conexión
dashboard: Dashboard
en: English
entry:
Apps: Apps
Code: Code
DB: DB
Data: Data
DataCode: Data / Code
Document: Document
Documents: Documents
Macro: Macro
Profiles: Profiles/roles
Schema: Schema
Services: Services
Shortcut: Shortcut
Template: Template
Trans: Translations
es: Español
form:
delete_done: Delete done
delete_error: Delete Error
save_done: Data saved
save_error: Data save Error
intro:
desc: Opinionated Vite Starter Template
dynamic-route: Demo of dynamic route
hi: Hi, {name}!
whats-your-name: What's your name?
login:
end_session: End session
form: Credentials
invalidcredentials: Incorrect data
newuser: New user
nodata: No data
password: Password
register: Register
reset: Reset
see_you_soon: See You soon !
signin: Signin
subHeading: Access
subtitle: LibreCloud online
user_email: User / email
wellcome: Wellcome
menu:
copy: Copy
data-grid: Data Grid
edit: Edit
edit-items: Edit items
home: Home
login: Init session
logout: Close session
new: New
open-recent: Open recent
paste: Paste
save: Save
settings: Configuration
sign-in: Signin
sign-out: Signout
your-profile: Your profile
message:
loadding: Loading
not-found: Not found
notes: Notes
notifications:
content: content
notifications: Notifications
search:
search: Search
settings:
above-noedit: ALL above options in "off" configure mode for
aside: Aside
col: Col
columns-settings: Columns
filter: Filter
grid: Grid
grid-options: Grid options
hidden: Hide
id: Id
list: List
main: Main
no-edition: no edition
pagination: Pagination
panels: Panels
pos: Pos
position: position
select: Select
select-config: Select configuration
select-grid-type: Select grid type
setting-id: Identificator
settings: Configuration
slide: Modal
sort: Sort
table: Table
undefined: Undefined
srvc:
mailserver::smtp::imap: mail imap
mailserver::smtp::pop: mail pop
mailserver::smtp::tls: mail tls
mailserver::smtp: mail smtp

135
locales/es.yml Normal file
View File

@ -0,0 +1,135 @@
All: All
auth:
invalidcredentials: Invalid credentials
loginForm: ''
newaccount: new account
password: password
register: Register
signin: Sign in
subHeading: Login info
subTitle: ''
wellcome: Wellcome !
bc:
home: librecloud
topographic_anatomy: klouds
bm:
topographic-anatomy: Anatomía topográfica
button:
about: Acerca de
back: Atrás
cancel: Cancelar
close-panel: Cerarr panel
delete: Borrar
go: Ir
home: Inicio
new: Nuevo
reset: Reset
save: Guardar
toggle_dark: Alternar modo oscuro
toggle_langs: Cambiar idiomas
login: Login
logout: Desconectar
connection:
error: Error conexión
dashboard: Panel de control
en: English
entry:
Apps: Apps
Code: Code
DB: DB
Data: Data
DataCode: Data / Code
Document: Document
Documents: Documents
Macro: Macro
Profiles: Profiles/roles
Schema: Schema
Services: Services
Shortcut: Shortcut
Template: Template
Trans: Translations
es: Español
form:
delete_done: Borrado realizado
delete_error: Error al borrar datos
save_done: Datos guardados
save_error: Error al guardar datos
intro:
desc: Plantilla de Inicio de Vite Dogmática
dynamic-route: Demo de ruta dinámica
hi: ¡Hola, {name}!
whats-your-name: ¿Cómo te llamas?
login:
end_session: Sesión finalizada
form: Credenciales
invalidcredentials: Datos incorrectos
newuser: Nuevo usuario
nodata: No hay datos
password: Password
register: Registrarse
reset: Reset
see_you_soon: ¡ Nos vemos pronto !
signin: Iniciar sesión
subHeading: Acceso
subtitle: LibreCloud online
user_email: Usuario / email
wellcome: Bienvenido/a
menu:
copy: Copiar
data-grid: Cuadrícula de datos
edit: Editar
edit-items: Editar items
home: Inicio
login: Inicio sesión
logout: Cerrar sesión
new: Nuevo
open-recent: Abrir reciente
paste: Pegar
save: Guardar
settings: Configuración
sign-in: Registrarse
sign-out: Desconectar
your-profile: Tu perfil
message:
loadding: Cargando
not-found: No se ha encontrado
notes: Notas
notifications:
content: contenido
notifications: Notificiaciones
search:
search: Buscar
settings:
above-noedit: TODAS las opciones de arriba en "off" configuran el modo
aside: Al lado
col: Col
columns-settings: Columnas
filter: Filtrar
grid: Cuadrícula
grid-options: Opciones cuadrícula
hidden: Ocultar
id: Id
list: Lista
main: Principal
no-edition: no edición
pagination: Paginación
panels: Paneles
pos: Pos
position: posición
select: Seleccionar
select-config: Seleccionar configuración
select-grid-type: Seleccionar tipo cuadrícula
setting-id: Identificador
settings: Configuración
slide: Modal
sort: Ordenar
table: Tabla
undefined: No definido
graphsettings:
clouds: Clouds
groups: Grupos
srvc:
mailserver::smtp::imap: correo imap
mailserver::smtp::pop: correo pop
mailserver::smtp::tls: correo tls
mailserver::smtp: correo smtp

47
package.json Normal file
View File

@ -0,0 +1,47 @@
{
"private": true,
"scripts": {
"dev": "vite --port 3333 --open",
"build": "cross-env NODE_ENV=production vite build",
"preview": "vite preview"
},
"dependencies": {
"@intlify/vite-plugin-vue-i18n": "^2.4.0",
"@vueuse/core": "^6.5.3",
"@vueuse/head": "^0.6.0",
"a17t": "^0.5.1",
"nprogress": "^0.2.0",
"toastify-js": "^1.11.2",
"vite-imagetools": "^3.8.0",
"vue": "^3.2.20",
"vue-demi": "^0.11.4",
"vue-i18n": "^9.1.9",
"vue-router": "^4.0.11",
"vuex": "^4.0.2"
},
"devDependencies": {
"@antfu/eslint-config": "^0.9.0",
"@iconify-json/carbon": "^1.0.5",
"@types/node": "^16.10.3",
"@vitejs/plugin-vue": "^1.9.3",
"cross-env": "^7.0.3",
"eslint": "^7.32.0",
"pnpm": "^6.17.0",
"typescript": "^4.4.3",
"unplugin-auto-import": "^0.4.12",
"unplugin-icons": "^0.12.13",
"unplugin-vue-components": "^0.15.6",
"vite": "^2.6.7",
"vite-plugin-md": "^0.11.1",
"vite-plugin-pages": "^0.18.1",
"vite-plugin-vue-layouts": "^0.5.0",
"vite-plugin-windicss": "^1.4.10"
},
"eslintConfig": {
"extends": "@antfu/eslint-config",
"rules": {
"no-unused-vars": "off",
"@typescript-eslint/no-unused-vars": "off"
}
}
}

90
vite.config.ts Normal file
View File

@ -0,0 +1,90 @@
import path from 'path'
import { defineConfig } from 'vite'
import Vue from '@vitejs/plugin-vue'
import Pages from 'vite-plugin-pages'
import { imagetools } from 'vite-imagetools'
import Layouts from 'vite-plugin-vue-layouts';
import Icons from 'unplugin-icons/vite'
import IconsResolver from 'unplugin-icons/resolver'
import Components from 'unplugin-vue-components/vite'
import WindiCSS from 'vite-plugin-windicss'
import AutoImport from 'unplugin-auto-import/vite'
import VueI18n from '@intlify/vite-plugin-vue-i18n'
export default defineConfig({
resolve: {
alias: {
'~/': `${path.resolve(__dirname, 'src')}/`,
'@/': `${path.resolve(__dirname, 'src/components')}/`,
},
},
plugins: [
Vue(),
// https://github.com/hannoeru/vite-plugin-pages
Pages(),
imagetools(),
// https://github.com/JohnCampionJr/vite-plugin-vue-layouts
Layouts({
layoutsDir: 'src/layouts',
defaultLayout: 'Default'
}),
// https://github.com/antfu/unplugin-auto-import
AutoImport({
imports: [
'vue',
'vue-router',
'vue-i18n',
'@vueuse/head',
'@vueuse/core',
],
dts: true,
}),
// https://github.com/antfu/vite-plugin-components
Components({
resolvers: [
// auto import icons
// https://github.com/antfu/vite-plugin-icons
IconsResolver({
componentPrefix: '',
enabledCollections: ['carbon'],
}),
],
dts: true,
}),
// https://github.com/antfu/vite-plugin-icons
Icons({
autoInstall: true,
}),
// https://github.com/antfu/vite-plugin-windicss
WindiCSS({
}),
VueI18n({
runtimeOnly: true,
compositionOnly: true,
include: [path.resolve(__dirname, 'locales/**')],
}),
],
server: {
fs: {
strict: true,
},
},
optimizeDeps: {
include: [
'vue',
'vue-router',
'@vueuse/core',
'@vueuse/head',
],
exclude: [
'vue-demi',
],
},
})

71
windi.config.ts Normal file
View File

@ -0,0 +1,71 @@
import { defineConfig } from 'windicss/helpers'
import colors from 'windicss/colors'
import typography from 'windicss/plugin/typography'
export default defineConfig({
darkMode: 'class',
// https://windicss.org/posts/v30.html#attributify-mode
attributify: true,
plugins: [
typography(),
],
theme: {
extend: {
typography: {
DEFAULT: {
css: {
maxWidth: '65ch',
color: 'inherit',
a: {
'color': 'inherit',
'opacity': 0.75,
'fontWeight': '500',
'textDecoration': 'underline',
'&:hover': {
opacity: 1,
color: colors.teal[600],
},
},
b: { color: 'inherit' },
strong: { color: 'inherit' },
em: { color: 'inherit' },
h1: { color: 'inherit' },
h2: { color: 'inherit' },
h3: { color: 'inherit' },
h4: { color: 'inherit' },
code: { color: 'inherit' },
},
},
},
},
},
shortcuts: {
'cont-box': {
'border-color': 'rgb(128 128 128 / 41%)',
'border-radius': '5px',
'background-color': 'rgb(55 65 81 / 12%)',
// 'background-color': 'rgb(8 8 8 / 25%)',
'@apply': 'border border-opacity-10 p-2',
},
'dark cont-box': { 'background-color': 'rgb(55 65 81 / 38%)' },
'box': {
'border-color': 'lightslategray',
'@apply':
'py-5 px-5 max-w-sm mx-auto border border-opacity-10 '
+ 'bg-white dark:bg-gray-800 dark:bg-opacity-90 '
+ 'rounded-xl shadow-m space-y-2 '
+ 'sm:py-6 sm:items-center sm:space-y-0 sm:space-x-6 ',
},
'btn': {
'@apply':
'px-4 py-1 text-sm text-purple-600 font-semibold '
+ 'rounded-full border border-purple-200 dark:border-purple-800 '
+ 'hover:text-white hover:bg-purple-600 hover:border-transparent '
+ 'focus:outline-none focus:ring-2 focus:ring-purple-600 focus:ring-offset-2 ',
},
'cloud': {
'background-image': 'url("data:image/svg+xml;utf8, <svg id=\'bd4c6c15-bf8d-47da-8605-04f25f1e9487\' data-name=\'Capa 1\' xmlns=\'http://www.w3.org/2000/svg\' width=\'76.15\' height=\'51.53\' viewBox=\'0 0 76.15 51.53\'><title>cloud_blue</title><path d=\'M171.78,71.73h-45.4a14.26,14.26,0,0,1-2-28.38.66.66,0,0,0,.56-.71,14.31,14.31,0,0,1-.07-1.51,18.32,18.32,0,0,1,36.43-2.73A.65.65,0,0,0,162,39h.33a14.31,14.31,0,0,1,14.2,13.11.63.63,0,0,0,.24.43,3.43,3.43,0,0,1,.56.07,4.4,4.4,0,0,1,1.1-1c-.21-.06-.43-.11-.65-.15a15.63,15.63,0,0,0-15.23-13.8,19.61,19.61,0,0,0-38.92,3.48q0,.54,0,1A15.56,15.56,0,0,0,126.38,73h45.4a.65.65,0,0,0,0-1.3Z\' transform=\'translate(-110.83 -21.5)\' style=\'fill:rgb(0,158,219)\'/><path d=\'M130.56,39.18a.66.66,0,0,1-.65-.65,12.07,12.07,0,0,1,12.05-12,.65.65,0,1,1,0,1.3,10.76,10.76,0,0,0-10.75,10.75A.66.66,0,0,1,130.56,39.18Z\' transform=\'translate(-110.83 -21.5)\' style=\'fill:rgb(0,158,219)\'/><path d=\'M177.75,51.32c0-.15-.05-.29-.08-.45a5.42,5.42,0,0,1-1.22.68c0,.12,0,.24.05.36a.64.64,0,0,0,.56.57,9.67,9.67,0,0,1-1.44,19.27H162.55a5.24,5.24,0,0,1-.1,1.25h13.17a10.91,10.91,0,0,0,2.13-21.68Z\' transform=\'translate(-110.83 -21.5)\' style=\'fill:rgb(0,158,219)\'/></svg>")',
},
},
})