tangled
alpha
login
or
join now
vielle.dev
/
pdsls
forked from
pds.ls/pdsls
0
fork
atom
atproto explorer
0
fork
atom
overview
issues
pulls
pipelines
restyle modals
handle.invalid
6 months ago
d068f7b9
8b93b86c
+24
-19
11 changed files
expand all
collapse all
unified
split
src
components
account.tsx
button.tsx
create.tsx
editor.tsx
modal.tsx
search.tsx
text-input.tsx
views
labels.tsx
record.tsx
repo.tsx
stream.tsx
+3
-3
src/components/account.tsx
···
68
68
return (
69
69
<>
70
70
<Modal open={openManager()} onClose={() => setOpenManager(false)}>
71
71
-
<div class="dark:bg-dark-800 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200 p-4 text-neutral-900 shadow-md transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0">
71
71
+
<div class="dark:bg-dark-300 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 p-4 shadow-md transition-opacity duration-300 sm:w-[24rem] dark:border-neutral-700 starting:opacity-0">
72
72
<div class="mb-2 flex items-center gap-1 font-semibold">
73
73
<span class="iconify lucide--user-round"></span>
74
74
<span>Manage accounts</span>
···
76
76
<div class="mb-3 max-h-[20rem] overflow-y-auto md:max-h-[25rem]">
77
77
<For each={Object.keys(sessions)}>
78
78
{(did) => (
79
79
-
<div class="flex w-full items-center justify-between gap-x-2 rounded-lg hover:bg-neutral-100 active:bg-neutral-100 dark:hover:bg-neutral-600 dark:active:bg-neutral-600">
79
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
80
<button
81
81
class="flex basis-full items-center justify-between gap-1 truncate p-1"
82
82
onclick={() => resumeSession(did as Did)}
···
113
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
114
>
115
115
{agent() && avatar() ?
116
116
-
<img src={avatar()} class="dark:shadow-dark-800 size-5 rounded-full shadow-sm" />
116
116
+
<img src={avatar()} class="dark:shadow-dark-800 size-5 rounded-full shadow-xs" />
117
117
: <span class="iconify lucide--circle-user-round text-xl"></span>}
118
118
</button>
119
119
</>
+1
-1
src/components/button.tsx
···
13
13
type="button"
14
14
class={
15
15
props.class ??
16
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-sm hover:bg-neutral-100 active:bg-neutral-100 dark:border-neutral-700"
16
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
17
}
18
18
classList={props.classList}
19
19
onClick={props.onClick}
+3
-3
src/components/create.tsx
···
164
164
return (
165
165
<>
166
166
<Modal open={openDialog()} onClose={() => setOpenDialog(false)} closeOnClick={false}>
167
167
-
<div class="dark:bg-dark-800 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200 p-2 text-neutral-900 shadow-md transition-opacity duration-300 sm:w-xl sm:p-4 lg:w-[48rem] dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0">
167
167
+
<div class="dark:bg-dark-300 dark:shadow-dark-800 absolute top-12 left-[50%] w-[22rem] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 p-2 shadow-md transition-opacity duration-300 sm:w-xl sm:p-4 lg:w-[48rem] dark:border-neutral-700 starting:opacity-0">
168
168
<div class="mb-2 flex w-full justify-between">
169
169
<div class="flex items-center gap-1 font-semibold">
170
170
<span class="iconify lucide--square-pen"></span>
···
202
202
<select
203
203
name="validate"
204
204
id="validate"
205
205
-
class="dark:bg-dark-100 dark:shadow-dark-800 rounded-lg border-[0.5px] border-neutral-300 bg-white px-1 py-1 shadow-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
205
205
+
class="dark:bg-dark-100 dark:shadow-dark-800 rounded-lg border-[0.5px] border-neutral-300 bg-white px-1 py-1 shadow-xs focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
206
206
>
207
207
<option value="unset">Unset</option>
208
208
<option value="true">True</option>
···
211
211
</div>
212
212
<div class="flex items-center gap-2">
213
213
<Show when={!uploading()}>
214
214
-
<div class="dark:hover:bg-dark-100 dark:bg-dark-300 dark:shadow-dark-800 dark:active:bg-dark-100 flex rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 text-xs font-semibold shadow-sm hover:bg-neutral-100 active:bg-neutral-100 dark:border-neutral-700">
214
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
215
<input type="file" id="blob" hidden onChange={() => uploadBlob()} />
216
216
<label class="flex items-center gap-1 px-2 py-1.5" for="blob">
217
217
<span class="iconify lucide--upload text-sm"></span>
+6
-1
src/components/editor.tsx
···
54
54
window.matchMedia("(prefers-color-scheme: dark)").removeEventListener("change", themeEvent),
55
55
);
56
56
57
57
-
return <div ref={editorDiv} class="dark:shadow-dark-800 shadow-sm"></div>;
57
57
+
return (
58
58
+
<div
59
59
+
ref={editorDiv}
60
60
+
class="dark:shadow-dark-800 border-[0.5px] border-neutral-300 shadow-xs dark:border-neutral-700"
61
61
+
></div>
62
62
+
);
58
63
};
59
64
60
65
export { Editor };
+1
-1
src/components/modal.tsx
···
27
27
document.body.style.overflow = "auto";
28
28
if (props.onClose) props.onClose();
29
29
}}
30
30
-
class="h-full max-h-none w-full max-w-none bg-transparent backdrop:bg-transparent"
30
30
+
class="h-full max-h-none w-full max-w-none bg-transparent text-neutral-900 backdrop:bg-transparent dark:text-neutral-200"
31
31
>
32
32
{props.children}
33
33
</dialog>
+1
-1
src/components/search.tsx
···
76
76
PDS URL, AT URI, or handle
77
77
</label>
78
78
<div class="flex w-full items-center gap-2">
79
79
-
<div class="dark:bg-dark-100 dark:shadow-dark-800 flex grow items-center gap-2 rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-sm focus-within:outline-[1.5px] focus-within:outline-neutral-900 dark:border-neutral-700 dark:focus-within:outline-neutral-200">
79
79
+
<div class="dark:bg-dark-100 dark:shadow-dark-800 flex grow items-center gap-2 rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-xs focus-within:outline-[1.5px] focus-within:outline-neutral-900 dark:border-neutral-700 dark:focus-within:outline-neutral-200">
80
80
<input
81
81
type="text"
82
82
spellcheck={false}
+1
-1
src/components/text-input.tsx
···
25
25
disabled={props.disabled}
26
26
required={props.required}
27
27
class={
28
28
-
"dark:bg-dark-100 dark:shadow-dark-800 rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-sm placeholder:text-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200 " +
28
28
+
"dark:bg-dark-100 dark:shadow-dark-800 rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-xs placeholder:text-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200 " +
29
29
props.class
30
30
}
31
31
onInput={props.onInput}
+1
-1
src/views/labels.tsx
···
79
79
spellcheck={false}
80
80
rows={3}
81
81
value={searchParams.uriPatterns ?? "*"}
82
82
-
class="dark:bg-dark-100 dark:shadow-dark-800 mb-1 grow rounded-lg bg-white px-2 py-1 shadow-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:focus:outline-neutral-200"
82
82
+
class="dark:bg-dark-100 dark:shadow-dark-800 mb-1 grow rounded-lg bg-white px-2 py-1 shadow-xs focus:outline-[1.5px] focus:outline-neutral-900 dark:focus:outline-neutral-200"
83
83
/>
84
84
<div class="flex justify-center">
85
85
<Show when={!response.loading}>
+3
-3
src/views/record.tsx
···
120
120
return (
121
121
<Show when={record()} keyed>
122
122
<div class="flex w-full flex-col items-center">
123
123
-
<div class="dark:shadow-dark-800 dark:bg-dark-300 mb-3 flex w-[22rem] justify-between rounded-lg bg-neutral-50 px-2 py-1.5 shadow-sm sm:w-[24rem]">
123
123
+
<div class="dark:shadow-dark-800 dark:bg-dark-300 mb-3 flex w-[22rem] justify-between rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 px-2 py-1.5 shadow-xs sm:w-[24rem] dark:border-neutral-700">
124
124
<div class="flex gap-3 text-sm">
125
125
<A
126
126
classList={{
···
157
157
</button>
158
158
</Tooltip>
159
159
<Modal open={openDelete()} onClose={() => setOpenDelete(false)}>
160
160
-
<div class="dark:bg-dark-800 dark:shadow-dark-800 absolute top-70 left-[50%] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-200 p-4 text-neutral-900 shadow-md transition-opacity duration-300 dark:border-neutral-700 dark:text-neutral-200 starting:opacity-0">
160
160
+
<div class="dark:bg-dark-300 dark:shadow-dark-800 absolute top-70 left-[50%] -translate-x-1/2 rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 p-4 shadow-md transition-opacity duration-300 dark:border-neutral-700 starting:opacity-0">
161
161
<h2 class="mb-2 font-semibold">Delete this record?</h2>
162
162
<div class="flex justify-end gap-2">
163
163
<Button onClick={() => setOpenDelete(false)}>Cancel</Button>
164
164
<Button
165
165
onClick={deleteRecord}
166
166
-
class="dark:shadow-dark-800 rounded-lg bg-red-500 px-2 py-1.5 text-xs font-semibold text-neutral-200 shadow-sm hover:bg-red-400 active:bg-red-400"
166
166
+
class="dark:shadow-dark-800 rounded-lg bg-red-500 px-2 py-1.5 text-xs font-semibold text-neutral-200 shadow-xs hover:bg-red-400 active:bg-red-400"
167
167
>
168
168
Delete
169
169
</Button>
+2
-2
src/views/repo.tsx
···
110
110
<div class="flex items-center justify-between">
111
111
<div class="flex items-center gap-1">
112
112
<div class="iconify lucide--filter" />
113
113
-
<div class="dark:shadow-dark-800 dark:bg-dark-300 flex w-fit items-center rounded-full border-[0.5px] border-neutral-300 bg-neutral-50 shadow-sm dark:border-neutral-700">
113
113
+
<div class="dark:shadow-dark-800 dark:bg-dark-300 flex w-fit items-center rounded-full border-[0.5px] border-neutral-300 bg-neutral-50 shadow-xs dark:border-neutral-700">
114
114
<FilterButton icon="iconify lucide--at-sign" event="handle" />
115
115
<FilterButton icon="iconify lucide--key-round" event="rotation_key" />
116
116
<FilterButton icon="iconify lucide--hard-drive" event="service" />
···
273
273
{error()}
274
274
</div>
275
275
</Show>
276
276
-
<div class="dark:shadow-dark-800 dark:bg-dark-300 flex justify-between rounded-lg bg-neutral-50 px-2 py-1.5 text-sm shadow-sm">
276
276
+
<div class="dark:shadow-dark-800 dark:bg-dark-300 flex justify-between rounded-lg border-[0.5px] border-neutral-300 bg-neutral-50 px-2 py-1.5 text-sm shadow-xs dark:border-neutral-700">
277
277
<Show when={!error()}>
278
278
<RepoTab tab="collections" label="Collections" icon="lucide--folder-open" />
279
279
</Show>
+2
-2
src/views/stream.tsx
···
194
194
spellcheck={false}
195
195
placeholder="Comma-separated list of collections"
196
196
value={searchParams.collections ?? ""}
197
197
-
class="dark:bg-dark-100 dark:shadow-dark-800 grow rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
197
197
+
class="dark:bg-dark-100 dark:shadow-dark-800 grow rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-xs focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
198
198
/>
199
199
</label>
200
200
</Show>
···
206
206
spellcheck={false}
207
207
placeholder="Comma-separated list of DIDs"
208
208
value={searchParams.dids ?? ""}
209
209
-
class="dark:bg-dark-100 dark:shadow-dark-800 grow rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-sm focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
209
209
+
class="dark:bg-dark-100 dark:shadow-dark-800 grow rounded-lg border-[0.5px] border-neutral-300 bg-white px-2 py-1 shadow-xs focus:outline-[1.5px] focus:outline-neutral-900 dark:border-neutral-700 dark:focus:outline-neutral-200"
210
210
/>
211
211
</label>
212
212
</Show>