Skip to content

Files

Latest commit

 

History

History

components

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 

Gun-Vue: Components

@gun-vue components logo

GitHub (@gun-vue/components)npmDocs

Vue 3 Single-File Components (SFC) providing ready-to-use UI powered by UnoCSS, Pug templates, and your feature’s composables.

This code is part of Gun-Vue: The Peer-to-Peer Web App Toolkit.

How to Install

Gun-Vue is distributed as a regular NPM package and may be used in any Vue 3 project.

  1. You may start by creating a new Vue project or skip this step if you already have one.
pnpm init vue@latest
cd <your-project-name>
pnpm install
pnpm run dev
  1. Install the @gun-vue/components package and start the development process
pnpm i @gun-vue/components
pnpm run dev
  1. You can use the components in any place of your app
<script setup>
	import "@gun-vue/components/dist/style.css";
	import { UserHome } from "@gun-vue/components";
</script>

<template>
	<div>
		<UserHome></UserHome>
	</div>
</template>
  1. OR you can install the Gun-Vue plugin and it's styles in your app main.js file and use all the components straight away.
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";

import "./assets/main.css";
import "@gun-vue/components/style.css";
import { GunVuePlugin } from "@gun-vue/components";

const app = createApp(App);
app.use(router);
app.use(GunVuePlugin);
app.mount("#app");

So you can use any of the Gun-Vue components in any SFC in your app.

<template>
	<ChatRoom />
</template>

SSR environment

Most of the Gun-Vue components rely on realtime communication with the GUN database. This means we should prevent them from running during the build process to be executed only on the client. Please use client-only and Suspense with async components to have client-side components in a server side render environment.

<script setup async>
	import "@gun-vue/components/dist/style.css";
	const { UserHome } = await import("@gun-vue/components");
</script>

<template>
	<div>
		<UserHome></UserHome>
	</div>
</template>
<ClientOnly>
  <Suspense>
    <Home></Home>
  </Suspense>
</ClientOnly>