@sekiui/cli 0.0.71
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/commands/add.d.ts +7 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +111 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/init.d.ts +2 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +241 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/components/registry.d.ts +12 -0
- package/dist/components/registry.d.ts.map +1 -0
- package/dist/components/registry.js +593 -0
- package/dist/components/registry.js.map +1 -0
- package/dist/frameworks/angular.d.ts +4 -0
- package/dist/frameworks/angular.d.ts.map +1 -0
- package/dist/frameworks/angular.js +60 -0
- package/dist/frameworks/angular.js.map +1 -0
- package/dist/frameworks/detect.d.ts +4 -0
- package/dist/frameworks/detect.d.ts.map +1 -0
- package/dist/frameworks/detect.js +72 -0
- package/dist/frameworks/detect.js.map +1 -0
- package/dist/frameworks/react.d.ts +5 -0
- package/dist/frameworks/react.d.ts.map +1 -0
- package/dist/frameworks/react.js +52 -0
- package/dist/frameworks/react.js.map +1 -0
- package/dist/frameworks/vanilla.d.ts +3 -0
- package/dist/frameworks/vanilla.d.ts.map +1 -0
- package/dist/frameworks/vanilla.js +49 -0
- package/dist/frameworks/vanilla.js.map +1 -0
- package/dist/frameworks/vue.d.ts +4 -0
- package/dist/frameworks/vue.d.ts.map +1 -0
- package/dist/frameworks/vue.js +63 -0
- package/dist/frameworks/vue.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +31 -0
- package/dist/index.js.map +1 -0
- package/dist/themes/index.d.ts +13 -0
- package/dist/themes/index.d.ts.map +1 -0
- package/dist/themes/index.js +33 -0
- package/dist/themes/index.js.map +1 -0
- package/dist/themes/presets/blue.d.ts +3 -0
- package/dist/themes/presets/blue.d.ts.map +1 -0
- package/dist/themes/presets/blue.js +49 -0
- package/dist/themes/presets/blue.js.map +1 -0
- package/dist/themes/presets/neutral.d.ts +3 -0
- package/dist/themes/presets/neutral.d.ts.map +1 -0
- package/dist/themes/presets/neutral.js +49 -0
- package/dist/themes/presets/neutral.js.map +1 -0
- package/dist/themes/presets/rose.d.ts +3 -0
- package/dist/themes/presets/rose.d.ts.map +1 -0
- package/dist/themes/presets/rose.js +49 -0
- package/dist/themes/presets/rose.js.map +1 -0
- package/dist/themes/presets/slate.d.ts +3 -0
- package/dist/themes/presets/slate.d.ts.map +1 -0
- package/dist/themes/presets/slate.js +49 -0
- package/dist/themes/presets/slate.js.map +1 -0
- package/dist/themes/presets/violet.d.ts +3 -0
- package/dist/themes/presets/violet.d.ts.map +1 -0
- package/dist/themes/presets/violet.js +49 -0
- package/dist/themes/presets/violet.js.map +1 -0
- package/dist/themes/presets/zinc.d.ts +3 -0
- package/dist/themes/presets/zinc.d.ts.map +1 -0
- package/dist/themes/presets/zinc.js +49 -0
- package/dist/themes/presets/zinc.js.map +1 -0
- package/dist/themes/types.d.ts +8 -0
- package/dist/themes/types.d.ts.map +1 -0
- package/dist/themes/types.js +30 -0
- package/dist/themes/types.js.map +1 -0
- package/dist/utils/css.d.ts +4 -0
- package/dist/utils/css.d.ts.map +1 -0
- package/dist/utils/css.js +45 -0
- package/dist/utils/css.js.map +1 -0
- package/package.json +40 -0
|
@@ -0,0 +1,593 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.COMPONENT_REGISTRY = void 0;
|
|
4
|
+
exports.getComponent = getComponent;
|
|
5
|
+
exports.listComponents = listComponents;
|
|
6
|
+
const IMPORT_SNIPPET = `// Already included if you ran: npx sekiui init
|
|
7
|
+
// To load manually:
|
|
8
|
+
import { defineCustomElements } from '@sekiui/elements/loader';
|
|
9
|
+
defineCustomElements();`;
|
|
10
|
+
const CDN_SNIPPET = `<script type="module" src="https://unpkg.com/@sekiui/elements@latest/dist/sekiui/sekiui.esm.js"></script>`;
|
|
11
|
+
exports.COMPONENT_REGISTRY = {
|
|
12
|
+
button: {
|
|
13
|
+
name: 'Button',
|
|
14
|
+
tag: 'seki-button',
|
|
15
|
+
description: 'Trigger actions with multiple variants and sizes.',
|
|
16
|
+
cssTokens: [
|
|
17
|
+
'--seki-button-radius',
|
|
18
|
+
'--seki-button-font-weight',
|
|
19
|
+
'--seki-button-transition-duration',
|
|
20
|
+
'--seki-button-primary-bg',
|
|
21
|
+
'--seki-button-primary-text',
|
|
22
|
+
'--seki-button-shadow',
|
|
23
|
+
'--seki-button-disabled-opacity',
|
|
24
|
+
],
|
|
25
|
+
usageByFramework: {
|
|
26
|
+
react: `${IMPORT_SNIPPET}
|
|
27
|
+
|
|
28
|
+
// JSX usage
|
|
29
|
+
<seki-button variant="default">Click me</seki-button>
|
|
30
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
31
|
+
<seki-button variant="outline">Outline</seki-button>
|
|
32
|
+
<seki-button variant="ghost">Ghost</seki-button>
|
|
33
|
+
<seki-button variant="destructive">Delete</seki-button>
|
|
34
|
+
<seki-button variant="link">Link</seki-button>
|
|
35
|
+
|
|
36
|
+
// Sizes: sm | default | lg | icon
|
|
37
|
+
<seki-button size="sm">Small</seki-button>
|
|
38
|
+
<seki-button size="lg">Large</seki-button>
|
|
39
|
+
<seki-button disabled>Disabled</seki-button>`,
|
|
40
|
+
vue: `${IMPORT_SNIPPET}
|
|
41
|
+
|
|
42
|
+
<!-- Vue template -->
|
|
43
|
+
<seki-button variant="default">Click me</seki-button>
|
|
44
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
45
|
+
<seki-button variant="outline">Outline</seki-button>
|
|
46
|
+
<seki-button variant="ghost">Ghost</seki-button>
|
|
47
|
+
<seki-button variant="destructive">Delete</seki-button>
|
|
48
|
+
<seki-button :disabled="isDisabled">Conditional</seki-button>`,
|
|
49
|
+
angular: `${IMPORT_SNIPPET}
|
|
50
|
+
|
|
51
|
+
<!-- Angular template -->
|
|
52
|
+
<seki-button variant="default">Click me</seki-button>
|
|
53
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
54
|
+
<seki-button variant="outline">Outline</seki-button>
|
|
55
|
+
<seki-button [attr.disabled]="isDisabled || null">Conditional</seki-button>`,
|
|
56
|
+
vanilla: `${CDN_SNIPPET}
|
|
57
|
+
|
|
58
|
+
<!-- HTML usage -->
|
|
59
|
+
<seki-button variant="default">Click me</seki-button>
|
|
60
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
61
|
+
<seki-button variant="outline">Outline</seki-button>
|
|
62
|
+
<seki-button variant="ghost">Ghost</seki-button>
|
|
63
|
+
<seki-button variant="destructive">Delete</seki-button>`,
|
|
64
|
+
},
|
|
65
|
+
},
|
|
66
|
+
input: {
|
|
67
|
+
name: 'Input',
|
|
68
|
+
tag: 'seki-input',
|
|
69
|
+
description: 'Text input field with validation states.',
|
|
70
|
+
cssTokens: [
|
|
71
|
+
'--seki-input-bg',
|
|
72
|
+
'--seki-input-border',
|
|
73
|
+
'--seki-input-text',
|
|
74
|
+
'--seki-input-placeholder',
|
|
75
|
+
'--seki-input-radius',
|
|
76
|
+
'--seki-input-ring',
|
|
77
|
+
'--seki-input-invalid-border',
|
|
78
|
+
'--seki-input-disabled-opacity',
|
|
79
|
+
],
|
|
80
|
+
usageByFramework: {
|
|
81
|
+
react: `${IMPORT_SNIPPET}
|
|
82
|
+
|
|
83
|
+
// JSX usage
|
|
84
|
+
<seki-input
|
|
85
|
+
placeholder="Email address"
|
|
86
|
+
type="email"
|
|
87
|
+
value={email}
|
|
88
|
+
onSekiChange={(e) => setEmail(e.detail)}
|
|
89
|
+
/>
|
|
90
|
+
<seki-input invalid placeholder="Error state" />
|
|
91
|
+
<seki-input disabled placeholder="Disabled" />`,
|
|
92
|
+
vue: `${IMPORT_SNIPPET}
|
|
93
|
+
|
|
94
|
+
<!-- Vue template -->
|
|
95
|
+
<seki-input
|
|
96
|
+
placeholder="Email address"
|
|
97
|
+
type="email"
|
|
98
|
+
:value="email"
|
|
99
|
+
@sekiChange="email = $event.detail"
|
|
100
|
+
/>
|
|
101
|
+
<seki-input invalid placeholder="Error state" />`,
|
|
102
|
+
angular: `${IMPORT_SNIPPET}
|
|
103
|
+
|
|
104
|
+
<!-- Angular template -->
|
|
105
|
+
<seki-input
|
|
106
|
+
placeholder="Email address"
|
|
107
|
+
type="email"
|
|
108
|
+
[value]="email"
|
|
109
|
+
(sekiChange)="email = $event.detail"
|
|
110
|
+
></seki-input>`,
|
|
111
|
+
vanilla: `${CDN_SNIPPET}
|
|
112
|
+
|
|
113
|
+
<!-- HTML usage -->
|
|
114
|
+
<seki-input placeholder="Email address" type="email"></seki-input>
|
|
115
|
+
<seki-input invalid placeholder="Error state"></seki-input>
|
|
116
|
+
|
|
117
|
+
<script>
|
|
118
|
+
document.querySelector('seki-input').addEventListener('sekiChange', (e) => {
|
|
119
|
+
console.log(e.detail);
|
|
120
|
+
});
|
|
121
|
+
</script>`,
|
|
122
|
+
},
|
|
123
|
+
},
|
|
124
|
+
select: {
|
|
125
|
+
name: 'Select',
|
|
126
|
+
tag: 'seki-select',
|
|
127
|
+
description: 'Dropdown selector with search and grouping support.',
|
|
128
|
+
cssTokens: [
|
|
129
|
+
'--seki-select-trigger-bg',
|
|
130
|
+
'--seki-select-trigger-border',
|
|
131
|
+
'--seki-select-trigger-radius',
|
|
132
|
+
'--seki-select-trigger-bg-hover',
|
|
133
|
+
'--seki-select-content-bg',
|
|
134
|
+
'--seki-select-content-shadow',
|
|
135
|
+
'--seki-select-option-bg-hover',
|
|
136
|
+
'--seki-select-option-bg-selected',
|
|
137
|
+
],
|
|
138
|
+
usageByFramework: {
|
|
139
|
+
react: `${IMPORT_SNIPPET}
|
|
140
|
+
|
|
141
|
+
// JSX usage
|
|
142
|
+
<seki-select placeholder="Pick one" onSekiChange={(e) => console.log(e.detail)}>
|
|
143
|
+
<seki-select-option value="a">Option A</seki-select-option>
|
|
144
|
+
<seki-select-option value="b">Option B</seki-select-option>
|
|
145
|
+
<seki-select-option value="c" disabled>Disabled</seki-select-option>
|
|
146
|
+
</seki-select>
|
|
147
|
+
|
|
148
|
+
// With groups
|
|
149
|
+
<seki-select placeholder="Select fruit">
|
|
150
|
+
<seki-select-group label="Citrus">
|
|
151
|
+
<seki-select-option value="orange">Orange</seki-select-option>
|
|
152
|
+
<seki-select-option value="lemon">Lemon</seki-select-option>
|
|
153
|
+
</seki-select-group>
|
|
154
|
+
<seki-select-group label="Berries">
|
|
155
|
+
<seki-select-option value="strawberry">Strawberry</seki-select-option>
|
|
156
|
+
</seki-select-group>
|
|
157
|
+
</seki-select>`,
|
|
158
|
+
vue: `${IMPORT_SNIPPET}
|
|
159
|
+
|
|
160
|
+
<!-- Vue template -->
|
|
161
|
+
<seki-select placeholder="Pick one" @sekiChange="selected = $event.detail">
|
|
162
|
+
<seki-select-option value="a">Option A</seki-select-option>
|
|
163
|
+
<seki-select-option value="b">Option B</seki-select-option>
|
|
164
|
+
</seki-select>`,
|
|
165
|
+
angular: `${IMPORT_SNIPPET}
|
|
166
|
+
|
|
167
|
+
<!-- Angular template -->
|
|
168
|
+
<seki-select placeholder="Pick one" (sekiChange)="selected = $event.detail">
|
|
169
|
+
<seki-select-option value="a">Option A</seki-select-option>
|
|
170
|
+
<seki-select-option value="b">Option B</seki-select-option>
|
|
171
|
+
</seki-select>`,
|
|
172
|
+
vanilla: `${CDN_SNIPPET}
|
|
173
|
+
|
|
174
|
+
<!-- HTML usage -->
|
|
175
|
+
<seki-select placeholder="Pick one">
|
|
176
|
+
<seki-select-option value="a">Option A</seki-select-option>
|
|
177
|
+
<seki-select-option value="b">Option B</seki-select-option>
|
|
178
|
+
<seki-select-option value="c" disabled>Disabled</seki-select-option>
|
|
179
|
+
</seki-select>`,
|
|
180
|
+
},
|
|
181
|
+
},
|
|
182
|
+
dialog: {
|
|
183
|
+
name: 'Dialog',
|
|
184
|
+
tag: 'seki-dialog',
|
|
185
|
+
description: 'Modal dialog with accessible focus management.',
|
|
186
|
+
cssTokens: [
|
|
187
|
+
'--seki-dialog-bg',
|
|
188
|
+
'--seki-dialog-border',
|
|
189
|
+
'--seki-dialog-radius',
|
|
190
|
+
'--seki-dialog-shadow',
|
|
191
|
+
'--seki-dialog-overlay-bg',
|
|
192
|
+
'--seki-dialog-max-width',
|
|
193
|
+
],
|
|
194
|
+
usageByFramework: {
|
|
195
|
+
react: `${IMPORT_SNIPPET}
|
|
196
|
+
|
|
197
|
+
// JSX usage
|
|
198
|
+
<seki-dialog open={isOpen} onSekiClose={() => setIsOpen(false)}>
|
|
199
|
+
<div slot="header">Dialog Title</div>
|
|
200
|
+
<div slot="content">
|
|
201
|
+
<p>Dialog content goes here.</p>
|
|
202
|
+
</div>
|
|
203
|
+
<div slot="footer">
|
|
204
|
+
<seki-button variant="outline" onClick={() => setIsOpen(false)}>Cancel</seki-button>
|
|
205
|
+
<seki-button variant="default">Confirm</seki-button>
|
|
206
|
+
</div>
|
|
207
|
+
</seki-dialog>`,
|
|
208
|
+
vue: `${IMPORT_SNIPPET}
|
|
209
|
+
|
|
210
|
+
<!-- Vue template -->
|
|
211
|
+
<seki-dialog :open="isOpen" @sekiClose="isOpen = false">
|
|
212
|
+
<div slot="header">Dialog Title</div>
|
|
213
|
+
<div slot="content">
|
|
214
|
+
<p>Dialog content goes here.</p>
|
|
215
|
+
</div>
|
|
216
|
+
<div slot="footer">
|
|
217
|
+
<seki-button variant="outline" @click="isOpen = false">Cancel</seki-button>
|
|
218
|
+
<seki-button variant="default">Confirm</seki-button>
|
|
219
|
+
</div>
|
|
220
|
+
</seki-dialog>`,
|
|
221
|
+
angular: `${IMPORT_SNIPPET}
|
|
222
|
+
|
|
223
|
+
<!-- Angular template -->
|
|
224
|
+
<seki-dialog [open]="isOpen" (sekiClose)="isOpen = false">
|
|
225
|
+
<div slot="header">Dialog Title</div>
|
|
226
|
+
<div slot="content">
|
|
227
|
+
<p>Dialog content goes here.</p>
|
|
228
|
+
</div>
|
|
229
|
+
<div slot="footer">
|
|
230
|
+
<seki-button variant="outline" (click)="isOpen = false">Cancel</seki-button>
|
|
231
|
+
<seki-button variant="default">Confirm</seki-button>
|
|
232
|
+
</div>
|
|
233
|
+
</seki-dialog>`,
|
|
234
|
+
vanilla: `${CDN_SNIPPET}
|
|
235
|
+
|
|
236
|
+
<!-- HTML usage -->
|
|
237
|
+
<seki-dialog id="my-dialog">
|
|
238
|
+
<div slot="header">Dialog Title</div>
|
|
239
|
+
<div slot="content"><p>Dialog content goes here.</p></div>
|
|
240
|
+
<div slot="footer">
|
|
241
|
+
<seki-button variant="outline" id="cancel-btn">Cancel</seki-button>
|
|
242
|
+
<seki-button variant="default">Confirm</seki-button>
|
|
243
|
+
</div>
|
|
244
|
+
</seki-dialog>
|
|
245
|
+
|
|
246
|
+
<seki-button onclick="document.getElementById('my-dialog').open = true">Open Dialog</seki-button>
|
|
247
|
+
|
|
248
|
+
<script>
|
|
249
|
+
document.getElementById('cancel-btn').addEventListener('click', () => {
|
|
250
|
+
document.getElementById('my-dialog').open = false;
|
|
251
|
+
});
|
|
252
|
+
</script>`,
|
|
253
|
+
},
|
|
254
|
+
},
|
|
255
|
+
badge: {
|
|
256
|
+
name: 'Badge',
|
|
257
|
+
tag: 'seki-badge',
|
|
258
|
+
description: 'Small status indicator or label.',
|
|
259
|
+
cssTokens: [
|
|
260
|
+
'--seki-badge-default-bg',
|
|
261
|
+
'--seki-badge-default-text',
|
|
262
|
+
'--seki-badge-secondary-bg',
|
|
263
|
+
'--seki-badge-secondary-text',
|
|
264
|
+
'--seki-badge-destructive-bg',
|
|
265
|
+
'--seki-badge-font-size',
|
|
266
|
+
'--seki-badge-font-weight',
|
|
267
|
+
],
|
|
268
|
+
usageByFramework: {
|
|
269
|
+
react: `${IMPORT_SNIPPET}
|
|
270
|
+
|
|
271
|
+
// JSX usage
|
|
272
|
+
<seki-badge>Default</seki-badge>
|
|
273
|
+
<seki-badge variant="secondary">Secondary</seki-badge>
|
|
274
|
+
<seki-badge variant="destructive">Error</seki-badge>
|
|
275
|
+
<seki-badge variant="outline">Outline</seki-badge>`,
|
|
276
|
+
vue: `${IMPORT_SNIPPET}
|
|
277
|
+
|
|
278
|
+
<!-- Vue template -->
|
|
279
|
+
<seki-badge>Default</seki-badge>
|
|
280
|
+
<seki-badge variant="secondary">Secondary</seki-badge>
|
|
281
|
+
<seki-badge variant="destructive">Error</seki-badge>
|
|
282
|
+
<seki-badge variant="outline">Outline</seki-badge>`,
|
|
283
|
+
angular: `${IMPORT_SNIPPET}
|
|
284
|
+
|
|
285
|
+
<!-- Angular template -->
|
|
286
|
+
<seki-badge>Default</seki-badge>
|
|
287
|
+
<seki-badge variant="secondary">Secondary</seki-badge>
|
|
288
|
+
<seki-badge variant="destructive">Error</seki-badge>`,
|
|
289
|
+
vanilla: `${CDN_SNIPPET}
|
|
290
|
+
|
|
291
|
+
<!-- HTML usage -->
|
|
292
|
+
<seki-badge>Default</seki-badge>
|
|
293
|
+
<seki-badge variant="secondary">Secondary</seki-badge>
|
|
294
|
+
<seki-badge variant="destructive">Error</seki-badge>
|
|
295
|
+
<seki-badge variant="outline">Outline</seki-badge>`,
|
|
296
|
+
},
|
|
297
|
+
},
|
|
298
|
+
card: {
|
|
299
|
+
name: 'Card',
|
|
300
|
+
tag: 'seki-card',
|
|
301
|
+
description: 'Content container with header, body, and footer slots.',
|
|
302
|
+
cssTokens: [
|
|
303
|
+
'--seki-card-bg',
|
|
304
|
+
'--seki-card-border',
|
|
305
|
+
'--seki-card-radius',
|
|
306
|
+
'--seki-card-shadow',
|
|
307
|
+
'--seki-card-padding',
|
|
308
|
+
],
|
|
309
|
+
usageByFramework: {
|
|
310
|
+
react: `${IMPORT_SNIPPET}
|
|
311
|
+
|
|
312
|
+
// JSX usage
|
|
313
|
+
<seki-card>
|
|
314
|
+
<div slot="header">
|
|
315
|
+
<h3>Card Title</h3>
|
|
316
|
+
<p>Card description</p>
|
|
317
|
+
</div>
|
|
318
|
+
<div slot="content">
|
|
319
|
+
<p>Card body content here.</p>
|
|
320
|
+
</div>
|
|
321
|
+
<div slot="footer">
|
|
322
|
+
<seki-button variant="default">Action</seki-button>
|
|
323
|
+
</div>
|
|
324
|
+
</seki-card>`,
|
|
325
|
+
vue: `${IMPORT_SNIPPET}
|
|
326
|
+
|
|
327
|
+
<!-- Vue template -->
|
|
328
|
+
<seki-card>
|
|
329
|
+
<div slot="header">
|
|
330
|
+
<h3>Card Title</h3>
|
|
331
|
+
</div>
|
|
332
|
+
<div slot="content">
|
|
333
|
+
<p>Card body content here.</p>
|
|
334
|
+
</div>
|
|
335
|
+
<div slot="footer">
|
|
336
|
+
<seki-button variant="default">Action</seki-button>
|
|
337
|
+
</div>
|
|
338
|
+
</seki-card>`,
|
|
339
|
+
angular: `${IMPORT_SNIPPET}
|
|
340
|
+
|
|
341
|
+
<!-- Angular template -->
|
|
342
|
+
<seki-card>
|
|
343
|
+
<div slot="header"><h3>Card Title</h3></div>
|
|
344
|
+
<div slot="content"><p>Card body content here.</p></div>
|
|
345
|
+
<div slot="footer">
|
|
346
|
+
<seki-button variant="default">Action</seki-button>
|
|
347
|
+
</div>
|
|
348
|
+
</seki-card>`,
|
|
349
|
+
vanilla: `${CDN_SNIPPET}
|
|
350
|
+
|
|
351
|
+
<!-- HTML usage -->
|
|
352
|
+
<seki-card>
|
|
353
|
+
<div slot="header"><h3>Card Title</h3></div>
|
|
354
|
+
<div slot="content"><p>Card body content here.</p></div>
|
|
355
|
+
<div slot="footer">
|
|
356
|
+
<seki-button variant="default">Action</seki-button>
|
|
357
|
+
</div>
|
|
358
|
+
</seki-card>`,
|
|
359
|
+
},
|
|
360
|
+
},
|
|
361
|
+
alert: {
|
|
362
|
+
name: 'Alert',
|
|
363
|
+
tag: 'seki-alert',
|
|
364
|
+
description: 'Contextual feedback message with variants.',
|
|
365
|
+
cssTokens: [
|
|
366
|
+
'--seki-alert-bg',
|
|
367
|
+
'--seki-alert-border',
|
|
368
|
+
'--seki-alert-radius',
|
|
369
|
+
'--seki-alert-text',
|
|
370
|
+
'--seki-alert-icon-color',
|
|
371
|
+
],
|
|
372
|
+
usageByFramework: {
|
|
373
|
+
react: `${IMPORT_SNIPPET}
|
|
374
|
+
|
|
375
|
+
// JSX usage
|
|
376
|
+
<seki-alert variant="default">
|
|
377
|
+
<span slot="title">Heads up!</span>
|
|
378
|
+
<span slot="description">You can add components and dependencies.</span>
|
|
379
|
+
</seki-alert>
|
|
380
|
+
|
|
381
|
+
<seki-alert variant="destructive">
|
|
382
|
+
<span slot="title">Error</span>
|
|
383
|
+
<span slot="description">Your session has expired. Please log in again.</span>
|
|
384
|
+
</seki-alert>`,
|
|
385
|
+
vue: `${IMPORT_SNIPPET}
|
|
386
|
+
|
|
387
|
+
<!-- Vue template -->
|
|
388
|
+
<seki-alert variant="default">
|
|
389
|
+
<span slot="title">Heads up!</span>
|
|
390
|
+
<span slot="description">You can add components and dependencies.</span>
|
|
391
|
+
</seki-alert>`,
|
|
392
|
+
angular: `${IMPORT_SNIPPET}
|
|
393
|
+
|
|
394
|
+
<!-- Angular template -->
|
|
395
|
+
<seki-alert variant="default">
|
|
396
|
+
<span slot="title">Heads up!</span>
|
|
397
|
+
<span slot="description">You can add components and dependencies.</span>
|
|
398
|
+
</seki-alert>`,
|
|
399
|
+
vanilla: `${CDN_SNIPPET}
|
|
400
|
+
|
|
401
|
+
<!-- HTML usage -->
|
|
402
|
+
<seki-alert variant="default">
|
|
403
|
+
<span slot="title">Heads up!</span>
|
|
404
|
+
<span slot="description">You can add components and dependencies.</span>
|
|
405
|
+
</seki-alert>
|
|
406
|
+
<seki-alert variant="destructive">
|
|
407
|
+
<span slot="title">Error</span>
|
|
408
|
+
<span slot="description">Your session has expired.</span>
|
|
409
|
+
</seki-alert>`,
|
|
410
|
+
},
|
|
411
|
+
},
|
|
412
|
+
tooltip: {
|
|
413
|
+
name: 'Tooltip',
|
|
414
|
+
tag: 'seki-tooltip',
|
|
415
|
+
description: 'Contextual popup on hover or focus.',
|
|
416
|
+
cssTokens: [
|
|
417
|
+
'--tooltip-bg',
|
|
418
|
+
'--tooltip-text',
|
|
419
|
+
'--tooltip-padding',
|
|
420
|
+
'--tooltip-radius',
|
|
421
|
+
'--tooltip-shadow',
|
|
422
|
+
'--tooltip-font-size',
|
|
423
|
+
'--tooltip-arrow-size',
|
|
424
|
+
],
|
|
425
|
+
usageByFramework: {
|
|
426
|
+
react: `${IMPORT_SNIPPET}
|
|
427
|
+
|
|
428
|
+
// JSX usage
|
|
429
|
+
<seki-tooltip content="This is a tooltip">
|
|
430
|
+
<seki-button variant="outline">Hover me</seki-button>
|
|
431
|
+
</seki-tooltip>
|
|
432
|
+
|
|
433
|
+
// With placement
|
|
434
|
+
<seki-tooltip content="Top tooltip" placement="top">
|
|
435
|
+
<seki-button>Top</seki-button>
|
|
436
|
+
</seki-tooltip>`,
|
|
437
|
+
vue: `${IMPORT_SNIPPET}
|
|
438
|
+
|
|
439
|
+
<!-- Vue template -->
|
|
440
|
+
<seki-tooltip content="This is a tooltip">
|
|
441
|
+
<seki-button variant="outline">Hover me</seki-button>
|
|
442
|
+
</seki-tooltip>`,
|
|
443
|
+
angular: `${IMPORT_SNIPPET}
|
|
444
|
+
|
|
445
|
+
<!-- Angular template -->
|
|
446
|
+
<seki-tooltip content="This is a tooltip">
|
|
447
|
+
<seki-button variant="outline">Hover me</seki-button>
|
|
448
|
+
</seki-tooltip>`,
|
|
449
|
+
vanilla: `${CDN_SNIPPET}
|
|
450
|
+
|
|
451
|
+
<!-- HTML usage -->
|
|
452
|
+
<seki-tooltip content="This is a tooltip">
|
|
453
|
+
<seki-button variant="outline">Hover me</seki-button>
|
|
454
|
+
</seki-tooltip>`,
|
|
455
|
+
},
|
|
456
|
+
},
|
|
457
|
+
'dropdown-menu': {
|
|
458
|
+
name: 'Dropdown Menu',
|
|
459
|
+
tag: 'seki-dropdown-menu',
|
|
460
|
+
description: 'Contextual menu triggered by a button or element.',
|
|
461
|
+
cssTokens: [
|
|
462
|
+
'--seki-dropdown-content-bg',
|
|
463
|
+
'--seki-dropdown-content-border',
|
|
464
|
+
'--seki-dropdown-content-radius',
|
|
465
|
+
'--seki-dropdown-content-shadow',
|
|
466
|
+
'--seki-dropdown-item-bg-hover',
|
|
467
|
+
'--seki-dropdown-item-padding',
|
|
468
|
+
],
|
|
469
|
+
usageByFramework: {
|
|
470
|
+
react: `${IMPORT_SNIPPET}
|
|
471
|
+
|
|
472
|
+
// JSX usage
|
|
473
|
+
<seki-dropdown-menu>
|
|
474
|
+
<seki-button slot="trigger" variant="outline">Open Menu</seki-button>
|
|
475
|
+
<seki-dropdown-menu-item value="profile">Profile</seki-dropdown-menu-item>
|
|
476
|
+
<seki-dropdown-menu-item value="settings">Settings</seki-dropdown-menu-item>
|
|
477
|
+
<seki-dropdown-menu-separator />
|
|
478
|
+
<seki-dropdown-menu-item value="logout">Log out</seki-dropdown-menu-item>
|
|
479
|
+
</seki-dropdown-menu>`,
|
|
480
|
+
vue: `${IMPORT_SNIPPET}
|
|
481
|
+
|
|
482
|
+
<!-- Vue template -->
|
|
483
|
+
<seki-dropdown-menu>
|
|
484
|
+
<seki-button slot="trigger" variant="outline">Open Menu</seki-button>
|
|
485
|
+
<seki-dropdown-menu-item value="profile">Profile</seki-dropdown-menu-item>
|
|
486
|
+
<seki-dropdown-menu-item value="settings">Settings</seki-dropdown-menu-item>
|
|
487
|
+
<seki-dropdown-menu-separator />
|
|
488
|
+
<seki-dropdown-menu-item value="logout">Log out</seki-dropdown-menu-item>
|
|
489
|
+
</seki-dropdown-menu>`,
|
|
490
|
+
angular: `${IMPORT_SNIPPET}
|
|
491
|
+
|
|
492
|
+
<!-- Angular template -->
|
|
493
|
+
<seki-dropdown-menu>
|
|
494
|
+
<seki-button slot="trigger" variant="outline">Open Menu</seki-button>
|
|
495
|
+
<seki-dropdown-menu-item value="profile">Profile</seki-dropdown-menu-item>
|
|
496
|
+
<seki-dropdown-menu-item value="settings">Settings</seki-dropdown-menu-item>
|
|
497
|
+
<seki-dropdown-menu-separator></seki-dropdown-menu-separator>
|
|
498
|
+
<seki-dropdown-menu-item value="logout">Log out</seki-dropdown-menu-item>
|
|
499
|
+
</seki-dropdown-menu>`,
|
|
500
|
+
vanilla: `${CDN_SNIPPET}
|
|
501
|
+
|
|
502
|
+
<!-- HTML usage -->
|
|
503
|
+
<seki-dropdown-menu>
|
|
504
|
+
<seki-button slot="trigger" variant="outline">Open Menu</seki-button>
|
|
505
|
+
<seki-dropdown-menu-item value="profile">Profile</seki-dropdown-menu-item>
|
|
506
|
+
<seki-dropdown-menu-item value="settings">Settings</seki-dropdown-menu-item>
|
|
507
|
+
<seki-dropdown-menu-separator></seki-dropdown-menu-separator>
|
|
508
|
+
<seki-dropdown-menu-item value="logout">Log out</seki-dropdown-menu-item>
|
|
509
|
+
</seki-dropdown-menu>`,
|
|
510
|
+
},
|
|
511
|
+
},
|
|
512
|
+
tabs: {
|
|
513
|
+
name: 'Tabs',
|
|
514
|
+
tag: 'seki-tabs',
|
|
515
|
+
description: 'Tabbed navigation for switching between content panels.',
|
|
516
|
+
cssTokens: [
|
|
517
|
+
'--seki-tabs-list-bg',
|
|
518
|
+
'--seki-tabs-trigger-bg-active',
|
|
519
|
+
'--seki-tabs-trigger-text-active',
|
|
520
|
+
'--seki-tabs-trigger-radius',
|
|
521
|
+
'--seki-tabs-content-padding',
|
|
522
|
+
],
|
|
523
|
+
usageByFramework: {
|
|
524
|
+
react: `${IMPORT_SNIPPET}
|
|
525
|
+
|
|
526
|
+
// JSX usage
|
|
527
|
+
<seki-tabs default-value="account">
|
|
528
|
+
<seki-tabs-list>
|
|
529
|
+
<seki-tabs-trigger value="account">Account</seki-tabs-trigger>
|
|
530
|
+
<seki-tabs-trigger value="password">Password</seki-tabs-trigger>
|
|
531
|
+
</seki-tabs-list>
|
|
532
|
+
<seki-tabs-content value="account">
|
|
533
|
+
<p>Account settings content.</p>
|
|
534
|
+
</seki-tabs-content>
|
|
535
|
+
<seki-tabs-content value="password">
|
|
536
|
+
<p>Password settings content.</p>
|
|
537
|
+
</seki-tabs-content>
|
|
538
|
+
</seki-tabs>`,
|
|
539
|
+
vue: `${IMPORT_SNIPPET}
|
|
540
|
+
|
|
541
|
+
<!-- Vue template -->
|
|
542
|
+
<seki-tabs default-value="account">
|
|
543
|
+
<seki-tabs-list>
|
|
544
|
+
<seki-tabs-trigger value="account">Account</seki-tabs-trigger>
|
|
545
|
+
<seki-tabs-trigger value="password">Password</seki-tabs-trigger>
|
|
546
|
+
</seki-tabs-list>
|
|
547
|
+
<seki-tabs-content value="account">
|
|
548
|
+
<p>Account settings content.</p>
|
|
549
|
+
</seki-tabs-content>
|
|
550
|
+
<seki-tabs-content value="password">
|
|
551
|
+
<p>Password settings content.</p>
|
|
552
|
+
</seki-tabs-content>
|
|
553
|
+
</seki-tabs>`,
|
|
554
|
+
angular: `${IMPORT_SNIPPET}
|
|
555
|
+
|
|
556
|
+
<!-- Angular template -->
|
|
557
|
+
<seki-tabs default-value="account">
|
|
558
|
+
<seki-tabs-list>
|
|
559
|
+
<seki-tabs-trigger value="account">Account</seki-tabs-trigger>
|
|
560
|
+
<seki-tabs-trigger value="password">Password</seki-tabs-trigger>
|
|
561
|
+
</seki-tabs-list>
|
|
562
|
+
<seki-tabs-content value="account">
|
|
563
|
+
<p>Account settings content.</p>
|
|
564
|
+
</seki-tabs-content>
|
|
565
|
+
<seki-tabs-content value="password">
|
|
566
|
+
<p>Password settings content.</p>
|
|
567
|
+
</seki-tabs-content>
|
|
568
|
+
</seki-tabs>`,
|
|
569
|
+
vanilla: `${CDN_SNIPPET}
|
|
570
|
+
|
|
571
|
+
<!-- HTML usage -->
|
|
572
|
+
<seki-tabs default-value="account">
|
|
573
|
+
<seki-tabs-list>
|
|
574
|
+
<seki-tabs-trigger value="account">Account</seki-tabs-trigger>
|
|
575
|
+
<seki-tabs-trigger value="password">Password</seki-tabs-trigger>
|
|
576
|
+
</seki-tabs-list>
|
|
577
|
+
<seki-tabs-content value="account">
|
|
578
|
+
<p>Account settings content.</p>
|
|
579
|
+
</seki-tabs-content>
|
|
580
|
+
<seki-tabs-content value="password">
|
|
581
|
+
<p>Password settings content.</p>
|
|
582
|
+
</seki-tabs-content>
|
|
583
|
+
</seki-tabs>`,
|
|
584
|
+
},
|
|
585
|
+
},
|
|
586
|
+
};
|
|
587
|
+
function getComponent(name) {
|
|
588
|
+
return exports.COMPONENT_REGISTRY[name.toLowerCase()];
|
|
589
|
+
}
|
|
590
|
+
function listComponents() {
|
|
591
|
+
return Object.keys(exports.COMPONENT_REGISTRY);
|
|
592
|
+
}
|
|
593
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/components/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular.d.ts","sourceRoot":"","sources":["../../src/frameworks/angular.ts"],"names":[],"mappings":"AAAA,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAmCrE;AAED,wBAAgB,2BAA2B,IAAI,MAAM,CAKpD;AAED,wBAAgB,yBAAyB,IAAI,MAAM,CAkBlD"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getAngularModulePatch = getAngularModulePatch;
|
|
4
|
+
exports.getAngularAppComponentPatch = getAngularAppComponentPatch;
|
|
5
|
+
exports.getAngularSampleComponent = getAngularSampleComponent;
|
|
6
|
+
function getAngularModulePatch(existingContent) {
|
|
7
|
+
if (existingContent.includes('CUSTOM_ELEMENTS_SCHEMA')) {
|
|
8
|
+
return existingContent;
|
|
9
|
+
}
|
|
10
|
+
let patched = existingContent;
|
|
11
|
+
// Add CUSTOM_ELEMENTS_SCHEMA to imports if not there
|
|
12
|
+
if (!patched.includes('CUSTOM_ELEMENTS_SCHEMA')) {
|
|
13
|
+
patched = patched.replace(/import\s*\{([^}]+)\}\s*from\s*'@angular\/core'/, (match, imports) => {
|
|
14
|
+
const importList = imports
|
|
15
|
+
.split(',')
|
|
16
|
+
.map((s) => s.trim())
|
|
17
|
+
.filter(Boolean);
|
|
18
|
+
if (!importList.includes('CUSTOM_ELEMENTS_SCHEMA')) {
|
|
19
|
+
importList.push('CUSTOM_ELEMENTS_SCHEMA');
|
|
20
|
+
}
|
|
21
|
+
return `import { ${importList.join(', ')} } from '@angular/core'`;
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
// Add schemas: [CUSTOM_ELEMENTS_SCHEMA] to @NgModule
|
|
25
|
+
patched = patched.replace(/@NgModule\(\s*\{([^}]+)\}\s*\)/, (match, body) => {
|
|
26
|
+
if (body.includes('schemas')) {
|
|
27
|
+
return match;
|
|
28
|
+
}
|
|
29
|
+
const trimmed = body.trimEnd();
|
|
30
|
+
const separator = trimmed.endsWith(',') ? '\n' : ',\n';
|
|
31
|
+
return `@NgModule({${trimmed}${separator} schemas: [CUSTOM_ELEMENTS_SCHEMA]\n})`;
|
|
32
|
+
});
|
|
33
|
+
return patched;
|
|
34
|
+
}
|
|
35
|
+
function getAngularAppComponentPatch() {
|
|
36
|
+
return `// In app.component.ts or your root component:
|
|
37
|
+
import { defineCustomElements } from '@sekiui/elements/loader';
|
|
38
|
+
defineCustomElements();
|
|
39
|
+
`;
|
|
40
|
+
}
|
|
41
|
+
function getAngularSampleComponent() {
|
|
42
|
+
return `<!-- In your Angular template -->
|
|
43
|
+
<div class="seki-example">
|
|
44
|
+
<h2>SekiUI Example</h2>
|
|
45
|
+
|
|
46
|
+
<div class="button-group">
|
|
47
|
+
<seki-button variant="default">Default</seki-button>
|
|
48
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
49
|
+
<seki-button variant="outline">Outline</seki-button>
|
|
50
|
+
<seki-button variant="ghost">Ghost</seki-button>
|
|
51
|
+
<seki-button variant="destructive">Destructive</seki-button>
|
|
52
|
+
</div>
|
|
53
|
+
|
|
54
|
+
<seki-badge>New</seki-badge>
|
|
55
|
+
|
|
56
|
+
<seki-input placeholder="Type something..."></seki-input>
|
|
57
|
+
</div>
|
|
58
|
+
`;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=angular.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"angular.js","sourceRoot":"","sources":["../../src/frameworks/angular.ts"],"names":[],"mappings":";;AAAA,sDAmCC;AAED,kEAKC;AAED,8DAkBC;AA9DD,SAAgB,qBAAqB,CAAC,eAAuB;IAC3D,IAAI,eAAe,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QACvD,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,GAAG,eAAe,CAAC;IAE9B,qDAAqD;IACrD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,OAAO,CAAC,OAAO,CACvB,gDAAgD,EAChD,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;YACjB,MAAM,UAAU,GAAG,OAAO;iBACvB,KAAK,CAAC,GAAG,CAAC;iBACV,GAAG,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;iBAC5B,MAAM,CAAC,OAAO,CAAC,CAAC;YACnB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACnD,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,YAAY,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC;QACpE,CAAC,CACF,CAAC;IACJ,CAAC;IAED,qDAAqD;IACrD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,gCAAgC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;QAC1E,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YAC7B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QACvD,OAAO,cAAc,OAAO,GAAG,SAAS,yCAAyC,CAAC;IACpF,CAAC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAgB,2BAA2B;IACzC,OAAO;;;CAGR,CAAC;AACF,CAAC;AAED,SAAgB,yBAAyB;IACvC,OAAO;;;;;;;;;;;;;;;;CAgBR,CAAC;AACF,CAAC"}
|