@webdevarif/dashui 1.2.4 → 1.2.7

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/setup.js ADDED
@@ -0,0 +1,130 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+
30
+ // src/setup/index.ts
31
+ var setup_exports = {};
32
+ __export(setup_exports, {
33
+ AuthProvider: () => AuthProvider,
34
+ I18nProvider: () => I18nProvider,
35
+ RootProvider: () => RootProvider,
36
+ SWRProvider: () => SWRProvider,
37
+ prisma: () => prisma,
38
+ useAuth: () => useAuth,
39
+ useFetch: () => useFetch,
40
+ useI18n: () => useI18n
41
+ });
42
+ module.exports = __toCommonJS(setup_exports);
43
+
44
+ // src/setup/providers/auth-provider.tsx
45
+ var import_react = require("next-auth/react");
46
+ var import_jsx_runtime = require("react/jsx-runtime");
47
+ function AuthProvider({ children, session }) {
48
+ return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_react.SessionProvider, { session, children });
49
+ }
50
+
51
+ // src/setup/providers/i18n-provider.tsx
52
+ var import_next_intl = require("next-intl");
53
+ var import_jsx_runtime2 = require("react/jsx-runtime");
54
+ function I18nProvider({
55
+ children,
56
+ locale,
57
+ messages,
58
+ timeZone = "UTC"
59
+ }) {
60
+ return /* @__PURE__ */ (0, import_jsx_runtime2.jsx)(import_next_intl.IntlProvider, { locale, messages, timeZone, children });
61
+ }
62
+
63
+ // src/setup/providers/swr-provider.tsx
64
+ var import_swr = require("swr");
65
+ var import_jsx_runtime3 = require("react/jsx-runtime");
66
+ var DEFAULT_SWR_CONFIG = {
67
+ revalidateOnFocus: false,
68
+ revalidateOnReconnect: true,
69
+ dedupingInterval: 6e4,
70
+ focusThrottleInterval: 3e5
71
+ };
72
+ function SWRProvider({ children }) {
73
+ return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_swr.SWRConfig, { value: { fetcher: (url) => fetch(url).then((r) => r.json()), ...DEFAULT_SWR_CONFIG }, children });
74
+ }
75
+
76
+ // src/setup/providers/root-provider.tsx
77
+ var import_jsx_runtime4 = require("react/jsx-runtime");
78
+ function RootProvider({
79
+ children,
80
+ session,
81
+ locale,
82
+ messages,
83
+ timeZone
84
+ }) {
85
+ return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(AuthProvider, { session, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(I18nProvider, { locale, messages, timeZone, children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(SWRProvider, { children }) }) });
86
+ }
87
+
88
+ // src/setup/hooks/use-auth.ts
89
+ var import_react2 = require("next-auth/react");
90
+ function useAuth() {
91
+ return (0, import_react2.useSession)();
92
+ }
93
+
94
+ // src/setup/hooks/use-i18n.ts
95
+ var import_next_intl2 = require("next-intl");
96
+ function useI18n() {
97
+ return (0, import_next_intl2.useIntl)();
98
+ }
99
+
100
+ // src/setup/hooks/use-fetch.ts
101
+ var import_swr2 = __toESM(require("swr"));
102
+ function useFetch(url, options) {
103
+ const { data, error, isLoading } = (0, import_swr2.default)(url, options);
104
+ return {
105
+ data,
106
+ isLoading,
107
+ error,
108
+ isError: !!error
109
+ };
110
+ }
111
+
112
+ // src/setup/lib/prisma.ts
113
+ var import_client = require("@prisma/client");
114
+ var globalForPrisma = global;
115
+ var prisma = globalForPrisma.prisma || new import_client.PrismaClient({
116
+ log: process.env.NODE_ENV === "development" ? ["query"] : []
117
+ });
118
+ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
119
+ // Annotate the CommonJS export names for ESM import in node:
120
+ 0 && (module.exports = {
121
+ AuthProvider,
122
+ I18nProvider,
123
+ RootProvider,
124
+ SWRProvider,
125
+ prisma,
126
+ useAuth,
127
+ useFetch,
128
+ useI18n
129
+ });
130
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/setup/index.ts","../src/setup/providers/auth-provider.tsx","../src/setup/providers/i18n-provider.tsx","../src/setup/providers/swr-provider.tsx","../src/setup/providers/root-provider.tsx","../src/setup/hooks/use-auth.ts","../src/setup/hooks/use-i18n.ts","../src/setup/hooks/use-fetch.ts","../src/setup/lib/prisma.ts"],"sourcesContent":["// Setup Providers\nexport * from './providers'\n\n// Setup Hooks\nexport * from './hooks'\n\n// Setup Utilities\nexport * from './lib'\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { SessionProvider } from 'next-auth/react'\n\ninterface AuthProviderProps {\n children: ReactNode\n session?: any\n}\n\n/**\n * AuthProvider - Wraps your app with NextAuth SessionProvider\n * \n * Usage:\n * ```tsx\n * import { AuthProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <AuthProvider session={session}>\n * <App />\n * </AuthProvider>\n * ```\n */\nexport function AuthProvider({ children, session }: AuthProviderProps) {\n return (\n <SessionProvider session={session}>\n {children}\n </SessionProvider>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { IntlProvider } from 'next-intl'\n\ninterface I18nProviderProps {\n children: ReactNode\n locale: string\n messages: Record<string, any>\n timeZone?: string\n}\n\n/**\n * I18nProvider - Wraps your app with next-intl IntlProvider\n * \n * Usage:\n * ```tsx\n * import { I18nProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <I18nProvider locale={locale} messages={messages} timeZone=\"Asia/Dhaka\">\n * <App />\n * </I18nProvider>\n * ```\n */\nexport function I18nProvider({ \n children, \n locale, \n messages, \n timeZone = 'UTC' \n}: I18nProviderProps) {\n return (\n <IntlProvider locale={locale} messages={messages} timeZone={timeZone}>\n {children}\n </IntlProvider>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { SWRConfig } from 'swr'\n\ninterface SWRProviderProps {\n children: ReactNode\n}\n\nconst DEFAULT_SWR_CONFIG = {\n revalidateOnFocus: false,\n revalidateOnReconnect: true,\n dedupingInterval: 60000,\n focusThrottleInterval: 300000,\n}\n\n/**\n * SWRProvider - Wraps your app with optimized SWR config\n * \n * Default config:\n * - revalidateOnFocus: false (no refresh on window focus)\n * - revalidateOnReconnect: true (refresh when network reconnects)\n * - dedupingInterval: 60s (deduplicate requests within 60s)\n * - focusThrottleInterval: 5min (throttle focus revalidation)\n * \n * Usage:\n * ```tsx\n * import { SWRProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <SWRProvider>\n * <App />\n * </SWRProvider>\n * ```\n */\nexport function SWRProvider({ children }: SWRProviderProps) {\n return (\n <SWRConfig value={{ fetcher: (url) => fetch(url).then(r => r.json()), ...DEFAULT_SWR_CONFIG }}>\n {children}\n </SWRConfig>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { AuthProvider } from './auth-provider'\nimport { I18nProvider } from './i18n-provider'\nimport { SWRProvider } from './swr-provider'\n\ninterface RootProviderProps {\n children: ReactNode\n session?: any\n locale: string\n messages: Record<string, any>\n timeZone?: string\n}\n\n/**\n * RootProvider - Single provider that combines Auth + I18n + SWR\n * \n * Usage in layout.tsx:\n * ```tsx\n * import { RootProvider } from '@webdevarif/dashui-setup'\n * \n * export default function RootLayout({ \n * children, \n * params: { locale } \n * }: {\n * children: React.ReactNode\n * params: { locale: string }\n * }) {\n * const session = await auth()\n * const messages = await import(`../../messages/${locale}.json`)\n * \n * return (\n * <html lang={locale}>\n * <body>\n * <RootProvider \n * session={session}\n * locale={locale}\n * messages={messages.default}\n * >\n * {children}\n * </RootProvider>\n * </body>\n * </html>\n * )\n * }\n * ```\n */\nexport function RootProvider({\n children,\n session,\n locale,\n messages,\n timeZone,\n}: RootProviderProps) {\n return (\n <AuthProvider session={session}>\n <I18nProvider locale={locale} messages={messages} timeZone={timeZone}>\n <SWRProvider>\n {children}\n </SWRProvider>\n </I18nProvider>\n </AuthProvider>\n )\n}\n","import { useSession } from 'next-auth/react'\n\n/**\n * useAuth - Hook to access current session and auth methods\n * \n * Returns the NextAuth useSession hook result\n * \n * Usage:\n * ```tsx\n * import { useAuth } from '@webdevarif/dashui-setup/hooks'\n * \n * function Profile() {\n * const { data: session, status } = useAuth()\n * \n * if (status === 'loading') return <div>Loading...</div>\n * if (status === 'unauthenticated') return <div>Not logged in</div>\n * \n * return <div>Welcome {session?.user?.name}</div>\n * }\n * ```\n */\nexport function useAuth() {\n return useSession()\n}\n","import { useIntl } from 'next-intl'\n\n/**\n * useI18n - Hook to access translations\n * \n * Returns the next-intl useIntl hook result\n * \n * Usage:\n * ```tsx\n * import { useI18n } from '@webdevarif/dashui-setup/hooks'\n * \n * function Header() {\n * const t = useI18n()\n * \n * return <h1>{t('home.title')}</h1>\n * }\n * ```\n */\nexport function useI18n() {\n return useIntl()\n}\n","import useSWR from 'swr'\n\n/**\n * useFetch - Simplified hook for data fetching with SWR\n * \n * Returns SWR hook result with built-in error handling\n * \n * Usage:\n * ```tsx\n * import { useFetch } from '@webdevarif/dashui-setup/hooks'\n * \n * function UserList() {\n * const { data, isLoading, error } = useFetch('/api/users')\n * \n * if (isLoading) return <div>Loading...</div>\n * if (error) return <div>Error: {error.message}</div>\n * \n * return (\n * <ul>\n * {data?.map(user => <li key={user.id}>{user.name}</li>)}\n * </ul>\n * )\n * }\n * ```\n */\nexport function useFetch<T = any>(\n url: string | null | undefined,\n options?: any\n) {\n const { data, error, isLoading } = useSWR<T>(url, options)\n\n return {\n data,\n isLoading,\n error,\n isError: !!error,\n }\n}\n","import { PrismaClient } from '@prisma/client'\n\n/**\n * Prisma Singleton - Reuse PrismaClient across requests\n * \n * In development: Hot reload can create multiple PrismaClient instances\n * This singleton pattern prevents connection pool exhaustion\n * \n * Usage in lib/prisma.ts:\n * ```tsx\n * export { prisma } from '@webdevarif/dashui-setup/lib'\n * ```\n * \n * Then use in API routes:\n * ```tsx\n * import { prisma } from '@/lib/prisma'\n * \n * export async function GET() {\n * const users = await prisma.user.findMany()\n * return Response.json(users)\n * }\n * ```\n */\n\nconst globalForPrisma = global as unknown as { prisma: PrismaClient }\n\nexport const prisma =\n globalForPrisma.prisma ||\n new PrismaClient({\n log: process.env.NODE_ENV === 'development' ? ['query'] : [],\n })\n\nif (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACGA,mBAAgC;AAqB5B;AAFG,SAAS,aAAa,EAAE,UAAU,QAAQ,GAAsB;AACrE,SACE,4CAAC,gCAAgB,SACd,UACH;AAEJ;;;ACzBA,uBAA6B;AA4BzB,IAAAA,sBAAA;AAPG,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAAsB;AACpB,SACE,6CAAC,iCAAa,QAAgB,UAAoB,UAC/C,UACH;AAEJ;;;AChCA,iBAA0B;AAiCtB,IAAAC,sBAAA;AA3BJ,IAAM,qBAAqB;AAAA,EACzB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AACzB;AAoBO,SAAS,YAAY,EAAE,SAAS,GAAqB;AAC1D,SACE,6CAAC,wBAAU,OAAO,EAAE,SAAS,CAAC,QAAQ,MAAM,GAAG,EAAE,KAAK,OAAK,EAAE,KAAK,CAAC,GAAG,GAAG,mBAAmB,GACzF,UACH;AAEJ;;;ACkBQ,IAAAC,sBAAA;AAVD,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,SACE,6CAAC,gBAAa,SACZ,uDAAC,gBAAa,QAAgB,UAAoB,UAChD,uDAAC,eACE,UACH,GACF,GACF;AAEJ;;;AChEA,IAAAC,gBAA2B;AAqBpB,SAAS,UAAU;AACxB,aAAO,0BAAW;AACpB;;;ACvBA,IAAAC,oBAAwB;AAkBjB,SAAS,UAAU;AACxB,aAAO,2BAAQ;AACjB;;;ACpBA,IAAAC,cAAmB;AAyBZ,SAAS,SACd,KACA,SACA;AACA,QAAM,EAAE,MAAM,OAAO,UAAU,QAAI,YAAAC,SAAU,KAAK,OAAO;AAEzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,CAAC,CAAC;AAAA,EACb;AACF;;;ACrCA,oBAA6B;AAwB7B,IAAM,kBAAkB;AAEjB,IAAM,SACX,gBAAgB,UAChB,IAAI,2BAAa;AAAA,EACf,KAAK,QAAQ,IAAI,aAAa,gBAAgB,CAAC,OAAO,IAAI,CAAC;AAC7D,CAAC;AAEH,IAAI,QAAQ,IAAI,aAAa,aAAc,iBAAgB,SAAS;","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_next_intl","import_swr","useSWR"]}
package/dist/setup.mjs ADDED
@@ -0,0 +1,86 @@
1
+ // src/setup/providers/auth-provider.tsx
2
+ import { SessionProvider } from "next-auth/react";
3
+ import { jsx } from "react/jsx-runtime";
4
+ function AuthProvider({ children, session }) {
5
+ return /* @__PURE__ */ jsx(SessionProvider, { session, children });
6
+ }
7
+
8
+ // src/setup/providers/i18n-provider.tsx
9
+ import { IntlProvider } from "next-intl";
10
+ import { jsx as jsx2 } from "react/jsx-runtime";
11
+ function I18nProvider({
12
+ children,
13
+ locale,
14
+ messages,
15
+ timeZone = "UTC"
16
+ }) {
17
+ return /* @__PURE__ */ jsx2(IntlProvider, { locale, messages, timeZone, children });
18
+ }
19
+
20
+ // src/setup/providers/swr-provider.tsx
21
+ import { SWRConfig } from "swr";
22
+ import { jsx as jsx3 } from "react/jsx-runtime";
23
+ var DEFAULT_SWR_CONFIG = {
24
+ revalidateOnFocus: false,
25
+ revalidateOnReconnect: true,
26
+ dedupingInterval: 6e4,
27
+ focusThrottleInterval: 3e5
28
+ };
29
+ function SWRProvider({ children }) {
30
+ return /* @__PURE__ */ jsx3(SWRConfig, { value: { fetcher: (url) => fetch(url).then((r) => r.json()), ...DEFAULT_SWR_CONFIG }, children });
31
+ }
32
+
33
+ // src/setup/providers/root-provider.tsx
34
+ import { jsx as jsx4 } from "react/jsx-runtime";
35
+ function RootProvider({
36
+ children,
37
+ session,
38
+ locale,
39
+ messages,
40
+ timeZone
41
+ }) {
42
+ return /* @__PURE__ */ jsx4(AuthProvider, { session, children: /* @__PURE__ */ jsx4(I18nProvider, { locale, messages, timeZone, children: /* @__PURE__ */ jsx4(SWRProvider, { children }) }) });
43
+ }
44
+
45
+ // src/setup/hooks/use-auth.ts
46
+ import { useSession } from "next-auth/react";
47
+ function useAuth() {
48
+ return useSession();
49
+ }
50
+
51
+ // src/setup/hooks/use-i18n.ts
52
+ import { useIntl } from "next-intl";
53
+ function useI18n() {
54
+ return useIntl();
55
+ }
56
+
57
+ // src/setup/hooks/use-fetch.ts
58
+ import useSWR from "swr";
59
+ function useFetch(url, options) {
60
+ const { data, error, isLoading } = useSWR(url, options);
61
+ return {
62
+ data,
63
+ isLoading,
64
+ error,
65
+ isError: !!error
66
+ };
67
+ }
68
+
69
+ // src/setup/lib/prisma.ts
70
+ import { PrismaClient } from "@prisma/client";
71
+ var globalForPrisma = global;
72
+ var prisma = globalForPrisma.prisma || new PrismaClient({
73
+ log: process.env.NODE_ENV === "development" ? ["query"] : []
74
+ });
75
+ if (process.env.NODE_ENV !== "production") globalForPrisma.prisma = prisma;
76
+ export {
77
+ AuthProvider,
78
+ I18nProvider,
79
+ RootProvider,
80
+ SWRProvider,
81
+ prisma,
82
+ useAuth,
83
+ useFetch,
84
+ useI18n
85
+ };
86
+ //# sourceMappingURL=setup.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/setup/providers/auth-provider.tsx","../src/setup/providers/i18n-provider.tsx","../src/setup/providers/swr-provider.tsx","../src/setup/providers/root-provider.tsx","../src/setup/hooks/use-auth.ts","../src/setup/hooks/use-i18n.ts","../src/setup/hooks/use-fetch.ts","../src/setup/lib/prisma.ts"],"sourcesContent":["'use client'\n\nimport { ReactNode } from 'react'\nimport { SessionProvider } from 'next-auth/react'\n\ninterface AuthProviderProps {\n children: ReactNode\n session?: any\n}\n\n/**\n * AuthProvider - Wraps your app with NextAuth SessionProvider\n * \n * Usage:\n * ```tsx\n * import { AuthProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <AuthProvider session={session}>\n * <App />\n * </AuthProvider>\n * ```\n */\nexport function AuthProvider({ children, session }: AuthProviderProps) {\n return (\n <SessionProvider session={session}>\n {children}\n </SessionProvider>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { IntlProvider } from 'next-intl'\n\ninterface I18nProviderProps {\n children: ReactNode\n locale: string\n messages: Record<string, any>\n timeZone?: string\n}\n\n/**\n * I18nProvider - Wraps your app with next-intl IntlProvider\n * \n * Usage:\n * ```tsx\n * import { I18nProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <I18nProvider locale={locale} messages={messages} timeZone=\"Asia/Dhaka\">\n * <App />\n * </I18nProvider>\n * ```\n */\nexport function I18nProvider({ \n children, \n locale, \n messages, \n timeZone = 'UTC' \n}: I18nProviderProps) {\n return (\n <IntlProvider locale={locale} messages={messages} timeZone={timeZone}>\n {children}\n </IntlProvider>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { SWRConfig } from 'swr'\n\ninterface SWRProviderProps {\n children: ReactNode\n}\n\nconst DEFAULT_SWR_CONFIG = {\n revalidateOnFocus: false,\n revalidateOnReconnect: true,\n dedupingInterval: 60000,\n focusThrottleInterval: 300000,\n}\n\n/**\n * SWRProvider - Wraps your app with optimized SWR config\n * \n * Default config:\n * - revalidateOnFocus: false (no refresh on window focus)\n * - revalidateOnReconnect: true (refresh when network reconnects)\n * - dedupingInterval: 60s (deduplicate requests within 60s)\n * - focusThrottleInterval: 5min (throttle focus revalidation)\n * \n * Usage:\n * ```tsx\n * import { SWRProvider } from '@webdevarif/dashui-setup/providers'\n * \n * <SWRProvider>\n * <App />\n * </SWRProvider>\n * ```\n */\nexport function SWRProvider({ children }: SWRProviderProps) {\n return (\n <SWRConfig value={{ fetcher: (url) => fetch(url).then(r => r.json()), ...DEFAULT_SWR_CONFIG }}>\n {children}\n </SWRConfig>\n )\n}\n","'use client'\n\nimport { ReactNode } from 'react'\nimport { AuthProvider } from './auth-provider'\nimport { I18nProvider } from './i18n-provider'\nimport { SWRProvider } from './swr-provider'\n\ninterface RootProviderProps {\n children: ReactNode\n session?: any\n locale: string\n messages: Record<string, any>\n timeZone?: string\n}\n\n/**\n * RootProvider - Single provider that combines Auth + I18n + SWR\n * \n * Usage in layout.tsx:\n * ```tsx\n * import { RootProvider } from '@webdevarif/dashui-setup'\n * \n * export default function RootLayout({ \n * children, \n * params: { locale } \n * }: {\n * children: React.ReactNode\n * params: { locale: string }\n * }) {\n * const session = await auth()\n * const messages = await import(`../../messages/${locale}.json`)\n * \n * return (\n * <html lang={locale}>\n * <body>\n * <RootProvider \n * session={session}\n * locale={locale}\n * messages={messages.default}\n * >\n * {children}\n * </RootProvider>\n * </body>\n * </html>\n * )\n * }\n * ```\n */\nexport function RootProvider({\n children,\n session,\n locale,\n messages,\n timeZone,\n}: RootProviderProps) {\n return (\n <AuthProvider session={session}>\n <I18nProvider locale={locale} messages={messages} timeZone={timeZone}>\n <SWRProvider>\n {children}\n </SWRProvider>\n </I18nProvider>\n </AuthProvider>\n )\n}\n","import { useSession } from 'next-auth/react'\n\n/**\n * useAuth - Hook to access current session and auth methods\n * \n * Returns the NextAuth useSession hook result\n * \n * Usage:\n * ```tsx\n * import { useAuth } from '@webdevarif/dashui-setup/hooks'\n * \n * function Profile() {\n * const { data: session, status } = useAuth()\n * \n * if (status === 'loading') return <div>Loading...</div>\n * if (status === 'unauthenticated') return <div>Not logged in</div>\n * \n * return <div>Welcome {session?.user?.name}</div>\n * }\n * ```\n */\nexport function useAuth() {\n return useSession()\n}\n","import { useIntl } from 'next-intl'\n\n/**\n * useI18n - Hook to access translations\n * \n * Returns the next-intl useIntl hook result\n * \n * Usage:\n * ```tsx\n * import { useI18n } from '@webdevarif/dashui-setup/hooks'\n * \n * function Header() {\n * const t = useI18n()\n * \n * return <h1>{t('home.title')}</h1>\n * }\n * ```\n */\nexport function useI18n() {\n return useIntl()\n}\n","import useSWR from 'swr'\n\n/**\n * useFetch - Simplified hook for data fetching with SWR\n * \n * Returns SWR hook result with built-in error handling\n * \n * Usage:\n * ```tsx\n * import { useFetch } from '@webdevarif/dashui-setup/hooks'\n * \n * function UserList() {\n * const { data, isLoading, error } = useFetch('/api/users')\n * \n * if (isLoading) return <div>Loading...</div>\n * if (error) return <div>Error: {error.message}</div>\n * \n * return (\n * <ul>\n * {data?.map(user => <li key={user.id}>{user.name}</li>)}\n * </ul>\n * )\n * }\n * ```\n */\nexport function useFetch<T = any>(\n url: string | null | undefined,\n options?: any\n) {\n const { data, error, isLoading } = useSWR<T>(url, options)\n\n return {\n data,\n isLoading,\n error,\n isError: !!error,\n }\n}\n","import { PrismaClient } from '@prisma/client'\n\n/**\n * Prisma Singleton - Reuse PrismaClient across requests\n * \n * In development: Hot reload can create multiple PrismaClient instances\n * This singleton pattern prevents connection pool exhaustion\n * \n * Usage in lib/prisma.ts:\n * ```tsx\n * export { prisma } from '@webdevarif/dashui-setup/lib'\n * ```\n * \n * Then use in API routes:\n * ```tsx\n * import { prisma } from '@/lib/prisma'\n * \n * export async function GET() {\n * const users = await prisma.user.findMany()\n * return Response.json(users)\n * }\n * ```\n */\n\nconst globalForPrisma = global as unknown as { prisma: PrismaClient }\n\nexport const prisma =\n globalForPrisma.prisma ||\n new PrismaClient({\n log: process.env.NODE_ENV === 'development' ? ['query'] : [],\n })\n\nif (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma\n"],"mappings":";AAGA,SAAS,uBAAuB;AAqB5B;AAFG,SAAS,aAAa,EAAE,UAAU,QAAQ,GAAsB;AACrE,SACE,oBAAC,mBAAgB,SACd,UACH;AAEJ;;;ACzBA,SAAS,oBAAoB;AA4BzB,gBAAAA,YAAA;AAPG,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW;AACb,GAAsB;AACpB,SACE,gBAAAA,KAAC,gBAAa,QAAgB,UAAoB,UAC/C,UACH;AAEJ;;;AChCA,SAAS,iBAAiB;AAiCtB,gBAAAC,YAAA;AA3BJ,IAAM,qBAAqB;AAAA,EACzB,mBAAmB;AAAA,EACnB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,uBAAuB;AACzB;AAoBO,SAAS,YAAY,EAAE,SAAS,GAAqB;AAC1D,SACE,gBAAAA,KAAC,aAAU,OAAO,EAAE,SAAS,CAAC,QAAQ,MAAM,GAAG,EAAE,KAAK,OAAK,EAAE,KAAK,CAAC,GAAG,GAAG,mBAAmB,GACzF,UACH;AAEJ;;;ACkBQ,gBAAAC,YAAA;AAVD,SAAS,aAAa;AAAA,EAC3B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF,GAAsB;AACpB,SACE,gBAAAA,KAAC,gBAAa,SACZ,0BAAAA,KAAC,gBAAa,QAAgB,UAAoB,UAChD,0BAAAA,KAAC,eACE,UACH,GACF,GACF;AAEJ;;;AChEA,SAAS,kBAAkB;AAqBpB,SAAS,UAAU;AACxB,SAAO,WAAW;AACpB;;;ACvBA,SAAS,eAAe;AAkBjB,SAAS,UAAU;AACxB,SAAO,QAAQ;AACjB;;;ACpBA,OAAO,YAAY;AAyBZ,SAAS,SACd,KACA,SACA;AACA,QAAM,EAAE,MAAM,OAAO,UAAU,IAAI,OAAU,KAAK,OAAO;AAEzD,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACA,SAAS,CAAC,CAAC;AAAA,EACb;AACF;;;ACrCA,SAAS,oBAAoB;AAwB7B,IAAM,kBAAkB;AAEjB,IAAM,SACX,gBAAgB,UAChB,IAAI,aAAa;AAAA,EACf,KAAK,QAAQ,IAAI,aAAa,gBAAgB,CAAC,OAAO,IAAI,CAAC;AAC7D,CAAC;AAEH,IAAI,QAAQ,IAAI,aAAa,aAAc,iBAAgB,SAAS;","names":["jsx","jsx","jsx"]}
package/package.json CHANGED
@@ -1,96 +1,94 @@
1
- {
2
- "name": "@webdevarif/dashui",
3
- "version": "1.2.4",
4
- "description": "Universal dashboard UI component library — forms, inputs, media, tables, layouts. Modular categories: primitives, forms, dashboard, media, data, editors, ecommerce, cms.",
5
- "keywords": [
6
- "dashboard",
7
- "ui",
8
- "components",
9
- "design-system",
10
- "react",
11
- "tailwind"
12
- ],
13
- "author": "webdevarif",
14
- "license": "MIT",
15
- "homepage": "https://dashui.webdevarif.com",
16
- "repository": {
17
- "type": "git",
18
- "url": "https://github.com/webdevarif/dashui"
19
- },
20
- "main": "./dist/index.js",
21
- "module": "./dist/index.mjs",
22
- "types": "./dist/index.d.ts",
23
- "exports": {
24
- ".": {
25
- "types": "./dist/index.d.ts",
26
- "import": "./dist/index.mjs",
27
- "require": "./dist/index.js"
28
- },
29
- "./styles": "./dist/styles/globals.css",
30
- "./tokens/primitives": "./dist/tokens/primitives.css",
31
- "./tokens/light": "./dist/tokens/semantic-light.css",
32
- "./tokens/dark": "./dist/tokens/semantic-dark.css",
33
- "./tokens/schemes": "./dist/tokens/storefront-schemes.css"
34
- },
35
- "files": [
36
- "dist",
37
- "templates",
38
- "README.md"
39
- ],
40
- "scripts": {
41
- "build": "tsup \u0026\u0026 cpx \"src/styles/**/*.css\" dist/styles \u0026\u0026 cpx \"src/tokens/**/*.css\" dist/tokens",
42
- "dev": "tsup --watch",
43
- "lint": "eslint src --ext .ts,.tsx",
44
- "typecheck": "tsc --noEmit"
45
- },
46
- "peerDependencies": {
47
- "next": "\u003e=14",
48
- "next-themes": "\u003e=0.2",
49
- "react": "\u003e=18",
50
- "react-dom": "\u003e=18"
51
- },
52
- "dependencies": {
53
- "@radix-ui/react-checkbox": "^1.1.3",
54
- "@radix-ui/react-dialog": "^1.1.4",
55
- "@radix-ui/react-dropdown-menu": "^2.1.4",
56
- "@radix-ui/react-label": "^2.1.1",
57
- "@radix-ui/react-popover": "^1.1.4",
58
- "@radix-ui/react-select": "^2.1.4",
59
- "@radix-ui/react-separator": "^1.1.1",
60
- "@radix-ui/react-slider": "^1.3.6",
61
- "@radix-ui/react-slot": "^1.1.1",
62
- "@radix-ui/react-switch": "^1.1.2",
63
- "@radix-ui/react-tabs": "^1.1.2",
64
- "@radix-ui/react-tooltip": "^1.1.6",
65
- "class-variance-authority": "^0.7.1",
66
- "clsx": "^2.1.1",
67
- "color": "^5.0.3",
68
- "lucide-react": "^0.469.0",
69
- "next-themes": "\u003e=0.2",
70
- "react-colorful": "^5.6.1",
71
- "sonner": "^1.7.1",
72
- "tailwind-merge": "^2.6.0",
73
- "@tiptap/react": "^2.1.0",
74
- "@tiptap/starter-kit": "^2.1.0",
75
- "@tiptap/extension-placeholder": "^2.1.0"
76
- },
77
- "devDependencies": {
78
- "@types/color": "^4.2.1",
79
- "@types/react": "^18",
80
- "@types/react-dom": "^18",
81
- "cpx2": "^8.0.0",
82
- "tailwindcss": "^3.4.17",
83
- "tsup": "^8.3.5",
84
- "typescript": "^5"
85
- },
86
- "publishConfig": {
87
- "access": "public"
88
- }
89
- }
90
-
91
-
92
-
93
-
94
-
95
-
1
+ {
2
+ "name": "@webdevarif/dashui",
3
+ "version": "1.2.7",
4
+ "description": "Universal dashboard UI component library — forms, inputs, media, tables, layouts. Modular categories: primitives, forms, dashboard, media, data, editors, ecommerce, cms.",
5
+ "keywords": [
6
+ "dashboard",
7
+ "ui",
8
+ "components",
9
+ "design-system",
10
+ "react",
11
+ "tailwind"
12
+ ],
13
+ "author": "webdevarif",
14
+ "license": "MIT",
15
+ "homepage": "https://dashui.webdevarif.com",
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "https://github.com/webdevarif/dashui"
19
+ },
20
+ "main": "./dist/index.js",
21
+ "module": "./dist/index.mjs",
22
+ "types": "./dist/index.d.ts",
23
+ "exports": {
24
+ ".": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/index.mjs",
27
+ "require": "./dist/index.js"
28
+ },
29
+ "./styles": "./dist/styles/globals.css",
30
+ "./setup": {
31
+ "import": "./dist/setup.mjs",
32
+ "require": "./dist/setup.js"
33
+ },
34
+ "./tokens/primitives": "./dist/tokens/primitives.css",
35
+ "./tokens/light": "./dist/tokens/semantic-light.css",
36
+ "./tokens/dark": "./dist/tokens/semantic-dark.css",
37
+ "./tokens/schemes": "./dist/tokens/storefront-schemes.css"
38
+ },
39
+ "files": [
40
+ "dist",
41
+ "templates",
42
+ "README.md"
43
+ ],
44
+ "scripts": {
45
+ "build": "tsup && cpx \"src/styles/**/*.css\" dist/styles && cpx \"src/tokens/**/*.css\" dist/tokens",
46
+ "dev": "tsup --watch",
47
+ "lint": "eslint src --ext .ts,.tsx",
48
+ "typecheck": "tsc --noEmit"
49
+ },
50
+ "peerDependencies": {
51
+ "next": ">=14",
52
+ "next-themes": ">=0.2",
53
+ "react": ">=18",
54
+ "react-dom": ">=18"
55
+ },
56
+ "dependencies": {
57
+ "@radix-ui/react-checkbox": "^1.1.3",
58
+ "@radix-ui/react-dialog": "^1.1.4",
59
+ "@radix-ui/react-dropdown-menu": "^2.1.4",
60
+ "@radix-ui/react-label": "^2.1.1",
61
+ "@radix-ui/react-popover": "^1.1.4",
62
+ "@radix-ui/react-select": "^2.1.4",
63
+ "@radix-ui/react-separator": "^1.1.1",
64
+ "@radix-ui/react-slider": "^1.3.6",
65
+ "@radix-ui/react-slot": "^1.1.1",
66
+ "@radix-ui/react-switch": "^1.1.2",
67
+ "@radix-ui/react-tabs": "^1.1.2",
68
+ "@radix-ui/react-tooltip": "^1.1.6",
69
+ "class-variance-authority": "^0.7.1",
70
+ "clsx": "^2.1.1",
71
+ "color": "^5.0.3",
72
+ "lucide-react": "^0.469.0",
73
+ "next-themes": ">=0.2",
74
+ "react-colorful": "^5.6.1",
75
+ "sonner": "^1.7.1",
76
+ "tailwind-merge": "^2.6.0",
77
+ "@tiptap/react": "^2.1.0",
78
+ "@tiptap/starter-kit": "^2.1.0",
79
+ "@tiptap/extension-placeholder": "^2.1.0"
80
+ },
81
+ "devDependencies": {
82
+ "@types/color": "^4.2.1",
83
+ "@types/react": "^18",
84
+ "@types/react-dom": "^18",
85
+ "cpx2": "^8.0.0",
86
+ "tailwindcss": "^3.4.17",
87
+ "tsup": "^8.3.5",
88
+ "typescript": "^5"
89
+ },
90
+ "publishConfig": {
91
+ "access": "public"
92
+ }
93
+ }
96
94