- No active share rules.
-
- }>
- {(rule) => (
-
-
- {rule.type === 'all' ?
:
}
-
-
{getUserName(rule.targetUserId)}
-
- {rule.type === 'all' ? 'All Tasks' : `Tag: ${rule.tagName}`}
-
-
-
-
+ {/* Active share rules - Custom */}
+
+
Custom Rules
+
{
+ const isSystem = r.type === 'tag' && store.tagDefinitions.find(t => t.name === r.tagName)?.isUser;
+ return !isSystem;
+ })} fallback={
+
+ No custom share rules.
- )}
-
+ }>
+ {(rule) => (
+
+
+ {rule.type === 'all' ?
:
}
+
+
{getUserName(rule.targetUserId)}
+
+ {rule.type === 'all' ? 'All Tasks' : `Tag: ${rule.tagName}`}
+
+
+
+
+
+ )}
+
+
+
+ {/* Active share rules - System */}
+
+
+
+
+
+ System Rules (Auto-Generated)
+
+
+
{
+ const isSystem = r.type === 'tag' && store.tagDefinitions.find(t => t.name === r.tagName)?.isUser;
+ return isSystem;
+ })}>
+ {(rule) => (
+
+
+
+
+
+ {getUserName(rule.targetUserId)}
+
+
+
+ Auto-shared via User Tag
+
+
+
+
+ )}
+
+
+
@@ -257,84 +297,132 @@ export const SettingsView: Component = () => {
-
a.name.localeCompare(b.name))} fallback={
-
- No specific tag definitions found.
-
- }>
- {(tag) => {
- const [isEditingName, setIsEditingName] = createSignal(false);
- const [tempName, setTempName] = createSignal(tag.name);
+
+
!t.isUser).sort((a, b) => a.name.localeCompare(b.name))} fallback={
+
+ No custom tags found.
+
+ }>
+ {(tag) => {
+ const [isEditingName, setIsEditingName] = createSignal(false);
+ const [tempName, setTempName] = createSignal(tag.name);
- const handleRename = () => {
- if (tempName() && tempName() !== tag.name) {
- renameTagDefinition(tag.name, tempName());
- }
- setIsEditingName(false);
- };
+ const handleRename = () => {
+ if (tempName() && tempName() !== tag.name) {
+ renameTagDefinition(tag.name, tempName());
+ }
+ setIsEditingName(false);
+ };
- return (
-
-
-
upsertTagDefinition(tag.name, tag.value, e.currentTarget.value, resolvedTheme())}
- class="w-4 h-4 rounded-full border-none p-0 bg-transparent cursor-pointer shrink-0 overflow-hidden"
- title="Tag accent color"
- />
-
- {isEditingName() ? (
+ return (
+
+
setTempName(e.currentTarget.value)}
- onBlur={handleRename}
- onKeyDown={(e) => e.key === "Enter" && handleRename()}
- autofocus
+ type="color"
+ value={tag.color || "#6366f1"}
+ onInput={(e) => upsertTagDefinition(tag.name, tag.value, e.currentTarget.value, resolvedTheme())}
+ class="w-4 h-4 rounded-full border-none p-0 bg-transparent cursor-pointer shrink-0 overflow-hidden"
+ title="Tag accent color"
/>
- ) : (
- setIsEditingName(true)}
- title="Click to rename"
- >
- {tag.name}
-
- )}
-
-
-
- Val
-
+ {isEditingName() ? (
+ setTempName(e.currentTarget.value)}
+ onBlur={handleRename}
+ onKeyDown={(e) => e.key === "Enter" && handleRename()}
+ autofocus
+ />
+ ) : (
+ setIsEditingName(true)}
+ title="Click to rename"
+ >
+ {tag.name}
+
+ )}
-
+
+
+ Val
+
+
+
+
+
-
- );
- }}
-
+ );
+ }}
+
+
+
+ {/* User Tags Expansion */}
+
+
+
+
+
+ User Tags (System)
+
+
+
t.isUser).sort((a, b) => a.name.localeCompare(b.name))}>
+ {(tag) => (
+
+
+ upsertTagDefinition(tag.name, tag.value, e.currentTarget.value, resolvedTheme())}
+ class="w-4 h-4 rounded-full border-none p-0 bg-transparent cursor-pointer shrink-0 overflow-hidden"
+ title="Tag accent color"
+ />
+
+ {tag.name}
+
+
+
+
+
+
+ Val
+
+
+
+
+ )}
+
+
+