@feedlog-ai/webcomponents 0.0.1
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/dist/cjs/feedlog-badge_3.cjs.entry.js +119 -0
- package/dist/cjs/feedlog-card.cjs.entry.js +17 -0
- package/dist/cjs/feedlog-github-issues-client.cjs.entry.js +520 -0
- package/dist/cjs/feedlog-github-issues.cjs.entry.js +81 -0
- package/dist/cjs/feedlog-toolkit.cjs.js +24 -0
- package/dist/cjs/index-5lluu_3h.js +3144 -0
- package/dist/cjs/index.cjs.js +2 -0
- package/dist/cjs/loader.cjs.js +12 -0
- package/dist/collection/collection-manifest.json +17 -0
- package/dist/collection/components/feedlog-badge/feedlog-badge.css +86 -0
- package/dist/collection/components/feedlog-badge/feedlog-badge.js +53 -0
- package/dist/collection/components/feedlog-badge/feedlog-badge.stories.js +38 -0
- package/dist/collection/components/feedlog-button/feedlog-button.css +155 -0
- package/dist/collection/components/feedlog-button/feedlog-button.js +154 -0
- package/dist/collection/components/feedlog-button/feedlog-button.stories.js +82 -0
- package/dist/collection/components/feedlog-card/feedlog-card.css +47 -0
- package/dist/collection/components/feedlog-card/feedlog-card.js +23 -0
- package/dist/collection/components/feedlog-card/feedlog-card.stories.js +22 -0
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.css +69 -0
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.js +308 -0
- package/dist/collection/components/feedlog-github-issues/feedlog-github-issues.stories.js +211 -0
- package/dist/collection/components/feedlog-github-issues-client/feedlog-github-issues-client.js +395 -0
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.css +218 -0
- package/dist/collection/components/feedlog-issues-list/feedlog-issues-list.js +139 -0
- package/dist/collection/components/index.js +6 -0
- package/dist/collection/index.js +1 -0
- package/dist/components/feedlog-badge.d.ts +11 -0
- package/dist/components/feedlog-badge.js +1 -0
- package/dist/components/feedlog-button.d.ts +11 -0
- package/dist/components/feedlog-button.js +1 -0
- package/dist/components/feedlog-card.d.ts +11 -0
- package/dist/components/feedlog-card.js +1 -0
- package/dist/components/feedlog-github-issues-client.d.ts +11 -0
- package/dist/components/feedlog-github-issues-client.js +1 -0
- package/dist/components/feedlog-github-issues.d.ts +11 -0
- package/dist/components/feedlog-github-issues.js +1 -0
- package/dist/components/feedlog-issues-list.d.ts +11 -0
- package/dist/components/feedlog-issues-list.js +1 -0
- package/dist/components/index.d.ts +35 -0
- package/dist/components/index.js +1 -0
- package/dist/components/p-CHtSMTyP.js +1 -0
- package/dist/components/p-CPOiBAxu.js +1 -0
- package/dist/components/p-DMcNh5Ys.js +1 -0
- package/dist/components/p-DMdb-G26.js +1 -0
- package/dist/esm/feedlog-badge_3.entry.js +115 -0
- package/dist/esm/feedlog-card.entry.js +15 -0
- package/dist/esm/feedlog-github-issues-client.entry.js +518 -0
- package/dist/esm/feedlog-github-issues.entry.js +79 -0
- package/dist/esm/feedlog-toolkit.js +20 -0
- package/dist/esm/index-CkB6Yzeb.js +3135 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/loader.js +10 -0
- package/dist/feedlog-toolkit/feedlog-toolkit.css +1 -0
- package/dist/feedlog-toolkit/feedlog-toolkit.esm.js +1 -0
- package/dist/feedlog-toolkit/index.esm.js +0 -0
- package/dist/feedlog-toolkit/p-2f7954f7.entry.js +1 -0
- package/dist/feedlog-toolkit/p-399e0281.entry.js +1 -0
- package/dist/feedlog-toolkit/p-CkB6Yzeb.js +2 -0
- package/dist/feedlog-toolkit/p-b3d26272.entry.js +1 -0
- package/dist/feedlog-toolkit/p-cdb2b098.entry.js +1 -0
- package/dist/index.cjs.js +1 -0
- package/dist/index.js +1 -0
- package/dist/types/components/feedlog-badge/feedlog-badge.d.ts +12 -0
- package/dist/types/components/feedlog-badge/feedlog-badge.stories.d.ts +9 -0
- package/dist/types/components/feedlog-button/feedlog-button.d.ts +30 -0
- package/dist/types/components/feedlog-button/feedlog-button.stories.d.ts +13 -0
- package/dist/types/components/feedlog-card/feedlog-card.d.ts +8 -0
- package/dist/types/components/feedlog-card/feedlog-card.stories.d.ts +9 -0
- package/dist/types/components/feedlog-github-issues/feedlog-github-issues.d.ts +67 -0
- package/dist/types/components/feedlog-github-issues/feedlog-github-issues.stories.d.ts +11 -0
- package/dist/types/components/feedlog-github-issues-client/feedlog-github-issues-client.d.ts +77 -0
- package/dist/types/components/feedlog-issues-list/feedlog-issues-list.d.ts +31 -0
- package/dist/types/components/index.d.ts +6 -0
- package/dist/types/components.d.ts +532 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/stencil-public-runtime.d.ts +1810 -0
- package/loader/cdn.js +1 -0
- package/loader/index.cjs.js +1 -0
- package/loader/index.d.ts +24 -0
- package/loader/index.es2017.js +1 -0
- package/loader/index.js +2 -0
- package/package.json +48 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { FeedlogCard } from "./feedlog-card";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Components/Card',
|
|
5
|
+
component: FeedlogCard,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: 'centered',
|
|
8
|
+
},
|
|
9
|
+
};
|
|
10
|
+
export default meta;
|
|
11
|
+
export const Default = {
|
|
12
|
+
render: () => (h("feedlog-card", { style: { width: '400px' } }, h("div", { slot: "header" }, h("h3", { style: { margin: '0 0 0.5rem 0' } }, "Card Title")), h("div", { slot: "content" }, h("p", { style: { margin: '0', color: '#666' } }, "This is the card content. You can put any content here.")))),
|
|
13
|
+
};
|
|
14
|
+
export const WithFooter = {
|
|
15
|
+
render: () => (h("feedlog-card", { style: { width: '400px' } }, h("div", { slot: "header" }, h("h3", { style: { margin: '0 0 0.5rem 0' } }, "Card with Footer")), h("div", { slot: "content" }, h("p", { style: { margin: '0', color: '#666' } }, "This card has a header, content, and footer section.")), h("div", { slot: "footer", style: { display: 'flex', gap: '0.5rem', justifyContent: 'flex-end' } }, h("feedlog-button", { variant: "ghost" }, "Cancel"), h("feedlog-button", null, "Save")))),
|
|
16
|
+
};
|
|
17
|
+
export const HeaderOnly = {
|
|
18
|
+
render: () => (h("feedlog-card", { style: { width: '400px' } }, h("div", { slot: "header" }, h("h3", { style: { margin: '0' } }, "Simple Header Card"), h("p", { style: { margin: '0.5rem 0 0 0', color: '#666', fontSize: '0.875rem' } }, "This card only uses the header slot.")))),
|
|
19
|
+
};
|
|
20
|
+
export const IssueCard = {
|
|
21
|
+
render: () => (h("feedlog-card", { style: { width: '500px' } }, h("div", { slot: "header", style: { display: 'flex', alignItems: 'flex-start', gap: '1rem' } }, h("feedlog-button", { variant: "outline", size: "sm" }, "\uD83D\uDC4D 12"), h("div", null, h("div", { style: { display: 'flex', alignItems: 'center', gap: '0.5rem', marginBottom: '0.5rem' } }, h("h3", { style: { margin: '0' } }, "Add dark mode support"), h("feedlog-badge", null, "Enhancement")), h("p", { style: { margin: '0', color: '#666', fontSize: '0.875rem' } }, "It would be great to have a dark mode option for the dashboard."))))),
|
|
22
|
+
};
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: block;
|
|
3
|
+
font-family: ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, 'Liberation Mono', monospace;
|
|
4
|
+
|
|
5
|
+
/* Light theme defaults */
|
|
6
|
+
--feedlog-background: #ffffff;
|
|
7
|
+
--feedlog-foreground: oklch(0.145 0 0);
|
|
8
|
+
--feedlog-muted-foreground: #717182;
|
|
9
|
+
--feedlog-destructive: #d4183d;
|
|
10
|
+
--feedlog-padding: 2rem;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
:host(.dark) {
|
|
14
|
+
/* Dark theme values */
|
|
15
|
+
--feedlog-background: oklch(0.145 0 0);
|
|
16
|
+
--feedlog-foreground: oklch(0.985 0 0);
|
|
17
|
+
--feedlog-muted-foreground: oklch(0.708 0 0);
|
|
18
|
+
--feedlog-destructive: oklch(0.637 0.237 25.331);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
.github-issues-container {
|
|
22
|
+
min-height: 100vh;
|
|
23
|
+
background-color: var(--feedlog-background);
|
|
24
|
+
padding: var(--feedlog-padding);
|
|
25
|
+
margin: 0 auto;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
.issues-header {
|
|
29
|
+
margin-bottom: 1.5rem;
|
|
30
|
+
display: flex;
|
|
31
|
+
align-items: flex-start;
|
|
32
|
+
justify-content: space-between;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.header-content {
|
|
36
|
+
flex: 1;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.issues-title {
|
|
40
|
+
color: var(--feedlog-foreground);
|
|
41
|
+
margin: 0 0 0.25rem 0;
|
|
42
|
+
font-size: 1.5rem;
|
|
43
|
+
font-weight: 500;
|
|
44
|
+
line-height: 1.5;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.issues-subtitle {
|
|
48
|
+
color: var(--feedlog-muted-foreground);
|
|
49
|
+
font-size: 0.875rem;
|
|
50
|
+
margin: 0;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
.loading-state,
|
|
54
|
+
.error-state {
|
|
55
|
+
padding: 2rem;
|
|
56
|
+
text-align: center;
|
|
57
|
+
color: var(--feedlog-muted-foreground);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
.error-state {
|
|
61
|
+
color: var(--feedlog-destructive);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
.load-more-container {
|
|
65
|
+
display: flex;
|
|
66
|
+
justify-content: center;
|
|
67
|
+
padding: 2rem 0;
|
|
68
|
+
gap: 1rem;
|
|
69
|
+
}
|
|
@@ -0,0 +1,308 @@
|
|
|
1
|
+
import { h, Host } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Sun icon SVG component
|
|
4
|
+
*/
|
|
5
|
+
const SunIcon = () => (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("circle", { cx: "12", cy: "12", r: "4" }), h("path", { d: "M12 2v2" }), h("path", { d: "M12 20v2" }), h("path", { d: "m4.93 4.93 1.41 1.41" }), h("path", { d: "m17.66 17.66 1.41 1.41" }), h("path", { d: "M2 12h2" }), h("path", { d: "M20 12h2" }), h("path", { d: "m6.34 17.66-1.41 1.41" }), h("path", { d: "m19.07 4.93-1.41 1.41" })));
|
|
6
|
+
/**
|
|
7
|
+
* Moon icon SVG component
|
|
8
|
+
*/
|
|
9
|
+
const MoonIcon = () => (h("svg", { xmlns: "http://www.w3.org/2000/svg", width: "16", height: "16", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", "stroke-width": "2", "stroke-linecap": "round", "stroke-linejoin": "round" }, h("path", { d: "M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z" })));
|
|
10
|
+
/**
|
|
11
|
+
* Feedlog GitHub Issues Component
|
|
12
|
+
*
|
|
13
|
+
* Component for displaying GitHub issues with support for bugs and enhancements.
|
|
14
|
+
* This component handles the UI rendering and delegates to feedlog-issues-list for the actual list.
|
|
15
|
+
*/
|
|
16
|
+
export class FeedlogGithubIssues {
|
|
17
|
+
constructor() {
|
|
18
|
+
/**
|
|
19
|
+
* Array of issues to display
|
|
20
|
+
*/
|
|
21
|
+
this.issues = [];
|
|
22
|
+
/**
|
|
23
|
+
* Maximum width of the container
|
|
24
|
+
*/
|
|
25
|
+
this.maxWidth = '42rem';
|
|
26
|
+
/**
|
|
27
|
+
* Theme variant: 'light' or 'dark'
|
|
28
|
+
*/
|
|
29
|
+
this.theme = 'light';
|
|
30
|
+
/**
|
|
31
|
+
* Loading state - shows loading indicator when true
|
|
32
|
+
*/
|
|
33
|
+
this.loading = false;
|
|
34
|
+
/**
|
|
35
|
+
* Error message - shows error state when set
|
|
36
|
+
*/
|
|
37
|
+
this.error = null;
|
|
38
|
+
/**
|
|
39
|
+
* Whether to show the theme toggle button
|
|
40
|
+
*/
|
|
41
|
+
this.showThemeToggle = true;
|
|
42
|
+
/**
|
|
43
|
+
* Whether there are more issues to load
|
|
44
|
+
*/
|
|
45
|
+
this.hasMore = false;
|
|
46
|
+
/**
|
|
47
|
+
* Whether more issues are currently loading
|
|
48
|
+
*/
|
|
49
|
+
this.isLoadingMore = false;
|
|
50
|
+
/**
|
|
51
|
+
* Internal state for theme
|
|
52
|
+
*/
|
|
53
|
+
this.currentTheme = 'light';
|
|
54
|
+
this.handleUpvote = (event) => {
|
|
55
|
+
this.feedlogUpvote.emit(event.detail);
|
|
56
|
+
};
|
|
57
|
+
this.toggleTheme = () => {
|
|
58
|
+
this.currentTheme = this.currentTheme === 'dark' ? 'light' : 'dark';
|
|
59
|
+
this.theme = this.currentTheme;
|
|
60
|
+
this.feedlogThemeChange.emit(this.currentTheme);
|
|
61
|
+
};
|
|
62
|
+
this.handleLoadMore = () => {
|
|
63
|
+
this.feedlogLoadMore.emit();
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
componentWillLoad() {
|
|
67
|
+
this.currentTheme = this.theme;
|
|
68
|
+
}
|
|
69
|
+
render() {
|
|
70
|
+
const containerStyle = {
|
|
71
|
+
maxWidth: this.maxWidth,
|
|
72
|
+
};
|
|
73
|
+
return (h(Host, { key: '8f238ab41f45799062270c84188596d770d6bde0', class: this.currentTheme === 'dark' ? 'dark' : '' }, h("div", { key: 'af0c2155ef3cdc12f228ec804ee906afd7d75477', class: "github-issues-container", style: containerStyle }, h("header", { key: 'ccf9a063df220f7a48e3600cb22df8203960a45b', class: "issues-header" }, h("div", { key: 'c261d6b0c8168a66faef9ec2fb381619f5175070', class: "header-content" }, h("h1", { key: '19203aa63dab0648b0a2865fe812233bfbbc225a', class: "issues-title" }, "GitHub Issues"), h("p", { key: 'e717a4e64cc747c81ad7a9e1cec234c247bfc329', class: "issues-subtitle" }, "Track bugs and enhancements for your project")), this.showThemeToggle && (h("feedlog-button", { key: '21057c7d384c53262e699e0384234077b0b36314', variant: "outline", size: "sm", onFeedlogClick: this.toggleTheme }, this.currentTheme === 'dark' ? h(SunIcon, null) : h(MoonIcon, null)))), this.loading && (h("div", { key: '2059c491247e0a48a81d802d9757d9fa97ac1a72', class: "loading-state" }, h("p", { key: '5654904e73b05bd5a05aa0243506e4bf074e5486' }, "Loading issues..."))), this.error && (h("div", { key: '7d2e09e0055e5d834aa870ed47bd4ebaba64dff1', class: "error-state" }, h("p", { key: 'd4cc2bb872c81234b4e81a4ec4ce21aff368ad74' }, "Error: ", this.error))), !this.loading && !this.error && (h("div", { key: 'e25eb90f7098416837a26a44e5811888530220a4' }, h("feedlog-issues-list", { key: 'a8e7ec5c5861cb31456738107b93f6e7adebbbe9', issues: this.issues, theme: this.currentTheme, onFeedlogUpvote: this.handleUpvote }), this.hasMore && (h("div", { key: '0d935e9247f44bff0700fce487d0bc4ccd104f2a', class: "load-more-container" }, h("feedlog-button", { key: '2858d701f5e3d219c39a6a28a7475c619464bc72', onFeedlogClick: this.handleLoadMore, disabled: this.isLoadingMore, variant: "outline" }, this.isLoadingMore ? 'Loading...' : 'Load More Issues'))))))));
|
|
74
|
+
}
|
|
75
|
+
static get is() { return "feedlog-github-issues"; }
|
|
76
|
+
static get encapsulation() { return "shadow"; }
|
|
77
|
+
static get originalStyleUrls() {
|
|
78
|
+
return {
|
|
79
|
+
"$": ["feedlog-github-issues.css"]
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
static get styleUrls() {
|
|
83
|
+
return {
|
|
84
|
+
"$": ["feedlog-github-issues.css"]
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
static get properties() {
|
|
88
|
+
return {
|
|
89
|
+
"issues": {
|
|
90
|
+
"type": "unknown",
|
|
91
|
+
"mutable": false,
|
|
92
|
+
"complexType": {
|
|
93
|
+
"original": "FeedlogIssue[]",
|
|
94
|
+
"resolved": "FeedlogIssue[]",
|
|
95
|
+
"references": {
|
|
96
|
+
"FeedlogIssue": {
|
|
97
|
+
"location": "import",
|
|
98
|
+
"path": "@feedlog-ai/core",
|
|
99
|
+
"id": "../core/dist/index.d.ts::FeedlogIssue"
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
},
|
|
103
|
+
"required": false,
|
|
104
|
+
"optional": false,
|
|
105
|
+
"docs": {
|
|
106
|
+
"tags": [],
|
|
107
|
+
"text": "Array of issues to display"
|
|
108
|
+
},
|
|
109
|
+
"getter": false,
|
|
110
|
+
"setter": false,
|
|
111
|
+
"defaultValue": "[]"
|
|
112
|
+
},
|
|
113
|
+
"maxWidth": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"mutable": false,
|
|
116
|
+
"complexType": {
|
|
117
|
+
"original": "string",
|
|
118
|
+
"resolved": "string",
|
|
119
|
+
"references": {}
|
|
120
|
+
},
|
|
121
|
+
"required": false,
|
|
122
|
+
"optional": false,
|
|
123
|
+
"docs": {
|
|
124
|
+
"tags": [],
|
|
125
|
+
"text": "Maximum width of the container"
|
|
126
|
+
},
|
|
127
|
+
"getter": false,
|
|
128
|
+
"setter": false,
|
|
129
|
+
"reflect": false,
|
|
130
|
+
"attribute": "max-width",
|
|
131
|
+
"defaultValue": "'42rem'"
|
|
132
|
+
},
|
|
133
|
+
"theme": {
|
|
134
|
+
"type": "string",
|
|
135
|
+
"mutable": true,
|
|
136
|
+
"complexType": {
|
|
137
|
+
"original": "'light' | 'dark'",
|
|
138
|
+
"resolved": "\"dark\" | \"light\"",
|
|
139
|
+
"references": {}
|
|
140
|
+
},
|
|
141
|
+
"required": false,
|
|
142
|
+
"optional": false,
|
|
143
|
+
"docs": {
|
|
144
|
+
"tags": [],
|
|
145
|
+
"text": "Theme variant: 'light' or 'dark'"
|
|
146
|
+
},
|
|
147
|
+
"getter": false,
|
|
148
|
+
"setter": false,
|
|
149
|
+
"reflect": false,
|
|
150
|
+
"attribute": "theme",
|
|
151
|
+
"defaultValue": "'light'"
|
|
152
|
+
},
|
|
153
|
+
"loading": {
|
|
154
|
+
"type": "boolean",
|
|
155
|
+
"mutable": false,
|
|
156
|
+
"complexType": {
|
|
157
|
+
"original": "boolean",
|
|
158
|
+
"resolved": "boolean",
|
|
159
|
+
"references": {}
|
|
160
|
+
},
|
|
161
|
+
"required": false,
|
|
162
|
+
"optional": false,
|
|
163
|
+
"docs": {
|
|
164
|
+
"tags": [],
|
|
165
|
+
"text": "Loading state - shows loading indicator when true"
|
|
166
|
+
},
|
|
167
|
+
"getter": false,
|
|
168
|
+
"setter": false,
|
|
169
|
+
"reflect": false,
|
|
170
|
+
"attribute": "loading",
|
|
171
|
+
"defaultValue": "false"
|
|
172
|
+
},
|
|
173
|
+
"error": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"mutable": false,
|
|
176
|
+
"complexType": {
|
|
177
|
+
"original": "string | null",
|
|
178
|
+
"resolved": "null | string",
|
|
179
|
+
"references": {}
|
|
180
|
+
},
|
|
181
|
+
"required": false,
|
|
182
|
+
"optional": false,
|
|
183
|
+
"docs": {
|
|
184
|
+
"tags": [],
|
|
185
|
+
"text": "Error message - shows error state when set"
|
|
186
|
+
},
|
|
187
|
+
"getter": false,
|
|
188
|
+
"setter": false,
|
|
189
|
+
"reflect": false,
|
|
190
|
+
"attribute": "error",
|
|
191
|
+
"defaultValue": "null"
|
|
192
|
+
},
|
|
193
|
+
"showThemeToggle": {
|
|
194
|
+
"type": "boolean",
|
|
195
|
+
"mutable": false,
|
|
196
|
+
"complexType": {
|
|
197
|
+
"original": "boolean",
|
|
198
|
+
"resolved": "boolean",
|
|
199
|
+
"references": {}
|
|
200
|
+
},
|
|
201
|
+
"required": false,
|
|
202
|
+
"optional": false,
|
|
203
|
+
"docs": {
|
|
204
|
+
"tags": [],
|
|
205
|
+
"text": "Whether to show the theme toggle button"
|
|
206
|
+
},
|
|
207
|
+
"getter": false,
|
|
208
|
+
"setter": false,
|
|
209
|
+
"reflect": false,
|
|
210
|
+
"attribute": "show-theme-toggle",
|
|
211
|
+
"defaultValue": "true"
|
|
212
|
+
},
|
|
213
|
+
"hasMore": {
|
|
214
|
+
"type": "boolean",
|
|
215
|
+
"mutable": false,
|
|
216
|
+
"complexType": {
|
|
217
|
+
"original": "boolean",
|
|
218
|
+
"resolved": "boolean",
|
|
219
|
+
"references": {}
|
|
220
|
+
},
|
|
221
|
+
"required": false,
|
|
222
|
+
"optional": false,
|
|
223
|
+
"docs": {
|
|
224
|
+
"tags": [],
|
|
225
|
+
"text": "Whether there are more issues to load"
|
|
226
|
+
},
|
|
227
|
+
"getter": false,
|
|
228
|
+
"setter": false,
|
|
229
|
+
"reflect": false,
|
|
230
|
+
"attribute": "has-more",
|
|
231
|
+
"defaultValue": "false"
|
|
232
|
+
},
|
|
233
|
+
"isLoadingMore": {
|
|
234
|
+
"type": "boolean",
|
|
235
|
+
"mutable": false,
|
|
236
|
+
"complexType": {
|
|
237
|
+
"original": "boolean",
|
|
238
|
+
"resolved": "boolean",
|
|
239
|
+
"references": {}
|
|
240
|
+
},
|
|
241
|
+
"required": false,
|
|
242
|
+
"optional": false,
|
|
243
|
+
"docs": {
|
|
244
|
+
"tags": [],
|
|
245
|
+
"text": "Whether more issues are currently loading"
|
|
246
|
+
},
|
|
247
|
+
"getter": false,
|
|
248
|
+
"setter": false,
|
|
249
|
+
"reflect": false,
|
|
250
|
+
"attribute": "is-loading-more",
|
|
251
|
+
"defaultValue": "false"
|
|
252
|
+
}
|
|
253
|
+
};
|
|
254
|
+
}
|
|
255
|
+
static get states() {
|
|
256
|
+
return {
|
|
257
|
+
"currentTheme": {}
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
static get events() {
|
|
261
|
+
return [{
|
|
262
|
+
"method": "feedlogUpvote",
|
|
263
|
+
"name": "feedlogUpvote",
|
|
264
|
+
"bubbles": true,
|
|
265
|
+
"cancelable": true,
|
|
266
|
+
"composed": true,
|
|
267
|
+
"docs": {
|
|
268
|
+
"tags": [],
|
|
269
|
+
"text": "Event emitted when an issue is upvoted"
|
|
270
|
+
},
|
|
271
|
+
"complexType": {
|
|
272
|
+
"original": "{\n issueId: string;\n currentUpvoted: boolean;\n currentCount: number;\n }",
|
|
273
|
+
"resolved": "{ issueId: string; currentUpvoted: boolean; currentCount: number; }",
|
|
274
|
+
"references": {}
|
|
275
|
+
}
|
|
276
|
+
}, {
|
|
277
|
+
"method": "feedlogThemeChange",
|
|
278
|
+
"name": "feedlogThemeChange",
|
|
279
|
+
"bubbles": true,
|
|
280
|
+
"cancelable": true,
|
|
281
|
+
"composed": true,
|
|
282
|
+
"docs": {
|
|
283
|
+
"tags": [],
|
|
284
|
+
"text": "Event emitted when theme changes"
|
|
285
|
+
},
|
|
286
|
+
"complexType": {
|
|
287
|
+
"original": "'light' | 'dark'",
|
|
288
|
+
"resolved": "\"dark\" | \"light\"",
|
|
289
|
+
"references": {}
|
|
290
|
+
}
|
|
291
|
+
}, {
|
|
292
|
+
"method": "feedlogLoadMore",
|
|
293
|
+
"name": "feedlogLoadMore",
|
|
294
|
+
"bubbles": true,
|
|
295
|
+
"cancelable": true,
|
|
296
|
+
"composed": true,
|
|
297
|
+
"docs": {
|
|
298
|
+
"tags": [],
|
|
299
|
+
"text": "Event emitted to load more issues"
|
|
300
|
+
},
|
|
301
|
+
"complexType": {
|
|
302
|
+
"original": "void",
|
|
303
|
+
"resolved": "void",
|
|
304
|
+
"references": {}
|
|
305
|
+
}
|
|
306
|
+
}];
|
|
307
|
+
}
|
|
308
|
+
}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { FeedlogGithubIssues } from "./feedlog-github-issues";
|
|
3
|
+
const sampleIssues = [
|
|
4
|
+
{
|
|
5
|
+
id: 'issue-1',
|
|
6
|
+
title: 'Add dark mode support',
|
|
7
|
+
body: 'It would be great to have a dark mode option for the dashboard.',
|
|
8
|
+
type: 'enhancement',
|
|
9
|
+
status: 'open',
|
|
10
|
+
pinnedAt: null,
|
|
11
|
+
revision: 1,
|
|
12
|
+
repository: {
|
|
13
|
+
id: 'repo-1',
|
|
14
|
+
name: 'feedlog-toolkit',
|
|
15
|
+
owner: 'feedlog',
|
|
16
|
+
},
|
|
17
|
+
updatedAt: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(), // 2 hours ago
|
|
18
|
+
createdAt: new Date(Date.now() - 2 * 60 * 60 * 1000).toISOString(),
|
|
19
|
+
upvoteCount: 24,
|
|
20
|
+
hasUpvoted: false,
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: 'issue-2',
|
|
24
|
+
title: 'Charts not rendering on mobile',
|
|
25
|
+
body: 'The chart components are not properly responsive on smaller screens.',
|
|
26
|
+
type: 'bug',
|
|
27
|
+
status: 'open',
|
|
28
|
+
pinnedAt: null,
|
|
29
|
+
revision: 1,
|
|
30
|
+
repository: {
|
|
31
|
+
id: 'repo-1',
|
|
32
|
+
name: 'feedlog-toolkit',
|
|
33
|
+
owner: 'feedlog',
|
|
34
|
+
},
|
|
35
|
+
updatedAt: new Date(Date.now() - 5 * 60 * 60 * 1000).toISOString(), // 5 hours ago
|
|
36
|
+
createdAt: new Date(Date.now() - 5 * 60 * 60 * 1000).toISOString(),
|
|
37
|
+
upvoteCount: 0,
|
|
38
|
+
hasUpvoted: false,
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
id: 'issue-3',
|
|
42
|
+
title: 'Export data to CSV',
|
|
43
|
+
body: 'Add functionality to export chart data as CSV files.',
|
|
44
|
+
type: 'enhancement',
|
|
45
|
+
status: 'open',
|
|
46
|
+
pinnedAt: null,
|
|
47
|
+
revision: 1,
|
|
48
|
+
repository: {
|
|
49
|
+
id: 'repo-1',
|
|
50
|
+
name: 'feedlog-toolkit',
|
|
51
|
+
owner: 'feedlog',
|
|
52
|
+
},
|
|
53
|
+
updatedAt: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(), // 1 day ago
|
|
54
|
+
createdAt: new Date(Date.now() - 24 * 60 * 60 * 1000).toISOString(),
|
|
55
|
+
upvoteCount: 15,
|
|
56
|
+
hasUpvoted: false,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
id: 'issue-4',
|
|
60
|
+
title: 'Memory leak in real-time updates',
|
|
61
|
+
body: 'When leaving the dashboard open for extended periods, memory usage increases significantly.',
|
|
62
|
+
type: 'bug',
|
|
63
|
+
status: 'open',
|
|
64
|
+
pinnedAt: null,
|
|
65
|
+
revision: 1,
|
|
66
|
+
repository: {
|
|
67
|
+
id: 'repo-1',
|
|
68
|
+
name: 'feedlog-toolkit',
|
|
69
|
+
owner: 'feedlog',
|
|
70
|
+
},
|
|
71
|
+
updatedAt: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(), // 2 days ago
|
|
72
|
+
createdAt: new Date(Date.now() - 2 * 24 * 60 * 60 * 1000).toISOString(),
|
|
73
|
+
upvoteCount: 0,
|
|
74
|
+
hasUpvoted: false,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
id: 'issue-5',
|
|
78
|
+
title: 'Custom color themes',
|
|
79
|
+
body: 'Allow users to customize the color palette for charts and UI elements.',
|
|
80
|
+
type: 'enhancement',
|
|
81
|
+
status: 'open',
|
|
82
|
+
pinnedAt: null,
|
|
83
|
+
revision: 1,
|
|
84
|
+
repository: {
|
|
85
|
+
id: 'repo-1',
|
|
86
|
+
name: 'feedlog-toolkit',
|
|
87
|
+
owner: 'feedlog',
|
|
88
|
+
},
|
|
89
|
+
updatedAt: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(), // 1 week ago
|
|
90
|
+
createdAt: new Date(Date.now() - 7 * 24 * 60 * 60 * 1000).toISOString(),
|
|
91
|
+
upvoteCount: 8,
|
|
92
|
+
hasUpvoted: false,
|
|
93
|
+
},
|
|
94
|
+
];
|
|
95
|
+
const meta = {
|
|
96
|
+
title: 'Components/GitHub Issues',
|
|
97
|
+
component: FeedlogGithubIssues,
|
|
98
|
+
parameters: {
|
|
99
|
+
layout: 'padded',
|
|
100
|
+
},
|
|
101
|
+
argTypes: {
|
|
102
|
+
issues: {
|
|
103
|
+
control: 'object',
|
|
104
|
+
description: 'Array of GitHub issues to display',
|
|
105
|
+
},
|
|
106
|
+
maxWidth: {
|
|
107
|
+
control: 'text',
|
|
108
|
+
description: 'Maximum width of the container',
|
|
109
|
+
},
|
|
110
|
+
theme: {
|
|
111
|
+
control: 'select',
|
|
112
|
+
options: ['light', 'dark'],
|
|
113
|
+
description: 'Theme variant',
|
|
114
|
+
},
|
|
115
|
+
loading: {
|
|
116
|
+
control: 'boolean',
|
|
117
|
+
description: 'Loading state',
|
|
118
|
+
},
|
|
119
|
+
error: {
|
|
120
|
+
control: 'text',
|
|
121
|
+
description: 'Error message',
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
args: {
|
|
125
|
+
issues: sampleIssues,
|
|
126
|
+
maxWidth: '56rem',
|
|
127
|
+
theme: 'light',
|
|
128
|
+
loading: false,
|
|
129
|
+
error: null,
|
|
130
|
+
},
|
|
131
|
+
};
|
|
132
|
+
export default meta;
|
|
133
|
+
export const Default = {
|
|
134
|
+
args: {
|
|
135
|
+
issues: sampleIssues,
|
|
136
|
+
},
|
|
137
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
138
|
+
play: async ({ canvasElement, args }) => {
|
|
139
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
140
|
+
if (element && args.issues) {
|
|
141
|
+
element.issues = args.issues;
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
export const Loading = {
|
|
146
|
+
args: {
|
|
147
|
+
issues: [],
|
|
148
|
+
loading: true,
|
|
149
|
+
},
|
|
150
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
151
|
+
play: async ({ canvasElement, args }) => {
|
|
152
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
153
|
+
if (element && args.issues) {
|
|
154
|
+
element.issues = args.issues;
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
};
|
|
158
|
+
export const Error = {
|
|
159
|
+
args: {
|
|
160
|
+
issues: [],
|
|
161
|
+
loading: false,
|
|
162
|
+
error: 'Failed to fetch issues from GitHub API',
|
|
163
|
+
},
|
|
164
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
165
|
+
play: async ({ canvasElement, args }) => {
|
|
166
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
167
|
+
if (element && args.issues) {
|
|
168
|
+
element.issues = args.issues;
|
|
169
|
+
}
|
|
170
|
+
},
|
|
171
|
+
};
|
|
172
|
+
export const Empty = {
|
|
173
|
+
args: {
|
|
174
|
+
issues: [],
|
|
175
|
+
loading: false,
|
|
176
|
+
error: null,
|
|
177
|
+
},
|
|
178
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
179
|
+
play: async ({ canvasElement, args }) => {
|
|
180
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
181
|
+
if (element && args.issues) {
|
|
182
|
+
element.issues = args.issues;
|
|
183
|
+
}
|
|
184
|
+
},
|
|
185
|
+
};
|
|
186
|
+
export const DarkTheme = {
|
|
187
|
+
args: {
|
|
188
|
+
issues: sampleIssues,
|
|
189
|
+
theme: 'dark',
|
|
190
|
+
},
|
|
191
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
192
|
+
play: async ({ canvasElement, args }) => {
|
|
193
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
194
|
+
if (element && args.issues) {
|
|
195
|
+
element.issues = args.issues;
|
|
196
|
+
}
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
export const NarrowWidth = {
|
|
200
|
+
args: {
|
|
201
|
+
issues: sampleIssues.slice(0, 3),
|
|
202
|
+
maxWidth: '32rem',
|
|
203
|
+
},
|
|
204
|
+
render: props => h("feedlog-github-issues", Object.assign({}, props)),
|
|
205
|
+
play: async ({ canvasElement, args }) => {
|
|
206
|
+
const element = canvasElement.querySelector('feedlog-github-issues');
|
|
207
|
+
if (element && args.issues) {
|
|
208
|
+
element.issues = args.issues;
|
|
209
|
+
}
|
|
210
|
+
},
|
|
211
|
+
};
|