@feedlog-ai/webcomponents 0.0.20 → 0.0.22
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 +20 -5
- package/dist/cjs/feedlog-badge.cjs.entry.js +3 -3
- package/dist/cjs/feedlog-button_2.cjs.entry.js +1547 -8
- package/dist/cjs/feedlog-card.cjs.entry.js +1 -1
- package/dist/cjs/feedlog-github-issues-client.cjs.entry.js +24 -18
- package/dist/cjs/feedlog-github-issues.cjs.entry.js +14 -4
- package/dist/cjs/feedlog-issues-list.cjs.entry.js +8 -37
- package/dist/cjs/feedlog-toolkit.cjs.js +2 -2
- package/dist/cjs/{index-5lluu_3h.js → index-DnsqTPII.js} +0 -37
- package/dist/cjs/loader.cjs.js +2 -2
- package/dist/collection/components/feedlog-badge/feedlog-badge.css +15 -3
- package/dist/collection/components/feedlog-badge/feedlog-badge.js +3 -3
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.css +202 -13
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.js +73 -2
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.stories.js +56 -6
- package/dist/collection/components/feedlog-github-issues-client/feedlog-github-issues-client.js +63 -2
- package/dist/collection/components/feedlog-issue/feedlog-issue.css +196 -46
- package/dist/collection/components/feedlog-issue/feedlog-issue.js +71 -6
- package/dist/collection/components/feedlog-issue/feedlog-issue.stories.js +115 -3
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.css +3 -209
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.js +29 -35
- package/dist/collection/utils/markdown.js +48 -0
- package/dist/components/feedlog-badge.js +1 -1
- package/dist/components/feedlog-github-issues-client.js +1 -1
- package/dist/components/feedlog-github-issues.js +1 -1
- package/dist/components/feedlog-issue.js +1 -1
- package/dist/components/feedlog-issues-list.js +1 -1
- package/dist/components/index.js +1 -1
- package/dist/components/p-BBPFf6g7.js +3 -0
- package/dist/components/p-Chc3XZ5Y.js +1 -0
- package/dist/components/p-cag4iyHV.js +1 -0
- package/dist/esm/feedlog-badge.entry.js +3 -3
- package/dist/esm/feedlog-button_2.entry.js +1547 -8
- package/dist/esm/feedlog-card.entry.js +1 -1
- package/dist/esm/feedlog-github-issues-client.entry.js +24 -18
- package/dist/esm/feedlog-github-issues.entry.js +14 -4
- package/dist/esm/feedlog-issues-list.entry.js +8 -37
- package/dist/esm/feedlog-toolkit.js +3 -3
- package/dist/esm/{index-CkB6Yzeb.js → index-rs_66Oq4.js} +0 -37
- package/dist/esm/loader.js +3 -3
- package/dist/feedlog-toolkit/feedlog-toolkit.esm.js +1 -1
- package/dist/feedlog-toolkit/p-13773ed6.entry.js +1 -0
- package/dist/feedlog-toolkit/{p-cdb2b098.entry.js → p-4e90285c.entry.js} +1 -1
- package/dist/feedlog-toolkit/p-9b515728.entry.js +1 -0
- package/dist/feedlog-toolkit/p-da51c7fd.entry.js +1 -0
- package/dist/feedlog-toolkit/p-dad7b157.entry.js +3 -0
- package/dist/feedlog-toolkit/p-e5ba7dd7.entry.js +1 -0
- package/dist/feedlog-toolkit/p-rs_66Oq4.js +2 -0
- package/dist/types/components/feedlog-badge/feedlog-badge.d.ts +1 -1
- package/dist/types/components/feedlog-github-issues/feedlog-github-issues.d.ts +16 -1
- package/dist/types/components/feedlog-github-issues/feedlog-github-issues.stories.d.ts +1 -0
- package/dist/types/components/feedlog-github-issues-client/feedlog-github-issues-client.d.ts +14 -1
- package/dist/types/components/feedlog-issue/feedlog-issue.d.ts +19 -2
- package/dist/types/components/feedlog-issue/feedlog-issue.stories.d.ts +10 -0
- package/dist/types/components/feedlog-issues-list/feedlog-issues-list.d.ts +5 -5
- package/dist/types/components.d.ts +68 -4
- package/dist/types/utils/markdown.d.ts +5 -0
- package/package.json +4 -2
- package/dist/components/p-Bu_AsIay.js +0 -1
- package/dist/components/p-CHtSMTyP.js +0 -1
- package/dist/components/p-Cp7B8xwh.js +0 -1
- package/dist/feedlog-toolkit/p-2401f510.entry.js +0 -1
- package/dist/feedlog-toolkit/p-5df44120.entry.js +0 -1
- package/dist/feedlog-toolkit/p-95fea2f4.entry.js +0 -1
- package/dist/feedlog-toolkit/p-CkB6Yzeb.js +0 -2
- package/dist/feedlog-toolkit/p-b4b631f3.entry.js +0 -1
- package/dist/feedlog-toolkit/p-c19a4d1b.entry.js +0 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DnsqTPII.js');
|
|
4
4
|
|
|
5
5
|
const feedlogCardCss = () => `:host{display:block;font-family:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;--feedlog-card:#ffffff;--feedlog-card-foreground:oklch(0.145 0 0);--feedlog-border:rgba(0, 0, 0, 0.1);--feedlog-radius:0.625rem;--feedlog-card-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);--feedlog-card-hover-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1)}:host(.dark){--feedlog-card:oklch(0.145 0 0);--feedlog-card-foreground:oklch(0.985 0 0);--feedlog-border:oklch(0.269 0 0);--feedlog-card-shadow:0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);--feedlog-card-hover-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3)}.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-card-shadow);transition:box-shadow 0.15s ease;position:relative}.feedlog-card:hover{box-shadow:var(--feedlog-card-hover-shadow)}::slotted([slot="header"]){display:block}::slotted([slot="content"]){display:block}::slotted([slot="footer"]){display:block}`;
|
|
6
6
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DnsqTPII.js');
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* HTML and XSS sanitization utilities
|
|
@@ -260,29 +260,35 @@ class FeedlogSDK {
|
|
|
260
260
|
if (typeof issue.id !== 'string') {
|
|
261
261
|
throw new FeedlogValidationError('Invalid issue: id is required and must be a string');
|
|
262
262
|
}
|
|
263
|
-
if (typeof issue.title !== 'string') {
|
|
264
|
-
throw new FeedlogValidationError('Invalid issue: title is required and must be a string');
|
|
265
|
-
}
|
|
266
263
|
if (!['bug', 'enhancement'].includes(String(issue.type))) {
|
|
267
264
|
throw new FeedlogValidationError('Invalid issue: type must be "bug" or "enhancement"');
|
|
268
265
|
}
|
|
269
|
-
if (!['open', 'closed'].includes(String(issue.status))) {
|
|
270
|
-
throw new FeedlogValidationError('Invalid issue: status must be "open" or "closed"');
|
|
266
|
+
if (!['open', 'in_progress', 'closed'].includes(String(issue.status))) {
|
|
267
|
+
throw new FeedlogValidationError('Invalid issue: status must be "open", "in_progress", or "closed"');
|
|
271
268
|
}
|
|
272
269
|
if (!issue.repository || typeof issue.repository !== 'object') {
|
|
273
270
|
throw new FeedlogValidationError('Invalid issue: repository is required');
|
|
274
271
|
}
|
|
275
272
|
const repo = issue.repository;
|
|
276
|
-
if (typeof repo.id !== 'string'
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
273
|
+
if (typeof repo.id !== 'string') {
|
|
274
|
+
throw new FeedlogValidationError('Invalid issue: repository must have id');
|
|
275
|
+
}
|
|
276
|
+
// githubIssueLink: string | null (null for private repos)
|
|
277
|
+
const githubIssueLink = issue.githubIssueLink !== null && typeof issue.githubIssueLink === 'string'
|
|
278
|
+
? String(issue.githubIssueLink)
|
|
279
|
+
: null;
|
|
280
|
+
// Sanitize string fields to prevent XSS (handle null)
|
|
281
|
+
const rawTitle = issue.title;
|
|
282
|
+
const sanitizedTitle = rawTitle != null && rawTitle !== '' ? sanitizeHtml(String(rawTitle)) : null;
|
|
283
|
+
const rawBody = issue.body;
|
|
284
|
+
const sanitizedBody = rawBody != null && rawBody !== '' ? sanitizeHtml(String(rawBody)) : null;
|
|
285
|
+
const rawRepoName = repo.name;
|
|
286
|
+
const repoName = rawRepoName != null && rawRepoName !== '' ? String(rawRepoName) : null;
|
|
287
|
+
const rawRepoDesc = repo.description;
|
|
288
|
+
const repoDescription = rawRepoDesc != null && rawRepoDesc !== '' ? sanitizeHtml(String(rawRepoDesc)) : null;
|
|
284
289
|
return {
|
|
285
290
|
id: String(issue.id),
|
|
291
|
+
githubIssueLink,
|
|
286
292
|
type: issue.type || 'bug',
|
|
287
293
|
status: issue.status || 'open',
|
|
288
294
|
pinnedAt: issue.pinnedAt ? String(issue.pinnedAt) : null,
|
|
@@ -291,8 +297,8 @@ class FeedlogSDK {
|
|
|
291
297
|
body: sanitizedBody,
|
|
292
298
|
repository: {
|
|
293
299
|
id: String(repo.id),
|
|
294
|
-
name:
|
|
295
|
-
|
|
300
|
+
name: repoName,
|
|
301
|
+
description: repoDescription,
|
|
296
302
|
},
|
|
297
303
|
updatedAt: String(issue.updatedAt) || new Date().toISOString(),
|
|
298
304
|
createdAt: String(issue.createdAt) || new Date().toISOString(),
|
|
@@ -482,7 +488,7 @@ const FeedlogGithubIssuesClient = class {
|
|
|
482
488
|
if (this.isDisconnected || currentRequestId !== this.fetchRequestId) {
|
|
483
489
|
return;
|
|
484
490
|
}
|
|
485
|
-
const errorMsg = err instanceof Error ? err.message : '
|
|
491
|
+
const errorMsg = err instanceof Error ? err.message : "Couldn't load updates";
|
|
486
492
|
this.error = errorMsg;
|
|
487
493
|
this.issues = [];
|
|
488
494
|
this.feedlogError.emit({
|
|
@@ -547,7 +553,7 @@ const FeedlogGithubIssuesClient = class {
|
|
|
547
553
|
}
|
|
548
554
|
}
|
|
549
555
|
render() {
|
|
550
|
-
return (index.h("feedlog-github-issues", { key: '
|
|
556
|
+
return (index.h("feedlog-github-issues", { key: '4bc46e4f2622d4c2c5080835ae436ae9fc37c991', issues: this.issues, 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() }));
|
|
551
557
|
}
|
|
552
558
|
};
|
|
553
559
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DnsqTPII.js');
|
|
4
4
|
|
|
5
|
-
const feedlogGithubIssuesCss = () => `:host{display:block;font-family:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;--feedlog-background:#ffffff;--feedlog-foreground:oklch(0.145 0 0);--feedlog-card:#ffffff;--feedlog-card-foreground:oklch(0.145 0 0);--feedlog-muted:#ececf0;--feedlog-muted-foreground:#717182;--feedlog-border:rgba(0, 0, 0, 0.1);--feedlog-accent-color:#2563eb;--feedlog-destructive:#d4183d;--feedlog-blue-400:oklch(0.707 0.165 254.624);--feedlog-blue-600:oklch(0.546 0.245 262.881);--feedlog-blue-100:oklch(0.932 0.032 255.585);--feedlog-red-100:#fce7f3;--feedlog-red-400:#f472b6;--feedlog-red-600:#db2777;--feedlog-radius:0.625rem;--feedlog-gap:0.5rem;--feedlog-padding:2rem}:host(.dark){--feedlog-background:oklch(0.
|
|
5
|
+
const feedlogGithubIssuesCss = () => `:host{display:block;font-family:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;--feedlog-background:#ffffff;--feedlog-foreground:oklch(0.145 0 0);--feedlog-card:#ffffff;--feedlog-card-foreground:oklch(0.145 0 0);--feedlog-muted:#ececf0;--feedlog-muted-foreground:#717182;--feedlog-border:rgba(0, 0, 0, 0.1);--feedlog-accent-color:#2563eb;--feedlog-destructive:#d4183d;--feedlog-blue-400:oklch(0.707 0.165 254.624);--feedlog-blue-600:oklch(0.546 0.245 262.881);--feedlog-blue-100:oklch(0.932 0.032 255.585);--feedlog-red-100:#fce7f3;--feedlog-red-400:#f472b6;--feedlog-red-600:#db2777;--feedlog-radius:0.625rem;--feedlog-gap:0.5rem;--feedlog-padding:2rem;--feedlog-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.08), 0 1px 2px -1px rgba(0, 0, 0, 0.08);--feedlog-empty-illustration-bg:oklch(0.96 0.01 260);--feedlog-empty-illustration-stroke:oklch(0.75 0.02 260);--feedlog-empty-illustration-muted:oklch(0.82 0.01 260)}:host(.dark){--feedlog-background:oklch(0.18 0.01 260);--feedlog-foreground:oklch(0.985 0 0);--feedlog-card:oklch(0.24 0.01 260);--feedlog-card-foreground:oklch(0.985 0 0);--feedlog-muted:oklch(0.32 0.01 260);--feedlog-muted-foreground:oklch(0.72 0.02 260);--feedlog-border:oklch(0.34 0.01 260);--feedlog-accent-color:#3b82f6;--feedlog-destructive:oklch(0.396 0.141 25.723);--feedlog-blue-400:oklch(0.707 0.165 254.624);--feedlog-blue-600:oklch(0.546 0.245 262.881);--feedlog-blue-900-30:color-mix(in oklab, oklch(0.379 0.146 265.522) 30%, transparent);--feedlog-red-900-30:color-mix(in oklab, oklch(0.396 0.141 25.723) 30%, transparent);--feedlog-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.3);--feedlog-empty-illustration-bg:oklch(0.28 0.02 260);--feedlog-empty-illustration-stroke:oklch(0.45 0.02 260);--feedlog-empty-illustration-muted:oklch(0.38 0.02 260)}.github-issues-container{min-height:100vh;background-color:var(--feedlog-background);padding:var(--feedlog-padding);margin:0 auto}.issues-header{margin-bottom:1.5rem;display:flex;align-items:flex-start;justify-content:space-between}.header-content{flex:1}.issues-title{color:var(--feedlog-foreground);margin:0 0 0.25rem 0;font-size:1.5rem;font-weight:500;line-height:1.5}.issues-subtitle{color:var(--feedlog-muted-foreground);font-size:0.875rem;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);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:1.25rem;padding-left:calc(1.25rem + 3px);display:flex;flex-direction:column;gap:0.875rem}.skeleton-header{display:flex;align-items:center;justify-content:space-between;gap:0.75rem}.skeleton-badge{width:4.5rem;height:1.25rem;border-radius:0.375rem;background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-timestamp{width:3rem;height:0.75rem;border-radius:0.25rem;background-color:var(--feedlog-muted);animation:skeleton-pulse 1.5s ease-in-out infinite 0.2s}.skeleton-main{display:flex;flex-direction:column;gap:0.5rem}.skeleton-title{height:0.9375rem;border-radius:0.25rem;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:0.375rem}.skeleton-line{height:0.8125rem;border-radius:0.25rem;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:0.25rem;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:0.5rem;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:3rem 2rem;min-height:12rem}.error-state-content{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:20rem;padding:2rem}.error-icon{color:var(--feedlog-muted-foreground);opacity:0.8;margin-bottom:1rem}.error-state-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--feedlog-foreground);line-height:1.4}.error-state-message{margin:0 0 1.25rem 0;font-size:0.875rem;color:var(--feedlog-muted-foreground);line-height:1.5}.issues-list{display:flex;flex-direction:column;gap:var(--feedlog-gap)}.empty-state{display:flex;align-items:center;justify-content:center;padding:4rem 2rem;min-height:16rem}.empty-state-content{display:flex;flex-direction:column;align-items:center;text-align:center;max-width:20rem}.empty-state-illustration{margin-bottom:1.5rem;opacity:0.9}.empty-state-title{margin:0 0 0.5rem 0;font-size:1.125rem;font-weight:600;color:var(--feedlog-foreground);line-height:1.4}.empty-state-message{margin:0;font-size:0.875rem;color:var(--feedlog-muted-foreground);line-height:1.5}.load-more-container{display:flex;justify-content:center;padding:2rem 0;gap:1rem}`;
|
|
6
6
|
|
|
7
7
|
const FeedlogGithubIssues = class {
|
|
8
8
|
constructor(hostRef) {
|
|
@@ -52,14 +52,24 @@ const FeedlogGithubIssues = class {
|
|
|
52
52
|
componentWillLoad() {
|
|
53
53
|
this.currentTheme = this.theme;
|
|
54
54
|
}
|
|
55
|
+
renderEmptyStateIllustration() {
|
|
56
|
+
return (index.h("svg", { class: "empty-state-illustration", xmlns: "http://www.w3.org/2000/svg", width: "120", height: "96", viewBox: "0 0 120 96", fill: "none", "aria-hidden": "true" }, index.h("path", { d: "M20 36h80v44c0 4.4-3.6 8-8 8H28c-4.4 0-8-3.6-8-8V36z", fill: "var(--feedlog-empty-illustration-bg)", stroke: "var(--feedlog-empty-illustration-stroke)", "stroke-width": "1.5", "stroke-linejoin": "round" }), index.h("path", { d: "M20 36l20-24h40l20 24", fill: "none", stroke: "var(--feedlog-empty-illustration-stroke)", "stroke-width": "1.5", "stroke-linecap": "round", "stroke-linejoin": "round" }), index.h("path", { d: "M44 52h32M44 60h24M44 68h28", stroke: "var(--feedlog-empty-illustration-muted)", "stroke-width": "1.25", "stroke-linecap": "round" })));
|
|
57
|
+
}
|
|
58
|
+
renderErrorIcon() {
|
|
59
|
+
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" })));
|
|
60
|
+
}
|
|
55
61
|
renderIssuesList() {
|
|
56
|
-
|
|
62
|
+
var _a, _b;
|
|
63
|
+
return (index.h("div", { class: "issues-list" }, this.issues.length === 0 ? (index.h("div", { class: "empty-state" }, index.h("div", { class: "empty-state-content" }, this.renderEmptyStateIllustration(), index.h("h2", { class: "empty-state-title" }, (_a = this.emptyStateTitle) !== null && _a !== void 0 ? _a : 'No updates yet'), index.h("p", { class: "empty-state-message" }, (_b = this.emptyStateMessage) !== null && _b !== void 0 ? _b : 'Check back later for new updates.')))) : (this.issues.map(issue => {
|
|
64
|
+
var _a, _b;
|
|
65
|
+
return (index.h("feedlog-issue", { key: issue.id, issue: issue, issueUrl: (_b = (_a = this.getIssueUrl) === null || _a === void 0 ? void 0 : _a.call(this, issue)) !== null && _b !== void 0 ? _b : undefined, theme: this.currentTheme, onFeedlogUpvote: (e) => this.handleUpvote(e) }));
|
|
66
|
+
}))));
|
|
57
67
|
}
|
|
58
68
|
render() {
|
|
59
69
|
const containerStyle = {
|
|
60
70
|
maxWidth: this.maxWidth,
|
|
61
71
|
};
|
|
62
|
-
return (index.h(index.Host, { key: '
|
|
72
|
+
return (index.h(index.Host, { key: 'fbd1890061b47db8b850a8d993e2ac5432c4b3f6', class: this.currentTheme === 'dark' ? 'dark' : '' }, index.h("div", { key: '5ce9267da314ebb69ed8ee00f28015fdad73ab8a', class: "github-issues-container", style: containerStyle }, (this.heading || this.subtitle) && (index.h("header", { key: '461c707df1e5dc7eaab15462de975fafdce872df', class: "issues-header" }, index.h("div", { key: 'e6972c2f0cfe5630cc73fb41a2103c9b0118179c', class: "header-content" }, this.heading && index.h("h1", { key: 'd74e89c1ad981da6c4287e5b75256bfb831f1172', class: "issues-title" }, this.heading), this.subtitle && index.h("p", { key: 'c820d8e3beaa57c0c193ceaace1d13e94a2a6290', class: "issues-subtitle" }, this.subtitle)))), this.loading && (index.h("div", { key: '959be24cb77b257fba5197302448f78af553817e', class: "loading-state", role: "status", "aria-label": "Loading issues" }, index.h("div", { key: 'e69594f18e3268208634a3ad82cb2ae0bc552c11', class: "loading-skeletons" }, [1, 2, 3].map(i => (index.h("div", { key: i, class: "skeleton-card" }, index.h("div", { class: "skeleton-content" }, index.h("div", { class: "skeleton-header" }, index.h("div", { class: "skeleton-badge" }), index.h("div", { class: "skeleton-timestamp" })), index.h("div", { class: "skeleton-main" }, index.h("div", { class: "skeleton-title" }), index.h("div", { class: "skeleton-body" }, index.h("div", { class: "skeleton-line" }), index.h("div", { class: "skeleton-line short" })), index.h("div", { class: "skeleton-repo" })), index.h("div", { class: "skeleton-footer" }, index.h("div", { class: "skeleton-upvote" }))))))))), this.error && (index.h("div", { key: '93e82b0beca0b96c23803b1abfc3d50fe099fa6a', class: "error-state", role: "alert" }, index.h("div", { key: '9276d85925d02bd4c81d5ee44a5d6a8af986c4c9', class: "error-state-content" }, this.renderErrorIcon(), index.h("h2", { key: '6f5762740f908712a46cddeafae675294d3bcc40', class: "error-state-title" }, "Something went wrong"), index.h("p", { key: 'f1587bd9a2abe250aa730d64498a5105a412d657', class: "error-state-message" }, this.error)))), !this.loading && !this.error && (index.h("div", { key: '22c68553352358a9a408ea763af1e63c9c84eabd' }, this.renderIssuesList(), this.hasMore && (index.h("div", { key: '231ec6f4680b4b114ba72c657f9801d84951a6d6', class: "load-more-container" }, index.h("feedlog-button", { key: '18fa475708fe233f3f9d0ec85bf0f8daea9a4a0a', onFeedlogClick: this.handleLoadMore, disabled: this.isLoadingMore, variant: "outline" }, this.isLoadingMore ? 'Loading...' : 'Load More Issues'))))))));
|
|
63
73
|
}
|
|
64
74
|
};
|
|
65
75
|
FeedlogGithubIssues.style = feedlogGithubIssuesCss();
|
|
@@ -1,13 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DnsqTPII.js');
|
|
4
4
|
|
|
5
|
-
const feedlogIssuesListCss = () => `:host{display:block
|
|
5
|
+
const feedlogIssuesListCss = () => `:host{display:block;--feedlog-muted-foreground:#64748b}:host(.dark){--feedlog-muted-foreground:oklch(0.72 0.02 260)}.issues-list{display:flex;flex-direction:column;gap:0.5rem}.empty-state{text-align:center;padding:3rem 1.5rem;color:var(--feedlog-muted-foreground);font-size:0.875rem}`;
|
|
6
6
|
|
|
7
|
-
/**
|
|
8
|
-
* Heart icon SVG component - renders filled or outline based on prop
|
|
9
|
-
*/
|
|
10
|
-
const HeartIcon = ({ filled }) => (index.h("svg", { class: `upvote-icon ${filled ? 'filled' : 'outline'}`, xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: filled ? 'currentColor' : 'none', stroke: filled ? 'none' : 'currentColor', "stroke-width": filled ? undefined : '2', "stroke-linecap": filled ? undefined : 'round', "stroke-linejoin": filled ? undefined : 'round' }, index.h("path", { d: "M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z" })));
|
|
11
7
|
const FeedlogIssuesList = class {
|
|
12
8
|
constructor(hostRef) {
|
|
13
9
|
index.registerInstance(this, hostRef);
|
|
@@ -20,41 +16,16 @@ const FeedlogIssuesList = class {
|
|
|
20
16
|
* Theme variant: 'light' or 'dark'
|
|
21
17
|
*/
|
|
22
18
|
this.theme = 'light';
|
|
23
|
-
this.handleUpvote = (event
|
|
19
|
+
this.handleUpvote = (event) => {
|
|
24
20
|
event.stopPropagation();
|
|
25
|
-
this.feedlogUpvote.emit(
|
|
26
|
-
issueId: issue.id,
|
|
27
|
-
currentUpvoted: issue.hasUpvoted,
|
|
28
|
-
currentCount: issue.upvoteCount,
|
|
29
|
-
});
|
|
21
|
+
this.feedlogUpvote.emit(event.detail);
|
|
30
22
|
};
|
|
31
23
|
}
|
|
32
|
-
/**
|
|
33
|
-
* Format an ISO date string to a relative time string
|
|
34
|
-
*/
|
|
35
|
-
formatDate(dateString) {
|
|
36
|
-
try {
|
|
37
|
-
const date = new Date(dateString);
|
|
38
|
-
const now = new Date();
|
|
39
|
-
const seconds = Math.floor((now.getTime() - date.getTime()) / 1000);
|
|
40
|
-
if (seconds < 60)
|
|
41
|
-
return 'just now';
|
|
42
|
-
if (seconds < 3600)
|
|
43
|
-
return `${Math.floor(seconds / 60)}m ago`;
|
|
44
|
-
if (seconds < 86400)
|
|
45
|
-
return `${Math.floor(seconds / 3600)}h ago`;
|
|
46
|
-
if (seconds < 604800)
|
|
47
|
-
return `${Math.floor(seconds / 86400)}d ago`;
|
|
48
|
-
if (seconds < 2592000)
|
|
49
|
-
return `${Math.floor(seconds / 604800)}w ago`;
|
|
50
|
-
return date.toLocaleDateString();
|
|
51
|
-
}
|
|
52
|
-
catch (_a) {
|
|
53
|
-
return 'unknown date';
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
24
|
render() {
|
|
57
|
-
return (index.h(index.Host, { key: '
|
|
25
|
+
return (index.h(index.Host, { key: '005de8cf99383128f6973be57d84499c8ca9afd3', class: this.theme === 'dark' ? 'dark' : '' }, index.h("div", { key: '60edc37014f6703b9400dc8bf06726c9a8428a3b', class: "issues-list" }, this.issues.length === 0 ? (index.h("div", { class: "empty-state" }, index.h("p", null, "No issues found"))) : (this.issues.map(issue => {
|
|
26
|
+
var _a, _b;
|
|
27
|
+
return (index.h("feedlog-issue", { key: issue.id, issue: issue, issueUrl: (_b = (_a = this.getIssueUrl) === null || _a === void 0 ? void 0 : _a.call(this, issue)) !== null && _b !== void 0 ? _b : undefined, theme: this.theme, onFeedlogUpvote: (e) => this.handleUpvote(e) }));
|
|
28
|
+
})))));
|
|
58
29
|
}
|
|
59
30
|
};
|
|
60
31
|
FeedlogIssuesList.style = feedlogIssuesListCss();
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var index = require('./index-
|
|
3
|
+
var index = require('./index-DnsqTPII.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-issues-list.cjs",[[1,"feedlog-issues-list",{"issues":[16],"theme":[1]}]]],["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_2.cjs",[[
|
|
21
|
+
return index.bootstrapLazy([["feedlog-issues-list.cjs",[[1,"feedlog-issues-list",{"issues":[16],"theme":[1],"getIssueUrl":[16]}]]],["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_2.cjs",[[257,"feedlog-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1]}],[257,"feedlog-issue",{"issue":[16],"issueUrl":[1,"issue-url"],"theme":[1]}]]],["feedlog-github-issues.cjs",[[1,"feedlog-github-issues",{"issues":[16],"maxWidth":[1,"max-width"],"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],"currentTheme":[32]}]]],["feedlog-github-issues-client.cjs",[[1,"feedlog-github-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;
|
|
@@ -2042,13 +2042,6 @@ var h = (nodeName, vnodeData, ...children) => {
|
|
|
2042
2042
|
}
|
|
2043
2043
|
}
|
|
2044
2044
|
}
|
|
2045
|
-
if (typeof nodeName === "function") {
|
|
2046
|
-
return nodeName(
|
|
2047
|
-
vnodeData === null ? {} : vnodeData,
|
|
2048
|
-
vNodeChildren,
|
|
2049
|
-
vdomFnUtils
|
|
2050
|
-
);
|
|
2051
|
-
}
|
|
2052
2045
|
const vnode = newVNode(nodeName, null);
|
|
2053
2046
|
vnode.$attrs$ = vnodeData;
|
|
2054
2047
|
if (vNodeChildren.length > 0) {
|
|
@@ -2077,36 +2070,6 @@ var newVNode = (tag, text) => {
|
|
|
2077
2070
|
};
|
|
2078
2071
|
var Host = {};
|
|
2079
2072
|
var isHost = (node) => node && node.$tag$ === Host;
|
|
2080
|
-
var vdomFnUtils = {
|
|
2081
|
-
forEach: (children, cb) => children.map(convertToPublic).forEach(cb),
|
|
2082
|
-
map: (children, cb) => children.map(convertToPublic).map(cb).map(convertToPrivate)
|
|
2083
|
-
};
|
|
2084
|
-
var convertToPublic = (node) => ({
|
|
2085
|
-
vattrs: node.$attrs$,
|
|
2086
|
-
vchildren: node.$children$,
|
|
2087
|
-
vkey: node.$key$,
|
|
2088
|
-
vname: node.$name$,
|
|
2089
|
-
vtag: node.$tag$,
|
|
2090
|
-
vtext: node.$text$
|
|
2091
|
-
});
|
|
2092
|
-
var convertToPrivate = (node) => {
|
|
2093
|
-
if (typeof node.vtag === "function") {
|
|
2094
|
-
const vnodeData = { ...node.vattrs };
|
|
2095
|
-
if (node.vkey) {
|
|
2096
|
-
vnodeData.key = node.vkey;
|
|
2097
|
-
}
|
|
2098
|
-
if (node.vname) {
|
|
2099
|
-
vnodeData.name = node.vname;
|
|
2100
|
-
}
|
|
2101
|
-
return h(node.vtag, vnodeData, ...node.vchildren || []);
|
|
2102
|
-
}
|
|
2103
|
-
const vnode = newVNode(node.vtag, node.vtext);
|
|
2104
|
-
vnode.$attrs$ = node.vattrs;
|
|
2105
|
-
vnode.$children$ = node.vchildren;
|
|
2106
|
-
vnode.$key$ = node.vkey;
|
|
2107
|
-
vnode.$name$ = node.vname;
|
|
2108
|
-
return vnode;
|
|
2109
|
-
};
|
|
2110
2073
|
var createSupportsRuleRe = (selector) => {
|
|
2111
2074
|
const safeSelector2 = escapeRegExpSpecialCharacters(selector);
|
|
2112
2075
|
return new RegExp(
|
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-DnsqTPII.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-issues-list.cjs",[[1,"feedlog-issues-list",{"issues":[16],"theme":[1]}]]],["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_2.cjs",[[
|
|
8
|
+
return index.bootstrapLazy([["feedlog-issues-list.cjs",[[1,"feedlog-issues-list",{"issues":[16],"theme":[1],"getIssueUrl":[16]}]]],["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge.cjs",[[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-button_2.cjs",[[257,"feedlog-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1]}],[257,"feedlog-issue",{"issue":[16],"issueUrl":[1,"issue-url"],"theme":[1]}]]],["feedlog-github-issues.cjs",[[1,"feedlog-github-issues",{"issues":[16],"maxWidth":[1,"max-width"],"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],"currentTheme":[32]}]]],["feedlog-github-issues-client.cjs",[[1,"feedlog-github-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;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
:host {
|
|
2
2
|
display: inline-block;
|
|
3
|
-
|
|
3
|
+
|
|
4
4
|
/* Light theme defaults */
|
|
5
5
|
--feedlog-badge-font-size: 0.75rem;
|
|
6
6
|
--feedlog-badge-font-weight: 500;
|
|
7
7
|
--feedlog-badge-padding-x: 0.5rem;
|
|
8
8
|
--feedlog-badge-padding-y: 0.125rem;
|
|
9
9
|
--feedlog-badge-border-radius: calc(0.625rem - 2px);
|
|
10
|
-
|
|
10
|
+
|
|
11
11
|
/* Default/Enhancement variant colors */
|
|
12
12
|
--feedlog-blue-500: oklch(0.623 0.214 259.815);
|
|
13
13
|
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
14
14
|
--feedlog-blue-700: oklch(0.488 0.243 264.376);
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
/* Destructive variant colors */
|
|
17
17
|
--feedlog-destructive: #d4183d;
|
|
18
18
|
--feedlog-destructive-hover: #b91c1c;
|
|
@@ -30,6 +30,7 @@
|
|
|
30
30
|
display: inline-flex;
|
|
31
31
|
align-items: center;
|
|
32
32
|
justify-content: center;
|
|
33
|
+
gap: 0.25rem;
|
|
33
34
|
font-size: var(--feedlog-badge-font-size);
|
|
34
35
|
font-weight: var(--feedlog-badge-font-weight);
|
|
35
36
|
padding: var(--feedlog-badge-padding-y) var(--feedlog-badge-padding-x);
|
|
@@ -84,3 +85,14 @@
|
|
|
84
85
|
.badge-destructive:hover {
|
|
85
86
|
background-color: var(--feedlog-destructive-hover);
|
|
86
87
|
}
|
|
88
|
+
|
|
89
|
+
/* Secondary variant - muted styling for status badges */
|
|
90
|
+
.badge-secondary {
|
|
91
|
+
background-color: var(--feedlog-muted, #f1f5f9);
|
|
92
|
+
color: var(--feedlog-muted-foreground, #64748b);
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
:host(.dark) .badge-secondary {
|
|
96
|
+
background-color: var(--feedlog-muted, oklch(0.32 0.01 260));
|
|
97
|
+
color: var(--feedlog-muted-foreground, oklch(0.72 0.02 260));
|
|
98
|
+
}
|
|
@@ -12,7 +12,7 @@ export class FeedlogBadge {
|
|
|
12
12
|
this.variant = 'default';
|
|
13
13
|
}
|
|
14
14
|
render() {
|
|
15
|
-
return (h("span", { key: '
|
|
15
|
+
return (h("span", { key: '22e5d49e033459b4e3e409ffa0e76641457ad740', class: `badge badge-${this.variant}` }, h("slot", { key: '8f986c5150aa39034f090a258231e45363f9cac9' })));
|
|
16
16
|
}
|
|
17
17
|
static get is() { return "feedlog-badge"; }
|
|
18
18
|
static get encapsulation() { return "shadow"; }
|
|
@@ -32,8 +32,8 @@ export class FeedlogBadge {
|
|
|
32
32
|
"type": "string",
|
|
33
33
|
"mutable": false,
|
|
34
34
|
"complexType": {
|
|
35
|
-
"original": "'default' | 'destructive' | 'enhancement'",
|
|
36
|
-
"resolved": "\"default\" | \"destructive\" | \"enhancement\"",
|
|
35
|
+
"original": "'default' | 'destructive' | 'enhancement' | 'secondary'",
|
|
36
|
+
"resolved": "\"default\" | \"destructive\" | \"enhancement\" | \"secondary\"",
|
|
37
37
|
"references": {}
|
|
38
38
|
},
|
|
39
39
|
"required": false,
|