tangled
alpha
login
or
join now
citizen428.net
/
pdsls
forked from
pds.ls/pdsls
0
fork
atom
atproto explorer
0
fork
atom
overview
issues
pulls
pipelines
change active style
handle.invalid
6 months ago
b679a18b
b3d80ed1
+22
-17
13 changed files
expand all
collapse all
unified
split
src
components
account.tsx
button.tsx
create.tsx
dropdown.tsx
login.tsx
navbar.tsx
search.tsx
layout.tsx
views
blob.tsx
collection.tsx
labels.tsx
pds.tsx
record.tsx
+2
-2
src/components/account.tsx
···
76
<div class="mb-3 max-h-[20rem] overflow-y-auto md:max-h-[25rem]">
77
<For each={Object.keys(sessions)}>
78
{(did) => (
79
-
<div class="flex w-full items-center justify-between gap-x-2 rounded-lg hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-600 dark:active:bg-neutral-600">
80
<button
81
class="flex basis-full items-center justify-between gap-1 truncate p-1"
82
onclick={() => resumeSession(did as Did)}
···
110
</Modal>
111
<button
112
onclick={() => setOpenManager(true)}
113
-
class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
114
>
115
{agent() && avatar() ?
116
<img src={avatar()} class="dark:shadow-dark-800 size-5 rounded-full shadow-xs" />
···
76
<div class="mb-3 max-h-[20rem] overflow-y-auto md:max-h-[25rem]">
77
<For each={Object.keys(sessions)}>
78
{(did) => (
79
+
<div class="flex w-full items-center justify-between gap-x-2 rounded-lg hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600">
80
<button
81
class="flex basis-full items-center justify-between gap-1 truncate p-1"
82
onclick={() => resumeSession(did as Did)}
···
110
</Modal>
111
<button
112
onclick={() => setOpenManager(true)}
113
+
class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
114
>
115
{agent() && avatar() ?
116
<img src={avatar()} class="dark:shadow-dark-800 size-5 rounded-full shadow-xs" />
+1
-1
src/components/button.tsx
···
13
type="button"
14
class={
15
props.class ??
16
-
"dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-800 dark:active:bg-dark-100 flex items-center gap-1 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 px-2 py-1.5 text-xs font-semibold shadow-xs hover:bg-neutral-100 active:bg-neutral-100 dark:border-neutral-700"
17
}
18
classList={props.classList}
19
onClick={props.onClick}
···
13
type="button"
14
class={
15
props.class ??
16
+
"dark:hover:bg-dark-200 dark:bg-dark-300 dark:shadow-dark-800 dark:active:bg-dark-100 flex items-center gap-1 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 px-2 py-1.5 text-xs font-semibold shadow-xs hover:bg-neutral-100 active:bg-neutral-200 dark:border-neutral-700"
17
}
18
classList={props.classList}
19
onClick={props.onClick}
+2
-2
src/components/create.tsx
···
211
</div>
212
<div class="flex items-center gap-2">
213
<Show when={!uploading()}>
214
-
<div class="dark:hover:bg-dark-100 dark:shadow-dark-800 dark:bg-dark-300 dark:active:bg-dark-100 flex rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 text-xs font-semibold shadow-xs hover:bg-neutral-100 active:bg-neutral-100 dark:border-neutral-700">
215
<input type="file" id="blob" hidden onChange={() => uploadBlob()} />
216
<label class="flex items-center gap-1 px-2 py-1.5" for="blob">
217
<span class="iconify lucide--upload text-sm"></span>
···
272
</Modal>
273
<Tooltip text={`${props.create ? "Create" : "Edit"} record`}>
274
<button
275
-
class={`flex items-center p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700 ${props.create ? "rounded-lg" : "rounded-sm"}`}
276
onclick={() => {
277
setNotice("");
278
setOpenDialog(true);
···
211
</div>
212
<div class="flex items-center gap-2">
213
<Show when={!uploading()}>
214
+
<div class="dark:hover:bg-dark-200 dark:shadow-dark-800 dark:bg-dark-300 dark:active:bg-dark-100 flex rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 text-xs font-semibold shadow-xs hover:bg-neutral-100 active:bg-neutral-200 dark:border-neutral-700">
215
<input type="file" id="blob" hidden onChange={() => uploadBlob()} />
216
<label class="flex items-center gap-1 px-2 py-1.5" for="blob">
217
<span class="iconify lucide--upload text-sm"></span>
···
272
</Modal>
273
<Tooltip text={`${props.create ? "Create" : "Edit"} record`}>
274
<button
275
+
class={`flex items-center p-1 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600 ${props.create ? "rounded-lg" : "rounded-sm"}`}
276
onclick={() => {
277
setNotice("");
278
setOpenDialog(true);
+3
-3
src/components/dropdown.tsx
···
33
addToClipboard(props.copyContent);
34
ctx?.setShowMenu(false);
35
}}
36
-
class="flex items-center gap-1.5 rounded-lg p-1 whitespace-nowrap hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
37
>
38
<Show when={props.icon}>
39
<span class={"iconify shrink-0 " + props.icon}></span>
···
50
<A
51
href={props.href}
52
onClick={() => ctx?.setShowMenu(false)}
53
-
class="flex items-center gap-1.5 rounded-lg p-1 hover:bg-neutral-200/50 active:bg-neutral-200/50 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
54
target={props.newTab ? "_blank" : undefined}
55
>
56
<span class={"iconify shrink-0 " + props.icon}></span>
···
81
<div class="relative">
82
<button
83
class={
84
-
"flex items-center hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700 " +
85
props.buttonClass
86
}
87
ref={setMenuButton}
···
33
addToClipboard(props.copyContent);
34
ctx?.setShowMenu(false);
35
}}
36
+
class="flex items-center gap-1.5 rounded-lg p-1 whitespace-nowrap hover:bg-neutral-200/50 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
37
>
38
<Show when={props.icon}>
39
<span class={"iconify shrink-0 " + props.icon}></span>
···
50
<A
51
href={props.href}
52
onClick={() => ctx?.setShowMenu(false)}
53
+
class="flex items-center gap-1.5 rounded-lg p-1 hover:bg-neutral-200/50 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
54
target={props.newTab ? "_blank" : undefined}
55
>
56
<span class={"iconify shrink-0 " + props.icon}></span>
···
81
<div class="relative">
82
<button
83
class={
84
+
"flex items-center hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600 " +
85
props.buttonClass
86
}
87
ref={setMenuButton}
+6
-1
src/components/login.tsx
···
67
onInput={(e) => setLoginInput(e.currentTarget.value)}
68
class="grow"
69
/>
70
-
<button onclick={() => login(loginInput())} class="iconify lucide--log-in text-lg"></button>
0
0
0
0
0
71
</div>
72
<div>{notice()}</div>
73
</form>
···
67
onInput={(e) => setLoginInput(e.currentTarget.value)}
68
class="grow"
69
/>
70
+
<button
71
+
onclick={() => login(loginInput())}
72
+
class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
73
+
>
74
+
<span class="iconify lucide--log-in text-lg"></span>
75
+
</button>
76
</div>
77
<div>{notice()}</div>
78
</form>
+1
-1
src/components/navbar.tsx
···
135
</div>
136
<Tooltip text={showHandle() ? "Show DID" : "Show handle"}>
137
<button
138
-
class="flex items-center rounded p-0.5 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
139
onclick={() => {
140
localStorage.showHandle = !showHandle();
141
setShowHandle(!showHandle());
···
135
</div>
136
<Tooltip text={showHandle() ? "Show DID" : "Show handle"}>
137
<button
138
+
class="flex items-center rounded p-0.5 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
139
onclick={() => {
140
localStorage.showHandle = !showHandle();
141
setShowHandle(!showHandle());
+1
-1
src/components/search.tsx
···
23
return (
24
<button
25
onclick={() => setShowSearch(!showSearch())}
26
-
class={`flex items-center gap-0.5 rounded-lg ${isTouchDevice ? "p-1 text-xl hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700" : "dark:bg-dark-200 bg-neutral-200 p-1.5 text-xs hover:bg-neutral-300 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"}`}
27
>
28
<span class="iconify lucide--search"></span>
29
<Show when={!isTouchDevice}>
···
23
return (
24
<button
25
onclick={() => setShowSearch(!showSearch())}
26
+
class={`flex items-center gap-0.5 rounded-lg ${isTouchDevice ? "p-1 text-xl hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600" : "dark:bg-dark-200 bg-neutral-200 p-1.5 text-xs hover:bg-neutral-300/80 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"}`}
27
>
28
<span class="iconify lucide--search"></span>
29
<Show when={!isTouchDevice}>
+1
-1
src/layout.tsx
···
53
<A
54
href="/"
55
style='font-feature-settings: "cv05"'
56
-
class="flex items-center gap-1 rounded-lg px-1 text-xl font-semibold hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
57
>
58
<span class="iconify tabler--binary-tree-filled text-[#76c4e5]"></span>
59
<span>PDSls</span>
···
53
<A
54
href="/"
55
style='font-feature-settings: "cv05"'
56
+
class="flex items-center gap-1 px-1 text-xl font-semibold"
57
>
58
<span class="iconify tabler--binary-tree-filled text-[#76c4e5]"></span>
59
<span>PDSls</span>
+1
-1
src/views/blob.tsx
···
39
<a
40
href={`${props.pds}/xrpc/com.atproto.sync.getBlob?did=${props.repo}&cid=${cid}`}
41
target="_blank"
42
-
class="rounded px-0.5 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
43
>
44
<span class="text-blue-400">{cid}</span>
45
</a>
···
39
<a
40
href={`${props.pds}/xrpc/com.atproto.sync.getBlob?did=${props.repo}&cid=${cid}`}
41
target="_blank"
42
+
class="rounded px-0.5 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
43
>
44
<span class="text-blue-400">{cid}</span>
45
</a>
+1
-1
src/views/collection.tsx
···
47
48
return (
49
<span
50
-
class="relative flex items-baseline rounded px-0.5 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
51
ref={rkeyRef}
52
onmouseover={() => setHover(true)}
53
onmouseleave={() => setHover(false)}
···
47
48
return (
49
<span
50
+
class="relative flex items-baseline rounded px-0.5 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
51
ref={rkeyRef}
52
onmouseover={() => setHover(true)}
53
onmouseleave={() => setHover(false)}
+1
-1
src/views/labels.tsx
···
85
<Show when={!response.loading}>
86
<button
87
type="submit"
88
-
class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
89
>
90
<span class="iconify lucide--search text-lg"></span>
91
</button>
···
85
<Show when={!response.loading}>
86
<button
87
type="submit"
88
+
class="flex items-center rounded-lg p-1 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
89
>
90
<span class="iconify lucide--search text-lg"></span>
91
</button>
+1
-1
src/views/pds.tsx
···
89
<A
90
href={`/at://${repo.did}`}
91
classList={{
92
-
"rounded items-center text-sm gap-1 flex justify-between font-mono relative hover:bg-neutral-200 dark:hover:bg-neutral-700 active:bg-neutral-200 dark:active:bg-neutral-700": true,
93
"text-blue-400": repo.active,
94
"text-neutral-400 dark:text-neutral-500": !repo.active,
95
}}
···
89
<A
90
href={`/at://${repo.did}`}
91
classList={{
92
+
"rounded items-center text-sm gap-1 flex justify-between font-mono relative hover:bg-neutral-200 dark:hover:bg-neutral-700 active:bg-neutral-300 dark:active:bg-neutral-600": true,
93
"text-blue-400": repo.active,
94
"text-neutral-400 dark:text-neutral-500": !repo.active,
95
}}
+1
-1
src/views/record.tsx
···
150
<RecordEditor create={false} record={record()?.value} refetch={refetch} />
151
<Tooltip text="Delete">
152
<button
153
-
class="flex items-center rounded-sm p-1 hover:bg-neutral-200 active:bg-neutral-200 dark:hover:bg-neutral-700 dark:active:bg-neutral-700"
154
onclick={() => setOpenDelete(true)}
155
>
156
<span class="iconify lucide--trash-2"></span>
···
150
<RecordEditor create={false} record={record()?.value} refetch={refetch} />
151
<Tooltip text="Delete">
152
<button
153
+
class="flex items-center rounded-sm p-1 hover:bg-neutral-200 active:bg-neutral-300 dark:hover:bg-neutral-700 dark:active:bg-neutral-600"
154
onclick={() => setOpenDelete(true)}
155
>
156
<span class="iconify lucide--trash-2"></span>