@parksw/sw-ui-components 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/index.d.ts +3 -0
- package/dist/index.js +3 -0
- package/dist/my-button.d.ts +8 -0
- package/dist/my-button.js +75 -0
- package/dist/my-calendar.d.ts +12 -0
- package/dist/my-calendar.js +147 -0
- package/dist/my-element.d.ts +6 -0
- package/dist/my-element.js +34 -0
- package/package.json +32 -0
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
let MyButton = class MyButton extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.label = 'Button';
|
|
13
|
+
this.disabled = false;
|
|
14
|
+
this.variant = 'primary';
|
|
15
|
+
}
|
|
16
|
+
render() {
|
|
17
|
+
return html `
|
|
18
|
+
<button
|
|
19
|
+
class="button ${this.variant}"
|
|
20
|
+
?disabled=${this.disabled}
|
|
21
|
+
>
|
|
22
|
+
${this.label}
|
|
23
|
+
</button>
|
|
24
|
+
`;
|
|
25
|
+
}
|
|
26
|
+
static { this.styles = css `
|
|
27
|
+
.button {
|
|
28
|
+
border: none;
|
|
29
|
+
color: white;
|
|
30
|
+
padding: 12px 24px;
|
|
31
|
+
text-align: center;
|
|
32
|
+
text-decoration: none;
|
|
33
|
+
display: inline-block;
|
|
34
|
+
font-size: 16px;
|
|
35
|
+
margin: 4px 2px;
|
|
36
|
+
cursor: pointer;
|
|
37
|
+
border-radius: 8px;
|
|
38
|
+
transition: background-color 0.3s ease;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.button:disabled {
|
|
42
|
+
cursor: not-allowed;
|
|
43
|
+
opacity: 0.6;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
.primary {
|
|
47
|
+
background-color: #4CAF50; /* Green */
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
.primary:hover:not(:disabled) {
|
|
51
|
+
background-color: #45a049;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
.secondary {
|
|
55
|
+
background-color: #008CBA; /* Blue */
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
.secondary:hover:not(:disabled) {
|
|
59
|
+
background-color: #007bb5;
|
|
60
|
+
}
|
|
61
|
+
`; }
|
|
62
|
+
};
|
|
63
|
+
__decorate([
|
|
64
|
+
property({ type: String })
|
|
65
|
+
], MyButton.prototype, "label", void 0);
|
|
66
|
+
__decorate([
|
|
67
|
+
property({ type: Boolean, reflect: true })
|
|
68
|
+
], MyButton.prototype, "disabled", void 0);
|
|
69
|
+
__decorate([
|
|
70
|
+
property({ type: String })
|
|
71
|
+
], MyButton.prototype, "variant", void 0);
|
|
72
|
+
MyButton = __decorate([
|
|
73
|
+
customElement('my-button')
|
|
74
|
+
], MyButton);
|
|
75
|
+
export { MyButton };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { LitElement } from 'lit';
|
|
2
|
+
export declare class MyCalendar extends LitElement {
|
|
3
|
+
private date;
|
|
4
|
+
private get year();
|
|
5
|
+
private get month();
|
|
6
|
+
private _changeMonth;
|
|
7
|
+
private _renderHeader;
|
|
8
|
+
private _renderDaysOfWeek;
|
|
9
|
+
private _renderDates;
|
|
10
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
11
|
+
static styles: import("lit").CSSResult;
|
|
12
|
+
}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html } from 'lit';
|
|
8
|
+
import { customElement, state } from 'lit/decorators.js';
|
|
9
|
+
let MyCalendar = class MyCalendar extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.date = new Date();
|
|
13
|
+
}
|
|
14
|
+
get year() {
|
|
15
|
+
return this.date.getFullYear();
|
|
16
|
+
}
|
|
17
|
+
get month() {
|
|
18
|
+
return this.date.getMonth();
|
|
19
|
+
}
|
|
20
|
+
_changeMonth(offset) {
|
|
21
|
+
this.date = new Date(this.year, this.month + offset, 1);
|
|
22
|
+
}
|
|
23
|
+
_renderHeader() {
|
|
24
|
+
const monthName = this.date.toLocaleString('default', { month: 'long' });
|
|
25
|
+
return html `
|
|
26
|
+
<div class="header">
|
|
27
|
+
<button @click=${() => this._changeMonth(-1)}>‹</button>
|
|
28
|
+
<div class="month-year">${monthName} ${this.year}</div>
|
|
29
|
+
<button @click=${() => this._changeMonth(1)}>›</button>
|
|
30
|
+
</div>
|
|
31
|
+
`;
|
|
32
|
+
}
|
|
33
|
+
_renderDaysOfWeek() {
|
|
34
|
+
const days = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'];
|
|
35
|
+
return html `
|
|
36
|
+
<div class="days-of-week">
|
|
37
|
+
${days.map(day => html `<div>${day}</div>`)}
|
|
38
|
+
</div>
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
_renderDates() {
|
|
42
|
+
const today = new Date();
|
|
43
|
+
const firstDayOfMonth = new Date(this.year, this.month, 1).getDay();
|
|
44
|
+
const daysInMonth = new Date(this.year, this.month + 1, 0).getDate();
|
|
45
|
+
const dates = [];
|
|
46
|
+
for (let i = 0; i < firstDayOfMonth; i++) {
|
|
47
|
+
dates.push(html `<div class="date-cell empty"></div>`);
|
|
48
|
+
}
|
|
49
|
+
for (let i = 1; i <= daysInMonth; i++) {
|
|
50
|
+
const isToday = this.year === today.getFullYear() &&
|
|
51
|
+
this.month === today.getMonth() &&
|
|
52
|
+
i === today.getDate();
|
|
53
|
+
dates.push(html `<div class="date-cell ${isToday ? 'today' : ''}">${i}</div>`);
|
|
54
|
+
}
|
|
55
|
+
return html `<div class="date-grid">${dates}</div>`;
|
|
56
|
+
}
|
|
57
|
+
render() {
|
|
58
|
+
return html `
|
|
59
|
+
<div class="calendar-container">
|
|
60
|
+
${this._renderHeader()}
|
|
61
|
+
${this._renderDaysOfWeek()}
|
|
62
|
+
${this._renderDates()}
|
|
63
|
+
</div>
|
|
64
|
+
`;
|
|
65
|
+
}
|
|
66
|
+
static { this.styles = css `
|
|
67
|
+
:host {
|
|
68
|
+
display: block;
|
|
69
|
+
max-width: 350px;
|
|
70
|
+
border: 1px solid #ccc;
|
|
71
|
+
border-radius: 8px;
|
|
72
|
+
padding: 16px;
|
|
73
|
+
font-family: sans-serif;
|
|
74
|
+
box-shadow: 0 4px 8px rgba(0,0,0,0.1);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
.header {
|
|
78
|
+
display: flex;
|
|
79
|
+
justify-content: space-between;
|
|
80
|
+
align-items: center;
|
|
81
|
+
margin-bottom: 16px;
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
.header button {
|
|
85
|
+
background: none;
|
|
86
|
+
border: 1px solid #ccc;
|
|
87
|
+
border-radius: 50%;
|
|
88
|
+
width: 32px;
|
|
89
|
+
height: 32px;
|
|
90
|
+
cursor: pointer;
|
|
91
|
+
font-size: 18px;
|
|
92
|
+
transition: background-color 0.2s;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
.header button:hover {
|
|
96
|
+
background-color: #eee;
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
.month-year {
|
|
100
|
+
font-size: 1.2em;
|
|
101
|
+
font-weight: bold;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.days-of-week, .date-grid {
|
|
105
|
+
display: grid;
|
|
106
|
+
grid-template-columns: repeat(7, 1fr);
|
|
107
|
+
text-align: center;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
.days-of-week > div {
|
|
111
|
+
font-weight: bold;
|
|
112
|
+
padding-bottom: 8px;
|
|
113
|
+
font-size: 0.9em;
|
|
114
|
+
color: #666;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
.date-cell {
|
|
118
|
+
padding: 4px 0;
|
|
119
|
+
cursor: pointer;
|
|
120
|
+
border-radius: 50%;
|
|
121
|
+
width: 32px;
|
|
122
|
+
height: 32px;
|
|
123
|
+
display: flex;
|
|
124
|
+
justify-content: center;
|
|
125
|
+
align-items: center;
|
|
126
|
+
margin: 2px auto;
|
|
127
|
+
transition: background-color 0.2s;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
.date-cell:not(.empty):hover {
|
|
131
|
+
background-color: #eee;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.date-cell.today {
|
|
135
|
+
background-color: #4CAF50;
|
|
136
|
+
color: white;
|
|
137
|
+
font-weight: bold;
|
|
138
|
+
}
|
|
139
|
+
`; }
|
|
140
|
+
};
|
|
141
|
+
__decorate([
|
|
142
|
+
state()
|
|
143
|
+
], MyCalendar.prototype, "date", void 0);
|
|
144
|
+
MyCalendar = __decorate([
|
|
145
|
+
customElement('my-calendar')
|
|
146
|
+
], MyCalendar);
|
|
147
|
+
export { MyCalendar };
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { LitElement, css, html } from 'lit';
|
|
8
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
9
|
+
let MyElement = class MyElement extends LitElement {
|
|
10
|
+
constructor() {
|
|
11
|
+
super(...arguments);
|
|
12
|
+
this.name = 'World';
|
|
13
|
+
}
|
|
14
|
+
render() {
|
|
15
|
+
return html `
|
|
16
|
+
<h1>Hello, ${this.name}!</h1>
|
|
17
|
+
`;
|
|
18
|
+
}
|
|
19
|
+
static { this.styles = css `
|
|
20
|
+
:host {
|
|
21
|
+
display: block;
|
|
22
|
+
border: solid 1px gray;
|
|
23
|
+
padding: 16px;
|
|
24
|
+
max-width: 800px;
|
|
25
|
+
}
|
|
26
|
+
`; }
|
|
27
|
+
};
|
|
28
|
+
__decorate([
|
|
29
|
+
property()
|
|
30
|
+
], MyElement.prototype, "name", void 0);
|
|
31
|
+
MyElement = __decorate([
|
|
32
|
+
customElement('my-element')
|
|
33
|
+
], MyElement);
|
|
34
|
+
export { MyElement };
|
package/package.json
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@parksw/sw-ui-components",
|
|
3
|
+
"private": false,
|
|
4
|
+
"version": "0.0.1",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "dist/index.js",
|
|
7
|
+
"module": "dist/index.js",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"exports": {
|
|
12
|
+
".": "./dist/index.js",
|
|
13
|
+
"./my-button.js": "./dist/my-button.js",
|
|
14
|
+
"./my-calendar.js": "./dist/my-calendar.js",
|
|
15
|
+
"./my-element.js": "./dist/my-element.js"
|
|
16
|
+
},
|
|
17
|
+
"scripts": {
|
|
18
|
+
"dev": "vite",
|
|
19
|
+
"build": "tsc",
|
|
20
|
+
"preview": "vite preview"
|
|
21
|
+
},
|
|
22
|
+
"dependencies": {
|
|
23
|
+
"lit": "^3.3.1"
|
|
24
|
+
},
|
|
25
|
+
"devDependencies": {
|
|
26
|
+
"typescript": "~5.9.3",
|
|
27
|
+
"vite": "npm:rolldown-vite@7.2.5"
|
|
28
|
+
},
|
|
29
|
+
"overrides": {
|
|
30
|
+
"vite": "npm:rolldown-vite@7.2.5"
|
|
31
|
+
}
|
|
32
|
+
}
|