{#if !loaded}{:else} {#if showForm}
{#if error}{/if}
form.icon = v} />
{#if !editing}
{t('templateConfig.providerType')}
{:else}
{t('templateConfig.providerType')} {allCapabilities[form.provider_type]?.display_name || form.provider_type}
{/if}
{t('templateConfig.previewAs')}:
{t('templateConfig.language')}
{ activeLocale = (v as string) || primaryLocale; refreshAllPreviews(); }} />
{#if form.provider_type} {/if}
{#if notificationSlots.length > 4}
{/if} {#each templateSlots.filter(g => g.slots.length > 0) as group} {@const filteredSlots = slotFilter ? group.slots.filter(s => (s.description || s.label).toLowerCase().includes(slotFilter.toLowerCase())) : group.slots} {#if filteredSlots.length > 0}
{t(`templateConfig.${group.group}`)}{#if group.group === 'eventMessages'}{:else if group.group === 'scheduledMessages'}{/if}
{#each filteredSlots as slot} {#if slot.isDateFormat}
{ (form as any)[slot.key] = (e.target as HTMLInputElement).value; clearTimeout(validateTimers['_fmt']); validateTimers['_fmt'] = setTimeout(refreshAllPreviews, 600); refreshDateFormatPreview(); }} class="w-full px-2 py-1 border border-[var(--color-border)] rounded-md text-sm bg-[var(--color-background)] font-mono" /> {#if dateFormatPreview[slot.key]}

{t('templateConfig.preview')}: {dateFormatPreview[slot.key]}

{:else if dateFormatPreview[slot.key] === null}

{t('templateConfig.invalidFormat')}

{/if}
{:else}
toggleSlot(slot.key)} >
{#if slotPreview[slot.key] && !slotErrors[slot.key]} {/if} {#if varsRef[slot.key]} {/if}
{#if showPreviewFor.has(slot.key) && slotPreview[slot.key] && !slotErrors[slot.key]}
{@html sanitizePreview(slotPreview[slot.key])}
{:else} { setSlotValue(slot.key, v); validateSlot(slot.key, v); }} rows={slot.rows || 3} errorLine={slotErrorLines[slot.key] || null} variables={varsRef[slot.key] || undefined} /> {/if} {#if slotErrors[slot.key]} {#if slotErrorTypes[slot.key] === 'undefined'}

⚠ {t('common.undefinedVar')}: {slotErrors[slot.key]}

{:else}

✕ {t('common.syntaxError')}: {slotErrors[slot.key]}{slotErrorLines[slot.key] ? ` (${t('common.line')} ${slotErrorLines[slot.key]})` : ''}

{/if} {/if}
{/if} {/each}
{/if} {/each}
{/if} {#if !showForm && allTemplateConfigs.length > 0}
{#if !globalProviderFilter.id}
{/if}
{/if} {#if allTemplateConfigs.length === 0 && !showForm} {:else if configs.length === 0 && !showForm} {:else}
{#each configs as config}

{config.name}

{config.provider_type} {#if config.user_id === 0} {t('common.system')} {/if}
{#if config.description}

{config.description}

{/if}
clone(config)} /> edit(config)} /> remove(config.id)} variant="danger" />
{/each}
{/if} {/if} confirmDelete?.onconfirm()} oncancel={() => confirmDelete = null} /> confirmReset = null} /> blockedBy = null} /> showVarsFor = null}> {#if showVarsFor && varsRef[showVarsFor]}

{t(`templateVars.${showVarsFor}.description`, varsRef[showVarsFor].description)}

{t('templateConfig.variables')}:

{#each Object.entries(varsRef[showVarsFor].variables || {}) as [name, desc]}
{'{{ ' + name + ' }}'} {t(`templateVars.${name}`, desc as string)}
{/each}
{#if varsRef[showVarsFor].asset_fields && typeof varsRef[showVarsFor].asset_fields === 'object'}

{t('templateConfig.assetFields')}:

{#each Object.entries(varsRef[showVarsFor].asset_fields) as [name, desc]}
{'{{ asset.' + name + ' }}'} {t(`templateVars.asset_${name}`, desc as string)}
{/each}
{/if} {#if varsRef[showVarsFor].album_fields && typeof varsRef[showVarsFor].album_fields === 'object'}

{t('templateConfig.albumFields')}:

{#each Object.entries(varsRef[showVarsFor].album_fields) as [name, desc]}
{'{{ album.' + name + ' }}'} {t(`templateVars.album_${name}`, desc as string)}
{/each}
{/if} {/if}