@copilotkit/web-inspector 1.66.4 → 1.67.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.
Files changed (56) hide show
  1. package/README.md +92 -13
  2. package/dist/index.cjs +1436 -429
  3. package/dist/index.cjs.map +1 -1
  4. package/dist/index.d.cts +118 -8
  5. package/dist/index.d.cts.map +1 -1
  6. package/dist/index.d.mts +118 -8
  7. package/dist/index.d.mts.map +1 -1
  8. package/dist/index.mjs +1438 -431
  9. package/dist/index.mjs.map +1 -1
  10. package/dist/index.umd.js +1721 -533
  11. package/dist/index.umd.js.map +1 -1
  12. package/dist/lib/inspector-metadata.cjs +60 -0
  13. package/dist/lib/inspector-metadata.cjs.map +1 -0
  14. package/dist/lib/inspector-metadata.mjs +60 -0
  15. package/dist/lib/inspector-metadata.mjs.map +1 -0
  16. package/dist/lib/telemetry.cjs +117 -32
  17. package/dist/lib/telemetry.cjs.map +1 -1
  18. package/dist/lib/telemetry.mjs +116 -33
  19. package/dist/lib/telemetry.mjs.map +1 -1
  20. package/dist/lib/thread-selection.cjs +36 -0
  21. package/dist/lib/thread-selection.cjs.map +1 -0
  22. package/dist/lib/thread-selection.mjs +35 -0
  23. package/dist/lib/thread-selection.mjs.map +1 -0
  24. package/dist/package.cjs +1 -1
  25. package/dist/package.mjs +1 -1
  26. package/dist/styles/generated.cjs +1 -1
  27. package/dist/styles/generated.cjs.map +1 -1
  28. package/dist/styles/generated.mjs +1 -1
  29. package/dist/styles/generated.mjs.map +1 -1
  30. package/package.json +9 -4
  31. package/CHANGELOG.md +0 -505
  32. package/dev/css-raw-import.spec.ts +0 -31
  33. package/dev/index.html +0 -115
  34. package/dev/main.ts +0 -165
  35. package/dev/vite.config.ts +0 -30
  36. package/src/__tests__/memory-recall.spec.ts +0 -76
  37. package/src/__tests__/telemetry-egress-guard.spec.ts +0 -41
  38. package/src/__tests__/web-inspector.spec.ts +0 -3935
  39. package/src/assets/inspector-logo-icon.svg +0 -8
  40. package/src/assets/inspector-logo.svg +0 -40
  41. package/src/components.d.ts +0 -20
  42. package/src/index.ts +0 -11849
  43. package/src/lib/__tests__/telemetry.test.ts +0 -557
  44. package/src/lib/context-helpers.ts +0 -166
  45. package/src/lib/persistence.ts +0 -206
  46. package/src/lib/telemetry.ts +0 -474
  47. package/src/lib/testing/telemetry-egress-guard.ts +0 -33
  48. package/src/lib/types.ts +0 -19
  49. package/src/styles/generated.css +0 -2
  50. package/src/styles/tailwind.css +0 -23
  51. package/src/types/css.d.ts +0 -4
  52. package/src/types/svg.d.ts +0 -4
  53. package/tsconfig.json +0 -14
  54. package/tsdown.config.ts +0 -45
  55. package/vitest.config.ts +0 -66
  56. package/vitest.setup.ts +0 -84
@@ -1,474 +0,0 @@
1
- // Inspector-side anonymous telemetry. V1 events fire from index.ts for
2
- // banner and thread-inspection interactions. POSTs directly from the browser
3
- // to the CopilotKit telemetry sink at `telemetry.copilotkit.ai/ingest`,
4
- // where a Lambda fan-out forwards events to PostHog / Reo / Scarf.
5
- //
6
- // The endpoint URL is intentionally clearly named so it's obvious in
7
- // DevTools / Network tab — transparency for opt-in users.
8
- //
9
- // Privacy invariants enforced here:
10
- // - We never send message content, agent state, prompts, completions,
11
- // or banner markdown. Properties are scoped to event metadata only
12
- // (banner_id/timestamp, cta location). Reviewers should grep call
13
- // sites for any unintended payload.
14
- // - The opt-out short-circuits before any network call. There is no
15
- // buffer, no retry queue.
16
- // - All errors are swallowed; telemetry must never break the host app.
17
-
18
- import {
19
- getOrCreateTelemetryDistinctId,
20
- hasTelemetryDisclosureBeenShown,
21
- isTelemetryOptedOut,
22
- markTelemetryDisclosureShown,
23
- } from "./persistence.js";
24
- import packageJson from "../../package.json" with { type: "json" };
25
-
26
- // V1 funnel events. Namespaced `oss.inspector.*` so the lambda's
27
- // owned-prefix gate (oss-path-to-production) can accept them server-side
28
- // without a per-event sink deploy.
29
- export const TELEMETRY_EVENTS = {
30
- opened: "oss.inspector.opened",
31
- bannerViewed: "oss.inspector.banner_viewed",
32
- bannerClicked: "oss.inspector.banner_clicked",
33
- bannerDismissed: "oss.inspector.banner_dismissed",
34
- threadsTabClicked: "oss.inspector.threads_tab_clicked",
35
- threadsLockedViewed: "oss.inspector.threads_locked_viewed",
36
- threadsIntelligenceSignupClicked:
37
- "oss.inspector.threads_intelligence_signup_clicked",
38
- threadsTalkToEngineerClicked:
39
- "oss.inspector.threads_talk_to_engineer_clicked",
40
- talkToEngineerClicked: "oss.inspector.talk_to_engineer_clicked",
41
- threadsEmptyEnabledViewed: "oss.inspector.threads_empty_enabled_viewed",
42
- threadsEnabledViewed: "oss.inspector.threads_enabled_viewed",
43
- threadsExampleViewed: "oss.inspector.threads_example_viewed",
44
- threadsExampleSelected: "oss.inspector.threads_example_selected",
45
- threadsExampleTourStarted: "oss.inspector.threads_example_tour_started",
46
- threadsExampleTourStepViewed:
47
- "oss.inspector.threads_example_tour_step_viewed",
48
- threadsExampleTourDismissed: "oss.inspector.threads_example_tour_dismissed",
49
- threadsExampleTourCompleted: "oss.inspector.threads_example_tour_completed",
50
- threadsExampleTourReopened: "oss.inspector.threads_example_tour_reopened",
51
- memoriesTabClicked: "oss.inspector.memories_tab_clicked",
52
- } as const;
53
-
54
- export type TelemetryEvent =
55
- (typeof TELEMETRY_EVENTS)[keyof typeof TELEMETRY_EVENTS];
56
-
57
- // Per the OSS-96 ticket — the URL is intentionally clearly named for
58
- // transparency in the network tab.
59
- export const TELEMETRY_INGEST_URL = "https://telemetry.copilotkit.ai/ingest";
60
-
61
- // Surfaced in console disclosure and the in-product opt-out panel.
62
- // Keep in sync with the canonical telemetry docs page on main
63
- // (`docs/content/docs/(root)/(other)/telemetry/index.mdx`).
64
- // Mirror constant: packages/runtime/src/lib/telemetry-disclosure.ts
65
- export const TELEMETRY_DOCS_URL = "https://docs.copilotkit.ai/telemetry";
66
-
67
- const PACKAGE_NAME = "@copilotkit/web-inspector";
68
- const PACKAGE_VERSION = packageJson.version;
69
-
70
- // 3-second cap so a slow gateway can't hang the host app. Matches the
71
- // runtime's existing scarf-client convention.
72
- const FETCH_TIMEOUT_MS = 3000;
73
-
74
- // Events that carry package identity (`package_name` / `package_version`) and
75
- // the inspector's anonymous distinct-ID alongside their own properties.
76
- // Threads / memories events have always been enriched this way; `opened`
77
- // joins them so panel-open volume can be segmented by inspector version.
78
- // Banner events deliberately keep the flat shape their existing dashboards
79
- // read.
80
- function isEnrichedTelemetryEvent(event: TelemetryEvent): boolean {
81
- return (
82
- event === TELEMETRY_EVENTS.opened ||
83
- event === TELEMETRY_EVENTS.threadsTabClicked ||
84
- event === TELEMETRY_EVENTS.threadsLockedViewed ||
85
- event === TELEMETRY_EVENTS.threadsIntelligenceSignupClicked ||
86
- event === TELEMETRY_EVENTS.threadsTalkToEngineerClicked ||
87
- event === TELEMETRY_EVENTS.talkToEngineerClicked ||
88
- event === TELEMETRY_EVENTS.threadsEmptyEnabledViewed ||
89
- event === TELEMETRY_EVENTS.threadsEnabledViewed ||
90
- event === TELEMETRY_EVENTS.threadsExampleViewed ||
91
- event === TELEMETRY_EVENTS.threadsExampleSelected ||
92
- event === TELEMETRY_EVENTS.threadsExampleTourStarted ||
93
- event === TELEMETRY_EVENTS.threadsExampleTourStepViewed ||
94
- event === TELEMETRY_EVENTS.threadsExampleTourDismissed ||
95
- event === TELEMETRY_EVENTS.threadsExampleTourCompleted ||
96
- event === TELEMETRY_EVENTS.threadsExampleTourReopened ||
97
- event === TELEMETRY_EVENTS.memoriesTabClicked
98
- );
99
- }
100
-
101
- export type RuntimeUrlType =
102
- | "missing"
103
- | "relative"
104
- | "localhost"
105
- | "same_origin"
106
- | "remote"
107
- | "invalid";
108
-
109
- export function getRuntimeUrlType(
110
- runtimeUrl: string | undefined,
111
- ): RuntimeUrlType {
112
- if (!runtimeUrl) return "missing";
113
- if (runtimeUrl.startsWith("/") && !runtimeUrl.startsWith("//")) {
114
- return "relative";
115
- }
116
-
117
- try {
118
- const baseHref =
119
- typeof window !== "undefined"
120
- ? window.location.href
121
- : "https://copilotkit.ai";
122
- const url = new URL(runtimeUrl, baseHref);
123
- const baseUrl = new URL(baseHref);
124
- const hostname = url.hostname.toLowerCase();
125
-
126
- if (
127
- hostname === "localhost" ||
128
- hostname === "127.0.0.1" ||
129
- hostname === "[::1]"
130
- ) {
131
- return "localhost";
132
- }
133
-
134
- return url.origin === baseUrl.origin ? "same_origin" : "remote";
135
- } catch {
136
- return "invalid";
137
- }
138
- }
139
-
140
- /**
141
- * Fire-and-forget telemetry send. Returns synchronously; the network
142
- * call is dispatched in the background and any failure is swallowed.
143
- *
144
- * Short-circuits when the user has opted out. Does NOT itself trigger
145
- * the first-run disclosure — call `maybeShowDisclosure()` from the
146
- * inspector's mount lifecycle instead.
147
- */
148
- export function track(
149
- event: TelemetryEvent,
150
- properties: Record<string, unknown> = {},
151
- ): void {
152
- if (isTelemetryOptedOut()) return;
153
-
154
- const distinctId = getOrCreateTelemetryDistinctId();
155
- const enrichedProperties = isEnrichedTelemetryEvent(event)
156
- ? {
157
- package_name: PACKAGE_NAME,
158
- package_version: PACKAGE_VERSION,
159
- inspector_distinct_id: distinctId,
160
- }
161
- : {};
162
- let body: string;
163
- try {
164
- body = JSON.stringify({
165
- event,
166
- properties: {
167
- ...properties,
168
- ...enrichedProperties,
169
- distinct_id: distinctId,
170
- },
171
- package: {
172
- name: PACKAGE_NAME,
173
- ...(isEnrichedTelemetryEvent(event)
174
- ? { version: PACKAGE_VERSION }
175
- : {}),
176
- },
177
- ts: Math.floor(Date.now() / 1000),
178
- });
179
- } catch {
180
- return;
181
- }
182
-
183
- void postBestEffort(TELEMETRY_INGEST_URL, body, distinctId);
184
- }
185
-
186
- // --- Typed per-event helpers ---
187
- // These enforce the known property shape for each V1 event at the call
188
- // site, so callers can't accidentally include PII under a wrong key.
189
-
190
- /**
191
- * Where an announcement was rendered when the event fired. The announcement
192
- * has two surfaces — the preview bubble beside the *collapsed* floating
193
- * button, and the card *inside* the opened panel — and reach on one says
194
- * nothing about attention on the other. Always stamped at fire time, never
195
- * inferred at fetch time.
196
- */
197
- export type BannerSurface = "collapsed_preview" | "expanded_card";
198
-
199
- export function trackBannerViewed(props: {
200
- banner_id: string;
201
- surface: BannerSurface;
202
- cta_label?: string;
203
- }): void {
204
- track(TELEMETRY_EVENTS.bannerViewed, props);
205
- }
206
-
207
- export function trackBannerClicked(props: {
208
- banner_id: string;
209
- cta: "body" | "dismiss";
210
- cta_label?: string;
211
- }): void {
212
- track(TELEMETRY_EVENTS.bannerClicked, props);
213
- }
214
-
215
- /**
216
- * First-class dismissal signal. Emitted *in addition to*
217
- * `banner_clicked { cta: "dismiss" }` rather than replacing it — the
218
- * existing dashboards read the `cta` value, so removing it would silently
219
- * zero them out. New reporting should prefer this event, whose `surface`
220
- * says whether the user swatted the bubble away or dismissed the card
221
- * after opening the panel.
222
- */
223
- export function trackBannerDismissed(props: {
224
- banner_id: string;
225
- surface: BannerSurface;
226
- cta_label?: string;
227
- }): void {
228
- track(TELEMETRY_EVENTS.bannerDismissed, props);
229
- }
230
-
231
- /**
232
- * How the panel was opened. Restoring a persisted-open panel on mount is
233
- * deliberately NOT a source: it is not an open *intent*, and counting it
234
- * would turn every dev-server hot reload into an "open".
235
- */
236
- export type InspectorOpenSource = "floating_button" | "announcement_preview";
237
-
238
- export type InspectorOpenedTelemetryProps = {
239
- open_source: InspectorOpenSource;
240
- package_name?: typeof PACKAGE_NAME;
241
- package_version?: string;
242
- inspector_distinct_id?: string;
243
- license_status?:
244
- | "valid"
245
- | "none"
246
- | "expired"
247
- | "expiring"
248
- | "invalid"
249
- | "unknown";
250
- runtime_mode?: "sse" | "intelligence";
251
- runtime_url_type?: RuntimeUrlType;
252
- /** True when an unseen announcement was on screen at open time. */
253
- has_unseen_announcement?: boolean;
254
- };
255
-
256
- /**
257
- * Panel-open signal (OSS-566). Before this event, opens could only be
258
- * inferred from in-panel activity (a floor) or from `banner_clicked`
259
- * cta=`body` (which misses the floating-button path entirely).
260
- */
261
- export function trackInspectorOpened(
262
- props: InspectorOpenedTelemetryProps,
263
- ): void {
264
- track(TELEMETRY_EVENTS.opened, props);
265
- }
266
-
267
- export type InspectorThreadTelemetryProps = {
268
- package_name?: typeof PACKAGE_NAME;
269
- package_version?: string;
270
- inspector_distinct_id?: string;
271
- posthog_distinct_id?: string;
272
- intelligence_status?:
273
- | "intelligence_not_enabled"
274
- | "intelligence_enabled"
275
- | "unknown";
276
- thread_service_status?: "unavailable" | "available" | "unknown" | "error";
277
- license_status?:
278
- | "valid"
279
- | "none"
280
- | "expired"
281
- | "expiring"
282
- | "invalid"
283
- | "unknown";
284
- runtime_mode?: "sse" | "intelligence";
285
- runtime_url_type?: RuntimeUrlType;
286
- cta_surface?:
287
- | "threads_locked"
288
- | "threads_header"
289
- | "threads_empty"
290
- | "threads_populated";
291
- cta?: "signup" | "talk_to_engineer";
292
- telemetry_disabled?: boolean;
293
- thread_count?: number;
294
- example_thread_id?: string;
295
- tour_step?: number;
296
- tour_tab?: "timeline" | "raw-events" | "state";
297
- dismiss_method?: "skip" | "done";
298
- };
299
-
300
- export function trackThreadsTabClicked(
301
- props: InspectorThreadTelemetryProps = {},
302
- ): void {
303
- track(TELEMETRY_EVENTS.threadsTabClicked, props);
304
- }
305
-
306
- export function trackThreadsLockedViewed(
307
- props: InspectorThreadTelemetryProps,
308
- ): void {
309
- track(TELEMETRY_EVENTS.threadsLockedViewed, props);
310
- }
311
-
312
- export function trackThreadsIntelligenceSignupClicked(
313
- props: InspectorThreadTelemetryProps,
314
- ): void {
315
- track(TELEMETRY_EVENTS.threadsIntelligenceSignupClicked, props);
316
- }
317
-
318
- export function trackThreadsTalkToEngineerClicked(
319
- props: InspectorThreadTelemetryProps,
320
- ): void {
321
- track(TELEMETRY_EVENTS.threadsTalkToEngineerClicked, props);
322
- }
323
-
324
- export function trackTalkToEngineerClicked(
325
- props: InspectorThreadTelemetryProps,
326
- ): void {
327
- track(TELEMETRY_EVENTS.talkToEngineerClicked, props);
328
- }
329
-
330
- export function trackThreadsEmptyEnabledViewed(
331
- props: InspectorThreadTelemetryProps,
332
- ): void {
333
- track(TELEMETRY_EVENTS.threadsEmptyEnabledViewed, props);
334
- }
335
-
336
- export function trackThreadsEnabledViewed(
337
- props: InspectorThreadTelemetryProps,
338
- ): void {
339
- track(TELEMETRY_EVENTS.threadsEnabledViewed, props);
340
- }
341
-
342
- export function trackThreadsExampleViewed(
343
- props: InspectorThreadTelemetryProps,
344
- ): void {
345
- track(TELEMETRY_EVENTS.threadsExampleViewed, props);
346
- }
347
-
348
- export function trackThreadsExampleSelected(
349
- props: InspectorThreadTelemetryProps,
350
- ): void {
351
- track(TELEMETRY_EVENTS.threadsExampleSelected, props);
352
- }
353
-
354
- export function trackThreadsExampleTourStarted(
355
- props: InspectorThreadTelemetryProps,
356
- ): void {
357
- track(TELEMETRY_EVENTS.threadsExampleTourStarted, props);
358
- }
359
-
360
- export function trackThreadsExampleTourStepViewed(
361
- props: InspectorThreadTelemetryProps,
362
- ): void {
363
- track(TELEMETRY_EVENTS.threadsExampleTourStepViewed, props);
364
- }
365
-
366
- export function trackThreadsExampleTourDismissed(
367
- props: InspectorThreadTelemetryProps,
368
- ): void {
369
- track(TELEMETRY_EVENTS.threadsExampleTourDismissed, props);
370
- }
371
-
372
- export function trackThreadsExampleTourCompleted(
373
- props: InspectorThreadTelemetryProps,
374
- ): void {
375
- track(TELEMETRY_EVENTS.threadsExampleTourCompleted, props);
376
- }
377
-
378
- export function trackThreadsExampleTourReopened(
379
- props: InspectorThreadTelemetryProps,
380
- ): void {
381
- track(TELEMETRY_EVENTS.threadsExampleTourReopened, props);
382
- }
383
-
384
- export type InspectorMemoryTelemetryProps = {
385
- package_name?: typeof PACKAGE_NAME;
386
- package_version?: string;
387
- inspector_distinct_id?: string;
388
- posthog_distinct_id?: string;
389
- memory_count?: number;
390
- available?: boolean;
391
- };
392
-
393
- export function trackMemoriesTabClicked(
394
- props: InspectorMemoryTelemetryProps = {},
395
- ): void {
396
- track(TELEMETRY_EVENTS.memoriesTabClicked, props);
397
- }
398
-
399
- /**
400
- * Returns the inspector's anonymous distinct-ID for cross-domain
401
- * propagation onto outbound banner-CTA links, or `null` when the user
402
- * is opted out.
403
- *
404
- * The website / Ops API reads this query param on signup-flow landing
405
- * pages and calls `posthog.alias(...)` to merge the inspector's anon
406
- * ID with the website's anon ID, enabling the
407
- * `banner_viewed → banner_clicked → signup_attributed` funnel.
408
- * `identify()` itself is out of scope here (it happens on signup, in
409
- * the website / Ops API).
410
- *
411
- * Opt-out short-circuits this too: if the user has opted out, we do
412
- * NOT leak an anon ID across domains.
413
- */
414
- export function getTelemetryDistinctIdForUrl(): string | null {
415
- if (isTelemetryOptedOut()) return null;
416
- return getOrCreateTelemetryDistinctId();
417
- }
418
-
419
- /**
420
- * Seeds the anonymous distinct-ID into localStorage on inspector mount
421
- * so it is ready for cross-domain propagation onto banner-CTA links
422
- * even before the first event fires. No-op when the user has opted out.
423
- */
424
- export function ensureTelemetryDistinctId(): void {
425
- if (isTelemetryOptedOut()) return;
426
- getOrCreateTelemetryDistinctId();
427
- }
428
-
429
- /**
430
- * Fires the one-time console disclosure on inspector mount, when the
431
- * user is not opted out and hasn't seen it before. Idempotent across
432
- * calls within a single session because `markTelemetryDisclosureShown`
433
- * persists to localStorage.
434
- *
435
- * If the user is opted out, we deliberately do nothing and do NOT mark
436
- * the flag — so a future opt-in flips back to "first run" behavior.
437
- */
438
- export function maybeShowDisclosure(): void {
439
- if (isTelemetryOptedOut()) return;
440
- if (hasTelemetryDisclosureBeenShown()) return;
441
- // eslint-disable-next-line no-console
442
- console.info(
443
- `[CopilotKit Inspector] anonymous interaction telemetry enabled — see ${TELEMETRY_DOCS_URL} to opt out.`,
444
- );
445
- markTelemetryDisclosureShown();
446
- }
447
-
448
- export { isTelemetryOptedOut };
449
-
450
- async function postBestEffort(
451
- url: string,
452
- body: string,
453
- distinctId: string,
454
- ): Promise<void> {
455
- if (typeof fetch === "undefined") return;
456
- const controller = new AbortController();
457
- const timeoutId = setTimeout(() => controller.abort(), FETCH_TIMEOUT_MS);
458
- try {
459
- await fetch(url, {
460
- method: "POST",
461
- headers: {
462
- "Content-Type": "application/json",
463
- "X-CopilotKit-Telemetry-Id": distinctId,
464
- },
465
- body,
466
- signal: controller.signal,
467
- // No credentials / no Authorization header — anonymous endpoint.
468
- });
469
- } catch {
470
- // Silent failure — telemetry must not break the application.
471
- } finally {
472
- clearTimeout(timeoutId);
473
- }
474
- }
@@ -1,33 +0,0 @@
1
- // Test-only helper (imported by vitest.setup.ts — never by the bundle entry).
2
- //
3
- // This suite runs in jsdom, where a real `fetch` exists. Inspector telemetry is
4
- // browser-side and fire-and-forget, so any test that drives a banner / threads /
5
- // open code path without stubbing fetch POSTs a real `oss.inspector.*` event to
6
- // the live sink — from a developer's machine and from every CI run — polluting
7
- // the dataset with traffic indistinguishable from user activity. The
8
- // announcement-dismissal tests did exactly this before this guard existed.
9
- //
10
- // No environment variable can prevent it: the inspector's opt-out is the
11
- // runtime's `/info` response, and these tests never boot a runtime.
12
- //
13
- // The guard swallows requests to the sink and delegates everything else, so
14
- // tests that stub or spy on fetch themselves are unaffected.
15
-
16
- export const TELEMETRY_SINK_ORIGIN = "https://telemetry.copilotkit.ai";
17
-
18
- export function createTelemetryEgressGuard(
19
- realFetch: typeof fetch,
20
- ): typeof fetch {
21
- return (input, init) => {
22
- const url =
23
- typeof input === "string"
24
- ? input
25
- : input instanceof URL
26
- ? input.href
27
- : input.url;
28
- if (url?.startsWith(TELEMETRY_SINK_ORIGIN)) {
29
- return Promise.resolve(new Response(null, { status: 204 }));
30
- }
31
- return realFetch(input, init);
32
- };
33
- }
package/src/lib/types.ts DELETED
@@ -1,19 +0,0 @@
1
- export type Position = { x: number; y: number };
2
-
3
- export type Anchor = {
4
- horizontal: "left" | "right";
5
- vertical: "top" | "bottom";
6
- };
7
-
8
- export type Size = { width: number; height: number };
9
-
10
- export type ContextKey = "button" | "window";
11
-
12
- export type DockMode = "floating" | "docked-left";
13
-
14
- export type ContextState = {
15
- position: Position;
16
- size: Size;
17
- anchor: Anchor;
18
- anchorOffset: Position;
19
- };
@@ -1,2 +0,0 @@
1
- /*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */
2
- @layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-backdrop-blur:initial;--tw-backdrop-brightness:initial;--tw-backdrop-contrast:initial;--tw-backdrop-grayscale:initial;--tw-backdrop-hue-rotate:initial;--tw-backdrop-invert:initial;--tw-backdrop-opacity:initial;--tw-backdrop-saturate:initial;--tw-backdrop-sepia:initial;--tw-scale-x:1;--tw-scale-y:1;--tw-scale-z:1}}}@layer theme{:root,:host{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-amber-50:oklch(98.7% .022 95.277);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-200:oklch(92.4% .12 95.746);--color-amber-600:oklch(66.6% .179 58.318);--color-amber-700:oklch(55.5% .163 48.998);--color-amber-800:oklch(47.3% .137 46.201);--color-amber-900:oklch(41.4% .112 45.904);--color-green-100:oklch(96.2% .044 156.743);--color-green-700:oklch(52.7% .154 150.069);--color-green-800:oklch(44.8% .119 151.328);--color-emerald-50:oklch(97.9% .021 166.113);--color-emerald-200:oklch(90.5% .093 164.15);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-700:oklch(50.8% .118 165.612);--color-sky-50:oklch(97.7% .013 236.62);--color-sky-200:oklch(90.1% .058 230.902);--color-sky-700:oklch(50% .134 242.749);--color-blue-50:oklch(97% .014 254.604);--color-blue-100:oklch(93.2% .032 255.585);--color-blue-200:oklch(88.2% .059 254.128);--color-blue-600:oklch(54.6% .245 262.881);--color-blue-700:oklch(48.8% .243 264.376);--color-blue-800:oklch(42.4% .199 265.638);--color-violet-50:oklch(96.9% .016 293.756);--color-violet-200:oklch(89.4% .057 293.283);--color-violet-700:oklch(49.1% .27 292.581);--color-purple-50:oklch(97.7% .014 308.299);--color-purple-200:oklch(90.2% .063 306.703);--color-purple-700:oklch(49.6% .265 301.924);--color-fuchsia-50:oklch(97.7% .017 320.058);--color-fuchsia-200:oklch(90.3% .076 319.62);--color-fuchsia-700:oklch(51.8% .253 323.949);--color-rose-50:oklch(96.9% .015 12.422);--color-rose-200:oklch(89.2% .058 10.001);--color-rose-500:oklch(64.5% .246 16.439);--color-rose-700:oklch(51.4% .222 16.935);--color-slate-200:oklch(92.9% .013 255.508);--color-slate-500:oklch(55.4% .046 257.417);--color-slate-700:oklch(37.2% .044 257.287);--color-slate-800:oklch(27.9% .041 260.031);--color-slate-900:oklch(20.8% .042 265.755);--color-slate-950:oklch(12.9% .042 264.695);--color-gray-50:oklch(98.5% .002 247.839);--color-gray-100:oklch(96.7% .003 264.542);--color-gray-200:oklch(92.8% .006 264.531);--color-gray-300:oklch(87.2% .01 258.338);--color-gray-400:oklch(70.7% .022 261.325);--color-gray-500:oklch(55.1% .027 264.364);--color-gray-600:oklch(44.6% .03 256.802);--color-gray-700:oklch(37.3% .034 259.733);--color-gray-800:oklch(27.8% .033 256.848);--color-gray-900:oklch(21% .034 264.665);--color-black:#000;--color-white:#fff;--spacing:.25rem;--container-xs:20rem;--container-md:28rem;--text-xs:.75rem;--text-xs--line-height:calc(1/.75);--text-sm:.875rem;--text-sm--line-height:calc(1.25/.875);--text-lg:1.125rem;--text-lg--line-height:calc(1.75/1.125);--font-weight-medium:500;--font-weight-semibold:600;--leading-snug:1.375;--leading-relaxed:1.625;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--animate-pulse:pulse 2s cubic-bezier(.4,0,.6,1)infinite;--blur-sm:8px;--blur-md:12px;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}:host{font-family:var(--font-sans);color:var(--color-slate-900);background-color:#0000;display:block}}@layer components;@layer utilities{.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.top-0{top:calc(var(--spacing)*0)}.right-0{right:calc(var(--spacing)*0)}.right-1{right:calc(var(--spacing)*1)}.bottom-1{bottom:calc(var(--spacing)*1)}.left-0{left:calc(var(--spacing)*0)}.z-10{z-index:10}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.m-0{margin:calc(var(--spacing)*0)}.mx-4{margin-inline:calc(var(--spacing)*4)}.my-1{margin-block:calc(var(--spacing)*1)}.my-3{margin-block:calc(var(--spacing)*3)}.mt-0\.5{margin-top:calc(var(--spacing)*.5)}.mt-1{margin-top:calc(var(--spacing)*1)}.mt-1\.5{margin-top:calc(var(--spacing)*1.5)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-3{margin-top:calc(var(--spacing)*3)}.mt-4{margin-top:calc(var(--spacing)*4)}.mt-6{margin-top:calc(var(--spacing)*6)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-3{margin-bottom:calc(var(--spacing)*3)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.ml-auto{margin-left:auto}.box-border{box-sizing:border-box}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-3{height:calc(var(--spacing)*3)}.h-3\.5{height:calc(var(--spacing)*3.5)}.h-4{height:calc(var(--spacing)*4)}.h-5{height:calc(var(--spacing)*5)}.h-6{height:calc(var(--spacing)*6)}.h-8{height:calc(var(--spacing)*8)}.h-10{height:calc(var(--spacing)*10)}.h-12{height:calc(var(--spacing)*12)}.h-full{height:100%}.max-h-64{max-height:calc(var(--spacing)*64)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-3{width:calc(var(--spacing)*3)}.w-3\.5{width:calc(var(--spacing)*3.5)}.w-4{width:calc(var(--spacing)*4)}.w-5{width:calc(var(--spacing)*5)}.w-6{width:calc(var(--spacing)*6)}.w-8{width:calc(var(--spacing)*8)}.w-9{width:calc(var(--spacing)*9)}.w-10{width:calc(var(--spacing)*10)}.w-12{width:calc(var(--spacing)*12)}.w-40{width:calc(var(--spacing)*40)}.w-auto{width:auto}.w-full{width:100%}.max-w-\[240px\]{max-width:240px}.max-w-md{max-width:var(--container-md)}.max-w-xs{max-width:var(--container-xs)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[160px\]{min-width:160px}.min-w-\[200px\]{min-width:200px}.flex-1{flex:1}.flex-shrink,.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.table-fixed{table-layout:fixed}.border-collapse{border-collapse:collapse}.translate-x-0\.5{--tw-translate-x:calc(var(--spacing)*.5);translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-x-4{--tw-translate-x:calc(var(--spacing)*4);translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-\[2px\]{--tw-translate-y:calc(2px*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-pulse{animation:var(--animate-pulse)}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.cursor-nwse-resize{cursor:nwse-resize}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*1)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*1)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-2>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*2)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*2)*calc(1 - var(--tw-space-y-reverse)))}:where(.space-y-3>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing)*3)*var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing)*3)*calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-gray-200>:not(:last-child)){border-color:var(--color-gray-200)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-amber-200{border-color:var(--color-amber-200)}.border-blue-200{border-color:var(--color-blue-200)}.border-emerald-200{border-color:var(--color-emerald-200)}.border-fuchsia-200{border-color:var(--color-fuchsia-200)}.border-gray-100{border-color:var(--color-gray-100)}.border-gray-200{border-color:var(--color-gray-200)}.border-purple-200{border-color:var(--color-purple-200)}.border-rose-200{border-color:var(--color-rose-200)}.border-sky-200{border-color:var(--color-sky-200)}.border-slate-200{border-color:var(--color-slate-200)}.border-violet-200{border-color:var(--color-violet-200)}.border-white\/20{border-color:#fff3}@supports (color:color-mix(in lab, red, red)){.border-white\/20{border-color:color-mix(in oklab,var(--color-white)20%,transparent)}}.bg-amber-50{background-color:var(--color-amber-50)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-blue-50{background-color:var(--color-blue-50)}.bg-blue-100{background-color:var(--color-blue-100)}.bg-emerald-50{background-color:var(--color-emerald-50)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-fuchsia-50{background-color:var(--color-fuchsia-50)}.bg-gray-50{background-color:var(--color-gray-50)}.bg-gray-50\/50{background-color:#f9fafb80}@supports (color:color-mix(in lab, red, red)){.bg-gray-50\/50{background-color:color-mix(in oklab,var(--color-gray-50)50%,transparent)}}.bg-gray-100{background-color:var(--color-gray-100)}.bg-gray-300{background-color:var(--color-gray-300)}.bg-gray-400{background-color:var(--color-gray-400)}.bg-gray-800{background-color:var(--color-gray-800)}.bg-gray-900{background-color:var(--color-gray-900)}.bg-green-100{background-color:var(--color-green-100)}.bg-purple-50{background-color:var(--color-purple-50)}.bg-rose-50{background-color:var(--color-rose-50)}.bg-rose-500{background-color:var(--color-rose-500)}.bg-sky-50{background-color:var(--color-sky-50)}.bg-slate-900{background-color:var(--color-slate-900)}.bg-slate-950\/95{background-color:#020618f2}@supports (color:color-mix(in lab, red, red)){.bg-slate-950\/95{background-color:color-mix(in oklab,var(--color-slate-950)95%,transparent)}}.bg-violet-50{background-color:var(--color-violet-50)}.bg-white{background-color:var(--color-white)}.bg-white\/60{background-color:#fff9}@supports (color:color-mix(in lab, red, red)){.bg-white\/60{background-color:color-mix(in oklab,var(--color-white)60%,transparent)}}.bg-white\/95{background-color:#fffffff2}@supports (color:color-mix(in lab, red, red)){.bg-white\/95{background-color:color-mix(in oklab,var(--color-white)95%,transparent)}}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.px-1{padding-inline:calc(var(--spacing)*1)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1{padding-block:calc(var(--spacing)*1)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-8{padding-block:calc(var(--spacing)*8)}.py-10{padding-block:calc(var(--spacing)*10)}.text-center{text-align:center}.text-left{text-align:left}.align-middle{vertical-align:middle}.font-mono{font-family:var(--font-mono)}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[9px\]{font-size:9px}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.leading-relaxed{--tw-leading:var(--leading-relaxed);line-height:var(--leading-relaxed)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.break-words{overflow-wrap:break-word}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-amber-600{color:var(--color-amber-600)}.text-amber-700{color:var(--color-amber-700)}.text-amber-800{color:var(--color-amber-800)}.text-amber-900{color:var(--color-amber-900)}.text-blue-600{color:var(--color-blue-600)}.text-blue-700{color:var(--color-blue-700)}.text-blue-800{color:var(--color-blue-800)}.text-emerald-700{color:var(--color-emerald-700)}.text-fuchsia-700{color:var(--color-fuchsia-700)}.text-gray-300{color:var(--color-gray-300)}.text-gray-400{color:var(--color-gray-400)}.text-gray-500{color:var(--color-gray-500)}.text-gray-600{color:var(--color-gray-600)}.text-gray-700{color:var(--color-gray-700)}.text-gray-800{color:var(--color-gray-800)}.text-gray-900{color:var(--color-gray-900)}.text-green-700{color:var(--color-green-700)}.text-green-800{color:var(--color-green-800)}.text-purple-700{color:var(--color-purple-700)}.text-rose-700{color:var(--color-rose-700)}.text-sky-700{color:var(--color-sky-700)}.text-slate-500{color:var(--color-slate-500)}.text-slate-700{color:var(--color-slate-700)}.text-slate-800{color:var(--color-slate-800)}.text-slate-900{color:var(--color-slate-900)}.text-violet-700{color:var(--color-violet-700)}.text-white{color:var(--color-white)}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.opacity-80{opacity:.8}.shadow{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-1{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.ring-black\/5{--tw-ring-color:#0000000d}@supports (color:color-mix(in lab, red, red)){.ring-black\/5{--tw-ring-color:color-mix(in oklab,var(--color-black)5%,transparent)}}.ring-transparent{--tw-ring-color:transparent}.ring-white\/10{--tw-ring-color:#ffffff1a}@supports (color:color-mix(in lab, red, red)){.ring-white\/10{--tw-ring-color:color-mix(in oklab,var(--color-white)10%,transparent)}}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}.hover\:scale-105:hover{--tw-scale-x:105%;--tw-scale-y:105%;--tw-scale-z:105%;scale:var(--tw-scale-x)var(--tw-scale-y)}.hover\:border-gray-300:hover{border-color:var(--color-gray-300)}.hover\:border-white\/30:hover{border-color:#ffffff4d}@supports (color:color-mix(in lab, red, red)){.hover\:border-white\/30:hover{border-color:color-mix(in oklab,var(--color-white)30%,transparent)}}.hover\:bg-blue-50\/50:hover{background-color:#eff6ff80}@supports (color:color-mix(in lab, red, red)){.hover\:bg-blue-50\/50:hover{background-color:color-mix(in oklab,var(--color-blue-50)50%,transparent)}}.hover\:bg-gray-50:hover{background-color:var(--color-gray-50)}.hover\:bg-gray-100:hover{background-color:var(--color-gray-100)}.hover\:bg-gray-200:hover{background-color:var(--color-gray-200)}.hover\:bg-gray-800:hover{background-color:var(--color-gray-800)}.hover\:bg-slate-900\/95:hover{background-color:#0f172bf2}@supports (color:color-mix(in lab, red, red)){.hover\:bg-slate-900\/95:hover{background-color:color-mix(in oklab,var(--color-slate-900)95%,transparent)}}.hover\:text-gray-600:hover{color:var(--color-gray-600)}.hover\:text-gray-900:hover{color:var(--color-gray-900)}.hover\:text-slate-900:hover{color:var(--color-slate-900)}}.focus\:border-gray-300:focus{border-color:var(--color-gray-300)}.focus\:bg-gray-50:focus{background-color:var(--color-gray-50)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:ring-gray-200:focus{--tw-ring-color:var(--color-gray-200)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:outline:focus-visible{outline-style:var(--tw-outline-style);outline-width:1px}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-2:focus-visible{outline-offset:2px}.focus-visible\:outline-\[\#BEC2FF\]:focus-visible{outline-color:#bec2ff}.focus-visible\:outline-gray-300:focus-visible{outline-color:var(--color-gray-300)}.focus-visible\:outline-gray-400:focus-visible{outline-color:var(--color-gray-400)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}@media (min-width:48rem){.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}.\[\&\>svg\]\:\!h-8>svg{height:calc(var(--spacing)*8)!important}.\[\&\>svg\]\:\!w-8>svg{width:calc(var(--spacing)*8)!important}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@keyframes pulse{50%{opacity:.5}}
@@ -1,23 +0,0 @@
1
- @import "tailwindcss";
2
- @source "../**/*.{ts,tsx}";
3
-
4
- @layer base {
5
- :host {
6
- @apply block font-sans text-slate-900;
7
- background-color: transparent;
8
- }
9
- }
10
-
11
- @layer utilities {
12
- .sr-only {
13
- position: absolute;
14
- width: 1px;
15
- height: 1px;
16
- padding: 0;
17
- margin: -1px;
18
- overflow: hidden;
19
- clip: rect(0, 0, 0, 0);
20
- white-space: nowrap;
21
- border-width: 0;
22
- }
23
- }
@@ -1,4 +0,0 @@
1
- declare module "*.css" {
2
- const content: string;
3
- export default content;
4
- }
@@ -1,4 +0,0 @@
1
- declare module "*.svg" {
2
- const content: string;
3
- export default content;
4
- }
package/tsconfig.json DELETED
@@ -1,14 +0,0 @@
1
- {
2
- "extends": "@copilotkit/typescript-config/base.json",
3
- "compilerOptions": {
4
- "outDir": "dist",
5
- "rootDir": "src",
6
- "declaration": true,
7
- "declarationMap": true,
8
- "sourceMap": true,
9
- "experimentalDecorators": true,
10
- "useDefineForClassFields": false
11
- },
12
- "include": ["src/**/*"],
13
- "exclude": ["dist", "node_modules"]
14
- }