@todovue/tvdemo v1.3.1
TODOvue Demo
The TvDemo component is a useful tool for viewing and testing different variations of components on different themes.
Table of Contents
Installation
Install with npm or yarn as development dependency
npm install @todovue/tvdemo --save-devyarn add @todovue/tvdemo --devImport
<script setup>
import TvDemo from '@todovue/tvdemo';
</script>Or import it globally in main.js:
import { createApp } from "vue";
import App from "./App.vue";
import TvDemo from '@todovue/tvdemo';
const app = createApp(App);
app.component("TvDemo", TvDemo);
app.mount("#app");Add the following styles to your App.vue file
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}Usage
Important: Documentation File Placement
To properly display the documentation within the demo, the README file must be placed inside the public/ folder of your project. This ensures it is accessible when using TvDemo.
Correct Setup
- Move your
README.mdfile to thepublic/folder:
mv README.md public/Basic use
<script setup>
import { shallowRef } from "vue";
import TvButton from "@todovue/tvbutton";
import { demos } from "@/utils/mocks.js";
const component = shallowRef(TvButton);
</script>
<template>
<tv-demo
:component="component"
:variants="demos"
nameComponent="TvDemo"
npmInstall="@todovue/tvdemo"
sourceLink="https://github.com/TODOvue/todovue-demo"
urlClone="https://github.com/TODOvue/todovue-demo.git"
is-dev-component
version="1.0.0"
readmePath="./README.md"
></tv-demo>
</template>It is important to wrap it in a shallowRef to update the component without throwing an error
const component = shallowRef(TvButton);You can create the variations of the component in the same file or import them from another file utils/mocks.js
It is important that the information is sent by propsData, since currently it cannot be sent by slot
export const demos = [
{
id: 1,
title: "TvButton Default",
propsData: { titletextButton: "Press me!" },
html: `<tv-button>
Press me!
</tv-button>`, // It is necessary to create the html property, this will be displayed in the code
},
{
id: 2,
title: "TvButton Default",
propsData: { titletextButton: "Press me!", isOutline: true },
html: "<tv-button titletextButton='Press me!' isOutline />",
},
];Props
| Name | Type | Default | Description | Required |
|---|---|---|---|---|
| component | Object | Component to display | true | |
| variants | Array | Variations of the component | true | |
| hideBackground | Boolean | false | Hide the background of the component demo | false |
| demoStyle | Object | Style of the component | false | |
| nameComponent | String | null | Name of the component to display in the demo | false |
| npmInstall | String | null | Command to install the component (without npm install) | false |
| sourceLink | String | null | Link to the source code of the component | false |
| urlClone | String | null | Link to clone the repository of the component (without git clone) | false |
| isDevComponent | Boolean | false | Indicates that the component is in development (to include -D) | false |
| version | String | 1.0.0 | Version of the component | false |
| readmePath | String | ./README.md | Path to the README file of the component | false |
Customize
You can customize the component by passing the demoStyle property
const demoStyle = ref({
dark: {
backgroundBody: "#000000",
backgroundContent: "#1f1f1f",
color: "#ffffff",
},
light: {
backgroundBody: "#ffffff",
backgroundContent: "#f5f5f5",
color: "#000000",
},
});Use it in your component:
<script setup>
import { ref } from "vue";
const demoStyle = ref({
dark: {
backgroundBody: "#000000",
backgroundContent: "#1f1f1f",
color: "#ffffff",
},
light: {
backgroundBody: "#ffffff",
backgroundContent: "#f5f5f5",
color: "#000000",
},
});
</script>
<template>
<tv-demo
:component="component"
:variants="demos"
:demoStyle="demoStyle"
nameComponent="TvButton"
npmInstall="@todovue/tvdemo"
sourceLink="https://github.com/TODOvue/todovue-demo"
urlClone="https://github.com/TODOvue/todovue-demo.git"
></tv-demo>
</template>You can send the colors for both dark and light, these values are optional, so you can send only one or not send any, then it will take the default color
Development
git clone git@github.com:TODOvue/todovue-demo.git
yarn install
yarn demo