@feedlog-ai/webcomponents 0.0.35 → 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,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-prPyjPBk.js');
|
|
4
4
|
|
|
5
|
-
const feedlogCardCss = () => `:host{display:block;font-family:
|
|
5
|
+
const feedlogCardCss = () => `:host{display:block;font-family:var(--feedlog-font-family)}.feedlog-card{background-color:var(--feedlog-card);color:var(--feedlog-card-foreground);border:1px solid var(--feedlog-border);border-radius:var(--feedlog-radius);box-shadow:var(--feedlog-shadow-sm);transition:box-shadow 0.15s ease;position:relative;display:flex;flex-direction:column}.feedlog-card:hover{box-shadow:var(--feedlog-shadow)}.feedlog-card-header{padding:var(--feedlog-space-6);display:flex;flex-direction:column;gap:var(--feedlog-space-1)}.feedlog-card-content{padding:var(--feedlog-space-6);padding-top:0}.feedlog-card-footer{padding:var(--feedlog-space-6);padding-top:0;display:flex;align-items:center}::slotted([slot="header"]),::slotted([slot="content"]),::slotted([slot="footer"]){display:block}`;
|
|
6
6
|
|
|
7
7
|
const FeedlogCard = class {
|
|
8
8
|
constructor(hostRef) {
|
|
9
9
|
index.registerInstance(this, hostRef);
|
|
10
10
|
}
|
|
11
11
|
render() {
|
|
12
|
-
return (index.h("div", { key: '
|
|
12
|
+
return (index.h("div", { key: 'c95d00e338fcf8d985407cda878f50d173c86c71', class: "feedlog-card", part: "base" }, index.h("div", { key: '5001f2e08495d54abb59ddcada568c9ff4c6fb87', class: "feedlog-card-header", part: "header" }, index.h("slot", { key: 'b6c6f18a458249aedfb4a95679d4592cfcac4187', name: "header" })), index.h("div", { key: '99faa1bd9af52fb23cb304e0a87d35b8e14a6358', class: "feedlog-card-content", part: "content" }, index.h("slot", { key: '44370b05b0c2335d6c7271f2807189a7a208be71', name: "content" })), index.h("div", { key: 'e3876d4f589f9ecf917b5a9b5919363c19d08c93', class: "feedlog-card-footer", part: "footer" }, index.h("slot", { key: 'be69074d341c8e88f9227d2f035f22838469b035', name: "footer" }))));
|
|
13
13
|
}
|
|
14
14
|
};
|
|
15
15
|
FeedlogCard.style = feedlogCardCss();
|
|
@@ -1,38 +1,66 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-prPyjPBk.js');
|
|
4
|
+
var purify_es = require('./purify.es-ppGw41aq.js');
|
|
5
|
+
|
|
6
|
+
function getDefaultExportFromCjs (x) {
|
|
7
|
+
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
function getAugmentedNamespace(n) {
|
|
11
|
+
if (n.__esModule) return n;
|
|
12
|
+
var f = n.default;
|
|
13
|
+
if (typeof f == "function") {
|
|
14
|
+
var a = function a () {
|
|
15
|
+
if (this instanceof a) {
|
|
16
|
+
return Reflect.construct(f, arguments, this.constructor);
|
|
17
|
+
}
|
|
18
|
+
return f.apply(this, arguments);
|
|
19
|
+
};
|
|
20
|
+
a.prototype = f.prototype;
|
|
21
|
+
} else a = {};
|
|
22
|
+
Object.defineProperty(a, '__esModule', {value: true});
|
|
23
|
+
Object.keys(n).forEach(function (k) {
|
|
24
|
+
var d = Object.getOwnPropertyDescriptor(n, k);
|
|
25
|
+
Object.defineProperty(a, k, d.get ? d : {
|
|
26
|
+
enumerable: true,
|
|
27
|
+
get: function () {
|
|
28
|
+
return n[k];
|
|
29
|
+
}
|
|
30
|
+
});
|
|
31
|
+
});
|
|
32
|
+
return a;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
var require$$0 = /*@__PURE__*/getAugmentedNamespace(purify_es.purify_es);
|
|
36
|
+
|
|
37
|
+
var browser;
|
|
38
|
+
var hasRequiredBrowser;
|
|
39
|
+
|
|
40
|
+
function requireBrowser () {
|
|
41
|
+
if (hasRequiredBrowser) return browser;
|
|
42
|
+
hasRequiredBrowser = 1;
|
|
43
|
+
browser = self.DOMPurify || (self.DOMPurify = require$$0.default || require$$0);
|
|
44
|
+
return browser;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
var browserExports = requireBrowser();
|
|
48
|
+
var DOMPurify = /*@__PURE__*/getDefaultExportFromCjs(browserExports);
|
|
4
49
|
|
|
5
50
|
/**
|
|
6
51
|
* HTML and XSS sanitization utilities
|
|
7
52
|
*/
|
|
8
53
|
/**
|
|
9
|
-
*
|
|
10
|
-
*
|
|
11
|
-
*/
|
|
12
|
-
/**
|
|
13
|
-
* Sanitize HTML by removing dangerous tags and attributes
|
|
14
|
-
* Removes script tags, event handlers, and other potentially malicious content
|
|
54
|
+
* Sanitize HTML using DOMPurify (safe for untrusted content).
|
|
55
|
+
* Removes scripts, dangerous URLs, and unsafe attributes.
|
|
15
56
|
*/
|
|
16
57
|
function sanitizeHtml(html) {
|
|
17
58
|
if (typeof html !== 'string') {
|
|
18
59
|
return '';
|
|
19
60
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
sanitized = sanitized.replace(/\s*on\w+\s*=\s*["'][^"']*["']/gi, '');
|
|
24
|
-
sanitized = sanitized.replace(/\s*on\w+\s*=\s*[^\s>]*/gi, '');
|
|
25
|
-
// Remove iframe tags
|
|
26
|
-
sanitized = sanitized.replace(/<iframe\b[^<]*(?:(?!<\/iframe>)<[^<]*)*<\/iframe>/gi, '');
|
|
27
|
-
// Remove style tags
|
|
28
|
-
sanitized = sanitized.replace(/<style\b[^<]*(?:(?!<\/style>)<[^<]*)*<\/style>/gi, '');
|
|
29
|
-
// Remove embed and object tags
|
|
30
|
-
sanitized = sanitized.replace(/<(embed|object)\b[^<]*>/gi, '');
|
|
31
|
-
// Remove javascript: protocol
|
|
32
|
-
sanitized = sanitized.replace(/javascript:/gi, '');
|
|
33
|
-
// Remove data: protocol for potentially dangerous mime types
|
|
34
|
-
sanitized = sanitized.replace(/data:(?!image\/(?:png|jpg|jpeg|gif|webp);)/gi, '');
|
|
35
|
-
return sanitized;
|
|
61
|
+
return DOMPurify.sanitize(html, {
|
|
62
|
+
USE_PROFILES: { html: true },
|
|
63
|
+
});
|
|
36
64
|
}
|
|
37
65
|
|
|
38
66
|
/**
|
|
@@ -113,13 +141,7 @@ class FeedlogSDK {
|
|
|
113
141
|
return this.validateIssuesResponse(data);
|
|
114
142
|
}
|
|
115
143
|
catch (error) {
|
|
116
|
-
|
|
117
|
-
throw error;
|
|
118
|
-
}
|
|
119
|
-
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
120
|
-
throw new FeedlogNetworkError('Network error: Unable to reach API', undefined, error);
|
|
121
|
-
}
|
|
122
|
-
throw new FeedlogError(`Failed to fetch issues: ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error);
|
|
144
|
+
this.wrapFetchError(error, 'Failed to fetch issues');
|
|
123
145
|
}
|
|
124
146
|
}
|
|
125
147
|
/**
|
|
@@ -154,13 +176,7 @@ class FeedlogSDK {
|
|
|
154
176
|
return this.validateUpvoteResponse(data);
|
|
155
177
|
}
|
|
156
178
|
catch (error) {
|
|
157
|
-
|
|
158
|
-
throw error;
|
|
159
|
-
}
|
|
160
|
-
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
161
|
-
throw new FeedlogNetworkError('Network error: Unable to reach API', undefined, error);
|
|
162
|
-
}
|
|
163
|
-
throw new FeedlogError(`Failed to toggle upvote: ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error);
|
|
179
|
+
this.wrapFetchError(error, 'Failed to toggle upvote');
|
|
164
180
|
}
|
|
165
181
|
}
|
|
166
182
|
/**
|
|
@@ -187,7 +203,9 @@ class FeedlogSDK {
|
|
|
187
203
|
url.searchParams.set('cursor', params.cursor);
|
|
188
204
|
}
|
|
189
205
|
if (params.limit !== undefined) {
|
|
190
|
-
|
|
206
|
+
const n = Number(params.limit);
|
|
207
|
+
const clamped = Number.isFinite(n) ? Math.max(1, Math.min(100, Math.floor(n))) : 10;
|
|
208
|
+
url.searchParams.set('limit', String(clamped));
|
|
191
209
|
}
|
|
192
210
|
return url.toString();
|
|
193
211
|
}
|
|
@@ -195,13 +213,19 @@ class FeedlogSDK {
|
|
|
195
213
|
* Get request headers
|
|
196
214
|
*/
|
|
197
215
|
getAuthHeaders() {
|
|
198
|
-
|
|
216
|
+
return {
|
|
199
217
|
'Content-Type': 'application/json',
|
|
218
|
+
'x-api-key': this.apiKey,
|
|
200
219
|
};
|
|
201
|
-
|
|
202
|
-
|
|
220
|
+
}
|
|
221
|
+
wrapFetchError(error, context) {
|
|
222
|
+
if (error instanceof FeedlogError) {
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
if (error instanceof TypeError && error.message.includes('fetch')) {
|
|
226
|
+
throw new FeedlogNetworkError('Network error: Unable to reach API', undefined, error);
|
|
203
227
|
}
|
|
204
|
-
|
|
228
|
+
throw new FeedlogError(`${context}: ${error instanceof Error ? error.message : 'Unknown error'}`, undefined, error);
|
|
205
229
|
}
|
|
206
230
|
/**
|
|
207
231
|
* Fetch with timeout support using AbortController
|
|
@@ -286,13 +310,23 @@ class FeedlogSDK {
|
|
|
286
310
|
const repoName = rawRepoName != null && rawRepoName !== '' ? String(rawRepoName) : null;
|
|
287
311
|
const rawRepoDesc = repo.description;
|
|
288
312
|
const repoDescription = rawRepoDesc != null && rawRepoDesc !== '' ? sanitizeHtml(String(rawRepoDesc)) : null;
|
|
313
|
+
const revision = typeof issue.revision === 'number' && Number.isFinite(issue.revision) ? issue.revision : 1;
|
|
314
|
+
const upvoteCount = typeof issue.upvoteCount === 'number' && Number.isFinite(issue.upvoteCount)
|
|
315
|
+
? issue.upvoteCount
|
|
316
|
+
: 0;
|
|
317
|
+
const updatedAt = typeof issue.updatedAt === 'string' && issue.updatedAt.length > 0
|
|
318
|
+
? issue.updatedAt
|
|
319
|
+
: new Date().toISOString();
|
|
320
|
+
const createdAt = typeof issue.createdAt === 'string' && issue.createdAt.length > 0
|
|
321
|
+
? issue.createdAt
|
|
322
|
+
: new Date().toISOString();
|
|
289
323
|
return {
|
|
290
324
|
id: String(issue.id),
|
|
291
325
|
githubIssueLink,
|
|
292
326
|
type: issue.type || 'bug',
|
|
293
327
|
status: issue.status || 'open',
|
|
294
328
|
pinnedAt: issue.pinnedAt ? String(issue.pinnedAt) : null,
|
|
295
|
-
revision
|
|
329
|
+
revision,
|
|
296
330
|
title: sanitizedTitle,
|
|
297
331
|
body: sanitizedBody,
|
|
298
332
|
repository: {
|
|
@@ -300,9 +334,9 @@ class FeedlogSDK {
|
|
|
300
334
|
name: repoName,
|
|
301
335
|
description: repoDescription,
|
|
302
336
|
},
|
|
303
|
-
updatedAt
|
|
304
|
-
createdAt
|
|
305
|
-
upvoteCount
|
|
337
|
+
updatedAt,
|
|
338
|
+
createdAt,
|
|
339
|
+
upvoteCount,
|
|
306
340
|
hasUpvoted: Boolean(issue.hasUpvoted),
|
|
307
341
|
};
|
|
308
342
|
}
|
|
@@ -437,7 +471,9 @@ const FeedlogIssuesClient = class {
|
|
|
437
471
|
this.cursor = null;
|
|
438
472
|
this.hasMore = false;
|
|
439
473
|
this.issues = [];
|
|
440
|
-
this.fetchIssues()
|
|
474
|
+
void this.fetchIssues().catch(() => {
|
|
475
|
+
/* errors handled inside fetchIssues */
|
|
476
|
+
});
|
|
441
477
|
this.previousType = this.type;
|
|
442
478
|
this.previousLimit = this.limit;
|
|
443
479
|
this.previousSortBy = this.sortBy;
|
|
@@ -457,6 +493,22 @@ const FeedlogIssuesClient = class {
|
|
|
457
493
|
this.feedlogError.emit({ error: errorMsg });
|
|
458
494
|
}
|
|
459
495
|
}
|
|
496
|
+
buildFetchParams() {
|
|
497
|
+
const params = {};
|
|
498
|
+
if (this.type) {
|
|
499
|
+
params.type = this.type;
|
|
500
|
+
}
|
|
501
|
+
if (this.sortBy) {
|
|
502
|
+
params.sortBy = this.sortBy;
|
|
503
|
+
}
|
|
504
|
+
if (this.limit) {
|
|
505
|
+
params.limit = this.limit;
|
|
506
|
+
}
|
|
507
|
+
if (this.cursor) {
|
|
508
|
+
params.cursor = this.cursor;
|
|
509
|
+
}
|
|
510
|
+
return params;
|
|
511
|
+
}
|
|
460
512
|
async fetchIssues() {
|
|
461
513
|
if (!this.sdk) {
|
|
462
514
|
return;
|
|
@@ -466,19 +518,7 @@ const FeedlogIssuesClient = class {
|
|
|
466
518
|
try {
|
|
467
519
|
this.loading = true;
|
|
468
520
|
this.error = null;
|
|
469
|
-
const params =
|
|
470
|
-
if (this.type) {
|
|
471
|
-
params.type = this.type;
|
|
472
|
-
}
|
|
473
|
-
if (this.sortBy) {
|
|
474
|
-
params.sortBy = this.sortBy;
|
|
475
|
-
}
|
|
476
|
-
if (this.limit) {
|
|
477
|
-
params.limit = this.limit;
|
|
478
|
-
}
|
|
479
|
-
if (this.cursor) {
|
|
480
|
-
params.cursor = this.cursor;
|
|
481
|
-
}
|
|
521
|
+
const params = this.buildFetchParams();
|
|
482
522
|
const response = await this.sdk.fetchIssues(params);
|
|
483
523
|
// Ignore response if component disconnected or a newer request was made
|
|
484
524
|
if (this.isDisconnected || currentRequestId !== this.fetchRequestId) {
|
|
@@ -517,19 +557,7 @@ const FeedlogIssuesClient = class {
|
|
|
517
557
|
const currentRequestId = this.fetchRequestId;
|
|
518
558
|
this.isLoadingMore = true;
|
|
519
559
|
try {
|
|
520
|
-
const params =
|
|
521
|
-
if (this.type) {
|
|
522
|
-
params.type = this.type;
|
|
523
|
-
}
|
|
524
|
-
if (this.sortBy) {
|
|
525
|
-
params.sortBy = this.sortBy;
|
|
526
|
-
}
|
|
527
|
-
if (this.limit) {
|
|
528
|
-
params.limit = this.limit;
|
|
529
|
-
}
|
|
530
|
-
if (this.cursor) {
|
|
531
|
-
params.cursor = this.cursor;
|
|
532
|
-
}
|
|
560
|
+
const params = this.buildFetchParams();
|
|
533
561
|
const response = await this.sdk.fetchIssues(params);
|
|
534
562
|
// Ignore response if component disconnected or a newer request was made
|
|
535
563
|
if (this.isDisconnected || currentRequestId !== this.fetchRequestId) {
|
|
@@ -564,7 +592,7 @@ const FeedlogIssuesClient = class {
|
|
|
564
592
|
const style = hostBg
|
|
565
593
|
? { '--feedlog-background': hostBg }
|
|
566
594
|
: undefined;
|
|
567
|
-
return (index.h("feedlog-issues", { key: '
|
|
595
|
+
return (index.h("feedlog-issues", { key: '2d9528bb33630664824ab584e10208359d579eb6', style: style, issues: this.issues, limit: this.limit, maxWidth: this.maxWidth, theme: this.theme, heading: this.heading, subtitle: this.subtitle, emptyStateTitle: this.emptyStateTitle, emptyStateMessage: this.emptyStateMessage, getIssueUrl: this.getIssueUrl, loading: this.loading, error: this.error, hasMore: this.hasMore, isLoadingMore: this.isLoadingMore, onFeedlogUpvote: this.handleUpvote, onFeedlogLoadMore: async () => this.loadMore(), part: "base" }, index.h("slot", { key: 'efe89b9fd0f337af7930823762296487ebcb758e', name: "header", slot: "header" }), index.h("slot", { key: 'ffebd688ebf25bb464ceefd6a161f7140e03933b', name: "loading", slot: "loading" }), index.h("slot", { key: 'b59010966b6f7768814ba838c05ffd62cfd1c26a', name: "error", slot: "error" }), index.h("slot", { key: '99b1abfcbb62703b3642fb02d79d8d1488421ee3', name: "empty-state", slot: "empty-state" }), index.h("slot", { key: 'c47c1dc83e8434b8f66d1b42b65e812aa5e1f8ee', name: "load-more", slot: "load-more" })));
|
|
568
596
|
}
|
|
569
597
|
get el() { return index.getElement(this); }
|
|
570
598
|
};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-prPyjPBk.js');
|
|
4
4
|
|
|
5
|
-
const feedlogIssuesCss = () => `:host{display:block;font-family:
|
|
5
|
+
const feedlogIssuesCss = () => `:host{display:block;font-family:var(--feedlog-font-family);--feedlog-theme-bg:var(--feedlog-background);--feedlog-gap:var(--feedlog-space-2);--feedlog-padding:var(--feedlog-space-8);--feedlog-min-height:100%}:host(.dark){--feedlog-theme-bg:var(--feedlog-background)}.issues-container{min-height:var(--feedlog-min-height);background-color:var(--feedlog-background, var(--feedlog-theme-bg, #ffffff));padding:var(--feedlog-padding);margin:0 auto;border-radius:var(--feedlog-radius-lg)}.issues-header{margin-bottom:var(--feedlog-space-6);display:flex;align-items:flex-start;justify-content:space-between}.header-content{flex:1}.issues-title{color:var(--feedlog-foreground);margin:0 0 var(--feedlog-space-1) 0;font-size:var(--feedlog-text-xl);font-weight:var(--feedlog-font-semibold);line-height:1.5}.issues-subtitle{color:var(--feedlog-muted-foreground);font-size:var(--feedlog-text-sm);margin:0}.loading-state{padding:0}.loading-skeletons{display:flex;flex-direction:column;gap:var(--feedlog-gap)}.skeleton-card{background-color:var(--feedlog-card);border:1px solid var(--feedlog-border);border-radius:var(--feedlog-radius);box-shadow:var(--feedlog-shadow-sm);position:relative;overflow:hidden}.skeleton-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--feedlog-muted)}.skeleton-content{padding:var(--feedlog-space-5);padding-left:calc(var(--feedlog-space-5) + 3px);display:flex;flex-direction:column;gap:var(--feedlog-space-3)}.skeleton-header{display:flex;align-items:center;justify-content:space-between;gap:var(--feedlog-space-3)}.skeleton-badge{width:4.5rem;height:1.25rem;border-radius:var(--feedlog-radius-sm);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-timestamp{width:3rem;height:0.75rem;border-radius:var(--feedlog-radius-sm);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.2s}.skeleton-main{display:flex;flex-direction:column;gap:var(--feedlog-space-2)}.skeleton-title{height:0.9375rem;border-radius:var(--feedlog-radius-sm);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.1s;width:85%}.skeleton-body{display:flex;flex-direction:column;gap:var(--feedlog-space-1)}.skeleton-line{height:0.8125rem;border-radius:var(--feedlog-radius-sm);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.15s;width:100%}.skeleton-line.short{width:70%}.skeleton-repo{width:6rem;height:0.75rem;border-radius:var(--feedlog-radius-sm);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.25s}.skeleton-footer{display:flex;justify-content:flex-end}.skeleton-upvote{width:2.5rem;height:2rem;border-radius:var(--feedlog-radius);background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.3s}@keyframes skeleton-pulse{0%,100%{opacity:1}50%{opacity:0.5}}.error-state{display:flex;align-items:center;justify-content:center;padding:var(--feedlog-space-10) var(--feedlog-space-8);min-height:12rem}.error-state-content{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:20rem;padding:var(--feedlog-space-8)}.error-icon{color:var(--feedlog-muted-foreground);opacity:0.8;margin-bottom:var(--feedlog-space-4)}.error-state-title{margin:0 0 var(--feedlog-space-2) 0;font-size:var(--feedlog-text-lg);font-weight:var(--feedlog-font-semibold);color:var(--feedlog-foreground);line-height:1.4}.error-state-message{margin:0 0 var(--feedlog-space-5) 0;font-size:var(--feedlog-text-sm);color:var(--feedlog-muted-foreground);line-height:1.5}.load-more-container{display:flex;justify-content:center;padding:var(--feedlog-space-8) 0;gap:var(--feedlog-space-4)}`;
|
|
6
6
|
|
|
7
7
|
const FeedlogIssues = class {
|
|
8
8
|
constructor(hostRef) {
|
|
@@ -37,10 +37,6 @@ const FeedlogIssues = class {
|
|
|
37
37
|
* Whether more issues are currently loading
|
|
38
38
|
*/
|
|
39
39
|
this.isLoadingMore = false;
|
|
40
|
-
/**
|
|
41
|
-
* Internal state for theme
|
|
42
|
-
*/
|
|
43
|
-
this.currentTheme = 'light';
|
|
44
40
|
this.handleUpvote = (event) => {
|
|
45
41
|
event.stopPropagation();
|
|
46
42
|
this.feedlogUpvote.emit(event.detail);
|
|
@@ -49,21 +45,18 @@ const FeedlogIssues = class {
|
|
|
49
45
|
this.feedlogLoadMore.emit();
|
|
50
46
|
};
|
|
51
47
|
}
|
|
52
|
-
componentWillLoad() {
|
|
53
|
-
this.currentTheme = this.theme;
|
|
54
|
-
}
|
|
55
48
|
renderErrorIcon() {
|
|
56
49
|
return (index.h("svg", { class: "error-icon", xmlns: "http://www.w3.org/2000/svg", width: "48", height: "48", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round", "aria-hidden": "true" }, index.h("circle", { cx: "12", cy: "12", r: "10" }), index.h("line", { x1: "12", y1: "8", x2: "12", y2: "12" }), index.h("line", { x1: "12", y1: "16", x2: "12.01", y2: "16" })));
|
|
57
50
|
}
|
|
58
51
|
renderIssuesList() {
|
|
59
52
|
var _a, _b;
|
|
60
|
-
return (index.h("feedlog-issues-list", { issues: this.issues, limit: this.limit, theme: this.
|
|
53
|
+
return (index.h("feedlog-issues-list", { issues: this.issues, limit: this.limit, theme: this.theme, getIssueUrl: this.getIssueUrl, emptyStateTitle: (_a = this.emptyStateTitle) !== null && _a !== void 0 ? _a : 'No updates yet', emptyStateMessage: (_b = this.emptyStateMessage) !== null && _b !== void 0 ? _b : 'Check back later for new updates.', onFeedlogUpvote: (e) => this.handleUpvote(e), part: "issues-list" }, index.h("slot", { name: "empty-state", slot: "empty-state" })));
|
|
61
54
|
}
|
|
62
55
|
render() {
|
|
63
56
|
const containerStyle = {
|
|
64
57
|
maxWidth: this.maxWidth,
|
|
65
58
|
};
|
|
66
|
-
return (index.h(index.Host, { key: '
|
|
59
|
+
return (index.h(index.Host, { key: '79835dd61383b41124f48d204977951236a7f8ce', class: this.theme === 'dark' ? 'dark' : '' }, index.h("div", { key: '62228927cba9bd4cf58d8b4f3ec2751ba423dd67', class: "issues-container", style: containerStyle, part: "base" }, index.h("slot", { key: 'c57d46adc472c2b03857db3e07cc5b549bd110f1', name: "header" }, (this.heading || this.subtitle) && (index.h("header", { key: '080059a002a373d76bee863b368a12ffdba59384', class: "issues-header", part: "header" }, index.h("div", { key: 'db85f995fb6f1f9fe961ea6726cf82da17fc9c2d', class: "header-content", part: "header-content" }, this.heading && (index.h("h1", { key: 'e7b510ecd2039072b384d6dcb531ebf0b091010b', class: "issues-title", part: "title" }, this.heading)), this.subtitle && (index.h("p", { key: '323f9a635b6a1c2ca9d955d12dc1925c0be59cf8', class: "issues-subtitle", part: "subtitle" }, this.subtitle)))))), this.loading && (index.h("slot", { key: 'ba63923aa7cac4b3ab050b423d5f65dcbbe81677', name: "loading" }, index.h("div", { key: '4bf1fc0d367acb0285eb124875c42e541939d388', class: "loading-state", role: "status", "aria-label": "Loading issues", part: "loading-state" }, index.h("div", { key: 'fa369824bd1cb8e3b5c393613952611658e6919a', class: "loading-skeletons", part: "loading-skeletons" }, [1, 2, 3].map(i => (index.h("div", { key: i, class: "skeleton-card", part: "skeleton-card" }, index.h("div", { class: "skeleton-content", part: "skeleton-content" }, index.h("div", { class: "skeleton-header", part: "skeleton-header" }, index.h("div", { class: "skeleton-badge", part: "skeleton-badge" }), index.h("div", { class: "skeleton-timestamp", part: "skeleton-timestamp" })), index.h("div", { class: "skeleton-main", part: "skeleton-main" }, index.h("div", { class: "skeleton-title", part: "skeleton-title" }), index.h("div", { class: "skeleton-body", part: "skeleton-body" }, index.h("div", { class: "skeleton-line", part: "skeleton-line" }), index.h("div", { class: "skeleton-line short", part: "skeleton-line short" })), index.h("div", { class: "skeleton-repo", part: "skeleton-repo" })), index.h("div", { class: "skeleton-footer", part: "skeleton-footer" }, index.h("div", { class: "skeleton-upvote", part: "skeleton-upvote" })))))))))), this.error && (index.h("slot", { key: '5ad8c400e465213de6e9d1f2a4d5e70c86a7ca2d', name: "error" }, index.h("div", { key: '0a1a62f25e9ccac249ea7426cc7839e95a24b60f', class: "error-state", role: "alert", part: "error-state" }, index.h("div", { key: '3286f0ab99dbead8e7949317de510e643bfbc897', class: "error-state-content", part: "error-state-content" }, this.renderErrorIcon(), index.h("h2", { key: '78319f0bbc6cc972bb2a4478134194b0592c13ba', class: "error-state-title", part: "error-title" }, "Something went wrong"), index.h("p", { key: 'ba262bf4d991326d36a04667b1109fed008d7cfd', class: "error-state-message", part: "error-message" }, this.error))))), !this.loading && !this.error && (index.h("div", { key: 'adc09c9a78afb9c163d23813eebb23a4c031be52', part: "list-container" }, this.renderIssuesList(), this.hasMore && (index.h("slot", { key: '26010e848f5fc2976f0ab0c1d7f134efb023f173', name: "load-more" }, index.h("div", { key: 'adbfb37d368383405dc9edd136ed7c0003b8cb67', class: "load-more-container", part: "load-more-container" }, index.h("feedlog-button", { key: '8d00e17e29dd9148e71e86cb178b9e058f50ce32', onFeedlogClick: this.handleLoadMore, disabled: this.isLoadingMore, variant: "outline", part: "load-more-btn" }, this.isLoadingMore ? 'Loading...' : 'Load More Issues')))))))));
|
|
67
60
|
}
|
|
68
61
|
};
|
|
69
62
|
FeedlogIssues.style = feedlogIssuesCss();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-prPyjPBk.js');
|
|
4
4
|
|
|
5
5
|
var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
|
|
6
6
|
/*
|
|
@@ -18,7 +18,7 @@ var patchBrowser = () => {
|
|
|
18
18
|
|
|
19
19
|
patchBrowser().then(async (options) => {
|
|
20
20
|
await index.globalScripts();
|
|
21
|
-
return index.bootstrapLazy([["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_3.cjs",[[
|
|
21
|
+
return index.bootstrapLazy([["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_3.cjs",[[257,"feedlog-issues-list",{"issues":[16],"limit":[2],"theme":[1],"getIssueUrl":[16],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"currentPage":[32]},null,{"issues":[{"resetPage":0}],"limit":[{"resetPage":0}]}],[257,"feedlog-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1]}],[257,"feedlog-issue",{"issue":[16],"issueUrl":[1,"issue-url"],"theme":[1]}]]],["feedlog-issues.cjs",[[257,"feedlog-issues",{"issues":[16],"maxWidth":[1,"max-width"],"limit":[2],"theme":[1025],"heading":[1],"subtitle":[1],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"loading":[4],"error":[1],"hasMore":[4,"has-more"],"isLoadingMore":[4,"is-loading-more"],"getIssueUrl":[16]}]]],["feedlog-issues-client.cjs",[[257,"feedlog-issues-client",{"apiKey":[1,"api-key"],"type":[1],"limit":[2],"sortBy":[1,"sort-by"],"endpoint":[1],"maxWidth":[1,"max-width"],"theme":[1],"heading":[1],"subtitle":[1],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"getIssueUrl":[16],"issues":[32],"loading":[32],"error":[32],"cursor":[32],"hasMore":[32],"isLoadingMore":[32]}]]]], options);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
exports.setNonce = index.setNonce;
|
|
@@ -4,7 +4,7 @@ const NAMESPACE = 'feedlog-toolkit';
|
|
|
4
4
|
const BUILD = /* feedlog-toolkit */ { hotModuleReplacement: false, hydratedSelectorName: "hydrated", lazyLoad: true, propChangeCallback: true, state: true, updatable: true};
|
|
5
5
|
|
|
6
6
|
const globalScripts = () => {};
|
|
7
|
-
const globalStyles = ":root{--feedlog-
|
|
7
|
+
const globalStyles = ":root{--feedlog-background:#ffffff;--feedlog-foreground:#09090b;--feedlog-card:#ffffff;--feedlog-card-foreground:#09090b;--feedlog-popover:#ffffff;--feedlog-popover-foreground:#09090b;--feedlog-primary:#18181b;--feedlog-primary-foreground:#fafafa;--feedlog-secondary:#f4f4f5;--feedlog-secondary-foreground:#18181b;--feedlog-muted:#f4f4f5;--feedlog-muted-foreground:#71717a;--feedlog-accent:#f4f4f5;--feedlog-accent-foreground:#18181b;--feedlog-destructive:#ef4444;--feedlog-destructive-foreground:#fafafa;--feedlog-success:#22c55e;--feedlog-success-foreground:#ffffff;--feedlog-warning:#f59e0b;--feedlog-warning-foreground:#ffffff;--feedlog-border:#f0f0f2;--feedlog-input:#e4e4e7;--feedlog-ring:#18181b;--feedlog-badge-enhancement-bg:#eef2ff;--feedlog-badge-enhancement-text:#4338ca;--feedlog-badge-secondary-bg:#f1f5f9;--feedlog-badge-secondary-text:#475569;--feedlog-badge-destructive-bg:#fef2f2;--feedlog-badge-destructive-text:#b91c1c;--feedlog-space-1:0.25rem;--feedlog-space-2:0.5rem;--feedlog-space-3:0.75rem;--feedlog-space-4:1rem;--feedlog-space-5:1.25rem;--feedlog-space-6:1.5rem;--feedlog-space-8:2rem;--feedlog-space-10:2.5rem;--feedlog-font-family:ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;--feedlog-font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;--feedlog-text-xs:0.75rem;--feedlog-text-sm:0.875rem;--feedlog-text-base:1rem;--feedlog-text-lg:1.125rem;--feedlog-text-xl:1.25rem;--feedlog-font-normal:400;--feedlog-font-medium:500;--feedlog-font-semibold:600;--feedlog-font-bold:700;--feedlog-radius-sm:0.25rem;--feedlog-radius:0.5rem;--feedlog-radius-lg:0.75rem;--feedlog-radius-full:9999px;--feedlog-shadow-sm:0 2px 8px -2px rgba(0, 0, 0, 0.05);--feedlog-shadow:0 4px 20px -2px rgba(0, 0, 0, 0.05);--feedlog-shadow-md:0 8px 30px -4px rgba(0, 0, 0, 0.06)}.dark{--feedlog-background:#09090b;--feedlog-foreground:#fafafa;--feedlog-card:#09090b;--feedlog-card-foreground:#fafafa;--feedlog-popover:#09090b;--feedlog-popover-foreground:#fafafa;--feedlog-primary:#fafafa;--feedlog-primary-foreground:#18181b;--feedlog-secondary:#27272a;--feedlog-secondary-foreground:#fafafa;--feedlog-muted:#27272a;--feedlog-muted-foreground:#a1a1aa;--feedlog-accent:#27272a;--feedlog-accent-foreground:#fafafa;--feedlog-destructive:#7f1d1d;--feedlog-destructive-foreground:#fafafa;--feedlog-success:#14532d;--feedlog-success-foreground:#fafafa;--feedlog-warning:#78350f;--feedlog-warning-foreground:#fafafa;--feedlog-border:#27272a;--feedlog-input:#27272a;--feedlog-ring:#d4d4d8;--feedlog-badge-enhancement-bg:rgba(67, 56, 202, 0.2);--feedlog-badge-enhancement-text:#c7d2fe;--feedlog-badge-secondary-bg:rgba(71, 85, 105, 0.2);--feedlog-badge-secondary-text:#cbd5e1;--feedlog-badge-destructive-bg:rgba(185, 28, 28, 0.2);--feedlog-badge-destructive-text:#fecaca}";
|
|
8
8
|
|
|
9
9
|
/*
|
|
10
10
|
Stencil Client Platform v4.40.1 | MIT Licensed | https://stenciljs.com
|
package/dist/cjs/loader.cjs.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-prPyjPBk.js');
|
|
4
4
|
|
|
5
5
|
const defineCustomElements = async (win, options) => {
|
|
6
6
|
if (typeof window === 'undefined') return undefined;
|
|
7
7
|
await index.globalScripts();
|
|
8
|
-
return index.bootstrapLazy([["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_3.cjs",[[
|
|
8
|
+
return index.bootstrapLazy([["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_3.cjs",[[257,"feedlog-issues-list",{"issues":[16],"limit":[2],"theme":[1],"getIssueUrl":[16],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"currentPage":[32]},null,{"issues":[{"resetPage":0}],"limit":[{"resetPage":0}]}],[257,"feedlog-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1]}],[257,"feedlog-issue",{"issue":[16],"issueUrl":[1,"issue-url"],"theme":[1]}]]],["feedlog-issues.cjs",[[257,"feedlog-issues",{"issues":[16],"maxWidth":[1,"max-width"],"limit":[2],"theme":[1025],"heading":[1],"subtitle":[1],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"loading":[4],"error":[1],"hasMore":[4,"has-more"],"isLoadingMore":[4,"is-loading-more"],"getIssueUrl":[16]}]]],["feedlog-issues-client.cjs",[[257,"feedlog-issues-client",{"apiKey":[1,"api-key"],"type":[1],"limit":[2],"sortBy":[1,"sort-by"],"endpoint":[1],"maxWidth":[1,"max-width"],"theme":[1],"heading":[1],"subtitle":[1],"emptyStateTitle":[1,"empty-state-title"],"emptyStateMessage":[1,"empty-state-message"],"getIssueUrl":[16],"issues":[32],"loading":[32],"error":[32],"cursor":[32],"hasMore":[32],"isLoadingMore":[32]}]]]], options);
|
|
9
9
|
};
|
|
10
10
|
|
|
11
11
|
exports.setNonce = index.setNonce;
|