Refactor task management, UI interactions, and theme support

- Added task editing functionality with `EditForm` and integrated it with `TodoItemTouch`.
- Switched `dueDate` fields to `due_date` for consistency with API.
- Updated `useTasks` to handle dynamic task updates, deletions, and periodic refresh.
- Enhanced `useApi` with a dedicated delete method.
- Improved UI responsiveness and styling with multi-theme support in DaisyUI.
- Simplified modal handling for task interactions (`EditForm`, `CreateForm`).
- Improved `useSettings` with a `theme` field to support theme switching.
- Extended task commands for tagging, text, and due date updates.
- Optimized `parser` for extended edit command parsing.
- Updated helpers and actions to use `luxon` for date manipulations.
- Streamlined task and view logic for improved usability and extensibility.
This commit is contained in:
2026-03-08 19:54:30 +01:00
parent 25fd10a325
commit 09b4af9a6e
17 changed files with 469 additions and 104 deletions

View File

@@ -4,7 +4,7 @@
@plugin "daisyui/theme" {
name: "lofi";
name: "default";
default: true;
prefersdark: false;
color-scheme: "light";
@@ -75,6 +75,333 @@
}
@plugin "daisyui/theme" {
name: "cyberpunk";
default: false;
prefersdark: false;
color-scheme: "light";
--color-base-100: oklch(94.51% 0.179 104.32);
--color-base-200: oklch(91.51% 0.179 104.32);
--color-base-300: oklch(85.51% 0.179 104.32);
--color-base-content: oklch(0% 0 0);
--color-primary: oklch(74.22% 0.209 6.35);
--color-primary-content: oklch(14.844% 0.041 6.35);
--color-secondary: oklch(83.33% 0.184 204.72);
--color-secondary-content: oklch(16.666% 0.036 204.72);
--color-accent: oklch(71.86% 0.217 310.43);
--color-accent-content: oklch(14.372% 0.043 310.43);
--color-neutral: oklch(23.04% 0.065 269.31);
--color-neutral-content: oklch(94.51% 0.179 104.32);
--color-info: oklch(72.06% 0.191 231.6);
--color-info-content: oklch(0% 0 0);
--color-success: oklch(64.8% 0.15 160);
--color-success-content: oklch(0% 0 0);
--color-warning: oklch(84.71% 0.199 83.87);
--color-warning-content: oklch(0% 0 0);
--color-error: oklch(71.76% 0.221 22.18);
--color-error-content: oklch(0% 0 0);
--radius-selector: 0rem;
--radius-field: 0rem;
--radius-box: 0rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "forest";
default: false;
prefersdark: false;
color-scheme: "dark";
--color-base-100: oklch(20.84% 0.008 17.911);
--color-base-200: oklch(18.522% 0.007 17.911);
--color-base-300: oklch(16.203% 0.007 17.911);
--color-base-content: oklch(83.768% 0.001 17.911);
--color-primary: oklch(68.628% 0.185 148.958);
--color-primary-content: oklch(0% 0 0);
--color-secondary: oklch(69.776% 0.135 168.327);
--color-secondary-content: oklch(13.955% 0.027 168.327);
--color-accent: oklch(70.628% 0.119 185.713);
--color-accent-content: oklch(14.125% 0.023 185.713);
--color-neutral: oklch(30.698% 0.039 171.364);
--color-neutral-content: oklch(86.139% 0.007 171.364);
--color-info: oklch(72.06% 0.191 231.6);
--color-info-content: oklch(0% 0 0);
--color-success: oklch(64.8% 0.15 160);
--color-success-content: oklch(0% 0 0);
--color-warning: oklch(84.71% 0.199 83.87);
--color-warning-content: oklch(0% 0 0);
--color-error: oklch(71.76% 0.221 22.18);
--color-error-content: oklch(0% 0 0);
--radius-selector: 1rem;
--radius-field: 2rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "retro";
default: false;
prefersdark: false;
color-scheme: "light";
--color-base-100: oklch(91.637% 0.034 90.515);
--color-base-200: oklch(88.272% 0.049 91.774);
--color-base-300: oklch(84.133% 0.065 90.856);
--color-base-content: oklch(41% 0.112 45.904);
--color-primary: oklch(80% 0.114 19.571);
--color-primary-content: oklch(39% 0.141 25.723);
--color-secondary: oklch(92% 0.084 155.995);
--color-secondary-content: oklch(44% 0.119 151.328);
--color-accent: oklch(68% 0.162 75.834);
--color-accent-content: oklch(41% 0.112 45.904);
--color-neutral: oklch(44% 0.011 73.639);
--color-neutral-content: oklch(86% 0.005 56.366);
--color-info: oklch(58% 0.158 241.966);
--color-info-content: oklch(96% 0.059 95.617);
--color-success: oklch(51% 0.096 186.391);
--color-success-content: oklch(96% 0.059 95.617);
--color-warning: oklch(64% 0.222 41.116);
--color-warning-content: oklch(96% 0.059 95.617);
--color-error: oklch(70% 0.191 22.216);
--color-error-content: oklch(40% 0.123 38.172);
--radius-selector: 0.25rem;
--radius-field: 0.25rem;
--radius-box: 0.5rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "halloween";
default: false;
prefersdark: false;
color-scheme: "dark";
--color-base-100: oklch(21% 0.006 56.043);
--color-base-200: oklch(14% 0.004 49.25);
--color-base-300: oklch(0% 0 0);
--color-base-content: oklch(84.955% 0 0);
--color-primary: oklch(77.48% 0.204 60.62);
--color-primary-content: oklch(19.693% 0.004 196.779);
--color-secondary: oklch(45.98% 0.248 305.03);
--color-secondary-content: oklch(89.196% 0.049 305.03);
--color-accent: oklch(64.8% 0.223 136.073);
--color-accent-content: oklch(0% 0 0);
--color-neutral: oklch(24.371% 0.046 65.681);
--color-neutral-content: oklch(84.874% 0.009 65.681);
--color-info: oklch(54.615% 0.215 262.88);
--color-info-content: oklch(90.923% 0.043 262.88);
--color-success: oklch(62.705% 0.169 149.213);
--color-success-content: oklch(12.541% 0.033 149.213);
--color-warning: oklch(66.584% 0.157 58.318);
--color-warning-content: oklch(13.316% 0.031 58.318);
--color-error: oklch(65.72% 0.199 27.33);
--color-error-content: oklch(13.144% 0.039 27.33);
--radius-selector: 1rem;
--radius-field: 0.5rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 1;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "luxury";
default: false;
prefersdark: false;
color-scheme: "dark";
--color-base-100: oklch(14.076% 0.004 285.822);
--color-base-200: oklch(20.219% 0.004 308.229);
--color-base-300: oklch(23.219% 0.004 308.229);
--color-base-content: oklch(75.687% 0.123 76.89);
--color-primary: oklch(100% 0 0);
--color-primary-content: oklch(20% 0 0);
--color-secondary: oklch(27.581% 0.064 261.069);
--color-secondary-content: oklch(85.516% 0.012 261.069);
--color-accent: oklch(36.674% 0.051 338.825);
--color-accent-content: oklch(87.334% 0.01 338.825);
--color-neutral: oklch(24.27% 0.057 59.825);
--color-neutral-content: oklch(93.203% 0.089 90.861);
--color-info: oklch(79.061% 0.121 237.133);
--color-info-content: oklch(15.812% 0.024 237.133);
--color-success: oklch(78.119% 0.192 132.154);
--color-success-content: oklch(15.623% 0.038 132.154);
--color-warning: oklch(86.127% 0.136 102.891);
--color-warning-content: oklch(17.225% 0.027 102.891);
--color-error: oklch(71.753% 0.176 22.568);
--color-error-content: oklch(14.35% 0.035 22.568);
--radius-selector: 1rem;
--radius-field: 0.5rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 1;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "synthwave";
default: false;
prefersdark: false;
color-scheme: "dark";
--color-base-100: oklch(15% 0.09 281.288);
--color-base-200: oklch(20% 0.09 281.288);
--color-base-300: oklch(25% 0.09 281.288);
--color-base-content: oklch(78% 0.115 274.713);
--color-primary: oklch(71% 0.202 349.761);
--color-primary-content: oklch(28% 0.109 3.907);
--color-secondary: oklch(82% 0.111 230.318);
--color-secondary-content: oklch(29% 0.066 243.157);
--color-accent: oklch(75% 0.183 55.934);
--color-accent-content: oklch(26% 0.079 36.259);
--color-neutral: oklch(45% 0.24 277.023);
--color-neutral-content: oklch(87% 0.065 274.039);
--color-info: oklch(74% 0.16 232.661);
--color-info-content: oklch(29% 0.066 243.157);
--color-success: oklch(77% 0.152 181.912);
--color-success-content: oklch(27% 0.046 192.524);
--color-warning: oklch(90% 0.182 98.111);
--color-warning-content: oklch(42% 0.095 57.708);
--color-error: oklch(73.7% 0.121 32.639);
--color-error-content: oklch(23.501% 0.096 290.329);
--radius-selector: 1rem;
--radius-field: 0.5rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "valentine";
default: false;
prefersdark: false;
color-scheme: "light";
--color-base-100: oklch(97% 0.014 343.198);
--color-base-200: oklch(94% 0.028 342.258);
--color-base-300: oklch(89% 0.061 343.231);
--color-base-content: oklch(52% 0.223 3.958);
--color-primary: oklch(65% 0.241 354.308);
--color-primary-content: oklch(100% 0 0);
--color-secondary: oklch(62% 0.265 303.9);
--color-secondary-content: oklch(97% 0.014 308.299);
--color-accent: oklch(82% 0.111 230.318);
--color-accent-content: oklch(39% 0.09 240.876);
--color-neutral: oklch(40% 0.153 2.432);
--color-neutral-content: oklch(89% 0.061 343.231);
--color-info: oklch(86% 0.127 207.078);
--color-info-content: oklch(44% 0.11 240.79);
--color-success: oklch(84% 0.143 164.978);
--color-success-content: oklch(43% 0.095 166.913);
--color-warning: oklch(75% 0.183 55.934);
--color-warning-content: oklch(26% 0.079 36.259);
--color-error: oklch(63% 0.237 25.331);
--color-error-content: oklch(97% 0.013 17.38);
--radius-selector: 1rem;
--radius-field: 2rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "wireframe";
default: false;
prefersdark: false;
color-scheme: "light";
--color-base-100: oklch(100% 0 0);
--color-base-200: oklch(97% 0 0);
--color-base-300: oklch(94% 0 0);
--color-base-content: oklch(20% 0 0);
--color-primary: oklch(87% 0 0);
--color-primary-content: oklch(26% 0 0);
--color-secondary: oklch(87% 0 0);
--color-secondary-content: oklch(26% 0 0);
--color-accent: oklch(87% 0 0);
--color-accent-content: oklch(26% 0 0);
--color-neutral: oklch(87% 0 0);
--color-neutral-content: oklch(26% 0 0);
--color-info: oklch(44% 0.11 240.79);
--color-info-content: oklch(90% 0.058 230.902);
--color-success: oklch(43% 0.095 166.913);
--color-success-content: oklch(90% 0.093 164.15);
--color-warning: oklch(47% 0.137 46.201);
--color-warning-content: oklch(92% 0.12 95.746);
--color-error: oklch(44% 0.177 26.899);
--color-error-content: oklch(88% 0.062 18.334);
--radius-selector: 0rem;
--radius-field: 0.25rem;
--radius-box: 0.25rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 0;
--noise: 0;
}
@plugin "daisyui/theme" {
name: "aqua";
default: false;
prefersdark: false;
color-scheme: "dark";
--color-base-100: oklch(37% 0.146 265.522);
--color-base-200: oklch(28% 0.091 267.935);
--color-base-300: oklch(22% 0.091 267.935);
--color-base-content: oklch(90% 0.058 230.902);
--color-primary: oklch(85.661% 0.144 198.645);
--color-primary-content: oklch(40.124% 0.068 197.603);
--color-secondary: oklch(60.682% 0.108 309.782);
--color-secondary-content: oklch(96% 0.016 293.756);
--color-accent: oklch(93.426% 0.102 94.555);
--color-accent-content: oklch(18.685% 0.02 94.555);
--color-neutral: oklch(27% 0.146 265.522);
--color-neutral-content: oklch(80% 0.146 265.522);
--color-info: oklch(54.615% 0.215 262.88);
--color-info-content: oklch(90.923% 0.043 262.88);
--color-success: oklch(62.705% 0.169 149.213);
--color-success-content: oklch(12.541% 0.033 149.213);
--color-warning: oklch(66.584% 0.157 58.318);
--color-warning-content: oklch(27% 0.077 45.635);
--color-error: oklch(73.95% 0.19 27.33);
--color-error-content: oklch(14.79% 0.038 27.33);
--radius-selector: 1rem;
--radius-field: 0.5rem;
--radius-box: 1rem;
--size-selector: 0.25rem;
--size-field: 0.25rem;
--border: 1px;
--depth: 1;
--noise: 0;
}
/* Transitions */