@feedlog-ai/webcomponents 0.0.26 → 0.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/cjs/feedlog-badge.cjs.entry.js +1 -1
- package/dist/cjs/feedlog-button_3.cjs.entry.js +35 -6
- package/dist/cjs/feedlog-issues.cjs.entry.js +1 -1
- package/dist/collection/components/feedlog-badge/feedlog-badge.css +50 -50
- package/dist/collection/components/feedlog-issue/feedlog-issue.css +255 -83
- package/dist/collection/components/feedlog-issue/feedlog-issue.js +33 -4
- package/dist/collection/components/feedlog-issue/feedlog-issue.stories.js +3 -2
- package/dist/collection/components/feedlog-issues/feedlog-issues.css +0 -2
- package/dist/collection/components/feedlog-issues/feedlog-issues.stories.js +3 -2
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.css +1 -0
- package/dist/components/feedlog-badge.js +1 -1
- package/dist/components/feedlog-issue.js +1 -1
- package/dist/components/feedlog-issues-client.js +1 -1
- package/dist/components/feedlog-issues-list.js +1 -1
- package/dist/components/feedlog-issues.js +1 -1
- package/dist/components/p-B85wbrJg.js +3 -0
- package/dist/components/{p-DeVUfQ0-.js → p-DrIHp7WA.js} +1 -1
- package/dist/components/p-DzATWlAC.js +1 -0
- package/dist/components/{p-CLFvFGWa.js → p-w376pIno.js} +1 -1
- package/dist/esm/feedlog-badge.entry.js +1 -1
- package/dist/esm/feedlog-button_3.entry.js +36 -7
- package/dist/esm/feedlog-issues.entry.js +1 -1
- package/dist/feedlog-toolkit/feedlog-toolkit.esm.js +1 -1
- package/dist/feedlog-toolkit/{p-7f8133b3.entry.js → p-08a0ec85.entry.js} +1 -1
- package/dist/feedlog-toolkit/p-bf8244fc.entry.js +1 -0
- package/dist/feedlog-toolkit/p-def7865f.entry.js +3 -0
- package/dist/types/components/feedlog-issue/feedlog-issue.d.ts +7 -1
- package/package.json +2 -2
- package/dist/components/p-BBPFf6g7.js +0 -3
- package/dist/components/p-Chc3XZ5Y.js +0 -1
- package/dist/feedlog-toolkit/p-13089dc5.entry.js +0 -1
- package/dist/feedlog-toolkit/p-d029db94.entry.js +0 -3
- /package/dist/collection/{__mocks__ → test/mocks}/feedlog-core.js +0 -0
- /package/dist/types/{__mocks__ → test/mocks}/feedlog-core.d.ts +0 -0
|
@@ -23,29 +23,28 @@
|
|
|
23
23
|
--feedlog-destructive: #d4183d;
|
|
24
24
|
--feedlog-blue-400: oklch(0.707 0.165 254.624);
|
|
25
25
|
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
26
|
-
--feedlog-blue-100: oklch(0.932 0.032 255.585);
|
|
27
|
-
--feedlog-red-100: #fce7f3;
|
|
28
|
-
--feedlog-red-400: #f472b6;
|
|
29
26
|
--feedlog-red-600: #db2777;
|
|
30
27
|
--feedlog-radius: 0.625rem;
|
|
31
28
|
--feedlog-gap: 0.5rem;
|
|
32
29
|
|
|
33
30
|
/* Customization variables */
|
|
34
31
|
--feedlog-card-padding: 1.25rem;
|
|
35
|
-
--feedlog-title-font-size:
|
|
32
|
+
--feedlog-title-font-size: 1.125rem;
|
|
36
33
|
--feedlog-title-font-weight: 600;
|
|
37
|
-
--feedlog-body-font-size: 0.
|
|
38
|
-
--feedlog-body-line-height: 1.
|
|
34
|
+
--feedlog-body-font-size: 0.875rem;
|
|
35
|
+
--feedlog-body-line-height: 1.6;
|
|
39
36
|
--feedlog-timestamp-font-size: 0.6875rem;
|
|
40
37
|
--feedlog-timestamp-color: var(--feedlog-muted-foreground);
|
|
41
|
-
--feedlog-card-
|
|
38
|
+
--feedlog-card-radius: 0.75rem;
|
|
42
39
|
--feedlog-icon-color: var(--feedlog-muted-foreground);
|
|
43
40
|
--feedlog-icon-color-muted: var(--feedlog-muted-foreground);
|
|
44
41
|
--feedlog-pin-color: var(--feedlog-accent-color);
|
|
45
42
|
--feedlog-upvote-icon-color: var(--feedlog-blue-600);
|
|
46
43
|
--feedlog-upvote-icon-filled-color: var(--feedlog-red-600);
|
|
47
|
-
|
|
48
|
-
--feedlog-shadow
|
|
44
|
+
/* Layered shadows for depth */
|
|
45
|
+
--feedlog-shadow: 0 1px 2px rgba(0, 0, 0, 0.04), 0 4px 12px rgba(0, 0, 0, 0.06), inset 0 1px 0 rgba(255, 255, 255, 0.5);
|
|
46
|
+
--feedlog-shadow-hover-enhancement: 0 8px 16px rgba(37, 99, 235, 0.08), 0 12px 24px rgba(37, 99, 235, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.6);
|
|
47
|
+
--feedlog-shadow-hover-bug: 0 8px 16px rgba(212, 24, 61, 0.08), 0 12px 24px rgba(212, 24, 61, 0.05), inset 0 1px 0 rgba(255, 255, 255, 0.6);
|
|
49
48
|
}
|
|
50
49
|
|
|
51
50
|
:host(.dark) {
|
|
@@ -59,20 +58,20 @@
|
|
|
59
58
|
--feedlog-border: oklch(0.34 0.01 260);
|
|
60
59
|
--feedlog-accent-color: #3b82f6;
|
|
61
60
|
--feedlog-destructive: oklch(0.396 0.141 25.723);
|
|
61
|
+
--feedlog-blue-300: oklch(0.78 0.12 255);
|
|
62
62
|
--feedlog-blue-400: oklch(0.707 0.165 254.624);
|
|
63
63
|
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
64
|
-
--feedlog-blue-900-30: color-mix(in oklab, oklch(0.379 0.146 265.522) 30%, transparent);
|
|
65
|
-
--feedlog-red-900-30: color-mix(in oklab, oklch(0.396 0.141 25.723) 30%, transparent);
|
|
66
64
|
--feedlog-upvote-icon-color: var(--feedlog-blue-400);
|
|
67
65
|
--feedlog-upvote-icon-filled-color: var(--feedlog-red-600);
|
|
68
|
-
--feedlog-shadow: 0 1px
|
|
69
|
-
--feedlog-shadow-hover: 0
|
|
66
|
+
--feedlog-shadow: 0 1px 2px rgba(0, 0, 0, 0.2), 0 4px 12px rgba(0, 0, 0, 0.25), inset 0 1px 0 rgba(255, 255, 255, 0.05);
|
|
67
|
+
--feedlog-shadow-hover-enhancement: 0 8px 16px rgba(59, 130, 246, 0.15), 0 12px 24px rgba(59, 130, 246, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
68
|
+
--feedlog-shadow-hover-bug: 0 8px 16px rgba(220, 38, 38, 0.15), 0 12px 24px rgba(220, 38, 38, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
70
69
|
}
|
|
71
70
|
|
|
72
71
|
.issue-card {
|
|
73
|
-
background-color
|
|
72
|
+
background: linear-gradient(180deg, var(--feedlog-card) 0%, color-mix(in oklab, var(--feedlog-card) 98%, var(--feedlog-muted) 2%) 100%);
|
|
74
73
|
border: 1px solid var(--feedlog-border);
|
|
75
|
-
border-radius: var(--feedlog-radius);
|
|
74
|
+
border-radius: var(--feedlog-card-radius, var(--feedlog-radius));
|
|
76
75
|
box-shadow: var(--feedlog-shadow);
|
|
77
76
|
transition:
|
|
78
77
|
box-shadow 0.2s ease,
|
|
@@ -81,49 +80,66 @@
|
|
|
81
80
|
overflow: hidden;
|
|
82
81
|
}
|
|
83
82
|
|
|
84
|
-
.issue-card
|
|
85
|
-
content: '';
|
|
86
|
-
position: absolute;
|
|
87
|
-
left: 0;
|
|
88
|
-
top: 0;
|
|
89
|
-
bottom: 0;
|
|
90
|
-
width: var(--feedlog-card-accent-width);
|
|
91
|
-
background: var(--feedlog-accent-color);
|
|
83
|
+
.issue-card:hover {
|
|
92
84
|
}
|
|
93
85
|
|
|
94
|
-
.issue-card.issue-type-
|
|
95
|
-
|
|
86
|
+
.issue-card.issue-type-enhancement:hover {
|
|
87
|
+
box-shadow: var(--feedlog-shadow-hover-enhancement);
|
|
96
88
|
}
|
|
97
89
|
|
|
98
|
-
.issue-card:hover {
|
|
99
|
-
box-shadow: var(--feedlog-shadow-hover);
|
|
90
|
+
.issue-card.issue-type-bug:hover {
|
|
91
|
+
box-shadow: var(--feedlog-shadow-hover-bug);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
/* Media area - ready for future images/videos. Hidden until media support is added. */
|
|
95
|
+
.issue-media {
|
|
96
|
+
display: none;
|
|
97
|
+
aspect-ratio: 16 / 9;
|
|
98
|
+
overflow: hidden;
|
|
99
|
+
border-radius: var(--feedlog-card-radius, var(--feedlog-radius)) var(--feedlog-card-radius, var(--feedlog-radius)) 0 0;
|
|
100
|
+
background-color: var(--feedlog-muted);
|
|
101
|
+
border-bottom: 1px solid var(--feedlog-border);
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.issue-media.has-media {
|
|
105
|
+
display: block;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
.issue-media ::slotted(img),
|
|
109
|
+
.issue-media ::slotted(video) {
|
|
110
|
+
width: 100%;
|
|
111
|
+
height: 100%;
|
|
112
|
+
object-fit: cover;
|
|
113
|
+
display: block;
|
|
100
114
|
}
|
|
101
115
|
|
|
102
116
|
.issue-content {
|
|
103
117
|
padding: var(--feedlog-card-padding);
|
|
104
|
-
padding-left: calc(var(--feedlog-card-padding) + var(--feedlog-card-accent-width));
|
|
105
118
|
display: flex;
|
|
106
119
|
flex-direction: column;
|
|
107
120
|
gap: 0.875rem;
|
|
108
121
|
}
|
|
109
122
|
|
|
110
|
-
.issue-header {
|
|
123
|
+
.issue-header-top {
|
|
111
124
|
display: flex;
|
|
112
125
|
align-items: flex-start;
|
|
113
126
|
justify-content: space-between;
|
|
114
|
-
gap:
|
|
115
|
-
|
|
127
|
+
gap: 1rem;
|
|
128
|
+
margin-bottom: 0.5rem;
|
|
116
129
|
}
|
|
117
130
|
|
|
118
|
-
.issue-
|
|
131
|
+
.issue-badges {
|
|
119
132
|
display: flex;
|
|
120
133
|
align-items: center;
|
|
121
134
|
gap: 0.375rem;
|
|
122
135
|
flex-wrap: wrap;
|
|
136
|
+
margin-left: -0.25rem;
|
|
123
137
|
}
|
|
124
138
|
|
|
125
|
-
.issue-
|
|
126
|
-
|
|
139
|
+
.issue-meta-right {
|
|
140
|
+
display: flex;
|
|
141
|
+
align-items: center;
|
|
142
|
+
gap: 0.5rem;
|
|
127
143
|
}
|
|
128
144
|
|
|
129
145
|
.pinned-indicator {
|
|
@@ -149,14 +165,29 @@
|
|
|
149
165
|
|
|
150
166
|
.issue-main {
|
|
151
167
|
display: flex;
|
|
152
|
-
|
|
168
|
+
flex-direction: column;
|
|
169
|
+
gap: 0;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
.issue-footer {
|
|
173
|
+
display: flex;
|
|
174
|
+
flex-direction: row;
|
|
175
|
+
align-items: center;
|
|
153
176
|
justify-content: space-between;
|
|
154
|
-
gap:
|
|
177
|
+
gap: 0.75rem;
|
|
178
|
+
margin-top: 0.75rem;
|
|
179
|
+
padding-top: 1rem;
|
|
180
|
+
border-top: 1px solid var(--feedlog-border);
|
|
181
|
+
flex-wrap: wrap;
|
|
155
182
|
}
|
|
156
183
|
|
|
157
|
-
.issue-
|
|
158
|
-
|
|
159
|
-
|
|
184
|
+
.issue-footer-meta {
|
|
185
|
+
display: flex;
|
|
186
|
+
align-items: center;
|
|
187
|
+
gap: 0.5rem;
|
|
188
|
+
font-size: 0.75rem;
|
|
189
|
+
color: var(--feedlog-muted-foreground);
|
|
190
|
+
flex-wrap: wrap;
|
|
160
191
|
}
|
|
161
192
|
|
|
162
193
|
.issue-title {
|
|
@@ -164,7 +195,8 @@
|
|
|
164
195
|
font-size: var(--feedlog-title-font-size);
|
|
165
196
|
font-weight: var(--feedlog-title-font-weight);
|
|
166
197
|
margin: 0 0 0.5rem 0;
|
|
167
|
-
line-height: 1.
|
|
198
|
+
line-height: 1.3;
|
|
199
|
+
letter-spacing: -0.015em;
|
|
168
200
|
word-break: break-word;
|
|
169
201
|
}
|
|
170
202
|
|
|
@@ -185,7 +217,7 @@
|
|
|
185
217
|
}
|
|
186
218
|
|
|
187
219
|
.issue-body p {
|
|
188
|
-
margin: 0 0 0.
|
|
220
|
+
margin: 0 0 0.75em 0;
|
|
189
221
|
}
|
|
190
222
|
|
|
191
223
|
.issue-body p:last-child {
|
|
@@ -243,15 +275,6 @@
|
|
|
243
275
|
color: var(--feedlog-muted-foreground);
|
|
244
276
|
}
|
|
245
277
|
|
|
246
|
-
.issue-repository {
|
|
247
|
-
display: flex;
|
|
248
|
-
align-items: center;
|
|
249
|
-
gap: 0.5rem;
|
|
250
|
-
font-size: 0.75rem;
|
|
251
|
-
color: var(--feedlog-muted-foreground);
|
|
252
|
-
flex-wrap: wrap;
|
|
253
|
-
}
|
|
254
|
-
|
|
255
278
|
.repo-name {
|
|
256
279
|
font-weight: 500;
|
|
257
280
|
}
|
|
@@ -260,19 +283,20 @@
|
|
|
260
283
|
display: inline-flex;
|
|
261
284
|
align-items: center;
|
|
262
285
|
gap: 0.25rem;
|
|
263
|
-
color: var(--feedlog-
|
|
286
|
+
color: var(--feedlog-muted-foreground);
|
|
264
287
|
text-decoration: none;
|
|
265
288
|
font-weight: 500;
|
|
266
289
|
font-size: 0.75rem;
|
|
267
|
-
padding: 0.
|
|
268
|
-
border-radius: 0.
|
|
290
|
+
padding: 0.25rem 0.5rem;
|
|
291
|
+
border-radius: 0.375rem;
|
|
269
292
|
transition:
|
|
270
|
-
background-color 0.
|
|
271
|
-
color 0.
|
|
293
|
+
background-color 0.2s ease,
|
|
294
|
+
color 0.2s ease;
|
|
272
295
|
}
|
|
273
296
|
|
|
274
297
|
.github-link:hover {
|
|
275
|
-
|
|
298
|
+
color: var(--feedlog-card-foreground);
|
|
299
|
+
background-color: var(--feedlog-muted);
|
|
276
300
|
}
|
|
277
301
|
|
|
278
302
|
.github-link-icon {
|
|
@@ -294,62 +318,210 @@
|
|
|
294
318
|
}
|
|
295
319
|
|
|
296
320
|
.upvote-button {
|
|
297
|
-
display: flex;
|
|
298
|
-
flex-direction:
|
|
321
|
+
display: inline-flex;
|
|
322
|
+
flex-direction: row;
|
|
299
323
|
align-items: center;
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
border
|
|
303
|
-
background-color: var(--feedlog-muted);
|
|
304
|
-
border: 1px solid transparent;
|
|
324
|
+
border-radius: 9999px;
|
|
325
|
+
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
|
|
326
|
+
border: 1px solid #e2e8f0;
|
|
305
327
|
cursor: pointer;
|
|
306
|
-
transition: all 0.
|
|
328
|
+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
|
|
307
329
|
flex-shrink: 0;
|
|
308
|
-
|
|
309
|
-
|
|
330
|
+
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
331
|
+
overflow: hidden;
|
|
332
|
+
padding: 0.375rem 0.875rem;
|
|
333
|
+
gap: 0.5rem;
|
|
334
|
+
font-family: inherit;
|
|
335
|
+
line-height: 1;
|
|
310
336
|
}
|
|
311
337
|
|
|
312
338
|
.upvote-button:hover {
|
|
313
|
-
background
|
|
314
|
-
border-color:
|
|
339
|
+
background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
|
|
340
|
+
border-color: #cbd5e1;
|
|
341
|
+
transform: translateY(-1px);
|
|
342
|
+
box-shadow:
|
|
343
|
+
0 4px 6px -1px rgba(0, 0, 0, 0.08),
|
|
344
|
+
0 2px 4px -2px rgba(0, 0, 0, 0.04);
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
.upvote-button:active {
|
|
348
|
+
transform: translateY(0);
|
|
349
|
+
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
315
350
|
}
|
|
316
351
|
|
|
317
352
|
.upvote-button.upvoted {
|
|
318
|
-
background
|
|
319
|
-
border-color:
|
|
353
|
+
background: linear-gradient(180deg, #eff6ff 0%, #e0e7ff 100%);
|
|
354
|
+
border-color: #bfdbfe;
|
|
320
355
|
}
|
|
321
356
|
|
|
322
357
|
.upvote-button.upvoted:hover {
|
|
323
|
-
background
|
|
324
|
-
border-color:
|
|
358
|
+
background: linear-gradient(180deg, #dbeafe 0%, #c7d2fe 100%);
|
|
359
|
+
border-color: #93c5fd;
|
|
325
360
|
}
|
|
326
361
|
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
362
|
+
.upvote-action {
|
|
363
|
+
display: flex;
|
|
364
|
+
flex-direction: row;
|
|
365
|
+
align-items: center;
|
|
366
|
+
gap: 0.375rem;
|
|
367
|
+
color: #475569;
|
|
368
|
+
font-size: 0.875rem;
|
|
369
|
+
font-weight: 600;
|
|
370
|
+
transition: color 0.2s ease;
|
|
330
371
|
}
|
|
331
372
|
|
|
332
|
-
:
|
|
333
|
-
|
|
334
|
-
|
|
373
|
+
.upvote-button:hover .upvote-action {
|
|
374
|
+
color: #0f172a;
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
.upvote-button.upvoted .upvote-action {
|
|
378
|
+
color: #2563eb;
|
|
379
|
+
}
|
|
380
|
+
|
|
381
|
+
.upvote-button.upvoted:hover .upvote-action {
|
|
382
|
+
color: #1d4ed8;
|
|
335
383
|
}
|
|
336
384
|
|
|
337
385
|
.upvote-icon {
|
|
338
|
-
width:
|
|
339
|
-
height:
|
|
386
|
+
width: 1.125rem;
|
|
387
|
+
height: 1.125rem;
|
|
388
|
+
min-width: 1.125rem;
|
|
389
|
+
min-height: 1.125rem;
|
|
340
390
|
color: inherit;
|
|
391
|
+
flex-shrink: 0;
|
|
392
|
+
display: block;
|
|
393
|
+
vertical-align: middle;
|
|
394
|
+
transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275);
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.upvote-button:hover .upvote-icon {
|
|
398
|
+
transform: translateY(-2px);
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
.upvote-button:active .upvote-icon {
|
|
402
|
+
transform: translateY(0) scale(0.9);
|
|
341
403
|
}
|
|
342
404
|
|
|
343
405
|
.upvote-icon.filled {
|
|
344
|
-
color:
|
|
406
|
+
color: inherit;
|
|
345
407
|
}
|
|
346
408
|
|
|
347
409
|
.upvote-icon.outline {
|
|
348
|
-
color:
|
|
410
|
+
color: inherit;
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
.reel-container {
|
|
414
|
+
position: relative;
|
|
415
|
+
display: inline-flex;
|
|
416
|
+
align-items: center;
|
|
417
|
+
height: 1.25rem;
|
|
418
|
+
overflow: hidden;
|
|
419
|
+
border-left: 1px solid #e2e8f0;
|
|
420
|
+
padding-left: 0.5rem;
|
|
421
|
+
transition: border-color 0.2s ease;
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
.upvote-button:hover .reel-container {
|
|
425
|
+
border-color: #cbd5e1;
|
|
426
|
+
}
|
|
427
|
+
|
|
428
|
+
.upvote-button.upvoted .reel-container {
|
|
429
|
+
border-color: #bfdbfe;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
.upvote-button.upvoted:hover .reel-container {
|
|
433
|
+
border-color: #93c5fd;
|
|
349
434
|
}
|
|
350
435
|
|
|
351
436
|
.upvote-count {
|
|
352
|
-
font-size: 0.
|
|
437
|
+
font-size: 0.875rem;
|
|
353
438
|
font-weight: 600;
|
|
439
|
+
color: #475569;
|
|
440
|
+
transition: color 0.2s ease;
|
|
441
|
+
line-height: 1.25rem;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
.upvote-button:hover .upvote-count {
|
|
445
|
+
color: #0f172a;
|
|
446
|
+
}
|
|
447
|
+
|
|
448
|
+
.upvote-button.upvoted .upvote-count {
|
|
449
|
+
color: #2563eb;
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
.upvote-button.upvoted:hover .upvote-count {
|
|
453
|
+
color: #1d4ed8;
|
|
454
|
+
}
|
|
455
|
+
|
|
456
|
+
.reel-number {
|
|
457
|
+
display: inline-block;
|
|
458
|
+
animation: reelIn 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
@keyframes reelIn {
|
|
462
|
+
0% {
|
|
463
|
+
transform: translateY(100%);
|
|
464
|
+
opacity: 0;
|
|
465
|
+
}
|
|
466
|
+
100% {
|
|
467
|
+
transform: translateY(0);
|
|
468
|
+
opacity: 1;
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
/* Dark theme overrides */
|
|
473
|
+
:host(.dark) .upvote-button {
|
|
474
|
+
background: linear-gradient(180deg, var(--feedlog-card) 0%, color-mix(in oklab, var(--feedlog-card) 95%, var(--feedlog-muted) 5%) 100%);
|
|
475
|
+
border-color: var(--feedlog-border);
|
|
476
|
+
}
|
|
477
|
+
|
|
478
|
+
:host(.dark) .upvote-button:hover {
|
|
479
|
+
background: var(--feedlog-muted);
|
|
480
|
+
border-color: var(--feedlog-muted-foreground);
|
|
481
|
+
}
|
|
482
|
+
|
|
483
|
+
:host(.dark) .upvote-button.upvoted {
|
|
484
|
+
background: linear-gradient(180deg, rgba(37, 99, 235, 0.15) 0%, rgba(37, 99, 235, 0.2) 100%);
|
|
485
|
+
border-color: rgba(37, 99, 235, 0.3);
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
:host(.dark) .upvote-button.upvoted:hover {
|
|
489
|
+
background: linear-gradient(180deg, rgba(37, 99, 235, 0.25) 0%, rgba(37, 99, 235, 0.3) 100%);
|
|
490
|
+
border-color: rgba(37, 99, 235, 0.4);
|
|
491
|
+
}
|
|
492
|
+
|
|
493
|
+
:host(.dark) .upvote-action,
|
|
494
|
+
:host(.dark) .upvote-count {
|
|
495
|
+
color: var(--feedlog-muted-foreground);
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
:host(.dark) .upvote-button:hover .upvote-action,
|
|
499
|
+
:host(.dark) .upvote-button:hover .upvote-count {
|
|
354
500
|
color: var(--feedlog-card-foreground);
|
|
355
501
|
}
|
|
502
|
+
|
|
503
|
+
:host(.dark) .upvote-button.upvoted .upvote-action,
|
|
504
|
+
:host(.dark) .upvote-button.upvoted .upvote-count {
|
|
505
|
+
color: var(--feedlog-blue-400);
|
|
506
|
+
}
|
|
507
|
+
|
|
508
|
+
:host(.dark) .upvote-button.upvoted:hover .upvote-action,
|
|
509
|
+
:host(.dark) .upvote-button.upvoted:hover .upvote-count {
|
|
510
|
+
color: var(--feedlog-blue-300);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
:host(.dark) .reel-container {
|
|
514
|
+
border-color: var(--feedlog-border);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
:host(.dark) .upvote-button:hover .reel-container {
|
|
518
|
+
border-color: var(--feedlog-muted-foreground);
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
:host(.dark) .upvote-button.upvoted .reel-container {
|
|
522
|
+
border-color: rgba(37, 99, 235, 0.3);
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
:host(.dark) .upvote-button.upvoted:hover .reel-container {
|
|
526
|
+
border-color: rgba(37, 99, 235, 0.4);
|
|
527
|
+
}
|
|
@@ -11,6 +11,9 @@ export class FeedlogIssueComponent {
|
|
|
11
11
|
* Theme variant: 'light' or 'dark'
|
|
12
12
|
*/
|
|
13
13
|
this.theme = 'light';
|
|
14
|
+
this.handleMediaSlotChange = () => {
|
|
15
|
+
this.updateMediaVisibility();
|
|
16
|
+
};
|
|
14
17
|
this.handleUpvote = (event) => {
|
|
15
18
|
event.stopPropagation();
|
|
16
19
|
this.feedlogUpvote.emit({
|
|
@@ -20,6 +23,29 @@ export class FeedlogIssueComponent {
|
|
|
20
23
|
});
|
|
21
24
|
};
|
|
22
25
|
}
|
|
26
|
+
componentDidLoad() {
|
|
27
|
+
var _a;
|
|
28
|
+
const mediaSlot = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="media"]');
|
|
29
|
+
if (mediaSlot) {
|
|
30
|
+
mediaSlot.addEventListener('slotchange', this.handleMediaSlotChange);
|
|
31
|
+
this.updateMediaVisibility();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
disconnectedCallback() {
|
|
35
|
+
var _a;
|
|
36
|
+
const mediaSlot = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('slot[name="media"]');
|
|
37
|
+
if (mediaSlot) {
|
|
38
|
+
mediaSlot.removeEventListener('slotchange', this.handleMediaSlotChange);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
updateMediaVisibility() {
|
|
42
|
+
var _a;
|
|
43
|
+
const mediaEl = (_a = this.host.shadowRoot) === null || _a === void 0 ? void 0 : _a.querySelector('.issue-media');
|
|
44
|
+
if (!mediaEl)
|
|
45
|
+
return;
|
|
46
|
+
const slot = this.host.querySelector('[slot="media"]');
|
|
47
|
+
mediaEl.classList.toggle('has-media', !!slot);
|
|
48
|
+
}
|
|
23
49
|
/**
|
|
24
50
|
* Renders the pin icon SVG (Lucide/Feather style)
|
|
25
51
|
*/
|
|
@@ -27,13 +53,15 @@ export class FeedlogIssueComponent {
|
|
|
27
53
|
return (h("svg", { class: "pin-icon", xmlns: "http://www.w3.org/2000/svg", width: "14", height: "14", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: "M12 17v5" }), h("path", { d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16h1v2a1 1 0 0 0 1 1h10a1 1 0 0 0 1-1v-2h1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z" })));
|
|
28
54
|
}
|
|
29
55
|
/**
|
|
30
|
-
* Renders the upvote (
|
|
56
|
+
* Renders the upvote (caret-up / arrow) icon SVG
|
|
57
|
+
* Path centered in 24x24 viewBox for proper vertical alignment
|
|
31
58
|
*/
|
|
32
59
|
renderUpvoteIcon(filled) {
|
|
60
|
+
const path = 'M12 7l7 10H5l7-10z';
|
|
33
61
|
if (filled) {
|
|
34
|
-
return (h("svg", { class: "upvote-icon filled", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor" }, h("path", { d:
|
|
62
|
+
return (h("svg", { class: "upvote-icon filled", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "currentColor" }, h("path", { d: path })));
|
|
35
63
|
}
|
|
36
|
-
return (h("svg", { class: "upvote-icon outline", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d:
|
|
64
|
+
return (h("svg", { class: "upvote-icon outline", xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: path })));
|
|
37
65
|
}
|
|
38
66
|
/**
|
|
39
67
|
* Format an ISO date string to a relative time string
|
|
@@ -102,7 +130,7 @@ export class FeedlogIssueComponent {
|
|
|
102
130
|
const statusBadgeLabel = this.getStatusBadgeLabel();
|
|
103
131
|
const githubUrl = (_b = issue.githubIssueLink) !== null && _b !== void 0 ? _b : issueUrl;
|
|
104
132
|
const showGithubButton = githubUrl != null && githubUrl !== '';
|
|
105
|
-
return (h(Host, { class: this.theme === 'dark' ? 'dark' : '', "data-upvoted": issue.hasUpvoted ? 'true' : 'false' }, h("div", { class: `issue-card issue-type-${issue.type}` }, h("div", { class: "issue-content" }, h("div", { class: "issue-
|
|
133
|
+
return (h(Host, { class: this.theme === 'dark' ? 'dark' : '', "data-upvoted": issue.hasUpvoted ? 'true' : 'false' }, h("div", { class: `issue-card issue-type-${issue.type}` }, h("div", { class: "issue-media", part: "media" }, h("slot", { name: "media" })), h("div", { class: "issue-content" }, h("div", { class: "issue-main" }, h("div", { class: "issue-header-top" }, h("div", { class: "issue-badges" }, issue.type === 'bug' ? (h("feedlog-badge", { variant: "destructive" }, "Bug")) : (h("feedlog-badge", { variant: "enhancement" }, "Enhancement")), statusBadgeLabel && (h("feedlog-badge", { variant: "secondary" }, statusBadgeLabel))), h("div", { class: "issue-meta-right" }, issue.pinnedAt && (h("div", { class: "pinned-indicator", title: "Pinned issue" }, this.renderPinIcon())), h("span", { class: "issue-timestamp", title: timestampTitle }, timestampLabel, " ", this.formatDate(timestampDate)))), h("h3", { class: "issue-title" }, displayTitle), issue.body != null && issue.body !== '' && (h("div", { class: "issue-body", innerHTML: parseMarkdown(issue.body) })), (repoName != null || showGithubButton || issue.type !== 'bug') && (h("div", { class: "issue-footer" }, (repoName != null || showGithubButton) && (h("div", { class: "issue-footer-meta" }, repoName != null && (h("span", { class: "repo-name", title: repoTooltip }, repoName)), showGithubButton && (h("a", { part: "github-link", class: "github-link", href: githubUrl, target: "_blank", rel: "noopener noreferrer", title: "View on GitHub" }, this.renderExternalLinkIcon(), h("span", { class: "github-link-text" }, "View on GitHub"))))), issue.type !== 'bug' && (h("button", { part: "upvote-button", class: `upvote-button ${issue.hasUpvoted ? 'upvoted' : ''}`, onClick: (e) => this.handleUpvote(e), title: issue.hasUpvoted ? 'Remove upvote' : 'Upvote this issue' }, h("div", { class: "upvote-action" }, h("slot", { name: "upvote-icon" }, this.renderUpvoteIcon(issue.hasUpvoted)), h("span", { class: "upvote-label" }, "Upvote")), h("div", { class: "reel-container" }, h("span", { class: "upvote-count reel-number", key: issue.upvoteCount }, issue.upvoteCount)))))))))));
|
|
106
134
|
}
|
|
107
135
|
static get is() { return "feedlog-issue"; }
|
|
108
136
|
static get encapsulation() { return "shadow"; }
|
|
@@ -200,4 +228,5 @@ export class FeedlogIssueComponent {
|
|
|
200
228
|
}
|
|
201
229
|
}];
|
|
202
230
|
}
|
|
231
|
+
static get elementRef() { return "host"; }
|
|
203
232
|
}
|
|
@@ -157,10 +157,11 @@ export const CustomCSSVars = {
|
|
|
157
157
|
fontFamily: "'Georgia', 'Times New Roman', serif",
|
|
158
158
|
/* Card */
|
|
159
159
|
'--feedlog-card-padding': '1.5rem',
|
|
160
|
-
'--feedlog-card-
|
|
160
|
+
'--feedlog-card-radius': '0.875rem',
|
|
161
161
|
'--feedlog-radius': '0.875rem',
|
|
162
162
|
'--feedlog-shadow': '0 2px 8px 0 rgba(0, 0, 0, 0.12), 0 1px 3px -1px rgba(0, 0, 0, 0.1)',
|
|
163
|
-
'--feedlog-shadow-hover': '0 8px 24px -4px rgba(
|
|
163
|
+
'--feedlog-shadow-hover-enhancement': '0 8px 24px -4px rgba(5, 150, 105, 0.15), 0 4px 8px -2px rgba(5, 150, 105, 0.1)',
|
|
164
|
+
'--feedlog-shadow-hover-bug': '0 8px 24px -4px rgba(220, 38, 38, 0.15), 0 4px 8px -2px rgba(220, 38, 38, 0.1)',
|
|
164
165
|
/* Typography */
|
|
165
166
|
'--feedlog-title-font-size': '1.0625rem',
|
|
166
167
|
'--feedlog-title-font-weight': '700',
|
|
@@ -39,8 +39,6 @@
|
|
|
39
39
|
--feedlog-destructive: oklch(0.396 0.141 25.723);
|
|
40
40
|
--feedlog-blue-400: oklch(0.707 0.165 254.624);
|
|
41
41
|
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
42
|
-
--feedlog-blue-900-30: color-mix(in oklab, oklch(0.379 0.146 265.522) 30%, transparent);
|
|
43
|
-
--feedlog-red-900-30: color-mix(in oklab, oklch(0.396 0.141 25.723) 30%, transparent);
|
|
44
42
|
--feedlog-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.3);
|
|
45
43
|
}
|
|
46
44
|
|
|
@@ -286,10 +286,11 @@ export const CustomCSSVars = {
|
|
|
286
286
|
fontFamily: "'Georgia', 'Times New Roman', serif",
|
|
287
287
|
/* Card */
|
|
288
288
|
'--feedlog-card-padding': '1.5rem',
|
|
289
|
-
'--feedlog-card-
|
|
289
|
+
'--feedlog-card-radius': '0.875rem',
|
|
290
290
|
'--feedlog-radius': '0.875rem',
|
|
291
291
|
'--feedlog-shadow': '0 2px 8px 0 rgba(0, 0, 0, 0.12), 0 1px 3px -1px rgba(0, 0, 0, 0.1)',
|
|
292
|
-
'--feedlog-shadow-hover': '0 8px 24px -4px rgba(
|
|
292
|
+
'--feedlog-shadow-hover-enhancement': '0 8px 24px -4px rgba(5, 150, 105, 0.15), 0 4px 8px -2px rgba(5, 150, 105, 0.1)',
|
|
293
|
+
'--feedlog-shadow-hover-bug': '0 8px 24px -4px rgba(220, 38, 38, 0.15), 0 4px 8px -2px rgba(220, 38, 38, 0.1)',
|
|
293
294
|
/* Typography */
|
|
294
295
|
'--feedlog-title-font-size': '1.0625rem',
|
|
295
296
|
'--feedlog-title-font-weight': '700',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as o,d as s}from"./p-
|
|
1
|
+
import{F as o,d as s}from"./p-DzATWlAC.js";const p=o,r=s;export{p as FeedlogBadge,r as defineCustomElement}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{F as o,d as
|
|
1
|
+
import{F as o,d as r}from"./p-B85wbrJg.js";const s=o,p=r;export{s as FeedlogIssue,p as defineCustomElement}
|