<template> <div> <ClientScript ref="clientScript" class="client-only-script" foo="bar" /> <ClientSetupScript ref="clientSetupScript" class="client-only-script-setup" foo="hello" > <template #test> <BreakServerComponent /> <div class="slot-test"> Hello <BreaksServer /> </div> </template> </ClientSetupScript> <ClientOnly> Should not be server rendered. <BreakServerComponent /> <template #fallback> <div>Fallback</div> </template> </ClientOnly> <!-- ensure multi root node components are correctly rendered (Fragment) --> <ClientMultiRootNode class="multi-root-node" /> <ClientMultiRootNodeScript class="multi-root-node-script" /> <!-- ensure components with a single single child are correctly rendered --> <ClientStringChildStateful ref="stringStatefulComp" class="string-stateful" /> <ClientStringChildStatefulScript ref="stringStatefulScriptComp" class="string-stateful-script" /> <ClientNoState class="no-state" /> <!-- ensure directives are correctly passed --> <ClientStringChildStateful v-show="show" class="string-stateful-should-be-hidden" /> <ClientSetupScript v-show="show" class="client-script-should-be-hidden" foo="bar" /> <ClientStringChildStatefulScript v-show="show" class="string-stateful-script-should-be-hidden" /> <ClientNoState v-show="show" class="no-state-hidden" /> <button class="test-ref-1" @click="stringStatefulComp.add"> increment count </button> <button class="test-ref-2" @click="stringStatefulScriptComp.add"> increment count </button> <button class="test-ref-3" @click="clientScript.add"> increment count </button> <button class="test-ref-4" @click="clientSetupScript.add"> increment count </button> <button id="show-all" @click="show = true"> Show all </button> </div> </template> <script setup lang="ts"> import type { Ref } from 'vue' // bypass client import protection to ensure this is treeshaken from .client components import BreaksServer from '~~/components/BreaksServer.client' type Comp = Ref<{ add: () => void }> const stringStatefulComp = ref(null) as any as Comp const stringStatefulScriptComp = ref(null) as any as Comp const clientScript = ref(null) as any as Comp const clientSetupScript = ref(null) as any as Comp const BreakServerComponent = defineAsyncComponent(() => { return import('./../components/BreaksServer.client') }) const show = ref(false) </script>