@sekiui/elements 0.0.41 → 0.0.45
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 +79 -21
- package/dist/cdn/index.d.ts +33 -0
- package/dist/cdn/index.js +112 -0
- package/dist/{components/p-qBYH2h9w.js → cdn/p-BLeUUc2-.js} +44 -6
- package/dist/cdn/seki-button.d.ts +11 -0
- package/dist/cdn/seki-button.js +66 -0
- package/dist/cdn/seki-field-description.d.ts +11 -0
- package/dist/cdn/seki-field-description.js +66 -0
- package/dist/cdn/seki-field-error.d.ts +11 -0
- package/dist/cdn/seki-field-error.js +94 -0
- package/dist/cdn/seki-field-group.d.ts +11 -0
- package/dist/cdn/seki-field-group.js +46 -0
- package/dist/cdn/seki-field-label.d.ts +11 -0
- package/dist/cdn/seki-field-label.js +45 -0
- package/dist/cdn/seki-field-legend.d.ts +11 -0
- package/dist/cdn/seki-field-legend.js +36 -0
- package/dist/cdn/seki-field.d.ts +11 -0
- package/dist/cdn/seki-field.js +69 -0
- package/dist/cdn/seki-fieldset.d.ts +11 -0
- package/dist/cdn/seki-fieldset.js +43 -0
- package/dist/cdn/seki-input.d.ts +11 -0
- package/dist/cdn/seki-input.js +133 -0
- package/dist/cdn/seki-skeleton.d.ts +11 -0
- package/dist/cdn/seki-skeleton.js +46 -0
- package/dist/cdn/seki-switch.d.ts +11 -0
- package/dist/cdn/seki-switch.js +6 -0
- package/dist/cjs/{index-DwgP2ssn.js → index-BxD7Xe36.js} +50 -6
- package/dist/cjs/index.cjs.js +2 -2
- package/dist/cjs/loader.cjs.js +3 -4
- package/dist/cjs/seki-button.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-description.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-error.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-group.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-label.cjs.entry.js +2 -2
- package/dist/cjs/seki-field-legend.cjs.entry.js +2 -2
- package/dist/cjs/seki-field.cjs.entry.js +2 -2
- package/dist/cjs/seki-fieldset.cjs.entry.js +2 -2
- package/dist/cjs/seki-input.cjs.entry.js +38 -3
- package/dist/cjs/seki-skeleton.cjs.entry.js +2 -2
- package/dist/cjs/seki-switch.cjs.entry.js +1 -1
- package/dist/cjs/sekiui.cjs.js +3 -4
- package/dist/collection/components/button/seki-button.css +8 -8
- package/dist/collection/components/field/seki-field.css +15 -15
- package/dist/collection/components/field-description/seki-field-description.css +8 -8
- package/dist/collection/components/field-error/seki-field-error.css +8 -8
- package/dist/collection/components/field-group/seki-field-group.css +8 -8
- package/dist/collection/components/field-label/seki-field-label.css +8 -8
- package/dist/collection/components/field-legend/seki-field-legend.css +8 -8
- package/dist/collection/components/fieldset/seki-fieldset.css +8 -8
- package/dist/collection/components/input/seki-input.css +8 -8
- package/dist/collection/components/input/seki-input.js +30 -1
- package/dist/collection/components/skeleton/seki-skeleton.css +8 -8
- package/dist/collection/components/switch/seki-switch.css +355 -0
- package/dist/components/index.js +3 -3
- package/dist/components/p-BFmmBW7R.js +1363 -0
- package/dist/components/seki-button.js +2 -2
- package/dist/components/seki-field-description.js +2 -2
- package/dist/components/seki-field-error.js +2 -2
- package/dist/components/seki-field-group.js +2 -2
- package/dist/components/seki-field-label.js +2 -2
- package/dist/components/seki-field-legend.js +2 -2
- package/dist/components/seki-field.js +2 -2
- package/dist/components/seki-fieldset.js +2 -2
- package/dist/components/seki-input.js +33 -4
- package/dist/components/seki-skeleton.js +2 -2
- package/dist/esm/{index-DVaKDPWs.js → index-ByHohxc0.js} +50 -7
- package/dist/esm/index.js +2 -2
- package/dist/esm/loader.js +3 -4
- package/dist/esm/seki-button.entry.js +2 -2
- package/dist/esm/seki-field-description.entry.js +2 -2
- package/dist/esm/seki-field-error.entry.js +2 -2
- package/dist/esm/seki-field-group.entry.js +2 -2
- package/dist/esm/seki-field-label.entry.js +2 -2
- package/dist/esm/seki-field-legend.entry.js +2 -2
- package/dist/esm/seki-field.entry.js +2 -2
- package/dist/esm/seki-fieldset.entry.js +2 -2
- package/dist/esm/seki-input.entry.js +38 -3
- package/dist/esm/seki-skeleton.entry.js +2 -2
- package/dist/esm/seki-switch.entry.js +1 -1
- package/dist/esm/sekiui.js +3 -4
- package/dist/sekiui/index.esm.js +1 -1
- package/dist/sekiui/p-128cfe90.entry.js +1 -0
- package/dist/sekiui/p-1b1a5e38.entry.js +1 -0
- package/dist/sekiui/p-1c923d08.entry.js +1 -0
- package/dist/sekiui/p-281803dd.entry.js +1 -0
- package/dist/sekiui/p-2ecf7587.entry.js +1 -0
- package/dist/sekiui/p-3b2d3e96.entry.js +1 -0
- package/dist/sekiui/p-459bb637.entry.js +1 -0
- package/dist/sekiui/p-51f2af94.entry.js +1 -0
- package/dist/sekiui/{p-9798772a.entry.js → p-70281e83.entry.js} +1 -1
- package/dist/sekiui/p-ByHohxc0.js +2 -0
- package/dist/sekiui/p-bc921daa.entry.js +1 -0
- package/dist/sekiui/p-d034b071.entry.js +1 -0
- package/dist/sekiui/sekiui.css +2 -0
- package/dist/sekiui/sekiui.esm.js +1 -1
- package/dist/types/components/input/seki-input.d.ts +4 -0
- package/package.json +1 -1
- package/dist/cjs/app-globals-V2Kpy_OQ.js +0 -5
- package/dist/esm/app-globals-DQuL1Twl.js +0 -3
- package/dist/sekiui/p-4471a11b.entry.js +0 -1
- package/dist/sekiui/p-6e145af3.entry.js +0 -1
- package/dist/sekiui/p-90ac85ad.entry.js +0 -1
- package/dist/sekiui/p-9b51119c.entry.js +0 -1
- package/dist/sekiui/p-DQuL1Twl.js +0 -1
- package/dist/sekiui/p-DVaKDPWs.js +0 -2
- package/dist/sekiui/p-b02ec16d.entry.js +0 -1
- package/dist/sekiui/p-b47f6624.entry.js +0 -1
- package/dist/sekiui/p-bfb09d37.entry.js +0 -1
- package/dist/sekiui/p-cc81fc67.entry.js +0 -1
- package/dist/sekiui/p-e57f16b3.entry.js +0 -1
- package/dist/sekiui/p-ea04d3b5.entry.js +0 -1
package/README.md
CHANGED
|
@@ -31,26 +31,33 @@ npm install @sekiui/elements
|
|
|
31
31
|
|
|
32
32
|
### Via CDN (No Build Required)
|
|
33
33
|
|
|
34
|
-
For quick prototyping or projects without a build system, you can load SekiUI directly from a CDN
|
|
34
|
+
For quick prototyping or projects without a build system, you can load SekiUI directly from a CDN.
|
|
35
35
|
|
|
36
|
-
|
|
36
|
+
**⚠️ Important: You must include BOTH the CSS and JavaScript files.**
|
|
37
|
+
|
|
38
|
+
**Latest Stable Version (unpkg):**
|
|
37
39
|
```html
|
|
38
|
-
|
|
40
|
+
<!-- 1. Include design tokens CSS in <head> -->
|
|
41
|
+
<link rel="stylesheet" href="https://unpkg.com/@sekiui/elements@latest/dist/sekiui/sekiui.css">
|
|
42
|
+
|
|
43
|
+
<!-- 2. Load Web Components at end of <body> -->
|
|
44
|
+
<script type="module" src="https://unpkg.com/@sekiui/elements@latest/dist/sekiui/sekiui.esm.js"></script>
|
|
39
45
|
```
|
|
40
46
|
|
|
41
47
|
**Latest Stable Version (jsDelivr):**
|
|
42
48
|
```html
|
|
43
|
-
|
|
44
|
-
|
|
49
|
+
<!-- 1. Include design tokens CSS in <head> -->
|
|
50
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@sekiui/elements@latest/dist/sekiui/sekiui.css">
|
|
45
51
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
<script type="module" src="https://sekiui.github.io/SekiUI/v1.0.0/sekiui.esm.js"></script>
|
|
52
|
+
<!-- 2. Load Web Components at end of <body> -->
|
|
53
|
+
<script type="module" src="https://cdn.jsdelivr.net/npm/@sekiui/elements@latest/dist/sekiui/sekiui.esm.js"></script>
|
|
49
54
|
```
|
|
50
55
|
|
|
51
|
-
**Specific Version (
|
|
56
|
+
**Specific Version (recommended for production):**
|
|
52
57
|
```html
|
|
53
|
-
|
|
58
|
+
<!-- Replace 0.0.41 with your desired version -->
|
|
59
|
+
<link rel="stylesheet" href="https://unpkg.com/@sekiui/elements@0.0.41/dist/sekiui/sekiui.css">
|
|
60
|
+
<script type="module" src="https://unpkg.com/@sekiui/elements@0.0.41/dist/sekiui/sekiui.esm.js"></script>
|
|
54
61
|
```
|
|
55
62
|
|
|
56
63
|
**Complete Example:**
|
|
@@ -61,13 +68,20 @@ For quick prototyping or projects without a build system, you can load SekiUI di
|
|
|
61
68
|
<meta charset="UTF-8">
|
|
62
69
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
63
70
|
<title>SekiUI via CDN</title>
|
|
71
|
+
|
|
72
|
+
<!-- STEP 1: Include SekiUI design tokens CSS -->
|
|
73
|
+
<link rel="stylesheet" href="https://unpkg.com/@sekiui/elements@latest/dist/sekiui/sekiui.css">
|
|
64
74
|
</head>
|
|
65
75
|
<body>
|
|
66
|
-
|
|
67
|
-
<script type="module" src="https://cdn.jsdelivr.net/npm/@sekiui/elements@latest/dist/sekiui.esm.js"></script>
|
|
76
|
+
<h1>SekiUI Components</h1>
|
|
68
77
|
|
|
69
78
|
<!-- Use components directly -->
|
|
70
|
-
<seki-button variant="
|
|
79
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
80
|
+
<seki-button variant="secondary">Secondary</seki-button>
|
|
81
|
+
<seki-input type="email" placeholder="you@example.com"></seki-input>
|
|
82
|
+
|
|
83
|
+
<!-- STEP 2: Load SekiUI Web Components -->
|
|
84
|
+
<script type="module" src="https://unpkg.com/@sekiui/elements@latest/dist/sekiui/sekiui.esm.js"></script>
|
|
71
85
|
</body>
|
|
72
86
|
</html>
|
|
73
87
|
```
|
|
@@ -77,26 +91,59 @@ For quick prototyping or projects without a build system, you can load SekiUI di
|
|
|
77
91
|
- ✅ CORS headers configured for cross-origin requests
|
|
78
92
|
- ✅ Versioned URLs cached long-term (immutable)
|
|
79
93
|
- ✅ Latest URLs cached short-term (updates automatically)
|
|
94
|
+
- ⚠️ **You must include both CSS and JS files** for components to render with proper styling
|
|
80
95
|
- ⚠️ For production, use versioned URLs to ensure consistency
|
|
81
96
|
|
|
82
97
|
## Usage
|
|
83
98
|
|
|
84
99
|
### Web Components (Vanilla JS)
|
|
85
100
|
|
|
101
|
+
When using npm installation, you need to include both the CSS and JavaScript files:
|
|
102
|
+
|
|
86
103
|
```html
|
|
87
|
-
|
|
104
|
+
<!DOCTYPE html>
|
|
105
|
+
<html>
|
|
106
|
+
<head>
|
|
107
|
+
<!-- Include design tokens CSS -->
|
|
108
|
+
<link rel="stylesheet" href="node_modules/@sekiui/elements/dist/sekiui/sekiui.css">
|
|
109
|
+
</head>
|
|
110
|
+
<body>
|
|
111
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
112
|
+
<seki-input type="email" placeholder="you@example.com"></seki-input>
|
|
113
|
+
|
|
114
|
+
<!-- Load Web Components -->
|
|
115
|
+
<script type="module" src="node_modules/@sekiui/elements/dist/sekiui/sekiui.esm.js"></script>
|
|
116
|
+
</body>
|
|
117
|
+
</html>
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Or with a bundler (Vite, Webpack, etc.):**
|
|
121
|
+
|
|
122
|
+
```js
|
|
123
|
+
// Import CSS in your main JS/TS file
|
|
124
|
+
import '@sekiui/elements/dist/sekiui/sekiui.css';
|
|
125
|
+
|
|
126
|
+
// Import and register components
|
|
127
|
+
import { defineCustomElements } from '@sekiui/elements/loader';
|
|
128
|
+
defineCustomElements();
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Then use in your HTML:
|
|
88
132
|
|
|
89
|
-
|
|
133
|
+
```html
|
|
134
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
90
135
|
<seki-input type="email" placeholder="you@example.com"></seki-input>
|
|
91
136
|
```
|
|
92
137
|
|
|
93
138
|
### React
|
|
94
139
|
|
|
95
140
|
```jsx
|
|
141
|
+
// Import CSS in your main index.js or App.js
|
|
142
|
+
import '@sekiui/elements/dist/sekiui/sekiui.css';
|
|
96
143
|
import { SekiButton } from '@sekiui/elements/react';
|
|
97
144
|
|
|
98
145
|
function App() {
|
|
99
|
-
return <SekiButton variant="
|
|
146
|
+
return <SekiButton variant="primary">Click me</SekiButton>;
|
|
100
147
|
}
|
|
101
148
|
```
|
|
102
149
|
|
|
@@ -111,6 +158,9 @@ import { createApp } from 'vue';
|
|
|
111
158
|
import App from './App.vue';
|
|
112
159
|
import { defineCustomElements } from '@sekiui/elements/loader';
|
|
113
160
|
|
|
161
|
+
// Import CSS once globally
|
|
162
|
+
import '@sekiui/elements/dist/sekiui/sekiui.css';
|
|
163
|
+
|
|
114
164
|
// Register custom elements once globally
|
|
115
165
|
defineCustomElements();
|
|
116
166
|
|
|
@@ -121,7 +171,7 @@ Then use anywhere in your components:
|
|
|
121
171
|
|
|
122
172
|
```vue
|
|
123
173
|
<template>
|
|
124
|
-
<seki-button variant="
|
|
174
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
125
175
|
</template>
|
|
126
176
|
```
|
|
127
177
|
|
|
@@ -129,10 +179,11 @@ Then use anywhere in your components:
|
|
|
129
179
|
|
|
130
180
|
```vue
|
|
131
181
|
<template>
|
|
132
|
-
<seki-button variant="
|
|
182
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
133
183
|
</template>
|
|
134
184
|
|
|
135
185
|
<script setup>
|
|
186
|
+
import '@sekiui/elements/dist/sekiui/sekiui.css';
|
|
136
187
|
import { defineCustomElements } from '@sekiui/elements/loader';
|
|
137
188
|
defineCustomElements();
|
|
138
189
|
</script>
|
|
@@ -156,7 +207,14 @@ export default {
|
|
|
156
207
|
|
|
157
208
|
### Angular
|
|
158
209
|
|
|
159
|
-
|
|
210
|
+
**Step 1:** Import CSS in `styles.css` or `styles.scss`:
|
|
211
|
+
|
|
212
|
+
```css
|
|
213
|
+
/* src/styles.css */
|
|
214
|
+
@import '@sekiui/elements/dist/sekiui/sekiui.css';
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
**Step 2:** Register custom elements in `app.module.ts`:
|
|
160
218
|
|
|
161
219
|
```typescript
|
|
162
220
|
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
|
|
@@ -174,10 +232,10 @@ defineCustomElements();
|
|
|
174
232
|
export class AppModule { }
|
|
175
233
|
```
|
|
176
234
|
|
|
177
|
-
|
|
235
|
+
**Step 3:** Use in your templates:
|
|
178
236
|
|
|
179
237
|
```html
|
|
180
|
-
<seki-button variant="
|
|
238
|
+
<seki-button variant="primary">Click me</seki-button>
|
|
181
239
|
```
|
|
182
240
|
|
|
183
241
|
## License
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Get the base path to where the assets can be found. Use "setAssetPath(path)"
|
|
3
|
+
* if the path needs to be customized.
|
|
4
|
+
*/
|
|
5
|
+
export declare const getAssetPath: (path: string) => string;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Used to manually set the base path where assets can be found.
|
|
9
|
+
* If the script is used as "module", it's recommended to use "import.meta.url",
|
|
10
|
+
* such as "setAssetPath(import.meta.url)". Other options include
|
|
11
|
+
* "setAssetPath(document.currentScript.src)", or using a bundler's replace plugin to
|
|
12
|
+
* dynamically set the path at build time, such as "setAssetPath(process.env.ASSET_PATH)".
|
|
13
|
+
* But do note that this configuration depends on how your script is bundled, or lack of
|
|
14
|
+
* bundling, and where your assets can be loaded from. Additionally custom bundling
|
|
15
|
+
* will have to ensure the static assets are copied to its build directory.
|
|
16
|
+
*/
|
|
17
|
+
export declare const setAssetPath: (path: string) => void;
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Used to specify a nonce value that corresponds with an application's CSP.
|
|
21
|
+
* When set, the nonce will be added to all dynamically created script and style tags at runtime.
|
|
22
|
+
* Alternatively, the nonce value can be set on a meta tag in the DOM head
|
|
23
|
+
* (<meta name="csp-nonce" content="{ nonce value here }" />) which
|
|
24
|
+
* will result in the same behavior.
|
|
25
|
+
*/
|
|
26
|
+
export declare const setNonce: (nonce: string) => void
|
|
27
|
+
|
|
28
|
+
export interface SetPlatformOptions {
|
|
29
|
+
raf?: (c: FrameRequestCallback) => number;
|
|
30
|
+
ael?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
31
|
+
rel?: (el: EventTarget, eventName: string, listener: EventListenerOrEventListenerObject, options: boolean | AddEventListenerOptions) => void;
|
|
32
|
+
}
|
|
33
|
+
export declare const setPlatformOptions: (opts: SetPlatformOptions) => void;
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, c as createEvent, h, a as Host } from './p-BLeUUc2-.js';
|
|
2
|
+
export { g as getAssetPath, r as render, s as setAssetPath, b as setNonce, d as setPlatformOptions } from './p-BLeUUc2-.js';
|
|
3
|
+
|
|
4
|
+
const sekiSwitchCss = ":host{--seki-neutral-50:hsl(0, 0%, 98%);--seki-neutral-100:hsl(0, 0%, 96.1%);--seki-neutral-200:hsl(0, 0%, 89.8%);--seki-neutral-300:hsl(0, 0%, 83.1%);--seki-neutral-400:hsl(0, 0%, 63.9%);--seki-neutral-500:hsl(0, 0%, 45.1%);--seki-neutral-600:hsl(0, 0%, 32.2%);--seki-neutral-700:hsl(0, 0%, 25.1%);--seki-neutral-800:hsl(0, 0%, 14.9%);--seki-neutral-900:hsl(0, 0%, 9%);--seki-neutral-950:hsl(0, 0%, 3.9%);--seki-primary-50:hsl(210, 100%, 97%);--seki-primary-100:hsl(210, 95%, 93%);--seki-primary-200:hsl(210, 95%, 85%);--seki-primary-300:hsl(210, 90%, 73%);--seki-primary-400:hsl(210, 85%, 58%);--seki-primary-500:hsl(210, 80%, 48%);--seki-primary-600:hsl(210, 75%, 40%);--seki-primary-700:hsl(210, 70%, 32%);--seki-primary-800:hsl(210, 65%, 25%);--seki-primary-900:hsl(210, 60%, 18%);--seki-primary-950:hsl(210, 55%, 10%);--seki-success-500:hsl(142, 71%, 45%);--seki-success-600:hsl(142, 71%, 35%);--seki-warning-500:hsl(38, 92%, 50%);--seki-warning-600:hsl(38, 92%, 40%);--seki-destructive-500:hsl(0, 84.2%, 60.2%);--seki-destructive-600:hsl(0, 72%, 41%)}:host{--seki-background:hsl(0, 0%, 100%);--seki-foreground:hsl(0, 0%, 3.9%);--seki-muted:hsl(0, 0%, 96.1%);--seki-muted-foreground:hsl(0, 0%, 45.1%);--seki-card:hsl(0, 0%, 100%);--seki-card-foreground:hsl(0, 0%, 3.9%);--seki-popover:hsl(0, 0%, 100%);--seki-popover-foreground:hsl(0, 0%, 3.9%);--seki-border:hsl(0, 0%, 89.8%);--seki-input:hsl(0, 0%, 89.8%);--seki-primary:hsl(0, 0%, 9%);--seki-primary-foreground:hsl(0, 0%, 98%);--seki-secondary:hsl(0, 0%, 96.1%);--seki-secondary-foreground:hsl(0, 0%, 9%);--seki-accent:hsl(0, 0%, 96.1%);--seki-accent-foreground:hsl(0, 0%, 9%);--seki-destructive:hsl(0, 84.2%, 60.2%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 3.9%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-400);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-300)}:host([data-theme='dark']){--seki-background:hsl(0, 0%, 3.9%);--seki-foreground:hsl(0, 0%, 98%);--seki-muted:hsl(0, 0%, 14.9%);--seki-muted-foreground:hsl(0, 0%, 63.9%);--seki-card:hsl(0, 0%, 3.9%);--seki-card-foreground:hsl(0, 0%, 98%);--seki-popover:hsl(0, 0%, 3.9%);--seki-popover-foreground:hsl(0, 0%, 98%);--seki-border:hsl(0, 0%, 14.9%);--seki-input:hsl(0, 0%, 14.9%);--seki-primary:hsl(0, 0%, 98%);--seki-primary-foreground:hsl(0, 0%, 9%);--seki-secondary:hsl(0, 0%, 14.9%);--seki-secondary-foreground:hsl(0, 0%, 98%);--seki-accent:hsl(0, 0%, 14.9%);--seki-accent-foreground:hsl(0, 0%, 98%);--seki-destructive:hsl(0, 62.8%, 30.6%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 83.1%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-600);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-700);--seki-button-primary-hover-bg:hsl(0, 0%, 98%, 0.9);--seki-button-secondary-hover-bg:hsl(0, 0%, 14.9%, 0.8)}:host{--seki-button-primary-bg:var(--seki-primary);--seki-button-primary-text:var(--seki-primary-foreground);--seki-button-primary-border:transparent;--seki-button-primary-hover-bg:hsl(0, 0%, 9%, 0.9);--seki-button-primary-hover-text:var(--seki-primary-foreground);--seki-button-primary-hover-border:transparent;--seki-button-secondary-bg:var(--seki-secondary);--seki-button-secondary-text:var(--seki-secondary-foreground);--seki-button-secondary-border:transparent;--seki-button-secondary-hover-bg:hsl(0, 0%, 96.1%, 0.8);--seki-button-secondary-hover-text:var(--seki-secondary-foreground);--seki-button-secondary-hover-border:transparent;--seki-button-outline-bg:transparent;--seki-button-outline-text:var(--seki-foreground);--seki-button-outline-border:var(--seki-input);--seki-button-outline-hover-bg:var(--seki-accent);--seki-button-outline-hover-text:var(--seki-accent-foreground);--seki-button-outline-hover-border:var(--seki-input);--seki-button-ghost-bg:transparent;--seki-button-ghost-text:var(--seki-foreground);--seki-button-ghost-border:transparent;--seki-button-ghost-hover-bg:var(--seki-accent);--seki-button-ghost-hover-text:var(--seki-accent-foreground);--seki-button-ghost-hover-border:transparent;--seki-button-destructive-bg:var(--seki-destructive);--seki-button-destructive-text:var(--seki-destructive-foreground);--seki-button-destructive-border:transparent;--seki-button-destructive-hover-bg:hsl(0, 84.2%, 60.2%, 0.9);--seki-button-destructive-hover-border:transparent;--seki-button-sm-padding-x:var(--seki-spacing-3, 0.75rem);--seki-button-sm-padding-y:0.375rem;--seki-button-sm-font-size:var(--seki-text-sm, 0.875rem);--seki-button-sm-height:2.25rem;--seki-button-md-padding-x:var(--seki-spacing-4, 1rem);--seki-button-md-padding-y:var(--seki-spacing-2, 0.5rem);--seki-button-md-font-size:var(--seki-text-base, 1rem);--seki-button-md-height:2.5rem;--seki-button-lg-padding-x:2rem;--seki-button-lg-padding-y:0.5rem;--seki-button-lg-font-size:1rem;--seki-button-lg-height:2.75rem;--seki-button-icon-sm-size:2rem;--seki-button-icon-size:2.5rem;--seki-button-icon-lg-size:3rem;--seki-button-icon-gap:0.5rem;--seki-button-link-bg:transparent;--seki-button-link-text:var(--seki-primary);--seki-button-link-border:transparent;--seki-button-link-hover-bg:transparent;--seki-button-link-hover-text:var(--seki-primary);--seki-button-link-hover-border:transparent;--seki-button-radius:var(--seki-radius-md, 0.375rem);--seki-button-font-weight:var(--seki-font-medium, 500);--seki-button-transition-duration:150ms;--seki-button-transition-timing:ease-in-out;--seki-button-shadow:var(--seki-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));--seki-button-shadow-hover:var(--seki-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));--seki-button-disabled-opacity:0.5;--seki-input-bg:var(--seki-background);--seki-input-border:var(--seki-border);--seki-input-text:var(--seki-foreground);--seki-input-placeholder:var(--seki-muted-foreground);--seki-input-ring:var(--seki-ring);--seki-input-invalid-border:var(--seki-destructive);--seki-input-invalid-ring:var(--seki-destructive);--seki-input-disabled-opacity:0.5;--seki-input-radius:var(--seki-radius-md)}:host{--seki-spacing-0:0;--seki-spacing-0-5:0.125rem;--seki-spacing-1:0.25rem;--seki-spacing-1-5:0.375rem;--seki-spacing-2:0.5rem;--seki-spacing-2-5:0.625rem;--seki-spacing-3:0.75rem;--seki-spacing-3-5:0.875rem;--seki-spacing-4:1rem;--seki-spacing-5:1.25rem;--seki-spacing-6:1.5rem;--seki-spacing-8:2rem;--seki-spacing-10:2.5rem;--seki-spacing-12:3rem;--seki-spacing-16:4rem;--seki-spacing-20:5rem;--seki-spacing-24:6rem;--seki-input-height-sm:2rem;--seki-input-height-md:2.5rem;--seki-input-height-lg:3rem;--seki-input-padding-x:0.75rem;--seki-input-padding-y:0.5rem;--seki-input-font-size:0.875rem;--seki-input-ring-offset:2px}:host{--seki-shadow-sm:0 1px 2px 0 rgb(0 0 0 / 0.05);--seki-shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--seki-shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.15), 0 4px 6px -4px rgb(0 0 0 / 0.1)}:host{--seki-font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;--seki-font-mono:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;--seki-text-xs:0.75rem;--seki-text-sm:0.875rem;--seki-text-base:1rem;--seki-text-lg:1.125rem;--seki-text-xl:1.25rem;--seki-text-2xl:1.5rem;--seki-text-3xl:1.875rem;--seki-text-4xl:2.25rem;--seki-font-normal:400;--seki-font-medium:500;--seki-font-semibold:600;--seki-font-bold:700;--seki-leading-tight:1.25;--seki-leading-normal:1.5;--seki-leading-relaxed:1.75}:host{--seki-radius-sm:0.25rem;--seki-radius-md:0.375rem;--seki-radius-lg:0.5rem;--seki-radius-xl:1rem;}:host{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px}.switch{width:var(--seki-switch-width, 2.75rem);height:var(--seki-switch-height, 1.5rem);position:relative;display:inline-flex;align-items:center;flex-shrink:0;background-color:var(--seki-switch-bg-unchecked, hsl(var(--muted, 240 4.8% 95.9%)));border-radius:9999px;cursor:pointer;transition:background-color var(--seki-switch-transition-duration, 150ms) ease-out;outline:none}.switch:focus-visible{outline:2px solid var(--seki-switch-focus-ring, hsl(var(--ring, 240 5% 64.9%)));outline-offset:2px}:host([data-state=\"checked\"]) .switch{background-color:var(--seki-switch-bg-checked, hsl(var(--primary, 240 5.9% 10%)))}:host([data-disabled]) .switch{background-color:var(--seki-switch-bg-disabled, hsl(var(--muted, 240 4.8% 95.9%) / 0.5));cursor:not-allowed;opacity:0.5}.thumb{width:var(--seki-switch-thumb-size, 1.25rem);height:var(--seki-switch-thumb-size, 1.25rem);background-color:var(--seki-switch-thumb-bg, hsl(var(--background, 0 0% 100%)));position:absolute;left:0.125rem;border-radius:50%;box-shadow:0 1px 2px 0 rgb(0 0 0 / 0.05);transition:transform var(--seki-switch-transition-duration, 150ms) ease-out;pointer-events:none}:host([data-state=\"checked\"]) .thumb{transform:translateX(calc(var(--seki-switch-width, 2.75rem) - var(--seki-switch-thumb-size, 1.25rem) - 0.25rem))}@media (prefers-color-scheme: dark){.switch{--seki-switch-bg-unchecked:hsl(var(--muted, 240 3.7% 15.9%))}.thumb{--seki-switch-thumb-bg:hsl(var(--background, 240 10% 3.9%))}}";
|
|
5
|
+
|
|
6
|
+
const SekiSwitch = /*@__PURE__*/ proxyCustomElement(class SekiSwitch extends H {
|
|
7
|
+
constructor(registerHost) {
|
|
8
|
+
super();
|
|
9
|
+
if (registerHost !== false) {
|
|
10
|
+
this.__registerHost();
|
|
11
|
+
}
|
|
12
|
+
this.__attachShadow();
|
|
13
|
+
this.sekiChange = createEvent(this, "sekiChange");
|
|
14
|
+
/**
|
|
15
|
+
* @description Initial checked state for uncontrolled mode. Ignored if checked prop is provided.
|
|
16
|
+
*/
|
|
17
|
+
this.defaultChecked = false;
|
|
18
|
+
/**
|
|
19
|
+
* @description Disables all interactions when true.
|
|
20
|
+
*/
|
|
21
|
+
this.disabled = false;
|
|
22
|
+
/**
|
|
23
|
+
* @description Marks switch as required for form validation.
|
|
24
|
+
*/
|
|
25
|
+
this.required = false;
|
|
26
|
+
/**
|
|
27
|
+
* @description Value sent in form data when switch is checked. Defaults to 'on'.
|
|
28
|
+
*/
|
|
29
|
+
this.value = 'on';
|
|
30
|
+
/**
|
|
31
|
+
* @description Internal checked state for uncontrolled mode.
|
|
32
|
+
*/
|
|
33
|
+
this.internalChecked = false;
|
|
34
|
+
/**
|
|
35
|
+
* Toggle switch state and emit event
|
|
36
|
+
*/
|
|
37
|
+
this.toggle = () => {
|
|
38
|
+
if (this.disabled) {
|
|
39
|
+
return;
|
|
40
|
+
}
|
|
41
|
+
const newCheckedState = !this.isChecked;
|
|
42
|
+
// Update internal state only in uncontrolled mode
|
|
43
|
+
if (this.checked === undefined) {
|
|
44
|
+
this.internalChecked = newCheckedState;
|
|
45
|
+
}
|
|
46
|
+
// Always emit event (for both controlled and uncontrolled)
|
|
47
|
+
this.sekiChange.emit({ checked: newCheckedState });
|
|
48
|
+
};
|
|
49
|
+
/**
|
|
50
|
+
* Handle click events
|
|
51
|
+
*/
|
|
52
|
+
this.handleClick = () => {
|
|
53
|
+
this.toggle();
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Initialize internal checked state from defaultChecked
|
|
58
|
+
*/
|
|
59
|
+
componentWillLoad() {
|
|
60
|
+
this.internalChecked = this.defaultChecked;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Get current checked state (controlled vs uncontrolled)
|
|
64
|
+
*/
|
|
65
|
+
get isChecked() {
|
|
66
|
+
return this.checked !== undefined ? this.checked : this.internalChecked;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Handle keyboard events (Space and Enter keys)
|
|
70
|
+
*/
|
|
71
|
+
handleKeyDown(event) {
|
|
72
|
+
if (this.disabled) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
// Toggle on Space or Enter
|
|
76
|
+
if (event.key === ' ' || event.key === 'Enter') {
|
|
77
|
+
event.preventDefault(); // Prevent page scroll on Space
|
|
78
|
+
this.toggle();
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
render() {
|
|
82
|
+
const isChecked = this.isChecked;
|
|
83
|
+
const dataState = isChecked ? 'checked' : 'unchecked';
|
|
84
|
+
return (h(Host, { key: 'af5412cee9d097e57d8e626522619913b7459e4b', "data-state": dataState, "data-disabled": this.disabled ? '' : null }, h("div", { key: 'a2c15a3f6b33b4e98e215d82c14cba9dd47bd951', class: "switch", part: "switch", role: "switch", "aria-checked": isChecked ? 'true' : 'false', "aria-disabled": this.disabled ? 'true' : undefined, "aria-label": this.ariaLabel || undefined, "aria-required": this.required ? 'true' : undefined, tabindex: this.disabled ? -1 : 0, onClick: this.handleClick }, h("span", { key: '51fb815c2710b8fd5ac12bdc90b09c44a3bf9b24', class: "thumb", part: "thumb" })), this.name && (h("input", { key: '37f059d43e01b82c9fc3e6f1f1df5c894e8a6102', type: "checkbox", name: this.name, value: this.value, checked: isChecked, required: this.required, disabled: this.disabled, style: { display: 'none' }, tabindex: -1, "aria-hidden": "true" }))));
|
|
85
|
+
}
|
|
86
|
+
static get style() { return sekiSwitchCss; }
|
|
87
|
+
}, [257, "seki-switch", {
|
|
88
|
+
"checked": [4],
|
|
89
|
+
"defaultChecked": [4, "default-checked"],
|
|
90
|
+
"disabled": [4],
|
|
91
|
+
"required": [4],
|
|
92
|
+
"name": [1],
|
|
93
|
+
"value": [1],
|
|
94
|
+
"ariaLabel": [1, "aria-label"],
|
|
95
|
+
"internalChecked": [32]
|
|
96
|
+
}, [[0, "keydown", "handleKeyDown"]]]);
|
|
97
|
+
function defineCustomElement() {
|
|
98
|
+
if (typeof customElements === "undefined") {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
const components = ["seki-switch"];
|
|
102
|
+
components.forEach(tagName => { switch (tagName) {
|
|
103
|
+
case "seki-switch":
|
|
104
|
+
if (!customElements.get(tagName)) {
|
|
105
|
+
customElements.define(tagName, SekiSwitch);
|
|
106
|
+
}
|
|
107
|
+
break;
|
|
108
|
+
} });
|
|
109
|
+
}
|
|
110
|
+
defineCustomElement();
|
|
111
|
+
|
|
112
|
+
export { SekiSwitch, defineCustomElement as d };
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
const globalStyles = ":host{--seki-neutral-50:hsl(0, 0%, 98%);--seki-neutral-100:hsl(0, 0%, 96.1%);--seki-neutral-200:hsl(0, 0%, 89.8%);--seki-neutral-300:hsl(0, 0%, 83.1%);--seki-neutral-400:hsl(0, 0%, 63.9%);--seki-neutral-500:hsl(0, 0%, 45.1%);--seki-neutral-600:hsl(0, 0%, 32.2%);--seki-neutral-700:hsl(0, 0%, 25.1%);--seki-neutral-800:hsl(0, 0%, 14.9%);--seki-neutral-900:hsl(0, 0%, 9%);--seki-neutral-950:hsl(0, 0%, 3.9%);--seki-primary-50:hsl(210, 100%, 97%);--seki-primary-100:hsl(210, 95%, 93%);--seki-primary-200:hsl(210, 95%, 85%);--seki-primary-300:hsl(210, 90%, 73%);--seki-primary-400:hsl(210, 85%, 58%);--seki-primary-500:hsl(210, 80%, 48%);--seki-primary-600:hsl(210, 75%, 40%);--seki-primary-700:hsl(210, 70%, 32%);--seki-primary-800:hsl(210, 65%, 25%);--seki-primary-900:hsl(210, 60%, 18%);--seki-primary-950:hsl(210, 55%, 10%);--seki-success-500:hsl(142, 71%, 45%);--seki-success-600:hsl(142, 71%, 35%);--seki-warning-500:hsl(38, 92%, 50%);--seki-warning-600:hsl(38, 92%, 40%);--seki-destructive-500:hsl(0, 84.2%, 60.2%);--seki-destructive-600:hsl(0, 72%, 41%)}:host{--seki-background:hsl(0, 0%, 100%);--seki-foreground:hsl(0, 0%, 3.9%);--seki-muted:hsl(0, 0%, 96.1%);--seki-muted-foreground:hsl(0, 0%, 45.1%);--seki-card:hsl(0, 0%, 100%);--seki-card-foreground:hsl(0, 0%, 3.9%);--seki-popover:hsl(0, 0%, 100%);--seki-popover-foreground:hsl(0, 0%, 3.9%);--seki-border:hsl(0, 0%, 89.8%);--seki-input:hsl(0, 0%, 89.8%);--seki-primary:hsl(0, 0%, 9%);--seki-primary-foreground:hsl(0, 0%, 98%);--seki-secondary:hsl(0, 0%, 96.1%);--seki-secondary-foreground:hsl(0, 0%, 9%);--seki-accent:hsl(0, 0%, 96.1%);--seki-accent-foreground:hsl(0, 0%, 9%);--seki-destructive:hsl(0, 84.2%, 60.2%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 3.9%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-400);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-300)}:host([data-theme='dark']){--seki-background:hsl(0, 0%, 3.9%);--seki-foreground:hsl(0, 0%, 98%);--seki-muted:hsl(0, 0%, 14.9%);--seki-muted-foreground:hsl(0, 0%, 63.9%);--seki-card:hsl(0, 0%, 3.9%);--seki-card-foreground:hsl(0, 0%, 98%);--seki-popover:hsl(0, 0%, 3.9%);--seki-popover-foreground:hsl(0, 0%, 98%);--seki-border:hsl(0, 0%, 14.9%);--seki-input:hsl(0, 0%, 14.9%);--seki-primary:hsl(0, 0%, 98%);--seki-primary-foreground:hsl(0, 0%, 9%);--seki-secondary:hsl(0, 0%, 14.9%);--seki-secondary-foreground:hsl(0, 0%, 98%);--seki-accent:hsl(0, 0%, 14.9%);--seki-accent-foreground:hsl(0, 0%, 98%);--seki-destructive:hsl(0, 62.8%, 30.6%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 83.1%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-600);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-700);--seki-button-primary-hover-bg:hsl(0, 0%, 98%, 0.9);--seki-button-secondary-hover-bg:hsl(0, 0%, 14.9%, 0.8)}:host{--seki-button-primary-bg:var(--seki-primary);--seki-button-primary-text:var(--seki-primary-foreground);--seki-button-primary-border:transparent;--seki-button-primary-hover-bg:hsl(0, 0%, 9%, 0.9);--seki-button-primary-hover-text:var(--seki-primary-foreground);--seki-button-primary-hover-border:transparent;--seki-button-secondary-bg:var(--seki-secondary);--seki-button-secondary-text:var(--seki-secondary-foreground);--seki-button-secondary-border:transparent;--seki-button-secondary-hover-bg:hsl(0, 0%, 96.1%, 0.8);--seki-button-secondary-hover-text:var(--seki-secondary-foreground);--seki-button-secondary-hover-border:transparent;--seki-button-outline-bg:transparent;--seki-button-outline-text:var(--seki-foreground);--seki-button-outline-border:var(--seki-input);--seki-button-outline-hover-bg:var(--seki-accent);--seki-button-outline-hover-text:var(--seki-accent-foreground);--seki-button-outline-hover-border:var(--seki-input);--seki-button-ghost-bg:transparent;--seki-button-ghost-text:var(--seki-foreground);--seki-button-ghost-border:transparent;--seki-button-ghost-hover-bg:var(--seki-accent);--seki-button-ghost-hover-text:var(--seki-accent-foreground);--seki-button-ghost-hover-border:transparent;--seki-button-destructive-bg:var(--seki-destructive);--seki-button-destructive-text:var(--seki-destructive-foreground);--seki-button-destructive-border:transparent;--seki-button-destructive-hover-bg:hsl(0, 84.2%, 60.2%, 0.9);--seki-button-destructive-hover-border:transparent;--seki-button-sm-padding-x:var(--seki-spacing-3, 0.75rem);--seki-button-sm-padding-y:0.375rem;--seki-button-sm-font-size:var(--seki-text-sm, 0.875rem);--seki-button-sm-height:2.25rem;--seki-button-md-padding-x:var(--seki-spacing-4, 1rem);--seki-button-md-padding-y:var(--seki-spacing-2, 0.5rem);--seki-button-md-font-size:var(--seki-text-base, 1rem);--seki-button-md-height:2.5rem;--seki-button-lg-padding-x:2rem;--seki-button-lg-padding-y:0.5rem;--seki-button-lg-font-size:1rem;--seki-button-lg-height:2.75rem;--seki-button-icon-sm-size:2rem;--seki-button-icon-size:2.5rem;--seki-button-icon-lg-size:3rem;--seki-button-icon-gap:0.5rem;--seki-button-link-bg:transparent;--seki-button-link-text:var(--seki-primary);--seki-button-link-border:transparent;--seki-button-link-hover-bg:transparent;--seki-button-link-hover-text:var(--seki-primary);--seki-button-link-hover-border:transparent;--seki-button-radius:var(--seki-radius-md, 0.375rem);--seki-button-font-weight:var(--seki-font-medium, 500);--seki-button-transition-duration:150ms;--seki-button-transition-timing:ease-in-out;--seki-button-shadow:var(--seki-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));--seki-button-shadow-hover:var(--seki-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));--seki-button-disabled-opacity:0.5;--seki-input-bg:var(--seki-background);--seki-input-border:var(--seki-border);--seki-input-text:var(--seki-foreground);--seki-input-placeholder:var(--seki-muted-foreground);--seki-input-ring:var(--seki-ring);--seki-input-invalid-border:var(--seki-destructive);--seki-input-invalid-ring:var(--seki-destructive);--seki-input-disabled-opacity:0.5;--seki-input-radius:var(--seki-radius-md)}:host{--seki-spacing-0:0;--seki-spacing-0-5:0.125rem;--seki-spacing-1:0.25rem;--seki-spacing-1-5:0.375rem;--seki-spacing-2:0.5rem;--seki-spacing-2-5:0.625rem;--seki-spacing-3:0.75rem;--seki-spacing-3-5:0.875rem;--seki-spacing-4:1rem;--seki-spacing-5:1.25rem;--seki-spacing-6:1.5rem;--seki-spacing-8:2rem;--seki-spacing-10:2.5rem;--seki-spacing-12:3rem;--seki-spacing-16:4rem;--seki-spacing-20:5rem;--seki-spacing-24:6rem;--seki-input-height-sm:2rem;--seki-input-height-md:2.5rem;--seki-input-height-lg:3rem;--seki-input-padding-x:0.75rem;--seki-input-padding-y:0.5rem;--seki-input-font-size:0.875rem;--seki-input-ring-offset:2px}:host{--seki-shadow-sm:0 1px 2px 0 rgb(0 0 0 / 0.05);--seki-shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--seki-shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.15), 0 4px 6px -4px rgb(0 0 0 / 0.1)}:host{--seki-font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;--seki-font-mono:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;--seki-text-xs:0.75rem;--seki-text-sm:0.875rem;--seki-text-base:1rem;--seki-text-lg:1.125rem;--seki-text-xl:1.25rem;--seki-text-2xl:1.5rem;--seki-text-3xl:1.875rem;--seki-text-4xl:2.25rem;--seki-font-normal:400;--seki-font-medium:500;--seki-font-semibold:600;--seki-font-bold:700;--seki-leading-tight:1.25;--seki-leading-normal:1.5;--seki-leading-relaxed:1.75}:host{--seki-radius-sm:0.25rem;--seki-radius-md:0.375rem;--seki-radius-lg:0.5rem;--seki-radius-xl:1rem;}";
|
|
2
|
+
|
|
1
3
|
const NAMESPACE = 'sekiui';
|
|
2
4
|
const BUILD = /* sekiui */ { hydratedSelectorName: "hydrated", lazyLoad: false, updatable: true};
|
|
3
5
|
|
|
@@ -41,6 +43,12 @@ var consoleError = (e, el) => (0, console.error)(e, el);
|
|
|
41
43
|
var styles = /* @__PURE__ */ new Map();
|
|
42
44
|
var SLOT_FB_CSS = "slot-fb{display:contents}slot-fb[hidden]{display:none}";
|
|
43
45
|
var XLINK_NS = "http://www.w3.org/1999/xlink";
|
|
46
|
+
var FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS = [
|
|
47
|
+
"formAssociatedCallback",
|
|
48
|
+
"formResetCallback",
|
|
49
|
+
"formDisabledCallback",
|
|
50
|
+
"formStateRestoreCallback"
|
|
51
|
+
];
|
|
44
52
|
var win = typeof window !== "undefined" ? window : {};
|
|
45
53
|
var H = win.HTMLElement || class {
|
|
46
54
|
};
|
|
@@ -189,7 +197,10 @@ var unwrapErr = (result) => {
|
|
|
189
197
|
|
|
190
198
|
// src/utils/style.ts
|
|
191
199
|
function createStyleSheetIfNeededAndSupported(styles2) {
|
|
192
|
-
return void 0;
|
|
200
|
+
if (!supportsConstructableStylesheets) return void 0;
|
|
201
|
+
const sheet = new CSSStyleSheet();
|
|
202
|
+
sheet.replaceSync(styles2);
|
|
203
|
+
return sheet;
|
|
193
204
|
}
|
|
194
205
|
|
|
195
206
|
// src/utils/shadow-root.ts
|
|
@@ -197,7 +208,7 @@ var globalStyleSheet;
|
|
|
197
208
|
function createShadowRoot(cmpMeta) {
|
|
198
209
|
var _a;
|
|
199
210
|
const shadowRoot = this.attachShadow({ mode: "open" });
|
|
200
|
-
if (globalStyleSheet === void 0) globalStyleSheet = (_a = createStyleSheetIfNeededAndSupported()) != null ? _a : null;
|
|
211
|
+
if (globalStyleSheet === void 0) globalStyleSheet = (_a = createStyleSheetIfNeededAndSupported(globalStyles)) != null ? _a : null;
|
|
201
212
|
if (globalStyleSheet) {
|
|
202
213
|
if (supportsMutableAdoptedStyleSheets) {
|
|
203
214
|
shadowRoot.adoptedStyleSheets.push(globalStyleSheet);
|
|
@@ -396,7 +407,9 @@ createSupportsRuleRe(":host-context");
|
|
|
396
407
|
var parsePropertyValue = (propValue, propType, isFormAssociated) => {
|
|
397
408
|
if (propValue != null && !isComplexType(propValue)) {
|
|
398
409
|
if (propType & 4 /* Boolean */) {
|
|
399
|
-
{
|
|
410
|
+
if (isFormAssociated && typeof propValue === "string") {
|
|
411
|
+
return propValue === "" || !!propValue;
|
|
412
|
+
} else {
|
|
400
413
|
return propValue === "false" ? false : propValue === "" || !!propValue;
|
|
401
414
|
}
|
|
402
415
|
}
|
|
@@ -981,7 +994,9 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
|
|
|
981
994
|
const instance = elm;
|
|
982
995
|
newVal = parsePropertyValue(
|
|
983
996
|
newVal,
|
|
984
|
-
cmpMeta.$members$[propName][0]
|
|
997
|
+
cmpMeta.$members$[propName][0],
|
|
998
|
+
!!(cmpMeta.$flags$ & 64 /* formAssociated */)
|
|
999
|
+
);
|
|
985
1000
|
const areBothNaN = Number.isNaN(oldVal) && Number.isNaN(newVal);
|
|
986
1001
|
const didValueChange = newVal !== oldVal && !areBothNaN;
|
|
987
1002
|
if (didValueChange) {
|
|
@@ -1015,6 +1030,27 @@ var setValue = (ref, propName, newVal, cmpMeta) => {
|
|
|
1015
1030
|
var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
1016
1031
|
var _a, _b;
|
|
1017
1032
|
const prototype = Cstr.prototype;
|
|
1033
|
+
if (cmpMeta.$flags$ & 64 /* formAssociated */ && flags & 1 /* isElementConstructor */) {
|
|
1034
|
+
FORM_ASSOCIATED_CUSTOM_ELEMENT_CALLBACKS.forEach((cbName) => {
|
|
1035
|
+
const originalFormAssociatedCallback = prototype[cbName];
|
|
1036
|
+
Object.defineProperty(prototype, cbName, {
|
|
1037
|
+
value(...args) {
|
|
1038
|
+
var _a2;
|
|
1039
|
+
const hostRef = getHostRef(this);
|
|
1040
|
+
const instance = this;
|
|
1041
|
+
if (!instance) {
|
|
1042
|
+
(_a2 = hostRef == null ? void 0 : hostRef.$onReadyPromise$) == null ? void 0 : _a2.then((asyncInstance) => {
|
|
1043
|
+
const cb = asyncInstance[cbName];
|
|
1044
|
+
typeof cb === "function" && cb.call(asyncInstance, ...args);
|
|
1045
|
+
});
|
|
1046
|
+
} else {
|
|
1047
|
+
const cb = originalFormAssociatedCallback;
|
|
1048
|
+
typeof cb === "function" && cb.call(instance, ...args);
|
|
1049
|
+
}
|
|
1050
|
+
}
|
|
1051
|
+
});
|
|
1052
|
+
});
|
|
1053
|
+
}
|
|
1018
1054
|
{
|
|
1019
1055
|
{
|
|
1020
1056
|
if (Cstr.watchers && !cmpMeta.$watchers$) {
|
|
@@ -1058,7 +1094,9 @@ var proxyComponent = (Cstr, cmpMeta, flags) => {
|
|
|
1058
1094
|
origSetter.apply(this, [
|
|
1059
1095
|
parsePropertyValue(
|
|
1060
1096
|
newValue,
|
|
1061
|
-
memberFlags
|
|
1097
|
+
memberFlags,
|
|
1098
|
+
!!(cmpMeta.$flags$ & 64 /* formAssociated */)
|
|
1099
|
+
)
|
|
1062
1100
|
]);
|
|
1063
1101
|
newValue = memberFlags & 32 /* State */ ? this[memberName] : ref.$hostElement$[memberName];
|
|
1064
1102
|
setValue(this, memberName, newValue, cmpMeta);
|
|
@@ -1276,7 +1314,7 @@ var proxyCustomElement = (Cstr, compactMeta) => {
|
|
|
1276
1314
|
}
|
|
1277
1315
|
});
|
|
1278
1316
|
Cstr.is = cmpMeta.$tagName$;
|
|
1279
|
-
return proxyComponent(Cstr, cmpMeta);
|
|
1317
|
+
return proxyComponent(Cstr, cmpMeta, 1 /* isElementConstructor */ | 2 /* proxyState */);
|
|
1280
1318
|
};
|
|
1281
1319
|
var addHostEventListeners = (elm, hostRef, listeners, attachParentListeners) => {
|
|
1282
1320
|
if (listeners && win.document) {
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SekiButton extends Components.SekiButton, HTMLElement {}
|
|
4
|
+
export const SekiButton: {
|
|
5
|
+
prototype: SekiButton;
|
|
6
|
+
new (): SekiButton;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { p as proxyCustomElement, H, h } from './p-BLeUUc2-.js';
|
|
2
|
+
|
|
3
|
+
const sekiButtonCss = ":host{--seki-neutral-50:hsl(0, 0%, 98%);--seki-neutral-100:hsl(0, 0%, 96.1%);--seki-neutral-200:hsl(0, 0%, 89.8%);--seki-neutral-300:hsl(0, 0%, 83.1%);--seki-neutral-400:hsl(0, 0%, 63.9%);--seki-neutral-500:hsl(0, 0%, 45.1%);--seki-neutral-600:hsl(0, 0%, 32.2%);--seki-neutral-700:hsl(0, 0%, 25.1%);--seki-neutral-800:hsl(0, 0%, 14.9%);--seki-neutral-900:hsl(0, 0%, 9%);--seki-neutral-950:hsl(0, 0%, 3.9%);--seki-primary-50:hsl(210, 100%, 97%);--seki-primary-100:hsl(210, 95%, 93%);--seki-primary-200:hsl(210, 95%, 85%);--seki-primary-300:hsl(210, 90%, 73%);--seki-primary-400:hsl(210, 85%, 58%);--seki-primary-500:hsl(210, 80%, 48%);--seki-primary-600:hsl(210, 75%, 40%);--seki-primary-700:hsl(210, 70%, 32%);--seki-primary-800:hsl(210, 65%, 25%);--seki-primary-900:hsl(210, 60%, 18%);--seki-primary-950:hsl(210, 55%, 10%);--seki-success-500:hsl(142, 71%, 45%);--seki-success-600:hsl(142, 71%, 35%);--seki-warning-500:hsl(38, 92%, 50%);--seki-warning-600:hsl(38, 92%, 40%);--seki-destructive-500:hsl(0, 84.2%, 60.2%);--seki-destructive-600:hsl(0, 72%, 41%)}:host{--seki-background:hsl(0, 0%, 100%);--seki-foreground:hsl(0, 0%, 3.9%);--seki-muted:hsl(0, 0%, 96.1%);--seki-muted-foreground:hsl(0, 0%, 45.1%);--seki-card:hsl(0, 0%, 100%);--seki-card-foreground:hsl(0, 0%, 3.9%);--seki-popover:hsl(0, 0%, 100%);--seki-popover-foreground:hsl(0, 0%, 3.9%);--seki-border:hsl(0, 0%, 89.8%);--seki-input:hsl(0, 0%, 89.8%);--seki-primary:hsl(0, 0%, 9%);--seki-primary-foreground:hsl(0, 0%, 98%);--seki-secondary:hsl(0, 0%, 96.1%);--seki-secondary-foreground:hsl(0, 0%, 9%);--seki-accent:hsl(0, 0%, 96.1%);--seki-accent-foreground:hsl(0, 0%, 9%);--seki-destructive:hsl(0, 84.2%, 60.2%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 3.9%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-400);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-300)}:host([data-theme='dark']){--seki-background:hsl(0, 0%, 3.9%);--seki-foreground:hsl(0, 0%, 98%);--seki-muted:hsl(0, 0%, 14.9%);--seki-muted-foreground:hsl(0, 0%, 63.9%);--seki-card:hsl(0, 0%, 3.9%);--seki-card-foreground:hsl(0, 0%, 98%);--seki-popover:hsl(0, 0%, 3.9%);--seki-popover-foreground:hsl(0, 0%, 98%);--seki-border:hsl(0, 0%, 14.9%);--seki-input:hsl(0, 0%, 14.9%);--seki-primary:hsl(0, 0%, 98%);--seki-primary-foreground:hsl(0, 0%, 9%);--seki-secondary:hsl(0, 0%, 14.9%);--seki-secondary-foreground:hsl(0, 0%, 98%);--seki-accent:hsl(0, 0%, 14.9%);--seki-accent-foreground:hsl(0, 0%, 98%);--seki-destructive:hsl(0, 62.8%, 30.6%);--seki-destructive-foreground:hsl(0, 0%, 98%);--seki-ring:hsl(0, 0%, 83.1%);--seki-bg-primary:var(--seki-background);--seki-bg-secondary:var(--seki-muted);--seki-bg-tertiary:var(--seki-accent);--seki-text-primary:var(--seki-foreground);--seki-text-secondary:var(--seki-muted-foreground);--seki-text-tertiary:var(--seki-neutral-600);--seki-border-default:var(--seki-border);--seki-border-emphasis:var(--seki-neutral-700);--seki-button-primary-hover-bg:hsl(0, 0%, 98%, 0.9);--seki-button-secondary-hover-bg:hsl(0, 0%, 14.9%, 0.8)}:host{--seki-button-primary-bg:var(--seki-primary);--seki-button-primary-text:var(--seki-primary-foreground);--seki-button-primary-border:transparent;--seki-button-primary-hover-bg:hsl(0, 0%, 9%, 0.9);--seki-button-primary-hover-text:var(--seki-primary-foreground);--seki-button-primary-hover-border:transparent;--seki-button-secondary-bg:var(--seki-secondary);--seki-button-secondary-text:var(--seki-secondary-foreground);--seki-button-secondary-border:transparent;--seki-button-secondary-hover-bg:hsl(0, 0%, 96.1%, 0.8);--seki-button-secondary-hover-text:var(--seki-secondary-foreground);--seki-button-secondary-hover-border:transparent;--seki-button-outline-bg:transparent;--seki-button-outline-text:var(--seki-foreground);--seki-button-outline-border:var(--seki-input);--seki-button-outline-hover-bg:var(--seki-accent);--seki-button-outline-hover-text:var(--seki-accent-foreground);--seki-button-outline-hover-border:var(--seki-input);--seki-button-ghost-bg:transparent;--seki-button-ghost-text:var(--seki-foreground);--seki-button-ghost-border:transparent;--seki-button-ghost-hover-bg:var(--seki-accent);--seki-button-ghost-hover-text:var(--seki-accent-foreground);--seki-button-ghost-hover-border:transparent;--seki-button-destructive-bg:var(--seki-destructive);--seki-button-destructive-text:var(--seki-destructive-foreground);--seki-button-destructive-border:transparent;--seki-button-destructive-hover-bg:hsl(0, 84.2%, 60.2%, 0.9);--seki-button-destructive-hover-border:transparent;--seki-button-sm-padding-x:var(--seki-spacing-3, 0.75rem);--seki-button-sm-padding-y:0.375rem;--seki-button-sm-font-size:var(--seki-text-sm, 0.875rem);--seki-button-sm-height:2.25rem;--seki-button-md-padding-x:var(--seki-spacing-4, 1rem);--seki-button-md-padding-y:var(--seki-spacing-2, 0.5rem);--seki-button-md-font-size:var(--seki-text-base, 1rem);--seki-button-md-height:2.5rem;--seki-button-lg-padding-x:2rem;--seki-button-lg-padding-y:0.5rem;--seki-button-lg-font-size:1rem;--seki-button-lg-height:2.75rem;--seki-button-icon-sm-size:2rem;--seki-button-icon-size:2.5rem;--seki-button-icon-lg-size:3rem;--seki-button-icon-gap:0.5rem;--seki-button-link-bg:transparent;--seki-button-link-text:var(--seki-primary);--seki-button-link-border:transparent;--seki-button-link-hover-bg:transparent;--seki-button-link-hover-text:var(--seki-primary);--seki-button-link-hover-border:transparent;--seki-button-radius:var(--seki-radius-md, 0.375rem);--seki-button-font-weight:var(--seki-font-medium, 500);--seki-button-transition-duration:150ms;--seki-button-transition-timing:ease-in-out;--seki-button-shadow:var(--seki-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05));--seki-button-shadow-hover:var(--seki-shadow-md, 0 4px 6px -1px rgb(0 0 0 / 0.1));--seki-button-disabled-opacity:0.5;--seki-input-bg:var(--seki-background);--seki-input-border:var(--seki-border);--seki-input-text:var(--seki-foreground);--seki-input-placeholder:var(--seki-muted-foreground);--seki-input-ring:var(--seki-ring);--seki-input-invalid-border:var(--seki-destructive);--seki-input-invalid-ring:var(--seki-destructive);--seki-input-disabled-opacity:0.5;--seki-input-radius:var(--seki-radius-md)}:host{--seki-spacing-0:0;--seki-spacing-0-5:0.125rem;--seki-spacing-1:0.25rem;--seki-spacing-1-5:0.375rem;--seki-spacing-2:0.5rem;--seki-spacing-2-5:0.625rem;--seki-spacing-3:0.75rem;--seki-spacing-3-5:0.875rem;--seki-spacing-4:1rem;--seki-spacing-5:1.25rem;--seki-spacing-6:1.5rem;--seki-spacing-8:2rem;--seki-spacing-10:2.5rem;--seki-spacing-12:3rem;--seki-spacing-16:4rem;--seki-spacing-20:5rem;--seki-spacing-24:6rem;--seki-input-height-sm:2rem;--seki-input-height-md:2.5rem;--seki-input-height-lg:3rem;--seki-input-padding-x:0.75rem;--seki-input-padding-y:0.5rem;--seki-input-font-size:0.875rem;--seki-input-ring-offset:2px}:host{--seki-shadow-sm:0 1px 2px 0 rgb(0 0 0 / 0.05);--seki-shadow-md:0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);--seki-shadow-lg:0 10px 15px -3px rgb(0 0 0 / 0.15), 0 4px 6px -4px rgb(0 0 0 / 0.1)}:host{--seki-font-sans:-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue',\n Arial, sans-serif;--seki-font-mono:ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace;--seki-text-xs:0.75rem;--seki-text-sm:0.875rem;--seki-text-base:1rem;--seki-text-lg:1.125rem;--seki-text-xl:1.25rem;--seki-text-2xl:1.5rem;--seki-text-3xl:1.875rem;--seki-text-4xl:2.25rem;--seki-font-normal:400;--seki-font-medium:500;--seki-font-semibold:600;--seki-font-bold:700;--seki-leading-tight:1.25;--seki-leading-normal:1.5;--seki-leading-relaxed:1.75}:host{--seki-radius-sm:0.25rem;--seki-radius-md:0.375rem;--seki-radius-lg:0.5rem;--seki-radius-xl:1rem;}:host{display:inline-block}.button{box-sizing:border-box;font-family:var(--seki-font-sans);font-weight:var(--seki-button-font-weight);border-radius:var(--seki-button-radius);cursor:pointer;border:1px solid;transition:background-color var(--seki-button-transition-duration) var(--seki-button-transition-timing),\n border-color var(--seki-button-transition-duration) var(--seki-button-transition-timing),\n color var(--seki-button-transition-duration) var(--seki-button-transition-timing),\n box-shadow var(--seki-button-transition-duration) var(--seki-button-transition-timing),\n text-decoration var(--seki-button-transition-duration) var(--seki-button-transition-timing);box-shadow:var(--seki-button-shadow);display:inline-flex;align-items:center;justify-content:center;gap:var(--seki-button-icon-gap)}.button:hover:not(:disabled){box-shadow:var(--seki-button-shadow-hover)}.button:focus-visible{outline:2px solid var(--seki-accent);outline-offset:2px}.button:disabled{opacity:var(--seki-button-disabled-opacity);cursor:not-allowed}.button--primary{background:var(--seki-button-primary-bg);color:var(--seki-button-primary-text);border-color:var(--seki-button-primary-border)}.button--primary:hover:not(:disabled){background:var(--seki-button-primary-hover-bg);color:var(--seki-button-primary-hover-text, var(--seki-button-primary-text));border-color:var(--seki-button-primary-hover-border)}.button--secondary{background:var(--seki-button-secondary-bg);color:var(--seki-button-secondary-text);border-color:var(--seki-button-secondary-border)}.button--secondary:hover:not(:disabled){background:var(--seki-button-secondary-hover-bg);color:var(--seki-button-secondary-hover-text, var(--seki-button-secondary-text));border-color:var(--seki-button-secondary-hover-border)}.button--outline{background:var(--seki-button-outline-bg);color:var(--seki-button-outline-text);border-color:var(--seki-button-outline-border)}.button--outline:hover:not(:disabled){background:var(--seki-button-outline-hover-bg);color:var(--seki-button-outline-hover-text);border-color:var(--seki-button-outline-hover-border)}.button--ghost{background:var(--seki-button-ghost-bg);color:var(--seki-button-ghost-text);border-color:var(--seki-button-ghost-border)}.button--ghost:hover:not(:disabled){background:var(--seki-button-ghost-hover-bg);color:var(--seki-button-ghost-hover-text);border-color:var(--seki-button-ghost-hover-border)}.button--destructive{background:var(--seki-button-destructive-bg);color:var(--seki-button-destructive-text);border-color:var(--seki-button-destructive-border)}.button--destructive:hover:not(:disabled){background:var(--seki-button-destructive-hover-bg);color:var(--seki-button-destructive-text);border-color:var(--seki-button-destructive-hover-border)}.button--link{background:var(--seki-button-link-bg);color:var(--seki-button-link-text);border-color:var(--seki-button-link-border);text-decoration:none}.button--link:hover:not(:disabled){background:var(--seki-button-link-hover-bg);color:var(--seki-button-link-hover-text);border-color:var(--seki-button-link-hover-border);text-decoration:underline}.button--sm{padding:var(--seki-button-sm-padding-y) var(--seki-button-sm-padding-x);font-size:var(--seki-button-sm-font-size);height:var(--seki-button-sm-height)}.button--md{padding:var(--seki-button-md-padding-y) var(--seki-button-md-padding-x);font-size:var(--seki-button-md-font-size);height:var(--seki-button-md-height)}.button--lg{padding:var(--seki-button-lg-padding-y) var(--seki-button-lg-padding-x);font-size:var(--seki-button-lg-font-size);height:var(--seki-button-lg-height)}.button--icon-sm{width:var(--seki-button-icon-sm-size);height:var(--seki-button-icon-sm-size);padding:0}.button--icon{width:var(--seki-button-icon-size);height:var(--seki-button-icon-size);padding:0}.button--icon-lg{width:var(--seki-button-icon-lg-size);height:var(--seki-button-icon-lg-size);padding:0}@media (prefers-reduced-motion: reduce){.button{transition:none}}";
|
|
4
|
+
|
|
5
|
+
const SekiButton$1 = /*@__PURE__*/ proxyCustomElement(class SekiButton extends H {
|
|
6
|
+
constructor(registerHost) {
|
|
7
|
+
super();
|
|
8
|
+
if (registerHost !== false) {
|
|
9
|
+
this.__registerHost();
|
|
10
|
+
}
|
|
11
|
+
this.__attachShadow();
|
|
12
|
+
/**
|
|
13
|
+
* Visual style variant of the button
|
|
14
|
+
*/
|
|
15
|
+
this.variant = 'primary';
|
|
16
|
+
/**
|
|
17
|
+
* Size of the button. Use icon-sm, icon, or icon-lg for icon-only buttons.
|
|
18
|
+
*/
|
|
19
|
+
this.size = 'md';
|
|
20
|
+
/**
|
|
21
|
+
* Whether the button is disabled
|
|
22
|
+
*/
|
|
23
|
+
this.disabled = false;
|
|
24
|
+
/**
|
|
25
|
+
* Button type attribute
|
|
26
|
+
*/
|
|
27
|
+
this.type = 'button';
|
|
28
|
+
}
|
|
29
|
+
componentWillLoad() {
|
|
30
|
+
// Dev mode warning for missing aria-label on icon-only buttons
|
|
31
|
+
const isIconOnlySize = this.size === 'icon-sm' || this.size === 'icon' || this.size === 'icon-lg';
|
|
32
|
+
if (isIconOnlySize && !this.ariaLabel) {
|
|
33
|
+
console.warn(`[seki-button] Icon-only button (size="${this.size}") requires aria-label for accessibility. ` +
|
|
34
|
+
`Please add aria-label prop to provide an accessible name for screen readers.`);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
render() {
|
|
38
|
+
return (h("button", { key: '3cc4cf0af6075fbe012388fa5adb953b64a2b1ca', class: `button button--${this.variant} button--${this.size}`, type: this.type, disabled: this.disabled, "aria-disabled": this.disabled ? 'true' : null, "aria-label": this.ariaLabel }, h("slot", { key: '7c90c49539e6721b6580a07c3f97e20148734b05' })));
|
|
39
|
+
}
|
|
40
|
+
static get style() { return sekiButtonCss; }
|
|
41
|
+
}, [257, "seki-button", {
|
|
42
|
+
"variant": [1],
|
|
43
|
+
"size": [1],
|
|
44
|
+
"disabled": [4],
|
|
45
|
+
"type": [1],
|
|
46
|
+
"ariaLabel": [1, "aria-label"]
|
|
47
|
+
}]);
|
|
48
|
+
function defineCustomElement$1() {
|
|
49
|
+
if (typeof customElements === "undefined") {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const components = ["seki-button"];
|
|
53
|
+
components.forEach(tagName => { switch (tagName) {
|
|
54
|
+
case "seki-button":
|
|
55
|
+
if (!customElements.get(tagName)) {
|
|
56
|
+
customElements.define(tagName, SekiButton$1);
|
|
57
|
+
}
|
|
58
|
+
break;
|
|
59
|
+
} });
|
|
60
|
+
}
|
|
61
|
+
defineCustomElement$1();
|
|
62
|
+
|
|
63
|
+
const SekiButton = SekiButton$1;
|
|
64
|
+
const defineCustomElement = defineCustomElement$1;
|
|
65
|
+
|
|
66
|
+
export { SekiButton, defineCustomElement };
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Components, JSX } from "../types/components";
|
|
2
|
+
|
|
3
|
+
interface SekiFieldDescription extends Components.SekiFieldDescription, HTMLElement {}
|
|
4
|
+
export const SekiFieldDescription: {
|
|
5
|
+
prototype: SekiFieldDescription;
|
|
6
|
+
new (): SekiFieldDescription;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* Used to define this component and all nested components recursively.
|
|
10
|
+
*/
|
|
11
|
+
export const defineCustomElement: () => void;
|