@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
278 lines (253 loc) • 9.77 kB
JSX
import {
useFieldContext
} from "./57XA73T6.jsx";
import {
createSplitProps
} from "./6WEDGJKQ.jsx";
import {
ark
} from "./UFYZ7HLU.jsx";
import {
useLocaleContext
} from "./YUC6JE7K.jsx";
import {
useEnvironmentContext
} from "./E2L62MKC.jsx";
import {
createContext
} from "./TVCIHLER.jsx";
import {
runIfFn
} from "./KGOB2IMX.jsx";
import {
__export
} from "./7IUG3E2V.jsx";
// src/components/file-upload/file-upload-clear-trigger.tsx
import { mergeProps } from "@zag-js/solid";
// src/components/file-upload/use-file-upload-context.ts
var [FileUploadProvider, useFileUploadContext] = createContext({
hookName: "useFileUploadContext",
providerName: "<FileUploadProvider />"
});
// src/components/file-upload/file-upload-clear-trigger.tsx
var FileUploadClearTrigger = (props) => {
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps(() => fileUpload2().getClearTriggerProps(), props);
return <ark.button {...mergedProps} />;
};
// src/components/file-upload/file-upload-context.tsx
var FileUploadContext = (props) => props.children(useFileUploadContext());
// src/components/file-upload/file-upload-dropzone.tsx
import { mergeProps as mergeProps2 } from "@zag-js/solid";
var FileUploadDropzone = (props) => {
const [dropzoneProps, localProps] = createSplitProps()(props, ["disableClick"]);
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps2(() => fileUpload2().getDropzoneProps(dropzoneProps), localProps);
return <ark.div {...mergedProps} />;
};
// src/components/file-upload/file-upload-hidden-input.tsx
import { mergeProps as mergeProps3 } from "@zag-js/solid";
var FileUploadHiddenInput = (props) => {
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps3(() => fileUpload2().getHiddenInputProps(), props);
const field = useFieldContext();
return <ark.input aria-describedby={field?.().ariaDescribedby} {...mergedProps} />;
};
// src/components/file-upload/file-upload-item.tsx
import { mergeProps as mergeProps4 } from "@zag-js/solid";
// src/components/file-upload/use-file-upload-item-props-context.ts
var [FileUploadItemPropsProvider, useFileUploadItemPropsContext] = createContext({
hookName: "useFileUploadItemPropsContext",
providerName: "<FileUploadItemPropsProvider />"
});
// src/components/file-upload/file-upload-item.tsx
var FileUploadItem = (props) => {
const [itemProps, localProps] = createSplitProps()(props, ["file"]);
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps4(() => fileUpload2().getItemProps(itemProps), localProps);
return <FileUploadItemPropsProvider value={itemProps}>
<ark.li {...mergedProps} />
</FileUploadItemPropsProvider>;
};
// src/components/file-upload/file-upload-item-delete-trigger.tsx
import { mergeProps as mergeProps5 } from "@zag-js/solid";
var FileUploadItemDeleteTrigger = (props) => {
const fileUpload2 = useFileUploadContext();
const itemProps = useFileUploadItemPropsContext();
const mergedProps = mergeProps5(() => fileUpload2().getItemDeleteTriggerProps(itemProps), props);
return <ark.button {...mergedProps} />;
};
// src/components/file-upload/file-upload-item-group.tsx
import { mergeProps as mergeProps6 } from "@zag-js/solid";
var FileUploadItemGroup = (props) => {
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps6(() => fileUpload2().getItemGroupProps(), props);
return <ark.ul {...mergedProps} />;
};
// src/components/file-upload/file-upload-item-name.tsx
import { mergeProps as mergeProps7 } from "@zag-js/solid";
var FileUploadItemName = (props) => {
const fileUpload2 = useFileUploadContext();
const itemProps = useFileUploadItemPropsContext();
const mergedProps = mergeProps7(() => fileUpload2().getItemNameProps(itemProps), props);
return <ark.div {...mergedProps}>{props.children || itemProps.file.name}</ark.div>;
};
// src/components/file-upload/file-upload-item-preview.tsx
import { mergeProps as mergeProps8 } from "@zag-js/solid";
var FileUploadItemPreview = (props) => {
const fileUpload2 = useFileUploadContext();
const itemProps = useFileUploadItemPropsContext();
const mergedProps = mergeProps8(() => fileUpload2().getItemPreviewProps(itemProps), props);
if (!itemProps.file.type.match(props.type ?? ".*")) return null;
return <ark.div {...mergedProps} />;
};
// src/components/file-upload/file-upload-item-preview-image.tsx
import { mergeProps as mergeProps9 } from "@zag-js/solid";
import { Show, createEffect, createSignal, onCleanup } from "solid-js";
var FileUploadItemPreviewImage = (props) => {
const fileUpload2 = useFileUploadContext();
const itemProps = useFileUploadItemPropsContext();
const [url, setUrl] = createSignal("");
createEffect(() => {
const cleanup = fileUpload2().createFileUrl(itemProps.file, (url2) => setUrl(url2));
onCleanup(cleanup);
});
const mergedProps = mergeProps9(() => fileUpload2().getItemPreviewImageProps({ ...itemProps, url: url() }), props);
return <Show when={url()}>
<ark.img {...mergedProps} />
</Show>;
};
// src/components/file-upload/file-upload-item-size-text.tsx
import { mergeProps as mergeProps10 } from "@zag-js/solid";
var FileUploadItemSizeText = (props) => {
const fileUpload2 = useFileUploadContext();
const itemProps = useFileUploadItemPropsContext();
const mergedProps = mergeProps10(() => fileUpload2().getItemSizeTextProps(itemProps), props);
return <ark.div {...mergedProps}>{props.children || fileUpload2().getFileSize(itemProps.file)}</ark.div>;
};
// src/components/file-upload/file-upload-label.tsx
import { mergeProps as mergeProps11 } from "@zag-js/solid";
var FileUploadLabel = (props) => {
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps11(() => fileUpload2().getLabelProps(), props);
return <ark.label {...mergedProps} />;
};
// src/components/file-upload/file-upload-root.tsx
import { mergeProps as mergeProps12 } from "@zag-js/solid";
// src/components/file-upload/use-file-upload.ts
import * as fileUpload from "@zag-js/file-upload";
import { normalizeProps, useMachine } from "@zag-js/solid";
import { createMemo, createUniqueId } from "solid-js";
var useFileUpload = (props) => {
const id = createUniqueId();
const locale = useLocaleContext();
const environment = useEnvironmentContext();
const field = useFieldContext();
const machineProps = createMemo(() => ({
id,
ids: {
label: field?.().ids.label,
hiddenInput: field?.().ids.control
},
dir: locale().dir,
disabled: field?.().disabled,
locale: locale().locale,
required: field?.().required,
invalid: field?.().invalid,
getRootNode: environment().getRootNode,
...runIfFn(props)
}));
const service = useMachine(fileUpload.machine, machineProps);
return createMemo(() => fileUpload.connect(service, normalizeProps));
};
// src/components/file-upload/file-upload-root.tsx
var FileUploadRoot = (props) => {
const [fileUploadProps, localProps] = createSplitProps()(props, [
"accept",
"acceptedFiles",
"allowDrop",
"capture",
"defaultAcceptedFiles",
"directory",
"disabled",
"id",
"ids",
"invalid",
"locale",
"maxFiles",
"maxFileSize",
"minFileSize",
"name",
"onFileAccept",
"onFileChange",
"onFileReject",
"preventDocumentDrop",
"required",
"translations",
"transformFiles",
"validate"
]);
const fileUpload2 = useFileUpload(fileUploadProps);
const mergedProps = mergeProps12(() => fileUpload2().getRootProps(), localProps);
return <FileUploadProvider value={fileUpload2}>
<ark.div {...mergedProps} />
</FileUploadProvider>;
};
// src/components/file-upload/file-upload-root-provider.tsx
import { mergeProps as mergeProps13 } from "@zag-js/solid";
var FileUploadRootProvider = (props) => {
const [{ value: fileUpload2 }, localProps] = createSplitProps()(props, ["value"]);
const mergedProps = mergeProps13(() => fileUpload2().getRootProps(), localProps);
return <FileUploadProvider value={fileUpload2}>
<ark.div {...mergedProps} />
</FileUploadProvider>;
};
// src/components/file-upload/file-upload-trigger.tsx
import { mergeProps as mergeProps14 } from "@zag-js/solid";
var FileUploadTrigger = (props) => {
const fileUpload2 = useFileUploadContext();
const mergedProps = mergeProps14(() => fileUpload2().getTriggerProps(), props);
return <ark.button {...mergedProps} />;
};
// src/components/file-upload/file-upload.anatomy.ts
import { anatomy } from "@zag-js/file-upload";
// src/components/file-upload/file-upload.ts
var file_upload_exports = {};
__export(file_upload_exports, {
ClearTrigger: () => FileUploadClearTrigger,
Context: () => FileUploadContext,
Dropzone: () => FileUploadDropzone,
HiddenInput: () => FileUploadHiddenInput,
Item: () => FileUploadItem,
ItemDeleteTrigger: () => FileUploadItemDeleteTrigger,
ItemGroup: () => FileUploadItemGroup,
ItemName: () => FileUploadItemName,
ItemPreview: () => FileUploadItemPreview,
ItemPreviewImage: () => FileUploadItemPreviewImage,
ItemSizeText: () => FileUploadItemSizeText,
Label: () => FileUploadLabel,
Root: () => FileUploadRoot,
RootProvider: () => FileUploadRootProvider,
Trigger: () => FileUploadTrigger
});
export {
useFileUploadContext,
FileUploadClearTrigger,
FileUploadContext,
FileUploadDropzone,
FileUploadHiddenInput,
FileUploadItem,
FileUploadItemDeleteTrigger,
FileUploadItemGroup,
FileUploadItemName,
FileUploadItemPreview,
FileUploadItemPreviewImage,
FileUploadItemSizeText,
FileUploadLabel,
useFileUpload,
FileUploadRoot,
FileUploadRootProvider,
FileUploadTrigger,
anatomy,
file_upload_exports
};