UNPKG

@ark-ui/solid

Version:

A collection of unstyled, accessible UI components for Solid, utilizing state machines for seamless interaction.

118 lines (111 loc) 4.26 kB
import { ark } from './EPLBB4QN.js'; import { useEnvironmentContext } from './5QLLQM7E.js'; import { useLocaleContext } from './RVOPDSQY.js'; import { createContext } from './THN5C4U6.js'; import { __export } from './ESLJRKWD.js'; import * as toast2 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 };