@mesob/ui 0.5.3 → 0.5.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -18,7 +18,6 @@ declare function AnalyticsProvider({ analytics, children, }: AnalyticsProviderPr
18
18
  type Navigation = ReturnType<typeof createNavigation>;
19
19
  type MesobContextValue = {
20
20
  navigation: Navigation;
21
- linkComponent: Navigation['Link'];
22
21
  goBack: () => void;
23
22
  navigate: (href: string) => void;
24
23
  pathname: string;
@@ -29,13 +28,12 @@ type MesobContextValue = {
29
28
  };
30
29
  type MesobProviderProps = {
31
30
  children: ReactNode;
32
- routing: Parameters<typeof createNavigation>[0];
33
- linkComponent?: Navigation['Link'];
31
+ navigation: Navigation;
34
32
  locale?: string;
35
33
  defaultLanguage?: string;
36
34
  supportedLanguages?: SupportedLanguage[];
37
35
  };
38
- declare function MesobProvider({ children, routing, linkComponent: linkComponentProp, locale: localeProp, defaultLanguage, supportedLanguages, }: MesobProviderProps): react_jsx_runtime.JSX.Element;
36
+ declare function MesobProvider({ children, navigation, locale: localeProp, defaultLanguage, supportedLanguages, }: MesobProviderProps): react_jsx_runtime.JSX.Element;
39
37
  declare function useMesob(): MesobContextValue | null;
40
38
  declare function useLocaleConfig(): {
41
39
  defaultLanguage: string;
package/dist/providers.js CHANGED
@@ -81,7 +81,6 @@ function AnalyticsProvider({
81
81
  }
82
82
 
83
83
  // src/provider/mesob-provider.tsx
84
- import { createNavigation } from "next-intl/navigation";
85
84
  import { createContext, useContext, useMemo } from "react";
86
85
  import { z as z2 } from "zod";
87
86
 
@@ -154,41 +153,21 @@ function createLocalRequiredInputSchema(supportedLanguages, validation) {
154
153
  // src/provider/mesob-provider.tsx
155
154
  import { jsx as jsx3 } from "react/jsx-runtime";
156
155
  var MesobContext = createContext(null);
157
- var MESOB_ERR = "[MesobProvider]";
158
156
  function MesobProvider({
159
157
  children,
160
- routing,
161
- linkComponent: linkComponentProp,
158
+ navigation,
162
159
  locale: localeProp,
163
160
  defaultLanguage = DEFAULT_LANGUAGE,
164
161
  supportedLanguages = SUPPORTED_LANGUAGES
165
162
  }) {
166
- if (!routing) {
167
- throw new Error(`${MESOB_ERR} routing is required`);
168
- }
169
163
  const locale = localeProp ?? defaultLanguage;
170
- const navigation = useMemo(() => createNavigation(routing), [routing]);
171
- const pathname = typeof window === "undefined" ? "/" : window.location.pathname;
164
+ const pathname = navigation.usePathname();
165
+ const router = navigation.useRouter();
172
166
  const value = useMemo(() => {
173
- const linkComponent = linkComponentProp ?? navigation?.Link;
174
- if (!linkComponent) {
175
- throw new Error(
176
- `${MESOB_ERR} linkComponent or valid createNavigation required`
177
- );
178
- }
179
167
  return {
180
168
  navigation,
181
- linkComponent,
182
- goBack: () => {
183
- if (typeof window !== "undefined") {
184
- window.history.back();
185
- }
186
- },
187
- navigate: (href) => {
188
- if (typeof window !== "undefined") {
189
- window.location.assign(href);
190
- }
191
- },
169
+ goBack: router.back,
170
+ navigate: router.push,
192
171
  pathname,
193
172
  locale,
194
173
  defaultLanguage,
@@ -196,7 +175,8 @@ function MesobProvider({
196
175
  };
197
176
  }, [
198
177
  navigation,
199
- linkComponentProp,
178
+ router.back,
179
+ router.push,
200
180
  pathname,
201
181
  locale,
202
182
  defaultLanguage,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/analytics/clarity.tsx","../src/components/analytics/disable-devtool.tsx","../src/components/analytics/google-analytics.tsx","../src/provider/analytics-provider.tsx","../src/provider/mesob-provider.tsx","../src/components/ui/tooltip.tsx","../src/lib/utils.ts","../src/lib/locale.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\ntype ClarityProps = {\n clarityId: string;\n};\n\nexport function Clarity({ clarityId }: ClarityProps) {\n useEffect(() => {\n if (!clarityId || typeof document === 'undefined') {\n return;\n }\n const id = 'ms-clarity-script';\n if (document.getElementById(id)) {\n return;\n }\n const script = document.createElement('script');\n script.id = id;\n script.async = true;\n script.innerHTML = `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${clarityId.replace(/\"/g, '\\\\\"')}\");`;\n document.head.appendChild(script);\n }, [clarityId]);\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nexport type DisableDevtoolOptions = {\n url?: string;\n md5?: string;\n tkName?: string;\n disableMenu?: boolean;\n};\n\ntype DisableDevtoolProps = {\n /** When true, loads and runs disable-devtool (e.g. process.env.NEXT_PUBLIC_ENV === '1') */\n enable: boolean;\n options?: DisableDevtoolOptions;\n};\n\nexport function DisableDevtool({ enable, options = {} }: DisableDevtoolProps) {\n useEffect(() => {\n if (!enable || typeof window === 'undefined') {\n return;\n }\n import('disable-devtool')\n .then((mod) => {\n const DisableDevtool = mod.default;\n DisableDevtool({\n url: options.url ?? '/404',\n md5: options.md5,\n tkName: options.tkName ?? 'var',\n disableMenu: options.disableMenu ?? false,\n });\n })\n .catch(() => undefined);\n }, [enable, options.url, options.md5, options.tkName, options.disableMenu]);\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\ntype GoogleAnalyticsProps = {\n gaId: string;\n};\n\nexport function GoogleAnalytics({ gaId }: GoogleAnalyticsProps) {\n useEffect(() => {\n if (!gaId || typeof document === 'undefined') {\n return;\n }\n const id = 'ms-ga-script';\n if (document.getElementById(id)) {\n return;\n }\n window.dataLayer = window.dataLayer ?? [];\n function gtag(...args: unknown[]) {\n window.dataLayer?.push(args);\n }\n (window as unknown as { gtag: typeof gtag }).gtag = gtag;\n gtag('js', new Date());\n gtag('config', gaId);\n const script = document.createElement('script');\n script.id = id;\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(gaId)}`;\n document.head.appendChild(script);\n }, [gaId]);\n return null;\n}\n\ndeclare global {\n interface Window {\n dataLayer?: unknown[];\n }\n}\n","'use client';\n\nimport { type ReactNode, Suspense } from 'react';\nimport { Clarity, GoogleAnalytics } from '../components/analytics';\n\nexport type MesobAnalyticsIds = {\n clarityId?: string | null;\n gaId?: string | null;\n};\n\ntype AnalyticsProviderProps = {\n analytics?: MesobAnalyticsIds;\n children?: ReactNode;\n};\n\nexport function AnalyticsProvider({\n analytics = {},\n children,\n}: AnalyticsProviderProps) {\n const { clarityId, gaId } = analytics;\n\n return (\n <>\n {clarityId ? (\n <Suspense fallback={null}>\n <Clarity clarityId={clarityId} />\n </Suspense>\n ) : null}\n {gaId ? (\n <Suspense fallback={null}>\n <GoogleAnalytics gaId={gaId} />\n </Suspense>\n ) : null}\n {children}\n </>\n );\n}\n","'use client';\n\nimport { createNavigation } from 'next-intl/navigation';\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport { z } from 'zod';\nimport { TooltipProvider } from '../components/ui/tooltip';\nimport {\n createLocalInputSchema,\n createLocalRequiredInputSchema,\n DEFAULT_LANGUAGE,\n getLocaleInputDefault,\n SUPPORTED_LANGUAGES,\n type SupportedLanguage,\n} from '../lib/locale';\n\ntype Navigation = ReturnType<typeof createNavigation>;\n\ntype MesobContextValue = {\n navigation: Navigation;\n linkComponent: Navigation['Link'];\n goBack: () => void;\n navigate: (href: string) => void;\n pathname: string;\n locale: string;\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n t?: (key: string, params?: Record<string, string | number>) => string;\n};\n\nconst MesobContext = createContext<MesobContextValue | null>(null);\n\nconst MESOB_ERR = '[MesobProvider]';\n\nexport type MesobProviderProps = {\n children: ReactNode;\n routing: Parameters<typeof createNavigation>[0];\n linkComponent?: Navigation['Link'];\n locale?: string;\n defaultLanguage?: string;\n supportedLanguages?: SupportedLanguage[];\n};\n\nexport function MesobProvider({\n children,\n routing,\n linkComponent: linkComponentProp,\n locale: localeProp,\n defaultLanguage = DEFAULT_LANGUAGE,\n supportedLanguages = SUPPORTED_LANGUAGES,\n}: MesobProviderProps) {\n if (!routing) {\n throw new Error(`${MESOB_ERR} routing is required`);\n }\n\n const locale = localeProp ?? defaultLanguage;\n const navigation = useMemo(() => createNavigation(routing), [routing]);\n const pathname =\n typeof window === 'undefined' ? '/' : window.location.pathname;\n\n const value = useMemo(() => {\n const linkComponent = linkComponentProp ?? navigation?.Link;\n if (!linkComponent) {\n throw new Error(\n `${MESOB_ERR} linkComponent or valid createNavigation required`,\n );\n }\n return {\n navigation,\n linkComponent,\n goBack: () => {\n if (typeof window !== 'undefined') {\n window.history.back();\n }\n },\n navigate: (href: string) => {\n if (typeof window !== 'undefined') {\n window.location.assign(href);\n }\n },\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n };\n }, [\n navigation,\n linkComponentProp,\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n ]);\n\n return (\n <MesobContext.Provider value={value}>\n <TooltipProvider delay={0}>{children}</TooltipProvider>\n </MesobContext.Provider>\n );\n}\n\nexport function useMesob(): MesobContextValue | null {\n return useContext(MesobContext);\n}\n\nexport function useLocaleConfig(): {\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n} {\n const mesob = useMesob();\n return {\n defaultLanguage: mesob?.defaultLanguage ?? DEFAULT_LANGUAGE,\n supportedLanguages: mesob?.supportedLanguages ?? SUPPORTED_LANGUAGES,\n };\n}\n\nexport function useLocaleSchemas(): {\n localeInputDefault: Record<string, string>;\n requiredSchema: ReturnType<typeof createLocalRequiredInputSchema>;\n optionalSchema: ReturnType<typeof createLocalInputSchema>;\n} {\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n return useMemo(\n () => ({\n localeInputDefault: getLocaleInputDefault(supportedLanguages),\n requiredSchema: createLocalRequiredInputSchema(\n supportedLanguages,\n z.string().optional(),\n ),\n optionalSchema: createLocalInputSchema(\n defaultLanguage,\n supportedLanguages,\n z.string().optional(),\n z.string().optional(),\n ),\n }),\n [defaultLanguage, supportedLanguages],\n );\n}\n","'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\n\nimport { cn } from '../../lib/utils';\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\nfunction Tooltip({ ...props }: TooltipPrimitive.Root.Props) {\n return <TooltipPrimitive.Root data-slot=\"tooltip\" {...props} />;\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n 'cn-tooltip-content cn-tooltip-content-logical bg-foreground text-background z-50 w-fit max-w-xs origin-(--transform-origin)',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow cn-tooltip-arrow-logical bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { z } from 'zod';\n\nexport type LocaleKey = 'am' | 'en' | 'om' | 'ti' | 'so' | 'sw' | 'fr' | 'ar';\n\nexport type Locale = {\n [Key in LocaleKey | string]?: string;\n};\n\nexport type Translation = (key: string) => string;\n\n/** Fallback when MesobProvider does not receive defaultLanguage/supportedLanguages */\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport type SupportedLanguage = { value: string; label: string; key: string };\n\n/** Fallback when MesobProvider does not receive supportedLanguages */\nexport const SUPPORTED_LANGUAGES: SupportedLanguage[] = [\n { value: 'en', label: 'English', key: 'En' },\n { value: 'am', label: 'አማርኛ', key: 'አማ' },\n];\n\nconst localeRecord = z.record(z.string(), z.string());\nexport const LOCALE_INPUT_DEFAULT: Locale = {};\nexport const LOCALE_REQUIRED_INPUT_SCHEMA = localeRecord.refine(\n (o) => Object.keys(o).length > 0,\n { message: 'At least one locale required' },\n);\nexport const LOCALE_OPTIONAL_INPUT_SCHEMA = localeRecord;\n\nexport function getLocaleInputDefault(\n supportedLanguages: SupportedLanguage[],\n): Record<string, string> {\n return Object.fromEntries(supportedLanguages.map(({ value }) => [value, '']));\n}\n\ntype SchemaAccumulator = {\n [key: string]: z.ZodTypeAny;\n};\n\nexport function createLocalInputSchema(\n defaultLanguage: string,\n supportedLanguages: SupportedLanguage[],\n defaultValidation: z.ZodTypeAny,\n otherValidation: z.ZodTypeAny,\n): z.ZodObject<SchemaAccumulator> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n supportedLanguages.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] =\n value === defaultLanguage ? defaultValidation : otherValidation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition);\n}\n\nexport function createLocalRequiredInputSchema(\n supportedLanguages: SupportedLanguage[],\n validation: z.ZodTypeAny,\n): z.ZodTypeAny {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n supportedLanguages.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] = validation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition).superRefine((data, ctx) => {\n const hasValue = Object.values(data).some(\n (value) => typeof value === 'string' && value.trim().length > 0,\n );\n\n if (!hasValue) {\n for (const { value } of supportedLanguages) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'field is required',\n path: [value],\n });\n }\n }\n });\n}\n"],"mappings":"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","names":["useEffect","DisableDevtool","useEffect","z","jsx","jsxs","jsx","z"]}
1
+ {"version":3,"sources":["../src/components/analytics/clarity.tsx","../src/components/analytics/disable-devtool.tsx","../src/components/analytics/google-analytics.tsx","../src/provider/analytics-provider.tsx","../src/provider/mesob-provider.tsx","../src/components/ui/tooltip.tsx","../src/lib/utils.ts","../src/lib/locale.ts"],"sourcesContent":["'use client';\n\nimport { useEffect } from 'react';\n\ntype ClarityProps = {\n clarityId: string;\n};\n\nexport function Clarity({ clarityId }: ClarityProps) {\n useEffect(() => {\n if (!clarityId || typeof document === 'undefined') {\n return;\n }\n const id = 'ms-clarity-script';\n if (document.getElementById(id)) {\n return;\n }\n const script = document.createElement('script');\n script.id = id;\n script.async = true;\n script.innerHTML = `(function(c,l,a,r,i,t,y){c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};t=l.createElement(r);t.async=1;t.src=\"https://www.clarity.ms/tag/\"+i;y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y);})(window,document,\"clarity\",\"script\",\"${clarityId.replace(/\"/g, '\\\\\"')}\");`;\n document.head.appendChild(script);\n }, [clarityId]);\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\nexport type DisableDevtoolOptions = {\n url?: string;\n md5?: string;\n tkName?: string;\n disableMenu?: boolean;\n};\n\ntype DisableDevtoolProps = {\n /** When true, loads and runs disable-devtool (e.g. process.env.NEXT_PUBLIC_ENV === '1') */\n enable: boolean;\n options?: DisableDevtoolOptions;\n};\n\nexport function DisableDevtool({ enable, options = {} }: DisableDevtoolProps) {\n useEffect(() => {\n if (!enable || typeof window === 'undefined') {\n return;\n }\n import('disable-devtool')\n .then((mod) => {\n const DisableDevtool = mod.default;\n DisableDevtool({\n url: options.url ?? '/404',\n md5: options.md5,\n tkName: options.tkName ?? 'var',\n disableMenu: options.disableMenu ?? false,\n });\n })\n .catch(() => undefined);\n }, [enable, options.url, options.md5, options.tkName, options.disableMenu]);\n return null;\n}\n","'use client';\n\nimport { useEffect } from 'react';\n\ntype GoogleAnalyticsProps = {\n gaId: string;\n};\n\nexport function GoogleAnalytics({ gaId }: GoogleAnalyticsProps) {\n useEffect(() => {\n if (!gaId || typeof document === 'undefined') {\n return;\n }\n const id = 'ms-ga-script';\n if (document.getElementById(id)) {\n return;\n }\n window.dataLayer = window.dataLayer ?? [];\n function gtag(...args: unknown[]) {\n window.dataLayer?.push(args);\n }\n (window as unknown as { gtag: typeof gtag }).gtag = gtag;\n gtag('js', new Date());\n gtag('config', gaId);\n const script = document.createElement('script');\n script.id = id;\n script.async = true;\n script.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(gaId)}`;\n document.head.appendChild(script);\n }, [gaId]);\n return null;\n}\n\ndeclare global {\n interface Window {\n dataLayer?: unknown[];\n }\n}\n","'use client';\n\nimport { type ReactNode, Suspense } from 'react';\nimport { Clarity, GoogleAnalytics } from '../components/analytics';\n\nexport type MesobAnalyticsIds = {\n clarityId?: string | null;\n gaId?: string | null;\n};\n\ntype AnalyticsProviderProps = {\n analytics?: MesobAnalyticsIds;\n children?: ReactNode;\n};\n\nexport function AnalyticsProvider({\n analytics = {},\n children,\n}: AnalyticsProviderProps) {\n const { clarityId, gaId } = analytics;\n\n return (\n <>\n {clarityId ? (\n <Suspense fallback={null}>\n <Clarity clarityId={clarityId} />\n </Suspense>\n ) : null}\n {gaId ? (\n <Suspense fallback={null}>\n <GoogleAnalytics gaId={gaId} />\n </Suspense>\n ) : null}\n {children}\n </>\n );\n}\n","'use client';\n\nimport type { createNavigation } from 'next-intl/navigation';\nimport { createContext, type ReactNode, useContext, useMemo } from 'react';\nimport { z } from 'zod';\nimport { TooltipProvider } from '../components/ui/tooltip';\nimport {\n createLocalInputSchema,\n createLocalRequiredInputSchema,\n DEFAULT_LANGUAGE,\n getLocaleInputDefault,\n SUPPORTED_LANGUAGES,\n type SupportedLanguage,\n} from '../lib/locale';\n\ntype Navigation = ReturnType<typeof createNavigation>;\n\ntype MesobContextValue = {\n navigation: Navigation;\n goBack: () => void;\n navigate: (href: string) => void;\n pathname: string;\n locale: string;\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n t?: (key: string, params?: Record<string, string | number>) => string;\n};\n\nconst MesobContext = createContext<MesobContextValue | null>(null);\n\nexport type MesobProviderProps = {\n children: ReactNode;\n navigation: Navigation;\n locale?: string;\n defaultLanguage?: string;\n supportedLanguages?: SupportedLanguage[];\n};\n\nexport function MesobProvider({\n children,\n navigation,\n locale: localeProp,\n defaultLanguage = DEFAULT_LANGUAGE,\n supportedLanguages = SUPPORTED_LANGUAGES,\n}: MesobProviderProps) {\n const locale = localeProp ?? defaultLanguage;\n const pathname = navigation.usePathname();\n const router = navigation.useRouter();\n\n const value = useMemo(() => {\n return {\n navigation,\n goBack: router.back,\n navigate: router.push,\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n };\n }, [\n navigation,\n router.back,\n router.push,\n pathname,\n locale,\n defaultLanguage,\n supportedLanguages,\n ]);\n\n return (\n <MesobContext.Provider value={value}>\n <TooltipProvider delay={0}>{children}</TooltipProvider>\n </MesobContext.Provider>\n );\n}\n\nexport function useMesob(): MesobContextValue | null {\n return useContext(MesobContext);\n}\n\nexport function useLocaleConfig(): {\n defaultLanguage: string;\n supportedLanguages: SupportedLanguage[];\n} {\n const mesob = useMesob();\n return {\n defaultLanguage: mesob?.defaultLanguage ?? DEFAULT_LANGUAGE,\n supportedLanguages: mesob?.supportedLanguages ?? SUPPORTED_LANGUAGES,\n };\n}\n\nexport function useLocaleSchemas(): {\n localeInputDefault: Record<string, string>;\n requiredSchema: ReturnType<typeof createLocalRequiredInputSchema>;\n optionalSchema: ReturnType<typeof createLocalInputSchema>;\n} {\n const { defaultLanguage, supportedLanguages } = useLocaleConfig();\n return useMemo(\n () => ({\n localeInputDefault: getLocaleInputDefault(supportedLanguages),\n requiredSchema: createLocalRequiredInputSchema(\n supportedLanguages,\n z.string().optional(),\n ),\n optionalSchema: createLocalInputSchema(\n defaultLanguage,\n supportedLanguages,\n z.string().optional(),\n z.string().optional(),\n ),\n }),\n [defaultLanguage, supportedLanguages],\n );\n}\n","'use client';\n\nimport { Tooltip as TooltipPrimitive } from '@base-ui/react/tooltip';\nimport type { ReactNode } from 'react';\n\nimport { cn } from '../../lib/utils';\n\nfunction TooltipProvider({\n delay = 0,\n ...props\n}: TooltipPrimitive.Provider.Props) {\n return (\n <TooltipPrimitive.Provider\n data-slot=\"tooltip-provider\"\n delay={delay}\n {...props}\n />\n );\n}\n\ntype TooltipProps = Omit<TooltipPrimitive.Root.Props, 'children'> & {\n children: ReactNode;\n label?: ReactNode;\n contentProps?: Omit<\n TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >,\n 'children'\n >;\n triggerProps?: Omit<TooltipPrimitive.Trigger.Props, 'children'>;\n};\n\nfunction Tooltip({\n label,\n contentProps,\n triggerProps,\n children,\n ...props\n}: TooltipProps) {\n if (label !== undefined) {\n return (\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props}>\n <TooltipTrigger\n render={<span className=\"inline-block\" />}\n {...triggerProps}\n >\n {children}\n </TooltipTrigger>\n <TooltipContent {...contentProps}>{label}</TooltipContent>\n </TooltipPrimitive.Root>\n );\n }\n\n return (\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props}>\n {children}\n </TooltipPrimitive.Root>\n );\n}\n\nfunction TooltipTrigger({ ...props }: TooltipPrimitive.Trigger.Props) {\n return <TooltipPrimitive.Trigger data-slot=\"tooltip-trigger\" {...props} />;\n}\n\nfunction TooltipContent({\n className,\n side = 'top',\n sideOffset = 4,\n align = 'center',\n alignOffset = 0,\n children,\n ...props\n}: TooltipPrimitive.Popup.Props &\n Pick<\n TooltipPrimitive.Positioner.Props,\n 'align' | 'alignOffset' | 'side' | 'sideOffset'\n >) {\n return (\n <TooltipPrimitive.Portal>\n <TooltipPrimitive.Positioner\n align={align}\n alignOffset={alignOffset}\n side={side}\n sideOffset={sideOffset}\n className=\"isolate z-50\"\n >\n <TooltipPrimitive.Popup\n data-slot=\"tooltip-content\"\n className={cn(\n 'cn-tooltip-content cn-tooltip-content-logical bg-foreground text-background z-50 w-fit max-w-xs origin-(--transform-origin)',\n className,\n )}\n {...props}\n >\n {children}\n <TooltipPrimitive.Arrow className=\"cn-tooltip-arrow cn-tooltip-arrow-logical bg-foreground fill-foreground z-50 data-[side=bottom]:top-1 data-[side=left]:top-1/2! data-[side=left]:-right-1 data-[side=left]:-translate-y-1/2 data-[side=right]:top-1/2! data-[side=right]:-left-1 data-[side=right]:-translate-y-1/2 data-[side=top]:-bottom-2.5\" />\n </TooltipPrimitive.Popup>\n </TooltipPrimitive.Positioner>\n </TooltipPrimitive.Portal>\n );\n}\n\nexport { Tooltip, TooltipTrigger, TooltipContent, TooltipProvider };\n","import { type ClassValue, clsx } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import { z } from 'zod';\n\nexport type LocaleKey = 'am' | 'en' | 'om' | 'ti' | 'so' | 'sw' | 'fr' | 'ar';\n\nexport type Locale = {\n [Key in LocaleKey | string]?: string;\n};\n\nexport type Translation = (key: string) => string;\n\n/** Fallback when MesobProvider does not receive defaultLanguage/supportedLanguages */\nexport const DEFAULT_LANGUAGE = 'en';\n\nexport type SupportedLanguage = { value: string; label: string; key: string };\n\n/** Fallback when MesobProvider does not receive supportedLanguages */\nexport const SUPPORTED_LANGUAGES: SupportedLanguage[] = [\n { value: 'en', label: 'English', key: 'En' },\n { value: 'am', label: 'አማርኛ', key: 'አማ' },\n];\n\nconst localeRecord = z.record(z.string(), z.string());\nexport const LOCALE_INPUT_DEFAULT: Locale = {};\nexport const LOCALE_REQUIRED_INPUT_SCHEMA = localeRecord.refine(\n (o) => Object.keys(o).length > 0,\n { message: 'At least one locale required' },\n);\nexport const LOCALE_OPTIONAL_INPUT_SCHEMA = localeRecord;\n\nexport function getLocaleInputDefault(\n supportedLanguages: SupportedLanguage[],\n): Record<string, string> {\n return Object.fromEntries(supportedLanguages.map(({ value }) => [value, '']));\n}\n\ntype SchemaAccumulator = {\n [key: string]: z.ZodTypeAny;\n};\n\nexport function createLocalInputSchema(\n defaultLanguage: string,\n supportedLanguages: SupportedLanguage[],\n defaultValidation: z.ZodTypeAny,\n otherValidation: z.ZodTypeAny,\n): z.ZodObject<SchemaAccumulator> {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n supportedLanguages.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] =\n value === defaultLanguage ? defaultValidation : otherValidation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition);\n}\n\nexport function createLocalRequiredInputSchema(\n supportedLanguages: SupportedLanguage[],\n validation: z.ZodTypeAny,\n): z.ZodTypeAny {\n const schemaDefinition: { [key: string]: z.ZodTypeAny } =\n supportedLanguages.reduce((acc: SchemaAccumulator, { value }) => {\n acc[value] = validation;\n return acc;\n }, {});\n\n return z.object(schemaDefinition).superRefine((data, ctx) => {\n const hasValue = Object.values(data).some(\n (value) => typeof value === 'string' && value.trim().length > 0,\n );\n\n if (!hasValue) {\n for (const { value } of supportedLanguages) {\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message: 'field is required',\n path: [value],\n });\n }\n }\n });\n}\n"],"mappings":"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","names":["useEffect","DisableDevtool","useEffect","z","jsx","jsxs","jsx","z"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mesob/ui",
3
- "version": "0.5.3",
3
+ "version": "0.5.5",
4
4
  "type": "module",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -40,6 +40,7 @@
40
40
  "dependencies": {
41
41
  "@base-ui/react": "^1.1.0",
42
42
  "@hookform/resolvers": "^5.2.2",
43
+ "@mesob/common": "0.5.5",
43
44
  "@tabler/icons-react": "^3.35.0",
44
45
  "@tanstack/react-table": "^8.21.3",
45
46
  "@tiptap/core": "^3.18.0",
@@ -79,8 +80,7 @@
79
80
  "sonner": "^2.0.7",
80
81
  "tailwind-merge": "^3.3.1",
81
82
  "tw-animate-css": "^1.4.0",
82
- "zod": "^4.3.6",
83
- "@mesob/common": "0.5.3"
83
+ "zod": "^4.3.6"
84
84
  },
85
85
  "devDependencies": {
86
86
  "@tailwindcss/postcss": "^4.1.11",
@@ -652,7 +652,7 @@
652
652
 
653
653
  /* MARK: Dropdown Menu */
654
654
  .cn-dropdown-menu-content {
655
- @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none shadow-md ring-1 duration-100;
655
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-none shadow-md ring-1 duration-100;
656
656
  }
657
657
 
658
658
  .cn-dropdown-menu-content-logical {
@@ -1226,7 +1226,7 @@
1226
1226
  }
1227
1227
 
1228
1228
  .cn-select-content {
1229
- @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;
1229
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-none shadow-md ring-1 duration-100;
1230
1230
  }
1231
1231
 
1232
1232
  .cn-select-content-logical {
@@ -698,7 +698,7 @@
698
698
 
699
699
  /* MARK: Dropdown Menu */
700
700
  .cn-dropdown-menu-content {
701
- @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100;
701
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 bg-popover text-popover-foreground min-w-48 rounded-2xl p-1 shadow-2xl ring-1 duration-100;
702
702
  }
703
703
 
704
704
  .cn-dropdown-menu-content-logical {
@@ -1272,7 +1272,7 @@
1272
1272
  }
1273
1273
 
1274
1274
  .cn-select-content {
1275
- @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100;
1275
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/5 min-w-36 rounded-2xl shadow-2xl ring-1 duration-100;
1276
1276
  }
1277
1277
 
1278
1278
  .cn-select-content-logical {
@@ -698,7 +698,7 @@
698
698
 
699
699
  /* MARK: Dropdown Menu */
700
700
  .cn-dropdown-menu-content {
701
- @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;
701
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;
702
702
  }
703
703
 
704
704
  .cn-dropdown-menu-content-logical {
@@ -1272,7 +1272,7 @@
1272
1272
  }
1273
1273
 
1274
1274
  .cn-select-content {
1275
- @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg shadow-md ring-1 duration-100;
1275
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-32 rounded-lg shadow-md ring-1 duration-100;
1276
1276
  }
1277
1277
 
1278
1278
  .cn-select-content-logical {
@@ -801,7 +801,7 @@
801
801
 
802
802
  /* MARK: Dropdown Menu */
803
803
  .cn-dropdown-menu-content {
804
- @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;
804
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100;
805
805
  }
806
806
 
807
807
  .cn-dropdown-menu-content-logical {
@@ -1375,7 +1375,7 @@
1375
1375
  }
1376
1376
 
1377
1377
  .cn-select-content {
1378
- @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100;
1378
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-lg shadow-md ring-1 duration-100;
1379
1379
  }
1380
1380
 
1381
1381
  .cn-select-content-logical {
@@ -797,7 +797,7 @@
797
797
 
798
798
  /* MARK: Dropdown Menu */
799
799
  .cn-dropdown-menu-content {
800
- @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100;
800
+ @apply data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-md p-1 shadow-md ring-1 duration-100;
801
801
  }
802
802
 
803
803
  .cn-dropdown-menu-content-logical {
@@ -1371,7 +1371,7 @@
1371
1371
  }
1372
1372
 
1373
1373
  .cn-select-content {
1374
- @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-open:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100;
1374
+ @apply bg-popover text-popover-foreground data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 ring-foreground/10 min-w-36 rounded-md shadow-md ring-1 duration-100;
1375
1375
  }
1376
1376
 
1377
1377
  .cn-select-content-logical {