@sprawlify/react 0.0.5 → 0.0.7

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 (127) hide show
  1. package/dist/{collapsible-C5ZpjCRe.mjs → collapsible-B06GGGE7.mjs} +7 -4
  2. package/dist/{collapsible-D_cXuaRy.cjs → collapsible-D5kle6Bc.cjs} +12 -9
  3. package/dist/collection-BKabYqpE.cjs +229 -0
  4. package/dist/collection-DEsp9z6X.mjs +187 -0
  5. package/dist/components/accordion/index.cjs +19 -24
  6. package/dist/components/accordion/index.d.cts +11 -9
  7. package/dist/components/accordion/index.d.mts +11 -9
  8. package/dist/components/accordion/index.mjs +9 -14
  9. package/dist/components/angle-slider/index.cjs +12 -9
  10. package/dist/components/angle-slider/index.d.cts +13 -11
  11. package/dist/components/angle-slider/index.d.mts +13 -11
  12. package/dist/components/angle-slider/index.mjs +7 -4
  13. package/dist/components/avatar/index.cjs +128 -0
  14. package/dist/components/avatar/index.d.cts +49 -0
  15. package/dist/components/avatar/index.d.mts +49 -0
  16. package/dist/components/avatar/index.mjs +110 -0
  17. package/dist/components/bottom-sheet/index.cjs +213 -0
  18. package/dist/components/bottom-sheet/index.d.cts +80 -0
  19. package/dist/components/bottom-sheet/index.d.mts +81 -0
  20. package/dist/components/bottom-sheet/index.mjs +190 -0
  21. package/dist/components/carousel/index.cjs +263 -0
  22. package/dist/components/carousel/index.d.cts +95 -0
  23. package/dist/components/carousel/index.d.mts +95 -0
  24. package/dist/components/carousel/index.mjs +242 -0
  25. package/dist/components/checkbox/index.cjs +308 -0
  26. package/dist/components/checkbox/index.d.cts +115 -0
  27. package/dist/components/checkbox/index.d.mts +115 -0
  28. package/dist/components/checkbox/index.mjs +289 -0
  29. package/dist/components/client-only/index.cjs +14 -0
  30. package/dist/components/client-only/index.d.cts +8 -0
  31. package/dist/components/client-only/index.d.mts +8 -0
  32. package/dist/components/client-only/index.mjs +13 -0
  33. package/dist/components/clipboard/index.cjs +185 -0
  34. package/dist/components/clipboard/index.d.cts +71 -0
  35. package/dist/components/clipboard/index.d.mts +71 -0
  36. package/dist/components/clipboard/index.mjs +163 -0
  37. package/dist/components/collapsible/index.cjs +6 -3
  38. package/dist/components/collapsible/index.d.cts +10 -8
  39. package/dist/components/collapsible/index.d.mts +10 -8
  40. package/dist/components/collapsible/index.mjs +6 -3
  41. package/dist/components/collection/index.cjs +11 -0
  42. package/dist/components/collection/index.d.cts +2 -0
  43. package/dist/components/collection/index.d.mts +2 -0
  44. package/dist/components/collection/index.mjs +5 -0
  45. package/dist/components/color-picker/index.cjs +613 -0
  46. package/dist/components/color-picker/index.d.cts +181 -0
  47. package/dist/components/color-picker/index.d.mts +182 -0
  48. package/dist/components/color-picker/index.mjs +570 -0
  49. package/dist/components/combobox/index.cjs +416 -0
  50. package/dist/components/combobox/index.d.cts +132 -0
  51. package/dist/components/combobox/index.d.mts +133 -0
  52. package/dist/components/combobox/index.mjs +387 -0
  53. package/dist/components/field/index.cjs +27 -0
  54. package/dist/components/field/index.d.cts +116 -0
  55. package/dist/components/field/index.d.mts +116 -0
  56. package/dist/components/field/index.mjs +9 -0
  57. package/dist/components/fieldset/index.cjs +23 -0
  58. package/dist/components/fieldset/index.d.cts +73 -0
  59. package/dist/components/fieldset/index.d.mts +73 -0
  60. package/dist/components/fieldset/index.mjs +9 -0
  61. package/dist/components/highlight/index.cjs +32 -0
  62. package/dist/components/highlight/index.d.cts +14 -0
  63. package/dist/components/highlight/index.d.mts +14 -0
  64. package/dist/components/highlight/index.mjs +30 -0
  65. package/dist/components/portal/index.cjs +32 -0
  66. package/dist/components/portal/index.d.cts +11 -0
  67. package/dist/components/portal/index.d.mts +11 -0
  68. package/dist/components/portal/index.mjs +31 -0
  69. package/dist/components/presence/index.cjs +11 -0
  70. package/dist/components/presence/index.d.cts +2 -0
  71. package/dist/components/presence/index.d.mts +4 -0
  72. package/dist/components/presence/index.mjs +7 -0
  73. package/dist/components/select/index.cjs +419 -0
  74. package/dist/components/select/index.d.cts +132 -0
  75. package/dist/components/select/index.d.mts +133 -0
  76. package/dist/components/select/index.mjs +384 -0
  77. package/dist/{factory-DbgGeb_e.mjs → core-C0F-4KYH.mjs} +4 -154
  78. package/dist/{factory-CfqPG186.cjs → core-CPLjF6nm.cjs} +0 -198
  79. package/dist/{create-context-DCEySQ7J.cjs → create-context-D6DyFRSf.cjs} +1 -1
  80. package/dist/environment-BXkWNF2O.mjs +46 -0
  81. package/dist/environment-DLPiALpf.cjs +58 -0
  82. package/dist/factory-BbbIuDqa.d.mts +15 -0
  83. package/dist/factory-CDX-oCN5.cjs +81 -0
  84. package/dist/factory-DQlmCPH2.mjs +63 -0
  85. package/dist/factory-DaNWFLLN.d.cts +15 -0
  86. package/dist/field-CGCTFCx2.mjs +322 -0
  87. package/dist/field-CXhpW6zO.cjs +404 -0
  88. package/dist/fieldset-CuSSYZxV.cjs +237 -0
  89. package/dist/fieldset-poJ8RDvB.mjs +184 -0
  90. package/dist/index-BUN9wyVM.d.mts +34 -0
  91. package/dist/index-Dhthtdz_.d.mts +74 -0
  92. package/dist/index-DqRXPiW_.d.cts +34 -0
  93. package/dist/index-DsZldSch.d.cts +74 -0
  94. package/dist/index-DtdZfcpz.d.mts +25 -0
  95. package/dist/index.cjs +14 -11
  96. package/dist/index.d.cts +7 -5
  97. package/dist/index.d.mts +7 -5
  98. package/dist/index.mjs +6 -3
  99. package/dist/normalize-props-sqcs77GC.d.cts +13 -0
  100. package/dist/presence-2A4loEJY.mjs +71 -0
  101. package/dist/presence-BX1tNsGA.cjs +101 -0
  102. package/dist/providers-Bk3ALTxZ.cjs +78 -0
  103. package/dist/providers-CyTYcOU1.mjs +54 -0
  104. package/dist/render-strategy-D3w8btTD.mjs +13 -0
  105. package/dist/render-strategy-k1JmEGnq.cjs +30 -0
  106. package/dist/types-DYWV3uAj.d.cts +5 -0
  107. package/dist/types-FLvjyw__.d.mts +5 -0
  108. package/dist/use-event-BcyNH29h.mjs +19 -0
  109. package/dist/use-event-CGMgV6xB.cjs +25 -0
  110. package/dist/use-safe-layout-effect-BlOhFUAp.mjs +17 -0
  111. package/dist/use-safe-layout-effect-vuYaDIpT.cjs +35 -0
  112. package/dist/utils/index.cjs +2 -2
  113. package/dist/utils/index.d.cts +1 -1
  114. package/dist/utils/index.d.mts +1 -1
  115. package/dist/utils/index.mjs +2 -2
  116. package/package.json +152 -2
  117. package/dist/factory-CNfD9NVO.d.mts +0 -41
  118. package/dist/factory-D5qarvEF.d.cts +0 -29
  119. /package/dist/{chunk-DJTHdtxa.mjs → chunk-DLP0tNsH.mjs} +0 -0
  120. /package/dist/{create-context-DLMHiig4.mjs → create-context-CdjrBhu7.mjs} +0 -0
  121. /package/dist/{create-split-props-DvwGh64U.mjs → create-split-props-BJQdOyld.mjs} +0 -0
  122. /package/dist/{create-split-props-CSaOnJRj.cjs → create-split-props-CSkzaUOy.cjs} +0 -0
  123. /package/dist/{index--Dciu8yd.d.mts → index-BwTxN5vG.d.mts} +0 -0
  124. /package/dist/{index-wpUGMM30.d.cts → index-zOmANnUL.d.cts} +0 -0
  125. /package/dist/{render-strategy-G1aEn-1X.d.cts → render-strategy-CdpAg9jb.d.cts} +0 -0
  126. /package/dist/{render-strategy-D37ixdTi.d.mts → render-strategy-GetMScNK.d.mts} +0 -0
  127. /package/dist/{utils-BQjTDAMH.mjs → utils-DflO0-3U.mjs} +0 -0
@@ -0,0 +1,184 @@
1
+ import { t as __export } from "./chunk-DLP0tNsH.mjs";
2
+ import { t as mergeProps } from "./core-C0F-4KYH.mjs";
3
+ import { n as useEnvironmentContext } from "./environment-BXkWNF2O.mjs";
4
+ import { n as sprawlify, r as composeRefs } from "./factory-DQlmCPH2.mjs";
5
+ import { t as createSplitProps } from "./create-split-props-BJQdOyld.mjs";
6
+ import { n as FieldsetProvider, r as useFieldsetContext, t as useSafeLayoutEffect } from "./use-safe-layout-effect-BlOhFUAp.mjs";
7
+ import { forwardRef, useId, useRef, useState } from "react";
8
+ import { jsx } from "react/jsx-runtime";
9
+ import { dataAttr } from "@sprawlify/primitives/dom-query";
10
+ import { createAnatomy } from "@sprawlify/primitives/anatomy";
11
+
12
+ //#region src/components/fieldset/fieldset-context.tsx
13
+ const FieldsetContext = (props) => props.children(useFieldsetContext());
14
+
15
+ //#endregion
16
+ //#region src/components/fieldset/fieldset-error-text.tsx
17
+ const FieldsetErrorText = forwardRef((props, ref) => {
18
+ const fieldset = useFieldsetContext();
19
+ const mergedProps = mergeProps(fieldset.getErrorTextProps(), props);
20
+ return fieldset.invalid ? /* @__PURE__ */ jsx(sprawlify.span, {
21
+ ...mergedProps,
22
+ ref
23
+ }) : null;
24
+ });
25
+ FieldsetErrorText.displayName = "FieldsetErrorText";
26
+
27
+ //#endregion
28
+ //#region src/components/fieldset/fieldset-helper-text.tsx
29
+ const FieldsetHelperText = forwardRef((props, ref) => {
30
+ const mergedProps = mergeProps(useFieldsetContext().getHelperTextProps(), props);
31
+ return /* @__PURE__ */ jsx(sprawlify.span, {
32
+ ...mergedProps,
33
+ ref
34
+ });
35
+ });
36
+ FieldsetHelperText.displayName = "FieldsetHelperText";
37
+
38
+ //#endregion
39
+ //#region src/components/fieldset/fieldset-legend.tsx
40
+ const FieldsetLegend = forwardRef((props, ref) => {
41
+ const mergedProps = mergeProps(useFieldsetContext().getLegendProps(), props);
42
+ return /* @__PURE__ */ jsx(sprawlify.legend, {
43
+ ...mergedProps,
44
+ ref
45
+ });
46
+ });
47
+ FieldsetLegend.displayName = "FieldsetLegend";
48
+
49
+ //#endregion
50
+ //#region src/components/fieldset/fieldset-anatomy.ts
51
+ const fieldsetAnatomy = createAnatomy("fieldset").parts("root", "errorText", "helperText", "legend");
52
+ const parts = fieldsetAnatomy.build();
53
+
54
+ //#endregion
55
+ //#region src/components/fieldset/use-fieldset.ts
56
+ const useFieldset = (props = {}) => {
57
+ const { disabled = false, invalid = false } = props;
58
+ const env = useEnvironmentContext();
59
+ const [textElements, setTextElements] = useState({
60
+ hasErrorText: false,
61
+ hasHelperText: false
62
+ });
63
+ const uid = useId();
64
+ const id = props.id ?? uid;
65
+ const rootRef = useRef(null);
66
+ const legendId = `fieldset::${id}::legend`;
67
+ const errorTextId = `fieldset::${id}::error-text`;
68
+ const helperTextId = `fieldset::${id}::helper-text`;
69
+ useSafeLayoutEffect(() => {
70
+ const rootNode = rootRef.current;
71
+ if (!rootNode) return;
72
+ const checkTextElements = () => {
73
+ const docOrShadowRoot = env.getRootNode();
74
+ setTextElements({
75
+ hasErrorText: !!docOrShadowRoot.getElementById(errorTextId),
76
+ hasHelperText: !!docOrShadowRoot.getElementById(helperTextId)
77
+ });
78
+ };
79
+ checkTextElements();
80
+ const observer = new (env.getWindow()).MutationObserver(checkTextElements);
81
+ observer.observe(rootNode, {
82
+ childList: true,
83
+ subtree: true
84
+ });
85
+ return () => observer.disconnect();
86
+ }, [
87
+ env,
88
+ errorTextId,
89
+ helperTextId
90
+ ]);
91
+ const ids = [];
92
+ if (textElements.hasErrorText && invalid) ids.push(errorTextId);
93
+ if (textElements.hasHelperText) ids.push(helperTextId);
94
+ const labelIds = ids.length > 0 ? ids.join(" ") : void 0;
95
+ const getRootProps = () => ({
96
+ ...parts.root.attrs,
97
+ ref: rootRef,
98
+ disabled,
99
+ "data-disabled": dataAttr(disabled),
100
+ "data-invalid": dataAttr(invalid),
101
+ "aria-labelledby": legendId,
102
+ "aria-describedby": labelIds
103
+ });
104
+ const getLegendProps = () => ({
105
+ id: legendId,
106
+ ...parts.legend.attrs,
107
+ "data-disabled": dataAttr(disabled),
108
+ "data-invalid": dataAttr(invalid)
109
+ });
110
+ const getHelperTextProps = () => ({
111
+ id: helperTextId,
112
+ ...parts.helperText.attrs
113
+ });
114
+ const getErrorTextProps = () => ({
115
+ id: errorTextId,
116
+ ...parts.errorText.attrs,
117
+ "aria-live": "polite"
118
+ });
119
+ return {
120
+ refs: { rootRef },
121
+ ids: {
122
+ legend: legendId,
123
+ errorText: errorTextId,
124
+ helperText: helperTextId
125
+ },
126
+ disabled,
127
+ invalid,
128
+ getRootProps,
129
+ getLegendProps,
130
+ getHelperTextProps,
131
+ getErrorTextProps
132
+ };
133
+ };
134
+
135
+ //#endregion
136
+ //#region src/components/fieldset/fieldset-root.tsx
137
+ const splitRootProps = createSplitProps();
138
+ const FieldsetRoot = forwardRef((props, ref) => {
139
+ const [useFieldsetProps, localProps] = splitRootProps(props, [
140
+ "id",
141
+ "disabled",
142
+ "invalid"
143
+ ]);
144
+ const fieldset = useFieldset(useFieldsetProps);
145
+ const mergedProps = mergeProps(fieldset.getRootProps(), localProps);
146
+ return /* @__PURE__ */ jsx(FieldsetProvider, {
147
+ value: fieldset,
148
+ children: /* @__PURE__ */ jsx(sprawlify.fieldset, {
149
+ ...mergedProps,
150
+ ref: composeRefs(ref, fieldset.refs.rootRef)
151
+ })
152
+ });
153
+ });
154
+ FieldsetRoot.displayName = "FieldsetRoot";
155
+
156
+ //#endregion
157
+ //#region src/components/fieldset/fieldset-root-provider.tsx
158
+ const splitRootProviderProps = createSplitProps();
159
+ const FieldsetRootProvider = forwardRef((props, ref) => {
160
+ const [{ value: fieldset }, localProps] = splitRootProviderProps(props, ["value"]);
161
+ const mergedProps = mergeProps(fieldset.getRootProps(), localProps);
162
+ return /* @__PURE__ */ jsx(FieldsetProvider, {
163
+ value: fieldset,
164
+ children: /* @__PURE__ */ jsx(sprawlify.fieldset, {
165
+ ...mergedProps,
166
+ ref
167
+ })
168
+ });
169
+ });
170
+ FieldsetRootProvider.displayName = "FieldsetRootProvider";
171
+
172
+ //#endregion
173
+ //#region src/components/fieldset/fieldset.ts
174
+ var fieldset_exports = /* @__PURE__ */ __export({
175
+ Context: () => FieldsetContext,
176
+ ErrorText: () => FieldsetErrorText,
177
+ HelperText: () => FieldsetHelperText,
178
+ Legend: () => FieldsetLegend,
179
+ Root: () => FieldsetRoot,
180
+ RootProvider: () => FieldsetRootProvider
181
+ });
182
+
183
+ //#endregion
184
+ export { fieldsetAnatomy as a, FieldsetErrorText as c, useFieldset as i, FieldsetContext as l, FieldsetRootProvider as n, FieldsetLegend as o, FieldsetRoot as r, FieldsetHelperText as s, fieldset_exports as t };
@@ -0,0 +1,34 @@
1
+ import { n as Optional } from "./types-FLvjyw__.mjs";
2
+ import { r as PolymorphicProps, t as HTMLProps } from "./factory-BbbIuDqa.mjs";
3
+ import { t as RenderStrategyProps } from "./render-strategy-GetMScNK.mjs";
4
+ import * as react0 from "react";
5
+ import * as presence from "@sprawlify/primitives/machines/presence";
6
+
7
+ //#region src/components/presence/use-presence.d.ts
8
+ interface UsePresenceProps extends Optional<presence.Props, "present">, RenderStrategyProps {
9
+ skipAnimationOnMount?: boolean | undefined;
10
+ }
11
+ type UsePresenceReturn = ReturnType<typeof usePresence>;
12
+ declare const usePresence: (props?: UsePresenceProps) => {
13
+ ref: (node: HTMLElement | null) => void;
14
+ getPresenceProps: () => {
15
+ "data-state": string | undefined;
16
+ hidden: boolean;
17
+ };
18
+ present: boolean;
19
+ unmounted: boolean | undefined;
20
+ };
21
+ //#endregion
22
+ //#region src/components/presence/presence.d.ts
23
+ interface PresenceBaseProps extends UsePresenceProps, PolymorphicProps {}
24
+ interface PresenceProps extends HTMLProps<"div">, PresenceBaseProps {}
25
+ declare const Presence: react0.ForwardRefExoticComponent<PresenceProps & react0.RefAttributes<HTMLDivElement>>;
26
+ //#endregion
27
+ //#region src/components/presence/split-presence-props.d.ts
28
+ declare const splitPresenceProps: <T extends UsePresenceProps>(props: T) => [UsePresenceProps, Omit<T, "present" | "onExitComplete" | "immediate" | "skipAnimationOnMount" | "lazyMount" | "unmountOnExit">];
29
+ //#endregion
30
+ //#region src/components/presence/use-presence-context.d.ts
31
+ interface UsePresenceContext extends UsePresenceReturn {}
32
+ declare const PresenceProvider: react0.Provider<UsePresenceContext>, usePresenceContext: () => UsePresenceContext;
33
+ //#endregion
34
+ export { Presence as a, UsePresenceProps as c, splitPresenceProps as i, UsePresenceReturn as l, UsePresenceContext as n, PresenceBaseProps as o, usePresenceContext as r, PresenceProps as s, PresenceProvider as t, usePresence as u };
@@ -0,0 +1,74 @@
1
+ import { CollectionItem, CollectionItem as CollectionItem$1, CollectionOptions, FilePathTreeNode, FilePathTreeNode as FilePathTreeNode$1, FlatTreeNode, GridCollection as GridCollection$1, GridCollectionOptions, ListCollection as ListCollection$1, SelectionMode, TreeCollection, TreeCollection as TreeCollection$1, TreeCollectionOptions, TreeCollectionOptions as TreeCollectionOptions$1, TreeNode, TreeNode as TreeNode$1 } from "@sprawlify/primitives/collection";
2
+ import * as asyncList from "@sprawlify/primitives/machines/async-list";
3
+
4
+ //#region src/components/collection/grid-collection.d.ts
5
+ declare const createGridCollection: <T extends CollectionItem$1>(options: GridCollectionOptions<T>) => GridCollection$1<T>;
6
+ //#endregion
7
+ //#region src/components/collection/list-collection.d.ts
8
+ declare const createListCollection: <T extends CollectionItem>(options: CollectionOptions<T>) => ListCollection$1<T>;
9
+ //#endregion
10
+ //#region src/components/collection/tree-collection.d.ts
11
+ declare const createTreeCollection: <T extends TreeNode>(options: TreeCollectionOptions<T>) => TreeCollection<T>;
12
+ declare const createFileTreeCollection: (paths: string[]) => TreeCollection<FilePathTreeNode>;
13
+ //#endregion
14
+ //#region src/components/collection/use-async-list.d.ts
15
+ interface UseAsyncListProps<T, C = string> extends asyncList.Props<T, C> {}
16
+ interface UseAsyncListReturn<T, C = string> extends asyncList.Api<T, C> {}
17
+ declare function useAsyncList<T, C = string>(props: UseAsyncListProps<T, C>): UseAsyncListReturn<T, C>;
18
+ //#endregion
19
+ //#region src/components/collection/use-list-collection.d.ts
20
+ interface UseListCollectionProps<T> extends Omit<CollectionOptions<T>, "items"> {
21
+ initialItems: T[] | readonly T[];
22
+ filter?: (itemText: string, filterText: string, item: T) => boolean;
23
+ limit?: number;
24
+ }
25
+ declare function useListCollection<T>(props: UseListCollectionProps<T>): UseListCollectionReturn<T>;
26
+ interface UseListCollectionReturn<T> {
27
+ collection: ListCollection$1<T>;
28
+ filter: (inputValue: string) => void;
29
+ set: (items: T[]) => void;
30
+ reset: () => void;
31
+ clear: () => void;
32
+ insert: (index: number, ...items: T[]) => void;
33
+ insertBefore: (value: string, ...items: T[]) => void;
34
+ insertAfter: (value: string, ...items: T[]) => void;
35
+ remove: (...itemOrValues: Array<T | string>) => void;
36
+ move: (value: string, to: number) => void;
37
+ moveBefore: (value: string, ...values: string[]) => void;
38
+ moveAfter: (value: string, ...values: string[]) => void;
39
+ reorder: (from: number, to: number) => void;
40
+ append: (...items: T[]) => void;
41
+ upsert: (value: string, item: T, mode?: "append" | "prepend") => void;
42
+ prepend: (...items: T[]) => void;
43
+ update: (value: string, item: T) => void;
44
+ }
45
+ //#endregion
46
+ //#region src/components/collection/use-list-selection.d.ts
47
+ interface UseListSelectionProps<T extends CollectionItem> {
48
+ selectionMode?: SelectionMode;
49
+ deselectable?: boolean;
50
+ initialSelectedValues?: string[];
51
+ resetOnCollectionChange?: boolean;
52
+ collection: ListCollection$1<T>;
53
+ }
54
+ declare function useListSelection<T extends CollectionItem>(props: UseListSelectionProps<T>): UseListSelectionReturn;
55
+ interface UseListSelectionReturn {
56
+ selectedValues: string[];
57
+ isEmpty: boolean;
58
+ firstSelectedValue: string | null;
59
+ lastSelectedValue: string | null;
60
+ isSelected: (value: string | null) => boolean;
61
+ canSelect: (value: string) => boolean;
62
+ select: (value: string, forceToggle?: boolean) => void;
63
+ deselect: (value: string) => void;
64
+ toggle: (value: string) => void;
65
+ replace: (value: string | null) => void;
66
+ extend: (anchorValue: string, targetValue: string) => void;
67
+ setSelectedValues: (values: string[]) => void;
68
+ clear: () => void;
69
+ resetSelection: () => void;
70
+ isAllSelected: () => boolean;
71
+ isSomeSelected: () => boolean;
72
+ }
73
+ //#endregion
74
+ export { createGridCollection as C, GridCollectionOptions as S, CollectionItem as _, UseListCollectionReturn as a, createListCollection as b, UseAsyncListReturn as c, FlatTreeNode as d, TreeCollection$1 as f, createTreeCollection as g, createFileTreeCollection as h, UseListCollectionProps as i, useAsyncList as l, TreeNode$1 as m, UseListSelectionReturn as n, useListCollection as o, TreeCollectionOptions$1 as p, useListSelection as r, UseAsyncListProps as s, UseListSelectionProps as t, FilePathTreeNode$1 as u, CollectionOptions as v, GridCollection$1 as x, ListCollection$1 as y };
@@ -0,0 +1,34 @@
1
+ import { n as Optional } from "./types-DYWV3uAj.cjs";
2
+ import { r as PolymorphicProps, t as HTMLProps } from "./factory-DaNWFLLN.cjs";
3
+ import { t as RenderStrategyProps } from "./render-strategy-CdpAg9jb.cjs";
4
+ import * as react0 from "react";
5
+ import * as presence from "@sprawlify/primitives/machines/presence";
6
+
7
+ //#region src/components/presence/use-presence.d.ts
8
+ interface UsePresenceProps extends Optional<presence.Props, "present">, RenderStrategyProps {
9
+ skipAnimationOnMount?: boolean | undefined;
10
+ }
11
+ type UsePresenceReturn = ReturnType<typeof usePresence>;
12
+ declare const usePresence: (props?: UsePresenceProps) => {
13
+ ref: (node: HTMLElement | null) => void;
14
+ getPresenceProps: () => {
15
+ "data-state": string | undefined;
16
+ hidden: boolean;
17
+ };
18
+ present: boolean;
19
+ unmounted: boolean | undefined;
20
+ };
21
+ //#endregion
22
+ //#region src/components/presence/presence.d.ts
23
+ interface PresenceBaseProps extends UsePresenceProps, PolymorphicProps {}
24
+ interface PresenceProps extends HTMLProps<"div">, PresenceBaseProps {}
25
+ declare const Presence: react0.ForwardRefExoticComponent<PresenceProps & react0.RefAttributes<HTMLDivElement>>;
26
+ //#endregion
27
+ //#region src/components/presence/split-presence-props.d.ts
28
+ declare const splitPresenceProps: <T extends UsePresenceProps>(props: T) => [UsePresenceProps, Omit<T, "present" | "onExitComplete" | "immediate" | "skipAnimationOnMount" | "lazyMount" | "unmountOnExit">];
29
+ //#endregion
30
+ //#region src/components/presence/use-presence-context.d.ts
31
+ interface UsePresenceContext extends UsePresenceReturn {}
32
+ declare const PresenceProvider: react0.Provider<UsePresenceContext>, usePresenceContext: () => UsePresenceContext;
33
+ //#endregion
34
+ export { Presence as a, UsePresenceProps as c, splitPresenceProps as i, UsePresenceReturn as l, UsePresenceContext as n, PresenceBaseProps as o, usePresenceContext as r, PresenceProps as s, PresenceProvider as t, usePresence as u };
@@ -0,0 +1,74 @@
1
+ import { CollectionItem, CollectionItem as CollectionItem$1, CollectionOptions, FilePathTreeNode, FilePathTreeNode as FilePathTreeNode$1, FlatTreeNode, GridCollection, GridCollectionOptions, ListCollection, SelectionMode, TreeCollection, TreeCollection as TreeCollection$1, TreeCollectionOptions, TreeCollectionOptions as TreeCollectionOptions$1, TreeNode, TreeNode as TreeNode$1 } from "@sprawlify/primitives/collection";
2
+ import * as asyncList from "@sprawlify/primitives/machines/async-list";
3
+
4
+ //#region src/components/collection/grid-collection.d.ts
5
+ declare const createGridCollection: <T extends CollectionItem$1>(options: GridCollectionOptions<T>) => GridCollection<T>;
6
+ //#endregion
7
+ //#region src/components/collection/list-collection.d.ts
8
+ declare const createListCollection: <T extends CollectionItem>(options: CollectionOptions<T>) => ListCollection<T>;
9
+ //#endregion
10
+ //#region src/components/collection/tree-collection.d.ts
11
+ declare const createTreeCollection: <T extends TreeNode>(options: TreeCollectionOptions<T>) => TreeCollection<T>;
12
+ declare const createFileTreeCollection: (paths: string[]) => TreeCollection<FilePathTreeNode>;
13
+ //#endregion
14
+ //#region src/components/collection/use-async-list.d.ts
15
+ interface UseAsyncListProps<T, C = string> extends asyncList.Props<T, C> {}
16
+ interface UseAsyncListReturn<T, C = string> extends asyncList.Api<T, C> {}
17
+ declare function useAsyncList<T, C = string>(props: UseAsyncListProps<T, C>): UseAsyncListReturn<T, C>;
18
+ //#endregion
19
+ //#region src/components/collection/use-list-collection.d.ts
20
+ interface UseListCollectionProps<T> extends Omit<CollectionOptions<T>, "items"> {
21
+ initialItems: T[] | readonly T[];
22
+ filter?: (itemText: string, filterText: string, item: T) => boolean;
23
+ limit?: number;
24
+ }
25
+ declare function useListCollection<T>(props: UseListCollectionProps<T>): UseListCollectionReturn<T>;
26
+ interface UseListCollectionReturn<T> {
27
+ collection: ListCollection<T>;
28
+ filter: (inputValue: string) => void;
29
+ set: (items: T[]) => void;
30
+ reset: () => void;
31
+ clear: () => void;
32
+ insert: (index: number, ...items: T[]) => void;
33
+ insertBefore: (value: string, ...items: T[]) => void;
34
+ insertAfter: (value: string, ...items: T[]) => void;
35
+ remove: (...itemOrValues: Array<T | string>) => void;
36
+ move: (value: string, to: number) => void;
37
+ moveBefore: (value: string, ...values: string[]) => void;
38
+ moveAfter: (value: string, ...values: string[]) => void;
39
+ reorder: (from: number, to: number) => void;
40
+ append: (...items: T[]) => void;
41
+ upsert: (value: string, item: T, mode?: "append" | "prepend") => void;
42
+ prepend: (...items: T[]) => void;
43
+ update: (value: string, item: T) => void;
44
+ }
45
+ //#endregion
46
+ //#region src/components/collection/use-list-selection.d.ts
47
+ interface UseListSelectionProps<T extends CollectionItem> {
48
+ selectionMode?: SelectionMode;
49
+ deselectable?: boolean;
50
+ initialSelectedValues?: string[];
51
+ resetOnCollectionChange?: boolean;
52
+ collection: ListCollection<T>;
53
+ }
54
+ declare function useListSelection<T extends CollectionItem>(props: UseListSelectionProps<T>): UseListSelectionReturn;
55
+ interface UseListSelectionReturn {
56
+ selectedValues: string[];
57
+ isEmpty: boolean;
58
+ firstSelectedValue: string | null;
59
+ lastSelectedValue: string | null;
60
+ isSelected: (value: string | null) => boolean;
61
+ canSelect: (value: string) => boolean;
62
+ select: (value: string, forceToggle?: boolean) => void;
63
+ deselect: (value: string) => void;
64
+ toggle: (value: string) => void;
65
+ replace: (value: string | null) => void;
66
+ extend: (anchorValue: string, targetValue: string) => void;
67
+ setSelectedValues: (values: string[]) => void;
68
+ clear: () => void;
69
+ resetSelection: () => void;
70
+ isAllSelected: () => boolean;
71
+ isSomeSelected: () => boolean;
72
+ }
73
+ //#endregion
74
+ export { createGridCollection as C, GridCollectionOptions as S, CollectionItem as _, UseListCollectionReturn as a, createListCollection as b, UseAsyncListReturn as c, FlatTreeNode as d, TreeCollection$1 as f, createTreeCollection as g, createFileTreeCollection as h, UseListCollectionProps as i, useAsyncList as l, TreeNode$1 as m, UseListSelectionReturn as n, useListCollection as o, TreeCollectionOptions$1 as p, useListSelection as r, UseAsyncListProps as s, UseListSelectionProps as t, FilePathTreeNode$1 as u, CollectionOptions as v, GridCollection as x, ListCollection as y };
@@ -0,0 +1,25 @@
1
+ import { Machine, MachineSchema, Service } from "@sprawlify/primitives/core";
2
+ import { CSSProperties, HTMLAttributes, JSX, PropsWithChildren, RefObject } from "react";
3
+ import * as _sprawlify_primitives_types0 from "@sprawlify/primitives/types";
4
+
5
+ //#region src/core/machine.d.ts
6
+ declare function useMachine<T extends MachineSchema>(machine: Machine<T>, userProps?: Partial<T["props"]>): Service<T>;
7
+ //#endregion
8
+ //#region src/core/normalize-props.d.ts
9
+ type WithoutRef<T> = Omit<T, "ref">;
10
+ type ElementsWithoutRef = { [K in keyof JSX.IntrinsicElements]: WithoutRef<JSX.IntrinsicElements[K]> };
11
+ type PropTypes = ElementsWithoutRef & {
12
+ element: WithoutRef<HTMLAttributes<HTMLElement>>;
13
+ style: CSSProperties;
14
+ };
15
+ declare const normalizeProps: _sprawlify_primitives_types0.NormalizeProps<PropTypes>;
16
+ //#endregion
17
+ //#region src/core/portal.d.ts
18
+ interface PortalProps {
19
+ disabled?: boolean | undefined;
20
+ container?: RefObject<HTMLElement> | undefined;
21
+ getRootNode?: (() => ShadowRoot | Document | Node) | undefined;
22
+ }
23
+ declare const Portal: (props: PropsWithChildren<PortalProps>) => JSX.Element;
24
+ //#endregion
25
+ export { useMachine as a, normalizeProps as i, PortalProps as n, PropTypes as r, Portal as t };
package/dist/index.cjs CHANGED
@@ -1,17 +1,20 @@
1
- const require_factory = require('./factory-CfqPG186.cjs');
2
- const require_create_context = require('./create-context-DCEySQ7J.cjs');
1
+ const require_core = require('./core-CPLjF6nm.cjs');
2
+ const require_create_context = require('./create-context-D6DyFRSf.cjs');
3
3
  require('./utils-Cb5K29pi.cjs');
4
+ const require_environment = require('./environment-DLPiALpf.cjs');
5
+ const require_providers = require('./providers-Bk3ALTxZ.cjs');
6
+ const require_factory = require('./factory-CDX-oCN5.cjs');
4
7
  let __sprawlify_primitives_core = require("@sprawlify/primitives/core");
5
8
 
6
- exports.EnvironmentProvider = require_factory.EnvironmentProvider;
7
- exports.LocaleProvider = require_factory.LocaleProvider;
8
- exports.Portal = require_factory.Portal;
9
+ exports.EnvironmentProvider = require_environment.EnvironmentProvider;
10
+ exports.LocaleProvider = require_providers.LocaleProvider;
11
+ exports.Portal = require_core.Portal;
9
12
  exports.createContext = require_create_context.createContext;
10
13
  exports.jsxFactory = require_factory.jsxFactory;
11
- exports.normalizeProps = require_factory.normalizeProps;
14
+ exports.normalizeProps = require_core.normalizeProps;
12
15
  exports.sprawlify = require_factory.sprawlify;
13
- exports.useCollator = require_factory.useCollator;
14
- exports.useEnvironmentContext = require_factory.useEnvironmentContext;
15
- exports.useFilter = require_factory.useFilter;
16
- exports.useLocaleContext = require_factory.useLocaleContext;
17
- exports.useMachine = require_factory.useMachine;
16
+ exports.useCollator = require_providers.useCollator;
17
+ exports.useEnvironmentContext = require_environment.useEnvironmentContext;
18
+ exports.useFilter = require_providers.useFilter;
19
+ exports.useLocaleContext = require_providers.useLocaleContext;
20
+ exports.useMachine = require_core.useMachine;
package/dist/index.d.cts CHANGED
@@ -1,8 +1,10 @@
1
- import { a as sprawlify, c as PropTypes, i as jsxFactory, l as normalizeProps, n as HTMLSprawlifyProps, o as Assign, r as PolymorphicProps, s as Optional, t as HTMLProps } from "./factory-D5qarvEF.cjs";
2
- import { n as createContext } from "./index-wpUGMM30.cjs";
1
+ import { n as normalizeProps, t as PropTypes } from "./normalize-props-sqcs77GC.cjs";
2
+ import { n as Optional, t as Assign } from "./types-DYWV3uAj.cjs";
3
+ import { a as sprawlify, i as jsxFactory, n as HTMLSprawlifyProps, r as PolymorphicProps, t as HTMLProps } from "./factory-DaNWFLLN.cjs";
4
+ import { n as createContext } from "./index-zOmANnUL.cjs";
3
5
  import { JSX, PropsWithChildren, ReactNode, RefObject } from "react";
4
6
  import { Machine, MachineSchema, Service } from "@sprawlify/primitives/core";
5
- import * as react_jsx_runtime0 from "react/jsx-runtime";
7
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
6
8
  import { FilterOptions, FilterReturn, Locale } from "@sprawlify/primitives/i18n-utils";
7
9
 
8
10
  //#region src/core/machine.d.ts
@@ -29,13 +31,13 @@ interface EnvironmentProviderProps {
29
31
  children?: ReactNode | undefined;
30
32
  value?: RootNode | (() => RootNode) | undefined;
31
33
  }
32
- declare const EnvironmentProvider: (props: EnvironmentProviderProps) => react_jsx_runtime0.JSX.Element;
34
+ declare const EnvironmentProvider: (props: EnvironmentProviderProps) => react_jsx_runtime4.JSX.Element;
33
35
  //#endregion
34
36
  //#region src/providers/locale/locale-provider.d.ts
35
37
  interface LocaleProviderProps extends PropsWithChildren {
36
38
  locale: string;
37
39
  }
38
- declare const LocaleProvider: (props: LocaleProviderProps) => react_jsx_runtime0.JSX.Element;
40
+ declare const LocaleProvider: (props: LocaleProviderProps) => react_jsx_runtime4.JSX.Element;
39
41
  //#endregion
40
42
  //#region src/providers/locale/use-collator.d.ts
41
43
  interface UseCollatorProps extends Intl.CollatorOptions {
package/dist/index.d.mts CHANGED
@@ -1,7 +1,9 @@
1
- import { a as sprawlify, c as Portal, d as normalizeProps, f as useMachine, i as jsxFactory, l as PortalProps, n as HTMLSprawlifyProps, o as Assign, r as PolymorphicProps, s as Optional, t as HTMLProps, u as PropTypes } from "./factory-CNfD9NVO.mjs";
2
- import { n as createContext } from "./index--Dciu8yd.mjs";
1
+ import { a as useMachine, i as normalizeProps, n as PortalProps, r as PropTypes, t as Portal } from "./index-DtdZfcpz.mjs";
2
+ import { n as Optional, t as Assign } from "./types-FLvjyw__.mjs";
3
+ import { a as sprawlify, i as jsxFactory, n as HTMLSprawlifyProps, r as PolymorphicProps, t as HTMLProps } from "./factory-BbbIuDqa.mjs";
4
+ import { n as createContext } from "./index-BwTxN5vG.mjs";
3
5
  import { PropsWithChildren, ReactNode } from "react";
4
- import * as react_jsx_runtime0 from "react/jsx-runtime";
6
+ import * as react_jsx_runtime4 from "react/jsx-runtime";
5
7
  import { FilterOptions, FilterReturn, Locale } from "@sprawlify/primitives/i18n-utils";
6
8
 
7
9
  //#region src/providers/environment/use-environment-context.d.ts
@@ -17,13 +19,13 @@ interface EnvironmentProviderProps {
17
19
  children?: ReactNode | undefined;
18
20
  value?: RootNode | (() => RootNode) | undefined;
19
21
  }
20
- declare const EnvironmentProvider: (props: EnvironmentProviderProps) => react_jsx_runtime0.JSX.Element;
22
+ declare const EnvironmentProvider: (props: EnvironmentProviderProps) => react_jsx_runtime4.JSX.Element;
21
23
  //#endregion
22
24
  //#region src/providers/locale/locale-provider.d.ts
23
25
  interface LocaleProviderProps extends PropsWithChildren {
24
26
  locale: string;
25
27
  }
26
- declare const LocaleProvider: (props: LocaleProviderProps) => react_jsx_runtime0.JSX.Element;
28
+ declare const LocaleProvider: (props: LocaleProviderProps) => react_jsx_runtime4.JSX.Element;
27
29
  //#endregion
28
30
  //#region src/providers/locale/use-collator.d.ts
29
31
  interface UseCollatorProps extends Intl.CollatorOptions {
package/dist/index.mjs CHANGED
@@ -1,5 +1,8 @@
1
- import { a as LocaleProvider, c as useEnvironmentContext, d as normalizeProps, f as useMachine, i as useCollator, l as mergeProps, n as sprawlify, o as useLocaleContext, r as useFilter, s as EnvironmentProvider, t as jsxFactory, u as Portal } from "./factory-DbgGeb_e.mjs";
2
- import { t as createContext } from "./create-context-DLMHiig4.mjs";
3
- import "./utils-BQjTDAMH.mjs";
1
+ import { i as useMachine, n as Portal, r as normalizeProps, t as mergeProps } from "./core-C0F-4KYH.mjs";
2
+ import { t as createContext } from "./create-context-CdjrBhu7.mjs";
3
+ import "./utils-DflO0-3U.mjs";
4
+ import { n as useEnvironmentContext, t as EnvironmentProvider } from "./environment-BXkWNF2O.mjs";
5
+ import { i as useLocaleContext, n as useCollator, r as LocaleProvider, t as useFilter } from "./providers-CyTYcOU1.mjs";
6
+ import { n as sprawlify, t as jsxFactory } from "./factory-DQlmCPH2.mjs";
4
7
 
5
8
  export { EnvironmentProvider, LocaleProvider, Portal, createContext, jsxFactory, normalizeProps, sprawlify, useCollator, useEnvironmentContext, useFilter, useLocaleContext, useMachine };
@@ -0,0 +1,13 @@
1
+ import { CSSProperties, HTMLAttributes, JSX } from "react";
2
+ import * as _sprawlify_primitives_types0 from "@sprawlify/primitives/types";
3
+
4
+ //#region src/core/normalize-props.d.ts
5
+ type WithoutRef<T> = Omit<T, "ref">;
6
+ type ElementsWithoutRef = { [K in keyof JSX.IntrinsicElements]: WithoutRef<JSX.IntrinsicElements[K]> };
7
+ type PropTypes = ElementsWithoutRef & {
8
+ element: WithoutRef<HTMLAttributes<HTMLElement>>;
9
+ style: CSSProperties;
10
+ };
11
+ declare const normalizeProps: _sprawlify_primitives_types0.NormalizeProps<PropTypes>;
12
+ //#endregion
13
+ export { normalizeProps as n, PropTypes as t };
@@ -0,0 +1,71 @@
1
+ import { i as useMachine, r as normalizeProps } from "./core-C0F-4KYH.mjs";
2
+ import { t as createContext$1 } from "./create-context-CdjrBhu7.mjs";
3
+ import { n as sprawlify, r as composeRefs } from "./factory-DQlmCPH2.mjs";
4
+ import { t as createSplitProps } from "./create-split-props-BJQdOyld.mjs";
5
+ import { t as useEvent } from "./use-event-BcyNH29h.mjs";
6
+ import { forwardRef, useRef } from "react";
7
+ import { jsx } from "react/jsx-runtime";
8
+ import * as presence from "@sprawlify/primitives/machines/presence";
9
+
10
+ //#region src/components/presence/split-presence-props.ts
11
+ const splitPresenceProps = (props) => createSplitProps()(props, [
12
+ "immediate",
13
+ "lazyMount",
14
+ "onExitComplete",
15
+ "present",
16
+ "skipAnimationOnMount",
17
+ "unmountOnExit"
18
+ ]);
19
+
20
+ //#endregion
21
+ //#region src/components/presence/use-presence.ts
22
+ const usePresence = (props = {}) => {
23
+ const { lazyMount, unmountOnExit, present, skipAnimationOnMount = false, ...rest } = props;
24
+ const wasEverPresent = useRef(false);
25
+ const machineProps = {
26
+ ...rest,
27
+ present,
28
+ onExitComplete: useEvent(props.onExitComplete)
29
+ };
30
+ const service = useMachine(presence.machine, machineProps);
31
+ const api = presence.connect(service, normalizeProps);
32
+ if (api.present) wasEverPresent.current = true;
33
+ const unmounted = !api.present && !wasEverPresent.current && lazyMount || unmountOnExit && !api.present && wasEverPresent.current;
34
+ const getPresenceProps = () => ({
35
+ "data-state": api.skip && skipAnimationOnMount ? void 0 : present ? "open" : "closed",
36
+ hidden: !api.present
37
+ });
38
+ return {
39
+ ref: api.setNode,
40
+ getPresenceProps,
41
+ present: api.present,
42
+ unmounted
43
+ };
44
+ };
45
+
46
+ //#endregion
47
+ //#region src/components/presence/presence.tsx
48
+ const Presence = forwardRef((props, ref) => {
49
+ const [presenceProps, localProps] = splitPresenceProps(props);
50
+ const presence$1 = usePresence(presenceProps);
51
+ if (presence$1.unmounted) return null;
52
+ return /* @__PURE__ */ jsx(sprawlify.div, {
53
+ ...localProps,
54
+ ...presence$1.getPresenceProps(),
55
+ "data-scope": "presence",
56
+ "data-part": "root",
57
+ ref: composeRefs(presence$1.ref, ref)
58
+ });
59
+ });
60
+ Presence.displayName = "Presence";
61
+
62
+ //#endregion
63
+ //#region src/components/presence/use-presence-context.ts
64
+ const [PresenceProvider, usePresenceContext] = createContext$1({
65
+ name: "PresenceContext",
66
+ hookName: "usePresenceContext",
67
+ providerName: "<PresenceProvider />"
68
+ });
69
+
70
+ //#endregion
71
+ export { splitPresenceProps as a, usePresence as i, usePresenceContext as n, Presence as r, PresenceProvider as t };