Reduced some spacing on mobile
This commit is contained in:
4
assets/_typography.css
Normal file
4
assets/_typography.css
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
@theme inline {
|
||||||
|
--text-2xs: 0.7rem;
|
||||||
|
--text-2xs--line-height: 0.75rem;
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@
|
|||||||
@config '../tailwind.config.js';
|
@config '../tailwind.config.js';
|
||||||
|
|
||||||
@import "./theme.css" layer(theme);
|
@import "./theme.css" layer(theme);
|
||||||
|
@import "./_typography.css" layer(theme);
|
||||||
@import "./_colors.css" layer(theme);
|
@import "./_colors.css" layer(theme);
|
||||||
@import "./_colors.css" layer(utilities);
|
@import "./_colors.css" layer(utilities);
|
||||||
|
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ const breakpoints = useBreakpoints(
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<UiButton
|
<UiButton
|
||||||
class="max-md:fixed max-md:bottom-16 max-md:right-8 max-md:z-50 max-md:size-12 max-md:shadow"
|
class="max-md:fixed max-md:bottom-8 max-md:right-8 max-md:z-50 max-md:size-14 max-md:rounded-xl"
|
||||||
:size="breakpoints.lg.value ? 'default' : 'icon'"
|
:size="breakpoints.lg.value ? 'default' : 'icon'"
|
||||||
@click="toggleDialog"
|
@click="toggleDialog"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { cn } from "~/lib/utils"
|
|||||||
import type { RPGDate } from "~/models/Date"
|
import type { RPGDate } from "~/models/Date"
|
||||||
import type { CalendarEvent } from "~/models/CalendarEvent"
|
import type { CalendarEvent } from "~/models/CalendarEvent"
|
||||||
import { useCalendar } from "~/stores/CalendarStore"
|
import { useCalendar } from "~/stores/CalendarStore"
|
||||||
|
import { breakpointsTailwind, useBreakpoints } from "@vueuse/core"
|
||||||
|
|
||||||
import {
|
import {
|
||||||
PhHourglassMedium,
|
PhHourglassMedium,
|
||||||
@@ -24,6 +25,10 @@ const props = defineProps<{
|
|||||||
isEndEvent?: boolean
|
isEndEvent?: boolean
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
|
const breakpoints = useBreakpoints(
|
||||||
|
breakpointsTailwind
|
||||||
|
)
|
||||||
|
|
||||||
// Ref for the popover
|
// Ref for the popover
|
||||||
const eventDetails = ref<HTMLElement>()
|
const eventDetails = ref<HTMLElement>()
|
||||||
|
|
||||||
@@ -64,9 +69,9 @@ function deployDeleteModal() {
|
|||||||
<UiPopoverContent
|
<UiPopoverContent
|
||||||
class="w-96 event-popover"
|
class="w-96 event-popover"
|
||||||
:align="'center'"
|
:align="'center'"
|
||||||
:align-offset="50"
|
:align-offset="breakpoints.lg.value ? 50 : 25"
|
||||||
:side="'left'"
|
:side="breakpoints.lg.value ? 'left' : 'top'"
|
||||||
:collision-padding="60"
|
:collision-padding="breakpoints.lg.value ? 50 : 25"
|
||||||
:hide-when-detached="true"
|
:hide-when-detached="true"
|
||||||
:class="cn(
|
:class="cn(
|
||||||
event.category ? `element-${event.category.color}` : '',
|
event.category ? `element-${event.category.color}` : '',
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ onMounted(() => {
|
|||||||
<UiPopover v-model:open="isPopoverDetailsOpen">
|
<UiPopover v-model:open="isPopoverDetailsOpen">
|
||||||
<UiPopoverTrigger as-child>
|
<UiPopoverTrigger as-child>
|
||||||
<button
|
<button
|
||||||
class="event-button text-xs px-2 py-1 block w-full text-left rounded-sm transition-colors outline-offset-1 cursor-pointer"
|
class="event-button text-2xs md:text-xs px-[5px] py-[5px] md:px-2 md:py-1 block w-full text-left rounded-sm transition-colors outline-offset-1 cursor-pointer"
|
||||||
:class="
|
:class="
|
||||||
cn(
|
cn(
|
||||||
`element-${event.category?.color}`,
|
`element-${event.category?.color}`,
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import type { RPGDate } from "~/models/Date"
|
import type { RPGDate } from "~/models/Date"
|
||||||
import type { CalendarEvent } from "~/models/CalendarEvent"
|
import type { CalendarEvent } from "~/models/CalendarEvent"
|
||||||
import { useElementBounding } from "@vueuse/core"
|
import { breakpointsTailwind, useElementBounding } from "@vueuse/core"
|
||||||
import { storeToRefs } from "pinia"
|
import { storeToRefs } from "pinia"
|
||||||
import { computed, ref, type ComputedRef } from "vue"
|
import { computed, ref, type ComputedRef } from "vue"
|
||||||
|
|
||||||
@@ -15,9 +15,13 @@ const props = defineProps<{
|
|||||||
const calendarTile = ref()
|
const calendarTile = ref()
|
||||||
const calendarEventsList = ref()
|
const calendarEventsList = ref()
|
||||||
|
|
||||||
const { defaultDate, selectDate, areDatesIdentical } = useCalendar()
|
const { defaultDate, selectDate, areDatesIdentical, getFormattedDateTitle } = useCalendar()
|
||||||
const { selectedDate, currentEvents, isReadOnly } = storeToRefs(useCalendar())
|
const { selectedDate, currentEvents, isReadOnly } = storeToRefs(useCalendar())
|
||||||
|
|
||||||
|
const breakpoints = useBreakpoints(
|
||||||
|
breakpointsTailwind
|
||||||
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* All events with a startDate / endDate that starts or ends on the tile
|
* All events with a startDate / endDate that starts or ends on the tile
|
||||||
*/
|
*/
|
||||||
@@ -73,22 +77,22 @@ const eventsNotDisplayed: ComputedRef<number> = computed<number>(() => eventsFo
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
ref="calendarTile"
|
ref="calendarTile"
|
||||||
class="tile relative text-xs p-2"
|
class="tile relative p-1 md:p-2"
|
||||||
:class="{
|
:class="{
|
||||||
'text-slate-300 dark:text-slate-500': props.faded,
|
'text-slate-300 dark:text-slate-500': props.faded,
|
||||||
'text-slate-500 dark:text-slate-300': !props.faded
|
'text-slate-500 dark:text-slate-300': !props.faded
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
<button
|
<button
|
||||||
class="relative z-10 group block w-full text-center cursor-pointer"
|
class="relative z-10 group block w-full text-2xs md:text-xs text-center cursor-pointer"
|
||||||
@click="selectDate(date)"
|
@click="selectDate(date)"
|
||||||
>
|
>
|
||||||
<ClientOnly>
|
<ClientOnly>
|
||||||
<span
|
<span
|
||||||
class="inline-flex w-8 h-8 aspect-square items-center justify-center rounded-full border-2 border-transparent font-bold transition-colors group-hover:border-indigo-300 dark:group-hover:border-indigo-700"
|
class="inline-flex size-7 md:size-8 aspect-square items-center justify-center rounded-full border-1 md:border-2 border-transparent font-bold transition-colors group-hover:border-indigo-300 dark:group-hover:border-indigo-700"
|
||||||
:class="{
|
:class="{
|
||||||
'text-white bg-slate-600 dark:bg-slate-800': isDefaultDate && !isSelectedDate,
|
'text-background bg-slate-600 dark:bg-slate-800': isDefaultDate && !isSelectedDate,
|
||||||
'text-white bg-indigo-500': isSelectedDate
|
'text-background bg-indigo-500': isSelectedDate
|
||||||
}"
|
}"
|
||||||
>
|
>
|
||||||
{{ date.day }}
|
{{ date.day }}
|
||||||
@@ -99,7 +103,7 @@ const eventsNotDisplayed: ComputedRef<number> = computed<number>(() => eventsFo
|
|||||||
<ClientOnly>
|
<ClientOnly>
|
||||||
<ul
|
<ul
|
||||||
ref="calendarEventsList"
|
ref="calendarEventsList"
|
||||||
class="absolute top-12 bottom-2 inset-x-2 grid auto-rows-min gap-1 z-10 pointer-events-none transition-opacity"
|
class="absolute top-9 md:top-12 bottom-1 md:bottom-2 inset-x-2 grid auto-rows-min gap-1 z-10 pointer-events-none transition-opacity"
|
||||||
:class="{
|
:class="{
|
||||||
'opacity-40': props.faded && !isSelectedDate
|
'opacity-40': props.faded && !isSelectedDate
|
||||||
}"
|
}"
|
||||||
@@ -114,17 +118,23 @@ const eventsNotDisplayed: ComputedRef<number> = computed<number>(() => eventsFo
|
|||||||
<UiPopover>
|
<UiPopover>
|
||||||
<UiPopoverTrigger as-child>
|
<UiPopoverTrigger as-child>
|
||||||
<button
|
<button
|
||||||
class="text-xs px-2 py-1 block w-full text-left font-bold rounded-sm whitespace-nowrap overflow-hidden text-ellipsis cursor-pointer transition-colors hover:bg-slate-800"
|
class="text-2xs md:text-xs px-[5px] py-[5px] md:px-2 md:py-1 block w-full text-left font-bold rounded-sm whitespace-nowrap overflow-hidden text-ellipsis cursor-pointer transition-colors hover:text-foreground hover:bg-foreground/10"
|
||||||
>
|
>
|
||||||
{{ eventsNotDisplayed }} autre{{ eventsNotDisplayed > 1 ? 's' : '' }}
|
{{ eventsNotDisplayed }} autre{{ eventsNotDisplayed > 1 ? 's' : '' }}
|
||||||
</button>
|
</button>
|
||||||
</UiPopoverTrigger>
|
</UiPopoverTrigger>
|
||||||
<UiPopoverContent class="w-80" :align="'center'" :side="'right'">
|
<UiPopoverContent
|
||||||
<div class="text-center mb-4">
|
class="w-80"
|
||||||
|
:align="'center'"
|
||||||
|
:align-offset="breakpoints.lg.value ? 50 : 25"
|
||||||
|
:collision-padding="breakpoints.lg.value ? 50 : 25"
|
||||||
|
:side="breakpoints.lg.value ? 'left' : 'bottom'"
|
||||||
|
>
|
||||||
|
<div class="text-center mb-2">
|
||||||
<span
|
<span
|
||||||
class="inline-flex w-12 h-12 aspect-square items-center justify-center text-lg font-semibold text-slate-300 bg-slate-800 rounded-full"
|
class="text-lg font-semibold rounded-full"
|
||||||
>
|
>
|
||||||
{{ date.day }}
|
{{ getFormattedDateTitle(date, true) }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<ul class="grid auto-rows-min gap-1 z-10 pointer-events-none transition-opacity">
|
<ul class="grid auto-rows-min gap-1 z-10 pointer-events-none transition-opacity">
|
||||||
|
|||||||
Reference in New Issue
Block a user