Merge branch 'dev' into feat/encounter-status-107

This commit is contained in:
Andrian Roshandy
2025-10-12 13:27:06 +07:00
16 changed files with 25 additions and 22 deletions
+1 -1
View File
@@ -174,7 +174,7 @@ body {
} }
body, table, label { body, table, label {
@apply md:!text-xs xl:!text-sm 2xl:!text-sm; @apply md:!text-xs 2xl:!text-sm;
} }
/* Container */ /* Container */
+2 -2
View File
@@ -22,7 +22,7 @@ const openCollapsible = ref(false)
<Collapsible :key="item.title" v-model:open="openCollapsible" as-child class="group/collapsible "> <Collapsible :key="item.title" v-model:open="openCollapsible" as-child class="group/collapsible ">
<SidebarMenuItem> <SidebarMenuItem>
<CollapsibleTrigger as-child> <CollapsibleTrigger as-child>
<SidebarMenuButton :tooltip="item.title" :size="size" class="md:!text-xs xl:!text-sm 2xl:!text-base"> <SidebarMenuButton :tooltip="item.title" :size="size" class="md:!text-xs 2xl:!text-sm">
<Icon :name="item.icon || ''" mode="svg" /> <Icon :name="item.icon || ''" mode="svg" />
<span class="mx-2">{{ item.title }}</span> <span class="mx-2">{{ item.title }}</span>
<Icon <Icon
@@ -37,7 +37,7 @@ const openCollapsible = ref(false)
<SidebarMenuSubButton as-child> <SidebarMenuSubButton as-child>
<NuxtLink <NuxtLink
:to="subItem.link" :to="subItem.link"
class="mx-4 rounded-lg py-5 text-sm transition-all duration-200 md:!text-xs xl:!text-sm 2xl:!text-base" class="mx-4 rounded-lg py-2 2xl:py-2.5 text-sm transition-all duration-200 md:!text-xs 2xl:!text-sm 2xl:!text-base"
active-class="bg-primary text-white" active-class="bg-primary text-white"
@click="setOpenMobile(false)" @click="setOpenMobile(false)"
> >
+3 -3
View File
@@ -22,13 +22,13 @@ const activeTeam = ref(props.teams[0])
<div <div
class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg" class="bg-sidebar-primary text-sidebar-primary-foreground flex aspect-square size-8 items-center justify-center rounded-lg"
> >
<img :src="activeTeam.logo" class="h-full w-full" /> <img :src="activeTeam?.logo" class="h-full w-full" />
</div> </div>
<div class="grid flex-1 text-left text-sm leading-tight"> <div class="grid flex-1 text-left text-sm leading-tight">
<span class="truncate font-semibold"> <span class="truncate font-semibold">
{{ activeTeam.name }} {{ activeTeam?.name }}
</span> </span>
<span class="truncate text-xs">{{ activeTeam.plan }}</span> <span class="truncate text-xs">{{ activeTeam?.plan }}</span>
</div> </div>
</SidebarMenuButton> </SidebarMenuButton>
</DropdownMenuTrigger> </DropdownMenuTrigger>
+1 -1
View File
@@ -21,7 +21,7 @@ const { setOpenMobile } = useSidebar()
<SidebarMenuButton as-child :tooltip="item.title" :size="size" class=""> <SidebarMenuButton as-child :tooltip="item.title" :size="size" class="">
<NuxtLink <NuxtLink
:to="item.link" :to="item.link"
class="group flex items-center gap-3 rounded-lg px-2 py-4 text-sm transition-all duration-200 md:!text-xs xl:!text-sm 2xl:!text-base" class="group flex items-center gap-3 rounded-lg px-2 py-2 2xl:py-2.5 text-sm transition-all duration-200 md:!text-xs 2xl:!text-sm"
active-class="bg-primary text-white" active-class="bg-primary text-white"
@click="setOpenMobile(false)" @click="setOpenMobile(false)"
> >
+1 -1
View File
@@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<div :class="cn('p-4 xl:p-5 2xl:p-6', props.class)"> <div :class="cn('p-4 2xl:p-5', props.class)">
<slot /> <slot />
</div> </div>
</template> </template>
@@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<p :class="cn('text-sm text-muted-foreground', props.class)"> <p :class="cn('text-xs 2xl:text-sm text-muted-foreground', props.class)">
<slot /> <slot />
</p> </p>
</template> </template>
+1 -1
View File
@@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<div :class="cn('flex items-center p-6 pt-0', props.class)"> <div :class="cn('flex items-center p-4 2xl:p-5 pt-0', props.class)">
<slot /> <slot />
</div> </div>
</template> </template>
+1 -1
View File
@@ -24,7 +24,7 @@ const modelValue = useVModel(props, 'modelValue', emits, {
v-model="modelValue" v-model="modelValue"
:class=" :class="
cn( cn(
'border-input dark:bg-slate-950 ring-offset-background placeholder:text-muted-foreground flex h-8 xl:h-9 w-full rounded-md border border-gray-400 px-3 py-2 md:text-xs xl:text-sm file:border-0 file:bg-transparent md:file:text-xs xl:file:text-sm file:font-medium disabled:cursor-not-allowed disabled:opacity-50', 'border-input dark:bg-slate-950 ring-offset-background placeholder:text-muted-foreground flex h-8 2xl:h-9 w-full rounded-md border border-gray-400 px-3 py-2 md:text-xs 2xl:text-sm file:border-0 file:bg-transparent md:file:text-xs xl:file:text-sm file:font-medium disabled:cursor-not-allowed disabled:opacity-50',
props.class, props.class,
) )
" "
+5 -5
View File
@@ -30,7 +30,7 @@ const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
<template> <template>
<div <div
v-if="collapsible === 'none'" v-if="collapsible === 'none'"
:class="cn('bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col', props.class)" :class="cn('bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] 2xl:w-[--xxl-sidebar-width] flex-col', props.class)"
v-bind="$attrs" v-bind="$attrs"
> >
<slot /> <slot />
@@ -64,7 +64,7 @@ const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
<div <div
:class=" :class="
cn( cn(
'relative h-svh w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear', 'relative h-svh w-[--sidebar-width] 2xl:w-[--xxl-sidebar-width] bg-transparent transition-[width] duration-200 ease-linear',
'group-data-[collapsible=offcanvas]:w-0', 'group-data-[collapsible=offcanvas]:w-0',
'group-data-[side=right]:rotate-180', 'group-data-[side=right]:rotate-180',
variant === 'floating' || variant === 'inset' variant === 'floating' || variant === 'inset'
@@ -76,10 +76,10 @@ const { isMobile, state, openMobile, setOpenMobile } = useSidebar()
<div <div
:class=" :class="
cn( cn(
'fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex', 'fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] 2xl:w-[--xxl-sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex',
side === 'left' side === 'left'
? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]' ? 'left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] group-data-[collapsible=offcanvas]:2xl:left-[calc(var(--xxl-sidebar-width)*-1)]'
: 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]', : 'right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] group-data-[collapsible=offcanvas]:2xl:right-[calc(var(--xxl-sidebar-width)*-1)]',
// Adjust the padding for floating and inset variants. // Adjust the padding for floating and inset variants.
variant === 'floating' || variant === 'inset' variant === 'floating' || variant === 'inset'
? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_1rem_+_2px)]' ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_1rem_+_2px)]'
@@ -15,7 +15,7 @@ const props = defineProps<PrimitiveProps & {
:as="as" :as="as"
:as-child="asChild" :as-child="asChild"
:class="cn( :class="cn(
'duration-200 flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0', 'duration-200 flex h-8 shrink-0 items-center rounded-md px-2 md:text-xs 2xl:text-sm font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',
'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0', 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',
props.class)" props.class)"
> >
@@ -11,7 +11,7 @@ const props = defineProps<{
<div <div
data-sidebar="menu-badge" data-sidebar="menu-badge"
:class="cn( :class="cn(
'absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none', 'absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 md:text-xs 2xl:text-sm font-medium tabular-nums text-sidebar-foreground select-none pointer-events-none',
'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground', 'peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground',
'peer-data-[size=sm]/menu-button:top-1', 'peer-data-[size=sm]/menu-button:top-1',
'peer-data-[size=default]/menu-button:top-1.5', 'peer-data-[size=default]/menu-button:top-1.5',
@@ -11,6 +11,7 @@ import {
SIDEBAR_COOKIE_NAME, SIDEBAR_COOKIE_NAME,
SIDEBAR_KEYBOARD_SHORTCUT, SIDEBAR_KEYBOARD_SHORTCUT,
SIDEBAR_WIDTH, SIDEBAR_WIDTH,
XXL_SIDEBAR_WIDTH,
SIDEBAR_WIDTH_ICON, SIDEBAR_WIDTH_ICON,
} from './utils' } from './utils'
@@ -87,6 +88,7 @@ provideSidebarContext({
<div <div
:style="{ :style="{
'--sidebar-width': SIDEBAR_WIDTH, '--sidebar-width': SIDEBAR_WIDTH,
'--xxl-sidebar-width': XXL_SIDEBAR_WIDTH,
'--sidebar-width-icon': SIDEBAR_WIDTH_ICON, '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,
}" }"
:class=" :class="
+2 -1
View File
@@ -3,7 +3,8 @@ import { createContext } from 'radix-vue'
export const SIDEBAR_COOKIE_NAME = 'sidebar:state' export const SIDEBAR_COOKIE_NAME = 'sidebar:state'
export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7 export const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7
export const SIDEBAR_WIDTH = '16rem' export const SIDEBAR_WIDTH = '12rem'
export const XXL_SIDEBAR_WIDTH = '14rem'
export const SIDEBAR_WIDTH_MOBILE = '18rem' export const SIDEBAR_WIDTH_MOBILE = '18rem'
export const SIDEBAR_WIDTH_ICON = '3rem' export const SIDEBAR_WIDTH_ICON = '3rem'
export const SIDEBAR_KEYBOARD_SHORTCUT = 'b' export const SIDEBAR_KEYBOARD_SHORTCUT = 'b'
+1 -1
View File
@@ -11,7 +11,7 @@ const props = defineProps<{
<td <td
:class=" :class="
cn( cn(
'p-4 align-middle [&:has([role=checkbox])]:pr-0', 'p-4 align-middle md:text-xs 2xl:text-sm [&:has([role=checkbox])]:pr-0',
props.class, props.class,
) )
" "
+1 -1
View File
@@ -8,7 +8,7 @@ const props = defineProps<{
</script> </script>
<template> <template>
<th :class="cn('h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', props.class)"> <th :class="cn('h-12 px-4 text-left md:text-xs 2xl:text-sm align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0', props.class)">
<slot /> <slot />
</th> </th>
</template> </template>
+1 -1
View File
@@ -28,7 +28,7 @@ const contentFrameClass = computed(() => {
<LayoutAppSidebar /> <LayoutAppSidebar />
<SidebarInset> <SidebarInset>
<LayoutHeader /> <LayoutHeader />
<div :class="`w-full p-4 xl:p-5 2xl:p-6 flex justify-center ${contentFrameClass}`"> <div :class="`w-full p-4 2xl:p-5 flex justify-center ${contentFrameClass}`">
<div v-if="contentFrame !== 'cf-no-frame'"> <div v-if="contentFrame !== 'cf-no-frame'">
<Card> <Card>
<CardContent> <CardContent>