import {
  runIfFn
} from "./KGOB2IMX.jsx";
import {
  createContext
} from "./UZJJWJQM.jsx";

// src/providers/locale/locale-provider.tsx
import { isRTL } from "@zag-js/i18n-utils";
import { createMemo } from "solid-js";

// src/providers/locale/use-locale-context.ts
var [LocaleContextProvider, useLocaleContext] = createContext({
  hookName: "useEnvironmentContext",
  providerName: "<EnvironmentProvider />",
  strict: false,
  defaultValue: () => ({ dir: "ltr", locale: "en-US" })
});

// src/providers/locale/locale-provider.tsx
var LocaleProvider = (props) => {
  const context = createMemo(
    () => ({
      locale: props.locale,
      dir: isRTL(props.locale) ? "rtl" : "ltr"
    })
  );
  return <LocaleContextProvider value={context}>{props.children}</LocaleContextProvider>;
};

// src/providers/locale/use-collator.ts
import { createCollator } from "@zag-js/i18n-utils";
import { createMemo as createMemo2 } from "solid-js";
function useCollator(props = {}) {
  const env = useLocaleContext();
  const locale = () => props.locale ?? env().locale;
  return createMemo2(() => {
    const { locale: _, ...options } = props;
    return createCollator(locale(), options);
  });
}

// src/providers/locale/use-date-formatter.ts
import { DateFormatter } from "@internationalized/date";
import { createMemo as createMemo3 } from "solid-js";
function useDateFormatter(props = {}) {
  const env = useLocaleContext();
  return createMemo3(() => {
    const resolvedProps = runIfFn(props);
    const locale = resolvedProps.locale ?? env().locale;
    const { locale: _, ...options } = resolvedProps;
    return new DateFormatter(locale, options);
  });
}

// src/providers/locale/use-filter.ts
import { createFilter } from "@zag-js/i18n-utils";
import { createMemo as createMemo4 } from "solid-js";
function useFilter(props) {
  const env = useLocaleContext();
  const locale = createMemo4(() => props.locale ?? env().locale);
  return createMemo4(() => createFilter({ ...props, locale: locale() }));
}

export {
  useLocaleContext,
  LocaleProvider,
  useCollator,
  useDateFormatter,
  useFilter
};
