
3D Extruded Buildings & Urban Footprints
Real-world 3D building extrusions with dynamic sunlight shadows, terrain DEM elevations, and pitch/bearing camera controls.
labeluiAccessible label primitive — wraps text and binds to its child input via `for`. Disabled-state styling, optional required-asterisk, and proper screen-reader behavior.
Also available for React ->$pnpm dlx shadcn-vue@latest add https://uipkge.dev/r/vue/label.json$npx shadcn-vue@latest add https://uipkge.dev/r/vue/label.json$yarn dlx shadcn-vue@latest add https://uipkge.dev/r/vue/label.json$bunx shadcn-vue@latest add https://uipkge.dev/r/vue/label.jsonnpx shadcn-vue@latest add @uipkge/labelInstalls to:app/components/ui/label/| Name | Type / Values | Default | Required |
|---|---|---|---|
class | HTMLAttributes['class'] | — | optional |
<script setup lang="ts">
import type { LabelProps } from 'reka-ui'
import type { HTMLAttributes } from 'vue'
import { reactiveOmit } from '@vueuse/core'
import { Label } from 'reka-ui'
import { cn } from '@/lib/utils'
const props = defineProps<LabelProps & { class?: HTMLAttributes['class'] }>()
const delegatedProps = reactiveOmit(props, 'class')
</script>
<template>
<Label
data-uipkge
data-slot="label"
v-bind="delegatedProps"
:class="
cn(
'flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50',
props.class,
)
"
>
<slot />
</Label>
</template>
export { default as Label } from './Label.vue'
Raw manifest:https://uipkge.dev/r/vue/label.json