{
  "$schema": "https://ui.shadcn.com/schema/registry-item.json",
  "name": "kashi-provider",
  "type": "registry:ui",
  "title": "KashiProvider",
  "description": "دوزبانه، فارسی و انگلیسی",
  "dependencies": [
    "@kashi-ui/persian@^1.7.0"
  ],
  "registryDependencies": [
    "https://kashi.sepantapouya.com/r/cx.json"
  ],
  "files": [
    {
      "path": "registry/kashi/KashiProvider.tsx",
      "type": "registry:ui",
      "target": "components/kashi/KashiProvider.tsx",
      "content": "\"use client\";\n\nimport { createContext, useContext, useMemo, type ReactNode } from \"react\";\nimport {\n  JALALI_MONTHS, JALALI_MONTHS_EN, WEEKDAYS, WEEKDAYS_EN, WEEKDAYS_SHORT, WEEKDAYS_SHORT_EN,\n  faMessages, getMessages, toFaDigits, type KashiLocale, type KashiMessages, type KashiMessagesInput,\n} from \"@kashi-ui/persian\";\n\ninterface KashiContextValue {\n  locale: KashiLocale;\n  messages: KashiMessages;\n  digits: \"fa\" | \"latin\";\n}\n\nconst KashiContext = createContext<KashiContextValue>({ locale: \"fa\", messages: faMessages, digits: \"fa\" });\n\nexport interface KashiProviderProps {\n  /** زبان متن‌های داخلی کامپوننت‌ها، نام ماه‌ها و روزها @default \"fa\" */\n  locale?: KashiLocale;\n  /** عوض کردن هر متن دلخواه: { common: { close: \"Dismiss\" } } */\n  messages?: KashiMessagesInput;\n  /** ارقام پیش‌فرض کامپوننت‌ها؛ prop ‏digits هر کامپوننت بر این مقدم است @default \"fa\" برای فارسی، \"latin\" برای انگلیسی */\n  digits?: \"fa\" | \"latin\";\n  children: ReactNode;\n}\n\n/**\n * زبان کامپوننت‌های کاشی: بدون آن همه‌چیز فارسی است. با locale=\"en\" برچسب دکمه‌ها، متن صفحه‌خوان،\n * پیام‌های خطا، نام ماه‌ها و ارقام انگلیسی می‌شوند. جهت صفحه (dir) را خودتان روی html بگذارید.\n */\nexport function KashiProvider({ locale = \"fa\", messages, digits, children }: KashiProviderProps) {\n  const value = useMemo(\n    () => ({ locale, messages: getMessages(locale, messages), digits: digits ?? (locale === \"en\" ? \"latin\" : \"fa\") }),\n    [locale, messages, digits],\n  );\n  return <KashiContext.Provider value={value}>{children}</KashiContext.Provider>;\n}\n\n/** زبان، فرهنگ متن‌ها و ارقام فعلی؛ n() عدد را با ارقام همان زبان می‌نویسد و months/weekdays نام‌های تقویم شمسی‌اند */\nexport function useKashi() {\n  const ctx = useContext(KashiContext);\n  const en = ctx.locale === \"en\";\n  return {\n    ...ctx,\n    n: (v: number | string, digits = ctx.digits) => (digits === \"fa\" ? toFaDigits(String(v)) : String(v)),\n    months: en ? JALALI_MONTHS_EN : JALALI_MONTHS,\n    weekdays: en ? WEEKDAYS_EN : WEEKDAYS,\n    weekdaysShort: en ? WEEKDAYS_SHORT_EN : WEEKDAYS_SHORT,\n    /** نامی که getIranHoliday برای جمعه برمی‌گرداند */\n    friday: en ? \"Friday\" : \"جمعه\",\n  };\n}\n"
    }
  ]
}