htmlboard 0.2.0 → 0.4.0
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 +83 -69
- package/bin/htmlboard.js +83 -46
- package/package.json +1 -1
- package/skills/htmlboard/SKILL.md +39 -34
- package/src/client/explorer.css +69 -34
- package/src/client/explorer.js +148 -25
- package/src/client/index.html +2 -0
- package/src/designs.js +398 -0
- package/src/index.js +7 -2
- package/src/migrate.js +193 -0
- package/src/server.js +1 -198
- package/src/templates/{artboards/desktop.html → 01-screens/01-desktop.html} +51 -167
- package/src/templates/{artboards/mobile.html → 01-screens/02-mobile.html} +48 -143
- package/src/templates/02-components/01-ui-kit.html +77 -0
- package/src/templates/styles.css +133 -0
- package/src/templates/artboards/components.html +0 -199
- package/src/templates/designs.json +0 -50
|
@@ -1,199 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="en">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>Component Library Preview</title>
|
|
7
|
-
<style>
|
|
8
|
-
* {
|
|
9
|
-
box-sizing: border-box;
|
|
10
|
-
margin: 0;
|
|
11
|
-
padding: 0;
|
|
12
|
-
-webkit-font-smoothing: antialiased;
|
|
13
|
-
}
|
|
14
|
-
:root {
|
|
15
|
-
--bg: #0d0f17;
|
|
16
|
-
--card-bg: #141724;
|
|
17
|
-
--border: #24293e;
|
|
18
|
-
--text: #f8fafc;
|
|
19
|
-
--text-muted: #94a3b8;
|
|
20
|
-
--accent: #6366f1;
|
|
21
|
-
--accent-hover: #4f46e5;
|
|
22
|
-
--emerald: #10b981;
|
|
23
|
-
--rose: #f43f5e;
|
|
24
|
-
--amber: #f59e0b;
|
|
25
|
-
}
|
|
26
|
-
body {
|
|
27
|
-
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
|
|
28
|
-
background: var(--bg);
|
|
29
|
-
color: var(--text);
|
|
30
|
-
padding: 24px;
|
|
31
|
-
display: flex;
|
|
32
|
-
flex-direction: column;
|
|
33
|
-
gap: 24px;
|
|
34
|
-
}
|
|
35
|
-
.header {
|
|
36
|
-
border-bottom: 1px solid var(--border);
|
|
37
|
-
padding-bottom: 16px;
|
|
38
|
-
}
|
|
39
|
-
.title {
|
|
40
|
-
font-size: 20px;
|
|
41
|
-
font-weight: 700;
|
|
42
|
-
}
|
|
43
|
-
.subtitle {
|
|
44
|
-
font-size: 13px;
|
|
45
|
-
color: var(--text-muted);
|
|
46
|
-
margin-top: 4px;
|
|
47
|
-
}
|
|
48
|
-
.section {
|
|
49
|
-
background: var(--card-bg);
|
|
50
|
-
border: 1px solid var(--border);
|
|
51
|
-
border-radius: 12px;
|
|
52
|
-
padding: 20px;
|
|
53
|
-
display: flex;
|
|
54
|
-
flex-direction: column;
|
|
55
|
-
gap: 16px;
|
|
56
|
-
}
|
|
57
|
-
.section-title {
|
|
58
|
-
font-size: 14px;
|
|
59
|
-
font-weight: 600;
|
|
60
|
-
color: #cbd5e1;
|
|
61
|
-
text-transform: uppercase;
|
|
62
|
-
letter-spacing: 0.05em;
|
|
63
|
-
}
|
|
64
|
-
.flex-row {
|
|
65
|
-
display: flex;
|
|
66
|
-
align-items: center;
|
|
67
|
-
gap: 12px;
|
|
68
|
-
flex-wrap: wrap;
|
|
69
|
-
}
|
|
70
|
-
/* Buttons */
|
|
71
|
-
.btn {
|
|
72
|
-
padding: 9px 16px;
|
|
73
|
-
border-radius: 8px;
|
|
74
|
-
font-size: 13px;
|
|
75
|
-
font-weight: 600;
|
|
76
|
-
cursor: pointer;
|
|
77
|
-
display: inline-flex;
|
|
78
|
-
align-items: center;
|
|
79
|
-
gap: 8px;
|
|
80
|
-
border: 1px solid transparent;
|
|
81
|
-
transition: all 0.15s ease;
|
|
82
|
-
}
|
|
83
|
-
.btn-primary {
|
|
84
|
-
background: var(--accent);
|
|
85
|
-
color: #fff;
|
|
86
|
-
}
|
|
87
|
-
.btn-primary:hover { background: var(--accent-hover); }
|
|
88
|
-
.btn-secondary {
|
|
89
|
-
background: #1e2336;
|
|
90
|
-
border-color: var(--border);
|
|
91
|
-
color: var(--text);
|
|
92
|
-
}
|
|
93
|
-
.btn-secondary:hover { background: #262c44; }
|
|
94
|
-
.btn-outline {
|
|
95
|
-
background: transparent;
|
|
96
|
-
border-color: #3b4260;
|
|
97
|
-
color: var(--text);
|
|
98
|
-
}
|
|
99
|
-
.btn-outline:hover { background: rgba(255, 255, 255, 0.05); }
|
|
100
|
-
.btn-danger {
|
|
101
|
-
background: rgba(244, 63, 94, 0.15);
|
|
102
|
-
border-color: rgba(244, 63, 94, 0.3);
|
|
103
|
-
color: var(--rose);
|
|
104
|
-
}
|
|
105
|
-
.btn-danger:hover { background: rgba(244, 63, 94, 0.25); }
|
|
106
|
-
|
|
107
|
-
/* Badges */
|
|
108
|
-
.badge {
|
|
109
|
-
padding: 4px 10px;
|
|
110
|
-
border-radius: 20px;
|
|
111
|
-
font-size: 12px;
|
|
112
|
-
font-weight: 600;
|
|
113
|
-
display: inline-flex;
|
|
114
|
-
align-items: center;
|
|
115
|
-
gap: 6px;
|
|
116
|
-
}
|
|
117
|
-
.badge-dot {
|
|
118
|
-
width: 6px;
|
|
119
|
-
height: 6px;
|
|
120
|
-
border-radius: 50%;
|
|
121
|
-
}
|
|
122
|
-
.badge-indigo { background: rgba(99, 102, 241, 0.15); color: #818cf8; }
|
|
123
|
-
.badge-indigo .badge-dot { background: #818cf8; }
|
|
124
|
-
.badge-emerald { background: rgba(16, 185, 129, 0.15); color: var(--emerald); }
|
|
125
|
-
.badge-emerald .badge-dot { background: var(--emerald); }
|
|
126
|
-
.badge-amber { background: rgba(245, 158, 11, 0.15); color: var(--amber); }
|
|
127
|
-
.badge-amber .badge-dot { background: var(--amber); }
|
|
128
|
-
.badge-rose { background: rgba(244, 63, 94, 0.15); color: var(--rose); }
|
|
129
|
-
.badge-rose .badge-dot { background: var(--rose); }
|
|
130
|
-
|
|
131
|
-
/* Inputs */
|
|
132
|
-
.input-group {
|
|
133
|
-
display: flex;
|
|
134
|
-
flex-direction: column;
|
|
135
|
-
gap: 6px;
|
|
136
|
-
flex: 1;
|
|
137
|
-
min-width: 200px;
|
|
138
|
-
}
|
|
139
|
-
.input-label {
|
|
140
|
-
font-size: 12px;
|
|
141
|
-
font-weight: 500;
|
|
142
|
-
color: var(--text-muted);
|
|
143
|
-
}
|
|
144
|
-
.input-field {
|
|
145
|
-
background: #0d0f17;
|
|
146
|
-
border: 1px solid var(--border);
|
|
147
|
-
border-radius: 8px;
|
|
148
|
-
padding: 9px 12px;
|
|
149
|
-
color: var(--text);
|
|
150
|
-
font-size: 13px;
|
|
151
|
-
outline: none;
|
|
152
|
-
transition: border-color 0.15s ease;
|
|
153
|
-
}
|
|
154
|
-
.input-field:focus {
|
|
155
|
-
border-color: var(--accent);
|
|
156
|
-
}
|
|
157
|
-
</style>
|
|
158
|
-
</head>
|
|
159
|
-
<body>
|
|
160
|
-
<div class="header">
|
|
161
|
-
<h1 class="title">Design System Components</h1>
|
|
162
|
-
<p class="subtitle">Reusable UI atoms for consistency across platforms</p>
|
|
163
|
-
</div>
|
|
164
|
-
|
|
165
|
-
<div class="section">
|
|
166
|
-
<div class="section-title">Buttons & Interactive Triggers</div>
|
|
167
|
-
<div class="flex-row">
|
|
168
|
-
<button class="btn btn-primary"><span>✨</span> Primary Action</button>
|
|
169
|
-
<button class="btn btn-secondary">Secondary Action</button>
|
|
170
|
-
<button class="btn btn-outline">Outline Button</button>
|
|
171
|
-
<button class="btn btn-danger"><span>🗑️</span> Danger Action</button>
|
|
172
|
-
</div>
|
|
173
|
-
</div>
|
|
174
|
-
|
|
175
|
-
<div class="section">
|
|
176
|
-
<div class="section-title">Status Pills & Badges</div>
|
|
177
|
-
<div class="flex-row">
|
|
178
|
-
<div class="badge badge-indigo"><span class="badge-dot"></span> In Progress</div>
|
|
179
|
-
<div class="badge badge-emerald"><span class="badge-dot"></span> Active / Healthy</div>
|
|
180
|
-
<div class="badge badge-amber"><span class="badge-dot"></span> Review Required</div>
|
|
181
|
-
<div class="badge badge-rose"><span class="badge-dot"></span> Error / Offline</div>
|
|
182
|
-
</div>
|
|
183
|
-
</div>
|
|
184
|
-
|
|
185
|
-
<div class="section">
|
|
186
|
-
<div class="section-title">Form Controls</div>
|
|
187
|
-
<div class="flex-row">
|
|
188
|
-
<div class="input-group">
|
|
189
|
-
<label class="input-label">Project Name</label>
|
|
190
|
-
<input type="text" class="input-field" value="HtmlBoard Studio" />
|
|
191
|
-
</div>
|
|
192
|
-
<div class="input-group">
|
|
193
|
-
<label class="input-label">Environment Target</label>
|
|
194
|
-
<input type="text" class="input-field" value="production-edge-01" />
|
|
195
|
-
</div>
|
|
196
|
-
</div>
|
|
197
|
-
</div>
|
|
198
|
-
</body>
|
|
199
|
-
</html>
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"title": "Design Exploration Canvas",
|
|
3
|
-
"description": "Infinite canvas and artboard explorer for HTML designs and components",
|
|
4
|
-
"sections": [
|
|
5
|
-
{
|
|
6
|
-
"id": "screens",
|
|
7
|
-
"name": "Screen Layouts",
|
|
8
|
-
"description": "Full page layouts across mobile and desktop viewports",
|
|
9
|
-
"artboards": [
|
|
10
|
-
{
|
|
11
|
-
"id": "desktop-dashboard",
|
|
12
|
-
"title": "Desktop Dashboard",
|
|
13
|
-
"description": "Main analytics dashboard with sidebar, metric cards, and charts",
|
|
14
|
-
"file": "artboards/desktop.html",
|
|
15
|
-
"width": 1280,
|
|
16
|
-
"height": 820,
|
|
17
|
-
"category": "desktop",
|
|
18
|
-
"tags": ["desktop", "dashboard", "analytics", "dark-mode"]
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
"id": "mobile-app",
|
|
22
|
-
"title": "Mobile App Feed",
|
|
23
|
-
"description": "Smartphone screen with balance card, quick actions, and transaction feed",
|
|
24
|
-
"file": "artboards/mobile.html",
|
|
25
|
-
"width": 390,
|
|
26
|
-
"height": 844,
|
|
27
|
-
"category": "mobile",
|
|
28
|
-
"tags": ["mobile", "ios", "feed", "finance"]
|
|
29
|
-
}
|
|
30
|
-
]
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
"id": "components",
|
|
34
|
-
"name": "Component Library",
|
|
35
|
-
"description": "Reusable atomic UI blocks and design system primitives",
|
|
36
|
-
"artboards": [
|
|
37
|
-
{
|
|
38
|
-
"id": "ui-primitives",
|
|
39
|
-
"title": "UI Component Kit",
|
|
40
|
-
"description": "Buttons, inputs, badges, cards, and interactive elements",
|
|
41
|
-
"file": "artboards/components.html",
|
|
42
|
-
"width": 780,
|
|
43
|
-
"height": 720,
|
|
44
|
-
"category": "components",
|
|
45
|
-
"tags": ["design-system", "buttons", "badges", "inputs"]
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
}
|
|
49
|
-
]
|
|
50
|
-
}
|