@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,12 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var index = require('./index-5lluu_3h.js');
|
|
4
|
+
|
|
5
|
+
const defineCustomElements = async (win, options) => {
|
|
6
|
+
if (typeof window === 'undefined') return undefined;
|
|
7
|
+
await index.globalScripts();
|
|
8
|
+
return index.bootstrapLazy([["feedlog-card.cjs",[[257,"feedlog-card"]]],["feedlog-badge_3.cjs",[[1,"feedlog-issues-list",{"issues":[16],"theme":[1]}],[257,"feedlog-button",{"variant":[1],"size":[1],"disabled":[4],"type":[1]}],[257,"feedlog-badge",{"variant":[1]}]]],["feedlog-github-issues.cjs",[[1,"feedlog-github-issues",{"issues":[16],"maxWidth":[1,"max-width"],"theme":[1025],"loading":[4],"error":[1],"showThemeToggle":[4,"show-theme-toggle"],"hasMore":[4,"has-more"],"isLoadingMore":[4,"is-loading-more"],"currentTheme":[32]}]]],["feedlog-github-issues-client.cjs",[[1,"feedlog-github-issues-client",{"repos":[1],"type":[1],"limit":[2],"endpoint":[1],"maxWidth":[1,"max-width"],"theme":[1],"showThemeToggle":[4,"show-theme-toggle"],"issues":[32],"loading":[32],"error":[32],"cursor":[32],"hasMore":[32],"isLoadingMore":[32]}]]]], options);
|
|
9
|
+
};
|
|
10
|
+
|
|
11
|
+
exports.setNonce = index.setNonce;
|
|
12
|
+
exports.defineCustomElements = defineCustomElements;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
{
|
|
2
|
+
"entries": [
|
|
3
|
+
"components/feedlog-card/feedlog-card.js",
|
|
4
|
+
"components/feedlog-badge/feedlog-badge.js",
|
|
5
|
+
"components/feedlog-button/feedlog-button.js",
|
|
6
|
+
"components/feedlog-github-issues/feedlog-github-issues.js",
|
|
7
|
+
"components/feedlog-github-issues-client/feedlog-github-issues-client.js",
|
|
8
|
+
"components/feedlog-issues-list/feedlog-issues-list.js"
|
|
9
|
+
],
|
|
10
|
+
"compiler": {
|
|
11
|
+
"name": "@stencil/core",
|
|
12
|
+
"version": "4.40.1",
|
|
13
|
+
"typescriptVersion": "5.8.3"
|
|
14
|
+
},
|
|
15
|
+
"collections": [],
|
|
16
|
+
"bundles": []
|
|
17
|
+
}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-block;
|
|
3
|
+
|
|
4
|
+
/* Light theme defaults */
|
|
5
|
+
--feedlog-badge-font-size: 0.75rem;
|
|
6
|
+
--feedlog-badge-font-weight: 500;
|
|
7
|
+
--feedlog-badge-padding-x: 0.5rem;
|
|
8
|
+
--feedlog-badge-padding-y: 0.125rem;
|
|
9
|
+
--feedlog-badge-border-radius: calc(0.625rem - 2px);
|
|
10
|
+
|
|
11
|
+
/* Default/Enhancement variant colors */
|
|
12
|
+
--feedlog-blue-500: oklch(0.623 0.214 259.815);
|
|
13
|
+
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
14
|
+
--feedlog-blue-700: oklch(0.488 0.243 264.376);
|
|
15
|
+
|
|
16
|
+
/* Destructive variant colors */
|
|
17
|
+
--feedlog-destructive: #d4183d;
|
|
18
|
+
--feedlog-destructive-hover: #b91c1c;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
:host(.dark) {
|
|
22
|
+
/* Dark theme values */
|
|
23
|
+
--feedlog-blue-500: oklch(0.623 0.214 259.815);
|
|
24
|
+
--feedlog-blue-600: oklch(0.546 0.245 262.881);
|
|
25
|
+
--feedlog-destructive: oklch(0.396 0.141 25.723);
|
|
26
|
+
--feedlog-destructive-hover: oklch(0.45 0.16 25.723);
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
.badge {
|
|
30
|
+
display: inline-flex;
|
|
31
|
+
align-items: center;
|
|
32
|
+
justify-content: center;
|
|
33
|
+
font-size: var(--feedlog-badge-font-size);
|
|
34
|
+
font-weight: var(--feedlog-badge-font-weight);
|
|
35
|
+
padding: var(--feedlog-badge-padding-y) var(--feedlog-badge-padding-x);
|
|
36
|
+
border-radius: var(--feedlog-badge-border-radius);
|
|
37
|
+
white-space: nowrap;
|
|
38
|
+
transition: background-color 0.15s ease;
|
|
39
|
+
font-family: inherit;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
/* Default variant - uses blue like enhancement */
|
|
43
|
+
.badge-default {
|
|
44
|
+
background-color: var(--feedlog-blue-600);
|
|
45
|
+
color: #ffffff;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
.badge-default:hover {
|
|
49
|
+
background-color: var(--feedlog-blue-700);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
:host(.dark) .badge-default {
|
|
53
|
+
background-color: var(--feedlog-blue-500);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
:host(.dark) .badge-default:hover {
|
|
57
|
+
background-color: var(--feedlog-blue-600);
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/* Enhancement variant - blue styling */
|
|
61
|
+
.badge-enhancement {
|
|
62
|
+
background-color: var(--feedlog-blue-600);
|
|
63
|
+
color: #ffffff;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
.badge-enhancement:hover {
|
|
67
|
+
background-color: var(--feedlog-blue-700);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
:host(.dark) .badge-enhancement {
|
|
71
|
+
background-color: var(--feedlog-blue-500);
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
:host(.dark) .badge-enhancement:hover {
|
|
75
|
+
background-color: var(--feedlog-blue-600);
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
/* Destructive variant - red/danger styling */
|
|
79
|
+
.badge-destructive {
|
|
80
|
+
background-color: var(--feedlog-destructive);
|
|
81
|
+
color: #ffffff;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.badge-destructive:hover {
|
|
85
|
+
background-color: var(--feedlog-destructive-hover);
|
|
86
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Feedlog Badge Component
|
|
4
|
+
*
|
|
5
|
+
* A label component with variant support for different styles.
|
|
6
|
+
*/
|
|
7
|
+
export class FeedlogBadge {
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Badge variant style
|
|
11
|
+
*/
|
|
12
|
+
this.variant = 'default';
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
return (h("span", { key: '482a74feb8d254a75383c30c7b39790edd04a05b', class: `badge badge-${this.variant}` }, h("slot", { key: '8d2db3fe0c2bc58e17829db4de7d0233189bb101' })));
|
|
16
|
+
}
|
|
17
|
+
static get is() { return "feedlog-badge"; }
|
|
18
|
+
static get encapsulation() { return "shadow"; }
|
|
19
|
+
static get originalStyleUrls() {
|
|
20
|
+
return {
|
|
21
|
+
"$": ["feedlog-badge.css"]
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
static get styleUrls() {
|
|
25
|
+
return {
|
|
26
|
+
"$": ["feedlog-badge.css"]
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
static get properties() {
|
|
30
|
+
return {
|
|
31
|
+
"variant": {
|
|
32
|
+
"type": "string",
|
|
33
|
+
"mutable": false,
|
|
34
|
+
"complexType": {
|
|
35
|
+
"original": "'default' | 'destructive' | 'enhancement'",
|
|
36
|
+
"resolved": "\"default\" | \"destructive\" | \"enhancement\"",
|
|
37
|
+
"references": {}
|
|
38
|
+
},
|
|
39
|
+
"required": false,
|
|
40
|
+
"optional": false,
|
|
41
|
+
"docs": {
|
|
42
|
+
"tags": [],
|
|
43
|
+
"text": "Badge variant style"
|
|
44
|
+
},
|
|
45
|
+
"getter": false,
|
|
46
|
+
"setter": false,
|
|
47
|
+
"reflect": false,
|
|
48
|
+
"attribute": "variant",
|
|
49
|
+
"defaultValue": "'default'"
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { FeedlogBadge } from "./feedlog-badge";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Components/Badge',
|
|
5
|
+
component: FeedlogBadge,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: 'centered',
|
|
8
|
+
},
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: {
|
|
11
|
+
control: 'select',
|
|
12
|
+
options: ['default', 'destructive'],
|
|
13
|
+
description: 'Badge variant style',
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
args: {
|
|
17
|
+
variant: 'default',
|
|
18
|
+
},
|
|
19
|
+
};
|
|
20
|
+
export default meta;
|
|
21
|
+
export const Default = {
|
|
22
|
+
args: {
|
|
23
|
+
variant: 'default',
|
|
24
|
+
},
|
|
25
|
+
render: props => h("feedlog-badge", Object.assign({}, props), "Enhancement"),
|
|
26
|
+
};
|
|
27
|
+
export const Destructive = {
|
|
28
|
+
args: {
|
|
29
|
+
variant: 'destructive',
|
|
30
|
+
},
|
|
31
|
+
render: props => h("feedlog-badge", Object.assign({}, props), "Bug"),
|
|
32
|
+
};
|
|
33
|
+
export const AllVariants = {
|
|
34
|
+
render: () => (h("div", { style: { display: 'flex', gap: '1rem' } }, h("feedlog-badge", { variant: "default" }, "Default"), h("feedlog-badge", { variant: "destructive" }, "Destructive"))),
|
|
35
|
+
};
|
|
36
|
+
export const Labels = {
|
|
37
|
+
render: () => (h("div", { style: { display: 'flex', gap: '0.5rem', flexWrap: 'wrap' } }, h("feedlog-badge", null, "New"), h("feedlog-badge", null, "Feature"), h("feedlog-badge", null, "Enhancement"), h("feedlog-badge", { variant: "destructive" }, "Bug"), h("feedlog-badge", { variant: "destructive" }, "Critical"))),
|
|
38
|
+
};
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
:host {
|
|
2
|
+
display: inline-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-primary: #030213;
|
|
9
|
+
--feedlog-primary-foreground: oklch(1 0 0);
|
|
10
|
+
--feedlog-secondary: oklch(0.95 0.0058 264.53);
|
|
11
|
+
--feedlog-secondary-foreground: #030213;
|
|
12
|
+
--feedlog-muted: #ececf0;
|
|
13
|
+
--feedlog-accent: #e9ebef;
|
|
14
|
+
--feedlog-accent-foreground: #030213;
|
|
15
|
+
--feedlog-border: rgba(0, 0, 0, 0.1);
|
|
16
|
+
--feedlog-input: transparent;
|
|
17
|
+
--feedlog-ring: oklch(0.708 0 0);
|
|
18
|
+
--feedlog-destructive: #d4183d;
|
|
19
|
+
--feedlog-radius: 0.625rem;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
:host(.dark) {
|
|
23
|
+
/* Dark theme values */
|
|
24
|
+
--feedlog-background: oklch(0.145 0 0);
|
|
25
|
+
--feedlog-foreground: oklch(0.985 0 0);
|
|
26
|
+
--feedlog-primary: oklch(0.985 0 0);
|
|
27
|
+
--feedlog-primary-foreground: oklch(0.205 0 0);
|
|
28
|
+
--feedlog-secondary: oklch(0.269 0 0);
|
|
29
|
+
--feedlog-secondary-foreground: oklch(0.985 0 0);
|
|
30
|
+
--feedlog-muted: oklch(0.269 0 0);
|
|
31
|
+
--feedlog-accent: oklch(0.269 0 0);
|
|
32
|
+
--feedlog-accent-foreground: oklch(0.985 0 0);
|
|
33
|
+
--feedlog-border: oklch(0.269 0 0);
|
|
34
|
+
--feedlog-input: oklch(0.269 0 0);
|
|
35
|
+
--feedlog-ring: oklch(0.439 0 0);
|
|
36
|
+
--feedlog-destructive: oklch(0.396 0.141 25.723);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
button {
|
|
40
|
+
display: inline-flex;
|
|
41
|
+
align-items: center;
|
|
42
|
+
justify-content: center;
|
|
43
|
+
gap: 0.5rem;
|
|
44
|
+
white-space: nowrap;
|
|
45
|
+
font-size: 0.875rem;
|
|
46
|
+
font-weight: 500;
|
|
47
|
+
border-radius: calc(var(--feedlog-radius) - 2px);
|
|
48
|
+
border: 1px solid transparent;
|
|
49
|
+
cursor: pointer;
|
|
50
|
+
transition: all 0.15s ease;
|
|
51
|
+
outline: none;
|
|
52
|
+
font-family: inherit;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
button:disabled {
|
|
56
|
+
opacity: 0.5;
|
|
57
|
+
cursor: not-allowed;
|
|
58
|
+
pointer-events: none;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
button:focus-visible {
|
|
62
|
+
border-color: var(--feedlog-ring);
|
|
63
|
+
box-shadow: 0 0 0 3px color-mix(in oklab, var(--feedlog-ring) 50%, transparent);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/* Default variant */
|
|
67
|
+
.button-default {
|
|
68
|
+
background-color: var(--feedlog-primary);
|
|
69
|
+
color: var(--feedlog-primary-foreground);
|
|
70
|
+
border-color: transparent;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
.button-default:hover:not(:disabled) {
|
|
74
|
+
background-color: color-mix(in oklab, var(--feedlog-primary) 90%, transparent);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/* Outline variant */
|
|
78
|
+
.button-outline {
|
|
79
|
+
background-color: var(--feedlog-background);
|
|
80
|
+
color: var(--feedlog-foreground);
|
|
81
|
+
border-color: var(--feedlog-border);
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.button-outline:hover:not(:disabled) {
|
|
85
|
+
background-color: var(--feedlog-accent);
|
|
86
|
+
color: var(--feedlog-accent-foreground);
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
:host(.dark) .button-outline {
|
|
90
|
+
background-color: transparent;
|
|
91
|
+
border-color: var(--feedlog-input);
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
:host(.dark) .button-outline:hover:not(:disabled) {
|
|
95
|
+
background-color: color-mix(in oklab, var(--feedlog-accent) 50%, transparent);
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Ghost variant */
|
|
99
|
+
.button-ghost {
|
|
100
|
+
background-color: transparent;
|
|
101
|
+
color: var(--feedlog-foreground);
|
|
102
|
+
border-color: transparent;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
.button-ghost:hover:not(:disabled) {
|
|
106
|
+
background-color: var(--feedlog-accent);
|
|
107
|
+
color: var(--feedlog-accent-foreground);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/* Destructive variant */
|
|
111
|
+
.button-destructive {
|
|
112
|
+
background-color: var(--feedlog-destructive);
|
|
113
|
+
color: #ffffff;
|
|
114
|
+
border-color: transparent;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.button-destructive:hover:not(:disabled) {
|
|
118
|
+
background-color: color-mix(in oklab, var(--feedlog-destructive) 90%, transparent);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
:host(.dark) .button-destructive {
|
|
122
|
+
background-color: color-mix(in oklab, var(--feedlog-destructive) 60%, transparent);
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
/* Size variants */
|
|
126
|
+
.button-size-sm {
|
|
127
|
+
height: 2rem;
|
|
128
|
+
padding: 0 0.75rem;
|
|
129
|
+
font-size: 0.75rem;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
/* Icon-only small buttons */
|
|
133
|
+
.button-size-sm:has(svg:only-child) {
|
|
134
|
+
width: 2rem;
|
|
135
|
+
padding: 0;
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
.button-size-default {
|
|
139
|
+
height: 2.25rem;
|
|
140
|
+
padding: 0.5rem 1rem;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
.button-size-lg {
|
|
144
|
+
height: 2.5rem;
|
|
145
|
+
padding: 0.625rem 1.5rem;
|
|
146
|
+
font-size: 1rem;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
/* SVG icons styling */
|
|
150
|
+
button svg {
|
|
151
|
+
pointer-events: none;
|
|
152
|
+
flex-shrink: 0;
|
|
153
|
+
width: 1rem;
|
|
154
|
+
height: 1rem;
|
|
155
|
+
}
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Feedlog Button Component
|
|
4
|
+
*
|
|
5
|
+
* A button component with variant and size support.
|
|
6
|
+
*/
|
|
7
|
+
export class FeedlogButton {
|
|
8
|
+
constructor() {
|
|
9
|
+
/**
|
|
10
|
+
* Button variant style
|
|
11
|
+
*/
|
|
12
|
+
this.variant = 'default';
|
|
13
|
+
/**
|
|
14
|
+
* Button size
|
|
15
|
+
*/
|
|
16
|
+
this.size = 'default';
|
|
17
|
+
/**
|
|
18
|
+
* Disabled state
|
|
19
|
+
*/
|
|
20
|
+
this.disabled = false;
|
|
21
|
+
/**
|
|
22
|
+
* Button type
|
|
23
|
+
*/
|
|
24
|
+
this.type = 'button';
|
|
25
|
+
this.handleClick = (event) => {
|
|
26
|
+
if (!this.disabled) {
|
|
27
|
+
this.feedlogClick.emit(event);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
render() {
|
|
32
|
+
const sizeClass = this.size === 'default' ? 'button-size-default' : `button-size-${this.size}`;
|
|
33
|
+
return (h("button", { key: '6cdd8347def51592707b1fb9aab0dc565ca0f76f', type: this.type, class: `button button-${this.variant} ${sizeClass}`, disabled: this.disabled, onClick: this.handleClick }, h("slot", { key: '3f3845195fa4b8a551473ecf1d5702321a31763e' })));
|
|
34
|
+
}
|
|
35
|
+
static get is() { return "feedlog-button"; }
|
|
36
|
+
static get encapsulation() { return "shadow"; }
|
|
37
|
+
static get originalStyleUrls() {
|
|
38
|
+
return {
|
|
39
|
+
"$": ["feedlog-button.css"]
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
static get styleUrls() {
|
|
43
|
+
return {
|
|
44
|
+
"$": ["feedlog-button.css"]
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static get properties() {
|
|
48
|
+
return {
|
|
49
|
+
"variant": {
|
|
50
|
+
"type": "string",
|
|
51
|
+
"mutable": false,
|
|
52
|
+
"complexType": {
|
|
53
|
+
"original": "'default' | 'outline' | 'ghost' | 'destructive'",
|
|
54
|
+
"resolved": "\"default\" | \"destructive\" | \"ghost\" | \"outline\"",
|
|
55
|
+
"references": {}
|
|
56
|
+
},
|
|
57
|
+
"required": false,
|
|
58
|
+
"optional": false,
|
|
59
|
+
"docs": {
|
|
60
|
+
"tags": [],
|
|
61
|
+
"text": "Button variant style"
|
|
62
|
+
},
|
|
63
|
+
"getter": false,
|
|
64
|
+
"setter": false,
|
|
65
|
+
"reflect": false,
|
|
66
|
+
"attribute": "variant",
|
|
67
|
+
"defaultValue": "'default'"
|
|
68
|
+
},
|
|
69
|
+
"size": {
|
|
70
|
+
"type": "string",
|
|
71
|
+
"mutable": false,
|
|
72
|
+
"complexType": {
|
|
73
|
+
"original": "'default' | 'sm' | 'lg'",
|
|
74
|
+
"resolved": "\"default\" | \"lg\" | \"sm\"",
|
|
75
|
+
"references": {}
|
|
76
|
+
},
|
|
77
|
+
"required": false,
|
|
78
|
+
"optional": false,
|
|
79
|
+
"docs": {
|
|
80
|
+
"tags": [],
|
|
81
|
+
"text": "Button size"
|
|
82
|
+
},
|
|
83
|
+
"getter": false,
|
|
84
|
+
"setter": false,
|
|
85
|
+
"reflect": false,
|
|
86
|
+
"attribute": "size",
|
|
87
|
+
"defaultValue": "'default'"
|
|
88
|
+
},
|
|
89
|
+
"disabled": {
|
|
90
|
+
"type": "boolean",
|
|
91
|
+
"mutable": false,
|
|
92
|
+
"complexType": {
|
|
93
|
+
"original": "boolean",
|
|
94
|
+
"resolved": "boolean",
|
|
95
|
+
"references": {}
|
|
96
|
+
},
|
|
97
|
+
"required": false,
|
|
98
|
+
"optional": false,
|
|
99
|
+
"docs": {
|
|
100
|
+
"tags": [],
|
|
101
|
+
"text": "Disabled state"
|
|
102
|
+
},
|
|
103
|
+
"getter": false,
|
|
104
|
+
"setter": false,
|
|
105
|
+
"reflect": false,
|
|
106
|
+
"attribute": "disabled",
|
|
107
|
+
"defaultValue": "false"
|
|
108
|
+
},
|
|
109
|
+
"type": {
|
|
110
|
+
"type": "string",
|
|
111
|
+
"mutable": false,
|
|
112
|
+
"complexType": {
|
|
113
|
+
"original": "'button' | 'submit' | 'reset'",
|
|
114
|
+
"resolved": "\"button\" | \"reset\" | \"submit\"",
|
|
115
|
+
"references": {}
|
|
116
|
+
},
|
|
117
|
+
"required": false,
|
|
118
|
+
"optional": false,
|
|
119
|
+
"docs": {
|
|
120
|
+
"tags": [],
|
|
121
|
+
"text": "Button type"
|
|
122
|
+
},
|
|
123
|
+
"getter": false,
|
|
124
|
+
"setter": false,
|
|
125
|
+
"reflect": false,
|
|
126
|
+
"attribute": "type",
|
|
127
|
+
"defaultValue": "'button'"
|
|
128
|
+
}
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
static get events() {
|
|
132
|
+
return [{
|
|
133
|
+
"method": "feedlogClick",
|
|
134
|
+
"name": "feedlogClick",
|
|
135
|
+
"bubbles": true,
|
|
136
|
+
"cancelable": true,
|
|
137
|
+
"composed": true,
|
|
138
|
+
"docs": {
|
|
139
|
+
"tags": [],
|
|
140
|
+
"text": "Event emitted when button is clicked"
|
|
141
|
+
},
|
|
142
|
+
"complexType": {
|
|
143
|
+
"original": "MouseEvent",
|
|
144
|
+
"resolved": "MouseEvent",
|
|
145
|
+
"references": {
|
|
146
|
+
"MouseEvent": {
|
|
147
|
+
"location": "global",
|
|
148
|
+
"id": "global::MouseEvent"
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}];
|
|
153
|
+
}
|
|
154
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
import { FeedlogButton } from "./feedlog-button";
|
|
3
|
+
const meta = {
|
|
4
|
+
title: 'Components/Button',
|
|
5
|
+
component: FeedlogButton,
|
|
6
|
+
parameters: {
|
|
7
|
+
layout: 'centered',
|
|
8
|
+
},
|
|
9
|
+
argTypes: {
|
|
10
|
+
variant: {
|
|
11
|
+
control: 'select',
|
|
12
|
+
options: ['default', 'outline', 'ghost', 'destructive'],
|
|
13
|
+
description: 'Button variant style',
|
|
14
|
+
},
|
|
15
|
+
size: {
|
|
16
|
+
control: 'select',
|
|
17
|
+
options: ['default', 'sm', 'lg'],
|
|
18
|
+
description: 'Button size',
|
|
19
|
+
},
|
|
20
|
+
disabled: {
|
|
21
|
+
control: 'boolean',
|
|
22
|
+
description: 'Disabled state',
|
|
23
|
+
},
|
|
24
|
+
type: {
|
|
25
|
+
control: 'select',
|
|
26
|
+
options: ['button', 'submit', 'reset'],
|
|
27
|
+
description: 'Button type',
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
args: {
|
|
31
|
+
variant: 'default',
|
|
32
|
+
size: 'default',
|
|
33
|
+
disabled: false,
|
|
34
|
+
type: 'button',
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
export default meta;
|
|
38
|
+
export const Default = {
|
|
39
|
+
args: {
|
|
40
|
+
variant: 'default',
|
|
41
|
+
},
|
|
42
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Click me"),
|
|
43
|
+
};
|
|
44
|
+
export const Outline = {
|
|
45
|
+
args: {
|
|
46
|
+
variant: 'outline',
|
|
47
|
+
},
|
|
48
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Outline Button"),
|
|
49
|
+
};
|
|
50
|
+
export const Ghost = {
|
|
51
|
+
args: {
|
|
52
|
+
variant: 'ghost',
|
|
53
|
+
},
|
|
54
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Ghost Button"),
|
|
55
|
+
};
|
|
56
|
+
export const Destructive = {
|
|
57
|
+
args: {
|
|
58
|
+
variant: 'destructive',
|
|
59
|
+
},
|
|
60
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Delete"),
|
|
61
|
+
};
|
|
62
|
+
export const Small = {
|
|
63
|
+
args: {
|
|
64
|
+
size: 'sm',
|
|
65
|
+
},
|
|
66
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Small Button"),
|
|
67
|
+
};
|
|
68
|
+
export const Large = {
|
|
69
|
+
args: {
|
|
70
|
+
size: 'lg',
|
|
71
|
+
},
|
|
72
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Large Button"),
|
|
73
|
+
};
|
|
74
|
+
export const Disabled = {
|
|
75
|
+
args: {
|
|
76
|
+
disabled: true,
|
|
77
|
+
},
|
|
78
|
+
render: props => h("feedlog-button", Object.assign({}, props), "Disabled"),
|
|
79
|
+
};
|
|
80
|
+
export const AllVariants = {
|
|
81
|
+
render: () => (h("div", { style: { display: 'flex', gap: '1rem', flexWrap: 'wrap' } }, h("feedlog-button", { variant: "default" }, "Default"), h("feedlog-button", { variant: "outline" }, "Outline"), h("feedlog-button", { variant: "ghost" }, "Ghost"), h("feedlog-button", { variant: "destructive" }, "Destructive"))),
|
|
82
|
+
};
|
|
@@ -0,0 +1,47 @@
|
|
|
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-card: #ffffff;
|
|
7
|
+
--feedlog-card-foreground: oklch(0.145 0 0);
|
|
8
|
+
--feedlog-border: rgba(0, 0, 0, 0.1);
|
|
9
|
+
--feedlog-radius: 0.625rem;
|
|
10
|
+
--feedlog-card-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -2px rgba(0, 0, 0, 0.1);
|
|
11
|
+
--feedlog-card-hover-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -4px rgba(0, 0, 0, 0.1);
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
:host(.dark) {
|
|
15
|
+
/* Dark theme values */
|
|
16
|
+
--feedlog-card: oklch(0.145 0 0);
|
|
17
|
+
--feedlog-card-foreground: oklch(0.985 0 0);
|
|
18
|
+
--feedlog-border: oklch(0.269 0 0);
|
|
19
|
+
--feedlog-card-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3), 0 2px 4px -2px rgba(0, 0, 0, 0.3);
|
|
20
|
+
--feedlog-card-hover-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.3), 0 4px 6px -4px rgba(0, 0, 0, 0.3);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
.feedlog-card {
|
|
24
|
+
background-color: var(--feedlog-card);
|
|
25
|
+
color: var(--feedlog-card-foreground);
|
|
26
|
+
border: 1px solid var(--feedlog-border);
|
|
27
|
+
border-radius: var(--feedlog-radius);
|
|
28
|
+
box-shadow: var(--feedlog-card-shadow);
|
|
29
|
+
transition: box-shadow 0.15s ease;
|
|
30
|
+
position: relative;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.feedlog-card:hover {
|
|
34
|
+
box-shadow: var(--feedlog-card-hover-shadow);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
::slotted([slot="header"]) {
|
|
38
|
+
display: block;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
::slotted([slot="content"]) {
|
|
42
|
+
display: block;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
::slotted([slot="footer"]) {
|
|
46
|
+
display: block;
|
|
47
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { h } from "@stencil/core";
|
|
2
|
+
/**
|
|
3
|
+
* Feedlog Card Component
|
|
4
|
+
*
|
|
5
|
+
* A reusable card container component with header and content areas.
|
|
6
|
+
*/
|
|
7
|
+
export class FeedlogCard {
|
|
8
|
+
render() {
|
|
9
|
+
return (h("div", { key: '293a80e66adedfc1af29daf72390a4f464321b96', class: "feedlog-card" }, h("slot", { key: 'b7e5a827f89035e791d9c756db0f66198e6c5a38', name: "header" }), h("slot", { key: 'da89fee0a01068c8438564848f218faa9c5d849e', name: "content" }), h("slot", { key: '30b05e80e4189c0f73810a48f64e072dfac83267', name: "footer" })));
|
|
10
|
+
}
|
|
11
|
+
static get is() { return "feedlog-card"; }
|
|
12
|
+
static get encapsulation() { return "shadow"; }
|
|
13
|
+
static get originalStyleUrls() {
|
|
14
|
+
return {
|
|
15
|
+
"$": ["feedlog-card.css"]
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
static get styleUrls() {
|
|
19
|
+
return {
|
|
20
|
+
"$": ["feedlog-card.css"]
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
}
|