11<script setup lang="ts">
22import { reactive } from ' vue'
3- import { useDark , useToggle } from ' @vueuse/core'
3+ import { useDark , useToggle , useStorage } from ' @vueuse/core'
44import { nanoid } from ' nanoid'
55import Demo from ' ./components/Demo.vue'
66import type { IllestWaveformProps } from ' ../../src/types/waveform'
@@ -52,6 +52,22 @@ const items = reactive<Props[]>([
5252 url: ` ${import .meta .env .BASE_URL }audios/loop-9.mp3 ` ,
5353 },
5454])
55+
56+ const skeleton = useStorage (' skeleton' , true )
57+ const interact = useStorage (' interact' , true )
58+ const lazy = useStorage (' lazy' , true )
59+
60+ const toggleInteract = () => {
61+ interact .value = ! interact .value
62+ }
63+
64+ const toggleSkeleton = () => {
65+ skeleton .value = ! skeleton .value
66+ }
67+
68+ const toggleLazy = () => {
69+ lazy .value = ! lazy .value
70+ }
5571 </script >
5672
5773<template >
@@ -64,24 +80,50 @@ const items = reactive<Props[]>([
6480 </span >
6581 </h1 >
6682
67- <div class =" mb-6 " >
83+ <div class =" mb-8 flex " >
6884 <button class =" btn" @click =" toggleDark()" >
69- <SunIcon v-show =" !isDark" />
70- <MoonIcon v-show =" isDark" />
85+ <SunIcon v-show =" !isDark" class = " w-5 " />
86+ <MoonIcon v-show =" isDark" class = " w-5 " />
7187 <div >{{ isDark ? 'dark' : 'light' }}</div >
7288 </button >
89+
90+ <button class =" btn" @click =" toggleInteract()" >
91+ <span :class =" { 'bg-green-500': interact }" />
92+ <div >interact</div >
93+ </button >
94+
95+ <button class =" btn" @click =" toggleSkeleton()" >
96+ <span :class =" { 'bg-green-500': skeleton }" />
97+ <div >skeleton</div >
98+ </button >
99+
100+ <button class =" btn" @click =" toggleLazy()" >
101+ <span :class =" { 'bg-green-500': lazy }" />
102+ <div >lazy</div >
103+ </button >
73104 </div >
74105
75- <Demo v-for =" item in items" :key =" item.id" :props =" item" />
106+ <Demo
107+ v-for =" item in items"
108+ :key =" item.id"
109+ :url =" item.url"
110+ :interact =" interact"
111+ :skeleton =" skeleton"
112+ :lazy =" lazy"
113+ />
76114 </section >
77115</template >
78116
79117<style scoped lang="scss">
80118.btn {
81- @apply flex items-center hover :opacity- 80;
119+ @apply flex items-center hover :opacity- 80 mx - 3 ;
82120
83121 div {
84122 @apply ml-1 mt- 1;
85123 }
124+
125+ span {
126+ @apply w-4 h-4 rounded-full duration-200 transition- [background-color ] border-gray-500 dark :border- gray- 200 border- [2px ];
127+ }
86128}
87129 </style >
0 commit comments