From 6b88cf11a158c1b73403d451eb4ec2cf50b33428 Mon Sep 17 00:00:00 2001 From: Raj Nandan Sharma Date: Thu, 22 Jan 2026 18:29:42 +0530 Subject: [PATCH] changes --- .DS_Store | Bin 6148 -> 6148 bytes .gitignore | 3 +- components.json | 28 +- migrations/20250111153517_init.js | 254 ++++++------ ...50201152526_add_new_column_to_incidents.js | 12 +- package-lock.json | 361 +----------------- seeds/monitors.ts | 2 + src/lib/components/nav.svelte | 4 +- src/lib/components/shareMenu.svelte | 10 +- .../ui/accordion/accordion-content.svelte | 30 +- .../ui/accordion/accordion-item.svelte | 18 +- .../ui/accordion/accordion-trigger.svelte | 52 +-- .../components/ui/accordion/accordion.svelte | 15 +- src/lib/components/ui/accordion/index.ts | 18 +- .../ui/alert/alert-description.svelte | 32 +- .../components/ui/alert/alert-title.svelte | 26 +- src/lib/components/ui/alert/alert.svelte | 61 ++- src/lib/components/ui/alert/index.ts | 14 +- .../ui/avatar/avatar-fallback.svelte | 18 +- .../components/ui/avatar/avatar-image.svelte | 18 +- src/lib/components/ui/avatar/avatar.svelte | 26 +- src/lib/components/ui/avatar/index.ts | 14 +- src/lib/components/ui/badge/badge.svelte | 74 ++-- .../ui/breadcrumb/breadcrumb-ellipsis.svelte | 32 +- .../ui/breadcrumb/breadcrumb-item.svelte | 21 +- .../ui/breadcrumb/breadcrumb-link.svelte | 46 +-- .../ui/breadcrumb/breadcrumb-list.svelte | 24 +- .../ui/breadcrumb/breadcrumb-page.svelte | 32 +- .../ui/breadcrumb/breadcrumb-separator.svelte | 35 +- .../ui/breadcrumb/breadcrumb.svelte | 26 +- src/lib/components/ui/breadcrumb/index.ts | 30 +- .../button-group-separator.svelte | 28 +- .../ui/button-group/button-group-text.svelte | 44 +-- .../ui/button-group/button-group.svelte | 68 ++-- src/lib/components/ui/button-group/index.ts | 14 +- src/lib/components/ui/button/button.svelte | 140 +++---- src/lib/components/ui/button/index.ts | 23 +- src/lib/components/ui/card/card-action.svelte | 26 +- .../components/ui/card/card-content.svelte | 18 +- .../ui/card/card-description.svelte | 25 +- src/lib/components/ui/card/card-footer.svelte | 26 +- src/lib/components/ui/card/card-header.svelte | 32 +- src/lib/components/ui/card/card-title.svelte | 25 +- src/lib/components/ui/card/card.svelte | 29 +- src/lib/components/ui/card/index.ts | 30 +- .../ui/chart/chart-container.svelte | 126 +++--- .../components/ui/chart/chart-style.svelte | 50 +-- .../components/ui/chart/chart-tooltip.svelte | 277 +++++++------- src/lib/components/ui/chart/chart-utils.ts | 67 ++-- .../components/ui/checkbox/checkbox.svelte | 58 +-- src/lib/components/ui/checkbox/index.ts | 6 +- .../components/ui/dialog/dialog-close.svelte | 4 +- .../ui/dialog/dialog-content.svelte | 78 ++-- .../ui/dialog/dialog-description.svelte | 18 +- .../components/ui/dialog/dialog-footer.svelte | 26 +- .../components/ui/dialog/dialog-header.svelte | 26 +- .../ui/dialog/dialog-overlay.svelte | 24 +- .../components/ui/dialog/dialog-portal.svelte | 4 +- .../components/ui/dialog/dialog-title.svelte | 18 +- .../ui/dialog/dialog-trigger.svelte | 4 +- src/lib/components/ui/dialog/dialog.svelte | 4 +- src/lib/components/ui/dialog/index.ts | 42 +- .../dropdown-menu-checkbox-group.svelte | 19 +- .../dropdown-menu-checkbox-item.svelte | 70 ++-- .../dropdown-menu-content.svelte | 46 +-- .../dropdown-menu-group-heading.svelte | 32 +- .../dropdown-menu/dropdown-menu-group.svelte | 4 +- .../dropdown-menu/dropdown-menu-item.svelte | 42 +- .../dropdown-menu/dropdown-menu-label.svelte | 34 +- .../dropdown-menu/dropdown-menu-portal.svelte | 4 +- .../dropdown-menu-radio-group.svelte | 15 +- .../dropdown-menu-radio-item.svelte | 50 ++- .../dropdown-menu-separator.svelte | 18 +- .../dropdown-menu-shortcut.svelte | 26 +- .../dropdown-menu-sub-content.svelte | 24 +- .../dropdown-menu-sub-trigger.svelte | 44 +-- .../ui/dropdown-menu/dropdown-menu-sub.svelte | 4 +- .../dropdown-menu-trigger.svelte | 4 +- .../ui/dropdown-menu/dropdown-menu.svelte | 4 +- src/lib/components/ui/dropdown-menu/index.ts | 68 ++-- .../components/ui/field/field-content.svelte | 26 +- .../ui/field/field-description.svelte | 36 +- .../components/ui/field/field-error.svelte | 94 ++--- .../components/ui/field/field-group.svelte | 32 +- .../components/ui/field/field-label.svelte | 33 +- .../components/ui/field/field-legend.svelte | 39 +- .../ui/field/field-separator.svelte | 57 ++- src/lib/components/ui/field/field-set.svelte | 34 +- .../components/ui/field/field-title.svelte | 32 +- src/lib/components/ui/field/field.svelte | 82 ++-- src/lib/components/ui/field/index.ts | 40 +- src/lib/components/ui/input-group/index.ts | 26 +- .../ui/input-group/input-group-addon.svelte | 85 ++--- .../ui/input-group/input-group-button.svelte | 74 ++-- .../ui/input-group/input-group-input.svelte | 34 +- .../ui/input-group/input-group-text.svelte | 30 +- .../input-group/input-group-textarea.svelte | 34 +- .../ui/input-group/input-group.svelte | 54 +-- src/lib/components/ui/input/index.ts | 6 +- src/lib/components/ui/input/input.svelte | 85 ++--- src/lib/components/ui/item/index.ts | 42 +- .../components/ui/item/item-actions.svelte | 25 +- .../components/ui/item/item-content.svelte | 26 +- .../ui/item/item-description.svelte | 34 +- src/lib/components/ui/item/item-footer.svelte | 26 +- src/lib/components/ui/item/item-group.svelte | 28 +- src/lib/components/ui/item/item-header.svelte | 26 +- src/lib/components/ui/item/item-media.svelte | 60 +-- .../components/ui/item/item-separator.svelte | 20 +- src/lib/components/ui/item/item-title.svelte | 26 +- src/lib/components/ui/item/item.svelte | 94 ++--- src/lib/components/ui/label/index.ts | 6 +- src/lib/components/ui/label/label.svelte | 24 +- .../components/ui/navigation-menu/index.ts | 34 +- .../navigation-menu-content.svelte | 26 +- .../navigation-menu-indicator.svelte | 26 +- .../navigation-menu-item.svelte | 18 +- .../navigation-menu-link.svelte | 24 +- .../navigation-menu-list.svelte | 18 +- .../navigation-menu-viewport.svelte | 28 +- .../ui/navigation-menu/navigation-menu.svelte | 45 +-- src/lib/components/ui/popover/index.ts | 22 +- .../ui/popover/popover-close.svelte | 4 +- .../ui/popover/popover-content.svelte | 50 +-- .../ui/popover/popover-portal.svelte | 4 +- .../ui/popover/popover-trigger.svelte | 17 +- src/lib/components/ui/popover/popover.svelte | 4 +- src/lib/components/ui/radio-group/index.ts | 10 +- .../ui/radio-group/radio-group-item.svelte | 46 ++- .../ui/radio-group/radio-group.svelte | 26 +- src/lib/components/ui/select/index.ts | 46 +-- .../ui/select/select-content.svelte | 76 ++-- .../ui/select/select-group-heading.svelte | 28 +- .../components/ui/select/select-group.svelte | 4 +- .../components/ui/select/select-item.svelte | 62 +-- .../components/ui/select/select-label.svelte | 26 +- .../components/ui/select/select-portal.svelte | 4 +- .../select/select-scroll-down-button.svelte | 26 +- .../ui/select/select-scroll-up-button.svelte | 26 +- .../ui/select/select-separator.svelte | 20 +- .../ui/select/select-trigger.svelte | 44 +-- src/lib/components/ui/select/select.svelte | 8 +- src/lib/components/ui/separator/index.ts | 6 +- .../components/ui/separator/separator.svelte | 30 +- src/lib/components/ui/sheet/index.ts | 42 +- .../components/ui/sheet/sheet-close.svelte | 4 +- .../components/ui/sheet/sheet-content.svelte | 102 ++--- .../ui/sheet/sheet-description.svelte | 18 +- .../components/ui/sheet/sheet-footer.svelte | 25 +- .../components/ui/sheet/sheet-header.svelte | 25 +- .../components/ui/sheet/sheet-overlay.svelte | 24 +- .../components/ui/sheet/sheet-portal.svelte | 4 +- .../components/ui/sheet/sheet-title.svelte | 18 +- .../components/ui/sheet/sheet-trigger.svelte | 4 +- src/lib/components/ui/sheet/sheet.svelte | 4 +- .../components/ui/sidebar/context.svelte.ts | 88 +++-- src/lib/components/ui/sidebar/index.ts | 96 ++--- .../ui/sidebar/sidebar-content.svelte | 34 +- .../ui/sidebar/sidebar-footer.svelte | 28 +- .../ui/sidebar/sidebar-group-action.svelte | 56 +-- .../ui/sidebar/sidebar-group-content.svelte | 28 +- .../ui/sidebar/sidebar-group-label.svelte | 52 +-- .../ui/sidebar/sidebar-group.svelte | 28 +- .../ui/sidebar/sidebar-header.svelte | 28 +- .../ui/sidebar/sidebar-input.svelte | 30 +- .../ui/sidebar/sidebar-inset.svelte | 34 +- .../ui/sidebar/sidebar-menu-action.svelte | 70 ++-- .../ui/sidebar/sidebar-menu-badge.svelte | 44 +-- .../ui/sidebar/sidebar-menu-button.svelte | 170 ++++----- .../ui/sidebar/sidebar-menu-item.svelte | 28 +- .../ui/sidebar/sidebar-menu-skeleton.svelte | 56 +-- .../ui/sidebar/sidebar-menu-sub-button.svelte | 70 ++-- .../ui/sidebar/sidebar-menu-sub-item.svelte | 28 +- .../ui/sidebar/sidebar-menu-sub.svelte | 36 +- .../components/ui/sidebar/sidebar-menu.svelte | 28 +- .../ui/sidebar/sidebar-provider.svelte | 78 ++-- .../components/ui/sidebar/sidebar-rail.svelte | 56 +-- .../ui/sidebar/sidebar-separator.svelte | 22 +- .../ui/sidebar/sidebar-trigger.svelte | 54 +-- src/lib/components/ui/sidebar/sidebar.svelte | 184 +++++---- src/lib/components/ui/skeleton/index.ts | 6 +- .../components/ui/skeleton/skeleton.svelte | 22 +- src/lib/components/ui/sonner/sonner.svelte | 54 +-- src/lib/components/ui/spinner/spinner.svelte | 15 +- src/lib/components/ui/switch/index.ts | 6 +- src/lib/components/ui/switch/switch.svelte | 44 +-- src/lib/components/ui/table/index.ts | 34 +- src/lib/components/ui/table/table-body.svelte | 25 +- .../components/ui/table/table-caption.svelte | 26 +- src/lib/components/ui/table/table-cell.svelte | 24 +- .../components/ui/table/table-footer.svelte | 26 +- src/lib/components/ui/table/table-head.svelte | 27 +- .../components/ui/table/table-header.svelte | 25 +- src/lib/components/ui/table/table-row.svelte | 32 +- src/lib/components/ui/table/table.svelte | 27 +- src/lib/components/ui/tabs/index.ts | 18 +- .../components/ui/tabs/tabs-content.svelte | 17 +- src/lib/components/ui/tabs/tabs-list.svelte | 24 +- .../components/ui/tabs/tabs-trigger.svelte | 24 +- src/lib/components/ui/tabs/tabs.svelte | 24 +- src/lib/components/ui/textarea/index.ts | 6 +- .../components/ui/textarea/textarea.svelte | 34 +- src/lib/components/ui/toggle/index.ts | 13 + src/lib/components/ui/toggle/toggle.svelte | 52 +++ src/lib/components/ui/tooltip/index.ts | 22 +- .../ui/tooltip/tooltip-content.svelte | 92 ++--- .../ui/tooltip/tooltip-portal.svelte | 4 +- .../ui/tooltip/tooltip-provider.svelte | 4 +- .../ui/tooltip/tooltip-trigger.svelte | 4 +- src/lib/components/ui/tooltip/tooltip.svelte | 4 +- src/lib/hooks/is-mobile.svelte.ts | 6 +- src/lib/locales/it.json | 183 +++++---- src/lib/locales/locales.json | 144 +++---- src/lib/server/db/seedMonitorData.ts | 21 +- src/lib/server/services/apiCall.ts | 14 +- src/lib/server/types/monitor.ts | 1 + src/lib/utils.ts | 2 +- src/routes/(kener)/+layout.server.ts | 2 +- src/routes/(kener)/+layout.ts | 2 +- src/routes/(manage)/+layout.server.ts | 10 + .../manage/app/monitors/[tag]/+page.svelte | 133 ++++--- src/routes/(manage)/manage/nav-user.svelte | 273 ++++++++++++- src/routes/(manage)/manage/setup/+page.svelte | 0 src/routes/docs.css | 2 +- tsconfig.json | 36 +- 225 files changed, 4158 insertions(+), 4484 deletions(-) create mode 100644 src/lib/components/ui/toggle/index.ts create mode 100644 src/lib/components/ui/toggle/toggle.svelte delete mode 100644 src/routes/(manage)/manage/setup/+page.svelte diff --git a/.DS_Store b/.DS_Store index d4a52e1092166736116c6410226da1289283575b..e2d59b8d4b5a6ed469314f170d08414be47cb36a 100644 GIT binary patch delta 330 zcmZoMXfc=|#>B)qF;Q%yo+2aL!~pBf3XBbmKvqw6JqJSyLn1>75GMg~F+*xnd2vBf zPJR*t1H<;Df}G6a5(9&4j7-cdtZeKY>>S)2vB4Sn<-sM1C8fnqiAB*MUPyj^P7;ir zm=ucQVi5v4>SrQ!@Eu;R@DB3qaN Do9<65 delta 64 zcmZoMXfc=|#>CJ*F;Q%yo+2a5!~knXmdQL!)tg(Hn^-naV6J1@%+A5j0aUWNk@-9G UWPTAtMuy2YJkpzEL{=~Z07MQEhyVZp diff --git a/.gitignore b/.gitignore index 1395e13c..c34196bf 100644 --- a/.gitignore +++ b/.gitignore @@ -28,4 +28,5 @@ uploads/* static/uploads/* !static/uploads/upload.dir temp.txt -temp.js \ No newline at end of file +temp.js +.DS_Store diff --git a/components.json b/components.json index 4cdeeca9..1523fff8 100644 --- a/components.json +++ b/components.json @@ -1,16 +1,16 @@ { - "$schema": "https://shadcn-svelte.com/schema.json", - "tailwind": { - "css": "src/routes/layout.css", - "baseColor": "zinc" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks", - "lib": "$lib" - }, - "typescript": true, - "registry": "https://shadcn-svelte.com/registry" + "$schema": "https://shadcn-svelte.com/schema.json", + "tailwind": { + "css": "src/routes/layout.css", + "baseColor": "zinc" + }, + "aliases": { + "components": "$lib/components", + "utils": "$lib/utils", + "ui": "$lib/components/ui", + "hooks": "$lib/hooks", + "lib": "$lib" + }, + "typescript": true, + "registry": "https://shadcn-svelte.com/registry" } diff --git a/migrations/20250111153517_init.js b/migrations/20250111153517_init.js index b9ce0e08..95e481cf 100644 --- a/migrations/20250111153517_init.js +++ b/migrations/20250111153517_init.js @@ -1,135 +1,133 @@ // migrations/YYYYMMDDHHMMSS_create_monitoring_tables.js export function up(knex) { - return ( - knex.schema - // Create monitoring_data table - .createTable("monitoring_data", (table) => { - table.string("monitor_tag", 255).notNullable(); - table.integer("timestamp").notNullable(); - table.text("status"); - table.float("latency", 8, 2); - table.text("type"); - table.primary(["monitor_tag", "timestamp"]); - }) - // Create monitor_alerts table - .createTable("monitor_alerts", (table) => { - table.increments("id").primary(); - table.string("monitor_tag", 255).notNullable(); - table.string("monitor_status", 255).notNullable(); - table.string("alert_status", 255).notNullable(); - table.integer("health_checks").notNullable(); - table.integer("incident_number").defaultTo(0); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - // Add index to monitor_alerts table - .raw( - "CREATE INDEX idx_monitor_tag_created_at ON monitor_alerts (monitor_tag, created_at)" - ) - .createTable("site_data", (table) => { - table.increments("id").primary(); - table.string("key", 255).notNullable().unique(); - table.text("value").notNullable(); - table.string("data_type", 255).notNullable(); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - .createTable("monitors", (table) => { - table.increments("id").primary(); - table.string("tag", 255).notNullable().unique(); - table.string("name", 255).notNullable().unique(); - table.text("description"); - table.text("image"); - table.string("cron", 255); - table.string("default_status", 255); - table.string("status", 255); - table.string("category_name", 255); - table.string("monitor_type", 255); - table.string("down_trigger", 255); - table.string("degraded_trigger", 255); - table.text("type_data"); - table.integer("day_degraded_minimum_count"); - table.integer("day_down_minimum_count"); - table.string("include_degraded_in_downtime", 255).defaultTo("NO"); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - .createTable("triggers", (table) => { - table.increments("id").primary(); - table.string("name", 255).notNullable().unique(); - table.string("trigger_type", 255); - table.text("trigger_desc"); - table.string("trigger_status", 255); - table.text("trigger_meta"); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - .createTable("users", (table) => { - table.increments("id").primary(); - table.string("email", 255).notNullable().unique(); - table.string("name", 255).notNullable(); - table.string("password_hash", 255).notNullable(); - table.integer("is_active").defaultTo(1); - table.integer("is_verified").defaultTo(0); - table.string("role", 255).defaultTo("user"); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - .createTable("api_keys", (table) => { - table.increments("id").primary(); - table.string("name", 255).notNullable().unique(); - table.string("hashed_key", 255).notNullable().unique(); - table.string("masked_key", 255).notNullable(); - table.string("status", 255).defaultTo("ACTIVE"); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - }) - .createTable("incidents", (table) => { - table.increments("id").primary(); - table.string("title", 255).notNullable(); - table.integer("start_date_time").notNullable(); - table.integer("end_date_time"); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - table.string("status", 255).defaultTo("ACTIVE"); - table.string("state", 255).defaultTo("INVESTIGATING"); - }) - .createTable("incident_monitors", (table) => { - table.increments("id").primary(); - table.string("monitor_tag", 255).notNullable(); - table.string("monitor_impact", 255); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - table.integer("incident_id").notNullable(); - table.unique(["monitor_tag", "incident_id"]); - }) - .createTable("incident_comments", (table) => { - table.increments("id").primary(); - table.text("comment").notNullable(); - table.integer("incident_id").notNullable(); - table.integer("commented_at").notNullable(); - table.timestamp("created_at").defaultTo(knex.fn.now()); - table.timestamp("updated_at").defaultTo(knex.fn.now()); - table.string("status", 255).defaultTo("ACTIVE"); - table.string("state", 255).defaultTo("INVESTIGATING"); - }) - ); + return ( + knex.schema + // Create monitoring_data table + .createTable("monitoring_data", (table) => { + table.string("monitor_tag", 255).notNullable(); + table.integer("timestamp").notNullable(); + table.text("status"); + table.float("latency", 8, 2); + table.text("type"); + table.primary(["monitor_tag", "timestamp"]); + }) + // Create monitor_alerts table + .createTable("monitor_alerts", (table) => { + table.increments("id").primary(); + table.string("monitor_tag", 255).notNullable(); + table.string("monitor_status", 255).notNullable(); + table.string("alert_status", 255).notNullable(); + table.integer("health_checks").notNullable(); + table.integer("incident_number").defaultTo(0); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + // Add index to monitor_alerts table + .raw("CREATE INDEX idx_monitor_tag_created_at ON monitor_alerts (monitor_tag, created_at)") + .createTable("site_data", (table) => { + table.increments("id").primary(); + table.string("key", 255).notNullable().unique(); + table.text("value").notNullable(); + table.string("data_type", 255).notNullable(); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + .createTable("monitors", (table) => { + table.increments("id").primary(); + table.string("tag", 255).notNullable().unique(); + table.string("name", 255).notNullable().unique(); + table.text("description"); + table.text("image"); + table.string("cron", 255); + table.string("default_status", 255); + table.string("status", 255); + table.string("category_name", 255); + table.string("monitor_type", 255); + table.string("down_trigger", 255); + table.string("degraded_trigger", 255); + table.text("type_data"); + table.integer("day_degraded_minimum_count"); + table.integer("day_down_minimum_count"); + table.string("include_degraded_in_downtime", 255).defaultTo("NO"); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + .createTable("triggers", (table) => { + table.increments("id").primary(); + table.string("name", 255).notNullable().unique(); + table.string("trigger_type", 255); + table.text("trigger_desc"); + table.string("trigger_status", 255); + table.text("trigger_meta"); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + .createTable("users", (table) => { + table.increments("id").primary(); + table.string("email", 255).notNullable().unique(); + table.string("name", 255).notNullable(); + table.string("password_hash", 255).notNullable(); + table.integer("is_active").defaultTo(1); + table.integer("is_verified").defaultTo(0); + table.string("role", 255).defaultTo("user"); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + .createTable("api_keys", (table) => { + table.increments("id").primary(); + table.string("name", 255).notNullable().unique(); + table.string("hashed_key", 255).notNullable().unique(); + table.string("masked_key", 255).notNullable(); + table.string("status", 255).defaultTo("ACTIVE"); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + }) + .createTable("incidents", (table) => { + table.increments("id").primary(); + table.string("title", 255).notNullable(); + table.integer("start_date_time").notNullable(); + table.integer("end_date_time"); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + table.string("status", 255).defaultTo("ACTIVE"); + table.string("state", 255).defaultTo("INVESTIGATING"); + }) + .createTable("incident_monitors", (table) => { + table.increments("id").primary(); + table.string("monitor_tag", 255).notNullable(); + table.string("monitor_impact", 255); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + table.integer("incident_id").notNullable(); + table.unique(["monitor_tag", "incident_id"]); + }) + .createTable("incident_comments", (table) => { + table.increments("id").primary(); + table.text("comment").notNullable(); + table.integer("incident_id").notNullable(); + table.integer("commented_at").notNullable(); + table.timestamp("created_at").defaultTo(knex.fn.now()); + table.timestamp("updated_at").defaultTo(knex.fn.now()); + table.string("status", 255).defaultTo("ACTIVE"); + table.string("state", 255).defaultTo("INVESTIGATING"); + }) + ); } export function down(knex) { - return ( - knex.schema - // Drop tables in reverse order - .dropTableIfExists("monitor_alerts") - .dropTableIfExists("monitoring_data") - .dropTableIfExists("site_data") - .dropTableIfExists("monitors") - .dropTableIfExists("triggers") - .dropTableIfExists("users") - .dropTableIfExists("api_keys") - .dropTableIfExists("incidents") - .dropTableIfExists("incident_monitors") - .dropTableIfExists("incident_comments") - ); + return ( + knex.schema + // Drop tables in reverse order + .dropTableIfExists("monitor_alerts") + .dropTableIfExists("monitoring_data") + .dropTableIfExists("site_data") + .dropTableIfExists("monitors") + .dropTableIfExists("triggers") + .dropTableIfExists("users") + .dropTableIfExists("api_keys") + .dropTableIfExists("incidents") + .dropTableIfExists("incident_monitors") + .dropTableIfExists("incident_comments") + ); } diff --git a/migrations/20250201152526_add_new_column_to_incidents.js b/migrations/20250201152526_add_new_column_to_incidents.js index cacd761e..0633d458 100644 --- a/migrations/20250201152526_add_new_column_to_incidents.js +++ b/migrations/20250201152526_add_new_column_to_incidents.js @@ -1,11 +1,11 @@ export function up(knex) { - return knex.schema.alterTable("incidents", function (table) { - table.text("incident_type").defaultTo("INCIDENT"); - }); + return knex.schema.alterTable("incidents", function (table) { + table.text("incident_type").defaultTo("INCIDENT"); + }); } export function down(knex) { - return knex.schema.alterTable("incidents", function (table) { - table.dropColumn("incident_type"); - }); + return knex.schema.alterTable("incidents", function (table) { + table.dropColumn("incident_type"); + }); } diff --git a/package-lock.json b/package-lock.json index 8daea2d1..eda0e59b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -128,8 +128,8 @@ } }, "../aven": { - "name": "@rajnandan1/aven", - "version": "0.1.1", + "name": "@rajnandan1/atticus", + "version": "1.0.0", "license": "MIT", "dependencies": { "@openai/agents": "^0.3.7", @@ -3008,17 +3008,6 @@ "hono": "^4" } }, - "node_modules/@modelcontextprotocol/sdk/node_modules/hono": { - "version": "4.11.5", - "resolved": "https://registry.npmjs.org/hono/-/hono-4.11.5.tgz", - "integrity": "sha512-WemPi9/WfyMwZs+ZUXdiwcCh9Y+m7L+8vki9MzDw3jJ+W9Lc+12HGsd368Qc1vZi1xwW8BWMMsnK5efYKPdt4g==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=16.9.0" - } - }, "node_modules/@msgpackr-extract/msgpackr-extract-darwin-arm64": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@msgpackr-extract/msgpackr-extract-darwin-arm64/-/msgpackr-extract-darwin-arm64-3.0.3.tgz", @@ -3168,29 +3157,6 @@ } } }, - "node_modules/@openai/agents-core/node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@openai/agents-openai": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@openai/agents-openai/-/agents-openai-0.3.9.tgz", @@ -3226,29 +3192,6 @@ } } }, - "node_modules/@openai/agents-openai/node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@openai/agents-realtime": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/@openai/agents-realtime/-/agents-realtime-0.3.9.tgz", @@ -3306,29 +3249,6 @@ } } }, - "node_modules/@openai/agents/node_modules/ws": { - "version": "8.19.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.19.0.tgz", - "integrity": "sha512-blAT2mjOEIi0ZzruJfIhb3nps74PRWTCz1IjglWEEpQl5XS/UNama6u2/rjFkDDouqr4L67ry+1aGIALViWjDg==", - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, "node_modules/@polka/url": { "version": "1.0.0-next.29", "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", @@ -8291,268 +8211,6 @@ "svelte": "^5.7.0" } }, - "node_modules/lightningcss": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.31.1.tgz", - "integrity": "sha512-l51N2r93WmGUye3WuFoN5k10zyvrVs0qfKBhyC5ogUQ6Ew6JUSswh78mbSO+IU3nTWsyOArqPCcShdQSadghBQ==", - "license": "MPL-2.0", - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.31.1", - "lightningcss-darwin-arm64": "1.31.1", - "lightningcss-darwin-x64": "1.31.1", - "lightningcss-freebsd-x64": "1.31.1", - "lightningcss-linux-arm-gnueabihf": "1.31.1", - "lightningcss-linux-arm64-gnu": "1.31.1", - "lightningcss-linux-arm64-musl": "1.31.1", - "lightningcss-linux-x64-gnu": "1.31.1", - "lightningcss-linux-x64-musl": "1.31.1", - "lightningcss-win32-arm64-msvc": "1.31.1", - "lightningcss-win32-x64-msvc": "1.31.1" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.31.1.tgz", - "integrity": "sha512-HXJF3x8w9nQ4jbXRiNppBCqeZPIAfUo8zE/kOEGbW5NZvGc/K7nMxbhIr+YlFlHW5mpbg/YFPdbnCh1wAXCKFg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.31.1.tgz", - "integrity": "sha512-02uTEqf3vIfNMq3h/z2cJfcOXnQ0GRwQrkmPafhueLb2h7mqEidiCzkE4gBMEH65abHRiQvhdcQ+aP0D0g67sg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.31.1.tgz", - "integrity": "sha512-1ObhyoCY+tGxtsz1lSx5NXCj3nirk0Y0kB/g8B8DT+sSx4G9djitg9ejFnjb3gJNWo7qXH4DIy2SUHvpoFwfTA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.31.1.tgz", - "integrity": "sha512-1RINmQKAItO6ISxYgPwszQE1BrsVU5aB45ho6O42mu96UiZBxEXsuQ7cJW4zs4CEodPUioj/QrXW1r9pLUM74A==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.31.1.tgz", - "integrity": "sha512-OOCm2//MZJ87CdDK62rZIu+aw9gBv4azMJuA8/KB74wmfS3lnC4yoPHm0uXZ/dvNNHmnZnB8XLAZzObeG0nS1g==", - "cpu": [ - "arm" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.31.1.tgz", - "integrity": "sha512-WKyLWztD71rTnou4xAD5kQT+982wvca7E6QoLpoawZ1gP9JM0GJj4Tp5jMUh9B3AitHbRZ2/H3W5xQmdEOUlLg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.31.1.tgz", - "integrity": "sha512-mVZ7Pg2zIbe3XlNbZJdjs86YViQFoJSpc41CbVmKBPiGmC4YrfeOyz65ms2qpAobVd7WQsbW4PdsSJEMymyIMg==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.31.1.tgz", - "integrity": "sha512-xGlFWRMl+0KvUhgySdIaReQdB4FNudfUTARn7q0hh/V67PVGCs3ADFjw+6++kG1RNd0zdGRlEKa+T13/tQjPMA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.31.1.tgz", - "integrity": "sha512-eowF8PrKHw9LpoZii5tdZwnBcYDxRw2rRCyvAXLi34iyeYfqCQNA9rmUM0ce62NlPhCvof1+9ivRaTY6pSKDaA==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.31.1.tgz", - "integrity": "sha512-aJReEbSEQzx1uBlQizAOBSjcmr9dCdL3XuC/6HLXAxmtErsj2ICo5yYggg1qOODQMtnjNQv2UHb9NpOuFtYe4w==", - "cpu": [ - "arm64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.31.1", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.31.1.tgz", - "integrity": "sha512-I9aiFrbd7oYHwlnQDqr1Roz+fTz61oDDJX7n9tYF9FJymH1cIN1DtKw3iYt6b8WZgEjoNwVSncwF4wx/ZedMhw==", - "cpu": [ - "x64" - ], - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/lilconfig": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", @@ -12839,21 +12497,6 @@ } } }, - "node_modules/svelte-check/node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "optional": true, - "peer": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/svelte-codemirror-editor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/svelte-codemirror-editor/-/svelte-codemirror-editor-2.1.0.tgz", diff --git a/seeds/monitors.ts b/seeds/monitors.ts index 9f228333..253f395a 100644 --- a/seeds/monitors.ts +++ b/seeds/monitors.ts @@ -21,6 +21,8 @@ export async function seed(knex: Knex): Promise { day_degraded_minimum_count: monitor.day_degraded_minimum_count, day_down_minimum_count: monitor.day_down_minimum_count, include_degraded_in_downtime: monitor.include_degraded_in_downtime, + is_hidden: monitor.is_hidden || "NO", + monitor_settings_json: monitor.monitor_settings_json || null, created_at: knex.fn.now(), updated_at: knex.fn.now(), }); diff --git a/src/lib/components/nav.svelte b/src/lib/components/nav.svelte index e71ece5e..52551504 100644 --- a/src/lib/components/nav.svelte +++ b/src/lib/components/nav.svelte @@ -64,7 +64,7 @@ {/if}
-
+
{#if data.site.logo} @@ -82,7 +82,7 @@ analyticsEvent("navigation", { name: navItem.name diff --git a/src/lib/components/shareMenu.svelte b/src/lib/components/shareMenu.svelte index f083e405..5ed43bec 100644 --- a/src/lib/components/shareMenu.svelte +++ b/src/lib/components/shareMenu.svelte @@ -140,7 +140,7 @@

{l(lang, "Share")}

-

+

{l(lang, "Share this monitor using a link with others")}

@@ -170,7 +170,7 @@

{l(lang, "Embed")}

-

+

{l(lang, "Embed this monitor using <script> or <iframe> in your app.")}

@@ -226,7 +226,7 @@

{l(lang, "Badge")}

-

+

{l(lang, "Get SVG badge for this monitor")}

+ {/if} diff --git a/src/lib/components/ui/button/index.ts b/src/lib/components/ui/button/index.ts index fb585d76..f5a3a69b 100644 --- a/src/lib/components/ui/button/index.ts +++ b/src/lib/components/ui/button/index.ts @@ -1,17 +1,12 @@ -import Root, { - type ButtonProps, - type ButtonSize, - type ButtonVariant, - buttonVariants, -} from "./button.svelte"; +import Root, { type ButtonProps, type ButtonSize, type ButtonVariant, buttonVariants } from "./button.svelte"; export { - Root, - type ButtonProps as Props, - // - Root as Button, - buttonVariants, - type ButtonProps, - type ButtonSize, - type ButtonVariant, + Root, + type ButtonProps as Props, + // + Root as Button, + buttonVariants, + type ButtonProps, + type ButtonSize, + type ButtonVariant, }; diff --git a/src/lib/components/ui/card/card-action.svelte b/src/lib/components/ui/card/card-action.svelte index cc36c566..aea2eb97 100644 --- a/src/lib/components/ui/card/card-action.svelte +++ b/src/lib/components/ui/card/card-action.svelte @@ -1,20 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/card/card-content.svelte b/src/lib/components/ui/card/card-content.svelte index bc90b837..c55a8d4d 100644 --- a/src/lib/components/ui/card/card-content.svelte +++ b/src/lib/components/ui/card/card-content.svelte @@ -1,15 +1,15 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/card/card-description.svelte b/src/lib/components/ui/card/card-description.svelte index 9b20ac70..86cc294e 100644 --- a/src/lib/components/ui/card/card-description.svelte +++ b/src/lib/components/ui/card/card-description.svelte @@ -1,20 +1,15 @@ -

- {@render children?.()} +

+ {@render children?.()}

diff --git a/src/lib/components/ui/card/card-footer.svelte b/src/lib/components/ui/card/card-footer.svelte index 2d4d0f24..65a10416 100644 --- a/src/lib/components/ui/card/card-footer.svelte +++ b/src/lib/components/ui/card/card-footer.svelte @@ -1,20 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/card/card-header.svelte b/src/lib/components/ui/card/card-header.svelte index 25017884..24f4ecb1 100644 --- a/src/lib/components/ui/card/card-header.svelte +++ b/src/lib/components/ui/card/card-header.svelte @@ -1,23 +1,23 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/card/card-title.svelte b/src/lib/components/ui/card/card-title.svelte index 74472311..f8be1f36 100644 --- a/src/lib/components/ui/card/card-title.svelte +++ b/src/lib/components/ui/card/card-title.svelte @@ -1,20 +1,15 @@ -
- {@render children?.()} +
+ {@render children?.()}
diff --git a/src/lib/components/ui/card/card.svelte b/src/lib/components/ui/card/card.svelte index 99448cc9..791da168 100644 --- a/src/lib/components/ui/card/card.svelte +++ b/src/lib/components/ui/card/card.svelte @@ -1,23 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/card/index.ts b/src/lib/components/ui/card/index.ts index 4d3fce48..406a5ceb 100644 --- a/src/lib/components/ui/card/index.ts +++ b/src/lib/components/ui/card/index.ts @@ -7,19 +7,19 @@ import Title from "./card-title.svelte"; import Action from "./card-action.svelte"; export { - Root, - Content, - Description, - Footer, - Header, - Title, - Action, - // - Root as Card, - Content as CardContent, - Description as CardDescription, - Footer as CardFooter, - Header as CardHeader, - Title as CardTitle, - Action as CardAction, + Root, + Content, + Description, + Footer, + Header, + Title, + Action, + // + Root as Card, + Content as CardContent, + Description as CardDescription, + Footer as CardFooter, + Header as CardHeader, + Title as CardTitle, + Action as CardAction, }; diff --git a/src/lib/components/ui/chart/chart-container.svelte b/src/lib/components/ui/chart/chart-container.svelte index 36c00004..93523b2f 100644 --- a/src/lib/components/ui/chart/chart-container.svelte +++ b/src/lib/components/ui/chart/chart-container.svelte @@ -1,80 +1,80 @@
- - {@render children?.()} + + {@render children?.()}
diff --git a/src/lib/components/ui/chart/chart-style.svelte b/src/lib/components/ui/chart/chart-style.svelte index 864ecc31..816d8a84 100644 --- a/src/lib/components/ui/chart/chart-style.svelte +++ b/src/lib/components/ui/chart/chart-style.svelte @@ -1,37 +1,37 @@ {#if themeContents} - {#key id} - - {themeContents} - - {/key} + {#key id} + + {themeContents} + + {/key} {/if} diff --git a/src/lib/components/ui/chart/chart-tooltip.svelte b/src/lib/components/ui/chart/chart-tooltip.svelte index 6eb66ff1..9c12b4fa 100644 --- a/src/lib/components/ui/chart/chart-tooltip.svelte +++ b/src/lib/components/ui/chart/chart-tooltip.svelte @@ -1,159 +1,152 @@ {#snippet TooltipLabel()} - {#if formattedLabel} -
- {#if typeof formattedLabel === "function"} - {@render formattedLabel()} - {:else} - {formattedLabel} - {/if} -
- {/if} + {#if formattedLabel} +
+ {#if typeof formattedLabel === "function"} + {@render formattedLabel()} + {:else} + {formattedLabel} + {/if} +
+ {/if} {/snippet} -
- {#if !nestLabel} - {@render TooltipLabel()} - {/if} -
- {#each tooltipCtx.payload as item, i (item.key + i)} - {@const key = `${nameKey || item.key || item.name || "value"}`} - {@const itemConfig = getPayloadConfigFromPayload(chart.config, item, key)} - {@const indicatorColor = color || item.payload?.color || item.color} -
svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5", - indicator === "dot" && "items-center" - )} - > - {#if formatter && item.value !== undefined && item.name} - {@render formatter({ - value: item.value, - name: item.name, - item, - index: i, - payload: tooltipCtx.payload, - })} - {:else} - {#if itemConfig?.icon} - - {:else if !hideIndicator} -
- {/if} -
-
- {#if nestLabel} - {@render TooltipLabel()} - {/if} - - {itemConfig?.label || item.name} - -
- {#if item.value !== undefined} - - {item.value.toLocaleString()} - - {/if} -
- {/if} -
- {/each} -
-
+
+ {#if !nestLabel} + {@render TooltipLabel()} + {/if} +
+ {#each tooltipCtx.payload as item, i (item.key + i)} + {@const key = `${nameKey || item.key || item.name || "value"}`} + {@const itemConfig = getPayloadConfigFromPayload(chart.config, item, key)} + {@const indicatorColor = color || item.payload?.color || item.color} +
svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:size-2.5", + indicator === "dot" && "items-center" + )} + > + {#if formatter && item.value !== undefined && item.name} + {@render formatter({ + value: item.value, + name: item.name, + item, + index: i, + payload: tooltipCtx.payload + })} + {:else} + {#if itemConfig?.icon} + + {:else if !hideIndicator} +
+ {/if} +
+
+ {#if nestLabel} + {@render TooltipLabel()} + {/if} + + {itemConfig?.label || item.name} + +
+ {#if item.value !== undefined} + + {item.value.toLocaleString()} + + {/if} +
+ {/if} +
+ {/each} +
+
diff --git a/src/lib/components/ui/chart/chart-utils.ts b/src/lib/components/ui/chart/chart-utils.ts index 2decbbf7..bb7463c7 100644 --- a/src/lib/components/ui/chart/chart-utils.ts +++ b/src/lib/components/ui/chart/chart-utils.ts @@ -4,63 +4,54 @@ import { getContext, setContext, type Component, type ComponentProps, type Snipp export const THEMES = { light: "", dark: ".dark" } as const; export type ChartConfig = { - [k in string]: { - label?: string; - icon?: Component; - } & ( - | { color?: string; theme?: never } - | { color?: never; theme: Record } - ); + [k in string]: { + label?: string; + icon?: Component; + } & ({ color?: string; theme?: never } | { color?: never; theme: Record }); }; export type ExtractSnippetParams = T extends Snippet<[infer P]> ? P : never; -export type TooltipPayload = ExtractSnippetParams< - ComponentProps["children"] ->["payload"][number]; +export type TooltipPayload = ExtractSnippetParams["children"]>["payload"][number]; // Helper to extract item config from a payload. -export function getPayloadConfigFromPayload( - config: ChartConfig, - payload: TooltipPayload, - key: string -) { - if (typeof payload !== "object" || payload === null) return undefined; +export function getPayloadConfigFromPayload(config: ChartConfig, payload: TooltipPayload, key: string) { + if (typeof payload !== "object" || payload === null) return undefined; - const payloadPayload = - "payload" in payload && typeof payload.payload === "object" && payload.payload !== null - ? payload.payload - : undefined; + const payloadPayload = + "payload" in payload && typeof payload.payload === "object" && payload.payload !== null + ? payload.payload + : undefined; - let configLabelKey: string = key; + let configLabelKey: string = key; - if (payload.key === key) { - configLabelKey = payload.key; - } else if (payload.name === key) { - configLabelKey = payload.name; - } else if (key in payload && typeof payload[key as keyof typeof payload] === "string") { - configLabelKey = payload[key as keyof typeof payload] as string; - } else if ( - payloadPayload !== undefined && - key in payloadPayload && - typeof payloadPayload[key as keyof typeof payloadPayload] === "string" - ) { - configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string; - } + if (payload.key === key) { + configLabelKey = payload.key; + } else if (payload.name === key) { + configLabelKey = payload.name; + } else if (key in payload && typeof payload[key as keyof typeof payload] === "string") { + configLabelKey = payload[key as keyof typeof payload] as string; + } else if ( + payloadPayload !== undefined && + key in payloadPayload && + typeof payloadPayload[key as keyof typeof payloadPayload] === "string" + ) { + configLabelKey = payloadPayload[key as keyof typeof payloadPayload] as string; + } - return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]; + return configLabelKey in config ? config[configLabelKey] : config[key as keyof typeof config]; } type ChartContextValue = { - config: ChartConfig; + config: ChartConfig; }; const chartContextKey = Symbol("chart-context"); export function setChartContext(value: ChartContextValue) { - return setContext(chartContextKey, value); + return setContext(chartContextKey, value); } export function useChart() { - return getContext(chartContextKey); + return getContext(chartContextKey); } diff --git a/src/lib/components/ui/checkbox/checkbox.svelte b/src/lib/components/ui/checkbox/checkbox.svelte index 0a2b0101..a3441201 100644 --- a/src/lib/components/ui/checkbox/checkbox.svelte +++ b/src/lib/components/ui/checkbox/checkbox.svelte @@ -1,36 +1,36 @@ - {#snippet children({ checked, indeterminate })} -
- {#if checked} - - {:else if indeterminate} - - {/if} -
- {/snippet} + {#snippet children({ checked, indeterminate })} +
+ {#if checked} + + {:else if indeterminate} + + {/if} +
+ {/snippet}
diff --git a/src/lib/components/ui/checkbox/index.ts b/src/lib/components/ui/checkbox/index.ts index 6d92d945..d1b2485e 100644 --- a/src/lib/components/ui/checkbox/index.ts +++ b/src/lib/components/ui/checkbox/index.ts @@ -1,6 +1,6 @@ import Root from "./checkbox.svelte"; export { - Root, - // - Root as Checkbox, + Root, + // + Root as Checkbox, }; diff --git a/src/lib/components/ui/dialog/dialog-close.svelte b/src/lib/components/ui/dialog/dialog-close.svelte index 840b2f68..7bcb4388 100644 --- a/src/lib/components/ui/dialog/dialog-close.svelte +++ b/src/lib/components/ui/dialog/dialog-close.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dialog/dialog-content.svelte b/src/lib/components/ui/dialog/dialog-content.svelte index 5c6ee6db..63fda4e4 100644 --- a/src/lib/components/ui/dialog/dialog-content.svelte +++ b/src/lib/components/ui/dialog/dialog-content.svelte @@ -1,45 +1,45 @@ - - - {@render children?.()} - {#if showCloseButton} - - - Close - - {/if} - + + + {@render children?.()} + {#if showCloseButton} + + + Close + + {/if} + diff --git a/src/lib/components/ui/dialog/dialog-description.svelte b/src/lib/components/ui/dialog/dialog-description.svelte index 38450239..a47ed1b6 100644 --- a/src/lib/components/ui/dialog/dialog-description.svelte +++ b/src/lib/components/ui/dialog/dialog-description.svelte @@ -1,17 +1,13 @@ diff --git a/src/lib/components/ui/dialog/dialog-footer.svelte b/src/lib/components/ui/dialog/dialog-footer.svelte index e7ff4468..fdb2ebf6 100644 --- a/src/lib/components/ui/dialog/dialog-footer.svelte +++ b/src/lib/components/ui/dialog/dialog-footer.svelte @@ -1,20 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/dialog/dialog-header.svelte b/src/lib/components/ui/dialog/dialog-header.svelte index 4e5c4473..1d701899 100644 --- a/src/lib/components/ui/dialog/dialog-header.svelte +++ b/src/lib/components/ui/dialog/dialog-header.svelte @@ -1,20 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/dialog/dialog-overlay.svelte b/src/lib/components/ui/dialog/dialog-overlay.svelte index f81ad833..5039fdd9 100644 --- a/src/lib/components/ui/dialog/dialog-overlay.svelte +++ b/src/lib/components/ui/dialog/dialog-overlay.svelte @@ -1,20 +1,16 @@ diff --git a/src/lib/components/ui/dialog/dialog-portal.svelte b/src/lib/components/ui/dialog/dialog-portal.svelte index ccfa79ca..d208462b 100644 --- a/src/lib/components/ui/dialog/dialog-portal.svelte +++ b/src/lib/components/ui/dialog/dialog-portal.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dialog/dialog-title.svelte b/src/lib/components/ui/dialog/dialog-title.svelte index e4d4b344..21cf63ec 100644 --- a/src/lib/components/ui/dialog/dialog-title.svelte +++ b/src/lib/components/ui/dialog/dialog-title.svelte @@ -1,17 +1,13 @@ diff --git a/src/lib/components/ui/dialog/dialog-trigger.svelte b/src/lib/components/ui/dialog/dialog-trigger.svelte index 9d1e8011..92a8e3ce 100644 --- a/src/lib/components/ui/dialog/dialog-trigger.svelte +++ b/src/lib/components/ui/dialog/dialog-trigger.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dialog/dialog.svelte b/src/lib/components/ui/dialog/dialog.svelte index 211672c6..eac3db37 100644 --- a/src/lib/components/ui/dialog/dialog.svelte +++ b/src/lib/components/ui/dialog/dialog.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dialog/index.ts b/src/lib/components/ui/dialog/index.ts index 076cef52..e3661578 100644 --- a/src/lib/components/ui/dialog/index.ts +++ b/src/lib/components/ui/dialog/index.ts @@ -10,25 +10,25 @@ import Trigger from "./dialog-trigger.svelte"; import Close from "./dialog-close.svelte"; export { - Root, - Title, - Portal, - Footer, - Header, - Trigger, - Overlay, - Content, - Description, - Close, - // - Root as Dialog, - Title as DialogTitle, - Portal as DialogPortal, - Footer as DialogFooter, - Header as DialogHeader, - Trigger as DialogTrigger, - Overlay as DialogOverlay, - Content as DialogContent, - Description as DialogDescription, - Close as DialogClose, + Root, + Title, + Portal, + Footer, + Header, + Trigger, + Overlay, + Content, + Description, + Close, + // + Root as Dialog, + Title as DialogTitle, + Portal as DialogPortal, + Footer as DialogFooter, + Header as DialogHeader, + Trigger as DialogTrigger, + Overlay as DialogOverlay, + Content as DialogContent, + Description as DialogDescription, + Close as DialogClose, }; diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte index e0e19718..8a37b58f 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-group.svelte @@ -1,16 +1,11 @@ - + diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte index 6d9ef855..c4ce5122 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-checkbox-item.svelte @@ -1,43 +1,41 @@ - {#snippet children({ checked, indeterminate })} - - {#if indeterminate} - - {:else} - - {/if} - - {@render childrenProp?.()} - {/snippet} + {#snippet children({ checked, indeterminate })} + + {#if indeterminate} + + {:else} + + {/if} + + {@render childrenProp?.()} + {/snippet} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte index 1e96782e..f1376ff6 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-content.svelte @@ -1,29 +1,29 @@ - + diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte index 433540fd..6300ce4f 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-group-heading.svelte @@ -1,22 +1,22 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte index aca1f7bd..21720000 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-group.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte index 04cd1103..36e32aac 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-item.svelte @@ -1,27 +1,27 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte index 9681c2bb..b4a5f07f 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-label.svelte @@ -1,24 +1,24 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte index 274cfef7..f9e1e2a4 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-portal.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte index 189aef40..f2b834c5 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-group.svelte @@ -1,16 +1,7 @@ - + diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte index ce2ad094..efab30e7 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-radio-item.svelte @@ -1,33 +1,31 @@ - {#snippet children({ checked })} - - {#if checked} - - {/if} - - {@render childrenProp?.({ checked })} - {/snippet} + {#snippet children({ checked })} + + {#if checked} + + {/if} + + {@render childrenProp?.({ checked })} + {/snippet} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte index 90f1b6f1..0078b934 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-separator.svelte @@ -1,17 +1,13 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte index 7c6e9c67..88192f5a 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-shortcut.svelte @@ -1,20 +1,20 @@ - {@render children?.()} + {@render children?.()} diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte index 3f06dc49..0354454b 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-content.svelte @@ -1,20 +1,16 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte index 5f49d01e..ff0b9286 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub-trigger.svelte @@ -1,29 +1,29 @@ - {@render children?.()} - + {@render children?.()} + diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte index f0445813..35d80940 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-sub.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte index cb053444..bb88efdf 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu-trigger.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte b/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte index cb4bc621..dc3ecf8a 100644 --- a/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte +++ b/src/lib/components/ui/dropdown-menu/dropdown-menu.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/dropdown-menu/index.ts b/src/lib/components/ui/dropdown-menu/index.ts index 7850c6a3..5c4fe0cd 100644 --- a/src/lib/components/ui/dropdown-menu/index.ts +++ b/src/lib/components/ui/dropdown-menu/index.ts @@ -17,38 +17,38 @@ import GroupHeading from "./dropdown-menu-group-heading.svelte"; import Portal from "./dropdown-menu-portal.svelte"; export { - CheckboxGroup, - CheckboxItem, - Content, - Portal, - Root as DropdownMenu, - CheckboxGroup as DropdownMenuCheckboxGroup, - CheckboxItem as DropdownMenuCheckboxItem, - Content as DropdownMenuContent, - Portal as DropdownMenuPortal, - Group as DropdownMenuGroup, - Item as DropdownMenuItem, - Label as DropdownMenuLabel, - RadioGroup as DropdownMenuRadioGroup, - RadioItem as DropdownMenuRadioItem, - Separator as DropdownMenuSeparator, - Shortcut as DropdownMenuShortcut, - Sub as DropdownMenuSub, - SubContent as DropdownMenuSubContent, - SubTrigger as DropdownMenuSubTrigger, - Trigger as DropdownMenuTrigger, - GroupHeading as DropdownMenuGroupHeading, - Group, - GroupHeading, - Item, - Label, - RadioGroup, - RadioItem, - Root, - Separator, - Shortcut, - Sub, - SubContent, - SubTrigger, - Trigger, + CheckboxGroup, + CheckboxItem, + Content, + Portal, + Root as DropdownMenu, + CheckboxGroup as DropdownMenuCheckboxGroup, + CheckboxItem as DropdownMenuCheckboxItem, + Content as DropdownMenuContent, + Portal as DropdownMenuPortal, + Group as DropdownMenuGroup, + Item as DropdownMenuItem, + Label as DropdownMenuLabel, + RadioGroup as DropdownMenuRadioGroup, + RadioItem as DropdownMenuRadioItem, + Separator as DropdownMenuSeparator, + Shortcut as DropdownMenuShortcut, + Sub as DropdownMenuSub, + SubContent as DropdownMenuSubContent, + SubTrigger as DropdownMenuSubTrigger, + Trigger as DropdownMenuTrigger, + GroupHeading as DropdownMenuGroupHeading, + Group, + GroupHeading, + Item, + Label, + RadioGroup, + RadioItem, + Root, + Separator, + Shortcut, + Sub, + SubContent, + SubTrigger, + Trigger, }; diff --git a/src/lib/components/ui/field/field-content.svelte b/src/lib/components/ui/field/field-content.svelte index 1b6535b4..ec5e5bd2 100644 --- a/src/lib/components/ui/field/field-content.svelte +++ b/src/lib/components/ui/field/field-content.svelte @@ -1,20 +1,20 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/field/field-description.svelte b/src/lib/components/ui/field/field-description.svelte index a0c9f067..a9730e22 100644 --- a/src/lib/components/ui/field/field-description.svelte +++ b/src/lib/components/ui/field/field-description.svelte @@ -1,25 +1,25 @@

a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", - className - )} - {...restProps} + bind:this={ref} + data-slot="field-description" + class={cn( + "text-muted-foreground text-sm leading-normal font-normal group-has-[[data-orientation=horizontal]]/field:text-balance", + "last:mt-0 nth-last-2:-mt-1 [[data-variant=legend]+&]:-mt-1.5", + "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", + className + )} + {...restProps} > - {@render children?.()} + {@render children?.()}

diff --git a/src/lib/components/ui/field/field-error.svelte b/src/lib/components/ui/field/field-error.svelte index 1d5cc5f5..35fdcec0 100644 --- a/src/lib/components/ui/field/field-error.svelte +++ b/src/lib/components/ui/field/field-error.svelte @@ -1,58 +1,58 @@ {#if hasContent} - + {/if} diff --git a/src/lib/components/ui/field/field-group.svelte b/src/lib/components/ui/field/field-group.svelte index e6854279..595567a6 100644 --- a/src/lib/components/ui/field/field-group.svelte +++ b/src/lib/components/ui/field/field-group.svelte @@ -1,23 +1,23 @@
[data-slot=field-group]]:gap-4", - className - )} - {...restProps} + bind:this={ref} + data-slot="field-group" + class={cn( + "group/field-group @container/field-group flex w-full flex-col gap-7 data-[slot=checkbox-group]:gap-3 [&>[data-slot=field-group]]:gap-4", + className + )} + {...restProps} > - {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/field/field-label.svelte b/src/lib/components/ui/field/field-label.svelte index 2ee431a7..d0056435 100644 --- a/src/lib/components/ui/field/field-label.svelte +++ b/src/lib/components/ui/field/field-label.svelte @@ -1,26 +1,21 @@ diff --git a/src/lib/components/ui/field/field-legend.svelte b/src/lib/components/ui/field/field-legend.svelte index 3f1c50fb..c8949e24 100644 --- a/src/lib/components/ui/field/field-legend.svelte +++ b/src/lib/components/ui/field/field-legend.svelte @@ -1,29 +1,24 @@ - {@render children?.()} + {@render children?.()} diff --git a/src/lib/components/ui/field/field-separator.svelte b/src/lib/components/ui/field/field-separator.svelte index 12bcb77e..32037acc 100644 --- a/src/lib/components/ui/field/field-separator.svelte +++ b/src/lib/components/ui/field/field-separator.svelte @@ -1,38 +1,35 @@
- - {#if children} - - {@render children()} - - {/if} + + {#if children} + + {@render children()} + + {/if}
diff --git a/src/lib/components/ui/field/field-set.svelte b/src/lib/components/ui/field/field-set.svelte index 1d8e2339..1d12d7e8 100644 --- a/src/lib/components/ui/field/field-set.svelte +++ b/src/lib/components/ui/field/field-set.svelte @@ -1,24 +1,24 @@
[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", - className - )} - {...restProps} + bind:this={ref} + data-slot="field-set" + class={cn( + "flex flex-col gap-6", + "has-[>[data-slot=checkbox-group]]:gap-3 has-[>[data-slot=radio-group]]:gap-3", + className + )} + {...restProps} > - {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/field/field-title.svelte b/src/lib/components/ui/field/field-title.svelte index 59060445..f4a9c39b 100644 --- a/src/lib/components/ui/field/field-title.svelte +++ b/src/lib/components/ui/field/field-title.svelte @@ -1,23 +1,23 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/field/field.svelte b/src/lib/components/ui/field/field.svelte index 32842030..7b21cfa8 100644 --- a/src/lib/components/ui/field/field.svelte +++ b/src/lib/components/ui/field/field.svelte @@ -1,53 +1,53 @@
- {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/field/index.ts b/src/lib/components/ui/field/index.ts index a644a956..bbde367a 100644 --- a/src/lib/components/ui/field/index.ts +++ b/src/lib/components/ui/field/index.ts @@ -10,24 +10,24 @@ import Separator from "./field-separator.svelte"; import Error from "./field-error.svelte"; export { - Field, - Set, - Legend, - Group, - Content, - Label, - Title, - Description, - Separator, - Error, - // - Set as FieldSet, - Legend as FieldLegend, - Group as FieldGroup, - Content as FieldContent, - Label as FieldLabel, - Title as FieldTitle, - Description as FieldDescription, - Separator as FieldSeparator, - Error as FieldError, + Field, + Set, + Legend, + Group, + Content, + Label, + Title, + Description, + Separator, + Error, + // + Set as FieldSet, + Legend as FieldLegend, + Group as FieldGroup, + Content as FieldContent, + Label as FieldLabel, + Title as FieldTitle, + Description as FieldDescription, + Separator as FieldSeparator, + Error as FieldError, }; diff --git a/src/lib/components/ui/input-group/index.ts b/src/lib/components/ui/input-group/index.ts index fe1f55d8..e077a55b 100644 --- a/src/lib/components/ui/input-group/index.ts +++ b/src/lib/components/ui/input-group/index.ts @@ -6,17 +6,17 @@ import Text from "./input-group-text.svelte"; import Textarea from "./input-group-textarea.svelte"; export { - Root, - Addon, - Button, - Input, - Text, - Textarea, - // - Root as InputGroup, - Addon as InputGroupAddon, - Button as InputGroupButton, - Input as InputGroupInput, - Text as InputGroupText, - Textarea as InputGroupTextarea, + Root, + Addon, + Button, + Input, + Text, + Textarea, + // + Root as InputGroup, + Addon as InputGroupAddon, + Button as InputGroupButton, + Input as InputGroupInput, + Text as InputGroupText, + Textarea as InputGroupTextarea, }; diff --git a/src/lib/components/ui/input-group/input-group-addon.svelte b/src/lib/components/ui/input-group/input-group-addon.svelte index cdd0dfc8..c7653fb2 100644 --- a/src/lib/components/ui/input-group/input-group-addon.svelte +++ b/src/lib/components/ui/input-group/input-group-addon.svelte @@ -1,55 +1,52 @@
{ - if ((e.target as HTMLElement).closest("button")) { - return; - } - e.currentTarget.parentElement?.querySelector("input")?.focus(); - }} - {...restProps} + bind:this={ref} + role="group" + data-slot="input-group-addon" + data-align={align} + class={cn(inputGroupAddonVariants({ align }), className)} + onclick={(e) => { + if ((e.target as HTMLElement).closest("button")) { + return; + } + e.currentTarget.parentElement?.querySelector("input")?.focus(); + }} + {...restProps} > - {@render children?.()} + {@render children?.()}
diff --git a/src/lib/components/ui/input-group/input-group-button.svelte b/src/lib/components/ui/input-group/input-group-button.svelte index d38a71ef..a5eabe7d 100644 --- a/src/lib/components/ui/input-group/input-group-button.svelte +++ b/src/lib/components/ui/input-group/input-group-button.svelte @@ -1,49 +1,49 @@ diff --git a/src/lib/components/ui/input-group/input-group-input.svelte b/src/lib/components/ui/input-group/input-group-input.svelte index ded26550..69e02a9c 100644 --- a/src/lib/components/ui/input-group/input-group-input.svelte +++ b/src/lib/components/ui/input-group/input-group-input.svelte @@ -1,23 +1,23 @@ diff --git a/src/lib/components/ui/input-group/input-group-text.svelte b/src/lib/components/ui/input-group/input-group-text.svelte index 9c43dc4a..8a526b99 100644 --- a/src/lib/components/ui/input-group/input-group-text.svelte +++ b/src/lib/components/ui/input-group/input-group-text.svelte @@ -1,22 +1,22 @@ - {@render children?.()} + {@render children?.()} diff --git a/src/lib/components/ui/input-group/input-group-textarea.svelte b/src/lib/components/ui/input-group/input-group-textarea.svelte index 91850ff0..212291f6 100644 --- a/src/lib/components/ui/input-group/input-group-textarea.svelte +++ b/src/lib/components/ui/input-group/input-group-textarea.svelte @@ -1,23 +1,23 @@ diff --git a/src/lib/components/ui/toggle/index.ts b/src/lib/components/ui/toggle/index.ts new file mode 100644 index 00000000..8cb2936f --- /dev/null +++ b/src/lib/components/ui/toggle/index.ts @@ -0,0 +1,13 @@ +import Root from "./toggle.svelte"; +export { + toggleVariants, + type ToggleSize, + type ToggleVariant, + type ToggleVariants, +} from "./toggle.svelte"; + +export { + Root, + // + Root as Toggle, +}; diff --git a/src/lib/components/ui/toggle/toggle.svelte b/src/lib/components/ui/toggle/toggle.svelte new file mode 100644 index 00000000..56eb86b1 --- /dev/null +++ b/src/lib/components/ui/toggle/toggle.svelte @@ -0,0 +1,52 @@ + + + + + diff --git a/src/lib/components/ui/tooltip/index.ts b/src/lib/components/ui/tooltip/index.ts index 17186042..9822ce1f 100644 --- a/src/lib/components/ui/tooltip/index.ts +++ b/src/lib/components/ui/tooltip/index.ts @@ -5,15 +5,15 @@ import Provider from "./tooltip-provider.svelte"; import Portal from "./tooltip-portal.svelte"; export { - Root, - Trigger, - Content, - Provider, - Portal, - // - Root as Tooltip, - Content as TooltipContent, - Trigger as TooltipTrigger, - Provider as TooltipProvider, - Portal as TooltipPortal, + Root, + Trigger, + Content, + Provider, + Portal, + // + Root as Tooltip, + Content as TooltipContent, + Trigger as TooltipTrigger, + Provider as TooltipProvider, + Portal as TooltipPortal, }; diff --git a/src/lib/components/ui/tooltip/tooltip-content.svelte b/src/lib/components/ui/tooltip/tooltip-content.svelte index 788ec34d..0a56f966 100644 --- a/src/lib/components/ui/tooltip/tooltip-content.svelte +++ b/src/lib/components/ui/tooltip/tooltip-content.svelte @@ -1,52 +1,52 @@ - - {@render children?.()} - - {#snippet child({ props })} -
- {/snippet} -
-
+ + {@render children?.()} + + {#snippet child({ props })} +
+ {/snippet} +
+
diff --git a/src/lib/components/ui/tooltip/tooltip-portal.svelte b/src/lib/components/ui/tooltip/tooltip-portal.svelte index d234f7d7..bd0b1257 100644 --- a/src/lib/components/ui/tooltip/tooltip-portal.svelte +++ b/src/lib/components/ui/tooltip/tooltip-portal.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/tooltip/tooltip-provider.svelte b/src/lib/components/ui/tooltip/tooltip-provider.svelte index 8150bef2..1c97e959 100644 --- a/src/lib/components/ui/tooltip/tooltip-provider.svelte +++ b/src/lib/components/ui/tooltip/tooltip-provider.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/tooltip/tooltip-trigger.svelte b/src/lib/components/ui/tooltip/tooltip-trigger.svelte index 1acdaa47..d7b41d38 100644 --- a/src/lib/components/ui/tooltip/tooltip-trigger.svelte +++ b/src/lib/components/ui/tooltip/tooltip-trigger.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/components/ui/tooltip/tooltip.svelte b/src/lib/components/ui/tooltip/tooltip.svelte index 0b0f9cef..11ced4f0 100644 --- a/src/lib/components/ui/tooltip/tooltip.svelte +++ b/src/lib/components/ui/tooltip/tooltip.svelte @@ -1,7 +1,7 @@ diff --git a/src/lib/hooks/is-mobile.svelte.ts b/src/lib/hooks/is-mobile.svelte.ts index 4829c00b..ef34be7e 100644 --- a/src/lib/hooks/is-mobile.svelte.ts +++ b/src/lib/hooks/is-mobile.svelte.ts @@ -3,7 +3,7 @@ import { MediaQuery } from "svelte/reactivity"; const DEFAULT_MOBILE_BREAKPOINT = 768; export class IsMobile extends MediaQuery { - constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) { - super(`max-width: ${breakpoint - 1}px`); - } + constructor(breakpoint: number = DEFAULT_MOBILE_BREAKPOINT) { + super(`max-width: ${breakpoint - 1}px`); + } } diff --git a/src/lib/locales/it.json b/src/lib/locales/it.json index 91232d35..03344b2f 100644 --- a/src/lib/locales/it.json +++ b/src/lib/locales/it.json @@ -1,93 +1,92 @@ { - "%status for %duration": "%status per %duration", - "120 Days": "120 Giorni", - "14 Days": "14 Giorni", - "150 Days": "150 Giorni", - "180 Days": "180 Giorni", - "30 Days": "30 Giorni", - "60 Days": "60 Giorni", - "7 Days": "7 Giorni", - "90 Days": "90 Giorni", - "Availability per Component": "Disponibilità per componente", - "All Systems are Degraded": "Tutti i sistemi sono degradati", - "All Systems are Down": "Tutti i sistemi sono inattivi", - "All Systems are Operational": "Tutti i sistemi sono operativi", - "All Systems are in Maintenance": "Tutti i sistemi sono in manutenzione", - "Back": "Indietro", - "Badge Copied": "Badge copiato", - "Badge": "Badge", - "Browse Events": "Sfoglia eventi", - "Change Email": "Cambia email", - "Code Copied": "Codice copiato", - "Confirm Login": "Conferma accesso", - "Copy Code": "Copia codice", - "Copy Link": "Copia link", - "DEGRADED": "DEGRADATO", - "DOWN": "NON DISPONIBILE", - "Dark": "Scuro", - "Days": "Giorni", - "Embed this monitor using <script> or <iframe> in your app.": "Incorpora questo monitor usando @@ -22,11 +146,12 @@ class="data-[state=open]:bg-sidebar-accent data-[state=open]:text-sidebar-accent-foreground" > - - CN + + {nameAbbr} +
- {user.name} + {nameAbbr} {user.email} @@ -44,8 +169,7 @@
- - CN + {nameAbbr}
{user.name} @@ -57,25 +181,134 @@ - + Account - - - Billing - - - - Notifications - - - - Log out + (window.location.href = `${base}/account/logout`)}> + {#snippet child({ props })} + + {/snippet} + + + + + + Account Settings + + + Manage your profile information. +
+ + {user.email} + + + {user.role} + +
+
+
+ +
+ + +
{ + e.preventDefault(); + saveName(); + }} + > + +
+ + +
+ {#if nameError} +

{nameError}

+ {/if} +
+ +
+ + +
{ + e.preventDefault(); + updatePassword(); + }} + > + + + + +
+

Password requirements:

+
    +
  • + {#if hasDigit}{/if} One digit +
  • +
  • + {#if hasLowercase}{/if} One lowercase +
  • +
  • + {#if hasUppercase}{/if} One uppercase +
  • +
  • + {#if hasMinLength}{/if} 8+ characters +
  • +
  • + {#if passwordsMatch}{/if} Passwords match +
  • +
+
+ + + {#if passwordError} +

{passwordError}

+ {/if} +
+
+
+
diff --git a/src/routes/(manage)/manage/setup/+page.svelte b/src/routes/(manage)/manage/setup/+page.svelte deleted file mode 100644 index e69de29b..00000000 diff --git a/src/routes/docs.css b/src/routes/docs.css index 76758dc1..2cd7cb8e 100644 --- a/src/routes/docs.css +++ b/src/routes/docs.css @@ -53,7 +53,7 @@ main { } .note { - @apply mt-4 rounded-md border bg-background p-3 text-sm shadow-sm; + @apply bg-background mt-4 rounded-md border p-3 text-sm shadow-sm; } .note.danger { border: 1px solid #e3342f; diff --git a/tsconfig.json b/tsconfig.json index 2c2ed3c4..c7b9df59 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,20 +1,20 @@ { - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "rewriteRelativeImportExtensions": true, - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } - // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias - // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files - // - // To make changes to top-level options such as include and exclude, we recommend extending - // the generated config; see https://svelte.dev/docs/kit/configuration#typescript + "extends": "./.svelte-kit/tsconfig.json", + "compilerOptions": { + "rewriteRelativeImportExtensions": true, + "allowJs": true, + "checkJs": true, + "esModuleInterop": true, + "forceConsistentCasingInFileNames": true, + "resolveJsonModule": true, + "skipLibCheck": true, + "sourceMap": true, + "strict": true, + "moduleResolution": "bundler" + } + // Path aliases are handled by https://svelte.dev/docs/kit/configuration#alias + // except $lib which is handled by https://svelte.dev/docs/kit/configuration#files + // + // To make changes to top-level options such as include and exclude, we recommend extending + // the generated config; see https://svelte.dev/docs/kit/configuration#typescript }