diff --git a/src/lib/features/database/summons/sections/SummonStatsSection.svelte b/src/lib/features/database/summons/sections/SummonStatsSection.svelte
index cb9d1211..3eef8095 100644
--- a/src/lib/features/database/summons/sections/SummonStatsSection.svelte
+++ b/src/lib/features/database/summons/sections/SummonStatsSection.svelte
@@ -1,40 +1,150 @@
- {#if editMode}
-
-
-
- {:else}
-
-
- {#if flb}
-
- {/if}
- {/if}
+ {#if editMode}
+
+
+ {#if flb}
+
+ {/if}
+ {#if ulb}
+
+ {/if}
+ {#if transcendence}
+
+ {/if}
+ {:else}
+
+
+ {#if flb}
+
+ {/if}
+ {#if ulb}
+
+ {/if}
+ {#if transcendence}
+
+ {/if}
+ {/if}
- {#if editMode}
-
-
-
- {:else}
-
-
- {#if flb}
-
- {/if}
- {/if}
+ {#if editMode}
+
+
+ {#if flb}
+
+ {/if}
+ {#if ulb}
+
+ {/if}
+ {#if transcendence}
+
+ {/if}
+ {:else}
+
+
+ {#if flb}
+
+ {/if}
+ {#if ulb}
+
+ {/if}
+ {#if transcendence}
+
+ {/if}
+ {/if}
+
+ {#if editMode}
+
+ {:else}
+
+ {/if}
+
diff --git a/src/lib/features/database/summons/sections/SummonTaxonomySection.svelte b/src/lib/features/database/summons/sections/SummonTaxonomySection.svelte
index 39316427..03543c42 100644
--- a/src/lib/features/database/summons/sections/SummonTaxonomySection.svelte
+++ b/src/lib/features/database/summons/sections/SummonTaxonomySection.svelte
@@ -1,21 +1,41 @@
- {#if editMode}
-
- {:else}
-
- {/if}
+ {#if editMode}
+
+
+ {:else}
+
+ {#if summon.series}
+
+ {/if}
+ {/if}
-
diff --git a/src/lib/features/database/summons/sections/SummonUncapSection.svelte b/src/lib/features/database/summons/sections/SummonUncapSection.svelte
index 0722529e..dd51aef1 100644
--- a/src/lib/features/database/summons/sections/SummonUncapSection.svelte
+++ b/src/lib/features/database/summons/sections/SummonUncapSection.svelte
@@ -1,27 +1,123 @@
-
-
-
+ {#if summon?.uncap || editMode}
+
+
+
+ {/if}
- {#if editMode}
-
-
-
- {/if}
+ {#if editMode}
+
+
+
+
+
+ {/if}
-
diff --git a/src/lib/utils/uncap.ts b/src/lib/utils/uncap.ts
index 818b21c5..df8c3699 100644
--- a/src/lib/utils/uncap.ts
+++ b/src/lib/utils/uncap.ts
@@ -13,6 +13,10 @@ export interface CharacterUncapData {
uncap: UncapData
}
+export interface SummonUncapData {
+ uncap: UncapData
+}
+
/**
* Calculate the maximum uncap level for a character based on their uncap data
* @param special - Whether the character is special (limited/seasonal)
@@ -40,6 +44,19 @@ export function getCharacterMaxUncapLevel(character: CharacterUncapData): number
return getMaxUncapLevel(special, uncap.flb, uncap.ulb)
}
+/**
+ * Calculate the maximum uncap level from summon uncap data
+ * Summons: 3 base, +1 for FLB (4), +1 for ULB (5), transcendence stage tracked separately
+ * @param summon - Summon data with uncap information
+ * @returns The maximum uncap level
+ */
+export function getSummonMaxUncapLevel(summon: SummonUncapData): number {
+ const { uncap } = summon
+ if (uncap.ulb) return 5
+ if (uncap.flb) return 4
+ return 3
+}
+
/**
* Get the default max uncap level for an item type (without transcendence)
* @param type - The type of item (character, weapon, or summon)
diff --git a/src/routes/(app)/database/summons/new/+page.svelte b/src/routes/(app)/database/summons/new/+page.svelte
new file mode 100644
index 00000000..80003104
--- /dev/null
+++ b/src/routes/(app)/database/summons/new/+page.svelte
@@ -0,0 +1,396 @@
+
+
+
+
+
+
+ {#snippet leftAccessory()}
+
+ {/snippet}
+ {#snippet rightAccessory()}
+
+ {/snippet}
+
+
+ {#if saveError}
+
{saveError}
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {#if editData.flb}
+
+ {/if}
+ {#if editData.ulb}
+
+ {/if}
+ {#if editData.transcendence}
+
+ {/if}
+
+
+
+
+
+
+
+
+
+
+
+