@sprawlify/solid 0.0.14 → 0.0.15

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.
Files changed (83) hide show
  1. package/dist/chunk-C4aQI7lE.jsx +18 -0
  2. package/dist/chunk-CKcAJnC7.js +18 -0
  3. package/dist/collapsible-Cg7zPadX.js +129 -0
  4. package/dist/collapsible-CjuC6xYl.jsx +117 -0
  5. package/dist/collection-BiyRTWsX.js +219 -0
  6. package/dist/collection-BlnS2UQy.jsx +219 -0
  7. package/dist/components/accordion/index.d.ts +69 -0
  8. package/dist/components/accordion/index.js +183 -0
  9. package/dist/components/accordion/index.jsx +157 -0
  10. package/dist/components/angle-slider/index.d.ts +74 -0
  11. package/dist/components/angle-slider/index.js +155 -0
  12. package/dist/components/angle-slider/index.jsx +144 -0
  13. package/dist/components/avatar/index.d.ts +49 -0
  14. package/dist/components/avatar/index.js +95 -0
  15. package/dist/components/avatar/index.jsx +88 -0
  16. package/dist/components/bottom-sheet/index.d.ts +80 -0
  17. package/dist/components/bottom-sheet/index.js +218 -0
  18. package/dist/components/bottom-sheet/index.jsx +177 -0
  19. package/dist/components/carousel/index.d.ts +98 -0
  20. package/dist/components/carousel/index.js +207 -0
  21. package/dist/components/carousel/index.jsx +192 -0
  22. package/dist/components/checkbox/index.d.ts +138 -0
  23. package/dist/components/checkbox/index.js +265 -0
  24. package/dist/components/checkbox/index.jsx +247 -0
  25. package/dist/components/client-only/index.d.ts +10 -0
  26. package/dist/components/client-only/index.js +24 -0
  27. package/dist/components/client-only/index.jsx +15 -0
  28. package/dist/components/clipboard/index.d.ts +72 -0
  29. package/dist/components/clipboard/index.js +149 -0
  30. package/dist/components/clipboard/index.jsx +132 -0
  31. package/dist/components/collapsible/index.d.ts +60 -0
  32. package/dist/components/collapsible/index.js +8 -0
  33. package/dist/components/collapsible/index.jsx +8 -0
  34. package/dist/components/collection/index.d.ts +3 -0
  35. package/dist/components/collection/index.js +4 -0
  36. package/dist/components/collection/index.jsx +4 -0
  37. package/dist/components/field/index.d.ts +201 -0
  38. package/dist/components/field/index.js +9 -0
  39. package/dist/components/field/index.jsx +9 -0
  40. package/dist/components/fieldset/index.d.ts +109 -0
  41. package/dist/components/fieldset/index.js +8 -0
  42. package/dist/components/fieldset/index.jsx +8 -0
  43. package/dist/components/presence/index.d.ts +5 -0
  44. package/dist/components/presence/index.js +8 -0
  45. package/dist/components/presence/index.jsx +8 -0
  46. package/dist/components/select/index.d.ts +134 -0
  47. package/dist/components/select/index.js +361 -0
  48. package/dist/components/select/index.jsx +310 -0
  49. package/dist/compose-refs-CzyOb8yH.jsx +20 -0
  50. package/dist/compose-refs-vsrTrt13.js +20 -0
  51. package/dist/create-split-props-CQVsvhvg.jsx +41 -0
  52. package/dist/factory-B6RK6SH4.d.ts +14 -0
  53. package/dist/factory-CEdj72aS.js +47 -0
  54. package/dist/field-C_WuoXOj.js +287 -0
  55. package/dist/field-CphvciGc.jsx +259 -0
  56. package/dist/fieldset-BG-0ZqWT.jsx +167 -0
  57. package/dist/fieldset-D1BO0LmU.js +182 -0
  58. package/dist/index-C3ATynHc.d.ts +23 -0
  59. package/dist/index-DXheKbqg.d.ts +76 -0
  60. package/dist/index-NWiNyxpL.d.ts +38 -0
  61. package/dist/index-vSwYtc2L.d.ts +38 -0
  62. package/dist/index.d.ts +5 -29
  63. package/dist/index.js +4 -511
  64. package/dist/index.jsx +4 -497
  65. package/dist/presence-Bfjusgm3.js +79 -0
  66. package/dist/presence-arWh1hVd.jsx +66 -0
  67. package/dist/providers-CHqGPEsc.jsx +82 -0
  68. package/dist/providers-CQkAUunr.js +96 -0
  69. package/dist/render-strategy-COrlrUuR.js +12 -0
  70. package/dist/render-strategy-CZDG_yDi.jsx +12 -0
  71. package/dist/render-strategy-CtRkdWei.d.ts +9 -0
  72. package/dist/run-if-fn-DRWB51JE.jsx +421 -0
  73. package/dist/run-if-fn-eYlaegHy.js +421 -0
  74. package/dist/types-bQRbEioA.d.ts +9 -0
  75. package/dist/utils/index.d.ts +1 -1
  76. package/dist/utils/index.js +2 -1
  77. package/dist/utils/index.jsx +2 -1
  78. package/dist/utils-DYer-9SY.js +0 -0
  79. package/dist/utils-DrvO4Hk3.jsx +0 -0
  80. package/package.json +62 -2
  81. /package/dist/{utils-DSKoW7eB.jsx → create-context-PS2j4mEo.js} +0 -0
  82. /package/dist/{utils-GEMuT7an.js → create-context-h3cXiEld.jsx} +0 -0
  83. /package/dist/{index-C_ThrXdH.d.ts → index-B0YoIRC4.d.ts} +0 -0
@@ -0,0 +1,287 @@
1
+ import { t as __export } from "./chunk-CKcAJnC7.js";
2
+ import { i as mergeProps$2 } from "./run-if-fn-eYlaegHy.js";
3
+ import { t as createContext$1 } from "./create-context-PS2j4mEo.js";
4
+ import { o as useEnvironmentContext } from "./providers-CQkAUunr.js";
5
+ import { n as createSplitProps, t as sprawlify } from "./factory-CEdj72aS.js";
6
+ import { t as composeRefs } from "./compose-refs-vsrTrt13.js";
7
+ import { u as useFieldsetContext } from "./fieldset-D1BO0LmU.js";
8
+ import { Show, createMemo, createSignal, createUniqueId, mergeProps, onCleanup, onMount, splitProps } from "solid-js";
9
+ import { createComponent, mergeProps as mergeProps$1 } from "solid-js/web";
10
+ import { ariaAttr, dataAttr } from "@sprawlify/primitives/dom-query";
11
+ import { createAnatomy } from "@sprawlify/primitives/anatomy";
12
+ import { autoresizeTextarea } from "@sprawlify/primitives/auto-resize";
13
+
14
+ //#region src/components/field/use-field-context.ts
15
+ const [FieldProvider, useFieldContext] = createContext$1({
16
+ hookName: "useFieldContext",
17
+ providerName: "<FieldProvider />",
18
+ strict: false
19
+ });
20
+
21
+ //#endregion
22
+ //#region src/components/field/field-context.tsx
23
+ const FieldContext = (props) => props.children(useFieldContext());
24
+
25
+ //#endregion
26
+ //#region src/components/field/field-error-text.tsx
27
+ const FieldErrorText = (props) => {
28
+ const field = useFieldContext();
29
+ const mergedProps = mergeProps$2(() => field().getErrorTextProps(), props);
30
+ return createComponent(Show, {
31
+ get when() {
32
+ return field?.().invalid;
33
+ },
34
+ get children() {
35
+ return createComponent(sprawlify.span, mergedProps);
36
+ }
37
+ });
38
+ };
39
+
40
+ //#endregion
41
+ //#region src/components/field/field-helper-text.tsx
42
+ const FieldHelperText = (props) => {
43
+ const field = useFieldContext();
44
+ const mergedProps = mergeProps$2(() => field().getHelperTextProps(), props);
45
+ return createComponent(sprawlify.span, mergedProps);
46
+ };
47
+
48
+ //#endregion
49
+ //#region src/components/field/field-input.tsx
50
+ const FieldInput = (props) => {
51
+ const field = useFieldContext();
52
+ const mergedProps = mergeProps$2(() => field?.().getInputProps(), props);
53
+ return createComponent(sprawlify.input, mergedProps);
54
+ };
55
+
56
+ //#endregion
57
+ //#region src/components/field/field-label.tsx
58
+ const FieldLabel = (props) => {
59
+ const field = useFieldContext();
60
+ const mergedProps = mergeProps$2(() => field?.().getLabelProps(), props);
61
+ return createComponent(sprawlify.label, mergedProps);
62
+ };
63
+
64
+ //#endregion
65
+ //#region src/components/field/field-required-indicator.tsx
66
+ const FieldRequiredIndicator = (props) => {
67
+ const field = useFieldContext();
68
+ const mergedProps = mergeProps$2(() => field().getRequiredIndicatorProps(), props);
69
+ return createComponent(Show, {
70
+ get when() {
71
+ return field().required;
72
+ },
73
+ get fallback() {
74
+ return props.fallback;
75
+ },
76
+ get children() {
77
+ return createComponent(sprawlify.span, mergeProps$1(mergedProps, { get children() {
78
+ return props.children ?? "*";
79
+ } }));
80
+ }
81
+ });
82
+ };
83
+
84
+ //#endregion
85
+ //#region src/components/field/field-anatomy.ts
86
+ const fieldAnatomy = createAnatomy("field").parts("root", "errorText", "helperText", "input", "label", "select", "textarea", "requiredIndicator");
87
+ const parts = fieldAnatomy.build();
88
+
89
+ //#endregion
90
+ //#region src/components/field/use-field.ts
91
+ const useField = (props) => {
92
+ const fieldset = useFieldsetContext();
93
+ const env = useEnvironmentContext();
94
+ const fieldProps = mergeProps({
95
+ disabled: Boolean(fieldset?.().disabled),
96
+ required: false,
97
+ invalid: false,
98
+ readOnly: false
99
+ }, props);
100
+ const [hasErrorText, setHasErrorText] = createSignal(false);
101
+ const [hasHelperText, setHasHelperText] = createSignal(false);
102
+ const id = fieldProps.id ?? createUniqueId();
103
+ const [rootRef, setRootRef] = createSignal(void 0);
104
+ const rootId = fieldProps.ids?.control ?? `field::${id}`;
105
+ const errorTextId = fieldProps.ids?.errorText ?? `field::${id}::error-text`;
106
+ const helperTextId = fieldProps.ids?.helperText ?? `field::${id}::helper-text`;
107
+ const labelId = fieldProps.ids?.label ?? `field::${id}::label`;
108
+ onMount(() => {
109
+ const rootNode = rootRef();
110
+ if (!rootNode) return;
111
+ const checkTextElements = () => {
112
+ const docOrShadowRoot = env().getRootNode();
113
+ setHasErrorText(!!docOrShadowRoot.getElementById(errorTextId));
114
+ setHasHelperText(!!docOrShadowRoot.getElementById(helperTextId));
115
+ };
116
+ checkTextElements();
117
+ const observer = new (env().getWindow()).MutationObserver(checkTextElements);
118
+ observer.observe(rootNode, {
119
+ childList: true,
120
+ subtree: true
121
+ });
122
+ onCleanup(() => observer.disconnect());
123
+ });
124
+ const getRootProps = () => ({
125
+ ...parts.root.attrs,
126
+ id: rootId,
127
+ role: "group",
128
+ "data-disabled": dataAttr(fieldProps.disabled),
129
+ "data-invalid": dataAttr(fieldProps.invalid),
130
+ "data-readonly": dataAttr(fieldProps.readOnly)
131
+ });
132
+ const getLabelProps = () => ({
133
+ ...parts.label.attrs,
134
+ id: labelId,
135
+ "data-disabled": dataAttr(fieldProps.disabled),
136
+ "data-invalid": dataAttr(fieldProps.invalid),
137
+ "data-readonly": dataAttr(fieldProps.readOnly),
138
+ "data-required": dataAttr(fieldProps.required),
139
+ htmlFor: id
140
+ });
141
+ const labelIds = createMemo(() => {
142
+ const ids = [];
143
+ if (hasErrorText() && fieldProps.invalid) ids.push(errorTextId);
144
+ if (hasHelperText()) ids.push(helperTextId);
145
+ return ids;
146
+ });
147
+ const getControlProps = () => ({
148
+ "aria-describedby": labelIds().join(" ") || void 0,
149
+ "aria-invalid": ariaAttr(fieldProps.invalid),
150
+ "data-invalid": dataAttr(fieldProps.invalid),
151
+ "data-required": dataAttr(fieldProps.required),
152
+ "data-readonly": dataAttr(fieldProps.readOnly),
153
+ id,
154
+ required: fieldProps.required,
155
+ disabled: fieldProps.disabled,
156
+ readOnly: fieldProps.readOnly || void 0
157
+ });
158
+ const getInputProps = () => ({
159
+ ...getControlProps(),
160
+ ...parts.input.attrs
161
+ });
162
+ const getTextareaProps = () => ({
163
+ ...getControlProps(),
164
+ ...parts.textarea.attrs
165
+ });
166
+ const getSelectProps = () => ({
167
+ ...getControlProps(),
168
+ ...parts.select.attrs
169
+ });
170
+ const getHelperTextProps = () => ({
171
+ id: helperTextId,
172
+ ...parts.helperText.attrs,
173
+ "data-disabled": dataAttr(fieldProps.disabled)
174
+ });
175
+ const getErrorTextProps = () => ({
176
+ id: errorTextId,
177
+ ...parts.errorText.attrs,
178
+ "aria-live": "polite"
179
+ });
180
+ const getRequiredIndicatorProps = () => ({
181
+ "aria-hidden": true,
182
+ ...parts.requiredIndicator.attrs
183
+ });
184
+ return createMemo(() => ({
185
+ ariaDescribedby: labelIds().join(" "),
186
+ ids: {
187
+ control: id,
188
+ label: labelId,
189
+ errorText: errorTextId,
190
+ helperText: helperTextId
191
+ },
192
+ refs: { rootRef: setRootRef },
193
+ disabled: fieldProps.disabled,
194
+ invalid: fieldProps.invalid,
195
+ readOnly: fieldProps.readOnly,
196
+ required: fieldProps.required,
197
+ getLabelProps,
198
+ getRootProps,
199
+ getInputProps,
200
+ getTextareaProps,
201
+ getSelectProps,
202
+ getHelperTextProps,
203
+ getErrorTextProps,
204
+ getRequiredIndicatorProps
205
+ }));
206
+ };
207
+
208
+ //#endregion
209
+ //#region src/components/field/field-root.tsx
210
+ const FieldRoot = (props) => {
211
+ const [useFieldProps, localProps] = createSplitProps()(props, [
212
+ "id",
213
+ "ids",
214
+ "disabled",
215
+ "invalid",
216
+ "readOnly",
217
+ "required"
218
+ ]);
219
+ const field = useField(useFieldProps);
220
+ const mergedProps = mergeProps$2(() => field().getRootProps(), localProps);
221
+ return createComponent(FieldProvider, {
222
+ value: field,
223
+ get children() {
224
+ return createComponent(sprawlify.div, mergeProps$1(mergedProps, { ref(r$) {
225
+ var _ref$ = composeRefs(field().refs.rootRef, props.ref);
226
+ typeof _ref$ === "function" && _ref$(r$);
227
+ } }));
228
+ }
229
+ });
230
+ };
231
+
232
+ //#endregion
233
+ //#region src/components/field/field-root-provider.tsx
234
+ const FieldRootProvider = (props) => {
235
+ const [{ value: field }, localProps] = createSplitProps()(props, ["value"]);
236
+ const mergedProps = mergeProps$2(() => field().getRootProps(), localProps);
237
+ return createComponent(FieldProvider, {
238
+ value: field,
239
+ get children() {
240
+ return createComponent(sprawlify.div, mergedProps);
241
+ }
242
+ });
243
+ };
244
+
245
+ //#endregion
246
+ //#region src/components/field/field-select.tsx
247
+ const FieldSelect = (props) => {
248
+ const field = useFieldContext();
249
+ const mergedProps = mergeProps$2(() => field?.().getSelectProps(), props);
250
+ return createComponent(sprawlify.select, mergedProps);
251
+ };
252
+
253
+ //#endregion
254
+ //#region src/components/field/field-textarea.tsx
255
+ const FieldTextarea = (props) => {
256
+ const field = useFieldContext();
257
+ let textareaRef;
258
+ const [autoresizeProps, textareaProps] = splitProps(props, ["autoresize"]);
259
+ const mergedProps = mergeProps$2(() => field?.().getTextareaProps(), () => ({ style: { resize: autoresizeProps.autoresize ? "none" : void 0 } }), textareaProps);
260
+ onMount(() => {
261
+ if (!autoresizeProps.autoresize) return;
262
+ const cleanup = autoresizeTextarea(textareaRef);
263
+ onCleanup(() => cleanup?.());
264
+ });
265
+ return createComponent(sprawlify.textarea, mergeProps$1(mergedProps, { ref(r$) {
266
+ var _ref$ = composeRefs((el) => textareaRef = el, props.ref);
267
+ typeof _ref$ === "function" && _ref$(r$);
268
+ } }));
269
+ };
270
+
271
+ //#endregion
272
+ //#region src/components/field/field.ts
273
+ var field_exports = /* @__PURE__ */ __export({
274
+ Context: () => FieldContext,
275
+ ErrorText: () => FieldErrorText,
276
+ HelperText: () => FieldHelperText,
277
+ Input: () => FieldInput,
278
+ Label: () => FieldLabel,
279
+ RequiredIndicator: () => FieldRequiredIndicator,
280
+ Root: () => FieldRoot,
281
+ RootProvider: () => FieldRootProvider,
282
+ Select: () => FieldSelect,
283
+ Textarea: () => FieldTextarea
284
+ });
285
+
286
+ //#endregion
287
+ export { FieldRoot as a, FieldRequiredIndicator as c, FieldHelperText as d, FieldErrorText as f, FieldRootProvider as i, FieldLabel as l, useFieldContext as m, FieldTextarea as n, useField as o, FieldContext as p, FieldSelect as r, fieldAnatomy as s, field_exports as t, FieldInput as u };
@@ -0,0 +1,259 @@
1
+ import { t as __export } from "./chunk-C4aQI7lE.jsx";
2
+ import { i as mergeProps$1 } from "./run-if-fn-DRWB51JE.jsx";
3
+ import { t as createContext$1 } from "./create-context-h3cXiEld.jsx";
4
+ import { o as useEnvironmentContext } from "./providers-CHqGPEsc.jsx";
5
+ import { n as sprawlify, t as createSplitProps } from "./create-split-props-CQVsvhvg.jsx";
6
+ import { t as composeRefs } from "./compose-refs-CzyOb8yH.jsx";
7
+ import { u as useFieldsetContext } from "./fieldset-BG-0ZqWT.jsx";
8
+ import { Show, createMemo, createSignal, createUniqueId, mergeProps, onCleanup, onMount, splitProps } from "solid-js";
9
+ import { ariaAttr, dataAttr } from "@sprawlify/primitives/dom-query";
10
+ import { createAnatomy } from "@sprawlify/primitives/anatomy";
11
+ import { autoresizeTextarea } from "@sprawlify/primitives/auto-resize";
12
+
13
+ //#region src/components/field/use-field-context.ts
14
+ const [FieldProvider, useFieldContext] = createContext$1({
15
+ hookName: "useFieldContext",
16
+ providerName: "<FieldProvider />",
17
+ strict: false
18
+ });
19
+
20
+ //#endregion
21
+ //#region src/components/field/field-context.tsx
22
+ const FieldContext = (props) => props.children(useFieldContext());
23
+
24
+ //#endregion
25
+ //#region src/components/field/field-error-text.tsx
26
+ const FieldErrorText = (props) => {
27
+ const field = useFieldContext();
28
+ const mergedProps = mergeProps$1(() => field().getErrorTextProps(), props);
29
+ return <Show when={field?.().invalid}>
30
+ <sprawlify.span {...mergedProps} />
31
+ </Show>;
32
+ };
33
+
34
+ //#endregion
35
+ //#region src/components/field/field-helper-text.tsx
36
+ const FieldHelperText = (props) => {
37
+ const field = useFieldContext();
38
+ const mergedProps = mergeProps$1(() => field().getHelperTextProps(), props);
39
+ return <sprawlify.span {...mergedProps} />;
40
+ };
41
+
42
+ //#endregion
43
+ //#region src/components/field/field-input.tsx
44
+ const FieldInput = (props) => {
45
+ const field = useFieldContext();
46
+ const mergedProps = mergeProps$1(() => field?.().getInputProps(), props);
47
+ return <sprawlify.input {...mergedProps} />;
48
+ };
49
+
50
+ //#endregion
51
+ //#region src/components/field/field-label.tsx
52
+ const FieldLabel = (props) => {
53
+ const field = useFieldContext();
54
+ const mergedProps = mergeProps$1(() => field?.().getLabelProps(), props);
55
+ return <sprawlify.label {...mergedProps} />;
56
+ };
57
+
58
+ //#endregion
59
+ //#region src/components/field/field-required-indicator.tsx
60
+ const FieldRequiredIndicator = (props) => {
61
+ const field = useFieldContext();
62
+ const mergedProps = mergeProps$1(() => field().getRequiredIndicatorProps(), props);
63
+ return <Show when={field().required} fallback={props.fallback}>
64
+ <sprawlify.span {...mergedProps}>{props.children ?? "*"}</sprawlify.span>
65
+ </Show>;
66
+ };
67
+
68
+ //#endregion
69
+ //#region src/components/field/field-anatomy.ts
70
+ const fieldAnatomy = createAnatomy("field").parts("root", "errorText", "helperText", "input", "label", "select", "textarea", "requiredIndicator");
71
+ const parts = fieldAnatomy.build();
72
+
73
+ //#endregion
74
+ //#region src/components/field/use-field.ts
75
+ const useField = (props) => {
76
+ const fieldset = useFieldsetContext();
77
+ const env = useEnvironmentContext();
78
+ const fieldProps = mergeProps({
79
+ disabled: Boolean(fieldset?.().disabled),
80
+ required: false,
81
+ invalid: false,
82
+ readOnly: false
83
+ }, props);
84
+ const [hasErrorText, setHasErrorText] = createSignal(false);
85
+ const [hasHelperText, setHasHelperText] = createSignal(false);
86
+ const id = fieldProps.id ?? createUniqueId();
87
+ const [rootRef, setRootRef] = createSignal(void 0);
88
+ const rootId = fieldProps.ids?.control ?? `field::${id}`;
89
+ const errorTextId = fieldProps.ids?.errorText ?? `field::${id}::error-text`;
90
+ const helperTextId = fieldProps.ids?.helperText ?? `field::${id}::helper-text`;
91
+ const labelId = fieldProps.ids?.label ?? `field::${id}::label`;
92
+ onMount(() => {
93
+ const rootNode = rootRef();
94
+ if (!rootNode) return;
95
+ const checkTextElements = () => {
96
+ const docOrShadowRoot = env().getRootNode();
97
+ setHasErrorText(!!docOrShadowRoot.getElementById(errorTextId));
98
+ setHasHelperText(!!docOrShadowRoot.getElementById(helperTextId));
99
+ };
100
+ checkTextElements();
101
+ const observer = new (env().getWindow()).MutationObserver(checkTextElements);
102
+ observer.observe(rootNode, {
103
+ childList: true,
104
+ subtree: true
105
+ });
106
+ onCleanup(() => observer.disconnect());
107
+ });
108
+ const getRootProps = () => ({
109
+ ...parts.root.attrs,
110
+ id: rootId,
111
+ role: "group",
112
+ "data-disabled": dataAttr(fieldProps.disabled),
113
+ "data-invalid": dataAttr(fieldProps.invalid),
114
+ "data-readonly": dataAttr(fieldProps.readOnly)
115
+ });
116
+ const getLabelProps = () => ({
117
+ ...parts.label.attrs,
118
+ id: labelId,
119
+ "data-disabled": dataAttr(fieldProps.disabled),
120
+ "data-invalid": dataAttr(fieldProps.invalid),
121
+ "data-readonly": dataAttr(fieldProps.readOnly),
122
+ "data-required": dataAttr(fieldProps.required),
123
+ htmlFor: id
124
+ });
125
+ const labelIds = createMemo(() => {
126
+ const ids = [];
127
+ if (hasErrorText() && fieldProps.invalid) ids.push(errorTextId);
128
+ if (hasHelperText()) ids.push(helperTextId);
129
+ return ids;
130
+ });
131
+ const getControlProps = () => ({
132
+ "aria-describedby": labelIds().join(" ") || void 0,
133
+ "aria-invalid": ariaAttr(fieldProps.invalid),
134
+ "data-invalid": dataAttr(fieldProps.invalid),
135
+ "data-required": dataAttr(fieldProps.required),
136
+ "data-readonly": dataAttr(fieldProps.readOnly),
137
+ id,
138
+ required: fieldProps.required,
139
+ disabled: fieldProps.disabled,
140
+ readOnly: fieldProps.readOnly || void 0
141
+ });
142
+ const getInputProps = () => ({
143
+ ...getControlProps(),
144
+ ...parts.input.attrs
145
+ });
146
+ const getTextareaProps = () => ({
147
+ ...getControlProps(),
148
+ ...parts.textarea.attrs
149
+ });
150
+ const getSelectProps = () => ({
151
+ ...getControlProps(),
152
+ ...parts.select.attrs
153
+ });
154
+ const getHelperTextProps = () => ({
155
+ id: helperTextId,
156
+ ...parts.helperText.attrs,
157
+ "data-disabled": dataAttr(fieldProps.disabled)
158
+ });
159
+ const getErrorTextProps = () => ({
160
+ id: errorTextId,
161
+ ...parts.errorText.attrs,
162
+ "aria-live": "polite"
163
+ });
164
+ const getRequiredIndicatorProps = () => ({
165
+ "aria-hidden": true,
166
+ ...parts.requiredIndicator.attrs
167
+ });
168
+ return createMemo(() => ({
169
+ ariaDescribedby: labelIds().join(" "),
170
+ ids: {
171
+ control: id,
172
+ label: labelId,
173
+ errorText: errorTextId,
174
+ helperText: helperTextId
175
+ },
176
+ refs: { rootRef: setRootRef },
177
+ disabled: fieldProps.disabled,
178
+ invalid: fieldProps.invalid,
179
+ readOnly: fieldProps.readOnly,
180
+ required: fieldProps.required,
181
+ getLabelProps,
182
+ getRootProps,
183
+ getInputProps,
184
+ getTextareaProps,
185
+ getSelectProps,
186
+ getHelperTextProps,
187
+ getErrorTextProps,
188
+ getRequiredIndicatorProps
189
+ }));
190
+ };
191
+
192
+ //#endregion
193
+ //#region src/components/field/field-root.tsx
194
+ const FieldRoot = (props) => {
195
+ const [useFieldProps, localProps] = createSplitProps()(props, [
196
+ "id",
197
+ "ids",
198
+ "disabled",
199
+ "invalid",
200
+ "readOnly",
201
+ "required"
202
+ ]);
203
+ const field = useField(useFieldProps);
204
+ const mergedProps = mergeProps$1(() => field().getRootProps(), localProps);
205
+ return <FieldProvider value={field}>
206
+ <sprawlify.div {...mergedProps} ref={composeRefs(field().refs.rootRef, props.ref)} />
207
+ </FieldProvider>;
208
+ };
209
+
210
+ //#endregion
211
+ //#region src/components/field/field-root-provider.tsx
212
+ const FieldRootProvider = (props) => {
213
+ const [{ value: field }, localProps] = createSplitProps()(props, ["value"]);
214
+ const mergedProps = mergeProps$1(() => field().getRootProps(), localProps);
215
+ return <FieldProvider value={field}>
216
+ <sprawlify.div {...mergedProps} />
217
+ </FieldProvider>;
218
+ };
219
+
220
+ //#endregion
221
+ //#region src/components/field/field-select.tsx
222
+ const FieldSelect = (props) => {
223
+ const field = useFieldContext();
224
+ const mergedProps = mergeProps$1(() => field?.().getSelectProps(), props);
225
+ return <sprawlify.select {...mergedProps} />;
226
+ };
227
+
228
+ //#endregion
229
+ //#region src/components/field/field-textarea.tsx
230
+ const FieldTextarea = (props) => {
231
+ const field = useFieldContext();
232
+ let textareaRef;
233
+ const [autoresizeProps, textareaProps] = splitProps(props, ["autoresize"]);
234
+ const mergedProps = mergeProps$1(() => field?.().getTextareaProps(), () => ({ style: { resize: autoresizeProps.autoresize ? "none" : void 0 } }), textareaProps);
235
+ onMount(() => {
236
+ if (!autoresizeProps.autoresize) return;
237
+ const cleanup = autoresizeTextarea(textareaRef);
238
+ onCleanup(() => cleanup?.());
239
+ });
240
+ return <sprawlify.textarea {...mergedProps} ref={composeRefs((el) => textareaRef = el, props.ref)} />;
241
+ };
242
+
243
+ //#endregion
244
+ //#region src/components/field/field.ts
245
+ var field_exports = /* @__PURE__ */ __export({
246
+ Context: () => FieldContext,
247
+ ErrorText: () => FieldErrorText,
248
+ HelperText: () => FieldHelperText,
249
+ Input: () => FieldInput,
250
+ Label: () => FieldLabel,
251
+ RequiredIndicator: () => FieldRequiredIndicator,
252
+ Root: () => FieldRoot,
253
+ RootProvider: () => FieldRootProvider,
254
+ Select: () => FieldSelect,
255
+ Textarea: () => FieldTextarea
256
+ });
257
+
258
+ //#endregion
259
+ export { FieldRoot as a, FieldRequiredIndicator as c, FieldHelperText as d, FieldErrorText as f, FieldRootProvider as i, FieldLabel as l, useFieldContext as m, FieldTextarea as n, useField as o, FieldContext as p, FieldSelect as r, fieldAnatomy as s, field_exports as t, FieldInput as u };