@plastic-js/tsumiki 0.1.48 → 0.1.49
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 +7 -0
- package/dist/components/Button.js +11 -4
- package/dist/components/ConfirmDialog.js +8 -8
- package/dist/components/Dialog.js +4 -4
- package/dist/components/Input.js +24 -11
- package/docs/api.md +5 -4
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -487,6 +487,11 @@ const intentClasses = {
|
|
|
487
487
|
'--_btn-solid-active': 'var(--tsu-accent-8)',
|
|
488
488
|
'--_btn-border': 'var(--tsu-accent-9)',
|
|
489
489
|
}),
|
|
490
|
+
neutral: css({
|
|
491
|
+
'--_btn-solid': 'var(--tsu-neutral-9)',
|
|
492
|
+
'--_btn-solid-active': 'var(--tsu-neutral-8)',
|
|
493
|
+
'--_btn-border': 'var(--tsu-neutral-9)',
|
|
494
|
+
}),
|
|
490
495
|
danger: css({
|
|
491
496
|
'--_btn-solid': 'var(--tsu-danger-9)',
|
|
492
497
|
'--_btn-solid-active': 'var(--tsu-danger-8)',
|
|
@@ -495,6 +500,8 @@ const intentClasses = {
|
|
|
495
500
|
}
|
|
496
501
|
```
|
|
497
502
|
|
|
503
|
+
`intent` takes one of `'default' | 'neutral' | 'danger'` (selected via a single prop, not booleans). `neutral` is only valid on the outline variant — when combined with `solid` it is ignored and falls back to `default`.
|
|
504
|
+
|
|
498
505
|
### 5.5 Class Name Composition (Reactive)
|
|
499
506
|
|
|
500
507
|
```js
|
|
@@ -89,6 +89,13 @@ var intentClasses = {
|
|
|
89
89
|
"--_btn-border-active": "var(--tsu-accent-10)",
|
|
90
90
|
"--_btn-tint-bg": "var(--tsu-accent-3)"
|
|
91
91
|
}),
|
|
92
|
+
neutral: css({
|
|
93
|
+
"--_btn-solid": "var(--tsu-neutral-9)",
|
|
94
|
+
"--_btn-solid-active": "var(--tsu-neutral-8)",
|
|
95
|
+
"--_btn-border": "var(--tsu-neutral-6)",
|
|
96
|
+
"--_btn-border-active": "var(--tsu-neutral-7)",
|
|
97
|
+
"--_btn-tint-bg": "var(--tsu-neutral-3)"
|
|
98
|
+
}),
|
|
92
99
|
danger: css({
|
|
93
100
|
"--_btn-solid": "var(--tsu-danger-9)",
|
|
94
101
|
"--_btn-solid-active": "var(--tsu-danger-8)",
|
|
@@ -124,14 +131,14 @@ var loadingClass = css({ pointerEvents: "none" });
|
|
|
124
131
|
var read = (v) => typeof v === "function" ? v() : v;
|
|
125
132
|
var Button = (props = {}) => {
|
|
126
133
|
const [local, rest] = splitProps(mergeProps$1({
|
|
134
|
+
intent: "default",
|
|
127
135
|
solid: false,
|
|
128
|
-
danger: false,
|
|
129
136
|
size: "md",
|
|
130
137
|
disabled: false,
|
|
131
138
|
loading: false
|
|
132
139
|
}, props), [
|
|
140
|
+
"intent",
|
|
133
141
|
"solid",
|
|
134
|
-
"danger",
|
|
135
142
|
"size",
|
|
136
143
|
"loading",
|
|
137
144
|
"disabled",
|
|
@@ -148,10 +155,10 @@ var Button = (props = {}) => {
|
|
|
148
155
|
className: () => {
|
|
149
156
|
const size = read(local.size);
|
|
150
157
|
const solid = read(local.solid);
|
|
151
|
-
const danger = read(local.danger);
|
|
152
158
|
const loading = read(local.loading);
|
|
153
159
|
const variant = solid ? "solid" : "outline";
|
|
154
|
-
|
|
160
|
+
let intent = read(local.intent);
|
|
161
|
+
if (intent === "neutral" && solid) intent = "default";
|
|
155
162
|
return [
|
|
156
163
|
baseClass,
|
|
157
164
|
sizeClasses[size],
|
|
@@ -14,7 +14,7 @@ var messageBodyClass = css({
|
|
|
14
14
|
var DEFAULT_PROPS = {
|
|
15
15
|
confirmText: "Confirm",
|
|
16
16
|
cancelText: "Cancel",
|
|
17
|
-
|
|
17
|
+
intent: "default",
|
|
18
18
|
loading: false,
|
|
19
19
|
title: "Confirm"
|
|
20
20
|
};
|
|
@@ -30,7 +30,7 @@ function ConfirmDialog(props) {
|
|
|
30
30
|
"message",
|
|
31
31
|
"confirmText",
|
|
32
32
|
"cancelText",
|
|
33
|
-
"
|
|
33
|
+
"intent"
|
|
34
34
|
]);
|
|
35
35
|
const handleConfirm = () => {
|
|
36
36
|
local.onConfirm?.();
|
|
@@ -42,8 +42,8 @@ function ConfirmDialog(props) {
|
|
|
42
42
|
get confirmText() {
|
|
43
43
|
return local.confirmText;
|
|
44
44
|
},
|
|
45
|
-
get
|
|
46
|
-
return local.
|
|
45
|
+
get intent() {
|
|
46
|
+
return local.intent;
|
|
47
47
|
},
|
|
48
48
|
get loading() {
|
|
49
49
|
return local.loading;
|
|
@@ -124,8 +124,8 @@ function ensureInit() {
|
|
|
124
124
|
get cancelText() {
|
|
125
125
|
return s.cancelText || "Cancel";
|
|
126
126
|
},
|
|
127
|
-
get
|
|
128
|
-
return s.
|
|
127
|
+
get intent() {
|
|
128
|
+
return s.intent || "default";
|
|
129
129
|
},
|
|
130
130
|
get title() {
|
|
131
131
|
return s.title || "Confirm";
|
|
@@ -152,7 +152,7 @@ function ensureInit() {
|
|
|
152
152
|
* title: 'Delete Item',
|
|
153
153
|
* message: 'This action cannot be undone.',
|
|
154
154
|
* confirmText: 'Delete',
|
|
155
|
-
*
|
|
155
|
+
* intent: 'danger',
|
|
156
156
|
* })
|
|
157
157
|
* } catch (err) {
|
|
158
158
|
* if (err.code === 'CANCEL') { ... }
|
|
@@ -164,7 +164,7 @@ function ensureInit() {
|
|
|
164
164
|
* message?: string,
|
|
165
165
|
* confirmText?: string,
|
|
166
166
|
* cancelText?: string,
|
|
167
|
-
*
|
|
167
|
+
* intent?: 'default' | 'neutral' | 'danger',
|
|
168
168
|
* noCancel?: boolean
|
|
169
169
|
* }} options
|
|
170
170
|
* @returns {Promise<void>}
|
|
@@ -172,7 +172,7 @@ var Dialog$1 = (props) => {
|
|
|
172
172
|
cancelText: "Cancel",
|
|
173
173
|
confirmText: "Confirm",
|
|
174
174
|
loading: false,
|
|
175
|
-
|
|
175
|
+
intent: "default",
|
|
176
176
|
closeable: true,
|
|
177
177
|
lazyMount: true,
|
|
178
178
|
unmountOnExit: true,
|
|
@@ -192,7 +192,7 @@ var Dialog$1 = (props) => {
|
|
|
192
192
|
"onCancel",
|
|
193
193
|
"onConfirm",
|
|
194
194
|
"loading",
|
|
195
|
-
"
|
|
195
|
+
"intent",
|
|
196
196
|
"closeable",
|
|
197
197
|
"lazyMount",
|
|
198
198
|
"unmountOnExit",
|
|
@@ -241,8 +241,8 @@ var Dialog$1 = (props) => {
|
|
|
241
241
|
insert(_el0, () => local.showConfirm && jsx(Button, mergeProps({
|
|
242
242
|
className: positiveBtnClass,
|
|
243
243
|
"data-part": "positive-trigger",
|
|
244
|
-
get
|
|
245
|
-
return local.
|
|
244
|
+
get intent() {
|
|
245
|
+
return local.intent;
|
|
246
246
|
},
|
|
247
247
|
get loading() {
|
|
248
248
|
return read(local.loading);
|
package/dist/components/Input.js
CHANGED
|
@@ -65,7 +65,7 @@ var variantClasses = {
|
|
|
65
65
|
}
|
|
66
66
|
}),
|
|
67
67
|
outline: css({
|
|
68
|
-
border: "1px solid var(--tsu-accent-8)",
|
|
68
|
+
border: "1px solid var(--_input-border, var(--tsu-accent-8))",
|
|
69
69
|
color: "var(--tsu-fg)",
|
|
70
70
|
"&:focus-within": {
|
|
71
71
|
backgroundColor: "var(--tsu-focus-bg)",
|
|
@@ -73,6 +73,11 @@ var variantClasses = {
|
|
|
73
73
|
}
|
|
74
74
|
})
|
|
75
75
|
};
|
|
76
|
+
var intentClasses = {
|
|
77
|
+
default: css({ "--_input-border": "var(--tsu-accent-8)" }),
|
|
78
|
+
neutral: css({ "--_input-border": "var(--tsu-neutral-6)" }),
|
|
79
|
+
danger: css({ "--_input-border": "var(--tsu-danger-9)" })
|
|
80
|
+
};
|
|
76
81
|
var errorClass = css({
|
|
77
82
|
borderColor: "var(--tsu-danger-9) !important",
|
|
78
83
|
"&:focus-within": { borderColor: "var(--tsu-danger-9) !important" }
|
|
@@ -136,11 +141,13 @@ var eyeButtonClass = css({
|
|
|
136
141
|
var read = (v) => typeof v === "function" ? v() : v;
|
|
137
142
|
var Input = (props = {}) => {
|
|
138
143
|
const [local, rest] = splitProps(mergeProps$2({
|
|
144
|
+
intent: "default",
|
|
139
145
|
solid: false,
|
|
140
146
|
size: "md",
|
|
141
147
|
disabled: false,
|
|
142
148
|
invalid: false
|
|
143
149
|
}, props), [
|
|
150
|
+
"intent",
|
|
144
151
|
"solid",
|
|
145
152
|
"size",
|
|
146
153
|
"disabled",
|
|
@@ -161,16 +168,22 @@ var Input = (props = {}) => {
|
|
|
161
168
|
const fieldDisabled = () => field?.disabled?.() ?? false;
|
|
162
169
|
const effectiveInvalid = () => read(local.invalid) || fieldInvalid();
|
|
163
170
|
const effectiveDisabled = () => read(local.disabled) || fieldDisabled();
|
|
164
|
-
const wrapperClassName = () =>
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
171
|
+
const wrapperClassName = () => {
|
|
172
|
+
const solid = read(local.solid);
|
|
173
|
+
let intent = read(local.intent);
|
|
174
|
+
if (intent === "neutral" && solid) intent = "default";
|
|
175
|
+
return [
|
|
176
|
+
wrapperClass,
|
|
177
|
+
sizeClasses[read(local.size)],
|
|
178
|
+
solid ? variantClasses.solid : variantClasses.outline,
|
|
179
|
+
intentClasses[intent],
|
|
180
|
+
effectiveInvalid() && errorClass,
|
|
181
|
+
effectiveDisabled() && disabledClass,
|
|
182
|
+
hasPrefix() && hasPrefixClass,
|
|
183
|
+
hasSuffix() && hasSuffixClass,
|
|
184
|
+
read(local.className)
|
|
185
|
+
].filter(Boolean).join(" ");
|
|
186
|
+
};
|
|
174
187
|
const inputType = () => {
|
|
175
188
|
if (!isPassword) return read(local.type);
|
|
176
189
|
return showPassword() ? "text" : "password";
|
package/docs/api.md
CHANGED
|
@@ -91,6 +91,7 @@ Passthrough: Ark `Fieldset.Root` props (`disabled`, `invalid`, …).
|
|
|
91
91
|
| Prop | Type | Default | Description |
|
|
92
92
|
|---|---|---|---|
|
|
93
93
|
| `solid` | `boolean` | `false` | Filled background instead of outlined. |
|
|
94
|
+
| `intent` | `string` | `'default'` | Border intent (`'default'`, `'neutral'`, `'danger'`). `neutral` applies only to the outline variant (ignored when `solid`). |
|
|
94
95
|
| `size` | `string` | `md` | See size values. |
|
|
95
96
|
| `disabled` | `boolean` | `false` | Disables the input. |
|
|
96
97
|
| `invalid` | `boolean` | `false` | Renders the error/invalid style. |
|
|
@@ -219,7 +220,7 @@ Passthrough: Ark `Root` props (`value`, `onValueChange`, …).
|
|
|
219
220
|
| Prop | Type | Default | Description |
|
|
220
221
|
|---|---|---|---|
|
|
221
222
|
| `solid` | `boolean` | `false` | Filled (solid) variant instead of outline. |
|
|
222
|
-
| `
|
|
223
|
+
| `intent` | `string` | `'default'` | `'default'`, `'neutral'`, or `'danger'`. `neutral` applies only to the outline variant (ignored when `solid`). |
|
|
223
224
|
| `size` | `string` | `md` | See size values. |
|
|
224
225
|
| `disabled` | `boolean` | `false` | Disabled. |
|
|
225
226
|
| `loading` | `boolean` | `false` | Shows a spinner and blocks interaction. |
|
|
@@ -664,7 +665,7 @@ Passthrough: Ark `Root` props (`value`, `min`, `max`, …).
|
|
|
664
665
|
| `onCancel` | `() => void` | — | Cancel callback. |
|
|
665
666
|
| `onConfirm` | `() => void` | — | Confirm callback. |
|
|
666
667
|
| `loading` | `boolean` | `false` | Confirm button shows a spinner. |
|
|
667
|
-
| `
|
|
668
|
+
| `intent` | `string` | `'default'` | Confirm button intent (`'default'`, `'neutral'`, `'danger'`). |
|
|
668
669
|
| `closeable` | `boolean` | `true` | Show the close (✕) trigger. |
|
|
669
670
|
| `lazyMount` | `boolean` | `true` | Mount content lazily. |
|
|
670
671
|
| `unmountOnExit` | `boolean` | `true` | Unmount content when closed. |
|
|
@@ -704,12 +705,12 @@ Imperative + declarative confirm dialog built on `Dialog`.
|
|
|
704
705
|
| `message` | `string` | — | Body message. |
|
|
705
706
|
| `confirmText` | `string` | — | Confirm button label. |
|
|
706
707
|
| `cancelText` | `string` | — | Cancel button label. |
|
|
707
|
-
| `
|
|
708
|
+
| `intent` | `string` | `'default'` | Confirm button intent (`'default'`, `'neutral'`, `'danger'`). |
|
|
708
709
|
|
|
709
710
|
Imperative API:
|
|
710
711
|
|
|
711
712
|
```js
|
|
712
|
-
await confirm({ title, message,
|
|
713
|
+
await confirm({ title, message, intent, confirmText })
|
|
713
714
|
// resolves true/false
|
|
714
715
|
```
|
|
715
716
|
|