@bysages/solid 0.4.1 → 0.4.2

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 (96) hide show
  1. package/dist/components/ai-prompt-input/index.mjs +37 -35
  2. package/dist/components/angle-slider/index.d.mts +15 -1
  3. package/dist/components/angle-slider/index.mjs +57 -2
  4. package/dist/components/calendar/index.d.mts +19 -7
  5. package/dist/components/calendar/index.mjs +212 -138
  6. package/dist/components/carousel/index.d.mts +15 -1
  7. package/dist/components/carousel/index.mjs +68 -4
  8. package/dist/components/checkbox/index.d.mts +16 -1
  9. package/dist/components/checkbox/index.mjs +53 -2
  10. package/dist/components/checkbox-group/index.d.mts +10 -3
  11. package/dist/components/checkbox-group/index.mjs +2 -2
  12. package/dist/components/chip/index.d.mts +1 -1
  13. package/dist/components/clipboard/index.d.mts +14 -1
  14. package/dist/components/clipboard/index.mjs +57 -2
  15. package/dist/components/date-input/index.d.mts +16 -2
  16. package/dist/components/date-input/index.mjs +51 -2
  17. package/dist/components/date-picker/index.d.mts +27 -2
  18. package/dist/components/date-picker/index.mjs +152 -3
  19. package/dist/components/editable/index.d.mts +17 -1
  20. package/dist/components/editable/index.mjs +80 -2
  21. package/dist/components/field/index.d.mts +16 -1
  22. package/dist/components/field/index.mjs +52 -4
  23. package/dist/components/fieldset/index.d.mts +15 -3
  24. package/dist/components/fieldset/index.mjs +46 -4
  25. package/dist/components/file-upload/index.d.mts +21 -1
  26. package/dist/components/file-upload/index.mjs +65 -2
  27. package/dist/components/floating-panel/index.d.mts +15 -3
  28. package/dist/components/floating-panel/index.mjs +112 -4
  29. package/dist/components/form/index.d.mts +44 -2
  30. package/dist/components/image-cropper/index.d.mts +8 -1
  31. package/dist/components/image-cropper/index.mjs +42 -4
  32. package/dist/components/json-tree-view/index.d.mts +11 -2
  33. package/dist/components/json-tree-view/index.mjs +16 -1
  34. package/dist/components/listbox/index.d.mts +21 -1
  35. package/dist/components/listbox/index.mjs +58 -3
  36. package/dist/components/marquee/index.d.mts +12 -1
  37. package/dist/components/marquee/index.mjs +45 -4
  38. package/dist/components/navigation-menu/index.d.mts +17 -1
  39. package/dist/components/navigation-menu/index.mjs +65 -5
  40. package/dist/components/number-input/index.d.mts +20 -1
  41. package/dist/components/number-input/index.mjs +71 -2
  42. package/dist/components/pagination/index.d.mts +22 -2
  43. package/dist/components/pagination/index.mjs +104 -5
  44. package/dist/components/password-input/index.d.mts +18 -1
  45. package/dist/components/password-input/index.mjs +56 -2
  46. package/dist/components/pin-input/index.d.mts +18 -1
  47. package/dist/components/pin-input/index.mjs +54 -2
  48. package/dist/components/progress/index.d.mts +19 -1
  49. package/dist/components/progress/index.mjs +105 -6
  50. package/dist/components/qr-code/index.d.mts +8 -1
  51. package/dist/components/qr-code/index.mjs +21 -4
  52. package/dist/components/radio-group/index.d.mts +23 -1
  53. package/dist/components/radio-group/index.mjs +65 -2
  54. package/dist/components/rating-group/index.d.mts +15 -1
  55. package/dist/components/rating-group/index.mjs +51 -2
  56. package/dist/components/scroll-area/index.d.mts +11 -3
  57. package/dist/components/scroll-area/index.mjs +36 -4
  58. package/dist/components/segment-group/index.d.mts +27 -4
  59. package/dist/components/segment-group/index.mjs +65 -6
  60. package/dist/components/signature-pad/index.d.mts +16 -1
  61. package/dist/components/signature-pad/index.mjs +63 -4
  62. package/dist/components/slider/index.d.mts +20 -1
  63. package/dist/components/slider/index.mjs +66 -2
  64. package/dist/components/splitter/index.d.mts +15 -1
  65. package/dist/components/splitter/index.mjs +57 -4
  66. package/dist/components/steps/index.d.mts +5 -1
  67. package/dist/components/steps/index.mjs +9 -2
  68. package/dist/components/swap/index.d.mts +11 -3
  69. package/dist/components/swap/index.mjs +34 -4
  70. package/dist/components/switch/index.d.mts +16 -1
  71. package/dist/components/switch/index.mjs +47 -2
  72. package/dist/components/table/index.d.mts +2 -0
  73. package/dist/components/table/index.mjs +13 -11
  74. package/dist/components/tag/index.d.mts +29 -0
  75. package/dist/components/tag/index.mjs +108 -0
  76. package/dist/components/tags-input/index.d.mts +18 -1
  77. package/dist/components/tags-input/index.mjs +82 -2
  78. package/dist/components/timer/index.d.mts +12 -1
  79. package/dist/components/timer/index.mjs +56 -4
  80. package/dist/components/toast/index.d.mts +10 -5
  81. package/dist/components/toast/index.mjs +37 -5
  82. package/dist/components/toc/index.d.mts +2 -11
  83. package/dist/components/toc/index.mjs +1 -1
  84. package/dist/components/toggle/index.d.mts +8 -1
  85. package/dist/components/toggle/index.mjs +26 -4
  86. package/dist/components/toggle-group/index.d.mts +23 -1
  87. package/dist/components/toggle-group/index.mjs +57 -3
  88. package/dist/components/tree-view/index.d.mts +32 -2
  89. package/dist/components/tree-view/index.mjs +93 -4
  90. package/dist/index-BU5U5w04.d.mts +35 -0
  91. package/dist/index.d.mts +43 -42
  92. package/dist/index.mjs +3 -2
  93. package/dist/toc-DRHr8_eD.mjs +88 -0
  94. package/package.json +2 -2
  95. package/dist/index-B1-quIrl.d.mts +0 -1815
  96. package/dist/toc-CqvGOp34.mjs +0 -31
@@ -10,7 +10,20 @@ type ClipboardOwnProps = {
10
10
  size?: "sm" | "md" | "lg";
11
11
  };
12
12
  declare function ClipboardRoot(props: ClipboardRootProps & ClipboardOwnProps): import("solid-js").JSX.Element;
13
- export declare const Clipboard: typeof ClipboardRoot & Omit<typeof Clipboard$1, "Root"> & {
13
+ export interface ClipboardFacadeProps {
14
+ value?: string;
15
+ defaultValue?: string;
16
+ disabled?: boolean;
17
+ label?: string;
18
+ placeholder?: string;
19
+ /** One rung of the control-height ladder for the value field and its copy seal. */
20
+ size?: "sm" | "md" | "lg";
21
+ onValueChange?: (value: string) => void;
22
+ }
23
+ /** The complete copy field behind one value: a labelled read-only input and
24
+ * its confirmed copy trigger. */
25
+ declare function ClipboardFacade(props: ClipboardFacadeProps): import("solid-js").JSX.Element;
26
+ export declare const Clipboard: typeof ClipboardFacade & Omit<typeof Clipboard$1, "Root"> & {
14
27
  Root: typeof ClipboardRoot;
15
28
  };
16
29
  //#endregion
@@ -1,6 +1,7 @@
1
1
  import { t as defineFamily } from "../../family-Cmd8HEyK.mjs";
2
+ import { r as iconNode } from "../../icon-DTqmJCd5.mjs";
2
3
  import { t as useElementId } from "../../id-2ygNzPHF.mjs";
3
- import { createComponent, mergeProps } from "@solidjs/web";
4
+ import { createComponent, memo, mergeProps } from "@solidjs/web";
4
5
  import { injectComponentStyle } from "@bysages/core/styling";
5
6
  import { splitProps } from "solid-js";
6
7
  import { Clipboard as Clipboard$1 } from "@ark-ui/solid/clipboard";
@@ -18,7 +19,61 @@ function ClipboardRoot(props) {
18
19
  }
19
20
  }));
20
21
  }
21
- const Clipboard = defineFamily(ClipboardRoot, {
22
+ /** The complete copy field behind one value: a labelled read-only input and
23
+ * its confirmed copy trigger. */
24
+ function ClipboardFacade(props) {
25
+ return createComponent(ClipboardRoot, mergeProps({
26
+ get size() {
27
+ return props.size ?? "md";
28
+ },
29
+ get defaultValue() {
30
+ return props.defaultValue;
31
+ }
32
+ }, () => {
33
+ return props.value === void 0 ? {} : { value: props.value };
34
+ }, {
35
+ onValueChange: (details) => props.onValueChange?.(details.value),
36
+ get children() {
37
+ return [memo(() => {
38
+ return memo(() => {
39
+ return !!props.label;
40
+ })() ? createComponent(Clipboard$1.Label, { get children() {
41
+ return props.label;
42
+ } }) : null;
43
+ }), createComponent(Clipboard$1.Control, { get children() {
44
+ return [createComponent(Clipboard$1.Input, {
45
+ get placeholder() {
46
+ return props.placeholder;
47
+ },
48
+ get disabled() {
49
+ return props.disabled;
50
+ }
51
+ }), createComponent(Clipboard$1.Trigger, {
52
+ get disabled() {
53
+ return props.disabled;
54
+ },
55
+ get children() {
56
+ return createComponent(Clipboard$1.Indicator, {
57
+ get copied() {
58
+ return iconNode("check", {
59
+ width: "14",
60
+ height: "14"
61
+ });
62
+ },
63
+ get children() {
64
+ return iconNode("copy", {
65
+ width: "14",
66
+ height: "14"
67
+ });
68
+ }
69
+ });
70
+ }
71
+ })];
72
+ } })];
73
+ }
74
+ }));
75
+ }
76
+ const Clipboard = defineFamily(ClipboardFacade, {
22
77
  ...Clipboard$1,
23
78
  Root: ClipboardRoot
24
79
  });
@@ -1,4 +1,4 @@
1
- import { DateInput as DateInput$1, DateInputRootProps } from "@ark-ui/solid/date-input";
1
+ import { DateInput as DateInput$1, DateInputDateValue, DateInputRootProps } from "@ark-ui/solid/date-input";
2
2
  //#region src/components/date-input/index.d.ts
3
3
  /** Ark's DateInput, dressed in the paper-and-ink system: a segmented
4
4
  * field where the focused segment takes the flat ink fill. The API is
@@ -9,7 +9,21 @@ type DateInputOwnProps = {
9
9
  size?: "sm" | "md" | "lg";
10
10
  };
11
11
  declare function DateInputRoot(props: DateInputRootProps & DateInputOwnProps): import("solid-js").JSX.Element;
12
- export declare const DateInput: typeof DateInputRoot & Omit<typeof DateInput$1, "Root"> & {
12
+ type DateInputFacadeValue = DateInputDateValue | DateInputDateValue[];
13
+ export interface DateInputFacadeProps {
14
+ value?: DateInputFacadeValue;
15
+ defaultValue?: DateInputFacadeValue;
16
+ disabled?: boolean;
17
+ invalid?: boolean;
18
+ required?: boolean;
19
+ label?: string;
20
+ /** One rung of the control-height ladder for the segmented field. */
21
+ size?: "sm" | "md" | "lg";
22
+ onValueChange?: (value: DateInputDateValue[]) => void;
23
+ }
24
+ /** The complete segmented date field behind one value. */
25
+ declare function DateInputFacade(props: DateInputFacadeProps): import("solid-js").JSX.Element;
26
+ export declare const DateInput: typeof DateInputFacade & Omit<typeof DateInput$1, "Root"> & {
13
27
  Root: typeof DateInputRoot;
14
28
  };
15
29
  //#endregion
@@ -2,7 +2,7 @@ import { t as defineFamily } from "../../family-Cmd8HEyK.mjs";
2
2
  import { t as useElementId } from "../../id-2ygNzPHF.mjs";
3
3
  import { createComponent, mergeProps } from "@solidjs/web";
4
4
  import { injectComponentStyle } from "@bysages/core/styling";
5
- import { splitProps } from "solid-js";
5
+ import { Show, splitProps } from "solid-js";
6
6
  import { DateInput as DateInput$1 } from "@ark-ui/solid/date-input";
7
7
  //#region src/components/date-input/index.tsx
8
8
  function DateInputRoot(props) {
@@ -17,7 +17,56 @@ function DateInputRoot(props) {
17
17
  }
18
18
  }));
19
19
  }
20
- const DateInput = defineFamily(DateInputRoot, {
20
+ function toDateInputValue(value) {
21
+ if (value === void 0) return void 0;
22
+ return Array.isArray(value) ? value : [value];
23
+ }
24
+ /** The complete segmented date field behind one value. */
25
+ function DateInputFacade(props) {
26
+ injectComponentStyle("date-input");
27
+ return createComponent(DateInputRoot, mergeProps({
28
+ get size() {
29
+ return props.size ?? "md";
30
+ },
31
+ get defaultValue() {
32
+ return toDateInputValue(props.defaultValue);
33
+ },
34
+ get disabled() {
35
+ return props.disabled;
36
+ },
37
+ get invalid() {
38
+ return props.invalid;
39
+ },
40
+ get required() {
41
+ return props.required;
42
+ }
43
+ }, () => {
44
+ return props.value === void 0 ? {} : { value: toDateInputValue(props.value) };
45
+ }, {
46
+ onValueChange: (details) => props.onValueChange?.(details.value),
47
+ get children() {
48
+ return [
49
+ createComponent(Show, {
50
+ get when() {
51
+ return props.label;
52
+ },
53
+ get children() {
54
+ return createComponent(DateInput$1.Label, { get children() {
55
+ return props.label;
56
+ } });
57
+ }
58
+ }),
59
+ createComponent(DateInput$1.Control, { get children() {
60
+ return createComponent(DateInput$1.SegmentGroup, { get children() {
61
+ return createComponent(DateInput$1.SegmentContext, { children: (segment) => createComponent(DateInput$1.Segment, { segment }) });
62
+ } });
63
+ } }),
64
+ createComponent(DateInput$1.HiddenInput, {})
65
+ ];
66
+ }
67
+ }));
68
+ }
69
+ const DateInput = defineFamily(DateInputFacade, {
21
70
  ...DateInput$1,
22
71
  Root: DateInputRoot
23
72
  });
@@ -1,4 +1,4 @@
1
- import { DatePicker as DatePicker$1, DatePickerRootProps } from "@ark-ui/solid/date-picker";
1
+ import { DatePicker as DatePicker$1, DatePickerDateRangePreset, DatePickerRootProps, DateValue } from "@ark-ui/solid/date-picker";
2
2
  //#region src/components/date-picker/index.d.ts
3
3
  /** Ark's DatePicker, dressed in the paper-and-ink system: the popup
4
4
  * dissolves in on elevation, selected days take the flat ink fill, and
@@ -11,7 +11,32 @@ type DatePickerOwnProps = {
11
11
  size?: "sm" | "md" | "lg";
12
12
  };
13
13
  declare function DatePickerRoot(props: DatePickerRootProps & DatePickerOwnProps): import("solid-js").JSX.Element;
14
- export declare const DatePicker: typeof DatePickerRoot & Omit<typeof DatePicker$1, "Root"> & {
14
+ type DatePickerFacadeValue = DateValue | DateValue[];
15
+ /** One quick choice in the popup: a named range, or exact dates. */
16
+ export type DatePickerPreset = {
17
+ label: string;
18
+ value: DatePickerDateRangePreset | DateValue[];
19
+ };
20
+ /** The complete picker behind one date: the field opens a single day grid,
21
+ * while ranges, multiple selection, and custom views remain anatomy work. */
22
+ export interface DatePickerFacadeProps {
23
+ value?: DatePickerFacadeValue;
24
+ defaultValue?: DatePickerFacadeValue;
25
+ disabled?: boolean;
26
+ invalid?: boolean;
27
+ required?: boolean;
28
+ label?: string;
29
+ placeholder?: string;
30
+ /** One rung of the control-height ladder for the field row. */
31
+ size?: "sm" | "md" | "lg";
32
+ /** Quick choices rendered above the calendar; the picker's own preset
33
+ * machine resolves named ranges. */
34
+ presets?: DatePickerPreset[];
35
+ onValueChange?: (value: DateValue[]) => void;
36
+ }
37
+ declare function DatePickerFacade(props: DatePickerFacadeProps): import("solid-js").JSX.Element;
38
+ type DatePickerParts = Omit<typeof DatePicker$1, "Root"> & {
15
39
  Root: typeof DatePickerRoot;
16
40
  };
41
+ export declare const DatePicker: typeof DatePickerFacade & DatePickerParts;
17
42
  //#endregion
@@ -1,10 +1,12 @@
1
1
  import { t as defineFamily } from "../../family-Cmd8HEyK.mjs";
2
+ import { r as iconNode } from "../../icon-DTqmJCd5.mjs";
2
3
  import { t as useElementId } from "../../id-2ygNzPHF.mjs";
3
- import { createComponent, mergeProps } from "@solidjs/web";
4
+ import { createComponent, insert, memo, mergeProps, template } from "@solidjs/web";
4
5
  import { injectComponentStyle } from "@bysages/core/styling";
5
- import { splitProps } from "solid-js";
6
+ import { For, Show, splitProps } from "solid-js";
6
7
  import { DatePicker as DatePicker$1 } from "@ark-ui/solid/date-picker";
7
8
  //#region src/components/date-picker/index.tsx
9
+ var _tmpl$ = /* @__PURE__ */ template(`<div data-scope=date-picker data-part=presets>`);
8
10
  function DatePickerRoot(props) {
9
11
  const [own, rest] = splitProps(props, ["size"]);
10
12
  const id = useElementId("date-picker", () => rest.id);
@@ -17,7 +19,154 @@ function DatePickerRoot(props) {
17
19
  }
18
20
  }));
19
21
  }
20
- const DatePicker = defineFamily(DatePickerRoot, {
22
+ function toDatePickerValue(value) {
23
+ if (value === void 0) return void 0;
24
+ return Array.isArray(value) ? value : [value];
25
+ }
26
+ function DatePickerFacade(props) {
27
+ injectComponentStyle("date-picker");
28
+ return createComponent(DatePickerRoot, mergeProps({
29
+ get size() {
30
+ return props.size ?? "md";
31
+ },
32
+ get defaultValue() {
33
+ return toDatePickerValue(props.defaultValue);
34
+ },
35
+ get disabled() {
36
+ return props.disabled;
37
+ },
38
+ get invalid() {
39
+ return props.invalid;
40
+ },
41
+ get placeholder() {
42
+ return props.placeholder;
43
+ },
44
+ get required() {
45
+ return props.required;
46
+ }
47
+ }, () => {
48
+ return props.value === void 0 ? {} : { value: toDatePickerValue(props.value) };
49
+ }, {
50
+ onValueChange: (details) => props.onValueChange?.(details.value),
51
+ get children() {
52
+ return [
53
+ createComponent(Show, {
54
+ get when() {
55
+ return props.label;
56
+ },
57
+ get children() {
58
+ return createComponent(DatePicker$1.Label, { get children() {
59
+ return props.label;
60
+ } });
61
+ }
62
+ }),
63
+ createComponent(DatePicker$1.Control, { get children() {
64
+ return [createComponent(DatePicker$1.Input, { get "aria-label"() {
65
+ return memo(() => {
66
+ return !!props.label;
67
+ })() ? void 0 : props.placeholder;
68
+ } }), createComponent(DatePicker$1.Trigger, { get children() {
69
+ return iconNode("calendar", {
70
+ width: "16",
71
+ height: "16"
72
+ });
73
+ } })];
74
+ } }),
75
+ createComponent(DatePicker$1.Positioner, { get children() {
76
+ return createComponent(DatePicker$1.Content, { get children() {
77
+ return createComponent(DatePicker$1.View, {
78
+ view: "day",
79
+ get children() {
80
+ return createComponent(DatePicker$1.Context, { children: (dp) => [
81
+ createComponent(Show, {
82
+ get when() {
83
+ return props.presets?.length;
84
+ },
85
+ get children() {
86
+ var _el$ = _tmpl$();
87
+ insert(_el$, createComponent(For, {
88
+ get each() {
89
+ return props.presets;
90
+ },
91
+ children: (preset) => createComponent(DatePicker$1.PresetTrigger, {
92
+ get value() {
93
+ return preset.value;
94
+ },
95
+ get children() {
96
+ return preset.label;
97
+ }
98
+ })
99
+ }));
100
+ return _el$;
101
+ }
102
+ }),
103
+ createComponent(DatePicker$1.ViewControl, { get children() {
104
+ return [
105
+ createComponent(DatePicker$1.PrevTrigger, { get children() {
106
+ return iconNode("chevron-left", {
107
+ width: "14",
108
+ height: "14"
109
+ });
110
+ } }),
111
+ createComponent(DatePicker$1.ViewTrigger, { get children() {
112
+ return createComponent(DatePicker$1.RangeText, {});
113
+ } }),
114
+ createComponent(DatePicker$1.NextTrigger, { get children() {
115
+ return iconNode("chevron-right", {
116
+ width: "14",
117
+ height: "14"
118
+ });
119
+ } })
120
+ ];
121
+ } }),
122
+ createComponent(DatePicker$1.Table, { get children() {
123
+ return [createComponent(DatePicker$1.TableHead, { get children() {
124
+ return createComponent(DatePicker$1.TableRow, { get children() {
125
+ return createComponent(For, {
126
+ get each() {
127
+ return dp().weekDays;
128
+ },
129
+ children: (day) => createComponent(DatePicker$1.TableHeader, {
130
+ get "aria-label"() {
131
+ return day.long;
132
+ },
133
+ get children() {
134
+ return day.narrow;
135
+ }
136
+ })
137
+ });
138
+ } });
139
+ } }), createComponent(DatePicker$1.TableBody, { get children() {
140
+ return createComponent(For, {
141
+ get each() {
142
+ return dp().weeks;
143
+ },
144
+ children: (week) => createComponent(DatePicker$1.TableRow, { get children() {
145
+ return createComponent(For, {
146
+ each: week,
147
+ children: (day) => createComponent(DatePicker$1.TableCell, {
148
+ value: day,
149
+ get children() {
150
+ return createComponent(DatePicker$1.TableCellTrigger, { get children() {
151
+ return day.day;
152
+ } });
153
+ }
154
+ })
155
+ });
156
+ } })
157
+ });
158
+ } })];
159
+ } })
160
+ ] });
161
+ }
162
+ });
163
+ } });
164
+ } })
165
+ ];
166
+ }
167
+ }));
168
+ }
169
+ const DatePicker = defineFamily(DatePickerFacade, {
21
170
  ...DatePicker$1,
22
171
  Root: DatePickerRoot
23
172
  });
@@ -9,7 +9,23 @@ type EditableOwnProps = {
9
9
  size?: "sm" | "md" | "lg";
10
10
  };
11
11
  declare function EditableRoot(props: EditableRootProps & EditableOwnProps): import("solid-js").JSX.Element;
12
- export declare const Editable: typeof EditableRoot & Omit<typeof Editable$1, "Root"> & {
12
+ export interface EditableFacadeProps {
13
+ value?: string;
14
+ defaultValue?: string;
15
+ label?: string;
16
+ placeholder?: string;
17
+ disabled?: boolean;
18
+ invalid?: boolean;
19
+ required?: boolean;
20
+ /** One rung of the control-height ladder for the editing field. */
21
+ size?: "sm" | "md" | "lg";
22
+ onValueChange?: (value: string) => void;
23
+ }
24
+ /** The one-tag path: a named value with the house edit controls. Modes,
25
+ * custom triggers, and alternate editors stay on the anatomy. */
26
+ declare function EditableFacade(props: EditableFacadeProps): import("solid-js").JSX.Element;
27
+ type EditableParts = Omit<typeof Editable$1, "Root"> & {
13
28
  Root: typeof EditableRoot;
14
29
  };
30
+ export declare const Editable: typeof EditableFacade & EditableParts;
15
31
  //#endregion
@@ -1,8 +1,9 @@
1
1
  import { t as defineFamily } from "../../family-Cmd8HEyK.mjs";
2
+ import { r as iconNode } from "../../icon-DTqmJCd5.mjs";
2
3
  import { t as useElementId } from "../../id-2ygNzPHF.mjs";
3
4
  import { createComponent, mergeProps } from "@solidjs/web";
4
5
  import { injectComponentStyle } from "@bysages/core/styling";
5
- import { splitProps } from "solid-js";
6
+ import { Show, splitProps } from "solid-js";
6
7
  import { Editable as Editable$1 } from "@ark-ui/solid/editable";
7
8
  //#region src/components/editable/index.tsx
8
9
  function EditableRoot(props) {
@@ -17,7 +18,84 @@ function EditableRoot(props) {
17
18
  }
18
19
  }));
19
20
  }
20
- const Editable = defineFamily(EditableRoot, {
21
+ /** The one-tag path: a named value with the house edit controls. Modes,
22
+ * custom triggers, and alternate editors stay on the anatomy. */
23
+ function EditableFacade(props) {
24
+ injectComponentStyle("editable");
25
+ return createComponent(EditableRoot, mergeProps({
26
+ get size() {
27
+ return props.size ?? "md";
28
+ },
29
+ get disabled() {
30
+ return props.disabled;
31
+ },
32
+ get invalid() {
33
+ return props.invalid;
34
+ },
35
+ get required() {
36
+ return props.required;
37
+ },
38
+ get placeholder() {
39
+ return props.placeholder;
40
+ },
41
+ get defaultValue() {
42
+ return props.defaultValue;
43
+ }
44
+ }, () => {
45
+ return props.value === void 0 ? {} : { value: props.value };
46
+ }, {
47
+ onValueChange: (details) => props.onValueChange?.(details.value),
48
+ get children() {
49
+ return [
50
+ createComponent(Show, {
51
+ get when() {
52
+ return props.label;
53
+ },
54
+ get children() {
55
+ return createComponent(Editable$1.Label, { get children() {
56
+ return props.label;
57
+ } });
58
+ }
59
+ }),
60
+ createComponent(Editable$1.Area, { get children() {
61
+ return [createComponent(Editable$1.Preview, {}), createComponent(Editable$1.Input, {})];
62
+ } }),
63
+ createComponent(Editable$1.Control, { get children() {
64
+ return [
65
+ createComponent(Editable$1.EditTrigger, {
66
+ "aria-label": "Edit",
67
+ get children() {
68
+ return iconNode("pencil", {
69
+ width: 14,
70
+ height: 14
71
+ });
72
+ }
73
+ }),
74
+ createComponent(Editable$1.SubmitTrigger, {
75
+ "aria-label": "Submit",
76
+ get children() {
77
+ return iconNode("check", {
78
+ width: 14,
79
+ height: 14
80
+ });
81
+ }
82
+ }),
83
+ createComponent(Editable$1.CancelTrigger, {
84
+ "aria-label": "Cancel",
85
+ get children() {
86
+ return iconNode("x", {
87
+ width: 14,
88
+ height: 14
89
+ });
90
+ }
91
+ })
92
+ ];
93
+ } })
94
+ ];
95
+ }
96
+ }));
97
+ }
98
+ const Editable = defineFamily(EditableFacade, {
21
99
  ...Editable$1,
22
100
  Root: EditableRoot
23
101
  });
@@ -6,7 +6,22 @@ import { Field as Field$1 } from "@ark-ui/solid/field";
6
6
  * Root, Label, Input, Textarea, Select, HelperText, ErrorText,
7
7
  * RequiredIndicator. */
8
8
  declare function FieldRoot(props: ComponentProps<typeof Field$1.Root>): import("solid-js").JSX.Element;
9
- export declare const Field: typeof FieldRoot & Omit<typeof Field$1, "Root"> & {
9
+ /** The one-tag path for a simple text field; textarea, select, and
10
+ * custom controls keep the anatomy. */
11
+ export interface FieldFacadeProps {
12
+ value?: string | number;
13
+ defaultValue?: string | number;
14
+ label?: string;
15
+ description?: string;
16
+ placeholder?: string;
17
+ disabled?: boolean;
18
+ invalid?: boolean;
19
+ required?: boolean;
20
+ onValueChange?: (value: string) => void;
21
+ }
22
+ declare function FieldFacade(props: FieldFacadeProps): import("solid-js").JSX.Element;
23
+ type FieldParts = Omit<typeof Field$1, "Root"> & {
10
24
  Root: typeof FieldRoot;
11
25
  };
26
+ export declare const Field: typeof FieldFacade & FieldParts;
12
27
  //#endregion
@@ -1,20 +1,68 @@
1
1
  import { t as defineFamily } from "../../family-Cmd8HEyK.mjs";
2
2
  import { t as useElementId } from "../../id-2ygNzPHF.mjs";
3
+ import { createComponent } from "@solidjs/web";
3
4
  import { injectComponentStyle } from "@bysages/core/styling";
4
- import { createComponent, mergeProps } from "solid-js";
5
+ import { Show, createComponent as createComponent$1, mergeProps as mergeProps$1 } from "solid-js";
5
6
  import { Field as Field$1 } from "@ark-ui/solid/field";
6
- //#region src/components/field/index.ts
7
+ //#region src/components/field/index.tsx
7
8
  /** Ark's Field, dressed in the paper-and-ink system: a tracked label, a
8
9
  * border-and-halo control, and quiet help text. The API is Ark's own —
9
10
  * Root, Label, Input, Textarea, Select, HelperText, ErrorText,
10
11
  * RequiredIndicator. */
11
12
  function FieldRoot(props) {
12
13
  const id = useElementId("field", () => props.id);
13
- return createComponent(Field$1.Root, mergeProps(props, { get id() {
14
+ return createComponent$1(Field$1.Root, mergeProps$1(props, { get id() {
14
15
  return id();
15
16
  } }));
16
17
  }
17
- const Field = defineFamily(FieldRoot, {
18
+ function FieldFacade(props) {
19
+ injectComponentStyle("field");
20
+ return createComponent(FieldRoot, {
21
+ get disabled() {
22
+ return props.disabled;
23
+ },
24
+ get invalid() {
25
+ return props.invalid;
26
+ },
27
+ get required() {
28
+ return props.required;
29
+ },
30
+ get children() {
31
+ return [
32
+ createComponent(Show, {
33
+ get when() {
34
+ return props.label;
35
+ },
36
+ get children() {
37
+ return createComponent(Field$1.Label, { get children() {
38
+ return props.label;
39
+ } });
40
+ }
41
+ }),
42
+ createComponent(Field$1.Input, {
43
+ get placeholder() {
44
+ return props.placeholder;
45
+ },
46
+ get value() {
47
+ return props.value ?? props.defaultValue;
48
+ },
49
+ onInput: (event) => props.onValueChange?.(event.currentTarget.value)
50
+ }),
51
+ createComponent(Show, {
52
+ get when() {
53
+ return props.description;
54
+ },
55
+ get children() {
56
+ return createComponent(Field$1.HelperText, { get children() {
57
+ return props.description;
58
+ } });
59
+ }
60
+ })
61
+ ];
62
+ }
63
+ });
64
+ }
65
+ const Field = defineFamily(FieldFacade, {
18
66
  ...Field$1,
19
67
  Root: FieldRoot
20
68
  });
@@ -1,11 +1,23 @@
1
- import { ComponentProps } from "solid-js";
1
+ import { ComponentProps, JSX } from "solid-js";
2
2
  import { Fieldset as Fieldset$1 } from "@ark-ui/solid/fieldset";
3
3
  //#region src/components/fieldset/index.d.ts
4
4
  /** Ark's Fieldset, dressed in the paper-and-ink system: a song-serif
5
5
  * legend heading a column of fields. The API is Ark's own — Root, Legend,
6
6
  * HelperText, ErrorText. */
7
- declare function FieldsetRoot(props: ComponentProps<typeof Fieldset$1.Root>): import("solid-js").JSX.Element;
8
- export declare const Fieldset: typeof FieldsetRoot & Omit<typeof Fieldset$1, "Root"> & {
7
+ declare function FieldsetRoot(props: ComponentProps<typeof Fieldset$1.Root>): JSX.Element;
8
+ /** The one-tag path: one label and optional description around the
9
+ * caller's controls; compound or bespoke groups keep the anatomy. */
10
+ export interface FieldsetFacadeProps {
11
+ label?: string;
12
+ description?: string;
13
+ disabled?: boolean;
14
+ invalid?: boolean;
15
+ required?: boolean;
16
+ children?: JSX.Element;
17
+ }
18
+ declare function FieldsetFacade(props: FieldsetFacadeProps): JSX.Element;
19
+ type FieldsetParts = Omit<typeof Fieldset$1, "Root"> & {
9
20
  Root: typeof FieldsetRoot;
10
21
  };
22
+ export declare const Fieldset: typeof FieldsetFacade & FieldsetParts;
11
23
  //#endregion