feat(ui): add content editor components for skills and thoughts
Some checks failed
CI / build-and-test (push) Failing after -31m24s

* Implement ContentEditorField for inline editing of content
* Create ContentEditorModal for editing content in a modal
* Introduce FormerShell for managing forms related to skills and thoughts
* Enhance SkillsPage and ThoughtsPage with new components for better content management
This commit is contained in:
2026-05-02 19:35:27 +02:00
parent 442cc3ef53
commit 9e6d05e055
59 changed files with 4727 additions and 3430 deletions

View File

@@ -0,0 +1,44 @@
Table family_members {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
relationship text
birth_date date
notes text
created_at timestamptz [not null, default: `now()`]
}
Table activities {
id uuid [pk, default: `gen_random_uuid()`]
family_member_id uuid [ref: > family_members.id]
title text [not null]
activity_type text
day_of_week text
start_time time
end_time time
start_date date
end_date date
location text
notes text
created_at timestamptz [not null, default: `now()`]
indexes {
day_of_week
family_member_id
(start_date, end_date)
}
}
Table important_dates {
id uuid [pk, default: `gen_random_uuid()`]
family_member_id uuid [ref: > family_members.id]
title text [not null]
date_value date [not null]
recurring_yearly boolean [not null, default: false]
reminder_days_before int [not null, default: 7]
notes text
created_at timestamptz [not null, default: `now()`]
indexes {
date_value
}
}

View File

@@ -0,0 +1,53 @@
Table professional_contacts {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
company text
title text
email text
phone text
linkedin_url text
how_we_met text
tags "text[]" [not null, default: `'{}'`]
notes text
last_contacted timestamptz
follow_up_date date
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
last_contacted
follow_up_date
}
}
Table contact_interactions {
id uuid [pk, default: `gen_random_uuid()`]
contact_id uuid [not null, ref: > professional_contacts.id]
interaction_type text [not null]
occurred_at timestamptz [not null, default: `now()`]
summary text [not null]
follow_up_needed boolean [not null, default: false]
follow_up_notes text
created_at timestamptz [not null, default: `now()`]
indexes {
(contact_id, occurred_at)
}
}
Table opportunities {
id uuid [pk, default: `gen_random_uuid()`]
contact_id uuid [ref: > professional_contacts.id]
title text [not null]
description text
stage text [not null, default: 'identified']
value "decimal(12,2)"
expected_close_date date
notes text
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
stage
}
}

View File

@@ -0,0 +1,31 @@
Table household_items {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
category text
location text
details jsonb [not null, default: `'{}'`]
notes text
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
category
}
}
Table household_vendors {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
service_type text
phone text
email text
website text
notes text
rating int
last_used date
created_at timestamptz [not null, default: `now()`]
indexes {
service_type
}
}

View File

@@ -0,0 +1,30 @@
Table maintenance_tasks {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
category text
frequency_days int
last_completed timestamptz
next_due timestamptz
priority text [not null, default: 'medium']
notes text
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
next_due
}
}
Table maintenance_logs {
id uuid [pk, default: `gen_random_uuid()`]
task_id uuid [not null, ref: > maintenance_tasks.id]
completed_at timestamptz [not null, default: `now()`]
performed_by text
cost "decimal(10,2)"
notes text
next_action text
indexes {
(task_id, completed_at)
}
}

View File

@@ -0,0 +1,49 @@
Table recipes {
id uuid [pk, default: `gen_random_uuid()`]
name text [not null]
cuisine text
prep_time_minutes int
cook_time_minutes int
servings int
ingredients jsonb [not null, default: `'[]'`]
instructions jsonb [not null, default: `'[]'`]
tags "text[]" [not null, default: `'{}'`]
rating int
notes text
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
cuisine
tags
}
}
Table meal_plans {
id uuid [pk, default: `gen_random_uuid()`]
week_start date [not null]
day_of_week text [not null]
meal_type text [not null]
recipe_id uuid [ref: > recipes.id]
custom_meal text
servings int
notes text
created_at timestamptz [not null, default: `now()`]
indexes {
week_start
}
}
Table shopping_lists {
id uuid [pk, default: `gen_random_uuid()`]
week_start date [unique, not null]
items jsonb [not null, default: `'[]'`]
notes text
created_at timestamptz [not null, default: `now()`]
updated_at timestamptz [not null, default: `now()`]
indexes {
week_start
}
}