solid-uix 0.5.0 → 0.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -7
- package/dist/main.css +269 -1
- package/dist/main.d.ts +79 -0
- package/dist/main.js +348 -246
- package/dist/main.jsx +386 -0
- package/package.json +9 -8
- package/dist/main.js.map +0 -1
- package/dist/ssr/main.js +0 -395
- package/dist/ssr/main.js.map +0 -1
- package/dist/types/button/button.d.ts +0 -4
- package/dist/types/button/button.types.d.ts +0 -4
- package/dist/types/checkbox/checkbox.d.ts +0 -2
- package/dist/types/checkbox/checkbox.stories.d.ts +0 -29
- package/dist/types/checkbox/checkbox.types.d.ts +0 -5
- package/dist/types/dialog/dialog.d.ts +0 -11
- package/dist/types/dialog/dialog.types.d.ts +0 -17
- package/dist/types/dialog/provider/context.d.ts +0 -3
- package/dist/types/dialog/provider/context.types.d.ts +0 -14
- package/dist/types/dialog/provider/provider.d.ts +0 -2
- package/dist/types/dialog/provider/provider.types.d.ts +0 -7
- package/dist/types/field/field.context.d.ts +0 -3
- package/dist/types/field/field.d.ts +0 -6
- package/dist/types/field/field.types.d.ts +0 -19
- package/dist/types/link/link.d.ts +0 -2
- package/dist/types/link/link.stories.d.ts +0 -48
- package/dist/types/link/link.types.d.ts +0 -6
- package/dist/types/list/list.d.ts +0 -5
- package/dist/types/list/list.types.d.ts +0 -3
- package/dist/types/main.d.ts +0 -13
- package/dist/types/select/select.d.ts +0 -5
- package/dist/types/select/select.types.d.ts +0 -5
- package/dist/types/text_area/text_area.d.ts +0 -2
- package/dist/types/text_area/text_area.stories.d.ts +0 -38
- package/dist/types/text_area/text_area.types.d.ts +0 -4
- package/dist/types/text_input/text_input.d.ts +0 -2
- package/dist/types/text_input/text_input.stories.d.ts +0 -30
- package/dist/types/text_input/text_input.types.d.ts +0 -4
- package/dist/types/utils/cls.d.ts +0 -3
- package/dist/types/utils/message.d.ts +0 -7
- package/dist/types/utils/noop.d.ts +0 -4
- package/dist/types/utils/string.d.ts +0 -1
package/dist/main.jsx
ADDED
|
@@ -0,0 +1,386 @@
|
|
|
1
|
+
// src/utils/cls.ts
|
|
2
|
+
var cls = (...classes) => {
|
|
3
|
+
return classes.filter(Boolean).join(" ");
|
|
4
|
+
};
|
|
5
|
+
|
|
6
|
+
// src/button/button.tsx
|
|
7
|
+
import { mergeProps, splitProps } from "solid-js";
|
|
8
|
+
|
|
9
|
+
// src/button/button.module.css
|
|
10
|
+
var button_default = {
|
|
11
|
+
button: "button_button",
|
|
12
|
+
solid: "button_solid",
|
|
13
|
+
outlined: "button_outlined",
|
|
14
|
+
link: "button_link"
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
// src/button/button.tsx
|
|
18
|
+
var defaultProps = {
|
|
19
|
+
variant: "solid"
|
|
20
|
+
};
|
|
21
|
+
var Button = (props) => {
|
|
22
|
+
const merged = mergeProps(defaultProps, props);
|
|
23
|
+
const [local, rest] = splitProps(merged, ["class", "variant"]);
|
|
24
|
+
return <button
|
|
25
|
+
type="button"
|
|
26
|
+
{...rest}
|
|
27
|
+
class={cls(
|
|
28
|
+
button_default.button,
|
|
29
|
+
local.class,
|
|
30
|
+
local.variant === "solid" && button_default.solid,
|
|
31
|
+
local.variant === "outlined" && button_default.outlined
|
|
32
|
+
)}
|
|
33
|
+
>
|
|
34
|
+
{rest.children}
|
|
35
|
+
</button>;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// src/link/link.module.css
|
|
39
|
+
var link_default = {
|
|
40
|
+
link: "link_link",
|
|
41
|
+
underline: "link_underline",
|
|
42
|
+
secondary: "link_secondary",
|
|
43
|
+
disabled: "link_disabled"
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
// src/link/link.tsx
|
|
47
|
+
import { splitProps as splitProps2 } from "solid-js";
|
|
48
|
+
var Link = (props) => {
|
|
49
|
+
const [local, rest] = splitProps2(props, ["class", "reset", "disabled", "color", "underline"]);
|
|
50
|
+
return <a
|
|
51
|
+
{...rest}
|
|
52
|
+
class={cls(
|
|
53
|
+
!local.reset && link_default.link,
|
|
54
|
+
local.class,
|
|
55
|
+
local.disabled && link_default.disabled,
|
|
56
|
+
local.color === "secondary" && link_default.secondary,
|
|
57
|
+
local.underline === "always" && link_default.underline
|
|
58
|
+
)}
|
|
59
|
+
aria-disabled={local.disabled}
|
|
60
|
+
>
|
|
61
|
+
{rest.children}
|
|
62
|
+
</a>;
|
|
63
|
+
};
|
|
64
|
+
|
|
65
|
+
// src/checkbox/checkbox.tsx
|
|
66
|
+
import { createUniqueId as createUniqueId2, splitProps as splitProps3 } from "solid-js";
|
|
67
|
+
|
|
68
|
+
// src/checkbox/checkbox.module.css
|
|
69
|
+
var checkbox_default = {
|
|
70
|
+
checkbox: "checkbox_checkbox",
|
|
71
|
+
input: "checkbox_input",
|
|
72
|
+
indicator: "checkbox_indicator",
|
|
73
|
+
label: "checkbox_label",
|
|
74
|
+
disabled: "checkbox_disabled"
|
|
75
|
+
};
|
|
76
|
+
|
|
77
|
+
// src/field/field.context.tsx
|
|
78
|
+
import { createContext, createMemo, createSignal, createUniqueId, useContext } from "solid-js";
|
|
79
|
+
|
|
80
|
+
// src/utils/message.ts
|
|
81
|
+
var isError = (message) => {
|
|
82
|
+
return message.level === "error";
|
|
83
|
+
};
|
|
84
|
+
var getMessageIds = (messages) => {
|
|
85
|
+
if (!messages.length) {
|
|
86
|
+
return void 0;
|
|
87
|
+
}
|
|
88
|
+
return messages.map((message) => message.id).join(" ");
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
// src/utils/noop.ts
|
|
92
|
+
var noop = () => {
|
|
93
|
+
};
|
|
94
|
+
var noopAccessor = (value) => {
|
|
95
|
+
return () => value;
|
|
96
|
+
};
|
|
97
|
+
var noopSetter = () => {
|
|
98
|
+
return () => {
|
|
99
|
+
};
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
// src/field/field.context.tsx
|
|
103
|
+
var defaultValue = {
|
|
104
|
+
fieldId: void 0,
|
|
105
|
+
error: noopAccessor(false),
|
|
106
|
+
ariaDescribedBy: noopAccessor(void 0),
|
|
107
|
+
ariaErrorMessage: noopAccessor(void 0),
|
|
108
|
+
setMessage: noop
|
|
109
|
+
};
|
|
110
|
+
var FieldContext = createContext(defaultValue, {});
|
|
111
|
+
var useFieldContext = () => {
|
|
112
|
+
return useContext(FieldContext);
|
|
113
|
+
};
|
|
114
|
+
var FieldProvider = (props) => {
|
|
115
|
+
const fieldId = createUniqueId();
|
|
116
|
+
const [messages, setMessages] = createSignal([]);
|
|
117
|
+
const error = createMemo(() => {
|
|
118
|
+
return props.error;
|
|
119
|
+
});
|
|
120
|
+
const ariaDescribedBy = createMemo(() => {
|
|
121
|
+
return getMessageIds(messages());
|
|
122
|
+
});
|
|
123
|
+
const ariaErrorMessage = createMemo(() => {
|
|
124
|
+
return getMessageIds(messages().filter(isError));
|
|
125
|
+
});
|
|
126
|
+
const setMessage = (message) => {
|
|
127
|
+
setMessages((prev) => [...prev, message]);
|
|
128
|
+
};
|
|
129
|
+
return <FieldContext.Provider
|
|
130
|
+
value={{
|
|
131
|
+
fieldId,
|
|
132
|
+
error,
|
|
133
|
+
setMessage,
|
|
134
|
+
ariaDescribedBy,
|
|
135
|
+
ariaErrorMessage
|
|
136
|
+
}}
|
|
137
|
+
>
|
|
138
|
+
{props.children}
|
|
139
|
+
</FieldContext.Provider>;
|
|
140
|
+
};
|
|
141
|
+
|
|
142
|
+
// src/checkbox/checkbox.tsx
|
|
143
|
+
var Checkbox = (props) => {
|
|
144
|
+
const [local, rest] = splitProps3(props, ["label", "error", "class"]);
|
|
145
|
+
const context = useFieldContext();
|
|
146
|
+
const id = createUniqueId2();
|
|
147
|
+
return <span class={cls(checkbox_default.checkbox, local.class, rest.disabled && checkbox_default.disabled)}>
|
|
148
|
+
<input
|
|
149
|
+
{...rest}
|
|
150
|
+
id={id}
|
|
151
|
+
type="checkbox"
|
|
152
|
+
class={checkbox_default.input}
|
|
153
|
+
aria-describedby={context.ariaDescribedBy()}
|
|
154
|
+
aria-invalid={context.error() || !!local.error}
|
|
155
|
+
aria-errormessage={context.ariaErrorMessage()}
|
|
156
|
+
/>
|
|
157
|
+
<span class={checkbox_default.indicator} />
|
|
158
|
+
|
|
159
|
+
{local.label && <label for={id} class={checkbox_default.label}>
|
|
160
|
+
{local.label}
|
|
161
|
+
</label>}
|
|
162
|
+
</span>;
|
|
163
|
+
};
|
|
164
|
+
|
|
165
|
+
// src/text_input/text_input.tsx
|
|
166
|
+
import { splitProps as splitProps4 } from "solid-js";
|
|
167
|
+
|
|
168
|
+
// src/text_input/text_input.module.css
|
|
169
|
+
var text_input_default = {
|
|
170
|
+
input: "text_input_input"
|
|
171
|
+
};
|
|
172
|
+
|
|
173
|
+
// src/text_input/text_input.tsx
|
|
174
|
+
var TextInput = (props) => {
|
|
175
|
+
const [local, rest] = splitProps4(props, ["error", "class"]);
|
|
176
|
+
const context = useFieldContext();
|
|
177
|
+
return <input
|
|
178
|
+
{...rest}
|
|
179
|
+
class={cls(text_input_default.input, local.class)}
|
|
180
|
+
id={context.fieldId}
|
|
181
|
+
aria-describedby={context.ariaDescribedBy()}
|
|
182
|
+
aria-invalid={context.error() || !!local.error}
|
|
183
|
+
aria-errormessage={context.ariaErrorMessage()}
|
|
184
|
+
/>;
|
|
185
|
+
};
|
|
186
|
+
|
|
187
|
+
// src/dialog/dialog.tsx
|
|
188
|
+
import { children, createEffect as createEffect2, createUniqueId as createUniqueId3 } from "solid-js";
|
|
189
|
+
|
|
190
|
+
// src/dialog/provider/provider.tsx
|
|
191
|
+
import { createEffect, createMemo as createMemo2, createSignal as createSignal2 } from "solid-js";
|
|
192
|
+
|
|
193
|
+
// src/dialog/provider/context.ts
|
|
194
|
+
import { createContext as createContext2, useContext as useContext2 } from "solid-js";
|
|
195
|
+
var defaultValue2 = {
|
|
196
|
+
setDialogRef() {
|
|
197
|
+
},
|
|
198
|
+
ariaLabelledBy: noopAccessor(void 0),
|
|
199
|
+
ariaDescribedBy: noopAccessor(void 0),
|
|
200
|
+
setTitleId: noopSetter(),
|
|
201
|
+
setDescriptionId: noopSetter(),
|
|
202
|
+
openDialog: noop,
|
|
203
|
+
closeDialog: noop,
|
|
204
|
+
onOpenChange: noop,
|
|
205
|
+
onBeforeClose: noop
|
|
206
|
+
};
|
|
207
|
+
var DialogContext = createContext2(defaultValue2);
|
|
208
|
+
var useDialogContext = () => {
|
|
209
|
+
return useContext2(DialogContext);
|
|
210
|
+
};
|
|
211
|
+
|
|
212
|
+
// src/dialog/provider/provider.tsx
|
|
213
|
+
var DialogProvider = (props) => {
|
|
214
|
+
let dialogRef;
|
|
215
|
+
const setDialogRef = (element) => {
|
|
216
|
+
dialogRef = element;
|
|
217
|
+
};
|
|
218
|
+
const [ariaLabelledBy, setTitleId] = createSignal2();
|
|
219
|
+
const [ariaDescribedBy, setDescriptionId] = createSignal2();
|
|
220
|
+
const isOpen = createMemo2(() => {
|
|
221
|
+
return props.isOpen;
|
|
222
|
+
});
|
|
223
|
+
const openDialog = () => {
|
|
224
|
+
dialogRef?.showModal();
|
|
225
|
+
props.onOpenChange?.(true);
|
|
226
|
+
};
|
|
227
|
+
const closeDialog = () => {
|
|
228
|
+
dialogRef?.requestClose();
|
|
229
|
+
};
|
|
230
|
+
createEffect(() => {
|
|
231
|
+
if (isOpen()) {
|
|
232
|
+
openDialog();
|
|
233
|
+
} else {
|
|
234
|
+
closeDialog();
|
|
235
|
+
}
|
|
236
|
+
});
|
|
237
|
+
return <DialogContext.Provider
|
|
238
|
+
value={{
|
|
239
|
+
ariaLabelledBy,
|
|
240
|
+
ariaDescribedBy,
|
|
241
|
+
setDialogRef,
|
|
242
|
+
setTitleId,
|
|
243
|
+
setDescriptionId,
|
|
244
|
+
openDialog,
|
|
245
|
+
closeDialog,
|
|
246
|
+
onOpenChange: props.onOpenChange,
|
|
247
|
+
onBeforeClose: props.onBeforeClose
|
|
248
|
+
}}
|
|
249
|
+
>
|
|
250
|
+
{props.children}
|
|
251
|
+
</DialogContext.Provider>;
|
|
252
|
+
};
|
|
253
|
+
|
|
254
|
+
// src/dialog/dialog.module.css
|
|
255
|
+
var dialog_default = {
|
|
256
|
+
dialog: "dialog_dialog",
|
|
257
|
+
title: "dialog_title",
|
|
258
|
+
description: "dialog_description",
|
|
259
|
+
actions: "dialog_actions"
|
|
260
|
+
};
|
|
261
|
+
|
|
262
|
+
// src/dialog/dialog.tsx
|
|
263
|
+
var Dialog = (props) => {
|
|
264
|
+
return <DialogProvider {...props}>{props.children}</DialogProvider>;
|
|
265
|
+
};
|
|
266
|
+
var Trigger = (props) => {
|
|
267
|
+
const context = useDialogContext();
|
|
268
|
+
const child = children(() => props.children);
|
|
269
|
+
createEffect2(() => {
|
|
270
|
+
const element = child();
|
|
271
|
+
if (element instanceof HTMLElement) {
|
|
272
|
+
element.onclick = context.openDialog;
|
|
273
|
+
}
|
|
274
|
+
});
|
|
275
|
+
return <>{child()}</>;
|
|
276
|
+
};
|
|
277
|
+
var Content = (props) => {
|
|
278
|
+
const context = useDialogContext();
|
|
279
|
+
return <dialog
|
|
280
|
+
{...props}
|
|
281
|
+
ref={(element) => {
|
|
282
|
+
props.ref = element;
|
|
283
|
+
context.setDialogRef(element);
|
|
284
|
+
}}
|
|
285
|
+
class={cls(dialog_default.dialog, props.class)}
|
|
286
|
+
aria-labelledby={context.ariaLabelledBy()}
|
|
287
|
+
aria-describedby={context.ariaDescribedBy()}
|
|
288
|
+
onClose={() => context.onOpenChange?.(false)}
|
|
289
|
+
onCancel={context.onBeforeClose}
|
|
290
|
+
>
|
|
291
|
+
{props.children}
|
|
292
|
+
</dialog>;
|
|
293
|
+
};
|
|
294
|
+
var Title = (props) => {
|
|
295
|
+
const context = useDialogContext();
|
|
296
|
+
const titleId = createUniqueId3();
|
|
297
|
+
context.setTitleId(titleId);
|
|
298
|
+
return <h2 {...props} id={titleId} class={cls(dialog_default.title, props.class)}>
|
|
299
|
+
{props.children}
|
|
300
|
+
</h2>;
|
|
301
|
+
};
|
|
302
|
+
var Description = (props) => {
|
|
303
|
+
const context = useDialogContext();
|
|
304
|
+
const descriptionId = createUniqueId3();
|
|
305
|
+
context.setDescriptionId(descriptionId);
|
|
306
|
+
return <p {...props} id={descriptionId} class={cls(dialog_default.description, props.class)}>
|
|
307
|
+
{props.children}
|
|
308
|
+
</p>;
|
|
309
|
+
};
|
|
310
|
+
var Close = (props) => {
|
|
311
|
+
const context = useDialogContext();
|
|
312
|
+
const child = children(() => props.children);
|
|
313
|
+
createEffect2(() => {
|
|
314
|
+
const element = child();
|
|
315
|
+
if (element instanceof HTMLElement) {
|
|
316
|
+
element.onclick = context.closeDialog;
|
|
317
|
+
}
|
|
318
|
+
});
|
|
319
|
+
return <>{child()}</>;
|
|
320
|
+
};
|
|
321
|
+
var Actions = (props) => {
|
|
322
|
+
return <div {...props} class={cls(dialog_default.actions, props.class)}>
|
|
323
|
+
{props.children}
|
|
324
|
+
</div>;
|
|
325
|
+
};
|
|
326
|
+
Dialog.Trigger = Trigger;
|
|
327
|
+
Dialog.Content = Content;
|
|
328
|
+
Dialog.Title = Title;
|
|
329
|
+
Dialog.Description = Description;
|
|
330
|
+
Dialog.Close = Close;
|
|
331
|
+
Dialog.Actions = Actions;
|
|
332
|
+
|
|
333
|
+
// src/field/field.tsx
|
|
334
|
+
import { createUniqueId as createUniqueId4, Show, splitProps as splitProps5 } from "solid-js";
|
|
335
|
+
|
|
336
|
+
// src/field/field.module.css
|
|
337
|
+
var field_default = {
|
|
338
|
+
field: "field_field",
|
|
339
|
+
label: "field_label",
|
|
340
|
+
message: "field_message",
|
|
341
|
+
error: "field_error"
|
|
342
|
+
};
|
|
343
|
+
|
|
344
|
+
// src/field/field.tsx
|
|
345
|
+
var Field = (props) => {
|
|
346
|
+
const [local, rest] = splitProps5(props, ["class", "error"]);
|
|
347
|
+
return <FieldProvider error={!!local.error}>
|
|
348
|
+
<div {...rest} class={cls(field_default.field, local.class)}>
|
|
349
|
+
{props.children}
|
|
350
|
+
</div>
|
|
351
|
+
</FieldProvider>;
|
|
352
|
+
};
|
|
353
|
+
var FieldLabel = (props) => {
|
|
354
|
+
const [local, rest] = splitProps5(props, ["class"]);
|
|
355
|
+
const context = useFieldContext();
|
|
356
|
+
return <label {...rest} for={context.fieldId} class={cls(field_default.label, local.class)}>
|
|
357
|
+
{rest.children}
|
|
358
|
+
</label>;
|
|
359
|
+
};
|
|
360
|
+
var FieldMessage = (props) => {
|
|
361
|
+
const [local, rest] = splitProps5(props, ["class", "level"]);
|
|
362
|
+
const context = useFieldContext();
|
|
363
|
+
const messageId = createUniqueId4();
|
|
364
|
+
context.setMessage({ level: local.level || "info", id: messageId });
|
|
365
|
+
return <Show when={rest.children}>
|
|
366
|
+
<p
|
|
367
|
+
{...rest}
|
|
368
|
+
id={messageId}
|
|
369
|
+
class={cls(field_default.message, local.class, local.level === "error" && field_default.error)}
|
|
370
|
+
>
|
|
371
|
+
{rest.children}
|
|
372
|
+
</p>
|
|
373
|
+
</Show>;
|
|
374
|
+
};
|
|
375
|
+
Field.Label = FieldLabel;
|
|
376
|
+
Field.Message = FieldMessage;
|
|
377
|
+
export {
|
|
378
|
+
Button,
|
|
379
|
+
Checkbox,
|
|
380
|
+
Dialog,
|
|
381
|
+
Field,
|
|
382
|
+
Link,
|
|
383
|
+
TextInput,
|
|
384
|
+
button_default as buttonSx,
|
|
385
|
+
cls
|
|
386
|
+
};
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "solid-uix",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.1",
|
|
4
4
|
"type": "module",
|
|
5
|
+
"main": "dist/main.js",
|
|
5
6
|
"module": "./dist/main.js",
|
|
6
|
-
"types": "./dist/
|
|
7
|
+
"types": "./dist/main.d.ts",
|
|
7
8
|
"exports": {
|
|
8
9
|
".": {
|
|
9
|
-
"
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
"import": "./dist/ssr/main.js"
|
|
10
|
+
"types": "./dist/main.d.ts",
|
|
11
|
+
"solid": "./dist/main.jsx",
|
|
12
|
+
"default": "./dist/main.js"
|
|
13
13
|
},
|
|
14
14
|
"./css": {
|
|
15
15
|
"import": "./dist/main.css"
|
|
@@ -29,15 +29,16 @@
|
|
|
29
29
|
"@solidjs/testing-library": "^0.8.10",
|
|
30
30
|
"@testing-library/user-event": "^14.6.1",
|
|
31
31
|
"@types/node": "^24.9.2",
|
|
32
|
+
"esbuild-plugin-solid": "^0.6.0",
|
|
32
33
|
"happy-dom": "^17.4.4",
|
|
34
|
+
"tsup": "^8.3.5",
|
|
33
35
|
"typescript": "~5.7.2",
|
|
34
36
|
"vite": "^6.0.11",
|
|
35
|
-
"vite-plugin-dts": "^4.5.0",
|
|
36
37
|
"vite-plugin-solid": "^2.11.6",
|
|
37
38
|
"vitest": "^3.1.1"
|
|
38
39
|
},
|
|
39
40
|
"scripts": {
|
|
40
|
-
"build": "tsc
|
|
41
|
+
"build": "tsc --project tsconfig.build.json && tsup",
|
|
41
42
|
"test": "vitest run",
|
|
42
43
|
"start": "cd src-storybook && npm start"
|
|
43
44
|
},
|
package/dist/main.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sources":["../src/utils/cls.ts","../src/button/button.tsx","../src/link/link.tsx","../src/utils/message.ts","../src/utils/noop.ts","../src/field/field.context.tsx","../src/checkbox/checkbox.tsx","../src/text_input/text_input.tsx","../src/dialog/provider/context.ts","../src/dialog/provider/provider.tsx","../src/dialog/dialog.tsx","../src/field/field.tsx"],"sourcesContent":["type ClassName = string | undefined | boolean;\n\nexport const cls = (...classes: ClassName[]): string => {\n return classes.filter(Boolean).join(\" \");\n};\n","import { ButtonProps } from \"./button.types\";\nimport { mergeProps, splitProps } from \"solid-js\";\nimport { cls } from \"../utils/cls\";\nimport sx from \"./button.module.css\";\n\nconst defaultProps = {\n variant: \"solid\",\n};\n\nexport const Button = (props: ButtonProps) => {\n const merged = mergeProps(defaultProps, props);\n const [local, rest] = splitProps(merged, [\"class\", \"variant\"]);\n\n return (\n <button\n type=\"button\"\n {...rest}\n class={cls(\n sx.button,\n local.class,\n local.variant === \"solid\" && sx.solid,\n local.variant === \"outlined\" && sx.outlined\n )}\n >\n {rest.children}\n </button>\n );\n};\n\nexport { sx as buttonSx };\n","import { cls } from \"../utils/cls\";\nimport { LinkProps } from \"./link.types\";\nimport sx from \"./link.module.css\";\nimport { splitProps } from \"solid-js\";\n\nexport const Link = (props: LinkProps) => {\n const [local, rest] = splitProps(props, [\"class\", \"disabled\", \"color\", \"underline\"]);\n\n return (\n <a\n {...rest}\n class={cls(\n sx.link,\n local.class,\n local.disabled && sx.disabled,\n local.color === \"secondary\" && sx.secondary,\n local.underline === \"always\" && sx.underline\n )}\n aria-disabled={local.disabled}\n >\n {rest.children}\n </a>\n );\n};\n","export type MessageLevel = \"info\" | \"warning\" | \"error\";\n\nexport type Message = {\n level: MessageLevel;\n id: string;\n};\n\nexport const isError = (message: Message) => {\n return message.level === \"error\";\n};\n\nexport const getMessageIds = (messages: Message[]) => {\n if (!messages.length) {\n return undefined;\n }\n\n return messages.map((message) => message.id).join(\" \");\n};\n","import { Accessor, Setter } from \"solid-js\";\n\nexport const noop = () => {};\n\nexport const noopAccessor = <T>(value: T): Accessor<T> => {\n return () => value;\n};\n\nexport const noopSetter = <T>(): Setter<T> => {\n return (() => {}) as any;\n};\n","import { createContext, createMemo, createSignal, createUniqueId, useContext } from \"solid-js\";\nimport { FieldContextValue, FieldProviderProps } from \"./field.types\";\nimport { getMessageIds, isError, Message } from \"../utils/message\";\nimport { noop, noopAccessor } from \"../utils/noop\";\n\nconst defaultValue: FieldContextValue = {\n fieldId: undefined,\n error: noopAccessor(false),\n ariaDescribedBy: noopAccessor(undefined),\n ariaErrorMessage: noopAccessor(undefined),\n setMessage: noop,\n};\n\nconst FieldContext = createContext(defaultValue, {});\n\nexport const useFieldContext = () => {\n return useContext(FieldContext);\n};\n\nexport const FieldProvider = (props: FieldProviderProps) => {\n const fieldId = createUniqueId();\n\n const [messages, setMessages] = createSignal<Message[]>([]);\n\n const error = createMemo(() => {\n return props.error;\n });\n\n const ariaDescribedBy = createMemo(() => {\n return getMessageIds(messages());\n });\n\n const ariaErrorMessage = createMemo(() => {\n return getMessageIds(messages().filter(isError));\n });\n\n const setMessage = (message: Message) => {\n setMessages((prev) => [...prev, message]);\n };\n\n return (\n <FieldContext.Provider\n value={{\n fieldId,\n error,\n setMessage,\n ariaDescribedBy,\n ariaErrorMessage,\n }}\n >\n {props.children}\n </FieldContext.Provider>\n );\n};\n","import { createUniqueId, splitProps } from \"solid-js\";\nimport { CheckboxProps } from \"./checkbox.types\";\nimport sx from \"./checkbox.module.css\";\nimport { cls } from \"../utils/cls\";\nimport { useFieldContext } from \"../field/field.context\";\n\nexport const Checkbox = (props: CheckboxProps) => {\n const [local, rest] = splitProps(props, [\"label\", \"error\", \"class\"]);\n const context = useFieldContext();\n const id = createUniqueId();\n\n return (\n <span class={cls(sx.checkbox, local.class, rest.disabled && sx.disabled)}>\n <input\n {...rest}\n id={id}\n type=\"checkbox\"\n class={sx.input}\n aria-describedby={context.ariaDescribedBy()}\n aria-invalid={context.error() || !!local.error}\n aria-errormessage={context.ariaErrorMessage()}\n />\n <span class={sx.indicator} />\n\n {local.label && (\n <label for={id} class={sx.label}>\n {local.label}\n </label>\n )}\n </span>\n );\n};\n","import { splitProps } from \"solid-js\";\nimport { TextInputProps } from \"./text_input.types\";\nimport { cls } from \"../utils/cls\";\nimport { useFieldContext } from \"../field/field.context\";\nimport sx from \"./text_input.module.css\";\n\nexport const TextInput = (props: TextInputProps) => {\n const [local, rest] = splitProps(props, [\"error\", \"class\"]);\n const context = useFieldContext();\n\n return (\n <input\n {...rest}\n class={cls(sx.input, local.class)}\n id={context.fieldId}\n aria-describedby={context.ariaDescribedBy()}\n aria-invalid={context.error() || !!local.error}\n aria-errormessage={context.ariaErrorMessage()}\n />\n );\n};\n","import { createContext, useContext } from \"solid-js\";\nimport { noop, noopAccessor, noopSetter } from \"../../utils/noop\";\nimport { DialogContextValue } from \"./context.types\";\n\nconst defaultValue: DialogContextValue = {\n setDialogRef() {},\n ariaLabelledBy: noopAccessor(undefined),\n ariaDescribedBy: noopAccessor(undefined),\n setTitleId: noopSetter(),\n setDescriptionId: noopSetter(),\n openDialog: noop,\n closeDialog: noop,\n onOpenChange: noop,\n onBeforeClose: noop,\n};\n\nexport const DialogContext = createContext(defaultValue);\n\nexport const useDialogContext = () => {\n return useContext(DialogContext);\n};\n","import { createEffect, createMemo, createSignal } from \"solid-js\";\nimport { DialogProviderProps } from \"./provider.types\";\nimport { DialogContext } from \"./context\";\nimport { SetDialogRef } from \"./context.types\";\n\nexport const DialogProvider = (props: DialogProviderProps) => {\n let dialogRef: HTMLDialogElement;\n\n const setDialogRef: SetDialogRef = (element) => {\n dialogRef = element;\n };\n\n const [ariaLabelledBy, setTitleId] = createSignal<string | undefined>();\n const [ariaDescribedBy, setDescriptionId] = createSignal<string | undefined>();\n\n const isOpen = createMemo(() => {\n return props.isOpen;\n });\n\n const openDialog = () => {\n dialogRef?.showModal();\n props.onOpenChange?.(true);\n };\n\n const closeDialog = () => {\n dialogRef?.requestClose();\n };\n\n createEffect(() => {\n if (isOpen()) {\n openDialog();\n } else {\n closeDialog();\n }\n });\n\n return (\n <DialogContext.Provider\n value={{\n ariaLabelledBy,\n ariaDescribedBy,\n setDialogRef,\n setTitleId,\n setDescriptionId,\n openDialog,\n closeDialog,\n onOpenChange: props.onOpenChange,\n onBeforeClose: props.onBeforeClose,\n }}\n >\n {props.children}\n </DialogContext.Provider>\n );\n};\n","import { children, createEffect, createUniqueId, ParentProps } from \"solid-js\";\nimport {\n DialogActionsProps,\n DialogCloseProps,\n DialogContentProps,\n DialogDescriptionProps,\n DialogProps,\n DialogTitleProps,\n} from \"./dialog.types\";\nimport { cls } from \"../utils/cls\";\nimport { DialogProvider } from \"./provider/provider\";\nimport { useDialogContext } from \"./provider/context\";\nimport sx from \"./dialog.module.css\";\n\nexport const Dialog = (props: DialogProps) => {\n return <DialogProvider {...props}>{props.children}</DialogProvider>;\n};\n\nconst Trigger = (props: ParentProps) => {\n const context = useDialogContext();\n const child = children(() => props.children);\n\n createEffect(() => {\n const element = child();\n\n if (element instanceof HTMLElement) {\n element.onclick = context.openDialog;\n }\n });\n\n return <>{child()}</>;\n};\n\nconst Content = (props: DialogContentProps) => {\n const context = useDialogContext();\n\n return (\n <dialog\n {...props}\n ref={(element) => {\n props.ref = element;\n context.setDialogRef(element);\n }}\n class={cls(sx.dialog, props.class)}\n aria-labelledby={context.ariaLabelledBy()}\n aria-describedby={context.ariaDescribedBy()}\n onClose={() => context.onOpenChange?.(false)}\n onCancel={context.onBeforeClose}\n >\n {props.children}\n </dialog>\n );\n};\n\nconst Title = (props: DialogTitleProps) => {\n const context = useDialogContext();\n const titleId = createUniqueId();\n\n context.setTitleId(titleId);\n\n return (\n <h2 {...props} id={titleId} class={cls(sx.title, props.class)}>\n {props.children}\n </h2>\n );\n};\n\nconst Description = (props: DialogDescriptionProps) => {\n const context = useDialogContext();\n const descriptionId = createUniqueId();\n\n context.setDescriptionId(descriptionId);\n\n return (\n <p {...props} id={descriptionId} class={cls(sx.description, props.class)}>\n {props.children}\n </p>\n );\n};\n\nconst Close = (props: DialogCloseProps) => {\n const context = useDialogContext();\n const child = children(() => props.children);\n\n createEffect(() => {\n const element = child();\n\n if (element instanceof HTMLElement) {\n element.onclick = context.closeDialog;\n }\n });\n\n return <>{child()}</>;\n};\n\nconst Actions = (props: DialogActionsProps) => {\n return (\n <div {...props} class={cls(sx.actions, props.class)}>\n {props.children}\n </div>\n );\n};\n\nDialog.Trigger = Trigger;\nDialog.Content = Content;\nDialog.Title = Title;\nDialog.Description = Description;\nDialog.Close = Close;\nDialog.Actions = Actions;\n","import { createUniqueId, Show, splitProps } from \"solid-js\";\nimport { FieldLabelProps, FieldMessageProps, FieldProps } from \"./field.types\";\nimport { FieldProvider, useFieldContext } from \"./field.context\";\nimport { cls } from \"../utils/cls\";\nimport sx from \"./field.module.css\";\n\nexport const Field = (props: FieldProps) => {\n const [local, rest] = splitProps(props, [\"class\", \"error\"]);\n\n return (\n <FieldProvider error={!!local.error}>\n <div {...rest} class={cls(sx.field, local.class)}>\n {props.children}\n </div>\n </FieldProvider>\n );\n};\n\nconst FieldLabel = (props: FieldLabelProps) => {\n const [local, rest] = splitProps(props, [\"class\"]);\n const context = useFieldContext();\n\n return (\n <label {...rest} for={context.fieldId} class={cls(sx.label, local.class)}>\n {rest.children}\n </label>\n );\n};\n\nconst FieldMessage = (props: FieldMessageProps) => {\n const [local, rest] = splitProps(props, [\"class\", \"level\"]);\n const context = useFieldContext();\n const messageId = createUniqueId();\n\n context.setMessage({ level: local.level || \"info\", id: messageId });\n\n return (\n <Show when={rest.children}>\n <p\n {...rest}\n id={messageId}\n class={cls(sx.message, local.class, local.level === \"error\" && sx.error)}\n >\n {rest.children}\n </p>\n </Show>\n );\n};\n\nField.Label = FieldLabel;\n\nField.Message = FieldMessage;\n"],"names":["cls","classes","defaultProps","variant","Button","props","merged","mergeProps","local","rest","splitProps","_el$","_tmpl$","_$mergeProps","sx","button","class","solid","outlined","children","Link","link","disabled","color","secondary","underline","isError","message","getMessageIds","messages","noop","noopAccessor","value","noopSetter","defaultValue","fieldId","undefined","error","ariaDescribedBy","ariaErrorMessage","setMessage","FieldContext","createContext","useFieldContext","useContext","FieldProvider","createUniqueId","setMessages","createSignal","createMemo","filter","prev","_$createComponent","Provider","Checkbox","context","id","_el$2","firstChild","_el$3","nextSibling","input","_$insert","_c$","_$memo","label","_el$4","_tmpl$2","_$effect","_$className","_p$","_v$","checkbox","_v$2","indicator","e","t","TextInput","DialogContext","useDialogContext","DialogProvider","dialogRef","setDialogRef","element","ariaLabelledBy","setTitleId","setDescriptionId","isOpen","openDialog","showModal","onOpenChange","closeDialog","requestClose","createEffect","onBeforeClose","Dialog","Trigger","child","HTMLElement","onclick","Content","_$use","ref","dialog","onClose","onCancel","Title","titleId","title","Description","descriptionId","_tmpl$3","description","Close","Actions","_tmpl$4","actions","Field","field","FieldLabel","FieldMessage","messageId","level","Show","when","Label","Message"],"mappings":"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"}
|