@soulbatical/tetra-ui 0.2.0 → 0.2.2

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/README.md ADDED
@@ -0,0 +1,183 @@
1
+ # @soulbatical/tetra-ui
2
+
3
+ Shared React frontend framework for Tetra platform projects — config-driven components, hooks, providers, and styling.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @soulbatical/tetra-ui
9
+ ```
10
+
11
+ Only install the peer dependencies you actually use (all are optional except `react`):
12
+
13
+ ```bash
14
+ # Always needed
15
+ npm install react react-dom
16
+
17
+ # Only if you use ./query or ./feature
18
+ npm install @tanstack/react-query
19
+
20
+ # Only if you use ./table
21
+ npm install @tanstack/react-table
22
+
23
+ # Only if you use ./next
24
+ npm install next next-themes
25
+
26
+ # Only if you use ./planner
27
+ npm install @daypilot/daypilot-lite-react
28
+ ```
29
+
30
+ ## Subpath Exports
31
+
32
+ Import only what you need. Each subpath has its own dependency footprint:
33
+
34
+ ```typescript
35
+ // Shadcn/ui primitives (radix + cva + tailwind-merge)
36
+ import { Button, Input, Card, Dialog } from '@soulbatical/tetra-ui/primitives';
37
+
38
+ // Layout & display components (React + lucide only)
39
+ import { ListDetailLayout, AutoCard, InfiniteGrid } from '@soulbatical/tetra-ui/components';
40
+
41
+ // Utility hooks (React only, zero external deps)
42
+ import { useDebounce, useDialog, useQueryState } from '@soulbatical/tetra-ui/hooks';
43
+
44
+ // Auth hooks + API client (requires @supabase/supabase-js)
45
+ import { useAuth, apiClient } from '@soulbatical/tetra-ui/auth';
46
+
47
+ // Query provider + cache hooks (requires @tanstack/react-query)
48
+ import { QueryProvider, useCacheInvalidation } from '@soulbatical/tetra-ui/query';
49
+
50
+ // Data table (requires @tanstack/react-table + tetra-core)
51
+ import { FeatureTable } from '@soulbatical/tetra-ui/table';
52
+
53
+ // Full-stack feature components (requires tetra-core + react-query)
54
+ import { FeatureFilters, FeatureForm, useFeature } from '@soulbatical/tetra-ui/feature';
55
+
56
+ // Next.js providers (requires next + next-themes)
57
+ import { ThemeProvider, ThemeToggle } from '@soulbatical/tetra-ui/next';
58
+
59
+ // Scheduling components (requires @daypilot/daypilot-lite-react)
60
+ import { BookingWidget, WeekCalendar } from '@soulbatical/tetra-ui/planner';
61
+
62
+ // Affiliate dashboard hooks (requires @supabase/supabase-js)
63
+ import { useAffiliateDashboard } from '@soulbatical/tetra-ui/affiliate';
64
+
65
+ // Barrel export — everything (requires ALL peer deps)
66
+ import { Button, ListDetailLayout, useFeature } from '@soulbatical/tetra-ui';
67
+ ```
68
+
69
+ | Subpath | What you get | Extra peer deps needed |
70
+ |---------|-------------|----------------------|
71
+ | `./primitives` | Button, Input, Card, Dialog, Select, Table, Tabs, Badge, Label, Textarea | — |
72
+ | `./components` | ListDetailLayout, AutoCard, InfiniteGrid, PageHeader, StatusBadge, LoadingStates, CookieConsent, OAuthButtons | — |
73
+ | `./hooks` | useDebounce, useDialog, useIsMobile, useQueryState, useInfiniteScroll, useFormSubmit, usePageContext | — |
74
+ | `./auth` | useAuth, apiClient, useOrganizations | @supabase/supabase-js |
75
+ | `./query` | QueryProvider, useCacheInvalidation, useFilterConfigs | @tanstack/react-query |
76
+ | `./table` | FeatureTable | @tanstack/react-table, tetra-core |
77
+ | `./feature` | FeatureFilters, FeatureForm, useFeature | tetra-core, react-query |
78
+ | `./next` | ThemeProvider, ThemeToggle | next, next-themes |
79
+ | `./planner` | BookingWidget, WeekCalendar, TeamPlanner, AvailabilityEditor | @daypilot/daypilot-lite-react |
80
+ | `./affiliate` | useAffiliateDashboard | @supabase/supabase-js |
81
+ | `.` | Everything | All of the above |
82
+
83
+ ## Design Tokens (Theming)
84
+
85
+ All tetra-ui layout and feature components use `--tetra-*` CSS custom properties for colors. No hardcoded Tailwind color classes. This means you can theme every component by setting CSS variables.
86
+
87
+ ### Quick start
88
+
89
+ Import the default tokens:
90
+
91
+ ```css
92
+ @import '@soulbatical/tetra-ui/styles/tokens.css';
93
+ ```
94
+
95
+ Or define your own values:
96
+
97
+ ```css
98
+ :root {
99
+ --tetra-bg: #ffffff;
100
+ --tetra-bg-subtle: #f9fafb;
101
+ --tetra-bg-muted: #f3f4f6;
102
+ --tetra-border: #e5e7eb;
103
+ --tetra-border-subtle: #f3f4f6;
104
+ --tetra-text: #111827;
105
+ --tetra-text-muted: #6b7280;
106
+ --tetra-text-inverted: #ffffff;
107
+ --tetra-accent: #3b82f6;
108
+ --tetra-accent-subtle: #eff6ff;
109
+ --tetra-accent-hover: #2563eb;
110
+ --tetra-danger: #ef4444;
111
+ --tetra-danger-subtle: #fef2f2;
112
+ --tetra-success: #22c55e;
113
+ --tetra-success-subtle: #f0fdf4;
114
+ --tetra-warning: #f59e0b;
115
+ --tetra-warning-subtle: #fffbeb;
116
+ --tetra-radius: 8px;
117
+ --tetra-radius-sm: 4px;
118
+ --tetra-radius-lg: 12px;
119
+ --tetra-font: inherit;
120
+ }
121
+ ```
122
+
123
+ ### Dark mode
124
+
125
+ Override the tokens in a dark scope:
126
+
127
+ ```css
128
+ .dark, [data-theme="dark"] {
129
+ --tetra-bg: #0f172a;
130
+ --tetra-bg-subtle: #1e293b;
131
+ --tetra-bg-muted: #334155;
132
+ --tetra-border: #334155;
133
+ --tetra-border-subtle: #1e293b;
134
+ --tetra-text: #f1f5f9;
135
+ --tetra-text-muted: #94a3b8;
136
+ --tetra-text-inverted: #0f172a;
137
+ --tetra-accent: #60a5fa;
138
+ --tetra-accent-subtle: rgba(30, 58, 138, 0.3);
139
+ --tetra-accent-hover: #93bbfc;
140
+ }
141
+ ```
142
+
143
+ ### Per-section theming
144
+
145
+ Scope tokens to any parent element:
146
+
147
+ ```tsx
148
+ <div style={{ '--tetra-accent': '#f97316' } as React.CSSProperties}>
149
+ <ListDetailLayout ... /> {/* Uses orange accent */}
150
+ </div>
151
+ ```
152
+
153
+ ### What about shadcn/ui primitives?
154
+
155
+ The `./primitives` subpath (Button, Input, Card, etc.) uses shadcn/ui's own token system (`--background`, `--primary`, `--border`, etc.) and is **not** affected by `--tetra-*` tokens. These two systems coexist without conflict.
156
+
157
+ ## Tailwind Preset
158
+
159
+ For projects using Tailwind CSS, tetra-ui provides a preset with the design system's colors, spacing, and typography:
160
+
161
+ ```javascript
162
+ // tailwind.config.js
163
+ import tetraPreset from '@soulbatical/tetra-ui/tailwind-preset';
164
+
165
+ export default {
166
+ presets: [tetraPreset],
167
+ content: [
168
+ './src/**/*.{ts,tsx}',
169
+ './node_modules/@soulbatical/tetra-ui/dist/**/*.js',
170
+ ],
171
+ };
172
+ ```
173
+
174
+ ## Theming Compliance Check
175
+
176
+ The `@soulbatical/tetra-dev-toolkit` includes a `ui-theming` check that enforces:
177
+
178
+ - No Tailwind color classes in tetra-ui components (e.g. `bg-blue-500`)
179
+ - No hardcoded hex/rgb/hsl color values
180
+ - No component-specific CSS vars (e.g. `--ldl-*`) — only `--tetra-*`
181
+ - Brand colors (OAuth buttons) are exempt via `// Brand color` comment
182
+
183
+ This check runs at prepublish time to prevent regressions.
@@ -0,0 +1,108 @@
1
+ export interface ApiToken {
2
+ id: string;
3
+ name: string;
4
+ is_active: boolean;
5
+ last_used_at: string | null;
6
+ created_at: string;
7
+ revoked_at: string | null;
8
+ }
9
+ export interface UsageStats {
10
+ period: string;
11
+ total_calls: number;
12
+ by_tool: {
13
+ tool: string;
14
+ count: number;
15
+ }[];
16
+ trend: {
17
+ date: string;
18
+ count: number;
19
+ }[];
20
+ }
21
+ export interface ApiTokensPageLabels {
22
+ title?: string;
23
+ description?: string;
24
+ createToken?: string;
25
+ tokenName?: string;
26
+ namePlaceholder?: string;
27
+ create?: string;
28
+ cancel?: string;
29
+ newTokenWarning?: string;
30
+ copy?: string;
31
+ copied?: string;
32
+ noTokens?: string;
33
+ created?: string;
34
+ lastUsed?: string;
35
+ never?: string;
36
+ active?: string;
37
+ revoked?: string;
38
+ revoke?: string;
39
+ revokeConfirm?: string;
40
+ connectWith?: string;
41
+ connectCommand?: string;
42
+ usage?: string;
43
+ totalCalls?: string;
44
+ topTools?: string;
45
+ calls?: string;
46
+ last7d?: string;
47
+ last30d?: string;
48
+ last90d?: string;
49
+ mcpAuthApprove?: string;
50
+ mcpAuthApproveDesc?: string;
51
+ mcpAuthDevice?: string;
52
+ mcpAuthApproveBtn?: string;
53
+ mcpAuthDeny?: string;
54
+ loading?: string;
55
+ }
56
+ export interface ApiTokensPageProps {
57
+ /**
58
+ * Function to make authenticated API calls.
59
+ * Must handle auth headers (JWT) internally.
60
+ * Should return a Response-like object with .ok and .json().
61
+ */
62
+ apiFetch: (url: string, options?: RequestInit) => Promise<Response>;
63
+ /**
64
+ * Base path for MCP API routes. Default: "/api"
65
+ * Token routes: {apiBasePath}/mcp-tokens
66
+ * Usage routes: {apiBasePath}/mcp-usage
67
+ * Auth routes: {apiBasePath}/mcp-auth
68
+ */
69
+ apiBasePath?: string;
70
+ /**
71
+ * Full API URL for the connect instructions (shown to user).
72
+ * e.g. "https://api.vincifox.com" or "https://api.agentrook.com"
73
+ */
74
+ apiUrl?: string;
75
+ /**
76
+ * MCP auth request ID from URL params (for device approval flow).
77
+ * Read from ?mcp_auth= query parameter in the consumer.
78
+ */
79
+ mcpAuthId?: string | null;
80
+ /**
81
+ * Override labels for i18n. Partial — defaults fill in missing keys.
82
+ */
83
+ labels?: ApiTokensPageLabels;
84
+ /**
85
+ * Date locale for formatting dates. Default: "en-US"
86
+ */
87
+ dateLocale?: string;
88
+ /** Optional className for the root container */
89
+ className?: string;
90
+ }
91
+ /**
92
+ * ApiTokensPage — Full-page component for managing MCP API tokens.
93
+ *
94
+ * Features:
95
+ * - List, create, and revoke API tokens
96
+ * - Copy-once token display with warning
97
+ * - MCP device approval flow (Claude Code browser auth)
98
+ * - Usage statistics (total calls, top tools)
99
+ * - Fully themed via --tetra-* CSS variables
100
+ * - i18n via labels prop
101
+ *
102
+ * Requires these Tetra backend routes:
103
+ * - addMcpTokenRoutes (GET/POST/DELETE /mcp-tokens)
104
+ * - addMcpUsageRoutes (GET /mcp-usage)
105
+ * - addMcpAuthRoutes (GET/POST /mcp-auth) — optional, for device approval
106
+ */
107
+ export declare function ApiTokensPage({ apiFetch: fetchFn, apiBasePath, apiUrl, mcpAuthId, labels: customLabels, dateLocale, className, }: ApiTokensPageProps): import("react/jsx-runtime").JSX.Element;
108
+ //# sourceMappingURL=ApiTokensPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiTokensPage.d.ts","sourceRoot":"","sources":["../../src/components/ApiTokensPage.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,265 @@
1
+ "use client";
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useState, useEffect, useCallback } from "react";
4
+ const DEFAULT_LABELS = {
5
+ title: "API Tokens",
6
+ description: "Create API tokens to connect AI tools (Claude Code, Cursor, etc.) to your account via MCP.",
7
+ createToken: "Create Token",
8
+ tokenName: "Token name",
9
+ namePlaceholder: "e.g. Claude Code, My Script",
10
+ create: "Create",
11
+ cancel: "Cancel",
12
+ newTokenWarning: "Copy this token now — it won't be shown again.",
13
+ copy: "Copy",
14
+ copied: "Copied!",
15
+ noTokens: "No API tokens yet. Create one to get started.",
16
+ created: "Created",
17
+ lastUsed: "Last used",
18
+ never: "never",
19
+ active: "Active",
20
+ revoked: "Revoked",
21
+ revoke: "Revoke",
22
+ revokeConfirm: "Are you sure you want to revoke this token? This cannot be undone.",
23
+ connectWith: "Connect with Claude Code",
24
+ connectCommand: "claude mcp add --transport http",
25
+ usage: "Usage",
26
+ totalCalls: "API calls",
27
+ topTools: "Most used tools",
28
+ calls: "calls",
29
+ last7d: "Last 7 days",
30
+ last30d: "Last 30 days",
31
+ last90d: "Last 90 days",
32
+ mcpAuthApprove: "Connection Request",
33
+ mcpAuthApproveDesc: "An AI tool wants to connect to your account. Approve to generate an API token automatically.",
34
+ mcpAuthDevice: "Device",
35
+ mcpAuthApproveBtn: "Approve Connection",
36
+ mcpAuthDeny: "Deny",
37
+ loading: "Loading...",
38
+ };
39
+ // ─── Component ──────────────────────────────────────────────
40
+ /**
41
+ * ApiTokensPage — Full-page component for managing MCP API tokens.
42
+ *
43
+ * Features:
44
+ * - List, create, and revoke API tokens
45
+ * - Copy-once token display with warning
46
+ * - MCP device approval flow (Claude Code browser auth)
47
+ * - Usage statistics (total calls, top tools)
48
+ * - Fully themed via --tetra-* CSS variables
49
+ * - i18n via labels prop
50
+ *
51
+ * Requires these Tetra backend routes:
52
+ * - addMcpTokenRoutes (GET/POST/DELETE /mcp-tokens)
53
+ * - addMcpUsageRoutes (GET /mcp-usage)
54
+ * - addMcpAuthRoutes (GET/POST /mcp-auth) — optional, for device approval
55
+ */
56
+ export function ApiTokensPage({ apiFetch: fetchFn, apiBasePath = "/api", apiUrl, mcpAuthId, labels: customLabels, dateLocale = "en-US", className, }) {
57
+ const l = { ...DEFAULT_LABELS, ...customLabels };
58
+ const [tokens, setTokens] = useState([]);
59
+ const [usage, setUsage] = useState(null);
60
+ const [usagePeriod, setUsagePeriod] = useState("30d");
61
+ const [loading, setLoading] = useState(true);
62
+ // Create token state
63
+ const [showCreate, setShowCreate] = useState(false);
64
+ const [newName, setNewName] = useState("");
65
+ const [creating, setCreating] = useState(false);
66
+ const [newToken, setNewToken] = useState(null);
67
+ const [copied, setCopied] = useState(false);
68
+ // MCP auth approval
69
+ const [approving, setApproving] = useState(false);
70
+ const [approved, setApproved] = useState(false);
71
+ const [mcpAuthDevice, setMcpAuthDevice] = useState(null);
72
+ const [mcpAuthValid, setMcpAuthValid] = useState(false);
73
+ const [mcpAuthError, setMcpAuthError] = useState(null);
74
+ // Validate MCP auth request on load
75
+ useEffect(() => {
76
+ if (!mcpAuthId)
77
+ return;
78
+ fetchFn(`${apiBasePath}/mcp-auth/status/${mcpAuthId}`)
79
+ .then(async (res) => {
80
+ if (res.ok) {
81
+ const body = await res.json();
82
+ const data = body.data ?? body;
83
+ if (data.status === "pending") {
84
+ setMcpAuthDevice(data.device_name);
85
+ setMcpAuthValid(true);
86
+ }
87
+ else {
88
+ setMcpAuthError("already_approved");
89
+ }
90
+ }
91
+ else {
92
+ setMcpAuthError("expired");
93
+ }
94
+ })
95
+ .catch(() => setMcpAuthError("expired"));
96
+ }, [mcpAuthId, fetchFn, apiBasePath]);
97
+ const loadTokens = useCallback(async () => {
98
+ const res = await fetchFn(`${apiBasePath}/mcp-tokens`);
99
+ if (res.ok) {
100
+ const body = await res.json();
101
+ setTokens((body.data ?? body).tokens || []);
102
+ }
103
+ setLoading(false);
104
+ }, [fetchFn, apiBasePath]);
105
+ const loadUsage = useCallback(async (period) => {
106
+ const res = await fetchFn(`${apiBasePath}/mcp-usage?period=${period}`);
107
+ if (res.ok) {
108
+ const body = await res.json();
109
+ setUsage(body.data ?? body);
110
+ }
111
+ }, [fetchFn, apiBasePath]);
112
+ useEffect(() => {
113
+ loadTokens();
114
+ loadUsage(usagePeriod);
115
+ }, [loadTokens, loadUsage, usagePeriod]);
116
+ async function handleCreate() {
117
+ setCreating(true);
118
+ const res = await fetchFn(`${apiBasePath}/mcp-tokens`, {
119
+ method: "POST",
120
+ body: JSON.stringify({ name: newName || undefined }),
121
+ });
122
+ if (res.ok) {
123
+ const body = await res.json();
124
+ const data = body.data ?? body;
125
+ setNewToken(data.token);
126
+ setShowCreate(false);
127
+ setNewName("");
128
+ loadTokens();
129
+ }
130
+ setCreating(false);
131
+ }
132
+ async function handleRevoke(tokenId) {
133
+ if (!confirm(l.revokeConfirm))
134
+ return;
135
+ await fetchFn(`${apiBasePath}/mcp-tokens/${tokenId}`, { method: "DELETE" });
136
+ loadTokens();
137
+ }
138
+ async function handleMcpApprove() {
139
+ if (!mcpAuthId)
140
+ return;
141
+ setApproving(true);
142
+ const res = await fetchFn(`${apiBasePath}/mcp-auth/approve/${mcpAuthId}`, {
143
+ method: "POST",
144
+ });
145
+ if (res.ok) {
146
+ setApproved(true);
147
+ loadTokens();
148
+ }
149
+ setApproving(false);
150
+ }
151
+ function copyToken() {
152
+ if (newToken) {
153
+ navigator.clipboard.writeText(newToken);
154
+ setCopied(true);
155
+ setTimeout(() => setCopied(false), 2000);
156
+ }
157
+ }
158
+ // ─── Styles (using --tetra-* tokens) ─────────────────────
159
+ const cardStyle = {
160
+ borderRadius: "var(--tetra-radius-lg, 12px)",
161
+ border: "1px solid var(--tetra-border)",
162
+ background: "var(--tetra-bg)",
163
+ padding: 24,
164
+ marginBottom: 24,
165
+ };
166
+ const btnPrimary = {
167
+ borderRadius: "var(--tetra-radius, 8px)",
168
+ background: "var(--tetra-accent)",
169
+ color: "var(--tetra-text-inverted)",
170
+ padding: "6px 12px",
171
+ fontSize: 14,
172
+ fontWeight: 500,
173
+ border: "none",
174
+ cursor: "pointer",
175
+ };
176
+ const btnOutline = {
177
+ borderRadius: "var(--tetra-radius, 8px)",
178
+ border: "1px solid var(--tetra-border)",
179
+ background: "transparent",
180
+ color: "var(--tetra-text)",
181
+ padding: "6px 12px",
182
+ fontSize: 14,
183
+ fontWeight: 500,
184
+ cursor: "pointer",
185
+ };
186
+ const btnDanger = {
187
+ borderRadius: "var(--tetra-radius, 8px)",
188
+ border: "1px solid var(--tetra-danger)",
189
+ background: "transparent",
190
+ color: "var(--tetra-danger)",
191
+ padding: "4px 10px",
192
+ fontSize: 12,
193
+ fontWeight: 500,
194
+ cursor: "pointer",
195
+ };
196
+ const inputStyle = {
197
+ width: "100%",
198
+ borderRadius: "var(--tetra-radius, 8px)",
199
+ border: "1px solid var(--tetra-border)",
200
+ padding: "6px 12px",
201
+ fontSize: 14,
202
+ color: "var(--tetra-text)",
203
+ background: "var(--tetra-bg)",
204
+ outline: "none",
205
+ };
206
+ return (_jsxs("div", { className: className, children: [_jsx("h1", { style: { marginBottom: 24, fontSize: 20, fontWeight: 700, color: "var(--tetra-text)" }, children: l.title }), _jsx("p", { style: { marginBottom: 24, fontSize: 14, color: "var(--tetra-text-muted)" }, children: l.description }), mcpAuthId && mcpAuthValid && !approved && (_jsxs("div", { style: { ...cardStyle, borderColor: "var(--tetra-accent)", background: "var(--tetra-accent-subtle)" }, children: [_jsx("h2", { style: { marginBottom: 4, fontSize: 14, fontWeight: 600, color: "var(--tetra-text)" }, children: l.mcpAuthApprove }), _jsx("p", { style: { marginBottom: 8, fontSize: 14, color: "var(--tetra-text-muted)" }, children: l.mcpAuthApproveDesc }), mcpAuthDevice && (_jsxs("p", { style: { marginBottom: 16, fontSize: 14, fontWeight: 500, color: "var(--tetra-text)" }, children: [l.mcpAuthDevice, ": ", mcpAuthDevice] })), _jsxs("div", { style: { display: "flex", gap: 12 }, children: [_jsx("button", { onClick: handleMcpApprove, disabled: approving, style: { ...btnPrimary, opacity: approving ? 0.5 : 1 }, children: approving ? "..." : l.mcpAuthApproveBtn }), _jsx("button", { onClick: () => window.history.replaceState({}, "", window.location.pathname), style: btnOutline, children: l.mcpAuthDeny })] })] })), mcpAuthId && mcpAuthError && !approved && (_jsx("div", { style: { ...cardStyle, borderColor: "var(--tetra-danger)", background: "var(--tetra-danger-subtle)" }, children: _jsx("p", { style: { fontSize: 14, color: "var(--tetra-danger)" }, children: mcpAuthError === "expired"
207
+ ? "This connection request has expired. Please try again from your AI tool."
208
+ : "This connection was already approved." }) })), approved && (_jsx("div", { style: { ...cardStyle, borderColor: "var(--tetra-success)", background: "var(--tetra-success-subtle)" }, children: _jsx("p", { style: { fontSize: 14, fontWeight: 500, color: "var(--tetra-success)" }, children: "Connection approved. The AI tool will receive the token automatically." }) })), newToken && (_jsxs("div", { style: { ...cardStyle, borderColor: "var(--tetra-warning)", borderWidth: 2, background: "var(--tetra-warning-subtle)" }, children: [_jsx("p", { style: { marginBottom: 8, fontSize: 14, fontWeight: 500, color: "var(--tetra-text)" }, children: l.newTokenWarning }), _jsxs("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: [_jsx("code", { style: {
209
+ flex: 1,
210
+ overflowX: "auto",
211
+ borderRadius: "var(--tetra-radius-sm, 4px)",
212
+ background: "var(--tetra-bg-muted)",
213
+ padding: "8px 12px",
214
+ fontSize: 12,
215
+ fontFamily: "var(--tetra-font-mono)",
216
+ color: "var(--tetra-text)",
217
+ }, children: newToken }), _jsx("button", { onClick: copyToken, style: btnPrimary, children: copied ? l.copied : l.copy })] })] })), _jsxs("div", { style: cardStyle, children: [_jsxs("div", { style: { marginBottom: 16, display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [_jsx("h2", { style: { fontSize: 14, fontWeight: 600, color: "var(--tetra-text)" }, children: l.title }), !showCreate && (_jsx("button", { onClick: () => setShowCreate(true), style: btnPrimary, children: l.createToken }))] }), showCreate && (_jsxs("div", { style: {
218
+ marginBottom: 16,
219
+ display: "flex",
220
+ alignItems: "flex-end",
221
+ gap: 12,
222
+ borderRadius: "var(--tetra-radius, 8px)",
223
+ border: "1px solid var(--tetra-border)",
224
+ background: "var(--tetra-bg-subtle)",
225
+ padding: 12,
226
+ }, children: [_jsxs("div", { style: { flex: 1 }, children: [_jsx("label", { style: { display: "block", marginBottom: 4, fontSize: 12, fontWeight: 500, color: "var(--tetra-text-muted)" }, children: l.tokenName }), _jsx("input", { type: "text", value: newName, onChange: (e) => setNewName(e.target.value), placeholder: l.namePlaceholder, style: inputStyle, onKeyDown: (e) => e.key === "Enter" && handleCreate() })] }), _jsx("button", { onClick: handleCreate, disabled: creating, style: { ...btnPrimary, opacity: creating ? 0.5 : 1 }, children: l.create }), _jsx("button", { onClick: () => { setShowCreate(false); setNewName(""); }, style: btnOutline, children: l.cancel })] })), loading ? (_jsx("p", { style: { fontSize: 14, color: "var(--tetra-text-muted)" }, children: l.loading })) : tokens.length === 0 ? (_jsx("p", { style: { fontSize: 14, color: "var(--tetra-text-muted)" }, children: l.noTokens })) : (_jsx("div", { children: tokens.map((token, i) => (_jsxs("div", { style: {
227
+ display: "flex",
228
+ alignItems: "center",
229
+ justifyContent: "space-between",
230
+ padding: "12px 0",
231
+ borderTop: i > 0 ? "1px solid var(--tetra-border-subtle)" : "none",
232
+ }, children: [_jsxs("div", { children: [_jsx("p", { style: { fontSize: 14, fontWeight: 500, color: "var(--tetra-text)" }, children: token.name }), _jsxs("p", { style: { fontSize: 12, color: "var(--tetra-text-muted)" }, children: [l.created, " ", new Date(token.created_at).toLocaleDateString(dateLocale), " · ", l.lastUsed, " ", token.last_used_at
233
+ ? new Date(token.last_used_at).toLocaleDateString(dateLocale)
234
+ : l.never] })] }), _jsx("div", { style: { display: "flex", alignItems: "center", gap: 8 }, children: token.is_active ? (_jsxs(_Fragment, { children: [_jsx("span", { style: {
235
+ borderRadius: 99,
236
+ background: "var(--tetra-success-subtle)",
237
+ padding: "2px 8px",
238
+ fontSize: 12,
239
+ fontWeight: 500,
240
+ color: "var(--tetra-success)",
241
+ }, children: l.active }), _jsx("button", { onClick: () => handleRevoke(token.id), style: btnDanger, children: l.revoke })] })) : (_jsx("span", { style: {
242
+ borderRadius: 99,
243
+ background: "var(--tetra-bg-muted)",
244
+ padding: "2px 8px",
245
+ fontSize: 12,
246
+ fontWeight: 500,
247
+ color: "var(--tetra-text-muted)",
248
+ }, children: l.revoked })) })] }, token.id))) }))] }), apiUrl && (_jsxs("div", { style: cardStyle, children: [_jsx("h2", { style: { marginBottom: 8, fontSize: 14, fontWeight: 600, color: "var(--tetra-text)" }, children: l.connectWith }), _jsxs("code", { style: {
249
+ display: "block",
250
+ borderRadius: "var(--tetra-radius-sm, 4px)",
251
+ background: "var(--tetra-bg-muted)",
252
+ padding: "8px 12px",
253
+ fontSize: 12,
254
+ fontFamily: "var(--tetra-font-mono)",
255
+ color: "var(--tetra-text)",
256
+ }, children: [l.connectCommand, " ", apiUrl, "/api/mcp --header \"Authorization: Bearer YOUR_TOKEN\""] })] })), _jsxs("div", { style: { ...cardStyle, marginBottom: 0 }, children: [_jsxs("div", { style: { marginBottom: 16, display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [_jsx("h2", { style: { fontSize: 14, fontWeight: 600, color: "var(--tetra-text)" }, children: l.usage }), _jsxs("select", { value: usagePeriod, onChange: (e) => setUsagePeriod(e.target.value), style: {
257
+ borderRadius: "var(--tetra-radius-sm, 4px)",
258
+ border: "1px solid var(--tetra-border)",
259
+ padding: "4px 8px",
260
+ fontSize: 12,
261
+ color: "var(--tetra-text)",
262
+ background: "var(--tetra-bg)",
263
+ }, children: [_jsx("option", { value: "7d", children: l.last7d }), _jsx("option", { value: "30d", children: l.last30d }), _jsx("option", { value: "90d", children: l.last90d })] })] }), usage ? (_jsxs("div", { children: [_jsxs("p", { style: { marginBottom: 16, fontSize: 24, fontWeight: 700, color: "var(--tetra-text)" }, children: [usage.total_calls, " ", _jsx("span", { style: { fontSize: 14, fontWeight: 400, color: "var(--tetra-text-muted)" }, children: l.totalCalls })] }), usage.by_tool.length > 0 && (_jsxs("div", { children: [_jsx("p", { style: { marginBottom: 8, fontSize: 12, fontWeight: 500, color: "var(--tetra-text-muted)" }, children: l.topTools }), _jsx("div", { style: { display: "flex", flexDirection: "column", gap: 6 }, children: usage.by_tool.slice(0, 5).map((item) => (_jsxs("div", { style: { display: "flex", alignItems: "center", justifyContent: "space-between" }, children: [_jsx("span", { style: { fontSize: 14, color: "var(--tetra-text)" }, children: item.tool }), _jsxs("span", { style: { fontSize: 12, color: "var(--tetra-text-muted)" }, children: [item.count, " ", l.calls] })] }, item.tool))) })] }))] })) : (_jsx("p", { style: { fontSize: 14, color: "var(--tetra-text-muted)" }, children: l.loading }))] })] }));
264
+ }
265
+ //# sourceMappingURL=ApiTokensPage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiTokensPage.js","sourceRoot":"","sources":["../../src/components/ApiTokensPage.tsx"],"names":[],"mappings":"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"}
@@ -16,4 +16,5 @@ export { OrgSwitcher } from "./components/OrgSwitcher.js";
16
16
  export { ProtectedRoute } from "./components/ProtectedRoute.js";
17
17
  export { InfiniteGrid, type InfiniteGridProps, } from "./components/InfiniteGrid.js";
18
18
  export { ListDetailLayout, type ListDetailLayoutProps, } from "./components/ListDetailLayout.js";
19
+ export { ApiTokensPage, type ApiTokensPageProps, type ApiTokensPageLabels, type ApiToken, type UsageStats, } from "./components/ApiTokensPage.js";
19
20
  //# sourceMappingURL=components.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"components.d.ts","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,+BAA+B,CAAC"}
@@ -17,4 +17,6 @@ export { ProtectedRoute } from "./components/ProtectedRoute.js";
17
17
  // Layout components
18
18
  export { InfiniteGrid, } from "./components/InfiniteGrid.js";
19
19
  export { ListDetailLayout, } from "./components/ListDetailLayout.js";
20
+ // MCP API token management
21
+ export { ApiTokensPage, } from "./components/ApiTokensPage.js";
20
22
  //# sourceMappingURL=components.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,iBAAiB,GAGlB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAA2D,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,oBAAoB;AACpB,OAAO,EACL,YAAY,GAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,GAEjB,MAAM,kCAAkC,CAAC"}
1
+ {"version":3,"file":"components.js","sourceRoot":"","sources":["../src/components.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,iBAAiB,GAGlB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAA2D,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAA2B,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,YAAY,EAA0B,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,oBAAoB;AACpB,OAAO,EACL,YAAY,GAEb,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,GAEjB,MAAM,kCAAkC,CAAC;AAE1C,2BAA2B;AAC3B,OAAO,EACL,aAAa,GAKd,MAAM,+BAA+B,CAAC"}
package/dist/index.d.ts CHANGED
@@ -28,6 +28,7 @@ export { CookieConsent, type CookieConsentProps } from "./components/CookieConse
28
28
  export { OAuthButtons, type OAuthButtonsProps } from "./components/OAuthButtons.js";
29
29
  export { InfiniteGrid, type InfiniteGridProps, } from "./components/InfiniteGrid.js";
30
30
  export { ListDetailLayout, type ListDetailLayoutProps, } from "./components/ListDetailLayout.js";
31
+ export { ApiTokensPage, type ApiTokensPageProps, type ApiTokensPageLabels, type ApiToken, type UsageStats, } from "./components/ApiTokensPage.js";
31
32
  export { useDebounce } from "./hooks/useDebounce.js";
32
33
  export { useDialog } from "./hooks/useDialog.js";
33
34
  export { useIsMobile } from "./hooks/use-mobile.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,YAAY,EACV,WAAW,EACX,QAAQ,IAAI,aAAa,EACzB,YAAY,IAAI,iBAAiB,EACjC,YAAY,EACZ,eAAe,EACf,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,UAAU,GACX,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAGpC,OAAO,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,2BAA2B,CAAC;AACrF,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACjF,OAAO,EACL,IAAI,EACJ,UAAU,EACV,UAAU,EACV,SAAS,EACT,eAAe,EACf,WAAW,GACZ,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,MAAM,EACN,YAAY,EACZ,aAAa,EACb,WAAW,EACX,aAAa,EACb,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,WAAW,EACX,iBAAiB,GAClB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,MAAM,EACN,WAAW,EACX,WAAW,EACX,aAAa,EACb,aAAa,EACb,WAAW,EACX,UAAU,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,GACvB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,EACL,WAAW,EACX,SAAS,EACT,WAAW,EACX,SAAS,EACT,QAAQ,EACR,SAAS,EACT,YAAY,GACb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,WAAW,GACZ,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAG7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EACL,gBAAgB,EAChB,KAAK,YAAY,GAClB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,SAAS,EACT,kBAAkB,EAClB,KAAK,gBAAgB,GACtB,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAGhE,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAC;AACxD,OAAO,EACL,iBAAiB,EACjB,KAAK,UAAU,EACf,KAAK,sBAAsB,GAC5B,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAC;AACvE,OAAO,EACL,WAAW,EACX,cAAc,EACd,QAAQ,EACR,YAAY,GACb,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,KAAK,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC7G,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACvF,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAGpF,OAAO,EACL,YAAY,EACZ,KAAK,iBAAiB,GACvB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,gBAAgB,EAChB,KAAK,qBAAqB,GAC3B,MAAM,kCAAkC,CAAC;AAC1C,OAAO,EACL,aAAa,EACb,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,QAAQ,EACb,KAAK,UAAU,GAChB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EACL,eAAe,EACf,KAAK,sBAAsB,EAC3B,KAAK,qBAAqB,GAC3B,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,mBAAmB,GACpB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,EACL,gBAAgB,EAChB,mBAAmB,EACnB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,GACtB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,KAAK,WAAW,GACjB,MAAM,2BAA2B,CAAC;AAGnC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,qCAAqC,CAAC;AAG/E,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,YAAY,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEjF,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAEvF,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAGxF,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,kCAAkC,CAAC;AAG1C,OAAO,EAAE,YAAY,EAAE,KAAK,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,WAAW,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,KAAK,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,YAAY,EAAE,WAAW,IAAI,kBAAkB,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,eAAe,IAAI,sBAAsB,EAAE,gBAAgB,IAAI,uBAAuB,EAAE,iBAAiB,IAAI,wBAAwB,EAAE,QAAQ,IAAI,eAAe,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -39,6 +39,7 @@ export { OAuthButtons } from "./components/OAuthButtons.js";
39
39
  // Layout components
40
40
  export { InfiniteGrid, } from "./components/InfiniteGrid.js";
41
41
  export { ListDetailLayout, } from "./components/ListDetailLayout.js";
42
+ export { ApiTokensPage, } from "./components/ApiTokensPage.js";
42
43
  // Hooks — utility
43
44
  export { useDebounce } from "./hooks/useDebounce.js";
44
45
  export { useDialog } from "./hooks/useDialog.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -4,7 +4,7 @@
4
4
  "publishConfig": {
5
5
  "access": "restricted"
6
6
  },
7
- "version": "0.2.0",
7
+ "version": "0.2.2",
8
8
  "description": "Shared React frontend framework for Tetra platform projects (Soulbatical BV) — config-driven components, hooks, providers, and styling",
9
9
  "type": "module",
10
10
  "main": "dist/index.js",
@@ -94,7 +94,7 @@
94
94
  "@supabase/supabase-js": "^2.0.0",
95
95
  "@tanstack/react-query": "^5.0.0",
96
96
  "@tanstack/react-table": "^8.0.0",
97
- "next": "^14.0.0 || ^15.0.0",
97
+ "next": "^14.0.0 || ^15.0.0 || ^16.0.0",
98
98
  "next-themes": "^0.4.0",
99
99
  "react": "^18.0.0 || ^19.0.0",
100
100
  "react-dom": "^18.0.0 || ^19.0.0",
@@ -137,6 +137,7 @@
137
137
  "tailwind-merge": "^2.6.0"
138
138
  },
139
139
  "devDependencies": {
140
+ "@daypilot/daypilot-lite-react": "^5.4.1",
140
141
  "@soulbatical/tetra-core": "^0.1.0",
141
142
  "@supabase/supabase-js": "2.93.3",
142
143
  "@tanstack/react-query": "^5.0.0",