{"version":3,"sources":["jsdelivr-header.js","/npm/solid-toast@0.5.0/src/types/toast.ts","/npm/solid-toast@0.5.0/src/types/store.ts","/npm/solid-toast@0.5.0/src/core/store.ts","/npm/solid-toast@0.5.0/src/core/defaults.ts","/npm/solid-toast@0.5.0/src/util/util.ts","/npm/solid-toast@0.5.0/src/util/styles.ts","/npm/solid-toast@0.5.0/src/core/toast.ts","/npm/solid-toast@0.5.0/src/components/Toaster.tsx","/npm/solid-toast@0.5.0/src/components/ToastBar.tsx","/npm/solid-toast@0.5.0/src/components/ToastContainer.tsx","/npm/solid-toast@0.5.0/src/components/IconCircle.tsx","/npm/solid-toast@0.5.0/src/components/SuccessIcon.tsx","/npm/solid-toast@0.5.0/src/components/ErrorIcon.tsx","/npm/solid-toast@0.5.0/src/components/LoaderIcon.tsx","/npm/solid-toast@0.5.0/src/index.tsx"],"names":[],"mappings":"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","file":"/npm/solid-toast@0.5.0/dist/cjs/index.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.37.0.\n * Original file: /npm/solid-toast@0.5.0/dist/cjs/index.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","import { JSX } from 'solid-js';\n\nexport type ToastType = 'success' | 'error' | 'loading' | 'blank' | 'custom';\nexport type ToastPosition = 'top-left' | 'top-center' | 'top-right' | 'bottom-left' | 'bottom-center' | 'bottom-right';\n\nexport type Renderable = JSX.Element | string | null;\n\nexport type ValueFunction<TValue, TArg> = (arg: TArg) => TValue;\nexport type ValueOrFunction<TValue, TArg> = TValue | ValueFunction<TValue, TArg>;\n\nconst isFunction = <TValue, TArg>(\n  valOrFunction: ValueOrFunction<TValue, TArg>\n): valOrFunction is ValueFunction<TValue, TArg> => typeof valOrFunction === 'function';\n\nexport const resolveValue = <TValue, TArg>(valOrFunction: ValueOrFunction<TValue, TArg>, arg: TArg): TValue =>\n  isFunction(valOrFunction) ? valOrFunction(arg) : valOrFunction;\n\nexport interface IconTheme {\n  primary?: string;\n  secondary?: string;\n}\n\nexport interface Toast {\n  type: ToastType;\n  id: string;\n  message: ValueOrFunction<Renderable, Toast>;\n  icon?: Renderable;\n  duration?: number;\n  pauseDuration: number;\n  paused: boolean;\n  position?: ToastPosition;\n\n  ariaProps: {\n    role: 'status' | 'alert';\n    'aria-live': 'assertive' | 'off' | 'polite';\n  };\n\n  style?: JSX.CSSProperties;\n  className?: string;\n\n  iconTheme?: IconTheme;\n\n  createdAt: number;\n  updatedAt?: number;\n  visible: boolean;\n  height?: number;\n  unmountDelay: number;\n}\n\nexport type ToastOptions = Partial<\n  Pick<\n    Toast,\n    'id' | 'icon' | 'duration' | 'ariaProps' | 'className' | 'style' | 'position' | 'unmountDelay' | 'iconTheme'\n  >\n>;\n\nexport type ToastTimeouts = {\n  [key in ToastType]: number;\n};\n\nexport type DefaultToastOptions = ToastOptions;\n\nexport type Message = ValueOrFunction<Renderable, Toast>;\n\nexport type ToastHandler = (message: Message, options?: ToastOptions) => string;\n\nexport interface ToasterProps {\n  position?: ToastPosition;\n  toastOptions?: DefaultToastOptions;\n  gutter?: number;\n  containerStyle?: JSX.CSSProperties;\n  containerClassName?: string;\n}\n\nexport interface ToastContainerProps {\n  toast: Toast;\n}\n\nexport interface ToastBarProps {\n  toast: Toast;\n  position: ToastPosition;\n}\n\nexport type IconProps = Partial<IconTheme>;\n","import { Toast } from './';\n\nexport enum ActionType {\n  ADD_TOAST,\n  UPDATE_TOAST,\n  UPSERT_TOAST,\n  DISMISS_TOAST,\n  REMOVE_TOAST,\n  START_PAUSE,\n  END_PAUSE,\n}\n\nexport type Action =\n  | {\n      type: ActionType.ADD_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPSERT_TOAST;\n      toast: Toast;\n    }\n  | {\n      type: ActionType.UPDATE_TOAST;\n      toast: Partial<Toast>;\n    }\n  | {\n      type: ActionType.DISMISS_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.REMOVE_TOAST;\n      toastId?: string;\n    }\n  | {\n      type: ActionType.START_PAUSE;\n      time: number;\n    }\n  | {\n      type: ActionType.END_PAUSE;\n      time: number;\n    };\n\nexport interface State {\n  toasts: Toast[];\n  pausedAt: number | undefined;\n}\n","import { State, Action, ActionType, Toast } from '../types';\nimport { createStore, produce as p } from 'solid-js/store';\n\nconst [store, setStore] = createStore<State>({\n  toasts: [],\n  pausedAt: undefined,\n});\n\nexport const createTimers = () => {\n  const { pausedAt, toasts } = store;\n  if (pausedAt) return;\n  const now = Date.now();\n  const timers = toasts.map((toast) => {\n    if (toast.duration === Infinity) return;\n\n    const durationLeft = (toast.duration || 0) + toast.pauseDuration - (now - toast.createdAt);\n\n    if (durationLeft <= 0) {\n      if (toast.visible) {\n        dispatch({\n          type: ActionType.DISMISS_TOAST,\n          toastId: toast.id,\n        });\n      }\n      return;\n    }\n\n    return setTimeout(() => {\n      dispatch({\n        type: ActionType.DISMISS_TOAST,\n        toastId: toast.id,\n      });\n    }, durationLeft);\n  });\n\n  return timers;\n};\n\nconst removalQueue = new Map<Toast['id'], ReturnType<typeof setTimeout>>();\n\nconst scheduleRemoval = (toastId: string, unmountDelay: number) => {\n  if (removalQueue.has(toastId)) return;\n\n  const timeout = setTimeout(() => {\n    removalQueue.delete(toastId);\n    dispatch({\n      type: ActionType.REMOVE_TOAST,\n      toastId,\n    });\n  }, unmountDelay);\n\n  removalQueue.set(toastId, timeout);\n};\n\nconst unscheduleRemoval = (toastId: string) => {\n  const timeout = removalQueue.get(toastId);\n  removalQueue.delete(toastId);\n  if (timeout) clearTimeout(timeout);\n};\n\nexport const dispatch = (action: Action) => {\n  switch (action.type) {\n    case ActionType.ADD_TOAST:\n      setStore('toasts', (t) => {\n        const toasts = t as Toast[];\n        return [action.toast, ...toasts];\n      });\n      break;\n    case ActionType.DISMISS_TOAST:\n      const { toastId } = action;\n      const toasts = store.toasts;\n\n      if (toastId) {\n        const toastToRemove = toasts.find((t) => t.id === toastId);\n        if (toastToRemove) scheduleRemoval(toastId, toastToRemove.unmountDelay);\n        setStore(\n          'toasts',\n          (t) => t.id === toastId,\n          p((t) => (t.visible = false))\n        );\n      } else {\n        toasts.forEach((t) => {\n          scheduleRemoval(t.id, t.unmountDelay);\n        });\n        setStore(\n          'toasts',\n          (t) => t.id !== undefined,\n          p((t) => (t.visible = false))\n        );\n      }\n\n      break;\n    case ActionType.REMOVE_TOAST:\n      if (!action.toastId) {\n        setStore('toasts', []);\n        break;\n      }\n      setStore('toasts', (t) => {\n        const toasts = t as Toast[];\n        return toasts.filter((t) => t.id !== action.toastId);\n      });\n      break;\n    case ActionType.UPDATE_TOAST:\n      if (action.toast.id) {\n        unscheduleRemoval(action.toast.id);\n      }\n\n      setStore(\n        'toasts',\n        (t) => t.id === action.toast.id,\n        (t) => {\n          const toast = t as Toast;\n          return {\n            ...toast,\n            ...action.toast,\n          };\n        }\n      );\n      break;\n    case ActionType.UPSERT_TOAST:\n      store.toasts.find((t) => t.id === action.toast.id)\n        ? dispatch({ type: ActionType.UPDATE_TOAST, toast: action.toast })\n        : dispatch({ type: ActionType.ADD_TOAST, toast: action.toast });\n      break;\n    case ActionType.START_PAUSE:\n      setStore(p((s) => {\n        s.pausedAt = Date.now();\n        s.toasts.forEach((t) => {\n          t.paused = true;\n        });\n      }));\n      break;\n    case ActionType.END_PAUSE:\n      const pauseInterval = action.time - (store.pausedAt || 0);\n      setStore(\n        p((s) => {\n          s.pausedAt = undefined;\n          s.toasts.forEach((t) => {\n            t.pauseDuration += pauseInterval;\n            t.paused = false;\n          });\n        })\n      );\n      break;\n  }\n};\n\nexport { store };\n","import { ToasterProps, ToastOptions, ToastTimeouts } from '../types';\nimport { JSX } from 'solid-js';\n\nexport const defaultTimeouts: ToastTimeouts = {\n  blank: 4000,\n  error: 4000,\n  success: 2000,\n  loading: Infinity,\n  custom: 4000,\n};\n\nexport const defaultToastOptions: Required<ToastOptions> = {\n  id: '',\n  icon: '',\n  unmountDelay: 500,\n  duration: 3000,\n  ariaProps: {\n    role: 'status',\n    'aria-live': 'polite',\n  },\n  className: '',\n  style: {},\n  position: 'top-right',\n  iconTheme: {},\n};\n\nexport const defaultToasterOptions: ToasterProps = {\n  position: 'top-right',\n  toastOptions: defaultToastOptions,\n  gutter: 8,\n  containerStyle: {},\n  containerClassName: '',\n};\n\nconst defaultContainerPadding = '16px';\n\nexport const defaultContainerStyle: JSX.CSSProperties = {\n  position: 'fixed',\n  'z-index': 9999,\n  top: defaultContainerPadding,\n  bottom: defaultContainerPadding,\n  left: defaultContainerPadding,\n  right: defaultContainerPadding,\n  'pointer-events': 'none',\n};\n","import { setDefaultOpts, defaultOpts, store, dispatch, defaultToasterOptions } from '../core';\nimport { ActionType, Toast, ToasterProps, ToastPosition } from '../types';\nimport { JSX } from 'solid-js';\n\nexport const generateID = (() => {\n  let count = 0;\n  return () => String(++count);\n})();\n\nexport const mergeContainerOptions = (props: ToasterProps) => {\n  setDefaultOpts((s) => ({\n    containerClassName: props.containerClassName ?? s.containerClassName,\n    containerStyle: props.containerStyle ?? s.containerStyle,\n    gutter: props.gutter ?? s.gutter,\n    position: props.position ?? s.position,\n    toastOptions: {\n      ...props.toastOptions,\n    },\n  }));\n};\n\nexport const getToastWrapperStyles = (position: ToastPosition, offset: number): JSX.CSSProperties => {\n  const top = position.includes('top');\n  const verticalStyle: JSX.CSSProperties = top\n    ? { top: 0, 'margin-top': `${offset}px` }\n    : { bottom: 0, 'margin-bottom': `${offset}px` };\n  const horizontalStyle: JSX.CSSProperties = position.includes('center')\n    ? { 'justify-content': 'center' }\n    : position.includes('right')\n    ? { 'justify-content': 'flex-end' }\n    : {};\n  return {\n    left: 0,\n    right: 0,\n    display: 'flex',\n    position: 'absolute',\n    transition: `all 230ms cubic-bezier(.21,1.02,.73,1)`,\n    ...verticalStyle,\n    ...horizontalStyle,\n  };\n};\n\nexport const updateToastHeight = (ref: HTMLDivElement, toast: Toast) => {\n  const boundingRect = ref.getBoundingClientRect();\n  if (boundingRect.height !== toast.height) {\n    dispatch({\n      type: ActionType.UPDATE_TOAST,\n      toast: { id: toast.id, height: boundingRect.height },\n    });\n  }\n};\n\nexport const getWrapperYAxisOffset = (toast: Toast, position: ToastPosition): number => {\n  const { toasts } = store;\n  const gutter = defaultOpts().gutter || defaultToasterOptions.gutter || 8;\n  const relevantToasts = toasts.filter((t) => (t.position || position) === position && t.height);\n  const toastIndex = relevantToasts.findIndex((t) => t.id === toast.id);\n  const toastsBefore = relevantToasts.filter((toast, i) => i < toastIndex && toast.visible).length;\n  const offset = relevantToasts.slice(0, toastsBefore).reduce((acc, t) => acc + gutter + (t.height || 0), 0);\n  return offset;\n};\n\nexport const getToastYDirection = (toast: Toast, defaultPos: ToastPosition) => {\n  const position = toast.position || defaultPos;\n  const top = position.includes('top');\n  return top ? 1 : -1;\n};\n","import type { JSX } from 'solid-js';\n\nexport const toastBarBase: JSX.CSSProperties = {\n  display: 'flex',\n  'align-items': 'center',\n  color: '#363636',\n  background: 'white',\n  'box-shadow': '0 3px 10px rgba(0, 0, 0, 0.1), 0 3px 3px rgba(0, 0, 0, 0.05)',\n  'max-width': '350px',\n  'pointer-events': 'auto',\n  padding: '8px 10px',\n  'border-radius': '4px',\n  'line-height': '1.3',\n  'will-change': 'transform',\n};\n\nexport const messageContainer: JSX.CSSProperties = {\n  display: 'flex',\n  'align-items': 'center',\n  flex: '1 1 auto',\n  margin: '4px 10px',\n  'white-space': 'pre-line',\n};\n\nexport const iconContainer: JSX.CSSProperties = {\n  'flex-shrink': 0,\n  'min-width': '20px',\n  'min-height': '20px',\n  display: 'flex',\n  'align-items': 'center',\n  'justify-content': 'center',\n  'text-align': 'center',\n};\n\nexport const genSVGCubicBezier: (\n  keySplines: string\n) => Pick<JSX.AnimateSVGAttributes<SVGAnimateElement>, 'calcMode' | 'keyTimes' | 'keySplines'> = (keySplines) => ({\n  calcMode: 'spline',\n  keyTimes: '0; 1',\n  keySplines: keySplines,\n});\n","import { createRoot, createSignal, untrack } from 'solid-js';\nimport { ToasterProps, Message, ToastType, ToastOptions, Toast, ToastHandler, ActionType } from '../types';\nimport { defaultToasterOptions, defaultToastOptions, defaultTimeouts } from './defaults';\nimport { generateID } from '../util';\nimport { dispatch, store } from './store';\n\nimport { resolveValue, Renderable, ValueOrFunction, DefaultToastOptions } from '../types';\n\nexport const [defaultOpts, setDefaultOpts] = createSignal<ToasterProps>(defaultToasterOptions);\n\nexport const createToast = (message: Message, type: ToastType = 'blank', options: ToastOptions): Toast => ({\n  ...defaultToastOptions,\n  ...defaultOpts().toastOptions,\n  ...options,\n  type,\n  message,\n  pauseDuration: 0,\n  createdAt: Date.now(),\n  visible: true,\n  id: options.id || generateID(),\n  paused: false,\n  style: {\n    ...defaultToastOptions.style,\n    ...defaultOpts().toastOptions?.style,\n    ...options.style,\n  },\n  duration: options.duration || defaultOpts().toastOptions?.duration || defaultTimeouts[type],\n  position:\n    options.position || defaultOpts().toastOptions?.position || defaultOpts().position || defaultToastOptions.position,\n});\n\nconst createToastCreator =\n  (type?: ToastType): ToastHandler =>\n  (message: Message, options: ToastOptions = {}) => {\n    return createRoot(() => {\n      const existingToast = store.toasts.find((t) => t.id === options.id) as Toast;\n      const toast = createToast(message, type, { ...existingToast, duration: undefined, ...options });\n      dispatch({ type: ActionType.UPSERT_TOAST, toast });\n      return toast.id;\n    });\n  };\n\nconst toast = (message: Message, opts?: ToastOptions) => createToastCreator('blank')(message, opts);\nconst test = untrack(() => toast);\n\ntoast.error = createToastCreator('error');\ntoast.success = createToastCreator('success');\ntoast.loading = createToastCreator('loading');\ntoast.custom = createToastCreator('custom');\n\ntoast.dismiss = (toastId?: string) => {\n  dispatch({\n    type: ActionType.DISMISS_TOAST,\n    toastId,\n  });\n};\n\ntoast.promise = <T>(\n  promise: Promise<T>,\n  msgs: {\n    loading: Renderable;\n    success: ValueOrFunction<Renderable, T>;\n    error: ValueOrFunction<Renderable, any>;\n  },\n  opts?: DefaultToastOptions\n) => {\n  const id = toast.loading(msgs.loading, { ...opts });\n\n  promise\n    .then((p) => {\n      toast.success(resolveValue(msgs.success, p), {\n        id,\n        ...opts,\n      });\n      return p;\n    })\n    .catch((e) => {\n      toast.error(resolveValue(msgs.error, e), {\n        id,\n        ...opts,\n      });\n    });\n\n  return promise;\n};\n\ntoast.remove = (toastId?: string) => {\n  dispatch({\n    type: ActionType.REMOVE_TOAST,\n    toastId,\n  });\n};\n\nexport { toast };\n","import { defaultContainerStyle } from '../core';\nimport { ToasterProps } from '..';\nimport { mergeContainerOptions } from '../util';\nimport { createEffect, For, onCleanup, Component } from 'solid-js';\nimport { store, createTimers } from '../core';\nimport { ToastContainer } from './';\nimport { Toast } from '../types';\n\nexport const Toaster: Component<ToasterProps> = (props) => {\n  createEffect(() => {\n    mergeContainerOptions(props);\n  });\n\n  createEffect(() => {\n    const timers = createTimers();\n    onCleanup(() => {\n      if (!timers) return;\n      timers.forEach((timer) => timer && clearTimeout(timer));\n    });\n  });\n\n  return (\n    <div\n      style={{\n        ...defaultContainerStyle,\n        ...props.containerStyle,\n      }}\n      class={props.containerClassName}\n    >\n      <style>{`.sldt-active{z-index:9999;}.sldt-active>*{pointer-events:auto;}`}</style>\n      <For each={store.toasts}>{(toast) => <ToastContainer toast={toast as Toast} />}</For>\n    </div>\n  );\n};\n","import { createEffect, Match, Switch, Component } from 'solid-js';\nimport { resolveValue, ToastBarProps } from '../types';\nimport { getToastYDirection as d, iconContainer, messageContainer, toastBarBase } from '../util';\nimport { Error, Loader, Success } from './';\n\nexport const ToastBar: Component<ToastBarProps> = (props) => {\n  let el: HTMLDivElement | undefined;\n\n  createEffect(() => {\n    if (!el) return;\n    const direction = d(props.toast, props.position);\n    if (props.toast.visible) {\n      el.animate(\n        [\n          { transform: `translate3d(0,${direction * -200}%,0) scale(.6)`, opacity: 0.5 },\n          { transform: 'translate3d(0,0,0) scale(1)', opacity: 1 },\n        ],\n        {\n          duration: 350,\n          fill: 'forwards',\n          easing: 'cubic-bezier(.21,1.02,.73,1)'\n        }\n      );\n    } else {\n      el.animate(\n        [\n          { transform: 'translate3d(0,0,-1px) scale(1)', opacity: 1 },\n          { transform: `translate3d(0,${direction * -150}%,-1px) scale(.4)`, opacity: 0 },\n        ],\n        {\n          duration: 400,\n          fill: 'forwards',\n          easing: 'cubic-bezier(.06,.71,.55,1)'\n        }\n      );\n    }\n  });\n\n  return (\n    <div\n      ref={el}\n      class={props.toast.className}\n      style={{\n        ...toastBarBase,\n        ...props.toast.style,\n      }}\n    >\n      <Switch>\n        <Match when={props.toast.icon}>\n          <div style={iconContainer}>{props.toast.icon}</div>\n        </Match>\n        <Match when={props.toast.type === 'loading'}>\n          <div style={iconContainer}>\n            <Loader {...props.toast.iconTheme} />\n          </div>\n        </Match>\n        <Match when={props.toast.type === 'success'}>\n          <div style={iconContainer}>\n            <Success {...props.toast.iconTheme} />\n          </div>\n        </Match>\n        <Match when={props.toast.type === 'error'}>\n          <div style={iconContainer}>\n            <Error {...props.toast.iconTheme} />\n          </div>\n        </Match>\n      </Switch>\n\n      <div style={messageContainer} {...props.toast.ariaProps}>\n        {resolveValue(props.toast.message, props.toast)}\n      </div>\n    </div>\n  );\n};\n","import { createMemo, onMount, Component } from 'solid-js';\nimport { ToastContainerProps } from '../';\nimport { defaultToastOptions, dispatch } from '../core';\nimport { ActionType, resolveValue } from '../types';\nimport { getToastWrapperStyles, getWrapperYAxisOffset, updateToastHeight } from '../util';\nimport { ToastBar } from './ToastBar';\n\nexport const ToastContainer: Component<ToastContainerProps> = (props) => {\n  const calculatePosition = () => {\n    const position = props.toast.position || defaultToastOptions.position;\n    const offset = getWrapperYAxisOffset(props.toast, position);\n    const positionStyle = getToastWrapperStyles(position, offset);\n\n    return positionStyle;\n  };\n\n  const positionStyle = createMemo(() => calculatePosition());\n\n  let el: HTMLDivElement | undefined = undefined;\n  onMount(() => {\n    if (el) {\n      updateToastHeight(el, props.toast);\n    }\n  });\n\n  return (\n    <div\n      ref={el}\n      style={positionStyle()}\n      class={props.toast.visible ? 'sldt-active' : ''}\n      onMouseEnter={() =>\n        dispatch({\n          type: ActionType.START_PAUSE,\n          time: Date.now(),\n        })\n      }\n      onMouseLeave={() =>\n        dispatch({\n          type: ActionType.END_PAUSE,\n          time: Date.now(),\n        })\n      }\n    >\n      {props.toast.type === 'custom' ? (\n        resolveValue(props.toast.message, props.toast)\n      ) : (\n        <ToastBar toast={props.toast} position={props.toast.position || defaultToastOptions.position} />\n      )}\n    </div>\n  );\n};\n","import { Component } from 'solid-js';\nimport type { JSX } from 'solid-js';\nimport { genSVGCubicBezier } from '../util';\n\nexport const MainCircle: Component<{ fill: string }> = (props) => {\n  const publicProps: JSX.AnimateSVGAttributes<SVGAnimateElement> = {\n    dur: '0.35s',\n    begin: '100ms',\n    fill: 'freeze',\n    calcMode: 'spline',\n    keyTimes: '0; 0.6; 1',\n    keySplines: '0.25 0.71 0.4 0.88; .59 .22 .87 .63',\n  };\n  return (\n    <circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"0\">\n      <animate attributeName=\"opacity\" values=\"0; 1; 1\" {...publicProps} />\n      <animate attributeName=\"r\" values=\"0; 17.5; 16\" {...publicProps} />\n    </circle>\n  );\n};\n\nexport const SecondaryCircle: Component<{ fill: string; begin?: string }> = (props) => {\n  const publicProps: JSX.AnimateSVGAttributes<SVGAnimateElement> = {\n    dur: '1s',\n    begin: props.begin || '320ms',\n    fill: 'freeze',\n    ...genSVGCubicBezier('0.0 0.0 0.2 1'),\n  };\n  return (\n    <circle fill={props.fill} cx=\"16\" cy=\"16\" r=\"12\" opacity=\"0\">\n      <animate attributeName=\"opacity\" values=\"1; 0\" {...publicProps} />\n      <animate attributeName=\"r\" values=\"12; 26\" {...publicProps} />\n    </circle>\n  );\n};\n","import type { Component } from 'solid-js';\nimport { IconProps } from '../types';\nimport { genSVGCubicBezier } from '../util';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\n\nexport const Success: Component<IconProps> = (props: IconProps) => {\n  const fill = props.primary || '#34C759';\n  return (\n    <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n      <MainCircle fill={fill} />\n      <SecondaryCircle fill={fill} begin=\"350ms\" />\n      <path\n        fill=\"none\"\n        stroke={props.secondary || '#FCFCFC'}\n        stroke-width=\"4\"\n        stroke-dasharray=\"22\"\n        stroke-dashoffset=\"22\"\n        stroke-linecap=\"round\"\n        stroke-miterlimit=\"10\"\n        d=\"M9.8,17.2l3.8,3.6c0.1,0.1,0.3,0.1,0.4,0l9.6-9.7\"\n      >\n        <animate\n          attributeName=\"stroke-dashoffset\"\n          values=\"22;0\"\n          dur=\"0.25s\"\n          begin=\"250ms\"\n          fill=\"freeze\"\n          {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n        />\n      </path>\n    </svg>\n  );\n};\n","import { IconProps } from '../types';\nimport { genSVGCubicBezier } from '../util';\nimport { MainCircle, SecondaryCircle } from './IconCircle';\nimport type { Component } from 'solid-js';\n\nexport const Error: Component<IconProps> = (props) => {\n  const fill = props.primary || '#FF3B30';\n  return (\n    <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n      <MainCircle fill={fill} />\n      <SecondaryCircle fill={fill} />\n      <path\n        fill=\"none\"\n        stroke={props.secondary || '#FFFFFF'}\n        stroke-width=\"4\"\n        stroke-dasharray=\"9\"\n        stroke-dashoffset=\"9\"\n        stroke-linecap=\"round\"\n        d=\"M16,7l0,9\"\n      >\n        <animate\n          attributeName=\"stroke-dashoffset\"\n          values=\"9;0\"\n          dur=\"0.2s\"\n          begin=\"250ms\"\n          fill=\"freeze\"\n          {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n        />\n      </path>\n      <circle fill={props.secondary || '#FFFFFF'} cx=\"16\" cy=\"23\" r=\"2.5\" opacity=\"0\">\n        <animate\n          attributeName=\"opacity\"\n          values=\"0;1\"\n          dur=\"0.25s\"\n          begin=\"350ms\"\n          fill=\"freeze\"\n          {...genSVGCubicBezier('0.0, 0.0, 0.58, 1.0')}\n        />\n      </circle>\n    </svg>\n  );\n};\n","import { IconProps } from '../types';\nimport type { Component } from 'solid-js';\n\nexport const Loader: Component<IconProps> = (props) => (\n  <svg style={{ overflow: 'visible' }} viewBox=\"0 0 32 32\" width=\"1.25rem\" height=\"1.25rem\">\n    <path\n      fill=\"none\"\n      stroke={props.primary || '#E5E7EB'}\n      stroke-width=\"4\"\n      stroke-miterlimit=\"10\"\n      d=\"M16,6c3,0,5.7,1.3,7.5,3.4c1.5,1.8,2.5,4,2.5,6.6c0,5.5-4.5,10-10,10S6,21.6,6,16S10.5,6,16,6z\"\n    />\n    <path\n      fill=\"none\"\n      stroke={props.secondary || '#4b5563'}\n      stroke-width=\"4\"\n      stroke-linecap=\"round\"\n      stroke-miterlimit=\"10\"\n      d=\"M16,6c3,0,5.7,1.3,7.5,3.4c0.6,0.7,1.1,1.4,1.5,2.2\"\n    >\n      <animateTransform\n        attributeName=\"transform\"\n        type=\"rotate\"\n        from=\"0 16 16\"\n        to=\"360 16 16\"\n        dur=\"0.75s\"\n        repeatCount=\"indefinite\"\n      />\n    </path>\n  </svg>\n);\n","import { toast } from './core';\nexport * from './types';\nimport { Toaster } from './components';\n\nexport { toast, Toaster };\nexport default toast;\n"]}