@ark-ui/solid
Version:
A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.
119 lines (112 loc) • 4.3 kB
JavaScript
import { ark } from './EPLBB4QN.js';
import { useEnvironmentContext } from './YO2MCGXO.js';
import { useLocaleContext } from './OKZ64GSY.js';
import { createContext } from './TROPIN4C.js';
import { __export } from './ESLJRKWD.js';
import * as toast2 from '@zag-js/toast';
export { anatomy } from '@zag-js/toast';
import { createComponent, template, spread, mergeProps as mergeProps$1, insert } from 'solid-js/web';
import { mergeProps, useMachine, normalizeProps, Key } from '@zag-js/solid';
import { splitProps, createUniqueId, createMemo } from 'solid-js';
var createToaster = (props) => {
return toast2.createStore(props);
};
// src/components/toast/use-toast-context.ts
var [ToastProvider, useToastContext] = createContext({
hookName: "useToastContext",
providerName: "<ToastProvider />"
});
// src/components/toast/toast-action-trigger.tsx
var ToastActionTrigger = (props) => {
const toast3 = useToastContext();
const mergedProps = mergeProps(() => toast3().getActionTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
var ToastCloseTrigger = (props) => {
const toast3 = useToastContext();
const mergedProps = mergeProps(() => toast3().getCloseTriggerProps(), props);
return createComponent(ark.button, mergedProps);
};
// src/components/toast/toast-context.tsx
var ToastContext = (props) => props.children(useToastContext());
var ToastDescription = (props) => {
const toast3 = useToastContext();
const mergedProps = mergeProps(() => toast3().getDescriptionProps(), props);
return createComponent(ark.div, mergedProps);
};
var _tmpl$ = /* @__PURE__ */ template(`<div><div></div><div>`);
var ToastRoot = (props) => {
const toast3 = useToastContext();
const mergedProps = mergeProps(() => toast3().getRootProps(), props);
return (() => {
var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.nextSibling;
spread(_el$, mergedProps, false, true);
spread(_el$2, mergeProps$1(() => toast3().getGhostBeforeProps()), false, false);
insert(_el$, () => props.children, _el$3);
spread(_el$3, mergeProps$1(() => toast3().getGhostAfterProps()), false, false);
return _el$;
})();
};
var ToastTitle = (props) => {
const toast3 = useToastContext();
const mergedProps = mergeProps(() => toast3().getTitleProps(), props);
return createComponent(ark.div, mergedProps);
};
var Toaster = (props) => {
const [toasterProps, localProps] = splitProps(props, ["toaster", "children"]);
const locale = useLocaleContext();
const env = useEnvironmentContext();
const service = useMachine(toast2.group.machine, () => ({
store: toasterProps.toaster,
id: createUniqueId(),
dir: locale()?.dir,
getRootNode: env()?.getRootNode
}));
const api = createMemo(() => toast2.group.connect(service, normalizeProps));
const toasts = createMemo(() => api().getToasts());
const mergedProps = mergeProps(() => api().getGroupProps(), localProps);
return createComponent(ark.div, mergeProps$1(mergedProps, {
get children() {
return createComponent(Key, {
get each() {
return toasts();
},
by: "id",
children: (toast3, index) => createComponent(ToastActor, {
value: toast3,
index,
parent: service,
children: (ctx) => toasterProps.children(ctx)
})
});
}
}));
};
var ToastActor = (props) => {
const env = useEnvironmentContext();
const localProps = createMemo(() => ({
...props.value(),
parent: props.parent,
index: props.index(),
getRootNode: env().getRootNode
}));
const service = useMachine(toast2.machine, localProps);
const api = createMemo(() => toast2.connect(service, normalizeProps));
return createComponent(ToastProvider, {
value: api,
get children() {
return props.children(props.value);
}
});
};
// src/components/toast/toast.ts
var toast_exports = {};
__export(toast_exports, {
ActionTrigger: () => ToastActionTrigger,
CloseTrigger: () => ToastCloseTrigger,
Context: () => ToastContext,
Description: () => ToastDescription,
Root: () => ToastRoot,
Title: () => ToastTitle
});
export { ToastActionTrigger, ToastCloseTrigger, ToastContext, ToastDescription, ToastRoot, ToastTitle, Toaster, createToaster, toast_exports, useToastContext };