User

If you need to use User object in your components, you can get it quickly from layout.
<PageLayout #default="{ user }">
    {{ user }}
</PageLayout>
You can see the real example in modules/Roadmap/resources/js/Pages/Show.vue Usually you could get User object this way:
const user = computed(() => usePage().props.auth.user);

Global props

You can define global layout props and pass them to its slot. This is example of default slot for PageLayout component:
// PageLayout main slot
<slot :user="user" :showAuthModal="authRef?.open" :isAuth="authRef?.auth" :checkAuth="authRef?.check" />

// Render content as PageLayout slot and use its props
<PageLayout #default="{ user, showAuthModal, isAuth, checkAuth }">
    Content goes here...
    User name: {{ user?.name }}
    User is authenticated {{ isAuth }}
</PageLayout>
You can also pass global properties from parent to children using provide and inject.
// Parent component
import { provide } from "vue";

provide("foo", "bar");
// Child component
import { inject } from "vue";

// Will be equal to "foo" or "" if not provided
const foo: string = inject("foo", "");