diff --git a/src/routes/core/+page.svelte b/src/routes/core/+page.svelte index aa107ce1..d09288f0 100644 --- a/src/routes/core/+page.svelte +++ b/src/routes/core/+page.svelte @@ -1,5 +1,5 @@ -
-
-

Æ Core Management

-
-

Active Account

-

{$ae_loc.account_name ?? 'Loading...'}

+
+
+
+
+ +
+
+

Æ Core Management

+

System Infrastructure & Identity

+
+
+
+

+ Active Account +

+

{$ae_loc.account_name ?? 'Loading...'}

-
+
-
-
- -

Accounts

+
+
+
+
+ +
+

Accounts

+
+

Manage client accounts and high-level system settings.

-

Manage client accounts and high-level system settings.

- - Manage Accounts + + Manage
-
-
- -

Sites

+
+
+
+
+ +
+

Sites

+
+

Configure sites and domains associated with the active account.

-

Configure sites and domains associated with the active account.

- - Manage Sites + + Manage
-
-
- -

Users

+
+
+
+
+ +
+

Users

+
+

Manage system access, permissions, and user credentials.

-

Manage system access, permissions, and user credentials.

- - Manage Users + + Manage
-
-
- -

People

+
+
+
+
+ +
+

People

+
+

Search and manage person records and their user linking.

-

Search and manage person records and their user linking.

- - Manage People + + Manage + +
+ + +
+
+
+
+ +
+

Addresses

+
+

Manage physical locations, shipping, and billing addresses.

+
+ + Manage + +
+ + +
+
+
+
+ +
+

Contacts

+
+

Maintain support contacts, office numbers, and digital links.

+
+ + Manage
-
-
- -

Activity Logs

+
+
+
+
+ +
+

Activity Logs

+
+

Monitor system actions and historical changes for the account.

-

Monitor system actions and historical changes for the account.

- - View Activity Logs + + View Logs
-
-
- -

Lookups

+
+
+
+
+ +
+

Lookups

+
+

View system lookup tables (countries, time zones, etc).

-

View system lookup tables (countries, time zones, etc).

- - View Lookups + + View
-
\ No newline at end of file + \ No newline at end of file diff --git a/src/routes/core/accounts/+page.svelte b/src/routes/core/accounts/+page.svelte index d919a2c2..fda5140a 100644 --- a/src/routes/core/accounts/+page.svelte +++ b/src/routes/core/accounts/+page.svelte @@ -3,12 +3,22 @@ import { load_ae_obj_li__account, create_ae_obj__account } from '$lib/ae_core/ae_core__account'; import { ae_api, ae_loc, slct } from '$lib/stores/ae_stores'; import { goto } from '$app/navigation'; - import { FileText, Plus, Search, Building } from 'lucide-svelte'; + import { FileText, Plus, Search, Building, ListFilter, RefreshCcw, X, ExternalLink, Calendar, ShieldCheck } from 'lucide-svelte'; let account_li: any[] = $state([]); let loading = $state(true); let qry_enabled = $state('all'); let qry_hidden = $state('all'); + let qry_str = $state(''); + + let filtered_li = $derived( + qry_str + ? account_li.filter(a => + a.name?.toLowerCase().includes(qry_str.toLowerCase()) || + a.code?.toLowerCase().includes(qry_str.toLowerCase()) + ) + : account_li + ); async function load_accounts() { loading = true; @@ -47,84 +57,125 @@ } -
-
-
- -

Account Management

+
+
+
+
+ +
+
+

Account Management

+

Client Entities & Billing

+
-
-
- - - +
+
+
+ +
+
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+
{#if loading} -
-
+
+
- {:else if account_li.length === 0} -
-

No accounts found matching your filters.

+ {:else if filtered_li.length === 0} +
+ +

No Accounts Found

+

Try adjusting your filters or add a new client account.

{:else} -
- - - - - - - - - - - - {#each account_li as acct} - - - - - - - - {/each} - -
NameCodeCreatedStatusActions
{acct.name}{acct.code || '--'}{new Date(acct.created_on).toLocaleDateString()} - {#if acct.enable} - Enabled - {:else} - Disabled - {/if} - {#if acct.hide} - Hidden - {/if} - - - Manage - -
+
+

+ + Directory Results + {filtered_li.length} found +

+ +
+ {#each filtered_li as acct} +
+
+ {#if acct.hide} + Hidden + {/if} + + {acct.enable ? 'Active' : 'Disabled'} + +
+ +
+
+ +
+
+

{acct.name}

+

Code: {acct.code || '--'}

+
+
+ +
+
+ + Created: {new Date(acct.created_on).toLocaleDateString()} +
+
+ + {acct.account_id_random} +
+
+ + + Manage Account + +
+ {/each} +
{/if}
diff --git a/src/routes/core/activity_logs/+page.svelte b/src/routes/core/activity_logs/+page.svelte index d42c3c7a..bb1a3bd4 100644 --- a/src/routes/core/activity_logs/+page.svelte +++ b/src/routes/core/activity_logs/+page.svelte @@ -3,7 +3,7 @@ import { onMount } from 'svelte'; import { qry__activity_log } from '$lib/ae_core/ae_core__activity_log'; import { ae_api, ae_loc } from '$lib/stores/ae_stores'; - import { Search, History, Calendar, User, Tag, Activity } from 'lucide-svelte'; + import { Search, History, Calendar, User, Tag, Activity, ListFilter, RefreshCcw, Clock, ShieldCheck } from 'lucide-svelte'; import { ae_util } from '$lib/ae_utils/ae_utils'; // State @@ -46,136 +46,175 @@ } -
-
-
- -

Activity Logs

+
+
+
+
+ +
+
+

Activity Logs

+

Audit Trail & History

+
+
+
+
-
-
- +
+
- - - - +
+
{#if loading} -
-
+
+
{:else if log_li.length === 0} -
-

No activity logs found for this account matching your criteria.

+
+ +

No Logs Found

+

Try broadening your search or check another account.

{:else} -
- - - - - - - - - - - - {#each log_li as log} - - - +
+

+ + System Events + {log_li.length} entries shown +

- -
+ + + + + {/each} + +
Date/TimeUser/PersonActionContextSummary
-
- {ae_util.iso_datetime_formatter(log.created_on, 'date_short')} - {ae_util.iso_datetime_formatter(log.created_on, 'time_12_short')} -
-
-
- {#if log.person_full_name || log.person_id_random} - - - {log.person_full_name || 'Person'} +
+ + + + + + + + + + + + {#each log_li as log} + + + + + + + + + - - - - - - + - - - - {/each} - -
TimestampIdentityActionResourceSummary
+
+ +
+ {ae_util.iso_datetime_formatter(log.created_on, 'date_short')} + + {ae_util.iso_datetime_formatter(log.created_on, 'time_12_short')} + +
+
+
+
+
+ +
+
+ {#if log.person_full_name || log.person_id_random} + {log.person_full_name || 'Person'} + ID: {log.person_id_random || '--'} + {:else if log.name} + {log.name} + {:else} + Unknown + {/if} +
+
+
+
+ + {log.action} - {log.person_id_random || '--'} - {:else if log.name} - {log.name} - {:else} - -- - {/if} -
-
- - {log.action} - - {#if log.action_with} - via {log.action_with} - {/if} - - {#if log.object_type} -
- - - {log.object_type} - - {#if log.external_client_id} - {log.external_client_id} + {#if log.action_with} + + via {log.action_with} + {/if}
- {:else} - -- - {/if} -
-
- {#if log.summary} - {log.summary} + +
+ {#if log.object_type} +
+ +
+ {log.object_type} + {#if log.external_client_id} + {log.external_client_id} + {/if} +
+
+ {:else} + -- {/if} - {#if log.description} -

{log.description}

- {/if} - {#if !log.summary && !log.description} - No detail provided - {/if} - -
+
+
+ {#if log.summary} + {log.summary} + {/if} + {#if log.description} +

{log.description}

+ {/if} + {#if !log.summary && !log.description} + No detail record + {/if} +
+
+
{/if}
diff --git a/src/routes/core/lookups/+page.svelte b/src/routes/core/lookups/+page.svelte index b04d3ca1..37910402 100644 --- a/src/routes/core/lookups/+page.svelte +++ b/src/routes/core/lookups/+page.svelte @@ -2,7 +2,7 @@ import { onMount } from 'svelte'; import { ae_api, ae_loc } from '$lib/stores/ae_stores'; import { goto } from '$app/navigation'; - import { List, Globe, Clock, MapPin } from 'lucide-svelte'; + import { List, Globe, Clock, MapPin, ListFilter, RefreshCcw, Landmark, Info } from 'lucide-svelte'; import { api } from '$lib/api/api'; let loading = $state(true); @@ -15,14 +15,19 @@ async function load_lookups() { loading = true; // Using existing generic lookup loaders if available, or raw API calls - const [countries, time_zones] = await Promise.all([ - api.get_ae_obj_li_for_lu({ api_cfg: $ae_api, for_lu_type: 'country', log_lvl: 0 }), - api.get_ae_obj_li_for_lu({ api_cfg: $ae_api, for_lu_type: 'time_zone', log_lvl: 0 }) - ]); + try { + const [countries, time_zones] = await Promise.all([ + api.get_ae_obj_li_for_lu({ api_cfg: $ae_api, for_lu_type: 'country', log_lvl: 0 }), + api.get_ae_obj_li_for_lu({ api_cfg: $ae_api, for_lu_type: 'time_zone', log_lvl: 0 }) + ]); - lookups.countries = countries || []; - lookups.time_zones = time_zones || []; - loading = false; + lookups.countries = countries || []; + lookups.time_zones = time_zones || []; + } catch (error) { + console.error('Failed to load lookups:', error); + } finally { + loading = false; + } } onMount(() => { @@ -35,34 +40,54 @@
-
- -

System Lookups

+
+
+
+ +
+
+

System Lookups

+

Global Reference Data

+
+
+
+ +
{#if loading} -
+
+
+
{:else} -
+
-
-
- -

Countries

-
-
- +
+

+ + Country Reference + {lookups.countries.length} Records +

+ +
+
- + - + {#each lookups.countries as c} - - - + + + {/each} @@ -71,24 +96,26 @@ -
-
- -

Time Zones

-
-
-
NameISO Alpha-2ISO Alpha-2
{c.name}{c.alpha_2_code}
{c.name}{c.alpha_2_code}
+
+

+ + Time Zone Reference + {lookups.time_zones.length} Zones +

+ +
+
- + - + {#each lookups.time_zones as tz} - - - + + + {/each} @@ -96,5 +123,10 @@ + +
+ +

Lookup data is synchronized with the global system database and used for addresses, event scheduling, and localized displays.

+
{/if} diff --git a/src/routes/core/sites/+page.svelte b/src/routes/core/sites/+page.svelte index 89f8e790..3251574f 100644 --- a/src/routes/core/sites/+page.svelte +++ b/src/routes/core/sites/+page.svelte @@ -3,12 +3,22 @@ import { load_ae_obj_li__site, create_ae_obj__site } from '$lib/ae_core/ae_core__site'; import { ae_api, ae_loc, slct } from '$lib/stores/ae_stores'; import { goto } from '$app/navigation'; - import { Plus, Search, Globe } from 'lucide-svelte'; + import { Plus, Search, Globe, ListFilter, RefreshCcw, X, ExternalLink, Calendar, ShieldCheck } from 'lucide-svelte'; let site_li: any[] = $state([]); let loading = $state(true); let qry_enabled = $state('all'); let qry_hidden = $state('all'); + let qry_str = $state(''); + + let filtered_li = $derived( + qry_str + ? site_li.filter(s => + s.name?.toLowerCase().includes(qry_str.toLowerCase()) || + s.code?.toLowerCase().includes(qry_str.toLowerCase()) + ) + : site_li + ); async function load_sites() { if (!$ae_loc.account_id) return; @@ -50,84 +60,125 @@ } -
-
-
- -

Site Management

+
+
+
+
+ +
+
+

Site Management

+

Digital Properties & Domains

+
-
-
- - - +
+
+
+ +
+
+ +
+ + +
+
+ +
+
+ + +
+ +
+ + +
+
+
{#if loading} -
-
+
+
- {:else if site_li.length === 0} -
-

No sites found for this account matching your filters.

+ {:else if filtered_li.length === 0} +
+ +

No Sites Found

+

Sites for this account will appear here. Add your first site to get started.

{:else} -
-
Zone NameOffsetOffset (Hours)
{tz.name}{tz.offset_seconds / 3600}h
{tz.name}{tz.offset_seconds / 3600}h
- - - - - - - - - - - {#each site_li as site} - - - - - - - - {/each} - -
NameCodeCreatedStatusActions
{site.name}{site.code || '--'}{new Date(site.created_on).toLocaleDateString()} - {#if site.enable} - Enabled - {:else} - Disabled - {/if} - {#if site.hide} - Hidden - {/if} - - - Manage - -
+
+

+ + Linked Properties + {filtered_li.length} found +

+ +
+ {#each filtered_li as site} +
+
+ {#if site.hide} + Hidden + {/if} + + {site.enable ? 'Active' : 'Disabled'} + +
+ +
+
+ +
+
+

{site.name}

+

Code: {site.code || '--'}

+
+
+ +
+
+ + Created: {new Date(site.created_on).toLocaleDateString()} +
+
+ + {site.site_id_random} +
+
+ + + Manage Site + +
+ {/each} +
{/if}