🔐 Vault
searchStore.setSearchQuery(e.target.value)} />
searchStore.activeGroupId = 'all'} >
📋
All Entries
{#each groups as group} {#if !isTrashGroup(group.id)}
searchStore.activeGroupId = group.id} ondragover={(e) => { if (canDrop(group.id)) { e.preventDefault(); e.dataTransfer.dropEffect = 'move'; dragOverGroupId = group.id; } }} ondragleave={() => { if (dragOverGroupId === group.id) dragOverGroupId = null; }} ondrop={(e) => { e.preventDefault(); dragOverGroupId = null; if (canDrop(group.id)) { const entryId = e.dataTransfer.getData('text/plain'); if (entryId) handleDrop(group.id, entryId); } }} >
{group.name}
📥
openGroupForm(group)} title="Edit group">✏️
showDeleteGroupConfirm = group.id} title="Delete group">🗑
{/if} {/each}
searchStore.activeGroupId = 'trash'} >
{TRASH_GROUP_NAME}
{#if showGroupForm}
showGroupForm = false}>
e.stopPropagation()}>
{editingGroupId ? 'Edit Group' : 'New Group'}
{#if groupError}
{groupError}
{/if}
Group Name
Color
{#each GROUP_COLORS as color}
groupColor = color} title={color} >
{/each}
{editingGroupId ? 'Update' : 'Create'}
showGroupForm = false}>Cancel
{/if} {#if deletingGroup}
showDeleteGroupConfirm = null}>
e.stopPropagation()}>
Delete Group
Delete "
{deletingGroup.name}
"? Entries in this group will become ungrouped.
confirmDeleteGroup(deletingGroup.id)}>Yes, delete
showDeleteGroupConfirm = null}>Cancel
{/if}