@mesob/ui 0.5.0 → 0.5.3
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.
- package/dist/components.d.ts +37 -35
- package/dist/components.js +686 -444
- package/dist/components.js.map +1 -1
- package/dist/google-analytics-B82Q7rm2.d.ts +24 -0
- package/dist/providers.d.ts +13 -2
- package/dist/providers.js +88 -4
- package/dist/providers.js.map +1 -1
- package/package.json +2 -2
- package/src/styles/style-lyra.css +17 -0
- package/src/styles/style-maia.css +17 -0
- package/src/styles/style-mira.css +17 -0
- package/src/styles/style-nova.css +17 -0
- package/src/styles/style-vega.css +17 -0
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
type DisableDevtoolOptions = {
|
|
2
|
+
url?: string;
|
|
3
|
+
md5?: string;
|
|
4
|
+
tkName?: string;
|
|
5
|
+
disableMenu?: boolean;
|
|
6
|
+
};
|
|
7
|
+
type DisableDevtoolProps = {
|
|
8
|
+
/** When true, loads and runs disable-devtool (e.g. process.env.NEXT_PUBLIC_ENV === '1') */
|
|
9
|
+
enable: boolean;
|
|
10
|
+
options?: DisableDevtoolOptions;
|
|
11
|
+
};
|
|
12
|
+
declare function DisableDevtool({ enable, options }: DisableDevtoolProps): null;
|
|
13
|
+
|
|
14
|
+
type GoogleAnalyticsProps = {
|
|
15
|
+
gaId: string;
|
|
16
|
+
};
|
|
17
|
+
declare function GoogleAnalytics({ gaId }: GoogleAnalyticsProps): null;
|
|
18
|
+
declare global {
|
|
19
|
+
interface Window {
|
|
20
|
+
dataLayer?: unknown[];
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
export { DisableDevtool as D, GoogleAnalytics as G, type DisableDevtoolOptions as a };
|
package/dist/providers.d.ts
CHANGED
|
@@ -1,9 +1,20 @@
|
|
|
1
|
+
export { D as DisableDevtool, a as DisableDevtoolOptions } from './google-analytics-B82Q7rm2.js';
|
|
1
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
|
-
import { createNavigation } from 'next-intl/navigation';
|
|
3
3
|
import { ReactNode } from 'react';
|
|
4
|
+
import { createNavigation } from 'next-intl/navigation';
|
|
4
5
|
import { SupportedLanguage, createLocalRequiredInputSchema, createLocalInputSchema } from './lib/locale.js';
|
|
5
6
|
import 'zod';
|
|
6
7
|
|
|
8
|
+
type MesobAnalyticsIds = {
|
|
9
|
+
clarityId?: string | null;
|
|
10
|
+
gaId?: string | null;
|
|
11
|
+
};
|
|
12
|
+
type AnalyticsProviderProps = {
|
|
13
|
+
analytics?: MesobAnalyticsIds;
|
|
14
|
+
children?: ReactNode;
|
|
15
|
+
};
|
|
16
|
+
declare function AnalyticsProvider({ analytics, children, }: AnalyticsProviderProps): react_jsx_runtime.JSX.Element;
|
|
17
|
+
|
|
7
18
|
type Navigation = ReturnType<typeof createNavigation>;
|
|
8
19
|
type MesobContextValue = {
|
|
9
20
|
navigation: Navigation;
|
|
@@ -36,4 +47,4 @@ declare function useLocaleSchemas(): {
|
|
|
36
47
|
optionalSchema: ReturnType<typeof createLocalInputSchema>;
|
|
37
48
|
};
|
|
38
49
|
|
|
39
|
-
export { MesobProvider, type MesobProviderProps, useLocaleConfig, useLocaleSchemas, useMesob };
|
|
50
|
+
export { AnalyticsProvider, type MesobAnalyticsIds, MesobProvider, type MesobProviderProps, useLocaleConfig, useLocaleSchemas, useMesob };
|
package/dist/providers.js
CHANGED
|
@@ -1,3 +1,85 @@
|
|
|
1
|
+
// src/components/analytics/clarity.tsx
|
|
2
|
+
import { useEffect } from "react";
|
|
3
|
+
function Clarity({ clarityId }) {
|
|
4
|
+
useEffect(() => {
|
|
5
|
+
if (!clarityId || typeof document === "undefined") {
|
|
6
|
+
return;
|
|
7
|
+
}
|
|
8
|
+
const id = "ms-clarity-script";
|
|
9
|
+
if (document.getElementById(id)) {
|
|
10
|
+
return;
|
|
11
|
+
}
|
|
12
|
+
const script = document.createElement("script");
|
|
13
|
+
script.id = id;
|
|
14
|
+
script.async = true;
|
|
15
|
+
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, '\\"')}");`;
|
|
16
|
+
document.head.appendChild(script);
|
|
17
|
+
}, [clarityId]);
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
// src/components/analytics/disable-devtool.tsx
|
|
22
|
+
import { useEffect as useEffect2 } from "react";
|
|
23
|
+
function DisableDevtool({ enable, options = {} }) {
|
|
24
|
+
useEffect2(() => {
|
|
25
|
+
if (!enable || typeof window === "undefined") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
import("disable-devtool").then((mod) => {
|
|
29
|
+
const DisableDevtool2 = mod.default;
|
|
30
|
+
DisableDevtool2({
|
|
31
|
+
url: options.url ?? "/404",
|
|
32
|
+
md5: options.md5,
|
|
33
|
+
tkName: options.tkName ?? "var",
|
|
34
|
+
disableMenu: options.disableMenu ?? false
|
|
35
|
+
});
|
|
36
|
+
}).catch(() => void 0);
|
|
37
|
+
}, [enable, options.url, options.md5, options.tkName, options.disableMenu]);
|
|
38
|
+
return null;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
// src/components/analytics/google-analytics.tsx
|
|
42
|
+
import { useEffect as useEffect3 } from "react";
|
|
43
|
+
function GoogleAnalytics({ gaId }) {
|
|
44
|
+
useEffect3(() => {
|
|
45
|
+
if (!gaId || typeof document === "undefined") {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
const id = "ms-ga-script";
|
|
49
|
+
if (document.getElementById(id)) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
window.dataLayer = window.dataLayer ?? [];
|
|
53
|
+
function gtag(...args) {
|
|
54
|
+
window.dataLayer?.push(args);
|
|
55
|
+
}
|
|
56
|
+
window.gtag = gtag;
|
|
57
|
+
gtag("js", /* @__PURE__ */ new Date());
|
|
58
|
+
gtag("config", gaId);
|
|
59
|
+
const script = document.createElement("script");
|
|
60
|
+
script.id = id;
|
|
61
|
+
script.async = true;
|
|
62
|
+
script.src = `https://www.googletagmanager.com/gtag/js?id=${encodeURIComponent(gaId)}`;
|
|
63
|
+
document.head.appendChild(script);
|
|
64
|
+
}, [gaId]);
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
// src/provider/analytics-provider.tsx
|
|
69
|
+
import { Suspense } from "react";
|
|
70
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
71
|
+
function AnalyticsProvider({
|
|
72
|
+
analytics = {},
|
|
73
|
+
children
|
|
74
|
+
}) {
|
|
75
|
+
const { clarityId, gaId } = analytics;
|
|
76
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
77
|
+
clarityId ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(Clarity, { clarityId }) }) : null,
|
|
78
|
+
gaId ? /* @__PURE__ */ jsx(Suspense, { fallback: null, children: /* @__PURE__ */ jsx(GoogleAnalytics, { gaId }) }) : null,
|
|
79
|
+
children
|
|
80
|
+
] });
|
|
81
|
+
}
|
|
82
|
+
|
|
1
83
|
// src/provider/mesob-provider.tsx
|
|
2
84
|
import { createNavigation } from "next-intl/navigation";
|
|
3
85
|
import { createContext, useContext, useMemo } from "react";
|
|
@@ -11,12 +93,12 @@ import { clsx } from "clsx";
|
|
|
11
93
|
import { twMerge } from "tailwind-merge";
|
|
12
94
|
|
|
13
95
|
// src/components/ui/tooltip.tsx
|
|
14
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
96
|
+
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
15
97
|
function TooltipProvider({
|
|
16
98
|
delay = 0,
|
|
17
99
|
...props
|
|
18
100
|
}) {
|
|
19
|
-
return /* @__PURE__ */
|
|
101
|
+
return /* @__PURE__ */ jsx2(
|
|
20
102
|
TooltipPrimitive.Provider,
|
|
21
103
|
{
|
|
22
104
|
"data-slot": "tooltip-provider",
|
|
@@ -70,7 +152,7 @@ function createLocalRequiredInputSchema(supportedLanguages, validation) {
|
|
|
70
152
|
}
|
|
71
153
|
|
|
72
154
|
// src/provider/mesob-provider.tsx
|
|
73
|
-
import { jsx as
|
|
155
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
74
156
|
var MesobContext = createContext(null);
|
|
75
157
|
var MESOB_ERR = "[MesobProvider]";
|
|
76
158
|
function MesobProvider({
|
|
@@ -120,7 +202,7 @@ function MesobProvider({
|
|
|
120
202
|
defaultLanguage,
|
|
121
203
|
supportedLanguages
|
|
122
204
|
]);
|
|
123
|
-
return /* @__PURE__ */
|
|
205
|
+
return /* @__PURE__ */ jsx3(MesobContext.Provider, { value, children: /* @__PURE__ */ jsx3(TooltipProvider, { delay: 0, children }) });
|
|
124
206
|
}
|
|
125
207
|
function useMesob() {
|
|
126
208
|
return useContext(MesobContext);
|
|
@@ -152,6 +234,8 @@ function useLocaleSchemas() {
|
|
|
152
234
|
);
|
|
153
235
|
}
|
|
154
236
|
export {
|
|
237
|
+
AnalyticsProvider,
|
|
238
|
+
DisableDevtool,
|
|
155
239
|
MesobProvider,
|
|
156
240
|
useLocaleConfig,
|
|
157
241
|
useLocaleSchemas,
|
package/dist/providers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/provider/mesob-provider.tsx","../src/components/ui/tooltip.tsx","../src/lib/utils.ts","../src/lib/locale.ts"],"sourcesContent":["'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":["z","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 { 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":";AAEA,SAAS,iBAAiB;AAMnB,SAAS,QAAQ,EAAE,UAAU,GAAiB;AACnD,YAAU,MAAM;AACd,QAAI,CAAC,aAAa,OAAO,aAAa,aAAa;AACjD;AAAA,IACF;AACA,UAAM,KAAK;AACX,QAAI,SAAS,eAAe,EAAE,GAAG;AAC/B;AAAA,IACF;AACA,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,QAAQ;AACf,WAAO,YAAY,iQAAiQ,UAAU,QAAQ,MAAM,KAAK,CAAC;AAClT,aAAS,KAAK,YAAY,MAAM;AAAA,EAClC,GAAG,CAAC,SAAS,CAAC;AACd,SAAO;AACT;;;ACtBA,SAAS,aAAAA,kBAAiB;AAenB,SAAS,eAAe,EAAE,QAAQ,UAAU,CAAC,EAAE,GAAwB;AAC5E,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,UAAU,OAAO,WAAW,aAAa;AAC5C;AAAA,IACF;AACA,WAAO,iBAAiB,EACrB,KAAK,CAAC,QAAQ;AACb,YAAMC,kBAAiB,IAAI;AAC3B,MAAAA,gBAAe;AAAA,QACb,KAAK,QAAQ,OAAO;AAAA,QACpB,KAAK,QAAQ;AAAA,QACb,QAAQ,QAAQ,UAAU;AAAA,QAC1B,aAAa,QAAQ,eAAe;AAAA,MACtC,CAAC;AAAA,IACH,CAAC,EACA,MAAM,MAAM,MAAS;AAAA,EAC1B,GAAG,CAAC,QAAQ,QAAQ,KAAK,QAAQ,KAAK,QAAQ,QAAQ,QAAQ,WAAW,CAAC;AAC1E,SAAO;AACT;;;ACjCA,SAAS,aAAAC,kBAAiB;AAMnB,SAAS,gBAAgB,EAAE,KAAK,GAAyB;AAC9D,EAAAA,WAAU,MAAM;AACd,QAAI,CAAC,QAAQ,OAAO,aAAa,aAAa;AAC5C;AAAA,IACF;AACA,UAAM,KAAK;AACX,QAAI,SAAS,eAAe,EAAE,GAAG;AAC/B;AAAA,IACF;AACA,WAAO,YAAY,OAAO,aAAa,CAAC;AACxC,aAAS,QAAQ,MAAiB;AAChC,aAAO,WAAW,KAAK,IAAI;AAAA,IAC7B;AACA,IAAC,OAA4C,OAAO;AACpD,SAAK,MAAM,oBAAI,KAAK,CAAC;AACrB,SAAK,UAAU,IAAI;AACnB,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,KAAK;AACZ,WAAO,QAAQ;AACf,WAAO,MAAM,+CAA+C,mBAAmB,IAAI,CAAC;AACpF,aAAS,KAAK,YAAY,MAAM;AAAA,EAClC,GAAG,CAAC,IAAI,CAAC;AACT,SAAO;AACT;;;AC7BA,SAAyB,gBAAgB;AAoBrC,mBAGM,KAHN;AAPG,SAAS,kBAAkB;AAAA,EAChC,YAAY,CAAC;AAAA,EACb;AACF,GAA2B;AACzB,QAAM,EAAE,WAAW,KAAK,IAAI;AAE5B,SACE,iCACG;AAAA,gBACC,oBAAC,YAAS,UAAU,MAClB,8BAAC,WAAQ,WAAsB,GACjC,IACE;AAAA,IACH,OACC,oBAAC,YAAS,UAAU,MAClB,8BAAC,mBAAgB,MAAY,GAC/B,IACE;AAAA,IACH;AAAA,KACH;AAEJ;;;AClCA,SAAS,wBAAwB;AACjC,SAAS,eAA+B,YAAY,eAAe;AACnE,SAAS,KAAAC,UAAS;;;ACFlB,SAAS,WAAW,wBAAwB;;;ACF5C,SAA0B,YAAY;AACtC,SAAS,eAAe;;;ADUpB,gBAAAC,MAsCI,QAAAC,aAtCJ;AALJ,SAAS,gBAAgB;AAAA,EACvB,QAAQ;AAAA,EACR,GAAG;AACL,GAAoC;AAClC,SACE,gBAAAD;AAAA,IAAC,iBAAiB;AAAA,IAAjB;AAAA,MACC,aAAU;AAAA,MACV;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;;;AEjBA,SAAS,SAAS;AAWX,IAAM,mBAAmB;AAKzB,IAAM,sBAA2C;AAAA,EACtD,EAAE,OAAO,MAAM,OAAO,WAAW,KAAK,KAAK;AAAA,EAC3C,EAAE,OAAO,MAAM,OAAO,4BAAQ,KAAK,eAAK;AAC1C;AAEA,IAAM,eAAe,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,OAAO,CAAC;AAE7C,IAAM,+BAA+B,aAAa;AAAA,EACvD,CAAC,MAAM,OAAO,KAAK,CAAC,EAAE,SAAS;AAAA,EAC/B,EAAE,SAAS,+BAA+B;AAC5C;AAGO,SAAS,sBACd,oBACwB;AACxB,SAAO,OAAO,YAAY,mBAAmB,IAAI,CAAC,EAAE,MAAM,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC9E;AAMO,SAAS,uBACd,iBACA,oBACA,mBACA,iBACgC;AAChC,QAAM,mBACJ,mBAAmB,OAAO,CAAC,KAAwB,EAAE,MAAM,MAAM;AAC/D,QAAI,KAAK,IACP,UAAU,kBAAkB,oBAAoB;AAClD,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEP,SAAO,EAAE,OAAO,gBAAgB;AAClC;AAEO,SAAS,+BACd,oBACA,YACc;AACd,QAAM,mBACJ,mBAAmB,OAAO,CAAC,KAAwB,EAAE,MAAM,MAAM;AAC/D,QAAI,KAAK,IAAI;AACb,WAAO;AAAA,EACT,GAAG,CAAC,CAAC;AAEP,SAAO,EAAE,OAAO,gBAAgB,EAAE,YAAY,CAAC,MAAM,QAAQ;AAC3D,UAAM,WAAW,OAAO,OAAO,IAAI,EAAE;AAAA,MACnC,CAAC,UAAU,OAAO,UAAU,YAAY,MAAM,KAAK,EAAE,SAAS;AAAA,IAChE;AAEA,QAAI,CAAC,UAAU;AACb,iBAAW,EAAE,MAAM,KAAK,oBAAoB;AAC1C,YAAI,SAAS;AAAA,UACX,MAAM,EAAE,aAAa;AAAA,UACrB,SAAS;AAAA,UACT,MAAM,CAAC,KAAK;AAAA,QACd,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF,CAAC;AACH;;;AHeM,gBAAAE,YAAA;AAlEN,IAAM,eAAe,cAAwC,IAAI;AAEjE,IAAM,YAAY;AAWX,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA,eAAe;AAAA,EACf,QAAQ;AAAA,EACR,kBAAkB;AAAA,EAClB,qBAAqB;AACvB,GAAuB;AACrB,MAAI,CAAC,SAAS;AACZ,UAAM,IAAI,MAAM,GAAG,SAAS,sBAAsB;AAAA,EACpD;AAEA,QAAM,SAAS,cAAc;AAC7B,QAAM,aAAa,QAAQ,MAAM,iBAAiB,OAAO,GAAG,CAAC,OAAO,CAAC;AACrE,QAAM,WACJ,OAAO,WAAW,cAAc,MAAM,OAAO,SAAS;AAExD,QAAM,QAAQ,QAAQ,MAAM;AAC1B,UAAM,gBAAgB,qBAAqB,YAAY;AACvD,QAAI,CAAC,eAAe;AAClB,YAAM,IAAI;AAAA,QACR,GAAG,SAAS;AAAA,MACd;AAAA,IACF;AACA,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA,QAAQ,MAAM;AACZ,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,QAAQ,KAAK;AAAA,QACtB;AAAA,MACF;AAAA,MACA,UAAU,CAAC,SAAiB;AAC1B,YAAI,OAAO,WAAW,aAAa;AACjC,iBAAO,SAAS,OAAO,IAAI;AAAA,QAC7B;AAAA,MACF;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF,GAAG;AAAA,IACD;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EACF,CAAC;AAED,SACE,gBAAAA,KAAC,aAAa,UAAb,EAAsB,OACrB,0BAAAA,KAAC,mBAAgB,OAAO,GAAI,UAAS,GACvC;AAEJ;AAEO,SAAS,WAAqC;AACnD,SAAO,WAAW,YAAY;AAChC;AAEO,SAAS,kBAGd;AACA,QAAM,QAAQ,SAAS;AACvB,SAAO;AAAA,IACL,iBAAiB,OAAO,mBAAmB;AAAA,IAC3C,oBAAoB,OAAO,sBAAsB;AAAA,EACnD;AACF;AAEO,SAAS,mBAId;AACA,QAAM,EAAE,iBAAiB,mBAAmB,IAAI,gBAAgB;AAChE,SAAO;AAAA,IACL,OAAO;AAAA,MACL,oBAAoB,sBAAsB,kBAAkB;AAAA,MAC5D,gBAAgB;AAAA,QACd;AAAA,QACAC,GAAE,OAAO,EAAE,SAAS;AAAA,MACtB;AAAA,MACA,gBAAgB;AAAA,QACd;AAAA,QACA;AAAA,QACAA,GAAE,OAAO,EAAE,SAAS;AAAA,QACpBA,GAAE,OAAO,EAAE,SAAS;AAAA,MACtB;AAAA,IACF;AAAA,IACA,CAAC,iBAAiB,kBAAkB;AAAA,EACtC;AACF;","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
|
+
"version": "0.5.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -80,7 +80,7 @@
|
|
|
80
80
|
"tailwind-merge": "^3.3.1",
|
|
81
81
|
"tw-animate-css": "^1.4.0",
|
|
82
82
|
"zod": "^4.3.6",
|
|
83
|
-
"@mesob/common": "0.5.
|
|
83
|
+
"@mesob/common": "0.5.3"
|
|
84
84
|
},
|
|
85
85
|
"devDependencies": {
|
|
86
86
|
"@tailwindcss/postcss": "^4.1.11",
|
|
@@ -1160,6 +1160,23 @@
|
|
|
1160
1160
|
@apply text-muted-foreground ml-auto text-xs tabular-nums;
|
|
1161
1161
|
}
|
|
1162
1162
|
|
|
1163
|
+
/* MARK: NProgress */
|
|
1164
|
+
.cn-nprogress-root {
|
|
1165
|
+
@apply bg-transparent opacity-0 transition-opacity duration-100;
|
|
1166
|
+
}
|
|
1167
|
+
|
|
1168
|
+
.cn-nprogress-root[data-mounted] {
|
|
1169
|
+
@apply opacity-100;
|
|
1170
|
+
}
|
|
1171
|
+
|
|
1172
|
+
.cn-nprogress-bar {
|
|
1173
|
+
@apply bg-primary relative transition-transform duration-100 ease-linear;
|
|
1174
|
+
}
|
|
1175
|
+
|
|
1176
|
+
.cn-nprogress-peg {
|
|
1177
|
+
@apply absolute top-0 right-0 h-full w-12 translate-x-[1px] rotate-0 shadow-[0_0_6px_hsl(var(--primary))];
|
|
1178
|
+
}
|
|
1179
|
+
|
|
1163
1180
|
/* MARK: Radio Group */
|
|
1164
1181
|
.cn-radio-group {
|
|
1165
1182
|
@apply grid gap-2;
|
|
@@ -1206,6 +1206,23 @@
|
|
|
1206
1206
|
@apply text-muted-foreground ml-auto text-sm tabular-nums;
|
|
1207
1207
|
}
|
|
1208
1208
|
|
|
1209
|
+
/* MARK: NProgress */
|
|
1210
|
+
.cn-nprogress-root {
|
|
1211
|
+
@apply bg-transparent opacity-0 transition-opacity duration-200;
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
.cn-nprogress-root[data-mounted] {
|
|
1215
|
+
@apply opacity-100;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.cn-nprogress-bar {
|
|
1219
|
+
@apply bg-primary relative rounded-full transition-transform duration-200 ease-out;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.cn-nprogress-peg {
|
|
1223
|
+
@apply absolute top-0 right-0 h-full w-24 -translate-y-[1px] translate-x-[4px] rotate-[3deg] rounded-full shadow-[0_0_12px_hsl(var(--primary)),0_0_8px_hsl(var(--primary))];
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1209
1226
|
/* MARK: Radio Group */
|
|
1210
1227
|
.cn-radio-group {
|
|
1211
1228
|
@apply grid gap-3;
|
|
@@ -1206,6 +1206,23 @@
|
|
|
1206
1206
|
@apply text-muted-foreground ml-auto text-xs/relaxed tabular-nums;
|
|
1207
1207
|
}
|
|
1208
1208
|
|
|
1209
|
+
/* MARK: NProgress */
|
|
1210
|
+
.cn-nprogress-root {
|
|
1211
|
+
@apply bg-transparent opacity-0 transition-opacity duration-150;
|
|
1212
|
+
}
|
|
1213
|
+
|
|
1214
|
+
.cn-nprogress-root[data-mounted] {
|
|
1215
|
+
@apply opacity-100;
|
|
1216
|
+
}
|
|
1217
|
+
|
|
1218
|
+
.cn-nprogress-bar {
|
|
1219
|
+
@apply bg-primary relative rounded-md transition-transform duration-150 ease-out;
|
|
1220
|
+
}
|
|
1221
|
+
|
|
1222
|
+
.cn-nprogress-peg {
|
|
1223
|
+
@apply absolute top-0 right-0 h-full w-14 translate-x-[2px] rotate-[2deg] rounded-md shadow-[0_0_7px_hsl(var(--primary)),0_0_4px_hsl(var(--primary))];
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1209
1226
|
/* MARK: Radio Group */
|
|
1210
1227
|
.cn-radio-group {
|
|
1211
1228
|
@apply grid gap-3;
|
|
@@ -1309,6 +1309,23 @@
|
|
|
1309
1309
|
@apply text-muted-foreground ml-auto text-sm tabular-nums;
|
|
1310
1310
|
}
|
|
1311
1311
|
|
|
1312
|
+
/* MARK: NProgress */
|
|
1313
|
+
.cn-nprogress-root {
|
|
1314
|
+
@apply bg-transparent opacity-0 transition-opacity duration-150;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
.cn-nprogress-root[data-mounted] {
|
|
1318
|
+
@apply opacity-100;
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
.cn-nprogress-bar {
|
|
1322
|
+
@apply bg-primary relative transition-transform duration-150 ease-out;
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1325
|
+
.cn-nprogress-peg {
|
|
1326
|
+
@apply absolute top-0 right-0 h-full w-16 translate-x-[2px] rotate-[2deg] shadow-[0_0_8px_hsl(var(--primary)),0_0_4px_hsl(var(--primary))];
|
|
1327
|
+
}
|
|
1328
|
+
|
|
1312
1329
|
/* MARK: Radio Group */
|
|
1313
1330
|
.cn-radio-group {
|
|
1314
1331
|
@apply grid gap-2;
|
|
@@ -1305,6 +1305,23 @@
|
|
|
1305
1305
|
@apply text-muted-foreground ml-auto text-sm tabular-nums;
|
|
1306
1306
|
}
|
|
1307
1307
|
|
|
1308
|
+
/* MARK: NProgress */
|
|
1309
|
+
.cn-nprogress-root {
|
|
1310
|
+
@apply bg-transparent opacity-0 transition-opacity duration-200;
|
|
1311
|
+
}
|
|
1312
|
+
|
|
1313
|
+
.cn-nprogress-root[data-mounted] {
|
|
1314
|
+
@apply opacity-100;
|
|
1315
|
+
}
|
|
1316
|
+
|
|
1317
|
+
.cn-nprogress-bar {
|
|
1318
|
+
@apply bg-primary relative transition-transform duration-200 ease-out;
|
|
1319
|
+
}
|
|
1320
|
+
|
|
1321
|
+
.cn-nprogress-peg {
|
|
1322
|
+
@apply absolute top-0 right-0 h-full w-20 -translate-y-[1px] translate-x-[3px] rotate-[3deg] shadow-[0_0_10px_hsl(var(--primary)),0_0_5px_hsl(var(--primary))];
|
|
1323
|
+
}
|
|
1324
|
+
|
|
1308
1325
|
/* MARK: Radio Group */
|
|
1309
1326
|
.cn-radio-group {
|
|
1310
1327
|
@apply grid gap-3;
|