@feedlog-ai/webcomponents 0.0.36 → 0.0.37
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 +9 -17
- package/dist/cjs/feedlog-badge.cjs.entry.js +3 -3
- package/dist/cjs/feedlog-button_3.cjs.entry.js +16 -1385
- package/dist/cjs/feedlog-card.cjs.entry.js +3 -3
- package/dist/cjs/feedlog-issues-client.cjs.entry.js +102 -74
- package/dist/cjs/feedlog-issues.cjs.entry.js +4 -11
- package/dist/cjs/feedlog-toolkit.cjs.js +2 -2
- package/dist/cjs/{index-CXKBwRlh.js → index-prPyjPBk.js} +1 -1
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/cjs/purify.es-ppGw41aq.js +1384 -0
- package/dist/collection/components/feedlog-badge/feedlog-badge.css +35 -45
- package/dist/collection/components/feedlog-badge/feedlog-badge.js +1 -1
- package/dist/collection/components/feedlog-button/feedlog-button.css +16 -66
- package/dist/collection/components/feedlog-button/feedlog-button.js +1 -1
- package/dist/collection/components/feedlog-card/feedlog-card.css +22 -24
- package/dist/collection/components/feedlog-card/feedlog-card.js +1 -1
- package/dist/collection/components/feedlog-card/feedlog-card.stories.js +1 -1
- package/dist/collection/components/feedlog-issue/feedlog-issue.css +99 -187
- package/dist/collection/components/feedlog-issue/feedlog-issue.js +1 -1
- package/dist/collection/components/feedlog-issue/feedlog-issue.stories.js +19 -19
- package/dist/collection/components/feedlog-issues/feedlog-issues.css +34 -63
- package/dist/collection/components/feedlog-issues/feedlog-issues.js +2 -14
- package/dist/collection/components/feedlog-issues/feedlog-issues.stories.js +72 -52
- package/dist/collection/components/feedlog-issues-client/feedlog-issues-client.js +22 -28
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.js +3 -3
- package/dist/collection/utils/markdown.js +6 -1
- package/dist/components/feedlog-badge.js +1 -1
- package/dist/components/feedlog-button.js +1 -1
- package/dist/components/feedlog-card.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/index.js +1 -1
- package/dist/components/p-BoxVrJId.js +1 -0
- package/dist/components/{p-BRjVS8bz.js → p-CvIMO_S7.js} +2 -2
- package/dist/components/p-DFD585IK.js +1 -0
- package/dist/components/p-I6NOP29P.js +1 -0
- package/dist/components/p-fDVosM5p.js +1 -0
- package/dist/esm/feedlog-badge.entry.js +3 -3
- package/dist/esm/feedlog-button_3.entry.js +15 -1384
- package/dist/esm/feedlog-card.entry.js +3 -3
- package/dist/esm/feedlog-issues-client.entry.js +102 -74
- package/dist/esm/feedlog-issues.entry.js +4 -11
- package/dist/esm/feedlog-toolkit.js +3 -3
- package/dist/esm/{index-CgNWSmzU.js → index-Cu1eYdKa.js} +1 -1
- package/dist/esm/loader.js +3 -3
- package/dist/esm/purify.es-Bow7VsVH.js +1381 -0
- package/dist/feedlog-toolkit/feedlog-toolkit.css +1 -1
- package/dist/feedlog-toolkit/feedlog-toolkit.esm.js +1 -1
- package/dist/feedlog-toolkit/p-001d7353.entry.js +1 -0
- package/dist/feedlog-toolkit/p-556062d0.entry.js +1 -0
- package/dist/feedlog-toolkit/p-62554649.entry.js +1 -0
- package/dist/feedlog-toolkit/p-Bow7VsVH.js +2 -0
- package/dist/feedlog-toolkit/p-Cu1eYdKa.js +2 -0
- package/dist/feedlog-toolkit/p-b558fc9f.entry.js +1 -0
- package/dist/feedlog-toolkit/p-ca90ade9.entry.js +1 -0
- package/dist/types/components/feedlog-issues/feedlog-issues.d.ts +0 -5
- package/dist/types/components/feedlog-issues-client/feedlog-issues-client.d.ts +1 -0
- package/dist/types/index.d.ts +1 -1
- package/hydrate/index.js +130 -101
- package/hydrate/index.mjs +130 -101
- package/package.json +4 -7
- package/dist/components/p-BBbiSGNf.js +0 -1
- package/dist/components/p-CuFKEckF.js +0 -1
- package/dist/components/p-DMdb-G26.js +0 -1
- package/dist/components/p-DzATWlAC.js +0 -1
- package/dist/feedlog-toolkit/p-32663f65.entry.js +0 -1
- package/dist/feedlog-toolkit/p-891c349f.entry.js +0 -3
- package/dist/feedlog-toolkit/p-CgNWSmzU.js +0 -2
- package/dist/feedlog-toolkit/p-b51c95a6.entry.js +0 -1
- package/dist/feedlog-toolkit/p-da0268a8.entry.js +0 -1
- package/dist/feedlog-toolkit/p-f22117ae.entry.js +0 -1
|
@@ -1,78 +1,32 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: block;
|
|
3
|
-
font-family:
|
|
4
|
-
ui-sans-serif,
|
|
5
|
-
system-ui,
|
|
6
|
-
-apple-system,
|
|
7
|
-
BlinkMacSystemFont,
|
|
8
|
-
'Segoe UI',
|
|
9
|
-
Roboto,
|
|
10
|
-
'Helvetica Neue',
|
|
11
|
-
Arial,
|
|
12
|
-
sans-serif;
|
|
13
|
-
|
|
14
|
-
/* Light theme defaults */
|
|
15
|
-
--feedlog-background: #ffffff;
|
|
16
|
-
--feedlog-foreground: oklch(0.145 0 0);
|
|
17
|
-
--feedlog-card: #ffffff;
|
|
18
|
-
--feedlog-card-foreground: oklch(0.145 0 0);
|
|
19
|
-
--feedlog-muted: #f1f5f9;
|
|
20
|
-
--feedlog-muted-foreground: #64748b;
|
|
21
|
-
--feedlog-border: rgba(0, 0, 0, 0.08);
|
|
22
|
-
--feedlog-accent-color: #2563eb;
|
|
23
|
-
--feedlog-destructive: #d4183d;
|
|
24
|
-
--feedlog-blue-400: oklch(0.707 0.165 254.624);
|
|
25
|
-
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
26
|
-
--feedlog-red-600: #db2777;
|
|
27
|
-
--feedlog-radius: 0.625rem;
|
|
28
|
-
--feedlog-gap: 0.5rem;
|
|
3
|
+
font-family: var(--feedlog-font-family);
|
|
29
4
|
|
|
30
5
|
/* Customization variables */
|
|
31
|
-
--feedlog-card-padding:
|
|
32
|
-
--feedlog-title-font-size:
|
|
33
|
-
--feedlog-title-font-weight:
|
|
34
|
-
--feedlog-body-font-size:
|
|
6
|
+
--feedlog-card-padding: var(--feedlog-space-6);
|
|
7
|
+
--feedlog-title-font-size: var(--feedlog-text-xl);
|
|
8
|
+
--feedlog-title-font-weight: var(--feedlog-font-semibold);
|
|
9
|
+
--feedlog-body-font-size: var(--feedlog-text-sm);
|
|
35
10
|
--feedlog-body-line-height: 1.6;
|
|
36
|
-
--feedlog-timestamp-font-size:
|
|
11
|
+
--feedlog-timestamp-font-size: var(--feedlog-text-xs);
|
|
37
12
|
--feedlog-timestamp-color: var(--feedlog-muted-foreground);
|
|
38
|
-
--feedlog-card-radius:
|
|
13
|
+
--feedlog-card-radius: 16px;
|
|
39
14
|
--feedlog-icon-color: var(--feedlog-muted-foreground);
|
|
40
15
|
--feedlog-icon-color-muted: var(--feedlog-muted-foreground);
|
|
41
|
-
--feedlog-pin-color: var(--feedlog-
|
|
42
|
-
--feedlog-upvote-icon-color: var(--feedlog-
|
|
43
|
-
--feedlog-upvote-icon-filled-color: var(--feedlog-
|
|
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);
|
|
16
|
+
--feedlog-pin-color: var(--feedlog-primary);
|
|
17
|
+
--feedlog-upvote-icon-color: var(--feedlog-primary);
|
|
18
|
+
--feedlog-upvote-icon-filled-color: var(--feedlog-primary);
|
|
48
19
|
}
|
|
49
20
|
|
|
50
21
|
:host(.dark) {
|
|
51
22
|
/* Dark theme values */
|
|
52
|
-
--feedlog-background: oklch(0.18 0.01 260);
|
|
53
|
-
--feedlog-foreground: oklch(0.985 0 0);
|
|
54
|
-
--feedlog-card: oklch(0.24 0.01 260);
|
|
55
|
-
--feedlog-card-foreground: oklch(0.985 0 0);
|
|
56
|
-
--feedlog-muted: oklch(0.32 0.01 260);
|
|
57
|
-
--feedlog-muted-foreground: oklch(0.72 0.02 260);
|
|
58
|
-
--feedlog-border: oklch(0.34 0.01 260);
|
|
59
|
-
--feedlog-accent-color: #3b82f6;
|
|
60
|
-
--feedlog-destructive: oklch(0.396 0.141 25.723);
|
|
61
|
-
--feedlog-blue-300: oklch(0.78 0.12 255);
|
|
62
|
-
--feedlog-blue-400: oklch(0.707 0.165 254.624);
|
|
63
|
-
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
64
|
-
--feedlog-upvote-icon-color: var(--feedlog-blue-400);
|
|
65
|
-
--feedlog-upvote-icon-filled-color: var(--feedlog-red-600);
|
|
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);
|
|
69
23
|
}
|
|
70
24
|
|
|
71
25
|
.issue-card {
|
|
72
|
-
background
|
|
26
|
+
background-color: var(--feedlog-card);
|
|
73
27
|
border: 1px solid var(--feedlog-border);
|
|
74
28
|
border-radius: var(--feedlog-card-radius, var(--feedlog-radius));
|
|
75
|
-
box-shadow: var(--feedlog-shadow);
|
|
29
|
+
box-shadow: var(--feedlog-shadow-sm);
|
|
76
30
|
transition:
|
|
77
31
|
box-shadow 0.2s ease,
|
|
78
32
|
transform 0.2s ease;
|
|
@@ -81,14 +35,8 @@
|
|
|
81
35
|
}
|
|
82
36
|
|
|
83
37
|
.issue-card:hover {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
.issue-card.issue-type-enhancement:hover {
|
|
87
|
-
box-shadow: var(--feedlog-shadow-hover-enhancement);
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.issue-card.issue-type-bug:hover {
|
|
91
|
-
box-shadow: var(--feedlog-shadow-hover-bug);
|
|
38
|
+
box-shadow: var(--feedlog-shadow);
|
|
39
|
+
transform: translateY(-2px);
|
|
92
40
|
}
|
|
93
41
|
|
|
94
42
|
/* Media area - ready for future images/videos. Hidden until media support is added. */
|
|
@@ -117,21 +65,21 @@
|
|
|
117
65
|
padding: var(--feedlog-card-padding);
|
|
118
66
|
display: flex;
|
|
119
67
|
flex-direction: column;
|
|
120
|
-
gap:
|
|
68
|
+
gap: var(--feedlog-space-3);
|
|
121
69
|
}
|
|
122
70
|
|
|
123
71
|
.issue-header-top {
|
|
124
72
|
display: flex;
|
|
125
73
|
align-items: flex-start;
|
|
126
74
|
justify-content: space-between;
|
|
127
|
-
gap:
|
|
128
|
-
margin-bottom:
|
|
75
|
+
gap: var(--feedlog-space-4);
|
|
76
|
+
margin-bottom: var(--feedlog-space-3);
|
|
129
77
|
}
|
|
130
78
|
|
|
131
79
|
.issue-badges {
|
|
132
80
|
display: flex;
|
|
133
81
|
align-items: center;
|
|
134
|
-
gap:
|
|
82
|
+
gap: var(--feedlog-space-1);
|
|
135
83
|
flex-wrap: wrap;
|
|
136
84
|
margin-left: -0.25rem;
|
|
137
85
|
}
|
|
@@ -139,13 +87,13 @@
|
|
|
139
87
|
.issue-meta-right {
|
|
140
88
|
display: flex;
|
|
141
89
|
align-items: center;
|
|
142
|
-
gap:
|
|
90
|
+
gap: var(--feedlog-space-2);
|
|
143
91
|
}
|
|
144
92
|
|
|
145
93
|
.pinned-indicator {
|
|
146
94
|
display: flex;
|
|
147
95
|
align-items: center;
|
|
148
|
-
color: var(--feedlog-pin-color, var(--feedlog-
|
|
96
|
+
color: var(--feedlog-pin-color, var(--feedlog-primary));
|
|
149
97
|
opacity: 0.9;
|
|
150
98
|
}
|
|
151
99
|
|
|
@@ -174,9 +122,9 @@
|
|
|
174
122
|
flex-direction: row;
|
|
175
123
|
align-items: center;
|
|
176
124
|
justify-content: space-between;
|
|
177
|
-
gap:
|
|
178
|
-
margin-top:
|
|
179
|
-
padding-top:
|
|
125
|
+
gap: var(--feedlog-space-3);
|
|
126
|
+
margin-top: var(--feedlog-space-3);
|
|
127
|
+
padding-top: var(--feedlog-space-4);
|
|
180
128
|
border-top: 1px solid var(--feedlog-border);
|
|
181
129
|
flex-wrap: wrap;
|
|
182
130
|
}
|
|
@@ -184,19 +132,24 @@
|
|
|
184
132
|
.issue-footer-meta {
|
|
185
133
|
display: flex;
|
|
186
134
|
align-items: center;
|
|
187
|
-
gap:
|
|
188
|
-
font-size:
|
|
135
|
+
gap: var(--feedlog-space-2);
|
|
136
|
+
font-size: var(--feedlog-text-xs);
|
|
189
137
|
color: var(--feedlog-muted-foreground);
|
|
190
138
|
flex-wrap: wrap;
|
|
191
139
|
}
|
|
192
140
|
|
|
141
|
+
/* Keeps upvote on the right when footer-meta is omitted (e.g. null repo name, no GitHub link) */
|
|
142
|
+
.issue-footer .upvote-button {
|
|
143
|
+
margin-left: auto;
|
|
144
|
+
}
|
|
145
|
+
|
|
193
146
|
.issue-title {
|
|
194
147
|
color: var(--feedlog-card-foreground);
|
|
195
148
|
font-size: var(--feedlog-title-font-size);
|
|
196
149
|
font-weight: var(--feedlog-title-font-weight);
|
|
197
|
-
margin: 0 0
|
|
150
|
+
margin: 0 0 var(--feedlog-space-3) 0;
|
|
198
151
|
line-height: 1.3;
|
|
199
|
-
letter-spacing: -0.
|
|
152
|
+
letter-spacing: -0.02em;
|
|
200
153
|
word-break: break-word;
|
|
201
154
|
}
|
|
202
155
|
|
|
@@ -204,10 +157,27 @@
|
|
|
204
157
|
color: var(--feedlog-muted-foreground);
|
|
205
158
|
font-size: var(--feedlog-body-font-size);
|
|
206
159
|
line-height: var(--feedlog-body-line-height);
|
|
207
|
-
margin: 0 0
|
|
160
|
+
margin: 0 0 var(--feedlog-space-3) 0;
|
|
208
161
|
word-break: break-word;
|
|
209
162
|
}
|
|
210
163
|
|
|
164
|
+
.issue-body h1,
|
|
165
|
+
.issue-body h2,
|
|
166
|
+
.issue-body h3,
|
|
167
|
+
.issue-body h4,
|
|
168
|
+
.issue-body h5,
|
|
169
|
+
.issue-body h6 {
|
|
170
|
+
color: var(--feedlog-card-foreground);
|
|
171
|
+
margin-top: 1.5em;
|
|
172
|
+
margin-bottom: 0.5em;
|
|
173
|
+
font-weight: var(--feedlog-font-semibold);
|
|
174
|
+
letter-spacing: -0.01em;
|
|
175
|
+
}
|
|
176
|
+
|
|
177
|
+
.issue-body h1 { font-size: 1.5em; }
|
|
178
|
+
.issue-body h2 { font-size: 1.25em; }
|
|
179
|
+
.issue-body h3 { font-size: 1.125em; }
|
|
180
|
+
|
|
211
181
|
.issue-body :first-child {
|
|
212
182
|
margin-top: 0;
|
|
213
183
|
}
|
|
@@ -225,7 +195,7 @@
|
|
|
225
195
|
}
|
|
226
196
|
|
|
227
197
|
.issue-body a {
|
|
228
|
-
color: var(--feedlog-
|
|
198
|
+
color: var(--feedlog-primary);
|
|
229
199
|
text-decoration: none;
|
|
230
200
|
}
|
|
231
201
|
|
|
@@ -236,15 +206,15 @@
|
|
|
236
206
|
.issue-body code {
|
|
237
207
|
background-color: var(--feedlog-muted);
|
|
238
208
|
padding: 0.125em 0.375em;
|
|
239
|
-
border-radius:
|
|
209
|
+
border-radius: var(--feedlog-radius-sm);
|
|
240
210
|
font-size: 0.9em;
|
|
241
211
|
}
|
|
242
212
|
|
|
243
213
|
.issue-body pre {
|
|
244
214
|
margin: 0.5em 0;
|
|
245
|
-
padding:
|
|
215
|
+
padding: var(--feedlog-space-3);
|
|
246
216
|
background-color: var(--feedlog-muted);
|
|
247
|
-
border-radius:
|
|
217
|
+
border-radius: var(--feedlog-radius-sm);
|
|
248
218
|
overflow-x: auto;
|
|
249
219
|
font-size: 0.85em;
|
|
250
220
|
}
|
|
@@ -255,7 +225,7 @@
|
|
|
255
225
|
}
|
|
256
226
|
|
|
257
227
|
.issue-body strong {
|
|
258
|
-
font-weight:
|
|
228
|
+
font-weight: var(--feedlog-font-semibold);
|
|
259
229
|
}
|
|
260
230
|
|
|
261
231
|
.issue-body ul,
|
|
@@ -276,19 +246,19 @@
|
|
|
276
246
|
}
|
|
277
247
|
|
|
278
248
|
.repo-name {
|
|
279
|
-
font-weight:
|
|
249
|
+
font-weight: var(--feedlog-font-medium);
|
|
280
250
|
}
|
|
281
251
|
|
|
282
252
|
.github-link {
|
|
283
253
|
display: inline-flex;
|
|
284
254
|
align-items: center;
|
|
285
|
-
gap:
|
|
255
|
+
gap: var(--feedlog-space-1);
|
|
286
256
|
color: var(--feedlog-muted-foreground);
|
|
287
257
|
text-decoration: none;
|
|
288
|
-
font-weight:
|
|
289
|
-
font-size:
|
|
290
|
-
padding:
|
|
291
|
-
border-radius:
|
|
258
|
+
font-weight: var(--feedlog-font-medium);
|
|
259
|
+
font-size: var(--feedlog-text-xs);
|
|
260
|
+
padding: var(--feedlog-space-1) var(--feedlog-space-2);
|
|
261
|
+
border-radius: var(--feedlog-radius-sm);
|
|
292
262
|
transition:
|
|
293
263
|
background-color 0.2s ease,
|
|
294
264
|
color 0.2s ease;
|
|
@@ -309,12 +279,12 @@
|
|
|
309
279
|
}
|
|
310
280
|
|
|
311
281
|
.github-number {
|
|
312
|
-
color: var(--feedlog-
|
|
313
|
-
font-weight:
|
|
282
|
+
color: var(--feedlog-primary);
|
|
283
|
+
font-weight: var(--feedlog-font-semibold);
|
|
314
284
|
}
|
|
315
285
|
|
|
316
286
|
:host(.dark) .github-number {
|
|
317
|
-
color: var(--feedlog-
|
|
287
|
+
color: var(--feedlog-primary);
|
|
318
288
|
}
|
|
319
289
|
|
|
320
290
|
.upvote-button {
|
|
@@ -322,64 +292,56 @@
|
|
|
322
292
|
flex-direction: row;
|
|
323
293
|
align-items: center;
|
|
324
294
|
border-radius: 9999px;
|
|
325
|
-
background:
|
|
326
|
-
border: 1px solid
|
|
295
|
+
background-color: var(--feedlog-muted);
|
|
296
|
+
border: 1px solid transparent;
|
|
327
297
|
cursor: pointer;
|
|
328
|
-
transition: all 0.
|
|
298
|
+
transition: all 0.2s ease;
|
|
329
299
|
flex-shrink: 0;
|
|
330
|
-
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
331
300
|
overflow: hidden;
|
|
332
|
-
padding:
|
|
333
|
-
gap:
|
|
301
|
+
padding: var(--feedlog-space-1) var(--feedlog-space-3);
|
|
302
|
+
gap: var(--feedlog-space-2);
|
|
334
303
|
font-family: inherit;
|
|
335
304
|
line-height: 1;
|
|
336
305
|
}
|
|
337
306
|
|
|
338
307
|
.upvote-button:hover {
|
|
339
|
-
background:
|
|
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);
|
|
308
|
+
background-color: color-mix(in oklab, var(--feedlog-muted) 90%, var(--feedlog-foreground));
|
|
345
309
|
}
|
|
346
310
|
|
|
347
311
|
.upvote-button:active {
|
|
348
|
-
transform: translateY(
|
|
349
|
-
box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
|
|
312
|
+
transform: translateY(1px);
|
|
350
313
|
}
|
|
351
314
|
|
|
352
315
|
.upvote-button.upvoted {
|
|
353
|
-
background:
|
|
354
|
-
border-color: #
|
|
316
|
+
background-color: var(--feedlog-badge-enhancement-bg, #eef2ff);
|
|
317
|
+
border-color: color-mix(in oklab, var(--feedlog-badge-enhancement-text, #4338ca) 15%, transparent);
|
|
355
318
|
}
|
|
356
319
|
|
|
357
320
|
.upvote-button.upvoted:hover {
|
|
358
|
-
|
|
359
|
-
border-color: #93c5fd;
|
|
321
|
+
opacity: 0.9;
|
|
360
322
|
}
|
|
361
323
|
|
|
362
324
|
.upvote-action {
|
|
363
325
|
display: flex;
|
|
364
326
|
flex-direction: row;
|
|
365
327
|
align-items: center;
|
|
366
|
-
gap:
|
|
367
|
-
color:
|
|
368
|
-
font-size:
|
|
369
|
-
font-weight:
|
|
328
|
+
gap: var(--feedlog-space-1);
|
|
329
|
+
color: var(--feedlog-muted-foreground);
|
|
330
|
+
font-size: var(--feedlog-text-sm);
|
|
331
|
+
font-weight: var(--feedlog-font-medium);
|
|
370
332
|
transition: color 0.2s ease;
|
|
371
333
|
}
|
|
372
334
|
|
|
373
335
|
.upvote-button:hover .upvote-action {
|
|
374
|
-
color:
|
|
336
|
+
color: var(--feedlog-foreground);
|
|
375
337
|
}
|
|
376
338
|
|
|
377
339
|
.upvote-button.upvoted .upvote-action {
|
|
378
|
-
color: #
|
|
340
|
+
color: var(--feedlog-badge-enhancement-text, #4338ca);
|
|
379
341
|
}
|
|
380
342
|
|
|
381
343
|
.upvote-button.upvoted:hover .upvote-action {
|
|
382
|
-
color: #
|
|
344
|
+
color: var(--feedlog-badge-enhancement-text, #4338ca);
|
|
383
345
|
}
|
|
384
346
|
|
|
385
347
|
.upvote-icon {
|
|
@@ -391,15 +353,15 @@
|
|
|
391
353
|
flex-shrink: 0;
|
|
392
354
|
display: block;
|
|
393
355
|
vertical-align: middle;
|
|
394
|
-
transition: transform 0.
|
|
356
|
+
transition: transform 0.2s ease;
|
|
395
357
|
}
|
|
396
358
|
|
|
397
359
|
.upvote-button:hover .upvote-icon {
|
|
398
|
-
transform: translateY(-
|
|
360
|
+
transform: translateY(-1px);
|
|
399
361
|
}
|
|
400
362
|
|
|
401
363
|
.upvote-button:active .upvote-icon {
|
|
402
|
-
transform: translateY(0) scale(0.
|
|
364
|
+
transform: translateY(0) scale(0.95);
|
|
403
365
|
}
|
|
404
366
|
|
|
405
367
|
.upvote-icon.filled {
|
|
@@ -416,46 +378,38 @@
|
|
|
416
378
|
align-items: center;
|
|
417
379
|
height: 1.25rem;
|
|
418
380
|
overflow: hidden;
|
|
419
|
-
border-left: 1px solid
|
|
420
|
-
padding-left:
|
|
381
|
+
border-left: 1px solid var(--feedlog-border);
|
|
382
|
+
padding-left: var(--feedlog-space-2);
|
|
421
383
|
transition: border-color 0.2s ease;
|
|
422
384
|
}
|
|
423
385
|
|
|
424
|
-
.upvote-button:hover .reel-container {
|
|
425
|
-
border-color: #cbd5e1;
|
|
426
|
-
}
|
|
427
|
-
|
|
428
386
|
.upvote-button.upvoted .reel-container {
|
|
429
|
-
border-color: #
|
|
430
|
-
}
|
|
431
|
-
|
|
432
|
-
.upvote-button.upvoted:hover .reel-container {
|
|
433
|
-
border-color: #93c5fd;
|
|
387
|
+
border-color: color-mix(in oklab, var(--feedlog-badge-enhancement-text, #4338ca) 20%, transparent);
|
|
434
388
|
}
|
|
435
389
|
|
|
436
390
|
.upvote-count {
|
|
437
|
-
font-size:
|
|
438
|
-
font-weight:
|
|
439
|
-
color:
|
|
391
|
+
font-size: var(--feedlog-text-sm);
|
|
392
|
+
font-weight: var(--feedlog-font-medium);
|
|
393
|
+
color: var(--feedlog-muted-foreground);
|
|
440
394
|
transition: color 0.2s ease;
|
|
441
395
|
line-height: 1.25rem;
|
|
442
396
|
}
|
|
443
397
|
|
|
444
398
|
.upvote-button:hover .upvote-count {
|
|
445
|
-
color:
|
|
399
|
+
color: var(--feedlog-foreground);
|
|
446
400
|
}
|
|
447
401
|
|
|
448
402
|
.upvote-button.upvoted .upvote-count {
|
|
449
|
-
color: #
|
|
403
|
+
color: var(--feedlog-badge-enhancement-text, #4338ca);
|
|
450
404
|
}
|
|
451
405
|
|
|
452
406
|
.upvote-button.upvoted:hover .upvote-count {
|
|
453
|
-
color: #
|
|
407
|
+
color: var(--feedlog-badge-enhancement-text, #4338ca);
|
|
454
408
|
}
|
|
455
409
|
|
|
456
410
|
.reel-number {
|
|
457
411
|
display: inline-block;
|
|
458
|
-
animation: reelIn 0.
|
|
412
|
+
animation: reelIn 0.3s ease forwards;
|
|
459
413
|
}
|
|
460
414
|
|
|
461
415
|
@keyframes reelIn {
|
|
@@ -471,57 +425,15 @@
|
|
|
471
425
|
|
|
472
426
|
/* Dark theme overrides */
|
|
473
427
|
:host(.dark) .upvote-button {
|
|
474
|
-
background
|
|
475
|
-
border-color:
|
|
428
|
+
background-color: var(--feedlog-muted);
|
|
429
|
+
border-color: transparent;
|
|
476
430
|
}
|
|
477
431
|
|
|
478
432
|
:host(.dark) .upvote-button:hover {
|
|
479
|
-
background: var(--feedlog-muted);
|
|
480
|
-
border-color: var(--feedlog-muted-foreground);
|
|
433
|
+
background-color: color-mix(in oklab, var(--feedlog-muted) 80%, var(--feedlog-foreground));
|
|
481
434
|
}
|
|
482
435
|
|
|
483
436
|
:host(.dark) .upvote-button.upvoted {
|
|
484
|
-
background:
|
|
485
|
-
border-color:
|
|
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 {
|
|
500
|
-
color: var(--feedlog-card-foreground);
|
|
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);
|
|
437
|
+
background-color: var(--feedlog-badge-enhancement-bg);
|
|
438
|
+
border-color: color-mix(in oklab, var(--feedlog-badge-enhancement-text) 15%, transparent);
|
|
527
439
|
}
|
|
@@ -130,7 +130,7 @@ export class FeedlogIssueComponent {
|
|
|
130
130
|
const statusBadgeLabel = this.getStatusBadgeLabel();
|
|
131
131
|
const githubUrl = (_b = issue.githubIssueLink) !== null && _b !== void 0 ? _b : issueUrl;
|
|
132
132
|
const showGithubButton = githubUrl != null && githubUrl !== '';
|
|
133
|
-
return (h(Host, { class: this.theme === 'dark' ? 'dark' : '', "data-upvoted": issue.hasUpvoted ? 'true' : 'false' }, h("div", { class: `issue-card issue-type-${issue.type}
|
|
133
|
+
return (h(Host, { class: this.theme === 'dark' ? 'dark' : '', "data-upvoted": issue.hasUpvoted ? 'true' : 'false' }, h("div", { class: `issue-card issue-type-${issue.type}`, part: "base" }, h("div", { class: "issue-media", part: "media" }, h("slot", { name: "media" })), h("div", { class: "issue-content", part: "content" }, h("div", { class: "issue-main", part: "main" }, h("div", { class: "issue-header-top", part: "header-top" }, h("div", { class: "issue-badges", part: "badges" }, issue.type === 'bug' ? (h("feedlog-badge", { variant: "destructive", part: "badge badge-bug" }, "Bug")) : (h("feedlog-badge", { variant: "enhancement", part: "badge badge-enhancement" }, "Enhancement")), statusBadgeLabel && (h("feedlog-badge", { variant: "secondary", part: "badge badge-status" }, statusBadgeLabel))), h("div", { class: "issue-meta-right", part: "meta-right" }, issue.pinnedAt && (h("div", { class: "pinned-indicator", title: "Pinned issue", part: "pinned-indicator" }, this.renderPinIcon())), h("span", { class: "issue-timestamp", title: timestampTitle, part: "timestamp" }, timestampLabel, " ", this.formatDate(timestampDate)))), h("h3", { class: "issue-title", part: "title" }, displayTitle), issue.body != null && issue.body !== '' && (h("div", { class: "issue-body", innerHTML: parseMarkdown(issue.body), part: "body" })), (repoName != null || showGithubButton || issue.type !== 'bug') && (h("div", { class: "issue-footer", part: "footer" }, (repoName != null || showGithubButton) && (h("div", { class: "issue-footer-meta", part: "footer-meta" }, repoName != null && (h("span", { class: "repo-name", title: repoTooltip, part: "repo-name" }, 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", part: "github-link-text" }, "View on GitHub"))))), issue.type !== 'bug' && (h("button", { part: `upvote-button ${issue.hasUpvoted ? 'upvoted' : ''}`, class: `upvote-button ${issue.hasUpvoted ? 'upvoted' : ''}`, onClick: (e) => this.handleUpvote(e), title: issue.hasUpvoted ? 'Remove upvote' : 'Upvote this issue' }, h("div", { class: "upvote-action", part: "upvote-action" }, h("slot", { name: "upvote-icon" }, this.renderUpvoteIcon(issue.hasUpvoted)), h("span", { class: "upvote-label", part: "upvote-label" }, "Upvote")), h("div", { class: "reel-container", part: "upvote-reel-container" }, h("span", { class: "upvote-count reel-number", key: issue.upvoteCount, part: "upvote-count" }, issue.upvoteCount)))))))))));
|
|
134
134
|
}
|
|
135
135
|
static get is() { return "feedlog-issue"; }
|
|
136
136
|
static get encapsulation() { return "shadow"; }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { h } from "@stencil/core";
|
|
2
2
|
const sampleBugIssue = {
|
|
3
|
-
id: '
|
|
4
|
-
githubIssueLink:
|
|
3
|
+
id: 'iss_bug_charts_mobile',
|
|
4
|
+
githubIssueLink: null,
|
|
5
5
|
title: 'Charts not rendering on mobile',
|
|
6
6
|
body: 'The chart components are not properly responsive on smaller screens. They overflow the container and break the layout.',
|
|
7
7
|
type: 'bug',
|
|
@@ -9,31 +9,31 @@ const sampleBugIssue = {
|
|
|
9
9
|
pinnedAt: null,
|
|
10
10
|
revision: 1,
|
|
11
11
|
repository: {
|
|
12
|
-
id: '
|
|
13
|
-
name: '
|
|
14
|
-
description:
|
|
12
|
+
id: 'rep_755dtvwg9d6r',
|
|
13
|
+
name: 'Infrastructure',
|
|
14
|
+
description: null,
|
|
15
15
|
},
|
|
16
|
-
updatedAt:
|
|
17
|
-
createdAt:
|
|
16
|
+
updatedAt: '2026-03-19T12:00:00.000Z',
|
|
17
|
+
createdAt: '2026-03-19T10:00:00.000Z',
|
|
18
18
|
upvoteCount: 3,
|
|
19
19
|
hasUpvoted: false,
|
|
20
20
|
};
|
|
21
21
|
const sampleEnhancementIssue = {
|
|
22
|
-
id: '
|
|
23
|
-
githubIssueLink:
|
|
24
|
-
title: 'Add dark mode support',
|
|
25
|
-
body: 'It would be great to have a dark mode option for the dashboard. This would reduce eye strain for users working late at night.',
|
|
22
|
+
id: 'iss_365sfvyqb434',
|
|
23
|
+
githubIssueLink: null,
|
|
26
24
|
type: 'enhancement',
|
|
27
25
|
status: 'open',
|
|
28
26
|
pinnedAt: null,
|
|
29
|
-
|
|
27
|
+
title: 'Add support for native GitHub Issue Types',
|
|
28
|
+
body: "## Motivation\nGitHub has introduced a native 'Issue Type' field at the organization level to provide a structured way to categorize work, replacing the inconsistent use of labels or project-specific custom fields.\n\n## What’s Changing\nThe system will now support the native GitHub 'Issue Type' property as the primary source of truth for categorizing issues. Integration will be updated to read the 'issue.type' field from webhooks and API responses.\n\n## Expected Behavior\n1. The system will prioritize the 'issue.type.name' field to determine the issue category.\n2. Existing label-based categorization will be maintained as a fallback mechanism for issues where the native type is not defined.\n3. The application will correctly ignore project-level 'Type' fields to avoid data conflicts.",
|
|
29
|
+
revision: 2,
|
|
30
30
|
repository: {
|
|
31
|
-
id: '
|
|
32
|
-
name: '
|
|
33
|
-
description:
|
|
31
|
+
id: 'rep_755dtvwg9d6r',
|
|
32
|
+
name: 'Infrastructure',
|
|
33
|
+
description: null,
|
|
34
34
|
},
|
|
35
|
-
updatedAt:
|
|
36
|
-
createdAt:
|
|
35
|
+
updatedAt: '2026-03-23T16:42:40.555Z',
|
|
36
|
+
createdAt: '2026-03-23T16:41:06.302Z',
|
|
37
37
|
upvoteCount: 24,
|
|
38
38
|
hasUpvoted: false,
|
|
39
39
|
};
|
|
@@ -56,10 +56,10 @@ const repositoryWithDescription = Object.assign(Object.assign({}, sampleEnhancem
|
|
|
56
56
|
name: 'Main App',
|
|
57
57
|
description: 'Main application repository - hover over the name to see this.',
|
|
58
58
|
} });
|
|
59
|
-
const issueInProgress = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-in-progress', status: 'in_progress', title: 'Add
|
|
59
|
+
const issueInProgress = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-in-progress', status: 'in_progress', title: 'Add support for native GitHub Issue Types' });
|
|
60
60
|
const issueClosedBug = Object.assign(Object.assign({}, sampleBugIssue), { id: 'issue-closed-bug', status: 'closed', title: 'Login fails on Safari' });
|
|
61
61
|
const issueClosedEnhancement = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-closed-enhancement', status: 'closed', title: 'Export data to CSV' });
|
|
62
|
-
const issueWithGithubLink = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-with-gh', githubIssueLink: 'https://github.com/feedlog/feedlog-toolkit/issues/42', title: 'Add
|
|
62
|
+
const issueWithGithubLink = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-with-gh', githubIssueLink: 'https://github.com/feedlog/feedlog-toolkit/issues/42', title: 'Add support for native GitHub Issue Types' });
|
|
63
63
|
const issueWithGithubLinkNull = Object.assign(Object.assign({}, sampleEnhancementIssue), { id: 'issue-private-repo', githubIssueLink: null, title: 'Private repo issue', repository: {
|
|
64
64
|
id: 'repo-private',
|
|
65
65
|
name: 'Private Repo',
|