completed addon checkout in mobile event admin

This commit is contained in:
Codex Agent
2025-12-17 17:24:26 +01:00
parent 5f3e7ae8c8
commit ece38fc009
7 changed files with 277 additions and 58 deletions

View File

@@ -1,7 +1,7 @@
import React from 'react';
import { useNavigate, useParams } from 'react-router-dom';
import { useTranslation } from 'react-i18next';
import { RefreshCcw, Plus, Pencil, Trash2, ChevronDown } from 'lucide-react';
import { RefreshCcw, Plus, Pencil, Trash2, ChevronDown, ChevronRight } from 'lucide-react';
import { YStack, XStack } from '@tamagui/stacks';
import { SizableText as Text } from '@tamagui/text';
import { ListItem } from '@tamagui/list-item';
@@ -408,6 +408,8 @@ export default function MobileEventTasksPage() {
<YStack borderWidth={1} borderColor={border} borderRadius="$4" overflow="hidden">
<Pressable onPress={() => setShowTaskSheet(true)}>
<ListItem
hoverTheme
pressTheme
title={
<XStack alignItems="center" space="$2">
<YStack
@@ -432,11 +434,14 @@ export default function MobileEventTasksPage() {
}
paddingVertical="$2"
paddingHorizontal="$3"
iconAfter={<ChevronRight size={16} color={muted} />}
/>
</Pressable>
<InlineSeparator />
<Pressable onPress={() => setShowCollectionSheet(true)}>
<ListItem
hoverTheme
pressTheme
title={
<XStack alignItems="center" space="$2">
<YStack
@@ -461,6 +466,7 @@ export default function MobileEventTasksPage() {
}
paddingVertical="$2"
paddingHorizontal="$3"
iconAfter={<ChevronRight size={16} color={muted} />}
/>
</Pressable>
</YStack>
@@ -502,6 +508,8 @@ export default function MobileEventTasksPage() {
<React.Fragment key={task.id}>
<Pressable onPress={() => startEdit(task)}>
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{task.title}
@@ -522,6 +530,7 @@ export default function MobileEventTasksPage() {
<Pressable disabled={busyId === task.id} onPress={() => detachTask(task.id)}>
<Trash2 size={14} color={danger} />
</Pressable>
<ChevronRight size={14} color={subtle} />
</XStack>
}
paddingVertical="$2"
@@ -556,6 +565,8 @@ export default function MobileEventTasksPage() {
{(expandedLibrary ? library : library.slice(0, 6)).map((task, idx, arr) => (
<React.Fragment key={`lib-${task.id}`}>
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{task.title}
@@ -569,11 +580,14 @@ export default function MobileEventTasksPage() {
) : null
}
iconAfter={
<Pressable onPress={() => quickAssign(task.id)}>
<Text fontSize={12} fontWeight="600" color={primary}>
{assigningId === task.id ? t('common.processing', '...') : t('events.tasks.add', 'Add')}
</Text>
</Pressable>
<XStack space="$1.5" alignItems="center">
<Pressable onPress={() => quickAssign(task.id)}>
<Text fontSize={12} fontWeight="600" color={primary}>
{assigningId === task.id ? t('common.processing', '...') : t('events.tasks.add', 'Add')}
</Text>
</Pressable>
<ChevronRight size={14} color={subtle} />
</XStack>
}
paddingVertical="$2"
paddingHorizontal="$3"
@@ -609,6 +623,8 @@ export default function MobileEventTasksPage() {
{(expandedCollections ? collections : collections.slice(0, 6)).map((collection, idx, arr) => (
<React.Fragment key={collection.id}>
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{collection.name}
@@ -622,11 +638,14 @@ export default function MobileEventTasksPage() {
) : null
}
iconAfter={
<Pressable onPress={() => importCollection(collection.id)}>
<Text fontSize={12} fontWeight="600" color={primary}>
{t('events.tasks.import', 'Import')}
</Text>
</Pressable>
<XStack space="$1.5" alignItems="center">
<Pressable onPress={() => importCollection(collection.id)}>
<Text fontSize={12} fontWeight="600" color={primary}>
{t('events.tasks.import', 'Import')}
</Text>
</Pressable>
<ChevronRight size={14} color={subtle} />
</XStack>
}
paddingVertical="$2"
paddingHorizontal="$3"
@@ -738,6 +757,8 @@ export default function MobileEventTasksPage() {
{emotions.map((em) => (
<ListItem
key={`emo-${em.id}`}
hoverTheme
pressTheme
title={
<XStack alignItems="center" space="$2">
<Tag label={em.name ?? ''} color={em.color ?? border} />
@@ -756,6 +777,7 @@ export default function MobileEventTasksPage() {
<Pressable onPress={() => removeEmotion(em.id)}>
<Trash2 size={14} color={danger} />
</Pressable>
<ChevronRight size={14} color={subtle} />
</XStack>
}
/>
@@ -829,6 +851,8 @@ export default function MobileEventTasksPage() {
>
<YStack space="$1">
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{t('events.tasks.addTask', 'Aufgabe hinzufügen')}
@@ -840,8 +864,11 @@ export default function MobileEventTasksPage() {
}}
paddingVertical="$2"
paddingHorizontal="$3"
iconAfter={<ChevronRight size={14} color={subtle} />}
/>
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{t('events.tasks.bulkAdd', 'Bulk add')}
@@ -853,8 +880,11 @@ export default function MobileEventTasksPage() {
}}
paddingVertical="$2"
paddingHorizontal="$3"
iconAfter={<ChevronRight size={14} color={subtle} />}
/>
<ListItem
hoverTheme
pressTheme
title={
<Text fontSize={12.5} fontWeight="600" color={text}>
{t('events.tasks.manageEmotions', 'Manage emotions')}
@@ -871,6 +901,7 @@ export default function MobileEventTasksPage() {
}}
paddingVertical="$2"
paddingHorizontal="$3"
iconAfter={<ChevronRight size={14} color={subtle} />}
/>
</YStack>
</MobileSheet>