@chaaskit/client 0.1.0 → 0.1.1
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/lib/index.js +53 -80
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/routes/AcceptInviteRoute.js +1 -1
- package/dist/lib/routes/AcceptInviteRoute.js.map +1 -1
- package/dist/lib/routes/AdminDashboardRoute.js +1 -1
- package/dist/lib/routes/AdminDashboardRoute.js.map +1 -1
- package/dist/lib/routes/AdminTeamRoute.js +1 -1
- package/dist/lib/routes/AdminTeamRoute.js.map +1 -1
- package/dist/lib/routes/AdminTeamsRoute.js +1 -1
- package/dist/lib/routes/AdminTeamsRoute.js.map +1 -1
- package/dist/lib/routes/AdminUsersRoute.js +1 -1
- package/dist/lib/routes/AdminUsersRoute.js.map +1 -1
- package/dist/lib/routes/ApiKeysRoute.js +1 -1
- package/dist/lib/routes/ApiKeysRoute.js.map +1 -1
- package/dist/lib/routes/AutomationsRoute.js +1 -1
- package/dist/lib/routes/AutomationsRoute.js.map +1 -1
- package/dist/lib/routes/ChatRoute.js +1 -1
- package/dist/lib/routes/ChatRoute.js.map +1 -1
- package/dist/lib/routes/DocumentsRoute.js +1 -1
- package/dist/lib/routes/DocumentsRoute.js.map +1 -1
- package/dist/lib/routes/OAuthConsentRoute.js +1 -1
- package/dist/lib/routes/OAuthConsentRoute.js.map +1 -1
- package/dist/lib/routes/PricingRoute.js +1 -1
- package/dist/lib/routes/PricingRoute.js.map +1 -1
- package/dist/lib/routes/PrivacyRoute.js +1 -1
- package/dist/lib/routes/PrivacyRoute.js.map +1 -1
- package/dist/lib/routes/TeamSettingsRoute.js +1 -1
- package/dist/lib/routes/TeamSettingsRoute.js.map +1 -1
- package/dist/lib/routes/TermsRoute.js +1 -1
- package/dist/lib/routes/TermsRoute.js.map +1 -1
- package/dist/lib/routes/VerifyEmailRoute.js +1 -1
- package/dist/lib/routes/VerifyEmailRoute.js.map +1 -1
- package/dist/lib/ssr-utils.js +44 -1
- package/dist/lib/ssr-utils.js.map +1 -1
- package/dist/lib/ssr.js +23 -0
- package/dist/lib/ssr.js.map +1 -1
- package/dist/lib/styles.css +21 -62
- package/package.json +7 -2
- package/src/contexts/ConfigContext.tsx +42 -4
- package/src/contexts/ThemeContext.tsx +39 -68
- package/src/index.tsx +8 -2
- package/src/routes/AcceptInviteRoute.tsx +1 -1
- package/src/routes/AdminDashboardRoute.tsx +1 -1
- package/src/routes/AdminTeamRoute.tsx +1 -1
- package/src/routes/AdminTeamsRoute.tsx +1 -1
- package/src/routes/AdminUsersRoute.tsx +1 -1
- package/src/routes/ApiKeysRoute.tsx +1 -1
- package/src/routes/AutomationsRoute.tsx +1 -1
- package/src/routes/ChatRoute.tsx +2 -1
- package/src/routes/DocumentsRoute.tsx +1 -1
- package/src/routes/OAuthConsentRoute.tsx +1 -1
- package/src/routes/PricingRoute.tsx +1 -1
- package/src/routes/PrivacyRoute.tsx +1 -1
- package/src/routes/TeamSettingsRoute.tsx +1 -1
- package/src/routes/TermsRoute.tsx +1 -1
- package/src/routes/VerifyEmailRoute.tsx +1 -1
- package/src/ssr-utils.tsx +80 -1
- package/src/ssr.ts +59 -0
- package/src/styles/index.css +16 -63
- package/src/tailwind-preset.js +360 -0
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Accept Invitation" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AcceptInviteRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(AcceptInvitePage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AcceptInviteRoute.js","sources":["../../../src/routes/AcceptInviteRoute.tsx"],"sourcesContent":["/**\n * Accept Invite Route - Team invitation acceptance\n */\nimport { ChatProviders } from '../index';\nimport AcceptInvitePage from '../pages/AcceptInvitePage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Accept Invitation' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AcceptInviteRoute.js","sources":["../../../src/routes/AcceptInviteRoute.tsx"],"sourcesContent":["/**\n * Accept Invite Route - Team invitation acceptance\n */\nimport { ChatProviders } from '../index';\nimport AcceptInvitePage from '../pages/AcceptInvitePage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Accept Invitation' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AcceptInviteRoute() {\n return (\n <ChatProviders>\n <AcceptInvitePage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,qBAAqB;AACxC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,oBAAoB;AAC1C,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,kBAAA,CAAA,CAAiB,GACpB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Admin Dashboard" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AdminDashboardRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(AdminDashboardPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminDashboardRoute.js","sources":["../../../src/routes/AdminDashboardRoute.tsx"],"sourcesContent":["/**\n * Admin Dashboard Route - Admin overview\n */\nimport { ChatProviders } from '../index';\nimport AdminDashboardPage from '../pages/AdminDashboardPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin Dashboard' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AdminDashboardRoute.js","sources":["../../../src/routes/AdminDashboardRoute.tsx"],"sourcesContent":["/**\n * Admin Dashboard Route - Admin overview\n */\nimport { ChatProviders } from '../index';\nimport AdminDashboardPage from '../pages/AdminDashboardPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin Dashboard' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AdminDashboardRoute() {\n return (\n <ChatProviders>\n <AdminDashboardPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,mBAAmB;AACtC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,sBAAsB;AAC5C,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,oBAAA,CAAA,CAAmB,GACtB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Admin - Team Details" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AdminTeamRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(AdminTeamPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminTeamRoute.js","sources":["../../../src/routes/AdminTeamRoute.tsx"],"sourcesContent":["/**\n * Admin Team Route - Single team management\n */\nimport { ChatProviders } from '../index';\nimport AdminTeamPage from '../pages/AdminTeamPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Team Details' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AdminTeamRoute.js","sources":["../../../src/routes/AdminTeamRoute.tsx"],"sourcesContent":["/**\n * Admin Team Route - Single team management\n */\nimport { ChatProviders } from '../index';\nimport AdminTeamPage from '../pages/AdminTeamPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Team Details' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AdminTeamRoute() {\n return (\n <ChatProviders>\n <AdminTeamPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,wBAAwB;AAC3C;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,iBAAiB;AACvC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,eAAA,CAAA,CAAc,GACjB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Admin - Teams" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AdminTeamsRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(AdminTeamsPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminTeamsRoute.js","sources":["../../../src/routes/AdminTeamsRoute.tsx"],"sourcesContent":["/**\n * Admin Teams Route - Team list management\n */\nimport { ChatProviders } from '../index';\nimport AdminTeamsPage from '../pages/AdminTeamsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Teams' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AdminTeamsRoute.js","sources":["../../../src/routes/AdminTeamsRoute.tsx"],"sourcesContent":["/**\n * Admin Teams Route - Team list management\n */\nimport { ChatProviders } from '../index';\nimport AdminTeamsPage from '../pages/AdminTeamsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Teams' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AdminTeamsRoute() {\n return (\n <ChatProviders>\n <AdminTeamsPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,iBAAiB;AACpC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,kBAAkB;AACxC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,gBAAA,CAAA,CAAe,GAClB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Admin - Users" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AdminUsersRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(AdminUsersPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AdminUsersRoute.js","sources":["../../../src/routes/AdminUsersRoute.tsx"],"sourcesContent":["/**\n * Admin Users Route - User management\n */\nimport { ChatProviders } from '../index';\nimport AdminUsersPage from '../pages/AdminUsersPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Users' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AdminUsersRoute.js","sources":["../../../src/routes/AdminUsersRoute.tsx"],"sourcesContent":["/**\n * Admin Users Route - User management\n */\nimport { ChatProviders } from '../index';\nimport AdminUsersPage from '../pages/AdminUsersPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Admin - Users' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AdminUsersRoute() {\n return (\n <ChatProviders>\n <AdminUsersPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,iBAAiB;AACpC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,kBAAkB;AACxC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,gBAAA,CAAA,CAAe,GAClB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "API Keys" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function ApiKeysRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(ApiKeysPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiKeysRoute.js","sources":["../../../src/routes/ApiKeysRoute.tsx"],"sourcesContent":["/**\n * API Keys Route - User API key management\n */\nimport { ChatProviders } from '../index';\nimport ApiKeysPage from '../pages/ApiKeysPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'API Keys' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"ApiKeysRoute.js","sources":["../../../src/routes/ApiKeysRoute.tsx"],"sourcesContent":["/**\n * API Keys Route - User API key management\n */\nimport { ChatProviders } from '../index';\nimport ApiKeysPage from '../pages/ApiKeysPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'API Keys' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function ApiKeysRoute() {\n return (\n <ChatProviders>\n <ApiKeysPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,YAAY;AAC/B;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,eAAe;AACrC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,aAAA,CAAA,CAAY,GACf;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Automations" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function AutomationsRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(ScheduledPromptsPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AutomationsRoute.js","sources":["../../../src/routes/AutomationsRoute.tsx"],"sourcesContent":["/**\n * Automations Route - Scheduled prompts management\n */\nimport { ChatProviders } from '../index';\nimport ScheduledPromptsPage from '../pages/ScheduledPromptsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Automations' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"AutomationsRoute.js","sources":["../../../src/routes/AutomationsRoute.tsx"],"sourcesContent":["/**\n * Automations Route - Scheduled prompts management\n */\nimport { ChatProviders } from '../index';\nimport ScheduledPromptsPage from '../pages/ScheduledPromptsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Automations' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function AutomationsRoute() {\n return (\n <ChatProviders>\n <ScheduledPromptsPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,eAAe;AAClC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,mBAAmB;AACzC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,sBAAA,CAAA,CAAqB,GACxB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Chat" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function ChatRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(MainLayout, { children: /* @__PURE__ */ jsx(ChatPage, {}) }) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ChatRoute.js","sources":["../../../src/routes/ChatRoute.tsx"],"sourcesContent":["/**\n * Chat Route - Main chat interface with sidebar\n * Wraps ChatPage with ChatProviders and MainLayout\n */\nimport { ChatProviders } from '../index';\nimport MainLayout from '../layouts/MainLayout';\nimport ChatPage from '../pages/ChatPage';\nimport { ChatLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Chat' }];\n}\n\nexport function links() {\n
|
|
1
|
+
{"version":3,"file":"ChatRoute.js","sources":["../../../src/routes/ChatRoute.tsx"],"sourcesContent":["/**\n * Chat Route - Main chat interface with sidebar\n * Wraps ChatPage with ChatProviders and MainLayout\n */\nimport { ChatProviders } from '../index';\nimport MainLayout from '../layouts/MainLayout';\nimport ChatPage from '../pages/ChatPage';\nimport { ChatLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Chat' }];\n}\n\nexport function links() {\n // CSS is bundled via app's Tailwind preset - no separate stylesheet needed\n return [];\n}\n\nexport default function ChatRoute() {\n return (\n <ChatProviders>\n <MainLayout>\n <ChatPage />\n </MainLayout>\n </ChatProviders>\n );\n}\n\nexport { ChatLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AASO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,QAAQ;AAC3B;AAEO,SAAS,QAAQ;AAEtB,SAAO,CAAA;AACT;AAEA,SAAwB,YAAY;AAClC,6BACG,eAAA,EACC,UAAA,oBAAC,cACC,UAAA,oBAAC,UAAA,EAAS,GACZ,EAAA,CACF;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Documents" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function DocumentsRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(DocumentsPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentsRoute.js","sources":["../../../src/routes/DocumentsRoute.tsx"],"sourcesContent":["/**\n * Documents Route - Document management\n */\nimport { ChatProviders } from '../index';\nimport DocumentsPage from '../pages/DocumentsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Documents' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"DocumentsRoute.js","sources":["../../../src/routes/DocumentsRoute.tsx"],"sourcesContent":["/**\n * Documents Route - Document management\n */\nimport { ChatProviders } from '../index';\nimport DocumentsPage from '../pages/DocumentsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Documents' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function DocumentsRoute() {\n return (\n <ChatProviders>\n <DocumentsPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,aAAa;AAChC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,iBAAiB;AACvC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,eAAA,CAAA,CAAc,GACjB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "OAuth Consent" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function OAuthConsentRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(OAuthConsentPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OAuthConsentRoute.js","sources":["../../../src/routes/OAuthConsentRoute.tsx"],"sourcesContent":["/**\n * OAuth Consent Route - OAuth authorization consent\n */\nimport { ChatProviders } from '../index';\nimport OAuthConsentPage from '../pages/OAuthConsentPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'OAuth Consent' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"OAuthConsentRoute.js","sources":["../../../src/routes/OAuthConsentRoute.tsx"],"sourcesContent":["/**\n * OAuth Consent Route - OAuth authorization consent\n */\nimport { ChatProviders } from '../index';\nimport OAuthConsentPage from '../pages/OAuthConsentPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'OAuth Consent' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function OAuthConsentRoute() {\n return (\n <ChatProviders>\n <OAuthConsentPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,iBAAiB;AACpC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,oBAAoB;AAC1C,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,kBAAA,CAAA,CAAiB,GACpB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Pricing" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function PricingRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(PricingPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PricingRoute.js","sources":["../../../src/routes/PricingRoute.tsx"],"sourcesContent":["/**\n * Pricing Route - Pricing/plans page\n */\nimport { ChatProviders } from '../index';\nimport PricingPage from '../pages/PricingPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Pricing' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"PricingRoute.js","sources":["../../../src/routes/PricingRoute.tsx"],"sourcesContent":["/**\n * Pricing Route - Pricing/plans page\n */\nimport { ChatProviders } from '../index';\nimport PricingPage from '../pages/PricingPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Pricing' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function PricingRoute() {\n return (\n <ChatProviders>\n <PricingPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,WAAW;AAC9B;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,eAAe;AACrC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,aAAA,CAAA,CAAY,GACf;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Privacy Policy" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function PrivacyRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(PrivacyPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrivacyRoute.js","sources":["../../../src/routes/PrivacyRoute.tsx"],"sourcesContent":["/**\n * Privacy Route - Privacy policy page\n */\nimport { ChatProviders } from '../index';\nimport PrivacyPage from '../pages/PrivacyPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Privacy Policy' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"PrivacyRoute.js","sources":["../../../src/routes/PrivacyRoute.tsx"],"sourcesContent":["/**\n * Privacy Route - Privacy policy page\n */\nimport { ChatProviders } from '../index';\nimport PrivacyPage from '../pages/PrivacyPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Privacy Policy' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function PrivacyRoute() {\n return (\n <ChatProviders>\n <PrivacyPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,kBAAkB;AACrC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,eAAe;AACrC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,aAAA,CAAA,CAAY,GACf;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Team Settings" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function TeamSettingsRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(TeamSettingsPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TeamSettingsRoute.js","sources":["../../../src/routes/TeamSettingsRoute.tsx"],"sourcesContent":["/**\n * Team Settings Route - Team management\n */\nimport { ChatProviders } from '../index';\nimport TeamSettingsPage from '../pages/TeamSettingsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Team Settings' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"TeamSettingsRoute.js","sources":["../../../src/routes/TeamSettingsRoute.tsx"],"sourcesContent":["/**\n * Team Settings Route - Team management\n */\nimport { ChatProviders } from '../index';\nimport TeamSettingsPage from '../pages/TeamSettingsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Team Settings' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function TeamSettingsRoute() {\n return (\n <ChatProviders>\n <TeamSettingsPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,iBAAiB;AACpC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,oBAAoB;AAC1C,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,kBAAA,CAAA,CAAiB,GACpB;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Terms of Service" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function TermsRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(TermsPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TermsRoute.js","sources":["../../../src/routes/TermsRoute.tsx"],"sourcesContent":["/**\n * Terms Route - Terms of service page\n */\nimport { ChatProviders } from '../index';\nimport TermsPage from '../pages/TermsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Terms of Service' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"TermsRoute.js","sources":["../../../src/routes/TermsRoute.tsx"],"sourcesContent":["/**\n * Terms Route - Terms of service page\n */\nimport { ChatProviders } from '../index';\nimport TermsPage from '../pages/TermsPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Terms of Service' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function TermsRoute() {\n return (\n <ChatProviders>\n <TermsPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,oBAAoB;AACvC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,aAAa;AACnC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,WAAA,CAAA,CAAU,GACb;AAEJ;"}
|
|
@@ -5,7 +5,7 @@ function meta() {
|
|
|
5
5
|
return [{ title: "Verify Email" }];
|
|
6
6
|
}
|
|
7
7
|
function links() {
|
|
8
|
-
return [
|
|
8
|
+
return [];
|
|
9
9
|
}
|
|
10
10
|
function VerifyEmailRoute() {
|
|
11
11
|
return /* @__PURE__ */ jsx(ChatProviders, { children: /* @__PURE__ */ jsx(VerifyEmailPage, {}) });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VerifyEmailRoute.js","sources":["../../../src/routes/VerifyEmailRoute.tsx"],"sourcesContent":["/**\n * Verify Email Route - Email verification page\n */\nimport { ChatProviders } from '../index';\nimport VerifyEmailPage from '../pages/VerifyEmailPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Verify Email' }];\n}\n\nexport function links() {\n return [
|
|
1
|
+
{"version":3,"file":"VerifyEmailRoute.js","sources":["../../../src/routes/VerifyEmailRoute.tsx"],"sourcesContent":["/**\n * Verify Email Route - Email verification page\n */\nimport { ChatProviders } from '../index';\nimport VerifyEmailPage from '../pages/VerifyEmailPage';\nimport { SimpleLoadingSkeleton } from '../components/LoadingSkeletons';\n\nexport function meta() {\n return [{ title: 'Verify Email' }];\n}\n\nexport function links() {\n return [];\n}\n\nexport default function VerifyEmailRoute() {\n return (\n <ChatProviders>\n <VerifyEmailPage />\n </ChatProviders>\n );\n}\n\nexport { SimpleLoadingSkeleton as LoadingSkeleton };\n"],"names":[],"mappings":";;;AAOO,SAAS,OAAO;AACrB,SAAO,CAAC,EAAE,OAAO,gBAAgB;AACnC;AAEO,SAAS,QAAQ;AACtB,SAAO,CAAA;AACT;AAEA,SAAwB,mBAAmB;AACzC,SACE,oBAAC,eAAA,EACC,UAAA,oBAAC,iBAAA,CAAA,CAAgB,GACnB;AAEJ;"}
|
package/dist/lib/ssr-utils.js
CHANGED
|
@@ -1,6 +1,48 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { lazy, Suspense } from "react";
|
|
3
3
|
import { a as ClientOnly, C as ChatLoadingSkeleton, S as SimpleLoadingSkeleton } from "./LoadingSkeletons-IcIC2JPq.js";
|
|
4
|
+
function ConfigScript({ config }) {
|
|
5
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _i;
|
|
6
|
+
const safeConfig = {
|
|
7
|
+
app: config.app,
|
|
8
|
+
ui: config.ui,
|
|
9
|
+
theming: config.theming,
|
|
10
|
+
auth: {
|
|
11
|
+
methods: (_a = config.auth) == null ? void 0 : _a.methods,
|
|
12
|
+
allowUnauthenticated: (_b = config.auth) == null ? void 0 : _b.allowUnauthenticated
|
|
13
|
+
},
|
|
14
|
+
payments: {
|
|
15
|
+
enabled: (_c = config.payments) == null ? void 0 : _c.enabled,
|
|
16
|
+
plans: (_e = (_d = config.payments) == null ? void 0 : _d.plans) == null ? void 0 : _e.map((plan) => ({
|
|
17
|
+
id: plan.id,
|
|
18
|
+
name: plan.name,
|
|
19
|
+
type: plan.type
|
|
20
|
+
}))
|
|
21
|
+
},
|
|
22
|
+
legal: config.legal,
|
|
23
|
+
sharing: config.sharing,
|
|
24
|
+
teams: config.teams,
|
|
25
|
+
projects: config.projects,
|
|
26
|
+
documents: {
|
|
27
|
+
enabled: (_f = config.documents) == null ? void 0 : _f.enabled
|
|
28
|
+
},
|
|
29
|
+
api: {
|
|
30
|
+
enabled: (_g = config.api) == null ? void 0 : _g.enabled
|
|
31
|
+
},
|
|
32
|
+
promptTemplates: {
|
|
33
|
+
enabled: (_h = config.promptTemplates) == null ? void 0 : _h.enabled,
|
|
34
|
+
allowUserTemplates: (_i = config.promptTemplates) == null ? void 0 : _i.allowUserTemplates
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
return /* @__PURE__ */ jsx(
|
|
38
|
+
"script",
|
|
39
|
+
{
|
|
40
|
+
dangerouslySetInnerHTML: {
|
|
41
|
+
__html: `window.__CHAASKIT_CONFIG__=${JSON.stringify(safeConfig)};`
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
);
|
|
45
|
+
}
|
|
4
46
|
function createRoute(config) {
|
|
5
47
|
const { title, load, skeleton = "simple" } = config;
|
|
6
48
|
const LazyComponent = lazy(load);
|
|
@@ -9,7 +51,7 @@ function createRoute(config) {
|
|
|
9
51
|
return [{ title }];
|
|
10
52
|
}
|
|
11
53
|
function links() {
|
|
12
|
-
return [
|
|
54
|
+
return [];
|
|
13
55
|
}
|
|
14
56
|
function RouteComponent() {
|
|
15
57
|
return /* @__PURE__ */ jsx(ClientOnly, { fallback: /* @__PURE__ */ jsx(Skeleton, {}), children: () => /* @__PURE__ */ jsx(Suspense, { fallback: /* @__PURE__ */ jsx(Skeleton, {}), children: /* @__PURE__ */ jsx(LazyComponent, {}) }) });
|
|
@@ -23,6 +65,7 @@ function createRoute(config) {
|
|
|
23
65
|
export {
|
|
24
66
|
ChatLoadingSkeleton,
|
|
25
67
|
ClientOnly,
|
|
68
|
+
ConfigScript,
|
|
26
69
|
SimpleLoadingSkeleton,
|
|
27
70
|
createRoute
|
|
28
71
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-utils.js","sources":["../../src/ssr-utils.tsx"],"sourcesContent":["/**\n * SSR-safe utilities for @chaaskit/client\n *\n * This entry point ONLY exports components that are safe to import during SSR.\n * Use this in route files instead of importing from the main entry point\n * to avoid pulling in browser-only dependencies like react-markdown.\n *\n * @example\n * ```tsx\n * // In your route file\n * import { createRoute, SimpleLoadingSkeleton } from '@chaaskit/client/ssr-utils';\n *\n * export const { meta, links, default: Component } = createRoute({\n * title: 'Verify Email',\n * load: () => import('@chaaskit/client/routes/VerifyEmailRoute'),\n * });\n * export default Component;\n * ```\n */\n\nimport { lazy, Suspense, type ComponentType, type LazyExoticComponent } from 'react';\nimport { ClientOnly } from './components/ClientOnly';\nimport { ChatLoadingSkeleton, SimpleLoadingSkeleton } from './components/LoadingSkeletons';\n\nexport { ClientOnly, ChatLoadingSkeleton, SimpleLoadingSkeleton };\n\n/**\n * Route configuration options\n */\nexport interface RouteConfig {\n /** Page title for meta tag */\n title: string;\n /** Dynamic import function for the route component */\n load: () => Promise<{ default: ComponentType<any> }>;\n /** Loading skeleton to show during SSR and lazy load (defaults to SimpleLoadingSkeleton) */\n skeleton?: 'simple' | 'chat';\n}\n\n/**\n * Creates a route module with meta, links, and default component.\n * This reduces route files to just a few lines.\n *\n * @example\n * ```tsx\n * import { createRoute } from '@chaaskit/client/ssr-utils';\n *\n * export const { meta, links, default: VerifyEmail } = createRoute({\n * title: 'Verify Email',\n * load: () => import('@chaaskit/client/routes/VerifyEmailRoute'),\n * });\n * export default VerifyEmail;\n * ```\n */\nexport function createRoute(config: RouteConfig) {\n const { title, load, skeleton = 'simple' } = config;\n const LazyComponent = lazy(load);\n const Skeleton = skeleton === 'chat' ? ChatLoadingSkeleton : SimpleLoadingSkeleton;\n\n function meta() {\n return [{ title }];\n }\n\n function links() {\n
|
|
1
|
+
{"version":3,"file":"ssr-utils.js","sources":["../../src/ssr-utils.tsx"],"sourcesContent":["/**\n * SSR-safe utilities for @chaaskit/client\n *\n * This entry point ONLY exports components that are safe to import during SSR.\n * Use this in route files instead of importing from the main entry point\n * to avoid pulling in browser-only dependencies like react-markdown.\n *\n * @example\n * ```tsx\n * // In your route file\n * import { createRoute, SimpleLoadingSkeleton } from '@chaaskit/client/ssr-utils';\n *\n * export const { meta, links, default: Component } = createRoute({\n * title: 'Verify Email',\n * load: () => import('@chaaskit/client/routes/VerifyEmailRoute'),\n * });\n * export default Component;\n * ```\n */\n\nimport { lazy, Suspense, type ComponentType, type LazyExoticComponent } from 'react';\nimport type { AppConfig } from '@chaaskit/shared';\nimport { ClientOnly } from './components/ClientOnly';\nimport { ChatLoadingSkeleton, SimpleLoadingSkeleton } from './components/LoadingSkeletons';\n\nexport { ClientOnly, ChatLoadingSkeleton, SimpleLoadingSkeleton };\n\n/**\n * Props for ConfigScript component.\n */\ninterface ConfigScriptProps {\n /**\n * The app config to inject into the page.\n * This should come from the SSR loader.\n */\n config: AppConfig;\n}\n\n/**\n * Injects the app config into the page as a script tag.\n * Place this in the <head> of your root layout to make the config\n * available immediately on page load, avoiding flash of default values.\n *\n * @example\n * ```tsx\n * // app/root.tsx\n * import { ConfigScript } from '@chaaskit/client/ssr-utils';\n * import { config } from '../config/app.config';\n *\n * export default function Root() {\n * return (\n * <html>\n * <head>\n * <ConfigScript config={config} />\n * </head>\n * <body>...</body>\n * </html>\n * );\n * }\n * ```\n */\nexport function ConfigScript({ config }: ConfigScriptProps) {\n // Only include the UI-related config to avoid exposing sensitive data\n const safeConfig = {\n app: config.app,\n ui: config.ui,\n theming: config.theming,\n auth: {\n methods: config.auth?.methods,\n allowUnauthenticated: config.auth?.allowUnauthenticated,\n },\n payments: {\n enabled: config.payments?.enabled,\n plans: config.payments?.plans?.map(plan => ({\n id: plan.id,\n name: plan.name,\n type: plan.type,\n })),\n },\n legal: config.legal,\n sharing: config.sharing,\n teams: config.teams,\n projects: config.projects,\n documents: {\n enabled: config.documents?.enabled,\n },\n api: {\n enabled: config.api?.enabled,\n },\n promptTemplates: {\n enabled: config.promptTemplates?.enabled,\n allowUserTemplates: config.promptTemplates?.allowUserTemplates,\n },\n };\n\n return (\n <script\n dangerouslySetInnerHTML={{\n __html: `window.__CHAASKIT_CONFIG__=${JSON.stringify(safeConfig)};`,\n }}\n />\n );\n}\n\n/**\n * Route configuration options\n */\nexport interface RouteConfig {\n /** Page title for meta tag */\n title: string;\n /** Dynamic import function for the route component */\n load: () => Promise<{ default: ComponentType<any> }>;\n /** Loading skeleton to show during SSR and lazy load (defaults to SimpleLoadingSkeleton) */\n skeleton?: 'simple' | 'chat';\n}\n\n/**\n * Creates a route module with meta, links, and default component.\n * This reduces route files to just a few lines.\n *\n * @example\n * ```tsx\n * import { createRoute } from '@chaaskit/client/ssr-utils';\n *\n * export const { meta, links, default: VerifyEmail } = createRoute({\n * title: 'Verify Email',\n * load: () => import('@chaaskit/client/routes/VerifyEmailRoute'),\n * });\n * export default VerifyEmail;\n * ```\n */\nexport function createRoute(config: RouteConfig) {\n const { title, load, skeleton = 'simple' } = config;\n const LazyComponent = lazy(load);\n const Skeleton = skeleton === 'chat' ? ChatLoadingSkeleton : SimpleLoadingSkeleton;\n\n function meta() {\n return [{ title }];\n }\n\n function links() {\n // CSS is bundled via app's Tailwind preset - no separate stylesheet needed\n return [];\n }\n\n function RouteComponent() {\n return (\n <ClientOnly fallback={<Skeleton />}>\n {() => (\n <Suspense fallback={<Skeleton />}>\n <LazyComponent />\n </Suspense>\n )}\n </ClientOnly>\n );\n }\n\n return {\n meta,\n links,\n default: RouteComponent,\n };\n}\n"],"names":[],"mappings":";;;AA6DO,SAAS,aAAa,EAAE,UAA6B;;AAE1D,QAAM,aAAa;AAAA,IACjB,KAAK,OAAO;AAAA,IACZ,IAAI,OAAO;AAAA,IACX,SAAS,OAAO;AAAA,IAChB,MAAM;AAAA,MACJ,UAAS,YAAO,SAAP,mBAAa;AAAA,MACtB,uBAAsB,YAAO,SAAP,mBAAa;AAAA,IAAA;AAAA,IAErC,UAAU;AAAA,MACR,UAAS,YAAO,aAAP,mBAAiB;AAAA,MAC1B,QAAO,kBAAO,aAAP,mBAAiB,UAAjB,mBAAwB,IAAI,CAAA,UAAS;AAAA,QAC1C,IAAI,KAAK;AAAA,QACT,MAAM,KAAK;AAAA,QACX,MAAM,KAAK;AAAA,MAAA;AAAA,IACX;AAAA,IAEJ,OAAO,OAAO;AAAA,IACd,SAAS,OAAO;AAAA,IAChB,OAAO,OAAO;AAAA,IACd,UAAU,OAAO;AAAA,IACjB,WAAW;AAAA,MACT,UAAS,YAAO,cAAP,mBAAkB;AAAA,IAAA;AAAA,IAE7B,KAAK;AAAA,MACH,UAAS,YAAO,QAAP,mBAAY;AAAA,IAAA;AAAA,IAEvB,iBAAiB;AAAA,MACf,UAAS,YAAO,oBAAP,mBAAwB;AAAA,MACjC,qBAAoB,YAAO,oBAAP,mBAAwB;AAAA,IAAA;AAAA,EAC9C;AAGF,SACE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,yBAAyB;AAAA,QACvB,QAAQ,8BAA8B,KAAK,UAAU,UAAU,CAAC;AAAA,MAAA;AAAA,IAClE;AAAA,EAAA;AAGN;AA6BO,SAAS,YAAY,QAAqB;AAC/C,QAAM,EAAE,OAAO,MAAM,WAAW,aAAa;AAC7C,QAAM,gBAAgB,KAAK,IAAI;AAC/B,QAAM,WAAW,aAAa,SAAS,sBAAsB;AAE7D,WAAS,OAAO;AACd,WAAO,CAAC,EAAE,OAAO;AAAA,EACnB;AAEA,WAAS,QAAQ;AAEf,WAAO,CAAA;AAAA,EACT;AAEA,WAAS,iBAAiB;AACxB,+BACG,YAAA,EAAW,UAAU,oBAAC,UAAA,EAAS,GAC7B,UAAA,MACC,oBAAC,UAAA,EAAS,8BAAW,UAAA,CAAA,CAAS,GAC5B,UAAA,oBAAC,eAAA,CAAA,CAAc,GACjB,GAEJ;AAAA,EAEJ;AAEA,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA,SAAS;AAAA,EAAA;AAEb;"}
|
package/dist/lib/ssr.js
CHANGED
|
@@ -39,6 +39,28 @@ function getThemeVariables(config, theme) {
|
|
|
39
39
|
vars["--radius-full"] = config.theming.borderRadius.full;
|
|
40
40
|
return vars;
|
|
41
41
|
}
|
|
42
|
+
function generateAllThemesCSS(config) {
|
|
43
|
+
const themes = config.theming.themes;
|
|
44
|
+
let css = "";
|
|
45
|
+
for (const [themeName, themeConfig] of Object.entries(themes)) {
|
|
46
|
+
const cssVars = Object.entries(themeConfig.colors).map(([key, value]) => {
|
|
47
|
+
const cssKey = `--color-${key.replace(/([A-Z])/g, "-$1").toLowerCase()}`;
|
|
48
|
+
return `${cssKey}: ${hexToRgb(value)};`;
|
|
49
|
+
}).join("\n ");
|
|
50
|
+
css += `
|
|
51
|
+
html[data-theme="${themeName}"] {
|
|
52
|
+
${cssVars}
|
|
53
|
+
--font-sans: ${config.theming.fonts.sans};
|
|
54
|
+
--font-mono: ${config.theming.fonts.mono};
|
|
55
|
+
--radius-sm: ${config.theming.borderRadius.sm};
|
|
56
|
+
--radius-md: ${config.theming.borderRadius.md};
|
|
57
|
+
--radius-lg: ${config.theming.borderRadius.lg};
|
|
58
|
+
--radius-full: ${config.theming.borderRadius.full};
|
|
59
|
+
}
|
|
60
|
+
`;
|
|
61
|
+
}
|
|
62
|
+
return css;
|
|
63
|
+
}
|
|
42
64
|
const baseStyles = `
|
|
43
65
|
html { font-family: var(--font-sans); }
|
|
44
66
|
body {
|
|
@@ -51,6 +73,7 @@ export {
|
|
|
51
73
|
S as ServerConfigProvider,
|
|
52
74
|
b as ServerThemeProvider,
|
|
53
75
|
baseStyles,
|
|
76
|
+
generateAllThemesCSS,
|
|
54
77
|
generateThemeCSS,
|
|
55
78
|
getThemeVariables,
|
|
56
79
|
u as useServerConfig,
|
package/dist/lib/ssr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr.js","sources":["../../src/ssr.ts"],"sourcesContent":["/**\n * SSR-safe exports for server-side rendering.\n *\n * This module exports components and utilities that can be used on the server\n * without browser APIs like window, document, or localStorage.\n */\n\nimport type { AppConfig } from '@chaaskit/shared';\n\n// SSR-safe context providers\nexport {\n ServerConfigProvider,\n useServerConfig,\n useServerConfigLoaded,\n type ServerConfigProviderProps,\n} from './contexts/ServerConfigProvider';\n\nexport {\n ServerThemeProvider,\n useServerTheme,\n type ServerThemeProviderProps,\n} from './contexts/ServerThemeProvider';\n\n// NOTE: SSRMessageList and SSRMarkdownRenderer are NOT exported here because\n// they depend on react-markdown which has browser-only dependencies.\n// Use them only in client-side code wrapped in <ClientOnly>.\n\n// ============================================\n// Theme utilities for SSR\n// ============================================\n\n/**\n * Converts a hex color to RGB values string (e.g., \"#ff0000\" -> \"255 0 0\")\n */\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return '';\n return `${parseInt(result[1]!, 16)} ${parseInt(result[2]!, 16)} ${parseInt(result[3]!, 16)}`;\n}\n\n/**\n * Generates CSS variables for a theme.\n * Use this in your React Router root.tsx to inject theme styles.\n *\n * @example\n * ```tsx\n * // app/root.tsx\n * import { generateThemeCSS } from '@chaaskit/client/ssr';\n *\n * export default function Root() {\n * const themeCSS = generateThemeCSS(config, 'dark');\n * return (\n * <html>\n * <head>\n * <style dangerouslySetInnerHTML={{ __html: themeCSS }} />\n * </head>\n * ...\n * </html>\n * );\n * }\n * ```\n */\nexport function generateThemeCSS(config: AppConfig, theme: string): string {\n const themeConfig = config.theming.themes[theme];\n if (!themeConfig) return '';\n\n const cssVars = Object.entries(themeConfig.colors)\n .map(([key, value]) => {\n const cssKey = `--color-${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n return `${cssKey}: ${hexToRgb(value)};`;\n })\n .join('\\n ');\n\n return `\n :root {\n ${cssVars}\n --font-sans: ${config.theming.fonts.sans};\n --font-mono: ${config.theming.fonts.mono};\n --radius-sm: ${config.theming.borderRadius.sm};\n --radius-md: ${config.theming.borderRadius.md};\n --radius-lg: ${config.theming.borderRadius.lg};\n --radius-full: ${config.theming.borderRadius.full};\n }\n `;\n}\n\n/**\n * Returns an object of CSS variable name -> value pairs for a theme.\n * Useful if you need programmatic access to theme values.\n */\nexport function getThemeVariables(config: AppConfig, theme: string): Record<string, string> {\n const themeConfig = config.theming.themes[theme];\n if (!themeConfig) return {};\n\n const vars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(themeConfig.colors)) {\n const cssKey = `--color-${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n vars[cssKey] = hexToRgb(value);\n }\n\n vars['--font-sans'] = config.theming.fonts.sans;\n vars['--font-mono'] = config.theming.fonts.mono;\n vars['--radius-sm'] = config.theming.borderRadius.sm;\n vars['--radius-md'] = config.theming.borderRadius.md;\n vars['--radius-lg'] = config.theming.borderRadius.lg;\n vars['--radius-full'] = config.theming.borderRadius.full;\n\n return vars;\n}\n\n/**\n * Base CSS styles for SSR pages.\n * Include this in your HTML template for consistent styling.\n */\nexport const baseStyles = `\n html { font-family: var(--font-sans); }\n body {\n margin: 0;\n background-color: rgb(var(--color-background));\n color: rgb(var(--color-text-primary));\n }\n`;\n"],"names":[],"mappings":";AAkCA,SAAS,SAAS,KAAqB;AACrC,QAAM,SAAS,4CAA4C,KAAK,GAAG;AACnE,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,GAAG,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC;AAC5F;AAwBO,SAAS,iBAAiB,QAAmB,OAAuB;AACzE,QAAM,cAAc,OAAO,QAAQ,OAAO,KAAK;AAC/C,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,UAAU,OAAO,QAAQ,YAAY,MAAM,EAC9C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,UAAM,SAAS,WAAW,IAAI,QAAQ,YAAY,KAAK,EAAE,aAAa;AACtE,WAAO,GAAG,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,EACtC,CAAC,EACA,KAAK,QAAQ;AAEhB,SAAO;AAAA;AAAA,QAED,OAAO;AAAA,qBACM,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,uBAC5B,OAAO,QAAQ,aAAa,IAAI;AAAA;AAAA;AAGvD;AAMO,SAAS,kBAAkB,QAAmB,OAAuC;AAC1F,QAAM,cAAc,OAAO,QAAQ,OAAO,KAAK;AAC/C,MAAI,CAAC,YAAa,QAAO,CAAA;AAEzB,QAAM,OAA+B,CAAA;AAErC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,MAAM,GAAG;AAC7D,UAAM,SAAS,WAAW,IAAI,QAAQ,YAAY,KAAK,EAAE,aAAa;AACtE,SAAK,MAAM,IAAI,SAAS,KAAK;AAAA,EAC/B;AAEA,OAAK,aAAa,IAAI,OAAO,QAAQ,MAAM;AAC3C,OAAK,aAAa,IAAI,OAAO,QAAQ,MAAM;AAC3C,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,eAAe,IAAI,OAAO,QAAQ,aAAa;AAEpD,SAAO;AACT;AAMO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
|
1
|
+
{"version":3,"file":"ssr.js","sources":["../../src/ssr.ts"],"sourcesContent":["/**\n * SSR-safe exports for server-side rendering.\n *\n * This module exports components and utilities that can be used on the server\n * without browser APIs like window, document, or localStorage.\n */\n\nimport type { AppConfig } from '@chaaskit/shared';\n\n// SSR-safe context providers\nexport {\n ServerConfigProvider,\n useServerConfig,\n useServerConfigLoaded,\n type ServerConfigProviderProps,\n} from './contexts/ServerConfigProvider';\n\nexport {\n ServerThemeProvider,\n useServerTheme,\n type ServerThemeProviderProps,\n} from './contexts/ServerThemeProvider';\n\n// NOTE: SSRMessageList and SSRMarkdownRenderer are NOT exported here because\n// they depend on react-markdown which has browser-only dependencies.\n// Use them only in client-side code wrapped in <ClientOnly>.\n\n// ============================================\n// Theme utilities for SSR\n// ============================================\n\n/**\n * Converts a hex color to RGB values string (e.g., \"#ff0000\" -> \"255 0 0\")\n */\nfunction hexToRgb(hex: string): string {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return '';\n return `${parseInt(result[1]!, 16)} ${parseInt(result[2]!, 16)} ${parseInt(result[3]!, 16)}`;\n}\n\n/**\n * Generates CSS variables for a theme.\n * Use this in your React Router root.tsx to inject theme styles.\n *\n * @example\n * ```tsx\n * // app/root.tsx\n * import { generateThemeCSS } from '@chaaskit/client/ssr';\n *\n * export default function Root() {\n * const themeCSS = generateThemeCSS(config, 'dark');\n * return (\n * <html>\n * <head>\n * <style dangerouslySetInnerHTML={{ __html: themeCSS }} />\n * </head>\n * ...\n * </html>\n * );\n * }\n * ```\n */\nexport function generateThemeCSS(config: AppConfig, theme: string): string {\n const themeConfig = config.theming.themes[theme];\n if (!themeConfig) return '';\n\n const cssVars = Object.entries(themeConfig.colors)\n .map(([key, value]) => {\n const cssKey = `--color-${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n return `${cssKey}: ${hexToRgb(value)};`;\n })\n .join('\\n ');\n\n return `\n :root {\n ${cssVars}\n --font-sans: ${config.theming.fonts.sans};\n --font-mono: ${config.theming.fonts.mono};\n --radius-sm: ${config.theming.borderRadius.sm};\n --radius-md: ${config.theming.borderRadius.md};\n --radius-lg: ${config.theming.borderRadius.lg};\n --radius-full: ${config.theming.borderRadius.full};\n }\n `;\n}\n\n/**\n * Returns an object of CSS variable name -> value pairs for a theme.\n * Useful if you need programmatic access to theme values.\n */\nexport function getThemeVariables(config: AppConfig, theme: string): Record<string, string> {\n const themeConfig = config.theming.themes[theme];\n if (!themeConfig) return {};\n\n const vars: Record<string, string> = {};\n\n for (const [key, value] of Object.entries(themeConfig.colors)) {\n const cssKey = `--color-${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n vars[cssKey] = hexToRgb(value);\n }\n\n vars['--font-sans'] = config.theming.fonts.sans;\n vars['--font-mono'] = config.theming.fonts.mono;\n vars['--radius-sm'] = config.theming.borderRadius.sm;\n vars['--radius-md'] = config.theming.borderRadius.md;\n vars['--radius-lg'] = config.theming.borderRadius.lg;\n vars['--radius-full'] = config.theming.borderRadius.full;\n\n return vars;\n}\n\n/**\n * Generates CSS for ALL themes using html[data-theme] selectors.\n * This is the recommended way to include theme styles - it allows instant\n * theme switching by just changing the data-theme attribute on <html>.\n *\n * @example\n * ```tsx\n * // app/root.tsx\n * import { generateAllThemesCSS, baseStyles } from '@chaaskit/client/ssr';\n *\n * // Cache on server - only generate once\n * let cachedCSS: string | null = null;\n *\n * export async function loader() {\n * if (!cachedCSS) cachedCSS = generateAllThemesCSS(config);\n * return { themeCSS: cachedCSS };\n * }\n *\n * export default function Root() {\n * const { themeCSS } = useLoaderData();\n * return (\n * <html data-theme=\"dark\">\n * <head>\n * <style dangerouslySetInnerHTML={{ __html: themeCSS + baseStyles }} />\n * </head>\n * ...\n * </html>\n * );\n * }\n * ```\n */\nexport function generateAllThemesCSS(config: AppConfig): string {\n const themes = config.theming.themes;\n let css = '';\n\n for (const [themeName, themeConfig] of Object.entries(themes)) {\n const cssVars = Object.entries(themeConfig.colors)\n .map(([key, value]) => {\n const cssKey = `--color-${key.replace(/([A-Z])/g, '-$1').toLowerCase()}`;\n return `${cssKey}: ${hexToRgb(value)};`;\n })\n .join('\\n ');\n\n css += `\n html[data-theme=\"${themeName}\"] {\n ${cssVars}\n --font-sans: ${config.theming.fonts.sans};\n --font-mono: ${config.theming.fonts.mono};\n --radius-sm: ${config.theming.borderRadius.sm};\n --radius-md: ${config.theming.borderRadius.md};\n --radius-lg: ${config.theming.borderRadius.lg};\n --radius-full: ${config.theming.borderRadius.full};\n }\n`;\n }\n\n return css;\n}\n\n/**\n * Base CSS styles for SSR pages.\n * Include this in your HTML template for consistent styling.\n */\nexport const baseStyles = `\n html { font-family: var(--font-sans); }\n body {\n margin: 0;\n background-color: rgb(var(--color-background));\n color: rgb(var(--color-text-primary));\n }\n`;\n"],"names":[],"mappings":";AAkCA,SAAS,SAAS,KAAqB;AACrC,QAAM,SAAS,4CAA4C,KAAK,GAAG;AACnE,MAAI,CAAC,OAAQ,QAAO;AACpB,SAAO,GAAG,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC,IAAI,SAAS,OAAO,CAAC,GAAI,EAAE,CAAC;AAC5F;AAwBO,SAAS,iBAAiB,QAAmB,OAAuB;AACzE,QAAM,cAAc,OAAO,QAAQ,OAAO,KAAK;AAC/C,MAAI,CAAC,YAAa,QAAO;AAEzB,QAAM,UAAU,OAAO,QAAQ,YAAY,MAAM,EAC9C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,UAAM,SAAS,WAAW,IAAI,QAAQ,YAAY,KAAK,EAAE,aAAa;AACtE,WAAO,GAAG,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,EACtC,CAAC,EACA,KAAK,QAAQ;AAEhB,SAAO;AAAA;AAAA,QAED,OAAO;AAAA,qBACM,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,uBAC5B,OAAO,QAAQ,aAAa,IAAI;AAAA;AAAA;AAGvD;AAMO,SAAS,kBAAkB,QAAmB,OAAuC;AAC1F,QAAM,cAAc,OAAO,QAAQ,OAAO,KAAK;AAC/C,MAAI,CAAC,YAAa,QAAO,CAAA;AAEzB,QAAM,OAA+B,CAAA;AAErC,aAAW,CAAC,KAAK,KAAK,KAAK,OAAO,QAAQ,YAAY,MAAM,GAAG;AAC7D,UAAM,SAAS,WAAW,IAAI,QAAQ,YAAY,KAAK,EAAE,aAAa;AACtE,SAAK,MAAM,IAAI,SAAS,KAAK;AAAA,EAC/B;AAEA,OAAK,aAAa,IAAI,OAAO,QAAQ,MAAM;AAC3C,OAAK,aAAa,IAAI,OAAO,QAAQ,MAAM;AAC3C,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,aAAa,IAAI,OAAO,QAAQ,aAAa;AAClD,OAAK,eAAe,IAAI,OAAO,QAAQ,aAAa;AAEpD,SAAO;AACT;AAiCO,SAAS,qBAAqB,QAA2B;AAC9D,QAAM,SAAS,OAAO,QAAQ;AAC9B,MAAI,MAAM;AAEV,aAAW,CAAC,WAAW,WAAW,KAAK,OAAO,QAAQ,MAAM,GAAG;AAC7D,UAAM,UAAU,OAAO,QAAQ,YAAY,MAAM,EAC9C,IAAI,CAAC,CAAC,KAAK,KAAK,MAAM;AACrB,YAAM,SAAS,WAAW,IAAI,QAAQ,YAAY,KAAK,EAAE,aAAa;AACtE,aAAO,GAAG,MAAM,KAAK,SAAS,KAAK,CAAC;AAAA,IACtC,CAAC,EACA,KAAK,UAAU;AAElB,WAAO;AAAA,uBACY,SAAS;AAAA,QACxB,OAAO;AAAA,qBACM,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,MAAM,IAAI;AAAA,qBACzB,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,qBAC9B,OAAO,QAAQ,aAAa,EAAE;AAAA,uBAC5B,OAAO,QAAQ,aAAa,IAAI;AAAA;AAAA;AAAA,EAGrD;AAEA,SAAO;AACT;AAMO,MAAM,aAAa;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;"}
|
package/dist/lib/styles.css
CHANGED
|
@@ -1615,6 +1615,9 @@ video {
|
|
|
1615
1615
|
--tw-text-opacity: 1;
|
|
1616
1616
|
color: rgb(255 255 255 / var(--tw-text-opacity, 1));
|
|
1617
1617
|
}
|
|
1618
|
+
.underline {
|
|
1619
|
+
text-decoration-line: underline;
|
|
1620
|
+
}
|
|
1618
1621
|
.placeholder-text-muted::-moz-placeholder {
|
|
1619
1622
|
--tw-placeholder-opacity: 1;
|
|
1620
1623
|
color: rgb(var(--color-text-muted) / var(--tw-placeholder-opacity, 1));
|
|
@@ -1684,70 +1687,26 @@ video {
|
|
|
1684
1687
|
.ease-in-out {
|
|
1685
1688
|
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
1686
1689
|
}
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
:root {
|
|
1690
|
-
--color-primary: 99 102 241;
|
|
1691
|
-
--color-primary-hover: 79 70 229;
|
|
1692
|
-
--color-secondary: 139 92 246;
|
|
1693
|
-
|
|
1694
|
-
--color-background: 255 255 255;
|
|
1695
|
-
--color-background-secondary: 249 250 251;
|
|
1696
|
-
--color-sidebar: 243 244 246;
|
|
1697
|
-
|
|
1698
|
-
--color-text-primary: 17 24 39;
|
|
1699
|
-
--color-text-secondary: 107 114 128;
|
|
1700
|
-
--color-text-muted: 156 163 175;
|
|
1701
|
-
|
|
1702
|
-
--color-border: 229 231 235;
|
|
1703
|
-
--color-input-background: 255 255 255;
|
|
1704
|
-
--color-input-border: 209 213 219;
|
|
1705
|
-
|
|
1706
|
-
--color-user-message-bg: 99 102 241;
|
|
1707
|
-
--color-user-message-text: 255 255 255;
|
|
1708
|
-
--color-assistant-message-bg: 243 244 246;
|
|
1709
|
-
--color-assistant-message-text: 17 24 39;
|
|
1710
|
-
|
|
1711
|
-
--color-success: 16 185 129;
|
|
1712
|
-
--color-warning: 245 158 11;
|
|
1713
|
-
--color-error: 239 68 68;
|
|
1714
|
-
|
|
1715
|
-
--font-sans: 'Inter', system-ui, sans-serif;
|
|
1716
|
-
--font-mono: 'JetBrains Mono', Menlo, monospace;
|
|
1717
|
-
|
|
1718
|
-
--radius-sm: 0.25rem;
|
|
1719
|
-
--radius-md: 0.5rem;
|
|
1720
|
-
--radius-lg: 0.75rem;
|
|
1721
|
-
--radius-full: 9999px;
|
|
1690
|
+
.ease-out {
|
|
1691
|
+
transition-timing-function: cubic-bezier(0, 0, 0.2, 1);
|
|
1722
1692
|
}
|
|
1723
1693
|
|
|
1724
|
-
/*
|
|
1725
|
-
|
|
1726
|
-
|
|
1727
|
-
|
|
1728
|
-
|
|
1729
|
-
|
|
1730
|
-
|
|
1731
|
-
|
|
1732
|
-
|
|
1733
|
-
|
|
1734
|
-
|
|
1735
|
-
|
|
1736
|
-
|
|
1737
|
-
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
--color-input-border: 75 85 99;
|
|
1741
|
-
|
|
1742
|
-
--color-user-message-bg: 79 70 229;
|
|
1743
|
-
--color-user-message-text: 255 255 255;
|
|
1744
|
-
--color-assistant-message-bg: 31 41 55;
|
|
1745
|
-
--color-assistant-message-text: 249 250 251;
|
|
1746
|
-
|
|
1747
|
-
--color-success: 52 211 153;
|
|
1748
|
-
--color-warning: 251 191 36;
|
|
1749
|
-
--color-error: 248 113 113;
|
|
1750
|
-
}
|
|
1694
|
+
/*
|
|
1695
|
+
* Theme CSS variables are NOT defined here.
|
|
1696
|
+
* The consuming app (chaaskit-app) is responsible for providing CSS variable values
|
|
1697
|
+
* via inline styles on <html> from config/app.config.ts.
|
|
1698
|
+
*
|
|
1699
|
+
* Required variables:
|
|
1700
|
+
* --color-primary, --color-primary-hover, --color-secondary
|
|
1701
|
+
* --color-background, --color-background-secondary, --color-sidebar
|
|
1702
|
+
* --color-text-primary, --color-text-secondary, --color-text-muted
|
|
1703
|
+
* --color-border, --color-input-background, --color-input-border
|
|
1704
|
+
* --color-user-message-bg, --color-user-message-text
|
|
1705
|
+
* --color-assistant-message-bg, --color-assistant-message-text
|
|
1706
|
+
* --color-success, --color-warning, --color-error
|
|
1707
|
+
* --font-sans, --font-mono
|
|
1708
|
+
* --radius-sm, --radius-md, --radius-lg, --radius-full
|
|
1709
|
+
*/
|
|
1751
1710
|
|
|
1752
1711
|
/* Base styles */
|
|
1753
1712
|
html {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@chaaskit/client",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "React frontend client for ChaasKit AI chat applications",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Matt Ferrante <@ferrants>",
|
|
@@ -41,6 +41,11 @@
|
|
|
41
41
|
"import": "./dist/lib/routes/*.js"
|
|
42
42
|
},
|
|
43
43
|
"./styles": "./dist/lib/styles.css",
|
|
44
|
+
"./tailwind-preset": {
|
|
45
|
+
"types": "./src/tailwind-preset.js",
|
|
46
|
+
"import": "./src/tailwind-preset.js",
|
|
47
|
+
"require": "./src/tailwind-preset.js"
|
|
48
|
+
},
|
|
44
49
|
"./src/*": "./src/*"
|
|
45
50
|
},
|
|
46
51
|
"files": [
|
|
@@ -56,7 +61,7 @@
|
|
|
56
61
|
"clean": "rm -rf dist"
|
|
57
62
|
},
|
|
58
63
|
"dependencies": {
|
|
59
|
-
"@chaaskit/shared": "^0.1.
|
|
64
|
+
"@chaaskit/shared": "^0.1.1",
|
|
60
65
|
"lucide-react": "^0.321.0",
|
|
61
66
|
"react": "^18.2.0",
|
|
62
67
|
"react-dom": "^18.2.0",
|