@databricks/appkit-ui 0.35.1 → 0.35.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/docs/api/appkit/Interface.FilePolicyUser.md +15 -1
- package/docs/plugins/files.md +199 -19
- package/package.json +1 -1
- package/sbom.cdx.json +1 -1
|
@@ -11,6 +11,8 @@ id: string;
|
|
|
11
11
|
|
|
12
12
|
```
|
|
13
13
|
|
|
14
|
+
Identifier of the requesting caller. For end-user HTTP requests this is the value of the `x-forwarded-user` header; for direct SDK calls and header-less HTTP requests (which run as the service principal), this is the service principal's ID.
|
|
15
|
+
|
|
14
16
|
***
|
|
15
17
|
|
|
16
18
|
### isServicePrincipal?[](#isserviceprincipal "Direct link to isServicePrincipal?")
|
|
@@ -20,4 +22,16 @@ optional isServicePrincipal: boolean;
|
|
|
20
22
|
|
|
21
23
|
```
|
|
22
24
|
|
|
23
|
-
`true` when the
|
|
25
|
+
`true` when the call is executing as the service principal — either a direct SDK call (`appKit.files(...)`) or an HTTP request that arrived without an `x-forwarded-user` / `x-forwarded-access-token` header. Policy authors typically check this first to distinguish SP traffic from end-user traffic.
|
|
26
|
+
|
|
27
|
+
The flag reflects the **policy user** the plugin selects, which combines the volume's effective `auth` mode with the headers on the incoming request. The full matrix:
|
|
28
|
+
|
|
29
|
+
| Volume `auth` | Path | Headers | `isServicePrincipal` | Notes |
|
|
30
|
+
| ------------------- | -------------------------- | --------------------------- | -------------------- | ------------------------------------------------------------------------------------------- |
|
|
31
|
+
| `service-principal` | HTTP | `x-forwarded-user` present | `false` (or unset) | Pre-OBO behavior. Policy sees the end user but the SDK call still runs as the SP. |
|
|
32
|
+
| `service-principal` | HTTP | no `x-forwarded-user` | `true` | Headerless request — policy and SDK both run as the SP. |
|
|
33
|
+
| `on-behalf-of-user` | HTTP | valid token + user header | `false` | Real end-user execution. Policy sees the user; the SDK call also runs as the user. |
|
|
34
|
+
| `on-behalf-of-user` | HTTP | missing token, dev-fallback | `true` | Only reachable when `NODE_ENV === "development"` (prod returns 401). Treated as SP traffic. |
|
|
35
|
+
| any | Programmatic `asUser(req)` | `x-forwarded-user` present | `false` | `asUser` extracts the user; the SDK call runs as the user inside `runInUserContext`. |
|
|
36
|
+
|
|
37
|
+
Programmatic calls without `asUser(req)` always set `isServicePrincipal: true` because no request is available to derive a user identity from. OBO volume defaults apply only to HTTP route traffic; for programmatic per-user execution, use `asUser(req)`.
|
package/docs/plugins/files.md
CHANGED
|
@@ -11,7 +11,7 @@ File operations against Databricks Unity Catalog Volumes. Supports listing, read
|
|
|
11
11
|
* Upload size limits with streaming enforcement
|
|
12
12
|
* Automatic cache invalidation on write operations
|
|
13
13
|
* Custom content type mappings
|
|
14
|
-
* Per-
|
|
14
|
+
* **Per-volume auth modes**: each volume can run as the service principal (the default) or on behalf of the end user
|
|
15
15
|
* **Access policies**: Per-volume policy functions that gate read and write operations
|
|
16
16
|
|
|
17
17
|
## Basic usage[](#basic-usage "Direct link to Basic usage")
|
|
@@ -73,6 +73,11 @@ interface IFilesConfig {
|
|
|
73
73
|
customContentTypes?: Record<string, string>;
|
|
74
74
|
/** Maximum upload size in bytes. Defaults to 5 GB. Inherited by all volumes. */
|
|
75
75
|
maxUploadSize?: number;
|
|
76
|
+
/**
|
|
77
|
+
* Plugin-level default auth mode. Volumes inherit this when they do not
|
|
78
|
+
* set `VolumeConfig.auth`. Defaults to `"service-principal"`.
|
|
79
|
+
*/
|
|
80
|
+
auth?: "service-principal" | "on-behalf-of-user";
|
|
76
81
|
}
|
|
77
82
|
|
|
78
83
|
interface VolumeConfig {
|
|
@@ -82,6 +87,11 @@ interface VolumeConfig {
|
|
|
82
87
|
maxUploadSize?: number;
|
|
83
88
|
/** Map of file extensions to MIME types for this volume. Overrides plugin-level default. */
|
|
84
89
|
customContentTypes?: Record<string, string>;
|
|
90
|
+
/**
|
|
91
|
+
* Per-volume auth mode. Inherits from `IFilesConfig.auth` when not set;
|
|
92
|
+
* defaults to `"service-principal"`.
|
|
93
|
+
*/
|
|
94
|
+
auth?: "service-principal" | "on-behalf-of-user";
|
|
85
95
|
}
|
|
86
96
|
|
|
87
97
|
```
|
|
@@ -102,6 +112,80 @@ files({
|
|
|
102
112
|
|
|
103
113
|
```
|
|
104
114
|
|
|
115
|
+
### Auth modes[](#auth-modes "Direct link to Auth modes")
|
|
116
|
+
|
|
117
|
+
Each volume runs in one of two auth modes. The mode determines which identity executes the underlying Unity Catalog SDK call — and therefore which UC grant applies:
|
|
118
|
+
|
|
119
|
+
| Mode | SDK identity | Required UC grant on the volume |
|
|
120
|
+
| ------------------------------- | ----------------------------- | ------------------------------------------------------- |
|
|
121
|
+
| `"service-principal"` (default) | the app's service principal | `WRITE_VOLUME` (or read-equivalent) on the **SP** |
|
|
122
|
+
| `"on-behalf-of-user"` | the end user from the request | `WRITE_VOLUME` (or read-equivalent) on the **end user** |
|
|
123
|
+
|
|
124
|
+
#### Resolution order[](#resolution-order "Direct link to Resolution order")
|
|
125
|
+
|
|
126
|
+
For each volume the plugin resolves the auth mode in this order:
|
|
127
|
+
|
|
128
|
+
```text
|
|
129
|
+
VolumeConfig.auth > IFilesConfig.auth > "service-principal"
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Set `IFilesConfig.auth` to flip the default for every volume in one place, and override individual volumes via `VolumeConfig.auth`.
|
|
134
|
+
|
|
135
|
+
#### Service-principal mode (default)[](#service-principal-mode-default "Direct link to Service-principal mode (default)")
|
|
136
|
+
|
|
137
|
+
Every HTTP request executes as the app's service principal. The end-user identity (from `x-forwarded-user`) is still passed into the volume policy, but the SDK call uses the SP's credentials:
|
|
138
|
+
|
|
139
|
+
```ts
|
|
140
|
+
files({
|
|
141
|
+
volumes: {
|
|
142
|
+
exports: {
|
|
143
|
+
// auth is implicit: "service-principal"
|
|
144
|
+
policy: files.policy.publicRead(),
|
|
145
|
+
},
|
|
146
|
+
},
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Use SP mode for shared resources, app-managed exports, or any case where you want a single grant on the SP to govern all access.
|
|
152
|
+
|
|
153
|
+
#### On-behalf-of-user mode[](#on-behalf-of-user-mode "Direct link to On-behalf-of-user mode")
|
|
154
|
+
|
|
155
|
+
Every HTTP request executes as the end user. The plugin pulls the user identity and access token from the headers Databricks Apps inject (`x-forwarded-user` and `x-forwarded-access-token`) and runs the SDK call inside `runInUserContext`:
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
files({
|
|
159
|
+
volumes: {
|
|
160
|
+
"user-uploads": {
|
|
161
|
+
auth: "on-behalf-of-user",
|
|
162
|
+
// The policy sees the real end user (isServicePrincipal: false).
|
|
163
|
+
// You can use the volume policy in addition to UC grants.
|
|
164
|
+
policy: (action, _resource, user) =>
|
|
165
|
+
// Only allow real end users, never the SP.
|
|
166
|
+
!user.isServicePrincipal,
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
Use OBO mode when the per-user UC grant is meaningful — e.g. enforcement of UC ACLs at the SDK layer, or audit trails that need to attribute the API call to the end user instead of the app's SP.
|
|
174
|
+
|
|
175
|
+
#### Production vs development behavior[](#production-vs-development-behavior "Direct link to Production vs development behavior")
|
|
176
|
+
|
|
177
|
+
| Environment | OBO request with **valid** token | OBO request with **missing** `x-forwarded-access-token` |
|
|
178
|
+
| ------------------------------------------ | -------------------------------- | ------------------------------------------------------- |
|
|
179
|
+
| Production | Runs as the end user. | `401 Unauthorized` — no SDK call is made. |
|
|
180
|
+
| Development (`NODE_ENV === "development"`) | Runs as the end user. | Logs a warning, falls back to the SP, and continues. |
|
|
181
|
+
|
|
182
|
+
The dev-mode fallback exists so local testing without a Databricks Apps reverse proxy continues to work; deployed apps always have the headers injected.
|
|
183
|
+
|
|
184
|
+
#### Limitations[](#limitations "Direct link to Limitations")
|
|
185
|
+
|
|
186
|
+
* The plugin manifest's `getResourceRequirements()` declares `WRITE_VOLUME` on the **service principal** for every volume, regardless of the volume's `auth` mode. For OBO volumes, the actual permission requirement is on the **end user** — communicate this out-of-band (deployment runbooks, customer onboarding docs) until the plugin manifest schema gains a per-volume auth scope field.
|
|
187
|
+
* OBO volumes disable the read/list cache entirely. The cache layer keys by `getCurrentUserId()`, so a write by user A wouldn't invalidate user B's view of the same path; rather than risk cross-user staleness, OBO traffic skips the cache and fetches fresh on every request. SP volumes still cache (single slice keyed by the SP id).
|
|
188
|
+
|
|
105
189
|
### Permission model[](#permission-model "Direct link to Permission model")
|
|
106
190
|
|
|
107
191
|
There are three layers of access control in the files plugin. Understanding how they interact is critical for securing your app:
|
|
@@ -109,11 +193,14 @@ There are three layers of access control in the files plugin. Understanding how
|
|
|
109
193
|
```text
|
|
110
194
|
┌─────────────────────────────────────────────────┐
|
|
111
195
|
│ Unity Catalog grants │
|
|
112
|
-
│
|
|
196
|
+
│ WRITE_VOLUME on the SP (auth: service-principal)│
|
|
197
|
+
│ WRITE_VOLUME on the user (auth: on-behalf-of-user)│
|
|
113
198
|
├─────────────────────────────────────────────────┤
|
|
114
199
|
│ Execution identity │
|
|
115
|
-
│
|
|
116
|
-
│
|
|
200
|
+
│ Resolved per volume from VolumeConfig.auth ?? │
|
|
201
|
+
│ IFilesConfig.auth ?? "service-principal". │
|
|
202
|
+
│ asUser(req) is a hard override at the SDK │
|
|
203
|
+
│ level for the programmatic API. │
|
|
117
204
|
├─────────────────────────────────────────────────┤
|
|
118
205
|
│ File policies │
|
|
119
206
|
│ Per-volume (action, resource, user) → boolean │
|
|
@@ -122,13 +209,15 @@ There are three layers of access control in the files plugin. Understanding how
|
|
|
122
209
|
|
|
123
210
|
```
|
|
124
211
|
|
|
125
|
-
* **UC grants** control what
|
|
126
|
-
* **Execution identity** determines whose credentials are used for the actual API call.
|
|
127
|
-
* **File policies** are application-level checks evaluated **before** the API call. They receive the
|
|
212
|
+
* **UC grants** control what an identity can do at the Databricks level. Which identity needs the grant depends on the volume's auth mode (see [Auth modes](#auth-modes)). For SP volumes, the SP needs `WRITE_VOLUME` (the plugin declares this in its manifest). For OBO volumes, the **end user** needs `WRITE_VOLUME` on the volume; the SP itself does not.
|
|
213
|
+
* **Execution identity** determines whose credentials are used for the actual API call. Each volume resolves to either the service principal or the end user, per its `auth` setting. The programmatic API also exposes `asUser(req)` to force per-user execution regardless of the volume's `auth`.
|
|
214
|
+
* **File policies** are application-level checks evaluated **before** the API call. They receive a `FilePolicyUser` describing the caller and decide allow/deny. On HTTP routes the policy user is selected based on the volume's `auth` mode and the request headers — see the [`isServicePrincipal` matrix](#policy-user-matrix). On SP volumes when `x-forwarded-user` is absent, the policy receives `{ id: <sp-id>, isServicePrincipal: true }` and decides whether to allow service-principal traffic. This is the only gate that distinguishes between users on HTTP routes.
|
|
128
215
|
|
|
129
216
|
warning
|
|
130
217
|
|
|
131
|
-
|
|
218
|
+
For service-principal volumes, every HTTP request executes as the SP regardless of which user made it — so removing a user's UC `WRITE_VOLUME` grant has **no effect** on HTTP access. Policies are how you restrict what individual users can do through your app.
|
|
219
|
+
|
|
220
|
+
For on-behalf-of-user volumes, requests execute as the requesting user — so each user must have `WRITE_VOLUME` on the volume themselves, and you can rely on UC grants in addition to policies.
|
|
132
221
|
|
|
133
222
|
New in v0.21.0
|
|
134
223
|
|
|
@@ -211,6 +300,58 @@ files({
|
|
|
211
300
|
|
|
212
301
|
```
|
|
213
302
|
|
|
303
|
+
#### OBO policy example[](#obo-policy-example "Direct link to OBO policy example")
|
|
304
|
+
|
|
305
|
+
For on-behalf-of-user volumes, the policy receives `isServicePrincipal: false` whenever the request runs with a real end-user identity. A common pattern is to deny SP traffic outright so anonymous (header-less) calls can't reach the volume:
|
|
306
|
+
|
|
307
|
+
```ts
|
|
308
|
+
import { type FilePolicy } from "@databricks/appkit";
|
|
309
|
+
|
|
310
|
+
// Deny anything running as the service principal — including the dev-mode
|
|
311
|
+
// fallback when no x-forwarded-access-token was provided. Real end users
|
|
312
|
+
// (with isServicePrincipal: false) get the configured access.
|
|
313
|
+
const usersOnly: FilePolicy = (_action, _resource, user) => {
|
|
314
|
+
return user.isServicePrincipal !== true;
|
|
315
|
+
};
|
|
316
|
+
|
|
317
|
+
files({
|
|
318
|
+
volumes: {
|
|
319
|
+
"user-uploads": {
|
|
320
|
+
auth: "on-behalf-of-user",
|
|
321
|
+
policy: usersOnly,
|
|
322
|
+
},
|
|
323
|
+
},
|
|
324
|
+
});
|
|
325
|
+
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
You can compose it with any other policy via `files.policy.all(...)` to add per-action gating:
|
|
329
|
+
|
|
330
|
+
```ts
|
|
331
|
+
files({
|
|
332
|
+
volumes: {
|
|
333
|
+
"user-uploads": {
|
|
334
|
+
auth: "on-behalf-of-user",
|
|
335
|
+
policy: files.policy.all(usersOnly, files.policy.publicRead()),
|
|
336
|
+
},
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
#### Policy user matrix[](#policy-user-matrix "Direct link to Policy user matrix")
|
|
343
|
+
|
|
344
|
+
The plugin selects the policy user based on the volume's effective `auth` mode and the request headers. The full table:
|
|
345
|
+
|
|
346
|
+
| Volume `auth` | Path | Headers | `isServicePrincipal` | Notes |
|
|
347
|
+
| ------------------- | -------------------------- | --------------------------- | -------------------- | ------------------------------------------------------------------------------------------- |
|
|
348
|
+
| `service-principal` | HTTP | `x-forwarded-user` present | `false` (or unset) | Pre-OBO behavior. Policy sees the end user but the SDK call still runs as the SP. |
|
|
349
|
+
| `service-principal` | HTTP | no `x-forwarded-user` | `true` | Headerless request — policy and SDK both run as the SP. |
|
|
350
|
+
| `on-behalf-of-user` | HTTP | valid token + user header | `false` | Real end-user execution. Policy sees the user; the SDK call also runs as the user. |
|
|
351
|
+
| `on-behalf-of-user` | HTTP | missing token, dev-fallback | `true` | Only reachable when `NODE_ENV === "development"` (prod returns 401). Treated as SP traffic. |
|
|
352
|
+
| any | Programmatic `asUser(req)` | `x-forwarded-user` present | `false` | `asUser` extracts the user; the SDK call runs as the user inside `runInUserContext`. |
|
|
353
|
+
| any | Programmatic (no `asUser`) | n/a | `true` | No request available to derive a user — runs as the SP. |
|
|
354
|
+
|
|
214
355
|
#### Enforcement[](#enforcement "Direct link to Enforcement")
|
|
215
356
|
|
|
216
357
|
* **HTTP routes**: Policy checked before every operation. Denied → `403` JSON response with `Policy denied "{action}" on volume "{volumeKey}"`.
|
|
@@ -236,7 +377,7 @@ Dangerous MIME types (`text/html`, `text/javascript`, `application/javascript`,
|
|
|
236
377
|
|
|
237
378
|
## HTTP routes[](#http-routes "Direct link to HTTP routes")
|
|
238
379
|
|
|
239
|
-
Routes are mounted at `/api/files/*`.
|
|
380
|
+
Routes are mounted at `/api/files/*`. Each route resolves the volume's [auth mode](#auth-modes) and either executes as the service principal (the default) or wraps the SDK call in `runInUserContext` for OBO volumes. Before every operation the volume policy runs against the resolved policy user — see the [policy user matrix](#policy-user-matrix) for the exact mapping. See also [Access policies](#access-policies).
|
|
240
381
|
|
|
241
382
|
| Method | Path | Query / Body | Response |
|
|
242
383
|
| ------ | ---------------------- | ---------------------------- | ------------------------------------------------------------ |
|
|
@@ -292,22 +433,37 @@ Write operations (`upload`, `mkdir`, `delete`) automatically invalidate the cach
|
|
|
292
433
|
|
|
293
434
|
## Programmatic API[](#programmatic-api "Direct link to Programmatic API")
|
|
294
435
|
|
|
295
|
-
The `
|
|
436
|
+
The `files` plugin export is a callable that accepts a volume key and returns a `VolumeHandle`. The handle exposes all `VolumeAPI` methods directly and an `asUser(req)` method for opting into per-user execution.
|
|
296
437
|
|
|
297
438
|
```ts
|
|
298
|
-
//
|
|
439
|
+
// Default — runs as the service principal, regardless of the volume's auth
|
|
440
|
+
// setting (no req is available to derive a user from).
|
|
441
|
+
const entries = await appkit.files("uploads").list();
|
|
442
|
+
|
|
443
|
+
// asUser(req) — runs as the end user, regardless of the volume's auth
|
|
444
|
+
// setting. Forces SDK calls into runInUserContext using the request's
|
|
445
|
+
// x-forwarded-user / x-forwarded-access-token headers.
|
|
299
446
|
const entries = await appkit.files("uploads").asUser(req).list();
|
|
300
447
|
const content = await appkit.files("exports").asUser(req).read("report.csv");
|
|
301
448
|
|
|
302
|
-
// Service principal access (logs a warning encouraging OBO)
|
|
303
|
-
const entries = await appkit.files("uploads").list();
|
|
304
|
-
|
|
305
449
|
// Named accessor
|
|
306
450
|
const vol = appkit.files.volume("uploads");
|
|
307
451
|
await vol.asUser(req).list();
|
|
308
452
|
|
|
309
453
|
```
|
|
310
454
|
|
|
455
|
+
### `asUser(req)`[](#asuserreq "Direct link to asuserreq")
|
|
456
|
+
|
|
457
|
+
`asUser(req)` is the supported path for programmatic per-user execution. The returned API runs every method inside `runInUserContext` so the underlying `WorkspaceClient` is the user-token client — the SDK call executes as the user, not just the policy check.
|
|
458
|
+
|
|
459
|
+
In production, `asUser(req)` throws `AuthenticationError.missingToken` when either `x-forwarded-user` or `x-forwarded-access-token` is absent — both headers are required to mint a user-scoped client. In development (`NODE_ENV === "development"`) it logs a warning and falls back to the service principal so local testing without a Databricks Apps reverse proxy keeps working — the fallback skips the `runInUserContext` wrap.
|
|
460
|
+
|
|
461
|
+
Programmatic OBO without `asUser(req)`
|
|
462
|
+
|
|
463
|
+
A volume configured with `auth: "on-behalf-of-user"` only routes through `runInUserContext` on the **HTTP route path**, where the request headers are available. A direct programmatic call — `appkit.files("obo-vol").list()` — has no request to derive an end-user identity from, so it executes against whatever client `getWorkspaceClient()` resolves to at the call site (typically the SP at the top level).
|
|
464
|
+
|
|
465
|
+
For programmatic per-user execution, always use `asUser(req)`. The volume's `auth` mode controls HTTP traffic; `asUser(req)` controls programmatic traffic.
|
|
466
|
+
|
|
311
467
|
### VolumeAPI methods[](#volumeapi-methods "Direct link to VolumeAPI methods")
|
|
312
468
|
|
|
313
469
|
| Method | Signature | Returns |
|
|
@@ -375,9 +531,20 @@ interface FileResource {
|
|
|
375
531
|
}
|
|
376
532
|
|
|
377
533
|
interface FilePolicyUser {
|
|
378
|
-
/**
|
|
534
|
+
/**
|
|
535
|
+
* Identifier of the requesting caller. For end-user HTTP requests this is
|
|
536
|
+
* the value of the `x-forwarded-user` header; for direct SDK calls and
|
|
537
|
+
* header-less HTTP requests (which run as the service principal), this
|
|
538
|
+
* is the service principal's ID.
|
|
539
|
+
*/
|
|
379
540
|
id: string;
|
|
380
|
-
/**
|
|
541
|
+
/**
|
|
542
|
+
* `true` when the call is executing as the service principal — either a
|
|
543
|
+
* direct SDK call (`appKit.files(...)` without `asUser`), an HTTP request
|
|
544
|
+
* with no forwarded headers, or the dev-mode fallback for an OBO volume
|
|
545
|
+
* with a missing token. See the [policy user matrix](#policy-user-matrix)
|
|
546
|
+
* for the full table.
|
|
547
|
+
*/
|
|
381
548
|
isServicePrincipal?: boolean;
|
|
382
549
|
}
|
|
383
550
|
|
|
@@ -394,6 +561,11 @@ interface VolumeConfig {
|
|
|
394
561
|
maxUploadSize?: number;
|
|
395
562
|
/** Map of file extensions to MIME types for this volume. */
|
|
396
563
|
customContentTypes?: Record<string, string>;
|
|
564
|
+
/**
|
|
565
|
+
* Per-volume auth mode. Inherits from `IFilesConfig.auth` when not set;
|
|
566
|
+
* defaults to `"service-principal"`.
|
|
567
|
+
*/
|
|
568
|
+
auth?: "service-principal" | "on-behalf-of-user";
|
|
397
569
|
}
|
|
398
570
|
|
|
399
571
|
interface VolumeAPI {
|
|
@@ -408,7 +580,10 @@ interface VolumeAPI {
|
|
|
408
580
|
preview(filePath: string): Promise<FilePreview>;
|
|
409
581
|
}
|
|
410
582
|
|
|
411
|
-
/**
|
|
583
|
+
/**
|
|
584
|
+
* Volume handle: all VolumeAPI methods (run as the service principal by
|
|
585
|
+
* default) + asUser() to force per-user execution at the SDK level.
|
|
586
|
+
*/
|
|
412
587
|
type VolumeHandle = VolumeAPI & {
|
|
413
588
|
asUser: (req: Request) => VolumeAPI;
|
|
414
589
|
};
|
|
@@ -427,9 +602,12 @@ Built-in extensions: `.png`, `.jpg`, `.jpeg`, `.gif`, `.webp`, `.svg`, `.bmp`, `
|
|
|
427
602
|
|
|
428
603
|
## User context[](#user-context "Direct link to User context")
|
|
429
604
|
|
|
430
|
-
HTTP routes
|
|
605
|
+
HTTP routes execute as either the service principal or the end user, depending on the volume's [auth mode](#auth-modes):
|
|
431
606
|
|
|
432
|
-
|
|
607
|
+
* **Service-principal volumes** (the default): the SP's Databricks credentials are used for the API call. User identity is extracted from the `x-forwarded-user` header and passed to the volume's [access policy](#access-policies) for authorization, but the SDK call still runs as the SP. When the header is absent the policy is handed `{ id: <sp-id>, isServicePrincipal: true }` and decides whether to allow the call — in practice that branch only fires in development without a reverse proxy or when an upstream proxy is misconfigured, since real Databricks Apps runtimes always forward the header. UC grants on the **SP** determine what operations are possible.
|
|
608
|
+
* **On-behalf-of-user volumes**: the end user's access token (from `x-forwarded-access-token`) is used to mint the SDK client, so the API call runs with the user's identity. Both the policy and the SDK see the user. UC grants on the **end user** determine what operations are possible. In production, requests with a missing token return `401`; in development (`NODE_ENV === "development"`) they fall back to the SP with a warning.
|
|
609
|
+
|
|
610
|
+
The programmatic API returns a `VolumeHandle` that exposes all `VolumeAPI` methods directly and an `asUser(req)` method for forcing per-user execution. Calling a method without `asUser()` runs the policy and the SDK call as the SP. `asUser(req)` is a hard override at the SDK level: it forces every subsequent call to execute as the end user inside `runInUserContext`, regardless of the volume's `auth` setting. In production, `asUser(req)` throws `AuthenticationError.missingToken` when either `x-forwarded-user` or `x-forwarded-access-token` is absent — both headers are required. In development it falls back to the service principal instead, so local testing without a reverse proxy continues to work.
|
|
433
611
|
|
|
434
612
|
## Resource requirements[](#resource-requirements "Direct link to Resource requirements")
|
|
435
613
|
|
|
@@ -437,6 +615,8 @@ Volume resources are declared **dynamically** via `getResourceRequirements(confi
|
|
|
437
615
|
|
|
438
616
|
For example, if `DATABRICKS_VOLUME_UPLOADS` and `DATABRICKS_VOLUME_EXPORTS` are set, calling `files()` generates two required volume resources validated at startup — no explicit `volumes` config needed.
|
|
439
617
|
|
|
618
|
+
The manifest declares the grant against the **service principal**. For OBO volumes (`auth: "on-behalf-of-user"`), the actual permission requirement is on the **end user** — communicate this out-of-band in your deployment documentation until the manifest schema gains a per-volume auth scope field.
|
|
619
|
+
|
|
440
620
|
## Error responses[](#error-responses "Direct link to Error responses")
|
|
441
621
|
|
|
442
622
|
All errors return JSON:
|
package/package.json
CHANGED
package/sbom.cdx.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:625d347d-8972-4159-9b9b-c1f33bc47273","version":1,"metadata":{"timestamp":"2026-05-15T14:25:57Z","tools":{"components":[{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}]},"authors":[{"name":"OWASP Foundation"}],"lifecycles":[{"phase":"build"}],"component":{"name":"appkit-ui","group":"@databricks","version":"0.35.1","purl":"pkg:npm/%40databricks/appkit-ui@0.35.1","bom-ref":"pkg:npm/@databricks/appkit-ui@0.35.1","type":"application","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}]},"properties":[{"name":"cdx:bom:componentTypes","value":"npm"},{"name":"cdx:bom:componentNamespaces","value":"@radix-ui\\n@tanstack"},{"name":"cdx:bom:componentSrcFiles","value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-label/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-popover/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-progress/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-select/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-separator/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-slider/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-slot/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-switch/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json\\npackages/appkit-ui/node_modules/@tanstack/react-table/package.json\\npackages/appkit-ui/node_modules/apache-arrow/package.json\\npackages/appkit-ui/node_modules/class-variance-authority/package.json\\npackages/appkit-ui/node_modules/clsx/package.json\\npackages/appkit-ui/node_modules/cmdk/package.json\\npackages/appkit-ui/node_modules/dompurify/package.json\\npackages/appkit-ui/node_modules/echarts-for-react/package.json\\npackages/appkit-ui/node_modules/echarts/package.json\\npackages/appkit-ui/node_modules/embla-carousel-react/package.json\\npackages/appkit-ui/node_modules/input-otp/package.json\\npackages/appkit-ui/node_modules/lucide-react/package.json\\npackages/appkit-ui/node_modules/marked/package.json\\npackages/appkit-ui/node_modules/next-themes/package.json\\npackages/appkit-ui/node_modules/react-day-picker/package.json\\npackages/appkit-ui/node_modules/react-hook-form/package.json\\npackages/appkit-ui/node_modules/react-resizable-panels/package.json\\npackages/appkit-ui/node_modules/react/package.json\\npackages/appkit-ui/node_modules/recharts/package.json\\npackages/appkit-ui/node_modules/shared/package.json\\npackages/appkit-ui/node_modules/sonner/package.json\\npackages/appkit-ui/node_modules/tailwind-merge/package.json\\npackages/appkit-ui/node_modules/vaul/package.json"}]},"components":[{"group":"@radix-ui","name":"react-accordion","version":"1.2.12","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-accordion@1.2.12","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-accordion@1.2.12","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-accordion"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"}],"occurrences":[{"location":"dist/react/ui/accordion.js#4"},{"location":"tmp/dist/react/ui/accordion.js#4"},{"location":"src/react/ui/accordion.tsx#2"}]}},{"group":"@radix-ui","name":"react-alert-dialog","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-alert-dialog@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-alert-dialog@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-alert-dialog"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"}],"occurrences":[{"location":"dist/react/ui/alert-dialog.js#5"},{"location":"tmp/dist/react/ui/alert-dialog.js#5"},{"location":"src/react/ui/alert-dialog.tsx#2"}]}},{"group":"@radix-ui","name":"react-aspect-ratio","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-aspect-ratio@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-aspect-ratio@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-aspect-ratio"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"}],"occurrences":[{"location":"dist/react/ui/aspect-ratio.js#4"},{"location":"tmp/dist/react/ui/aspect-ratio.js#4"},{"location":"src/react/ui/aspect-ratio.tsx#3"}]}},{"group":"@radix-ui","name":"react-avatar","version":"1.1.11","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-avatar@1.1.11","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-avatar@1.1.11","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-avatar"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"}],"occurrences":[{"location":"dist/react/ui/avatar.js#3"},{"location":"tmp/dist/react/ui/avatar.js#3"},{"location":"src/react/ui/avatar.tsx#2"}]}},{"group":"@radix-ui","name":"react-checkbox","version":"1.3.3","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-checkbox@1.3.3","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-checkbox@1.3.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-checkbox"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"}],"occurrences":[{"location":"dist/react/ui/checkbox.js#6"},{"location":"tmp/dist/react/ui/checkbox.js#6"},{"location":"src/react/ui/checkbox.tsx#4"}]}},{"group":"@radix-ui","name":"react-collapsible","version":"1.1.12","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-collapsible@1.1.12","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-collapsible@1.1.12","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-collapsible"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"}],"occurrences":[{"location":"dist/react/ui/collapsible.js#2"},{"location":"tmp/dist/react/ui/collapsible.js#2"},{"location":"src/react/ui/collapsible.tsx#1"}]}},{"group":"@radix-ui","name":"react-context-menu","version":"2.2.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-context-menu@2.2.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-context-menu@2.2.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-context-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/context-menu.js#7"},{"location":"tmp/dist/react/ui/context-menu.js#7"},{"location":"src/react/ui/context-menu.tsx#4"}]}},{"group":"@radix-ui","name":"react-dialog","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-dialog@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-dialog@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-dialog"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"}],"occurrences":[{"location":"dist/react/ui/dialog.js#5"},{"location":"dist/react/ui/sheet.js#5"},{"location":"tmp/dist/react/ui/dialog.js#5"},{"location":"tmp/dist/react/ui/sheet.js#5"},{"location":"src/react/ui/dialog.tsx#2"},{"location":"src/react/ui/sheet.tsx#2"}]}},{"group":"@radix-ui","name":"react-dropdown-menu","version":"2.1.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-dropdown-menu@2.1.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-dropdown-menu@2.1.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-dropdown-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/dropdown-menu.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#5"},{"location":"src/react/ui/dropdown-menu.tsx#2"}]}},{"group":"@radix-ui","name":"react-hover-card","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-hover-card@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-hover-card@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-hover-card"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"}],"occurrences":[{"location":"dist/react/ui/hover-card.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#6"},{"location":"src/react/ui/hover-card.tsx#4"}]}},{"group":"@radix-ui","name":"react-label","version":"2.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-label@2.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-label@2.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-label"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"}],"occurrences":[{"location":"dist/react/ui/label.js#5"},{"location":"tmp/dist/react/ui/label.js#5"},{"location":"src/react/ui/form.tsx#4"},{"location":"src/react/ui/label.tsx#4"}]}},{"group":"@radix-ui","name":"react-menubar","version":"1.1.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-menubar@1.1.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-menubar@1.1.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-menubar"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"}],"occurrences":[{"location":"dist/react/ui/menubar.js#5"},{"location":"tmp/dist/react/ui/menubar.js#5"},{"location":"src/react/ui/menubar.tsx#2"}]}},{"group":"@radix-ui","name":"react-navigation-menu","version":"1.2.14","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-navigation-menu@1.2.14","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-navigation-menu@1.2.14","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-navigation-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/navigation-menu.js#5"},{"location":"tmp/dist/react/ui/navigation-menu.js#5"},{"location":"src/react/ui/navigation-menu.tsx#2"}]}},{"group":"@radix-ui","name":"react-popover","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-popover@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-popover@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-popover"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"}],"occurrences":[{"location":"dist/react/ui/popover.js#6"},{"location":"tmp/dist/react/ui/popover.js#6"},{"location":"src/react/ui/popover.tsx#4"}]}},{"group":"@radix-ui","name":"react-progress","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-progress@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-progress@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-progress"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"}],"occurrences":[{"location":"dist/react/ui/progress.js#3"},{"location":"tmp/dist/react/ui/progress.js#3"},{"location":"src/react/ui/progress.tsx#2"}]}},{"group":"@radix-ui","name":"react-radio-group","version":"1.3.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-radio-group@1.3.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-radio-group@1.3.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-radio-group"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"}],"occurrences":[{"location":"dist/react/ui/radio-group.js#6"},{"location":"tmp/dist/react/ui/radio-group.js#6"},{"location":"src/react/ui/radio-group.tsx#4"}]}},{"group":"@radix-ui","name":"react-scroll-area","version":"1.2.10","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-scroll-area@1.2.10","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-scroll-area@1.2.10","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-scroll-area"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"}],"occurrences":[{"location":"dist/react/ui/scroll-area.js#5"},{"location":"tmp/dist/react/ui/scroll-area.js#5"},{"location":"src/react/ui/scroll-area.tsx#4"}]}},{"group":"@radix-ui","name":"react-select","version":"2.2.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-select@2.2.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-select@2.2.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-select"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"}],"occurrences":[{"location":"dist/react/ui/select.js#5"},{"location":"tmp/dist/react/ui/select.js#5"},{"location":"src/react/ui/select.tsx#2"}]}},{"group":"@radix-ui","name":"react-separator","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-separator@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-separator@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-separator"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"}],"occurrences":[{"location":"dist/react/ui/separator.js#5"},{"location":"tmp/dist/react/ui/separator.js#5"},{"location":"src/react/ui/separator.tsx#4"}]}},{"group":"@radix-ui","name":"react-slider","version":"1.3.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-slider@1.3.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-slider@1.3.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-slider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"}],"occurrences":[{"location":"dist/react/ui/slider.js#6"},{"location":"tmp/dist/react/ui/slider.js#6"},{"location":"src/react/ui/slider.tsx#4"}]}},{"group":"@radix-ui","name":"react-slot","version":"1.2.4","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-slot@1.2.4","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-slot@1.2.4","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-slot,Slot,@radix-ui/react-slot/Slot"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"}],"occurrences":[{"location":"dist/react/ui/badge.js#3"},{"location":"dist/react/ui/breadcrumb.js#4"},{"location":"dist/react/ui/button-group.js#4"},{"location":"dist/react/ui/button.js#3"},{"location":"dist/react/ui/form.js#7"},{"location":"dist/react/ui/item.js#4"},{"location":"dist/react/ui/sidebar.js#14"},{"location":"tmp/dist/react/ui/badge.js#3"},{"location":"tmp/dist/react/ui/breadcrumb.js#4"},{"location":"tmp/dist/react/ui/button-group.js#4"},{"location":"tmp/dist/react/ui/button.js#3"},{"location":"tmp/dist/react/ui/form.js#7"},{"location":"tmp/dist/react/ui/item.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#14"},{"location":"src/react/ui/badge.tsx#2"},{"location":"src/react/ui/breadcrumb.tsx#2"},{"location":"src/react/ui/button-group.tsx#1"},{"location":"src/react/ui/button.tsx#2"},{"location":"src/react/ui/form.tsx#5"},{"location":"src/react/ui/item.tsx#2"},{"location":"src/react/ui/sidebar.tsx#4"}]}},{"group":"@radix-ui","name":"react-switch","version":"1.2.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-switch@1.2.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-switch@1.2.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-switch"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"}],"occurrences":[{"location":"dist/react/ui/switch.js#5"},{"location":"tmp/dist/react/ui/switch.js#5"},{"location":"src/react/ui/switch.tsx#4"}]}},{"group":"@radix-ui","name":"react-tabs","version":"1.1.13","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-tabs@1.1.13","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-tabs@1.1.13","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-tabs"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"}],"occurrences":[{"location":"dist/react/ui/tabs.js#5"},{"location":"tmp/dist/react/ui/tabs.js#5"},{"location":"src/react/ui/tabs.tsx#4"}]}},{"group":"@radix-ui","name":"react-toggle-group","version":"1.1.11","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-toggle-group@1.1.11","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-toggle-group@1.1.11","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-toggle-group"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"}],"occurrences":[{"location":"dist/react/ui/toggle-group.js#5"},{"location":"tmp/dist/react/ui/toggle-group.js#5"},{"location":"src/react/ui/toggle-group.tsx#2"}]}},{"group":"@radix-ui","name":"react-toggle","version":"1.1.10","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-toggle@1.1.10","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-toggle@1.1.10","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-toggle"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"}],"occurrences":[{"location":"dist/react/ui/toggle.js#4"},{"location":"tmp/dist/react/ui/toggle.js#4"},{"location":"src/react/ui/toggle.tsx#2"}]}},{"group":"@radix-ui","name":"react-tooltip","version":"1.2.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-tooltip@1.2.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-tooltip@1.2.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-tooltip"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"}],"occurrences":[{"location":"dist/react/ui/tooltip.js#6"},{"location":"tmp/dist/react/ui/tooltip.js#6"},{"location":"src/react/ui/tooltip.tsx#4"}]}},{"authors":[{"name":"Tanner Linsley"}],"group":"@tanstack","name":"react-table","version":"8.21.3","description":"Headless UI for building powerful tables & datagrids for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40tanstack/react-table@8.21.3","externalReferences":[{"type":"website","url":"https://tanstack.com/table"},{"type":"vcs","url":"https://github.com/TanStack/table.git"}],"type":"library","bom-ref":"pkg:npm/@tanstack/react-table@8.21.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"},{"name":"ImportedModules","value":"@tanstack/react-table,flexRender,@tanstack/react-table/flexRender,getCoreRowModel,@tanstack/react-table/getCoreRowModel,getFilteredRowModel,@tanstack/react-table/getFilteredRowModel,getPaginationRowModel,@tanstack/react-table/getPaginationRowModel,getSortedRowModel,@tanstack/react-table/getSortedRowModel,useReactTable,@tanstack/react-table/useReactTable,RowSelectionState,@tanstack/react-table/RowSelectionState,Table,@tanstack/react-table/Table,Column,@tanstack/react-table/Column,ColumnFiltersState,@tanstack/react-table/ColumnFiltersState,@tanstack/react-table/Row,SortingState,@tanstack/react-table/SortingState,VisibilityState,@tanstack/react-table/VisibilityState"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"}],"occurrences":[{"location":"dist/react/table/data-table.js#10"},{"location":"dist/react/table/table-wrapper.js#12"},{"location":"tmp/dist/react/table/data-table.js#10"},{"location":"tmp/dist/react/table/table-wrapper.js#12"},{"location":"src/react/table/types.ts#1"},{"location":"src/react/table/data-table.tsx#1"},{"location":"src/react/table/table-wrapper.tsx#14"}]}},{"authors":[{"name":"Apache Software Foundation"}],"group":"","name":"apache-arrow","version":"21.1.0","description":"Apache Arrow columnar in-memory format","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/apache-arrow@21.1.0","externalReferences":[{"type":"website","url":"https://arrow.apache.org/js/"},{"type":"vcs","url":"git+https://github.com/apache/arrow-js.git"}],"type":"library","bom-ref":"pkg:npm/apache-arrow@21.1.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/apache-arrow/package.json"},{"name":"ImportedModules","value":"apache-arrow,Field,apache-arrow/Field,Table,apache-arrow/Table"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/apache-arrow/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/apache-arrow/package.json"}],"occurrences":[{"location":"src/js/arrow/arrow-client.ts#1"},{"location":"src/react/charts/normalize.ts#1"},{"location":"src/react/charts/types.ts#1"},{"location":"src/react/hooks/types.ts#1"},{"location":"src/react/hooks/use-chart-data.ts#1"}]}},{"authors":[{"name":"Joe Bell (https://joebell.co.uk)"}],"group":"","name":"class-variance-authority","version":"0.7.1","description":"Class Variance Authority 🧬","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/class-variance-authority@0.7.1","externalReferences":[{"type":"vcs","url":"https://github.com/joe-bell/cva#readme"}],"type":"library","bom-ref":"pkg:npm/class-variance-authority@0.7.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/class-variance-authority/package.json"},{"name":"ImportedModules","value":"class-variance-authority,class-variance-authority/cva,VariantProps,class-variance-authority/VariantProps"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/class-variance-authority/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/class-variance-authority/package.json"}],"occurrences":[{"location":"dist/react/ui/alert.js#3"},{"location":"dist/react/ui/badge.js#4"},{"location":"dist/react/ui/button-group.js#5"},{"location":"dist/react/ui/button.js#4"},{"location":"dist/react/ui/empty.js#3"},{"location":"dist/react/ui/field.js#6"},{"location":"dist/react/ui/input-group.js#8"},{"location":"dist/react/ui/item.js#5"},{"location":"dist/react/ui/navigation-menu.js#4"},{"location":"dist/react/ui/sidebar.js#15"},{"location":"dist/react/ui/toggle.js#3"},{"location":"tmp/dist/react/ui/alert.js#3"},{"location":"tmp/dist/react/ui/badge.js#4"},{"location":"tmp/dist/react/ui/button-group.js#5"},{"location":"tmp/dist/react/ui/button.js#4"},{"location":"tmp/dist/react/ui/empty.js#3"},{"location":"tmp/dist/react/ui/field.js#6"},{"location":"tmp/dist/react/ui/input-group.js#8"},{"location":"tmp/dist/react/ui/item.js#5"},{"location":"tmp/dist/react/ui/navigation-menu.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#15"},{"location":"tmp/dist/react/ui/toggle.js#3"},{"location":"src/react/ui/alert.tsx#2"},{"location":"src/react/ui/badge.tsx#3"},{"location":"src/react/ui/button-group.tsx#2"},{"location":"src/react/ui/button.tsx#3"},{"location":"src/react/ui/empty.tsx#1"},{"location":"src/react/ui/field.tsx#2"},{"location":"src/react/ui/input-group.tsx#4"},{"location":"src/react/ui/item.tsx#3"},{"location":"src/react/ui/navigation-menu.tsx#3"},{"location":"src/react/ui/sidebar.tsx#5"},{"location":"src/react/ui/toggle-group.tsx#3"},{"location":"src/react/ui/toggle.tsx#3"}]}},{"authors":[{"name":"Luke Edwards <luke.edwards05@gmail.com> (https://lukeed.com)"}],"group":"","name":"clsx","version":"2.1.1","description":"A tiny (239B) utility for constructing className strings conditionally.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/clsx@2.1.1","type":"library","bom-ref":"pkg:npm/clsx@2.1.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/clsx/package.json"},{"name":"ImportedModules","value":"clsx,clsx/clsx,ClassValue,clsx/ClassValue"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/clsx/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/clsx/package.json"}],"occurrences":[{"location":"dist/react/lib/utils.js#1"},{"location":"tmp/dist/react/lib/utils.js#1"},{"location":"src/react/lib/utils.ts#1"}]}},{"authors":[{"name":"Paco (https://github.com/pacocoursey)"}],"group":"","name":"cmdk","version":"1.1.1","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/cmdk@1.1.1","externalReferences":[{"type":"vcs","url":"https://github.com/pacocoursey/cmdk#readme"},{"type":"vcs","url":"git+https://github.com/pacocoursey/cmdk.git"}],"type":"library","bom-ref":"pkg:npm/cmdk@1.1.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/cmdk/package.json"},{"name":"ImportedModules","value":"cmdk,Command,cmdk/Command"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/cmdk/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/cmdk/package.json"}],"occurrences":[{"location":"dist/react/ui/command.js#5"},{"location":"tmp/dist/react/ui/command.js#5"},{"location":"src/react/ui/command.tsx#2"}]}},{"authors":[{"name":"Dr.-Ing. Mario Heiderich"},{"name":" Cure53 <mario@cure53.de> (https://cure53.de/)"}],"group":"","name":"dompurify","version":"3.3.3","description":"DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else using Blink or WebKit). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.","scope":"required","licenses":[{"expression":"(MPL-2.0 OR Apache-2.0)"}],"purl":"pkg:npm/dompurify@3.3.3","externalReferences":[{"type":"vcs","url":"https://github.com/cure53/DOMPurify"},{"type":"vcs","url":"git://github.com/cure53/DOMPurify.git"}],"type":"library","bom-ref":"pkg:npm/dompurify@3.3.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/dompurify/package.json"},{"name":"ImportedModules","value":"dompurify"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/dompurify/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/dompurify/package.json"}],"occurrences":[{"location":"dist/react/genie/genie-chat-message.js#7"},{"location":"tmp/dist/react/genie/genie-chat-message.js#7"},{"location":"src/react/genie/genie-chat-message.tsx#1"}]},"tags":["security","web"]},{"authors":[{"name":"hustcc (http://github.com/hustcc)"}],"group":"","name":"echarts-for-react","version":"3.0.5","description":" Apache Echarts components for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/echarts-for-react@3.0.5","externalReferences":[{"type":"vcs","url":"https://github.com/hustcc/echarts-for-react"},{"type":"vcs","url":"https://github.com/hustcc/echarts-for-react.git"}],"type":"library","bom-ref":"pkg:npm/echarts-for-react@3.0.5","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/echarts-for-react/package.json"},{"name":"ImportedModules","value":"echarts-for-react"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/echarts-for-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/echarts-for-react/package.json"}],"occurrences":[{"location":"dist/react/charts/base.js#4"},{"location":"tmp/dist/react/charts/base.js#4"},{"location":"src/react/charts/base.tsx#2"}]}},{"group":"","name":"echarts","version":"6.0.0","description":"Apache ECharts is a powerful, interactive charting and data visualization library for browser","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/echarts@6.0.0","externalReferences":[{"type":"website","url":"https://echarts.apache.org"},{"type":"vcs","url":"git+https://github.com/apache/echarts.git"}],"type":"library","bom-ref":"pkg:npm/echarts@6.0.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/echarts/package.json"},{"name":"ImportedModules","value":"echarts,ECharts,echarts/ECharts"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/echarts/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/echarts/package.json"}],"occurrences":[{"location":"src/react/charts/base.tsx#1"}]}},{"authors":[{"name":"David Jerleke"}],"group":"","name":"embla-carousel-react","version":"8.6.0","description":"A lightweight carousel library with fluid motion and great swipe precision","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/embla-carousel-react@8.6.0","externalReferences":[{"type":"website","url":"https://www.embla-carousel.com"},{"type":"vcs","url":"git+https://github.com/davidjerleke/embla-carousel"}],"type":"library","bom-ref":"pkg:npm/embla-carousel-react@8.6.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"},{"name":"ImportedModules","value":"embla-carousel-react,UseEmblaCarouselType,embla-carousel-react/UseEmblaCarouselType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"}],"occurrences":[{"location":"dist/react/ui/carousel.js#6"},{"location":"tmp/dist/react/ui/carousel.js#6"},{"location":"src/react/ui/carousel.tsx#4"}]}},{"authors":[{"name":"Guilherme Rodz <g@rodz.dev>"}],"group":"","name":"input-otp","version":"1.4.2","description":"One-time password input component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/input-otp@1.4.2","externalReferences":[{"type":"website","url":"https://input-otp.rodz.dev/"},{"type":"vcs","url":"git+https://github.com/guilhermerodz/input-otp.git"}],"type":"library","bom-ref":"pkg:npm/input-otp@1.4.2","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/input-otp/package.json"},{"name":"ImportedModules","value":"input-otp,OTPInput,input-otp/OTPInput,OTPInputContext,input-otp/OTPInputContext"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/input-otp/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/input-otp/package.json"}],"occurrences":[{"location":"dist/react/ui/input-otp.js#5"},{"location":"tmp/dist/react/ui/input-otp.js#5"},{"location":"src/react/ui/input-otp.tsx#2"}]}},{"authors":[{"name":"Eric Fennis"}],"group":"","name":"lucide-react","version":"0.554.0","description":"A Lucide icon library package for React applications.","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/lucide-react@0.554.0","externalReferences":[{"type":"website","url":"https://lucide.dev"},{"type":"vcs","url":"https://github.com/lucide-icons/lucide.git"}],"type":"library","bom-ref":"pkg:npm/lucide-react@0.554.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/lucide-react/package.json"},{"name":"ImportedModules","value":"lucide-react,AlertCircle,lucide-react/AlertCircle,ArrowLeft,lucide-react/ArrowLeft,FileIcon,lucide-react/FileIcon,ChevronRight,lucide-react/ChevronRight,FolderIcon,lucide-react/FolderIcon,Download,lucide-react/Download,Loader2,lucide-react/Loader2,Trash2,lucide-react/Trash2,FolderPlus,lucide-react/FolderPlus,lucide-react/X,BarChart3Icon,lucide-react/BarChart3Icon,ChevronDownIcon,lucide-react/ChevronDownIcon,ChevronDown,lucide-react/ChevronDown,ArrowUpDown,lucide-react/ArrowUpDown,MoreHorizontal,lucide-react/MoreHorizontal,ChevronLeftIcon,lucide-react/ChevronLeftIcon,ChevronRightIcon,lucide-react/ChevronRightIcon,ArrowRight,lucide-react/ArrowRight,CheckIcon,lucide-react/CheckIcon,SearchIcon,lucide-react/SearchIcon,CircleIcon,lucide-react/CircleIcon,XIcon,lucide-react/XIcon,MinusIcon,lucide-react/MinusIcon,MoreHorizontalIcon,lucide-react/MoreHorizontalIcon,GripVerticalIcon,lucide-react/GripVerticalIcon,ChevronUpIcon,lucide-react/ChevronUpIcon,PanelLeftIcon,lucide-react/PanelLeftIcon,CircleCheckIcon,lucide-react/CircleCheckIcon,InfoIcon,lucide-react/InfoIcon,Loader2Icon,lucide-react/Loader2Icon,OctagonXIcon,lucide-react/OctagonXIcon,TriangleAlertIcon,lucide-react/TriangleAlertIcon"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/lucide-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/lucide-react/package.json"}],"occurrences":[{"location":"dist/react/file-browser/directory-list.js#6"},{"location":"dist/react/file-browser/file-entry.js#4"},{"location":"dist/react/file-browser/file-preview-panel.js#6"},{"location":"dist/react/file-browser/new-folder-input.js#5"},{"location":"dist/react/genie/genie-query-visualization.js#12"},{"location":"dist/react/table/data-table.js#9"},{"location":"dist/react/table/table-wrapper.js#11"},{"location":"dist/react/ui/accordion.js#3"},{"location":"dist/react/ui/breadcrumb.js#3"},{"location":"dist/react/ui/calendar.js#7"},{"location":"dist/react/ui/carousel.js#5"},{"location":"dist/react/ui/checkbox.js#5"},{"location":"dist/react/ui/command.js#4"},{"location":"dist/react/ui/context-menu.js#6"},{"location":"dist/react/ui/dialog.js#4"},{"location":"dist/react/ui/dropdown-menu.js#4"},{"location":"dist/react/ui/input-otp.js#4"},{"location":"dist/react/ui/menubar.js#4"},{"location":"dist/react/ui/navigation-menu.js#3"},{"location":"dist/react/ui/pagination.js#4"},{"location":"dist/react/ui/radio-group.js#5"},{"location":"dist/react/ui/resizable.js#3"},{"location":"dist/react/ui/select.js#4"},{"location":"dist/react/ui/sheet.js#4"},{"location":"dist/react/ui/sidebar.js#13"},{"location":"dist/react/ui/sonner.js#2"},{"location":"dist/react/ui/spinner.js#3"},{"location":"tmp/dist/react/file-browser/directory-list.js#6"},{"location":"tmp/dist/react/file-browser/file-entry.js#4"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#6"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#5"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#12"},{"location":"tmp/dist/react/table/data-table.js#9"},{"location":"tmp/dist/react/table/table-wrapper.js#11"},{"location":"tmp/dist/react/ui/accordion.js#3"},{"location":"tmp/dist/react/ui/breadcrumb.js#3"},{"location":"tmp/dist/react/ui/calendar.js#7"},{"location":"tmp/dist/react/ui/carousel.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#5"},{"location":"tmp/dist/react/ui/command.js#4"},{"location":"tmp/dist/react/ui/context-menu.js#6"},{"location":"tmp/dist/react/ui/dialog.js#4"},{"location":"tmp/dist/react/ui/dropdown-menu.js#4"},{"location":"tmp/dist/react/ui/input-otp.js#4"},{"location":"tmp/dist/react/ui/menubar.js#4"},{"location":"tmp/dist/react/ui/navigation-menu.js#3"},{"location":"tmp/dist/react/ui/pagination.js#4"},{"location":"tmp/dist/react/ui/radio-group.js#5"},{"location":"tmp/dist/react/ui/resizable.js#3"},{"location":"tmp/dist/react/ui/select.js#4"},{"location":"tmp/dist/react/ui/sheet.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#13"},{"location":"tmp/dist/react/ui/sonner.js#2"},{"location":"tmp/dist/react/ui/spinner.js#3"},{"location":"src/react/file-browser/directory-list.tsx#1"},{"location":"src/react/file-browser/file-entry.tsx#1"},{"location":"src/react/file-browser/file-preview-panel.tsx#1"},{"location":"src/react/file-browser/new-folder-input.tsx#1"},{"location":"src/react/genie/genie-query-visualization.tsx#1"},{"location":"src/react/table/data-table.tsx#2"},{"location":"src/react/table/table-wrapper.tsx#15"},{"location":"src/react/ui/accordion.tsx#3"},{"location":"src/react/ui/breadcrumb.tsx#3"},{"location":"src/react/ui/calendar.tsx#9"},{"location":"src/react/ui/carousel.tsx#5"},{"location":"src/react/ui/checkbox.tsx#5"},{"location":"src/react/ui/command.tsx#3"},{"location":"src/react/ui/context-menu.tsx#5"},{"location":"src/react/ui/dialog.tsx#3"},{"location":"src/react/ui/dropdown-menu.tsx#3"},{"location":"src/react/ui/input-otp.tsx#3"},{"location":"src/react/ui/menubar.tsx#3"},{"location":"src/react/ui/navigation-menu.tsx#4"},{"location":"src/react/ui/pagination.tsx#6"},{"location":"src/react/ui/radio-group.tsx#5"},{"location":"src/react/ui/resizable.tsx#2"},{"location":"src/react/ui/select.tsx#3"},{"location":"src/react/ui/sheet.tsx#3"},{"location":"src/react/ui/sidebar.tsx#6"},{"location":"src/react/ui/sonner.tsx#8"},{"location":"src/react/ui/spinner.tsx#2"}]}},{"authors":[{"name":"Christopher Jeffrey"}],"group":"","name":"marked","version":"17.0.3","description":"A markdown parser built for speed","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/marked@17.0.3","externalReferences":[{"type":"website","url":"https://marked.js.org"},{"type":"vcs","url":"git://github.com/markedjs/marked.git"}],"type":"library","bom-ref":"pkg:npm/marked@17.0.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/marked/package.json"},{"name":"ImportedModules","value":"marked,marked/marked"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/marked/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/marked/package.json"}],"occurrences":[{"location":"dist/react/genie/genie-chat-message.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#8"},{"location":"src/react/genie/genie-chat-message.tsx#2"}]}},{"group":"","name":"next-themes","version":"0.4.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/next-themes@0.4.6","externalReferences":[{"type":"vcs","url":"https://github.com/pacocoursey/next-themes.git"}],"type":"framework","bom-ref":"pkg:npm/next-themes@0.4.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/next-themes/package.json"},{"name":"ImportedModules","value":"next-themes,useTheme,next-themes/useTheme"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/next-themes/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/next-themes/package.json"}],"occurrences":[{"location":"dist/react/ui/sonner.js#3"},{"location":"tmp/dist/react/ui/sonner.js#3"},{"location":"src/react/ui/sonner.tsx#9"}]},"tags":["framework"]},{"authors":[{"name":"Giampaolo Bellavite <io@gpbl.dev>"}],"group":"","name":"react-day-picker","version":"9.12.0","description":"Customizable Date Picker for React","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-day-picker@9.12.0","externalReferences":[{"type":"website","url":"https://daypicker.dev"},{"type":"vcs","url":"https://github.com/gpbl/react-day-picker"}],"type":"framework","bom-ref":"pkg:npm/react-day-picker@9.12.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-day-picker/package.json"},{"name":"ImportedModules","value":"react-day-picker,DayPicker,react-day-picker/DayPicker,getDefaultClassNames,react-day-picker/getDefaultClassNames,DayButton,react-day-picker/DayButton"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-day-picker/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-day-picker/package.json"}],"occurrences":[{"location":"dist/react/ui/calendar.js#8"},{"location":"tmp/dist/react/ui/calendar.js#8"},{"location":"src/react/ui/calendar.tsx#10"}]},"tags":["framework"]},{"authors":[{"name":"Beier(Bill) Luo <bluebill1049@hotmail.com>"}],"group":"","name":"react-hook-form","version":"7.68.0","description":"Performant, flexible and extensible forms library for React Hooks","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-hook-form@7.68.0","externalReferences":[{"type":"website","url":"https://react-hook-form.com"},{"type":"vcs","url":"https://github.com/react-hook-form/react-hook-form"}],"type":"framework","bom-ref":"pkg:npm/react-hook-form@7.68.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-hook-form/package.json"},{"name":"ImportedModules","value":"react-hook-form,Controller,react-hook-form/Controller,FormProvider,react-hook-form/FormProvider,useFormContext,react-hook-form/useFormContext,useFormState,react-hook-form/useFormState,ControllerProps,react-hook-form/ControllerProps,FieldPath,react-hook-form/FieldPath,FieldValues,react-hook-form/FieldValues"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-hook-form/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-hook-form/package.json"}],"occurrences":[{"location":"dist/react/ui/form.js#8"},{"location":"tmp/dist/react/ui/form.js#8"},{"location":"src/react/ui/form.tsx#14"}]},"tags":["framework"]},{"authors":[{"name":"Brian Vaughn <brian.david.vaughn@gmail.com>"}],"group":"","name":"react-resizable-panels","version":"3.0.6","description":"React components for resizable panel groups/layouts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-resizable-panels@3.0.6","externalReferences":[{"type":"vcs","url":"git+https://github.com/bvaughn/react-resizable-panels.git"}],"type":"framework","bom-ref":"pkg:npm/react-resizable-panels@3.0.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"},{"name":"ImportedModules","value":"react-resizable-panels"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"}],"occurrences":[{"location":"dist/react/ui/resizable.js#4"},{"location":"tmp/dist/react/ui/resizable.js#4"},{"location":"src/react/ui/resizable.tsx#3"}]},"tags":["framework"]},{"group":"","name":"react","version":"19.2.0","description":"React is a JavaScript library for building user interfaces.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react@19.2.0","externalReferences":[{"type":"website","url":"https://react.dev/"},{"type":"vcs","url":"https://github.com/facebook/react.git"}],"type":"framework","bom-ref":"pkg:npm/react@19.2.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react/package.json"},{"name":"ExportedModules","value":"react/charts/area,react/charts/bar,react/charts/heatmap,react/charts/line,react/charts/pie,react/charts/radar,react/charts/scatter,react/hooks/use-chart-data,react/charts/base,react/charts/create-chart,react/charts/wrapper,react/charts/normalize,react/charts/constants,react/charts/theme,react/charts/utils,react/charts/options,react/charts/types,react/lib/format,react/genie/genie-chart-inference,react/genie/genie-chat,react/genie/genie-chat-input,react/genie/genie-chat-message,react/genie/genie-chat-message-list,react/genie/genie-query-transform,react/genie/genie-query-visualization,react/genie/use-genie-chat,react/hooks/types,react/hooks/use-agent-chat,react/hooks/use-analytics-query,react/hooks/use-plugin-config,react/hooks/use-serving-invoke,react/hooks/use-serving-stream,DonutChart,pie/DonutChart,PieChart,pie/PieChart,UseChartDataOptions,.hooks/use-chart-data/UseChartDataOptions,UseChartDataResult,.hooks/use-chart-data/UseChartDataResult,useChartData,.hooks/use-chart-data/useChartData,use-chart-data/UseChartDataOptions,use-chart-data/UseChartDataResult,use-chart-data/useChartData,BaseChart,base/BaseChart,BaseChartProps,base/BaseChartProps,ChartWrapper,wrapper/ChartWrapper,ChartWrapperProps,wrapper/ChartWrapperProps,NormalizedHeatmapData,normalize/NormalizedHeatmapData,normalizeChartData,normalize/normalizeChartData,normalizeHeatmapData,normalize/normalizeHeatmapData,CHART_COLOR_VARS,constants/CHART_COLOR_VARS,CHART_COLOR_VARS_CATEGORICAL,constants/CHART_COLOR_VARS_CATEGORICAL,CHART_COLOR_VARS_DIVERGING,constants/CHART_COLOR_VARS_DIVERGING,CHART_COLOR_VARS_SEQUENTIAL,constants/CHART_COLOR_VARS_SEQUENTIAL,DATE_FIELD_PATTERNS,constants/DATE_FIELD_PATTERNS,FALLBACK_COLORS_CATEGORICAL,constants/FALLBACK_COLORS_CATEGORICAL,FALLBACK_COLORS_DIVERGING,constants/FALLBACK_COLORS_DIVERGING,FALLBACK_COLORS_SEQUENTIAL,constants/FALLBACK_COLORS_SEQUENTIAL,METADATA_DATE_PATTERNS,constants/METADATA_DATE_PATTERNS,NAME_FIELD_PATTERNS,constants/NAME_FIELD_PATTERNS,useAllThemeColors,theme/useAllThemeColors,useThemeColors,theme/useThemeColors,createTimeSeriesData,utils/createTimeSeriesData,formatLabel,utils/formatLabel,sortTimeSeriesAscending,utils/sortTimeSeriesAscending,toChartArray,utils/toChartArray,toChartValue,utils/toChartValue,truncateLabel,utils/truncateLabel,buildCartesianOption,options/buildCartesianOption,buildHeatmapOption,options/buildHeatmapOption,buildHorizontalBarOption,options/buildHorizontalBarOption,buildPieOption,options/buildPieOption,buildRadarOption,options/buildRadarOption,CartesianContext,options/CartesianContext,HeatmapContext,options/HeatmapContext,OptionBuilderContext,options/OptionBuilderContext,AreaChartProps,types/AreaChartProps,AreaChartSpecificProps,types/AreaChartSpecificProps,BarChartProps,types/BarChartProps,BarChartSpecificProps,types/BarChartSpecificProps,ChartBaseProps,types/ChartBaseProps,ChartColorPalette,types/ChartColorPalette,ChartData,types/ChartData,ChartType,types/ChartType,DataFormat,types/DataFormat,DataProps,types/DataProps,DonutChartProps,types/DonutChartProps,HeatmapChartProps,types/HeatmapChartProps,HeatmapChartSpecificProps,types/HeatmapChartSpecificProps,LineChartProps,types/LineChartProps,LineChartSpecificProps,types/LineChartSpecificProps,NormalizedChartData,types/NormalizedChartData,NormalizedChartDataBase,types/NormalizedChartDataBase,Orientation,types/Orientation,PieChartProps,types/PieChartProps,PieChartSpecificProps,types/PieChartSpecificProps,QueryProps,types/QueryProps,RadarChartProps,types/RadarChartProps,RadarChartSpecificProps,types/RadarChartSpecificProps,ScatterChartProps,types/ScatterChartProps,ScatterChartSpecificProps,types/ScatterChartSpecificProps,UnifiedChartProps,types/UnifiedChartProps,isArrowTable,types/isArrowTable,isDataProps,types/isDataProps,isQueryProps,types/isQueryProps,ChartInference,genie-chart-inference/ChartInference,getCompatibleChartTypes,genie-chart-inference/getCompatibleChartTypes,inferChartType,genie-chart-inference/inferChartType,ColumnCategory,genie-query-transform/ColumnCategory,GenieColumnMeta,genie-query-transform/GenieColumnMeta,TransformedGenieData,genie-query-transform/TransformedGenieData,transformGenieData,genie-query-transform/transformGenieData,AnalyticsFormat,types/AnalyticsFormat,InferResultByFormat,types/InferResultByFormat,InferRowType,types/InferRowType,InferServingChunk,types/InferServingChunk,InferServingRequest,types/InferServingRequest,InferServingResponse,types/InferServingResponse,PluginRegistry,types/PluginRegistry,QueryRegistry,types/QueryRegistry,ServingAlias,types/ServingAlias,ServingEndpointRegistry,types/ServingEndpointRegistry,TypedArrowTable,types/TypedArrowTable,UseAnalyticsQueryOptions,types/UseAnalyticsQueryOptions,UseAnalyticsQueryResult,types/UseAnalyticsQueryResult,AgentChatEvent,use-agent-chat/AgentChatEvent,UseAgentChatOptions,use-agent-chat/UseAgentChatOptions,UseAgentChatResult,use-agent-chat/UseAgentChatResult,useAgentChat,use-agent-chat/useAgentChat,UseServingInvokeOptions,use-serving-invoke/UseServingInvokeOptions,UseServingInvokeResult,use-serving-invoke/UseServingInvokeResult,useServingInvoke,use-serving-invoke/useServingInvoke,UseServingStreamOptions,use-serving-stream/UseServingStreamOptions,UseServingStreamResult,use-serving-stream/UseServingStreamResult,useServingStream,use-serving-stream/useServingStream"},{"name":"ImportedModules","value":"react,useCallback,react/useCallback,useMemo,react/useMemo,useRef,react/useRef,react/jsx-runtime,react/jsx-runtime/jsx,Component,react/Component,jsxs,react/jsx-runtime/jsxs,useEffect,react/useEffect,useState,react/useState,useLayoutEffect,react/useLayoutEffect,createContext,react/createContext,useContext,react/useContext,Fragment,react/jsx-runtime/Fragment,react/JSX,ReactNode,react/ReactNode,KeyboardEvent,react/KeyboardEvent"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react/package.json"}],"occurrences":[{"location":"dist/react/charts/base.js#5"},{"location":"dist/react/charts/base.js#6"},{"location":"dist/react/charts/chart-error-boundary.js#1"},{"location":"dist/react/charts/chart-error-boundary.js#2"},{"location":"dist/react/charts/create-chart.js#3"},{"location":"dist/react/charts/empty.js#1"},{"location":"dist/react/charts/error.js#1"},{"location":"dist/react/charts/loading.js#1"},{"location":"dist/react/charts/theme.js#2"},{"location":"dist/react/charts/wrapper.js#7"},{"location":"dist/react/file-browser/directory-list.js#5"},{"location":"dist/react/file-browser/file-breadcrumb.js#2"},{"location":"dist/react/file-browser/file-entry.js#3"},{"location":"dist/react/file-browser/file-preview-panel.js#5"},{"location":"dist/react/file-browser/new-folder-input.js#3"},{"location":"dist/react/file-browser/new-folder-input.js#4"},{"location":"dist/react/genie/genie-chat-input.js#3"},{"location":"dist/react/genie/genie-chat-input.js#4"},{"location":"dist/react/genie/genie-chat-message-list.js#7"},{"location":"dist/react/genie/genie-chat-message-list.js#8"},{"location":"dist/react/genie/genie-chat-message.js#5"},{"location":"dist/react/genie/genie-chat-message.js#6"},{"location":"dist/react/genie/genie-chat.js#6"},{"location":"dist/react/genie/genie-query-visualization.js#10"},{"location":"dist/react/genie/genie-query-visualization.js#11"},{"location":"dist/react/genie/use-genie-chat.js#4"},{"location":"dist/react/hooks/use-agent-chat.js#3"},{"location":"dist/react/hooks/use-analytics-query.js#5"},{"location":"dist/react/hooks/use-chart-data.js#2"},{"location":"dist/react/hooks/use-mobile.js#1"},{"location":"dist/react/hooks/use-query-hmr.js#1"},{"location":"dist/react/hooks/use-serving-invoke.js#2"},{"location":"dist/react/hooks/use-serving-stream.js#4"},{"location":"dist/react/portal-container-context.js#1"},{"location":"dist/react/portal-container-context.js#2"},{"location":"dist/react/table/data-table.js#8"},{"location":"dist/react/table/empty.js#1"},{"location":"dist/react/table/error.js#1"},{"location":"dist/react/table/loading.js#1"},{"location":"dist/react/table/table-wrapper.js#9"},{"location":"dist/react/table/table-wrapper.js#10"},{"location":"dist/react/ui/accordion.js#2"},{"location":"dist/react/ui/alert-dialog.js#4"},{"location":"dist/react/ui/alert.js#2"},{"location":"dist/react/ui/aspect-ratio.js#3"},{"location":"dist/react/ui/avatar.js#2"},{"location":"dist/react/ui/badge.js#2"},{"location":"dist/react/ui/breadcrumb.js#2"},{"location":"dist/react/ui/button-group.js#3"},{"location":"dist/react/ui/button.js#2"},{"location":"dist/react/ui/calendar.js#5"},{"location":"dist/react/ui/calendar.js#6"},{"location":"dist/react/ui/card.js#2"},{"location":"dist/react/ui/carousel.js#3"},{"location":"dist/react/ui/carousel.js#4"},{"location":"dist/react/ui/chart.js#4"},{"location":"dist/react/ui/chart.js#5"},{"location":"dist/react/ui/checkbox.js#4"},{"location":"dist/react/ui/collapsible.js#1"},{"location":"dist/react/ui/command.js#3"},{"location":"dist/react/ui/context-menu.js#5"},{"location":"dist/react/ui/dialog.js#3"},{"location":"dist/react/ui/drawer.js#5"},{"location":"dist/react/ui/dropdown-menu.js#3"},{"location":"dist/react/ui/empty.js#2"},{"location":"dist/react/ui/field.js#4"},{"location":"dist/react/ui/field.js#5"},{"location":"dist/react/ui/form.js#5"},{"location":"dist/react/ui/form.js#6"},{"location":"dist/react/ui/hover-card.js#5"},{"location":"dist/react/ui/input-group.js#7"},{"location":"dist/react/ui/input-otp.js#2"},{"location":"dist/react/ui/input-otp.js#3"},{"location":"dist/react/ui/input.js#2"},{"location":"dist/react/ui/item.js#3"},{"location":"dist/react/ui/kbd.js#2"},{"location":"dist/react/ui/label.js#4"},{"location":"dist/react/ui/menubar.js#3"},{"location":"dist/react/ui/navigation-menu.js#2"},{"location":"dist/react/ui/pagination.js#3"},{"location":"dist/react/ui/popover.js#5"},{"location":"dist/react/ui/progress.js#2"},{"location":"dist/react/ui/radio-group.js#4"},{"location":"dist/react/ui/resizable.js#2"},{"location":"dist/react/ui/scroll-area.js#4"},{"location":"dist/react/ui/select.js#3"},{"location":"dist/react/ui/separator.js#4"},{"location":"dist/react/ui/sheet.js#3"},{"location":"dist/react/ui/sidebar.js#11"},{"location":"dist/react/ui/sidebar.js#12"},{"location":"dist/react/ui/skeleton.js#2"},{"location":"dist/react/ui/slider.js#4"},{"location":"dist/react/ui/slider.js#5"},{"location":"dist/react/ui/sonner.js#1"},{"location":"dist/react/ui/spinner.js#2"},{"location":"dist/react/ui/switch.js#4"},{"location":"dist/react/ui/table.js#2"},{"location":"dist/react/ui/tabs.js#4"},{"location":"dist/react/ui/textarea.js#2"},{"location":"dist/react/ui/toggle-group.js#3"},{"location":"dist/react/ui/toggle-group.js#4"},{"location":"dist/react/ui/toggle.js#2"},{"location":"dist/react/ui/tooltip.js#5"},{"location":"tmp/dist/react/charts/base.js#5"},{"location":"tmp/dist/react/charts/base.js#6"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#1"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#2"},{"location":"tmp/dist/react/charts/create-chart.js#3"},{"location":"tmp/dist/react/charts/empty.js#1"},{"location":"tmp/dist/react/charts/error.js#1"},{"location":"tmp/dist/react/charts/loading.js#1"},{"location":"tmp/dist/react/charts/theme.js#2"},{"location":"tmp/dist/react/charts/wrapper.js#7"},{"location":"tmp/dist/react/file-browser/directory-list.js#5"},{"location":"tmp/dist/react/file-browser/file-breadcrumb.js#2"},{"location":"tmp/dist/react/file-browser/file-entry.js#3"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#5"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#3"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-input.js#3"},{"location":"tmp/dist/react/genie/genie-chat-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#7"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#5"},{"location":"tmp/dist/react/genie/genie-chat-message.js#6"},{"location":"tmp/dist/react/genie/genie-chat.js#6"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#10"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#11"},{"location":"tmp/dist/react/genie/use-genie-chat.js#4"},{"location":"tmp/dist/react/hooks/use-agent-chat.js#3"},{"location":"tmp/dist/react/hooks/use-analytics-query.js#5"},{"location":"tmp/dist/react/hooks/use-chart-data.js#2"},{"location":"tmp/dist/react/hooks/use-mobile.js#1"},{"location":"tmp/dist/react/hooks/use-query-hmr.js#1"},{"location":"tmp/dist/react/hooks/use-serving-invoke.js#2"},{"location":"tmp/dist/react/hooks/use-serving-stream.js#4"},{"location":"tmp/dist/react/portal-container-context.js#1"},{"location":"tmp/dist/react/portal-container-context.js#2"},{"location":"tmp/dist/react/table/data-table.js#8"},{"location":"tmp/dist/react/table/empty.js#1"},{"location":"tmp/dist/react/table/error.js#1"},{"location":"tmp/dist/react/table/loading.js#1"},{"location":"tmp/dist/react/table/table-wrapper.js#9"},{"location":"tmp/dist/react/table/table-wrapper.js#10"},{"location":"tmp/dist/react/ui/accordion.js#2"},{"location":"tmp/dist/react/ui/alert-dialog.js#4"},{"location":"tmp/dist/react/ui/alert.js#2"},{"location":"tmp/dist/react/ui/aspect-ratio.js#3"},{"location":"tmp/dist/react/ui/avatar.js#2"},{"location":"tmp/dist/react/ui/badge.js#2"},{"location":"tmp/dist/react/ui/breadcrumb.js#2"},{"location":"tmp/dist/react/ui/button-group.js#3"},{"location":"tmp/dist/react/ui/button.js#2"},{"location":"tmp/dist/react/ui/calendar.js#5"},{"location":"tmp/dist/react/ui/calendar.js#6"},{"location":"tmp/dist/react/ui/card.js#2"},{"location":"tmp/dist/react/ui/carousel.js#3"},{"location":"tmp/dist/react/ui/carousel.js#4"},{"location":"tmp/dist/react/ui/chart.js#4"},{"location":"tmp/dist/react/ui/chart.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#4"},{"location":"tmp/dist/react/ui/collapsible.js#1"},{"location":"tmp/dist/react/ui/command.js#3"},{"location":"tmp/dist/react/ui/context-menu.js#5"},{"location":"tmp/dist/react/ui/dialog.js#3"},{"location":"tmp/dist/react/ui/drawer.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#3"},{"location":"tmp/dist/react/ui/empty.js#2"},{"location":"tmp/dist/react/ui/field.js#4"},{"location":"tmp/dist/react/ui/field.js#5"},{"location":"tmp/dist/react/ui/form.js#5"},{"location":"tmp/dist/react/ui/form.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#5"},{"location":"tmp/dist/react/ui/input-group.js#7"},{"location":"tmp/dist/react/ui/input-otp.js#2"},{"location":"tmp/dist/react/ui/input-otp.js#3"},{"location":"tmp/dist/react/ui/input.js#2"},{"location":"tmp/dist/react/ui/item.js#3"},{"location":"tmp/dist/react/ui/kbd.js#2"},{"location":"tmp/dist/react/ui/label.js#4"},{"location":"tmp/dist/react/ui/menubar.js#3"},{"location":"tmp/dist/react/ui/navigation-menu.js#2"},{"location":"tmp/dist/react/ui/pagination.js#3"},{"location":"tmp/dist/react/ui/popover.js#5"},{"location":"tmp/dist/react/ui/progress.js#2"},{"location":"tmp/dist/react/ui/radio-group.js#4"},{"location":"tmp/dist/react/ui/resizable.js#2"},{"location":"tmp/dist/react/ui/scroll-area.js#4"},{"location":"tmp/dist/react/ui/select.js#3"},{"location":"tmp/dist/react/ui/separator.js#4"},{"location":"tmp/dist/react/ui/sheet.js#3"},{"location":"tmp/dist/react/ui/sidebar.js#11"},{"location":"tmp/dist/react/ui/sidebar.js#12"},{"location":"tmp/dist/react/ui/skeleton.js#2"},{"location":"tmp/dist/react/ui/slider.js#4"},{"location":"tmp/dist/react/ui/slider.js#5"},{"location":"tmp/dist/react/ui/sonner.js#1"},{"location":"tmp/dist/react/ui/spinner.js#2"},{"location":"tmp/dist/react/ui/switch.js#4"},{"location":"tmp/dist/react/ui/table.js#2"},{"location":"tmp/dist/react/ui/tabs.js#4"},{"location":"tmp/dist/react/ui/textarea.js#2"},{"location":"tmp/dist/react/ui/toggle-group.js#3"},{"location":"tmp/dist/react/ui/toggle-group.js#4"},{"location":"tmp/dist/react/ui/toggle.js#2"},{"location":"tmp/dist/react/ui/tooltip.js#5"},{"location":"src/react/charts/theme.ts#1"},{"location":"src/react/genie/use-genie-chat.ts#1"},{"location":"src/react/hooks/use-agent-chat.ts#1"},{"location":"src/react/hooks/use-analytics-query.ts#1"},{"location":"src/react/hooks/use-chart-data.ts#2"},{"location":"src/react/hooks/use-mobile.ts#1"},{"location":"src/react/hooks/use-query-hmr.ts#1"},{"location":"src/react/hooks/use-serving-invoke.ts#1"},{"location":"src/react/hooks/use-serving-stream.ts#1"},{"location":"src/react/charts/area/index.tsx#1"},{"location":"src/react/charts/bar/index.tsx#1"},{"location":"src/react/charts/base.tsx#3"},{"location":"src/react/charts/chart-error-boundary.tsx#1"},{"location":"src/react/charts/heatmap/index.tsx#1"},{"location":"src/react/charts/line/index.tsx#1"},{"location":"src/react/charts/pie/index.tsx#1"},{"location":"src/react/charts/radar/index.tsx#1"},{"location":"src/react/charts/scatter/index.tsx#1"},{"location":"src/react/charts/wrapper.tsx#1"},{"location":"src/react/file-browser/new-folder-input.tsx#2"},{"location":"src/react/genie/genie-chat-input.tsx#1"},{"location":"src/react/genie/genie-chat-message-list.tsx#1"},{"location":"src/react/genie/genie-chat-message.tsx#3"},{"location":"src/react/genie/genie-query-visualization.tsx#2"},{"location":"src/react/portal-container-context.tsx#1"},{"location":"src/react/portal-container-context.tsx#2"},{"location":"src/react/table/table-wrapper.tsx#16"},{"location":"src/react/ui/accordion.tsx#1"},{"location":"src/react/ui/alert-dialog.tsx#1"},{"location":"src/react/ui/alert.tsx#1"},{"location":"src/react/ui/avatar.tsx#1"},{"location":"src/react/ui/badge.tsx#1"},{"location":"src/react/ui/breadcrumb.tsx#1"},{"location":"src/react/ui/button.tsx#1"},{"location":"src/react/ui/calendar.tsx#4"},{"location":"src/react/ui/card.tsx#1"},{"location":"src/react/ui/carousel.tsx#1"},{"location":"src/react/ui/chart.tsx#3"},{"location":"src/react/ui/checkbox.tsx#3"},{"location":"src/react/ui/command.tsx#1"},{"location":"src/react/ui/context-menu.tsx#3"},{"location":"src/react/ui/dialog.tsx#1"},{"location":"src/react/ui/drawer.tsx#3"},{"location":"src/react/ui/dropdown-menu.tsx#1"},{"location":"src/react/ui/field.tsx#1"},{"location":"src/react/ui/form.tsx#3"},{"location":"src/react/ui/hover-card.tsx#3"},{"location":"src/react/ui/input-group.tsx#3"},{"location":"src/react/ui/input-otp.tsx#1"},{"location":"src/react/ui/input.tsx#1"},{"location":"src/react/ui/item.tsx#1"},{"location":"src/react/ui/label.tsx#3"},{"location":"src/react/ui/menubar.tsx#1"},{"location":"src/react/ui/navigation-menu.tsx#1"},{"location":"src/react/ui/pagination.tsx#1"},{"location":"src/react/ui/popover.tsx#3"},{"location":"src/react/ui/progress.tsx#1"},{"location":"src/react/ui/radio-group.tsx#3"},{"location":"src/react/ui/resizable.tsx#1"},{"location":"src/react/ui/scroll-area.tsx#3"},{"location":"src/react/ui/select.tsx#1"},{"location":"src/react/ui/separator.tsx#3"},{"location":"src/react/ui/sheet.tsx#1"},{"location":"src/react/ui/sidebar.tsx#3"},{"location":"src/react/ui/slider.tsx#3"},{"location":"src/react/ui/switch.tsx#3"},{"location":"src/react/ui/table.tsx#1"},{"location":"src/react/ui/tabs.tsx#3"},{"location":"src/react/ui/textarea.tsx#1"},{"location":"src/react/ui/toggle-group.tsx#1"},{"location":"src/react/ui/toggle.tsx#1"},{"location":"src/react/ui/tooltip.tsx#3"},{"location":"dist/react/charts/base.js#6"},{"location":"dist/react/charts/chart-error-boundary.js#2"},{"location":"dist/react/charts/create-chart.js#3"},{"location":"dist/react/charts/empty.js#1"},{"location":"dist/react/charts/error.js#1"},{"location":"dist/react/charts/loading.js#1"},{"location":"dist/react/charts/wrapper.js#7"},{"location":"dist/react/file-browser/directory-list.js#5"},{"location":"dist/react/file-browser/file-breadcrumb.js#2"},{"location":"dist/react/file-browser/file-entry.js#3"},{"location":"dist/react/file-browser/file-preview-panel.js#5"},{"location":"dist/react/file-browser/new-folder-input.js#4"},{"location":"dist/react/genie/genie-chat-input.js#4"},{"location":"dist/react/genie/genie-chat-message-list.js#8"},{"location":"dist/react/genie/genie-chat-message.js#6"},{"location":"dist/react/genie/genie-chat.js#6"},{"location":"dist/react/genie/genie-query-visualization.js#11"},{"location":"dist/react/portal-container-context.js#2"},{"location":"dist/react/table/data-table.js#8"},{"location":"dist/react/table/empty.js#1"},{"location":"dist/react/table/error.js#1"},{"location":"dist/react/table/loading.js#1"},{"location":"dist/react/table/table-wrapper.js#10"},{"location":"dist/react/ui/accordion.js#2"},{"location":"dist/react/ui/alert-dialog.js#4"},{"location":"dist/react/ui/alert.js#2"},{"location":"dist/react/ui/aspect-ratio.js#3"},{"location":"dist/react/ui/avatar.js#2"},{"location":"dist/react/ui/badge.js#2"},{"location":"dist/react/ui/breadcrumb.js#2"},{"location":"dist/react/ui/button-group.js#3"},{"location":"dist/react/ui/button.js#2"},{"location":"dist/react/ui/calendar.js#6"},{"location":"dist/react/ui/card.js#2"},{"location":"dist/react/ui/carousel.js#4"},{"location":"dist/react/ui/chart.js#5"},{"location":"dist/react/ui/checkbox.js#4"},{"location":"dist/react/ui/collapsible.js#1"},{"location":"dist/react/ui/command.js#3"},{"location":"dist/react/ui/context-menu.js#5"},{"location":"dist/react/ui/dialog.js#3"},{"location":"dist/react/ui/drawer.js#5"},{"location":"dist/react/ui/dropdown-menu.js#3"},{"location":"dist/react/ui/empty.js#2"},{"location":"dist/react/ui/field.js#5"},{"location":"dist/react/ui/form.js#6"},{"location":"dist/react/ui/hover-card.js#5"},{"location":"dist/react/ui/input-group.js#7"},{"location":"dist/react/ui/input-otp.js#3"},{"location":"dist/react/ui/input.js#2"},{"location":"dist/react/ui/item.js#3"},{"location":"dist/react/ui/kbd.js#2"},{"location":"dist/react/ui/label.js#4"},{"location":"dist/react/ui/menubar.js#3"},{"location":"dist/react/ui/navigation-menu.js#2"},{"location":"dist/react/ui/pagination.js#3"},{"location":"dist/react/ui/popover.js#5"},{"location":"dist/react/ui/progress.js#2"},{"location":"dist/react/ui/radio-group.js#4"},{"location":"dist/react/ui/resizable.js#2"},{"location":"dist/react/ui/scroll-area.js#4"},{"location":"dist/react/ui/select.js#3"},{"location":"dist/react/ui/separator.js#4"},{"location":"dist/react/ui/sheet.js#3"},{"location":"dist/react/ui/sidebar.js#12"},{"location":"dist/react/ui/skeleton.js#2"},{"location":"dist/react/ui/slider.js#5"},{"location":"dist/react/ui/sonner.js#1"},{"location":"dist/react/ui/spinner.js#2"},{"location":"dist/react/ui/switch.js#4"},{"location":"dist/react/ui/table.js#2"},{"location":"dist/react/ui/tabs.js#4"},{"location":"dist/react/ui/textarea.js#2"},{"location":"dist/react/ui/toggle-group.js#4"},{"location":"dist/react/ui/toggle.js#2"},{"location":"dist/react/ui/tooltip.js#5"},{"location":"tmp/dist/react/charts/base.js#6"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#2"},{"location":"tmp/dist/react/charts/create-chart.js#3"},{"location":"tmp/dist/react/charts/empty.js#1"},{"location":"tmp/dist/react/charts/error.js#1"},{"location":"tmp/dist/react/charts/loading.js#1"},{"location":"tmp/dist/react/charts/wrapper.js#7"},{"location":"tmp/dist/react/file-browser/directory-list.js#5"},{"location":"tmp/dist/react/file-browser/file-breadcrumb.js#2"},{"location":"tmp/dist/react/file-browser/file-entry.js#3"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#5"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#6"},{"location":"tmp/dist/react/genie/genie-chat.js#6"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#11"},{"location":"tmp/dist/react/portal-container-context.js#2"},{"location":"tmp/dist/react/table/data-table.js#8"},{"location":"tmp/dist/react/table/empty.js#1"},{"location":"tmp/dist/react/table/error.js#1"},{"location":"tmp/dist/react/table/loading.js#1"},{"location":"tmp/dist/react/table/table-wrapper.js#10"},{"location":"tmp/dist/react/ui/accordion.js#2"},{"location":"tmp/dist/react/ui/alert-dialog.js#4"},{"location":"tmp/dist/react/ui/alert.js#2"},{"location":"tmp/dist/react/ui/aspect-ratio.js#3"},{"location":"tmp/dist/react/ui/avatar.js#2"},{"location":"tmp/dist/react/ui/badge.js#2"},{"location":"tmp/dist/react/ui/breadcrumb.js#2"},{"location":"tmp/dist/react/ui/button-group.js#3"},{"location":"tmp/dist/react/ui/button.js#2"},{"location":"tmp/dist/react/ui/calendar.js#6"},{"location":"tmp/dist/react/ui/card.js#2"},{"location":"tmp/dist/react/ui/carousel.js#4"},{"location":"tmp/dist/react/ui/chart.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#4"},{"location":"tmp/dist/react/ui/collapsible.js#1"},{"location":"tmp/dist/react/ui/command.js#3"},{"location":"tmp/dist/react/ui/context-menu.js#5"},{"location":"tmp/dist/react/ui/dialog.js#3"},{"location":"tmp/dist/react/ui/drawer.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#3"},{"location":"tmp/dist/react/ui/empty.js#2"},{"location":"tmp/dist/react/ui/field.js#5"},{"location":"tmp/dist/react/ui/form.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#5"},{"location":"tmp/dist/react/ui/input-group.js#7"},{"location":"tmp/dist/react/ui/input-otp.js#3"},{"location":"tmp/dist/react/ui/input.js#2"},{"location":"tmp/dist/react/ui/item.js#3"},{"location":"tmp/dist/react/ui/kbd.js#2"},{"location":"tmp/dist/react/ui/label.js#4"},{"location":"tmp/dist/react/ui/menubar.js#3"},{"location":"tmp/dist/react/ui/navigation-menu.js#2"},{"location":"tmp/dist/react/ui/pagination.js#3"},{"location":"tmp/dist/react/ui/popover.js#5"},{"location":"tmp/dist/react/ui/progress.js#2"},{"location":"tmp/dist/react/ui/radio-group.js#4"},{"location":"tmp/dist/react/ui/resizable.js#2"},{"location":"tmp/dist/react/ui/scroll-area.js#4"},{"location":"tmp/dist/react/ui/select.js#3"},{"location":"tmp/dist/react/ui/separator.js#4"},{"location":"tmp/dist/react/ui/sheet.js#3"},{"location":"tmp/dist/react/ui/sidebar.js#12"},{"location":"tmp/dist/react/ui/skeleton.js#2"},{"location":"tmp/dist/react/ui/slider.js#5"},{"location":"tmp/dist/react/ui/sonner.js#1"},{"location":"tmp/dist/react/ui/spinner.js#2"},{"location":"tmp/dist/react/ui/switch.js#4"},{"location":"tmp/dist/react/ui/table.js#2"},{"location":"tmp/dist/react/ui/tabs.js#4"},{"location":"tmp/dist/react/ui/textarea.js#2"},{"location":"tmp/dist/react/ui/toggle-group.js#4"},{"location":"tmp/dist/react/ui/toggle.js#2"},{"location":"tmp/dist/react/ui/tooltip.js#5"}]},"tags":["framework"]},{"authors":[{"name":"recharts group"}],"group":"","name":"recharts","version":"2.15.4","description":"React charts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/recharts@2.15.4","externalReferences":[{"type":"vcs","url":"https://github.com/recharts/recharts"},{"type":"vcs","url":"git+https://github.com/recharts/recharts.git"}],"type":"library","bom-ref":"pkg:npm/recharts@2.15.4","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/recharts/package.json"},{"name":"ImportedModules","value":"recharts"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/recharts/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/recharts/package.json"}],"occurrences":[{"location":"dist/react/ui/chart.js#6"},{"location":"tmp/dist/react/ui/chart.js#6"},{"location":"src/react/ui/chart.tsx#4"}]}},{"group":"","name":"shared","version":"0.0.1","scope":"required","purl":"pkg:npm/shared@0.0.1","type":"library","bom-ref":"pkg:npm/shared@0.0.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/shared/package.json"},{"name":"ExportedModules","value":"shared,isSQLTypeMarker,shared/isSQLTypeMarker,SQLBinaryMarker,shared/SQLBinaryMarker,SQLBooleanMarker,shared/SQLBooleanMarker,SQLDateMarker,shared/SQLDateMarker,SQLNumberMarker,shared/SQLNumberMarker,SQLStringMarker,shared/SQLStringMarker,SQLTimestampMarker,shared/SQLTimestampMarker,SQLTypeMarker,shared/SQLTypeMarker,shared/sql,GenieAttachmentResponse,shared/GenieAttachmentResponse,GenieMessageResponse,shared/GenieMessageResponse,GenieStatementResponse,shared/GenieStatementResponse,GenieStreamEvent,shared/GenieStreamEvent"},{"name":"ImportedModules","value":"shared,GenieStatementResponse,shared/GenieStatementResponse,GenieAttachmentResponse,shared/GenieAttachmentResponse"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/shared/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/shared/package.json"}],"occurrences":[{"location":"src/js/index.ts#11"},{"location":"src/react/genie/genie-query-transform.ts#11"},{"location":"src/react/genie/types.ts#1"},{"location":"src/react/genie/types.ts#8"},{"location":"src/react/genie/genie-query-visualization.tsx#3"}]},"tags":["sql"]},{"authors":[{"name":"Emil Kowalski <e@emilkowal.ski>"}],"group":"","name":"sonner","version":"2.0.7","description":"An opinionated toast component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/sonner@2.0.7","externalReferences":[{"type":"website","url":"https://sonner.emilkowal.ski/"},{"type":"vcs","url":"git+https://github.com/emilkowalski/sonner.git"}],"type":"library","bom-ref":"pkg:npm/sonner@2.0.7","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/sonner/package.json"},{"name":"ImportedModules","value":"sonner,Toaster,sonner/Toaster,ToasterProps,sonner/ToasterProps"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/sonner/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/sonner/package.json"}],"occurrences":[{"location":"dist/react/ui/sonner.js#4"},{"location":"tmp/dist/react/ui/sonner.js#4"},{"location":"src/react/ui/sonner.tsx#10"}]}},{"authors":[{"name":"Dany Castillo"}],"group":"","name":"tailwind-merge","version":"3.4.0","description":"Merge Tailwind CSS classes without style conflicts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/tailwind-merge@3.4.0","externalReferences":[{"type":"vcs","url":"https://github.com/dcastil/tailwind-merge"},{"type":"vcs","url":"https://github.com/dcastil/tailwind-merge.git"}],"type":"library","bom-ref":"pkg:npm/tailwind-merge@3.4.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/tailwind-merge/package.json"},{"name":"ImportedModules","value":"tailwind-merge,twMerge,tailwind-merge/twMerge"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/tailwind-merge/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/tailwind-merge/package.json"}],"occurrences":[{"location":"dist/react/lib/utils.js#2"},{"location":"tmp/dist/react/lib/utils.js#2"},{"location":"src/react/lib/utils.ts#2"}]}},{"authors":[{"name":"Emil Kowalski <e@emilkowal.ski>"}],"group":"","name":"vaul","version":"1.1.2","description":"Drawer component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/vaul@1.1.2","externalReferences":[{"type":"website","url":"https://vaul.emilkowal.ski/"},{"type":"vcs","url":"https://github.com/emilkowalski/vaul.git"}],"type":"library","bom-ref":"pkg:npm/vaul@1.1.2","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/vaul/package.json"},{"name":"ImportedModules","value":"vaul,Drawer,vaul/Drawer"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/vaul/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/vaul/package.json"}],"occurrences":[{"location":"dist/react/ui/drawer.js#6"},{"location":"tmp/dist/react/ui/drawer.js#6"},{"location":"src/react/ui/drawer.tsx#4"}]}}],"dependencies":[],"compositions":[{"bom-ref":"pkg:npm/@databricks/appkit-ui@0.35.1","aggregate":"incomplete"}],"annotations":[{"bom-ref":"metadata-annotations","subjects":["pkg:npm/@databricks/appkit-ui@0.35.1"],"annotator":{"component":{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}},"timestamp":"2026-05-15T14:25:57Z","text":"This Software Bill-of-Materials (SBOM) document was created on Friday, May 15, 2026 with cdxgen. The data was captured during the build lifecycle phase. The document describes an application named 'appkit-ui' with version '0.35.1'. There are 48 components. The package type in this SBOM is npm with 2 purl namespaces described under components. The components were identified from 48 source files."}]}
|
|
1
|
+
{"bomFormat":"CycloneDX","specVersion":"1.6","serialNumber":"urn:uuid:6d99c59a-a6b1-42c4-bacb-e6834dd5b526","version":1,"metadata":{"timestamp":"2026-05-15T18:49:51Z","tools":{"components":[{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}]},"authors":[{"name":"OWASP Foundation"}],"lifecycles":[{"phase":"build"}],"component":{"name":"appkit-ui","group":"@databricks","version":"0.35.2","purl":"pkg:npm/%40databricks/appkit-ui@0.35.2","bom-ref":"pkg:npm/@databricks/appkit-ui@0.35.2","type":"application","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"externalReferences":[{"type":"vcs","url":"git+https://github.com/databricks/appkit.git"}]},"properties":[{"name":"cdx:bom:componentTypes","value":"npm"},{"name":"cdx:bom:componentNamespaces","value":"@radix-ui\\n@tanstack"},{"name":"cdx:bom:componentSrcFiles","value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-label/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-popover/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-progress/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-select/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-separator/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-slider/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-slot/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-switch/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json\\npackages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json\\npackages/appkit-ui/node_modules/@tanstack/react-table/package.json\\npackages/appkit-ui/node_modules/apache-arrow/package.json\\npackages/appkit-ui/node_modules/class-variance-authority/package.json\\npackages/appkit-ui/node_modules/clsx/package.json\\npackages/appkit-ui/node_modules/cmdk/package.json\\npackages/appkit-ui/node_modules/dompurify/package.json\\npackages/appkit-ui/node_modules/echarts-for-react/package.json\\npackages/appkit-ui/node_modules/echarts/package.json\\npackages/appkit-ui/node_modules/embla-carousel-react/package.json\\npackages/appkit-ui/node_modules/input-otp/package.json\\npackages/appkit-ui/node_modules/lucide-react/package.json\\npackages/appkit-ui/node_modules/marked/package.json\\npackages/appkit-ui/node_modules/next-themes/package.json\\npackages/appkit-ui/node_modules/react-day-picker/package.json\\npackages/appkit-ui/node_modules/react-hook-form/package.json\\npackages/appkit-ui/node_modules/react-resizable-panels/package.json\\npackages/appkit-ui/node_modules/react/package.json\\npackages/appkit-ui/node_modules/recharts/package.json\\npackages/appkit-ui/node_modules/shared/package.json\\npackages/appkit-ui/node_modules/sonner/package.json\\npackages/appkit-ui/node_modules/tailwind-merge/package.json\\npackages/appkit-ui/node_modules/vaul/package.json"}]},"components":[{"group":"@radix-ui","name":"react-accordion","version":"1.2.12","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-accordion@1.2.12","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-accordion@1.2.12","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-accordion"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-accordion/package.json"}],"occurrences":[{"location":"dist/react/ui/accordion.js#4"},{"location":"tmp/dist/react/ui/accordion.js#4"},{"location":"src/react/ui/accordion.tsx#2"}]}},{"group":"@radix-ui","name":"react-alert-dialog","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-alert-dialog@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-alert-dialog@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-alert-dialog"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-alert-dialog/package.json"}],"occurrences":[{"location":"dist/react/ui/alert-dialog.js#5"},{"location":"tmp/dist/react/ui/alert-dialog.js#5"},{"location":"src/react/ui/alert-dialog.tsx#2"}]}},{"group":"@radix-ui","name":"react-aspect-ratio","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-aspect-ratio@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-aspect-ratio@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-aspect-ratio"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-aspect-ratio/package.json"}],"occurrences":[{"location":"dist/react/ui/aspect-ratio.js#4"},{"location":"tmp/dist/react/ui/aspect-ratio.js#4"},{"location":"src/react/ui/aspect-ratio.tsx#3"}]}},{"group":"@radix-ui","name":"react-avatar","version":"1.1.11","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-avatar@1.1.11","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-avatar@1.1.11","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-avatar"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-avatar/package.json"}],"occurrences":[{"location":"dist/react/ui/avatar.js#3"},{"location":"tmp/dist/react/ui/avatar.js#3"},{"location":"src/react/ui/avatar.tsx#2"}]}},{"group":"@radix-ui","name":"react-checkbox","version":"1.3.3","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-checkbox@1.3.3","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-checkbox@1.3.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-checkbox"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-checkbox/package.json"}],"occurrences":[{"location":"dist/react/ui/checkbox.js#6"},{"location":"tmp/dist/react/ui/checkbox.js#6"},{"location":"src/react/ui/checkbox.tsx#4"}]}},{"group":"@radix-ui","name":"react-collapsible","version":"1.1.12","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-collapsible@1.1.12","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-collapsible@1.1.12","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-collapsible"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-collapsible/package.json"}],"occurrences":[{"location":"dist/react/ui/collapsible.js#2"},{"location":"tmp/dist/react/ui/collapsible.js#2"},{"location":"src/react/ui/collapsible.tsx#1"}]}},{"group":"@radix-ui","name":"react-context-menu","version":"2.2.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-context-menu@2.2.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-context-menu@2.2.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-context-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-context-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/context-menu.js#7"},{"location":"tmp/dist/react/ui/context-menu.js#7"},{"location":"src/react/ui/context-menu.tsx#4"}]}},{"group":"@radix-ui","name":"react-dialog","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-dialog@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-dialog@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-dialog"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-dialog/package.json"}],"occurrences":[{"location":"dist/react/ui/dialog.js#5"},{"location":"dist/react/ui/sheet.js#5"},{"location":"tmp/dist/react/ui/dialog.js#5"},{"location":"tmp/dist/react/ui/sheet.js#5"},{"location":"src/react/ui/dialog.tsx#2"},{"location":"src/react/ui/sheet.tsx#2"}]}},{"group":"@radix-ui","name":"react-dropdown-menu","version":"2.1.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-dropdown-menu@2.1.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-dropdown-menu@2.1.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-dropdown-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-dropdown-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/dropdown-menu.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#5"},{"location":"src/react/ui/dropdown-menu.tsx#2"}]}},{"group":"@radix-ui","name":"react-hover-card","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-hover-card@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-hover-card@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-hover-card"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-hover-card/package.json"}],"occurrences":[{"location":"dist/react/ui/hover-card.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#6"},{"location":"src/react/ui/hover-card.tsx#4"}]}},{"group":"@radix-ui","name":"react-label","version":"2.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-label@2.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-label@2.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-label"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-label/package.json"}],"occurrences":[{"location":"dist/react/ui/label.js#5"},{"location":"tmp/dist/react/ui/label.js#5"},{"location":"src/react/ui/form.tsx#4"},{"location":"src/react/ui/label.tsx#4"}]}},{"group":"@radix-ui","name":"react-menubar","version":"1.1.16","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-menubar@1.1.16","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-menubar@1.1.16","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-menubar"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-menubar/package.json"}],"occurrences":[{"location":"dist/react/ui/menubar.js#5"},{"location":"tmp/dist/react/ui/menubar.js#5"},{"location":"src/react/ui/menubar.tsx#2"}]}},{"group":"@radix-ui","name":"react-navigation-menu","version":"1.2.14","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-navigation-menu@1.2.14","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-navigation-menu@1.2.14","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-navigation-menu"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-navigation-menu/package.json"}],"occurrences":[{"location":"dist/react/ui/navigation-menu.js#5"},{"location":"tmp/dist/react/ui/navigation-menu.js#5"},{"location":"src/react/ui/navigation-menu.tsx#2"}]}},{"group":"@radix-ui","name":"react-popover","version":"1.1.15","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-popover@1.1.15","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-popover@1.1.15","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-popover"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-popover/package.json"}],"occurrences":[{"location":"dist/react/ui/popover.js#6"},{"location":"tmp/dist/react/ui/popover.js#6"},{"location":"src/react/ui/popover.tsx#4"}]}},{"group":"@radix-ui","name":"react-progress","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-progress@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-progress@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-progress"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-progress/package.json"}],"occurrences":[{"location":"dist/react/ui/progress.js#3"},{"location":"tmp/dist/react/ui/progress.js#3"},{"location":"src/react/ui/progress.tsx#2"}]}},{"group":"@radix-ui","name":"react-radio-group","version":"1.3.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-radio-group@1.3.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-radio-group@1.3.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-radio-group"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-radio-group/package.json"}],"occurrences":[{"location":"dist/react/ui/radio-group.js#6"},{"location":"tmp/dist/react/ui/radio-group.js#6"},{"location":"src/react/ui/radio-group.tsx#4"}]}},{"group":"@radix-ui","name":"react-scroll-area","version":"1.2.10","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-scroll-area@1.2.10","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-scroll-area@1.2.10","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-scroll-area"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-scroll-area/package.json"}],"occurrences":[{"location":"dist/react/ui/scroll-area.js#5"},{"location":"tmp/dist/react/ui/scroll-area.js#5"},{"location":"src/react/ui/scroll-area.tsx#4"}]}},{"group":"@radix-ui","name":"react-select","version":"2.2.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-select@2.2.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-select@2.2.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-select"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-select/package.json"}],"occurrences":[{"location":"dist/react/ui/select.js#5"},{"location":"tmp/dist/react/ui/select.js#5"},{"location":"src/react/ui/select.tsx#2"}]}},{"group":"@radix-ui","name":"react-separator","version":"1.1.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-separator@1.1.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-separator@1.1.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-separator"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-separator/package.json"}],"occurrences":[{"location":"dist/react/ui/separator.js#5"},{"location":"tmp/dist/react/ui/separator.js#5"},{"location":"src/react/ui/separator.tsx#4"}]}},{"group":"@radix-ui","name":"react-slider","version":"1.3.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-slider@1.3.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-slider@1.3.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-slider"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-slider/package.json"}],"occurrences":[{"location":"dist/react/ui/slider.js#6"},{"location":"tmp/dist/react/ui/slider.js#6"},{"location":"src/react/ui/slider.tsx#4"}]}},{"group":"@radix-ui","name":"react-slot","version":"1.2.4","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-slot@1.2.4","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-slot@1.2.4","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-slot,Slot,@radix-ui/react-slot/Slot"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-slot/package.json"}],"occurrences":[{"location":"dist/react/ui/badge.js#3"},{"location":"dist/react/ui/breadcrumb.js#4"},{"location":"dist/react/ui/button-group.js#4"},{"location":"dist/react/ui/button.js#3"},{"location":"dist/react/ui/form.js#7"},{"location":"dist/react/ui/item.js#4"},{"location":"dist/react/ui/sidebar.js#14"},{"location":"tmp/dist/react/ui/badge.js#3"},{"location":"tmp/dist/react/ui/breadcrumb.js#4"},{"location":"tmp/dist/react/ui/button-group.js#4"},{"location":"tmp/dist/react/ui/button.js#3"},{"location":"tmp/dist/react/ui/form.js#7"},{"location":"tmp/dist/react/ui/item.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#14"},{"location":"src/react/ui/badge.tsx#2"},{"location":"src/react/ui/breadcrumb.tsx#2"},{"location":"src/react/ui/button-group.tsx#1"},{"location":"src/react/ui/button.tsx#2"},{"location":"src/react/ui/form.tsx#5"},{"location":"src/react/ui/item.tsx#2"},{"location":"src/react/ui/sidebar.tsx#4"}]}},{"group":"@radix-ui","name":"react-switch","version":"1.2.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-switch@1.2.6","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-switch@1.2.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-switch"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-switch/package.json"}],"occurrences":[{"location":"dist/react/ui/switch.js#5"},{"location":"tmp/dist/react/ui/switch.js#5"},{"location":"src/react/ui/switch.tsx#4"}]}},{"group":"@radix-ui","name":"react-tabs","version":"1.1.13","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-tabs@1.1.13","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-tabs@1.1.13","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-tabs"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-tabs/package.json"}],"occurrences":[{"location":"dist/react/ui/tabs.js#5"},{"location":"tmp/dist/react/ui/tabs.js#5"},{"location":"src/react/ui/tabs.tsx#4"}]}},{"group":"@radix-ui","name":"react-toggle-group","version":"1.1.11","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-toggle-group@1.1.11","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-toggle-group@1.1.11","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-toggle-group"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-toggle-group/package.json"}],"occurrences":[{"location":"dist/react/ui/toggle-group.js#5"},{"location":"tmp/dist/react/ui/toggle-group.js#5"},{"location":"src/react/ui/toggle-group.tsx#2"}]}},{"group":"@radix-ui","name":"react-toggle","version":"1.1.10","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-toggle@1.1.10","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-toggle@1.1.10","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-toggle"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-toggle/package.json"}],"occurrences":[{"location":"dist/react/ui/toggle.js#4"},{"location":"tmp/dist/react/ui/toggle.js#4"},{"location":"src/react/ui/toggle.tsx#2"}]}},{"group":"@radix-ui","name":"react-tooltip","version":"1.2.8","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40radix-ui/react-tooltip@1.2.8","externalReferences":[{"type":"website","url":"https://radix-ui.com/primitives"},{"type":"vcs","url":"git+https://github.com/radix-ui/primitives.git"}],"type":"library","bom-ref":"pkg:npm/@radix-ui/react-tooltip@1.2.8","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"},{"name":"ImportedModules","value":"@radix-ui/react-tooltip"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@radix-ui/react-tooltip/package.json"}],"occurrences":[{"location":"dist/react/ui/tooltip.js#6"},{"location":"tmp/dist/react/ui/tooltip.js#6"},{"location":"src/react/ui/tooltip.tsx#4"}]}},{"authors":[{"name":"Tanner Linsley"}],"group":"@tanstack","name":"react-table","version":"8.21.3","description":"Headless UI for building powerful tables & datagrids for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/%40tanstack/react-table@8.21.3","externalReferences":[{"type":"website","url":"https://tanstack.com/table"},{"type":"vcs","url":"https://github.com/TanStack/table.git"}],"type":"library","bom-ref":"pkg:npm/@tanstack/react-table@8.21.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"},{"name":"ImportedModules","value":"@tanstack/react-table,flexRender,@tanstack/react-table/flexRender,getCoreRowModel,@tanstack/react-table/getCoreRowModel,getFilteredRowModel,@tanstack/react-table/getFilteredRowModel,getPaginationRowModel,@tanstack/react-table/getPaginationRowModel,getSortedRowModel,@tanstack/react-table/getSortedRowModel,useReactTable,@tanstack/react-table/useReactTable,RowSelectionState,@tanstack/react-table/RowSelectionState,Table,@tanstack/react-table/Table,Column,@tanstack/react-table/Column,ColumnFiltersState,@tanstack/react-table/ColumnFiltersState,@tanstack/react-table/Row,SortingState,@tanstack/react-table/SortingState,VisibilityState,@tanstack/react-table/VisibilityState"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/@tanstack/react-table/package.json"}],"occurrences":[{"location":"dist/react/table/data-table.js#10"},{"location":"dist/react/table/table-wrapper.js#12"},{"location":"tmp/dist/react/table/data-table.js#10"},{"location":"tmp/dist/react/table/table-wrapper.js#12"},{"location":"src/react/table/types.ts#1"},{"location":"src/react/table/data-table.tsx#1"},{"location":"src/react/table/table-wrapper.tsx#14"}]}},{"authors":[{"name":"Apache Software Foundation"}],"group":"","name":"apache-arrow","version":"21.1.0","description":"Apache Arrow columnar in-memory format","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/apache-arrow@21.1.0","externalReferences":[{"type":"website","url":"https://arrow.apache.org/js/"},{"type":"vcs","url":"git+https://github.com/apache/arrow-js.git"}],"type":"library","bom-ref":"pkg:npm/apache-arrow@21.1.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/apache-arrow/package.json"},{"name":"ImportedModules","value":"apache-arrow,Field,apache-arrow/Field,Table,apache-arrow/Table"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/apache-arrow/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/apache-arrow/package.json"}],"occurrences":[{"location":"src/js/arrow/arrow-client.ts#1"},{"location":"src/react/charts/normalize.ts#1"},{"location":"src/react/charts/types.ts#1"},{"location":"src/react/hooks/types.ts#1"},{"location":"src/react/hooks/use-chart-data.ts#1"}]}},{"authors":[{"name":"Joe Bell (https://joebell.co.uk)"}],"group":"","name":"class-variance-authority","version":"0.7.1","description":"Class Variance Authority 🧬","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/class-variance-authority@0.7.1","externalReferences":[{"type":"vcs","url":"https://github.com/joe-bell/cva#readme"}],"type":"library","bom-ref":"pkg:npm/class-variance-authority@0.7.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/class-variance-authority/package.json"},{"name":"ImportedModules","value":"class-variance-authority,class-variance-authority/cva,VariantProps,class-variance-authority/VariantProps"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/class-variance-authority/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/class-variance-authority/package.json"}],"occurrences":[{"location":"dist/react/ui/alert.js#3"},{"location":"dist/react/ui/badge.js#4"},{"location":"dist/react/ui/button-group.js#5"},{"location":"dist/react/ui/button.js#4"},{"location":"dist/react/ui/empty.js#3"},{"location":"dist/react/ui/field.js#6"},{"location":"dist/react/ui/input-group.js#8"},{"location":"dist/react/ui/item.js#5"},{"location":"dist/react/ui/navigation-menu.js#4"},{"location":"dist/react/ui/sidebar.js#15"},{"location":"dist/react/ui/toggle.js#3"},{"location":"tmp/dist/react/ui/alert.js#3"},{"location":"tmp/dist/react/ui/badge.js#4"},{"location":"tmp/dist/react/ui/button-group.js#5"},{"location":"tmp/dist/react/ui/button.js#4"},{"location":"tmp/dist/react/ui/empty.js#3"},{"location":"tmp/dist/react/ui/field.js#6"},{"location":"tmp/dist/react/ui/input-group.js#8"},{"location":"tmp/dist/react/ui/item.js#5"},{"location":"tmp/dist/react/ui/navigation-menu.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#15"},{"location":"tmp/dist/react/ui/toggle.js#3"},{"location":"src/react/ui/alert.tsx#2"},{"location":"src/react/ui/badge.tsx#3"},{"location":"src/react/ui/button-group.tsx#2"},{"location":"src/react/ui/button.tsx#3"},{"location":"src/react/ui/empty.tsx#1"},{"location":"src/react/ui/field.tsx#2"},{"location":"src/react/ui/input-group.tsx#4"},{"location":"src/react/ui/item.tsx#3"},{"location":"src/react/ui/navigation-menu.tsx#3"},{"location":"src/react/ui/sidebar.tsx#5"},{"location":"src/react/ui/toggle-group.tsx#3"},{"location":"src/react/ui/toggle.tsx#3"}]}},{"authors":[{"name":"Luke Edwards <luke.edwards05@gmail.com> (https://lukeed.com)"}],"group":"","name":"clsx","version":"2.1.1","description":"A tiny (239B) utility for constructing className strings conditionally.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/clsx@2.1.1","type":"library","bom-ref":"pkg:npm/clsx@2.1.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/clsx/package.json"},{"name":"ImportedModules","value":"clsx,clsx/clsx,ClassValue,clsx/ClassValue"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/clsx/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/clsx/package.json"}],"occurrences":[{"location":"dist/react/lib/utils.js#1"},{"location":"tmp/dist/react/lib/utils.js#1"},{"location":"src/react/lib/utils.ts#1"}]}},{"authors":[{"name":"Paco (https://github.com/pacocoursey)"}],"group":"","name":"cmdk","version":"1.1.1","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/cmdk@1.1.1","externalReferences":[{"type":"vcs","url":"https://github.com/pacocoursey/cmdk#readme"},{"type":"vcs","url":"git+https://github.com/pacocoursey/cmdk.git"}],"type":"library","bom-ref":"pkg:npm/cmdk@1.1.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/cmdk/package.json"},{"name":"ImportedModules","value":"cmdk,Command,cmdk/Command"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/cmdk/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/cmdk/package.json"}],"occurrences":[{"location":"dist/react/ui/command.js#5"},{"location":"tmp/dist/react/ui/command.js#5"},{"location":"src/react/ui/command.tsx#2"}]}},{"authors":[{"name":"Dr.-Ing. Mario Heiderich"},{"name":" Cure53 <mario@cure53.de> (https://cure53.de/)"}],"group":"","name":"dompurify","version":"3.3.3","description":"DOMPurify is a DOM-only, super-fast, uber-tolerant XSS sanitizer for HTML, MathML and SVG. It's written in JavaScript and works in all modern browsers (Safari, Opera (15+), Internet Explorer (10+), Firefox and Chrome - as well as almost anything else using Blink or WebKit). DOMPurify is written by security people who have vast background in web attacks and XSS. Fear not.","scope":"required","licenses":[{"expression":"(MPL-2.0 OR Apache-2.0)"}],"purl":"pkg:npm/dompurify@3.3.3","externalReferences":[{"type":"vcs","url":"https://github.com/cure53/DOMPurify"},{"type":"vcs","url":"git://github.com/cure53/DOMPurify.git"}],"type":"library","bom-ref":"pkg:npm/dompurify@3.3.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/dompurify/package.json"},{"name":"ImportedModules","value":"dompurify"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/dompurify/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/dompurify/package.json"}],"occurrences":[{"location":"dist/react/genie/genie-chat-message.js#7"},{"location":"tmp/dist/react/genie/genie-chat-message.js#7"},{"location":"src/react/genie/genie-chat-message.tsx#1"}]},"tags":["security","web"]},{"authors":[{"name":"hustcc (http://github.com/hustcc)"}],"group":"","name":"echarts-for-react","version":"3.0.5","description":" Apache Echarts components for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/echarts-for-react@3.0.5","externalReferences":[{"type":"vcs","url":"https://github.com/hustcc/echarts-for-react"},{"type":"vcs","url":"https://github.com/hustcc/echarts-for-react.git"}],"type":"library","bom-ref":"pkg:npm/echarts-for-react@3.0.5","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/echarts-for-react/package.json"},{"name":"ImportedModules","value":"echarts-for-react"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/echarts-for-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/echarts-for-react/package.json"}],"occurrences":[{"location":"dist/react/charts/base.js#4"},{"location":"tmp/dist/react/charts/base.js#4"},{"location":"src/react/charts/base.tsx#2"}]}},{"group":"","name":"echarts","version":"6.0.0","description":"Apache ECharts is a powerful, interactive charting and data visualization library for browser","scope":"required","licenses":[{"license":{"id":"Apache-2.0","url":"https://opensource.org/licenses/Apache-2.0"}}],"purl":"pkg:npm/echarts@6.0.0","externalReferences":[{"type":"website","url":"https://echarts.apache.org"},{"type":"vcs","url":"git+https://github.com/apache/echarts.git"}],"type":"library","bom-ref":"pkg:npm/echarts@6.0.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/echarts/package.json"},{"name":"ImportedModules","value":"echarts,ECharts,echarts/ECharts"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/echarts/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/echarts/package.json"}],"occurrences":[{"location":"src/react/charts/base.tsx#1"}]}},{"authors":[{"name":"David Jerleke"}],"group":"","name":"embla-carousel-react","version":"8.6.0","description":"A lightweight carousel library with fluid motion and great swipe precision","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/embla-carousel-react@8.6.0","externalReferences":[{"type":"website","url":"https://www.embla-carousel.com"},{"type":"vcs","url":"git+https://github.com/davidjerleke/embla-carousel"}],"type":"library","bom-ref":"pkg:npm/embla-carousel-react@8.6.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"},{"name":"ImportedModules","value":"embla-carousel-react,UseEmblaCarouselType,embla-carousel-react/UseEmblaCarouselType"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/embla-carousel-react/package.json"}],"occurrences":[{"location":"dist/react/ui/carousel.js#6"},{"location":"tmp/dist/react/ui/carousel.js#6"},{"location":"src/react/ui/carousel.tsx#4"}]}},{"authors":[{"name":"Guilherme Rodz <g@rodz.dev>"}],"group":"","name":"input-otp","version":"1.4.2","description":"One-time password input component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/input-otp@1.4.2","externalReferences":[{"type":"website","url":"https://input-otp.rodz.dev/"},{"type":"vcs","url":"git+https://github.com/guilhermerodz/input-otp.git"}],"type":"library","bom-ref":"pkg:npm/input-otp@1.4.2","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/input-otp/package.json"},{"name":"ImportedModules","value":"input-otp,OTPInput,input-otp/OTPInput,OTPInputContext,input-otp/OTPInputContext"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/input-otp/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/input-otp/package.json"}],"occurrences":[{"location":"dist/react/ui/input-otp.js#5"},{"location":"tmp/dist/react/ui/input-otp.js#5"},{"location":"src/react/ui/input-otp.tsx#2"}]}},{"authors":[{"name":"Eric Fennis"}],"group":"","name":"lucide-react","version":"0.554.0","description":"A Lucide icon library package for React applications.","scope":"required","licenses":[{"license":{"id":"ISC","url":"https://opensource.org/licenses/ISC"}}],"purl":"pkg:npm/lucide-react@0.554.0","externalReferences":[{"type":"website","url":"https://lucide.dev"},{"type":"vcs","url":"https://github.com/lucide-icons/lucide.git"}],"type":"library","bom-ref":"pkg:npm/lucide-react@0.554.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/lucide-react/package.json"},{"name":"ImportedModules","value":"lucide-react,AlertCircle,lucide-react/AlertCircle,ArrowLeft,lucide-react/ArrowLeft,FileIcon,lucide-react/FileIcon,ChevronRight,lucide-react/ChevronRight,FolderIcon,lucide-react/FolderIcon,Download,lucide-react/Download,Loader2,lucide-react/Loader2,Trash2,lucide-react/Trash2,FolderPlus,lucide-react/FolderPlus,lucide-react/X,BarChart3Icon,lucide-react/BarChart3Icon,ChevronDownIcon,lucide-react/ChevronDownIcon,ChevronDown,lucide-react/ChevronDown,ArrowUpDown,lucide-react/ArrowUpDown,MoreHorizontal,lucide-react/MoreHorizontal,ChevronLeftIcon,lucide-react/ChevronLeftIcon,ChevronRightIcon,lucide-react/ChevronRightIcon,ArrowRight,lucide-react/ArrowRight,CheckIcon,lucide-react/CheckIcon,SearchIcon,lucide-react/SearchIcon,CircleIcon,lucide-react/CircleIcon,XIcon,lucide-react/XIcon,MinusIcon,lucide-react/MinusIcon,MoreHorizontalIcon,lucide-react/MoreHorizontalIcon,GripVerticalIcon,lucide-react/GripVerticalIcon,ChevronUpIcon,lucide-react/ChevronUpIcon,PanelLeftIcon,lucide-react/PanelLeftIcon,CircleCheckIcon,lucide-react/CircleCheckIcon,InfoIcon,lucide-react/InfoIcon,Loader2Icon,lucide-react/Loader2Icon,OctagonXIcon,lucide-react/OctagonXIcon,TriangleAlertIcon,lucide-react/TriangleAlertIcon"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/lucide-react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/lucide-react/package.json"}],"occurrences":[{"location":"dist/react/file-browser/directory-list.js#6"},{"location":"dist/react/file-browser/file-entry.js#4"},{"location":"dist/react/file-browser/file-preview-panel.js#6"},{"location":"dist/react/file-browser/new-folder-input.js#5"},{"location":"dist/react/genie/genie-query-visualization.js#12"},{"location":"dist/react/table/data-table.js#9"},{"location":"dist/react/table/table-wrapper.js#11"},{"location":"dist/react/ui/accordion.js#3"},{"location":"dist/react/ui/breadcrumb.js#3"},{"location":"dist/react/ui/calendar.js#7"},{"location":"dist/react/ui/carousel.js#5"},{"location":"dist/react/ui/checkbox.js#5"},{"location":"dist/react/ui/command.js#4"},{"location":"dist/react/ui/context-menu.js#6"},{"location":"dist/react/ui/dialog.js#4"},{"location":"dist/react/ui/dropdown-menu.js#4"},{"location":"dist/react/ui/input-otp.js#4"},{"location":"dist/react/ui/menubar.js#4"},{"location":"dist/react/ui/navigation-menu.js#3"},{"location":"dist/react/ui/pagination.js#4"},{"location":"dist/react/ui/radio-group.js#5"},{"location":"dist/react/ui/resizable.js#3"},{"location":"dist/react/ui/select.js#4"},{"location":"dist/react/ui/sheet.js#4"},{"location":"dist/react/ui/sidebar.js#13"},{"location":"dist/react/ui/sonner.js#2"},{"location":"dist/react/ui/spinner.js#3"},{"location":"tmp/dist/react/file-browser/directory-list.js#6"},{"location":"tmp/dist/react/file-browser/file-entry.js#4"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#6"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#5"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#12"},{"location":"tmp/dist/react/table/data-table.js#9"},{"location":"tmp/dist/react/table/table-wrapper.js#11"},{"location":"tmp/dist/react/ui/accordion.js#3"},{"location":"tmp/dist/react/ui/breadcrumb.js#3"},{"location":"tmp/dist/react/ui/calendar.js#7"},{"location":"tmp/dist/react/ui/carousel.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#5"},{"location":"tmp/dist/react/ui/command.js#4"},{"location":"tmp/dist/react/ui/context-menu.js#6"},{"location":"tmp/dist/react/ui/dialog.js#4"},{"location":"tmp/dist/react/ui/dropdown-menu.js#4"},{"location":"tmp/dist/react/ui/input-otp.js#4"},{"location":"tmp/dist/react/ui/menubar.js#4"},{"location":"tmp/dist/react/ui/navigation-menu.js#3"},{"location":"tmp/dist/react/ui/pagination.js#4"},{"location":"tmp/dist/react/ui/radio-group.js#5"},{"location":"tmp/dist/react/ui/resizable.js#3"},{"location":"tmp/dist/react/ui/select.js#4"},{"location":"tmp/dist/react/ui/sheet.js#4"},{"location":"tmp/dist/react/ui/sidebar.js#13"},{"location":"tmp/dist/react/ui/sonner.js#2"},{"location":"tmp/dist/react/ui/spinner.js#3"},{"location":"src/react/file-browser/directory-list.tsx#1"},{"location":"src/react/file-browser/file-entry.tsx#1"},{"location":"src/react/file-browser/file-preview-panel.tsx#1"},{"location":"src/react/file-browser/new-folder-input.tsx#1"},{"location":"src/react/genie/genie-query-visualization.tsx#1"},{"location":"src/react/table/data-table.tsx#2"},{"location":"src/react/table/table-wrapper.tsx#15"},{"location":"src/react/ui/accordion.tsx#3"},{"location":"src/react/ui/breadcrumb.tsx#3"},{"location":"src/react/ui/calendar.tsx#9"},{"location":"src/react/ui/carousel.tsx#5"},{"location":"src/react/ui/checkbox.tsx#5"},{"location":"src/react/ui/command.tsx#3"},{"location":"src/react/ui/context-menu.tsx#5"},{"location":"src/react/ui/dialog.tsx#3"},{"location":"src/react/ui/dropdown-menu.tsx#3"},{"location":"src/react/ui/input-otp.tsx#3"},{"location":"src/react/ui/menubar.tsx#3"},{"location":"src/react/ui/navigation-menu.tsx#4"},{"location":"src/react/ui/pagination.tsx#6"},{"location":"src/react/ui/radio-group.tsx#5"},{"location":"src/react/ui/resizable.tsx#2"},{"location":"src/react/ui/select.tsx#3"},{"location":"src/react/ui/sheet.tsx#3"},{"location":"src/react/ui/sidebar.tsx#6"},{"location":"src/react/ui/sonner.tsx#8"},{"location":"src/react/ui/spinner.tsx#2"}]}},{"authors":[{"name":"Christopher Jeffrey"}],"group":"","name":"marked","version":"17.0.3","description":"A markdown parser built for speed","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/marked@17.0.3","externalReferences":[{"type":"website","url":"https://marked.js.org"},{"type":"vcs","url":"git://github.com/markedjs/marked.git"}],"type":"library","bom-ref":"pkg:npm/marked@17.0.3","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/marked/package.json"},{"name":"ImportedModules","value":"marked,marked/marked"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/marked/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/marked/package.json"}],"occurrences":[{"location":"dist/react/genie/genie-chat-message.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#8"},{"location":"src/react/genie/genie-chat-message.tsx#2"}]}},{"group":"","name":"next-themes","version":"0.4.6","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/next-themes@0.4.6","externalReferences":[{"type":"vcs","url":"https://github.com/pacocoursey/next-themes.git"}],"type":"framework","bom-ref":"pkg:npm/next-themes@0.4.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/next-themes/package.json"},{"name":"ImportedModules","value":"next-themes,useTheme,next-themes/useTheme"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/next-themes/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/next-themes/package.json"}],"occurrences":[{"location":"dist/react/ui/sonner.js#3"},{"location":"tmp/dist/react/ui/sonner.js#3"},{"location":"src/react/ui/sonner.tsx#9"}]},"tags":["framework"]},{"authors":[{"name":"Giampaolo Bellavite <io@gpbl.dev>"}],"group":"","name":"react-day-picker","version":"9.12.0","description":"Customizable Date Picker for React","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-day-picker@9.12.0","externalReferences":[{"type":"website","url":"https://daypicker.dev"},{"type":"vcs","url":"https://github.com/gpbl/react-day-picker"}],"type":"framework","bom-ref":"pkg:npm/react-day-picker@9.12.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-day-picker/package.json"},{"name":"ImportedModules","value":"react-day-picker,DayPicker,react-day-picker/DayPicker,getDefaultClassNames,react-day-picker/getDefaultClassNames,DayButton,react-day-picker/DayButton"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-day-picker/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-day-picker/package.json"}],"occurrences":[{"location":"dist/react/ui/calendar.js#8"},{"location":"tmp/dist/react/ui/calendar.js#8"},{"location":"src/react/ui/calendar.tsx#10"}]},"tags":["framework"]},{"authors":[{"name":"Beier(Bill) Luo <bluebill1049@hotmail.com>"}],"group":"","name":"react-hook-form","version":"7.68.0","description":"Performant, flexible and extensible forms library for React Hooks","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-hook-form@7.68.0","externalReferences":[{"type":"website","url":"https://react-hook-form.com"},{"type":"vcs","url":"https://github.com/react-hook-form/react-hook-form"}],"type":"framework","bom-ref":"pkg:npm/react-hook-form@7.68.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-hook-form/package.json"},{"name":"ImportedModules","value":"react-hook-form,Controller,react-hook-form/Controller,FormProvider,react-hook-form/FormProvider,useFormContext,react-hook-form/useFormContext,useFormState,react-hook-form/useFormState,ControllerProps,react-hook-form/ControllerProps,FieldPath,react-hook-form/FieldPath,FieldValues,react-hook-form/FieldValues"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-hook-form/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-hook-form/package.json"}],"occurrences":[{"location":"dist/react/ui/form.js#8"},{"location":"tmp/dist/react/ui/form.js#8"},{"location":"src/react/ui/form.tsx#14"}]},"tags":["framework"]},{"authors":[{"name":"Brian Vaughn <brian.david.vaughn@gmail.com>"}],"group":"","name":"react-resizable-panels","version":"3.0.6","description":"React components for resizable panel groups/layouts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react-resizable-panels@3.0.6","externalReferences":[{"type":"vcs","url":"git+https://github.com/bvaughn/react-resizable-panels.git"}],"type":"framework","bom-ref":"pkg:npm/react-resizable-panels@3.0.6","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"},{"name":"ImportedModules","value":"react-resizable-panels"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react-resizable-panels/package.json"}],"occurrences":[{"location":"dist/react/ui/resizable.js#4"},{"location":"tmp/dist/react/ui/resizable.js#4"},{"location":"src/react/ui/resizable.tsx#3"}]},"tags":["framework"]},{"group":"","name":"react","version":"19.2.0","description":"React is a JavaScript library for building user interfaces.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/react@19.2.0","externalReferences":[{"type":"website","url":"https://react.dev/"},{"type":"vcs","url":"https://github.com/facebook/react.git"}],"type":"framework","bom-ref":"pkg:npm/react@19.2.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/react/package.json"},{"name":"ExportedModules","value":"react/charts/area,react/charts/bar,react/charts/heatmap,react/charts/line,react/charts/pie,react/charts/radar,react/charts/scatter,react/hooks/use-chart-data,react/charts/base,react/charts/create-chart,react/charts/wrapper,react/charts/normalize,react/charts/constants,react/charts/theme,react/charts/utils,react/charts/options,react/charts/types,react/lib/format,react/genie/genie-chart-inference,react/genie/genie-chat,react/genie/genie-chat-input,react/genie/genie-chat-message,react/genie/genie-chat-message-list,react/genie/genie-query-transform,react/genie/genie-query-visualization,react/genie/use-genie-chat,react/hooks/types,react/hooks/use-agent-chat,react/hooks/use-analytics-query,react/hooks/use-plugin-config,react/hooks/use-serving-invoke,react/hooks/use-serving-stream,DonutChart,pie/DonutChart,PieChart,pie/PieChart,UseChartDataOptions,.hooks/use-chart-data/UseChartDataOptions,UseChartDataResult,.hooks/use-chart-data/UseChartDataResult,useChartData,.hooks/use-chart-data/useChartData,use-chart-data/UseChartDataOptions,use-chart-data/UseChartDataResult,use-chart-data/useChartData,BaseChart,base/BaseChart,BaseChartProps,base/BaseChartProps,ChartWrapper,wrapper/ChartWrapper,ChartWrapperProps,wrapper/ChartWrapperProps,NormalizedHeatmapData,normalize/NormalizedHeatmapData,normalizeChartData,normalize/normalizeChartData,normalizeHeatmapData,normalize/normalizeHeatmapData,CHART_COLOR_VARS,constants/CHART_COLOR_VARS,CHART_COLOR_VARS_CATEGORICAL,constants/CHART_COLOR_VARS_CATEGORICAL,CHART_COLOR_VARS_DIVERGING,constants/CHART_COLOR_VARS_DIVERGING,CHART_COLOR_VARS_SEQUENTIAL,constants/CHART_COLOR_VARS_SEQUENTIAL,DATE_FIELD_PATTERNS,constants/DATE_FIELD_PATTERNS,FALLBACK_COLORS_CATEGORICAL,constants/FALLBACK_COLORS_CATEGORICAL,FALLBACK_COLORS_DIVERGING,constants/FALLBACK_COLORS_DIVERGING,FALLBACK_COLORS_SEQUENTIAL,constants/FALLBACK_COLORS_SEQUENTIAL,METADATA_DATE_PATTERNS,constants/METADATA_DATE_PATTERNS,NAME_FIELD_PATTERNS,constants/NAME_FIELD_PATTERNS,useAllThemeColors,theme/useAllThemeColors,useThemeColors,theme/useThemeColors,createTimeSeriesData,utils/createTimeSeriesData,formatLabel,utils/formatLabel,sortTimeSeriesAscending,utils/sortTimeSeriesAscending,toChartArray,utils/toChartArray,toChartValue,utils/toChartValue,truncateLabel,utils/truncateLabel,buildCartesianOption,options/buildCartesianOption,buildHeatmapOption,options/buildHeatmapOption,buildHorizontalBarOption,options/buildHorizontalBarOption,buildPieOption,options/buildPieOption,buildRadarOption,options/buildRadarOption,CartesianContext,options/CartesianContext,HeatmapContext,options/HeatmapContext,OptionBuilderContext,options/OptionBuilderContext,AreaChartProps,types/AreaChartProps,AreaChartSpecificProps,types/AreaChartSpecificProps,BarChartProps,types/BarChartProps,BarChartSpecificProps,types/BarChartSpecificProps,ChartBaseProps,types/ChartBaseProps,ChartColorPalette,types/ChartColorPalette,ChartData,types/ChartData,ChartType,types/ChartType,DataFormat,types/DataFormat,DataProps,types/DataProps,DonutChartProps,types/DonutChartProps,HeatmapChartProps,types/HeatmapChartProps,HeatmapChartSpecificProps,types/HeatmapChartSpecificProps,LineChartProps,types/LineChartProps,LineChartSpecificProps,types/LineChartSpecificProps,NormalizedChartData,types/NormalizedChartData,NormalizedChartDataBase,types/NormalizedChartDataBase,Orientation,types/Orientation,PieChartProps,types/PieChartProps,PieChartSpecificProps,types/PieChartSpecificProps,QueryProps,types/QueryProps,RadarChartProps,types/RadarChartProps,RadarChartSpecificProps,types/RadarChartSpecificProps,ScatterChartProps,types/ScatterChartProps,ScatterChartSpecificProps,types/ScatterChartSpecificProps,UnifiedChartProps,types/UnifiedChartProps,isArrowTable,types/isArrowTable,isDataProps,types/isDataProps,isQueryProps,types/isQueryProps,ChartInference,genie-chart-inference/ChartInference,getCompatibleChartTypes,genie-chart-inference/getCompatibleChartTypes,inferChartType,genie-chart-inference/inferChartType,ColumnCategory,genie-query-transform/ColumnCategory,GenieColumnMeta,genie-query-transform/GenieColumnMeta,TransformedGenieData,genie-query-transform/TransformedGenieData,transformGenieData,genie-query-transform/transformGenieData,AnalyticsFormat,types/AnalyticsFormat,InferResultByFormat,types/InferResultByFormat,InferRowType,types/InferRowType,InferServingChunk,types/InferServingChunk,InferServingRequest,types/InferServingRequest,InferServingResponse,types/InferServingResponse,PluginRegistry,types/PluginRegistry,QueryRegistry,types/QueryRegistry,ServingAlias,types/ServingAlias,ServingEndpointRegistry,types/ServingEndpointRegistry,TypedArrowTable,types/TypedArrowTable,UseAnalyticsQueryOptions,types/UseAnalyticsQueryOptions,UseAnalyticsQueryResult,types/UseAnalyticsQueryResult,AgentChatEvent,use-agent-chat/AgentChatEvent,UseAgentChatOptions,use-agent-chat/UseAgentChatOptions,UseAgentChatResult,use-agent-chat/UseAgentChatResult,useAgentChat,use-agent-chat/useAgentChat,UseServingInvokeOptions,use-serving-invoke/UseServingInvokeOptions,UseServingInvokeResult,use-serving-invoke/UseServingInvokeResult,useServingInvoke,use-serving-invoke/useServingInvoke,UseServingStreamOptions,use-serving-stream/UseServingStreamOptions,UseServingStreamResult,use-serving-stream/UseServingStreamResult,useServingStream,use-serving-stream/useServingStream"},{"name":"ImportedModules","value":"react,useCallback,react/useCallback,useMemo,react/useMemo,useRef,react/useRef,react/jsx-runtime,react/jsx-runtime/jsx,Component,react/Component,jsxs,react/jsx-runtime/jsxs,useEffect,react/useEffect,useState,react/useState,useLayoutEffect,react/useLayoutEffect,createContext,react/createContext,useContext,react/useContext,Fragment,react/jsx-runtime/Fragment,react/JSX,ReactNode,react/ReactNode,KeyboardEvent,react/KeyboardEvent"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/react/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/react/package.json"}],"occurrences":[{"location":"dist/react/charts/base.js#5"},{"location":"dist/react/charts/base.js#6"},{"location":"dist/react/charts/chart-error-boundary.js#1"},{"location":"dist/react/charts/chart-error-boundary.js#2"},{"location":"dist/react/charts/create-chart.js#3"},{"location":"dist/react/charts/empty.js#1"},{"location":"dist/react/charts/error.js#1"},{"location":"dist/react/charts/loading.js#1"},{"location":"dist/react/charts/theme.js#2"},{"location":"dist/react/charts/wrapper.js#7"},{"location":"dist/react/file-browser/directory-list.js#5"},{"location":"dist/react/file-browser/file-breadcrumb.js#2"},{"location":"dist/react/file-browser/file-entry.js#3"},{"location":"dist/react/file-browser/file-preview-panel.js#5"},{"location":"dist/react/file-browser/new-folder-input.js#3"},{"location":"dist/react/file-browser/new-folder-input.js#4"},{"location":"dist/react/genie/genie-chat-input.js#3"},{"location":"dist/react/genie/genie-chat-input.js#4"},{"location":"dist/react/genie/genie-chat-message-list.js#7"},{"location":"dist/react/genie/genie-chat-message-list.js#8"},{"location":"dist/react/genie/genie-chat-message.js#5"},{"location":"dist/react/genie/genie-chat-message.js#6"},{"location":"dist/react/genie/genie-chat.js#6"},{"location":"dist/react/genie/genie-query-visualization.js#10"},{"location":"dist/react/genie/genie-query-visualization.js#11"},{"location":"dist/react/genie/use-genie-chat.js#4"},{"location":"dist/react/hooks/use-agent-chat.js#3"},{"location":"dist/react/hooks/use-analytics-query.js#5"},{"location":"dist/react/hooks/use-chart-data.js#2"},{"location":"dist/react/hooks/use-mobile.js#1"},{"location":"dist/react/hooks/use-query-hmr.js#1"},{"location":"dist/react/hooks/use-serving-invoke.js#2"},{"location":"dist/react/hooks/use-serving-stream.js#4"},{"location":"dist/react/portal-container-context.js#1"},{"location":"dist/react/portal-container-context.js#2"},{"location":"dist/react/table/data-table.js#8"},{"location":"dist/react/table/empty.js#1"},{"location":"dist/react/table/error.js#1"},{"location":"dist/react/table/loading.js#1"},{"location":"dist/react/table/table-wrapper.js#9"},{"location":"dist/react/table/table-wrapper.js#10"},{"location":"dist/react/ui/accordion.js#2"},{"location":"dist/react/ui/alert-dialog.js#4"},{"location":"dist/react/ui/alert.js#2"},{"location":"dist/react/ui/aspect-ratio.js#3"},{"location":"dist/react/ui/avatar.js#2"},{"location":"dist/react/ui/badge.js#2"},{"location":"dist/react/ui/breadcrumb.js#2"},{"location":"dist/react/ui/button-group.js#3"},{"location":"dist/react/ui/button.js#2"},{"location":"dist/react/ui/calendar.js#5"},{"location":"dist/react/ui/calendar.js#6"},{"location":"dist/react/ui/card.js#2"},{"location":"dist/react/ui/carousel.js#3"},{"location":"dist/react/ui/carousel.js#4"},{"location":"dist/react/ui/chart.js#4"},{"location":"dist/react/ui/chart.js#5"},{"location":"dist/react/ui/checkbox.js#4"},{"location":"dist/react/ui/collapsible.js#1"},{"location":"dist/react/ui/command.js#3"},{"location":"dist/react/ui/context-menu.js#5"},{"location":"dist/react/ui/dialog.js#3"},{"location":"dist/react/ui/drawer.js#5"},{"location":"dist/react/ui/dropdown-menu.js#3"},{"location":"dist/react/ui/empty.js#2"},{"location":"dist/react/ui/field.js#4"},{"location":"dist/react/ui/field.js#5"},{"location":"dist/react/ui/form.js#5"},{"location":"dist/react/ui/form.js#6"},{"location":"dist/react/ui/hover-card.js#5"},{"location":"dist/react/ui/input-group.js#7"},{"location":"dist/react/ui/input-otp.js#2"},{"location":"dist/react/ui/input-otp.js#3"},{"location":"dist/react/ui/input.js#2"},{"location":"dist/react/ui/item.js#3"},{"location":"dist/react/ui/kbd.js#2"},{"location":"dist/react/ui/label.js#4"},{"location":"dist/react/ui/menubar.js#3"},{"location":"dist/react/ui/navigation-menu.js#2"},{"location":"dist/react/ui/pagination.js#3"},{"location":"dist/react/ui/popover.js#5"},{"location":"dist/react/ui/progress.js#2"},{"location":"dist/react/ui/radio-group.js#4"},{"location":"dist/react/ui/resizable.js#2"},{"location":"dist/react/ui/scroll-area.js#4"},{"location":"dist/react/ui/select.js#3"},{"location":"dist/react/ui/separator.js#4"},{"location":"dist/react/ui/sheet.js#3"},{"location":"dist/react/ui/sidebar.js#11"},{"location":"dist/react/ui/sidebar.js#12"},{"location":"dist/react/ui/skeleton.js#2"},{"location":"dist/react/ui/slider.js#4"},{"location":"dist/react/ui/slider.js#5"},{"location":"dist/react/ui/sonner.js#1"},{"location":"dist/react/ui/spinner.js#2"},{"location":"dist/react/ui/switch.js#4"},{"location":"dist/react/ui/table.js#2"},{"location":"dist/react/ui/tabs.js#4"},{"location":"dist/react/ui/textarea.js#2"},{"location":"dist/react/ui/toggle-group.js#3"},{"location":"dist/react/ui/toggle-group.js#4"},{"location":"dist/react/ui/toggle.js#2"},{"location":"dist/react/ui/tooltip.js#5"},{"location":"tmp/dist/react/charts/base.js#5"},{"location":"tmp/dist/react/charts/base.js#6"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#1"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#2"},{"location":"tmp/dist/react/charts/create-chart.js#3"},{"location":"tmp/dist/react/charts/empty.js#1"},{"location":"tmp/dist/react/charts/error.js#1"},{"location":"tmp/dist/react/charts/loading.js#1"},{"location":"tmp/dist/react/charts/theme.js#2"},{"location":"tmp/dist/react/charts/wrapper.js#7"},{"location":"tmp/dist/react/file-browser/directory-list.js#5"},{"location":"tmp/dist/react/file-browser/file-breadcrumb.js#2"},{"location":"tmp/dist/react/file-browser/file-entry.js#3"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#5"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#3"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-input.js#3"},{"location":"tmp/dist/react/genie/genie-chat-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#7"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#5"},{"location":"tmp/dist/react/genie/genie-chat-message.js#6"},{"location":"tmp/dist/react/genie/genie-chat.js#6"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#10"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#11"},{"location":"tmp/dist/react/genie/use-genie-chat.js#4"},{"location":"tmp/dist/react/hooks/use-agent-chat.js#3"},{"location":"tmp/dist/react/hooks/use-analytics-query.js#5"},{"location":"tmp/dist/react/hooks/use-chart-data.js#2"},{"location":"tmp/dist/react/hooks/use-mobile.js#1"},{"location":"tmp/dist/react/hooks/use-query-hmr.js#1"},{"location":"tmp/dist/react/hooks/use-serving-invoke.js#2"},{"location":"tmp/dist/react/hooks/use-serving-stream.js#4"},{"location":"tmp/dist/react/portal-container-context.js#1"},{"location":"tmp/dist/react/portal-container-context.js#2"},{"location":"tmp/dist/react/table/data-table.js#8"},{"location":"tmp/dist/react/table/empty.js#1"},{"location":"tmp/dist/react/table/error.js#1"},{"location":"tmp/dist/react/table/loading.js#1"},{"location":"tmp/dist/react/table/table-wrapper.js#9"},{"location":"tmp/dist/react/table/table-wrapper.js#10"},{"location":"tmp/dist/react/ui/accordion.js#2"},{"location":"tmp/dist/react/ui/alert-dialog.js#4"},{"location":"tmp/dist/react/ui/alert.js#2"},{"location":"tmp/dist/react/ui/aspect-ratio.js#3"},{"location":"tmp/dist/react/ui/avatar.js#2"},{"location":"tmp/dist/react/ui/badge.js#2"},{"location":"tmp/dist/react/ui/breadcrumb.js#2"},{"location":"tmp/dist/react/ui/button-group.js#3"},{"location":"tmp/dist/react/ui/button.js#2"},{"location":"tmp/dist/react/ui/calendar.js#5"},{"location":"tmp/dist/react/ui/calendar.js#6"},{"location":"tmp/dist/react/ui/card.js#2"},{"location":"tmp/dist/react/ui/carousel.js#3"},{"location":"tmp/dist/react/ui/carousel.js#4"},{"location":"tmp/dist/react/ui/chart.js#4"},{"location":"tmp/dist/react/ui/chart.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#4"},{"location":"tmp/dist/react/ui/collapsible.js#1"},{"location":"tmp/dist/react/ui/command.js#3"},{"location":"tmp/dist/react/ui/context-menu.js#5"},{"location":"tmp/dist/react/ui/dialog.js#3"},{"location":"tmp/dist/react/ui/drawer.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#3"},{"location":"tmp/dist/react/ui/empty.js#2"},{"location":"tmp/dist/react/ui/field.js#4"},{"location":"tmp/dist/react/ui/field.js#5"},{"location":"tmp/dist/react/ui/form.js#5"},{"location":"tmp/dist/react/ui/form.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#5"},{"location":"tmp/dist/react/ui/input-group.js#7"},{"location":"tmp/dist/react/ui/input-otp.js#2"},{"location":"tmp/dist/react/ui/input-otp.js#3"},{"location":"tmp/dist/react/ui/input.js#2"},{"location":"tmp/dist/react/ui/item.js#3"},{"location":"tmp/dist/react/ui/kbd.js#2"},{"location":"tmp/dist/react/ui/label.js#4"},{"location":"tmp/dist/react/ui/menubar.js#3"},{"location":"tmp/dist/react/ui/navigation-menu.js#2"},{"location":"tmp/dist/react/ui/pagination.js#3"},{"location":"tmp/dist/react/ui/popover.js#5"},{"location":"tmp/dist/react/ui/progress.js#2"},{"location":"tmp/dist/react/ui/radio-group.js#4"},{"location":"tmp/dist/react/ui/resizable.js#2"},{"location":"tmp/dist/react/ui/scroll-area.js#4"},{"location":"tmp/dist/react/ui/select.js#3"},{"location":"tmp/dist/react/ui/separator.js#4"},{"location":"tmp/dist/react/ui/sheet.js#3"},{"location":"tmp/dist/react/ui/sidebar.js#11"},{"location":"tmp/dist/react/ui/sidebar.js#12"},{"location":"tmp/dist/react/ui/skeleton.js#2"},{"location":"tmp/dist/react/ui/slider.js#4"},{"location":"tmp/dist/react/ui/slider.js#5"},{"location":"tmp/dist/react/ui/sonner.js#1"},{"location":"tmp/dist/react/ui/spinner.js#2"},{"location":"tmp/dist/react/ui/switch.js#4"},{"location":"tmp/dist/react/ui/table.js#2"},{"location":"tmp/dist/react/ui/tabs.js#4"},{"location":"tmp/dist/react/ui/textarea.js#2"},{"location":"tmp/dist/react/ui/toggle-group.js#3"},{"location":"tmp/dist/react/ui/toggle-group.js#4"},{"location":"tmp/dist/react/ui/toggle.js#2"},{"location":"tmp/dist/react/ui/tooltip.js#5"},{"location":"src/react/charts/theme.ts#1"},{"location":"src/react/genie/use-genie-chat.ts#1"},{"location":"src/react/hooks/use-agent-chat.ts#1"},{"location":"src/react/hooks/use-analytics-query.ts#1"},{"location":"src/react/hooks/use-chart-data.ts#2"},{"location":"src/react/hooks/use-mobile.ts#1"},{"location":"src/react/hooks/use-query-hmr.ts#1"},{"location":"src/react/hooks/use-serving-invoke.ts#1"},{"location":"src/react/hooks/use-serving-stream.ts#1"},{"location":"src/react/charts/area/index.tsx#1"},{"location":"src/react/charts/bar/index.tsx#1"},{"location":"src/react/charts/base.tsx#3"},{"location":"src/react/charts/chart-error-boundary.tsx#1"},{"location":"src/react/charts/heatmap/index.tsx#1"},{"location":"src/react/charts/line/index.tsx#1"},{"location":"src/react/charts/pie/index.tsx#1"},{"location":"src/react/charts/radar/index.tsx#1"},{"location":"src/react/charts/scatter/index.tsx#1"},{"location":"src/react/charts/wrapper.tsx#1"},{"location":"src/react/file-browser/new-folder-input.tsx#2"},{"location":"src/react/genie/genie-chat-input.tsx#1"},{"location":"src/react/genie/genie-chat-message-list.tsx#1"},{"location":"src/react/genie/genie-chat-message.tsx#3"},{"location":"src/react/genie/genie-query-visualization.tsx#2"},{"location":"src/react/portal-container-context.tsx#1"},{"location":"src/react/portal-container-context.tsx#2"},{"location":"src/react/table/table-wrapper.tsx#16"},{"location":"src/react/ui/accordion.tsx#1"},{"location":"src/react/ui/alert-dialog.tsx#1"},{"location":"src/react/ui/alert.tsx#1"},{"location":"src/react/ui/avatar.tsx#1"},{"location":"src/react/ui/badge.tsx#1"},{"location":"src/react/ui/breadcrumb.tsx#1"},{"location":"src/react/ui/button.tsx#1"},{"location":"src/react/ui/calendar.tsx#4"},{"location":"src/react/ui/card.tsx#1"},{"location":"src/react/ui/carousel.tsx#1"},{"location":"src/react/ui/chart.tsx#3"},{"location":"src/react/ui/checkbox.tsx#3"},{"location":"src/react/ui/command.tsx#1"},{"location":"src/react/ui/context-menu.tsx#3"},{"location":"src/react/ui/dialog.tsx#1"},{"location":"src/react/ui/drawer.tsx#3"},{"location":"src/react/ui/dropdown-menu.tsx#1"},{"location":"src/react/ui/field.tsx#1"},{"location":"src/react/ui/form.tsx#3"},{"location":"src/react/ui/hover-card.tsx#3"},{"location":"src/react/ui/input-group.tsx#3"},{"location":"src/react/ui/input-otp.tsx#1"},{"location":"src/react/ui/input.tsx#1"},{"location":"src/react/ui/item.tsx#1"},{"location":"src/react/ui/label.tsx#3"},{"location":"src/react/ui/menubar.tsx#1"},{"location":"src/react/ui/navigation-menu.tsx#1"},{"location":"src/react/ui/pagination.tsx#1"},{"location":"src/react/ui/popover.tsx#3"},{"location":"src/react/ui/progress.tsx#1"},{"location":"src/react/ui/radio-group.tsx#3"},{"location":"src/react/ui/resizable.tsx#1"},{"location":"src/react/ui/scroll-area.tsx#3"},{"location":"src/react/ui/select.tsx#1"},{"location":"src/react/ui/separator.tsx#3"},{"location":"src/react/ui/sheet.tsx#1"},{"location":"src/react/ui/sidebar.tsx#3"},{"location":"src/react/ui/slider.tsx#3"},{"location":"src/react/ui/switch.tsx#3"},{"location":"src/react/ui/table.tsx#1"},{"location":"src/react/ui/tabs.tsx#3"},{"location":"src/react/ui/textarea.tsx#1"},{"location":"src/react/ui/toggle-group.tsx#1"},{"location":"src/react/ui/toggle.tsx#1"},{"location":"src/react/ui/tooltip.tsx#3"},{"location":"dist/react/charts/base.js#6"},{"location":"dist/react/charts/chart-error-boundary.js#2"},{"location":"dist/react/charts/create-chart.js#3"},{"location":"dist/react/charts/empty.js#1"},{"location":"dist/react/charts/error.js#1"},{"location":"dist/react/charts/loading.js#1"},{"location":"dist/react/charts/wrapper.js#7"},{"location":"dist/react/file-browser/directory-list.js#5"},{"location":"dist/react/file-browser/file-breadcrumb.js#2"},{"location":"dist/react/file-browser/file-entry.js#3"},{"location":"dist/react/file-browser/file-preview-panel.js#5"},{"location":"dist/react/file-browser/new-folder-input.js#4"},{"location":"dist/react/genie/genie-chat-input.js#4"},{"location":"dist/react/genie/genie-chat-message-list.js#8"},{"location":"dist/react/genie/genie-chat-message.js#6"},{"location":"dist/react/genie/genie-chat.js#6"},{"location":"dist/react/genie/genie-query-visualization.js#11"},{"location":"dist/react/portal-container-context.js#2"},{"location":"dist/react/table/data-table.js#8"},{"location":"dist/react/table/empty.js#1"},{"location":"dist/react/table/error.js#1"},{"location":"dist/react/table/loading.js#1"},{"location":"dist/react/table/table-wrapper.js#10"},{"location":"dist/react/ui/accordion.js#2"},{"location":"dist/react/ui/alert-dialog.js#4"},{"location":"dist/react/ui/alert.js#2"},{"location":"dist/react/ui/aspect-ratio.js#3"},{"location":"dist/react/ui/avatar.js#2"},{"location":"dist/react/ui/badge.js#2"},{"location":"dist/react/ui/breadcrumb.js#2"},{"location":"dist/react/ui/button-group.js#3"},{"location":"dist/react/ui/button.js#2"},{"location":"dist/react/ui/calendar.js#6"},{"location":"dist/react/ui/card.js#2"},{"location":"dist/react/ui/carousel.js#4"},{"location":"dist/react/ui/chart.js#5"},{"location":"dist/react/ui/checkbox.js#4"},{"location":"dist/react/ui/collapsible.js#1"},{"location":"dist/react/ui/command.js#3"},{"location":"dist/react/ui/context-menu.js#5"},{"location":"dist/react/ui/dialog.js#3"},{"location":"dist/react/ui/drawer.js#5"},{"location":"dist/react/ui/dropdown-menu.js#3"},{"location":"dist/react/ui/empty.js#2"},{"location":"dist/react/ui/field.js#5"},{"location":"dist/react/ui/form.js#6"},{"location":"dist/react/ui/hover-card.js#5"},{"location":"dist/react/ui/input-group.js#7"},{"location":"dist/react/ui/input-otp.js#3"},{"location":"dist/react/ui/input.js#2"},{"location":"dist/react/ui/item.js#3"},{"location":"dist/react/ui/kbd.js#2"},{"location":"dist/react/ui/label.js#4"},{"location":"dist/react/ui/menubar.js#3"},{"location":"dist/react/ui/navigation-menu.js#2"},{"location":"dist/react/ui/pagination.js#3"},{"location":"dist/react/ui/popover.js#5"},{"location":"dist/react/ui/progress.js#2"},{"location":"dist/react/ui/radio-group.js#4"},{"location":"dist/react/ui/resizable.js#2"},{"location":"dist/react/ui/scroll-area.js#4"},{"location":"dist/react/ui/select.js#3"},{"location":"dist/react/ui/separator.js#4"},{"location":"dist/react/ui/sheet.js#3"},{"location":"dist/react/ui/sidebar.js#12"},{"location":"dist/react/ui/skeleton.js#2"},{"location":"dist/react/ui/slider.js#5"},{"location":"dist/react/ui/sonner.js#1"},{"location":"dist/react/ui/spinner.js#2"},{"location":"dist/react/ui/switch.js#4"},{"location":"dist/react/ui/table.js#2"},{"location":"dist/react/ui/tabs.js#4"},{"location":"dist/react/ui/textarea.js#2"},{"location":"dist/react/ui/toggle-group.js#4"},{"location":"dist/react/ui/toggle.js#2"},{"location":"dist/react/ui/tooltip.js#5"},{"location":"tmp/dist/react/charts/base.js#6"},{"location":"tmp/dist/react/charts/chart-error-boundary.js#2"},{"location":"tmp/dist/react/charts/create-chart.js#3"},{"location":"tmp/dist/react/charts/empty.js#1"},{"location":"tmp/dist/react/charts/error.js#1"},{"location":"tmp/dist/react/charts/loading.js#1"},{"location":"tmp/dist/react/charts/wrapper.js#7"},{"location":"tmp/dist/react/file-browser/directory-list.js#5"},{"location":"tmp/dist/react/file-browser/file-breadcrumb.js#2"},{"location":"tmp/dist/react/file-browser/file-entry.js#3"},{"location":"tmp/dist/react/file-browser/file-preview-panel.js#5"},{"location":"tmp/dist/react/file-browser/new-folder-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-input.js#4"},{"location":"tmp/dist/react/genie/genie-chat-message-list.js#8"},{"location":"tmp/dist/react/genie/genie-chat-message.js#6"},{"location":"tmp/dist/react/genie/genie-chat.js#6"},{"location":"tmp/dist/react/genie/genie-query-visualization.js#11"},{"location":"tmp/dist/react/portal-container-context.js#2"},{"location":"tmp/dist/react/table/data-table.js#8"},{"location":"tmp/dist/react/table/empty.js#1"},{"location":"tmp/dist/react/table/error.js#1"},{"location":"tmp/dist/react/table/loading.js#1"},{"location":"tmp/dist/react/table/table-wrapper.js#10"},{"location":"tmp/dist/react/ui/accordion.js#2"},{"location":"tmp/dist/react/ui/alert-dialog.js#4"},{"location":"tmp/dist/react/ui/alert.js#2"},{"location":"tmp/dist/react/ui/aspect-ratio.js#3"},{"location":"tmp/dist/react/ui/avatar.js#2"},{"location":"tmp/dist/react/ui/badge.js#2"},{"location":"tmp/dist/react/ui/breadcrumb.js#2"},{"location":"tmp/dist/react/ui/button-group.js#3"},{"location":"tmp/dist/react/ui/button.js#2"},{"location":"tmp/dist/react/ui/calendar.js#6"},{"location":"tmp/dist/react/ui/card.js#2"},{"location":"tmp/dist/react/ui/carousel.js#4"},{"location":"tmp/dist/react/ui/chart.js#5"},{"location":"tmp/dist/react/ui/checkbox.js#4"},{"location":"tmp/dist/react/ui/collapsible.js#1"},{"location":"tmp/dist/react/ui/command.js#3"},{"location":"tmp/dist/react/ui/context-menu.js#5"},{"location":"tmp/dist/react/ui/dialog.js#3"},{"location":"tmp/dist/react/ui/drawer.js#5"},{"location":"tmp/dist/react/ui/dropdown-menu.js#3"},{"location":"tmp/dist/react/ui/empty.js#2"},{"location":"tmp/dist/react/ui/field.js#5"},{"location":"tmp/dist/react/ui/form.js#6"},{"location":"tmp/dist/react/ui/hover-card.js#5"},{"location":"tmp/dist/react/ui/input-group.js#7"},{"location":"tmp/dist/react/ui/input-otp.js#3"},{"location":"tmp/dist/react/ui/input.js#2"},{"location":"tmp/dist/react/ui/item.js#3"},{"location":"tmp/dist/react/ui/kbd.js#2"},{"location":"tmp/dist/react/ui/label.js#4"},{"location":"tmp/dist/react/ui/menubar.js#3"},{"location":"tmp/dist/react/ui/navigation-menu.js#2"},{"location":"tmp/dist/react/ui/pagination.js#3"},{"location":"tmp/dist/react/ui/popover.js#5"},{"location":"tmp/dist/react/ui/progress.js#2"},{"location":"tmp/dist/react/ui/radio-group.js#4"},{"location":"tmp/dist/react/ui/resizable.js#2"},{"location":"tmp/dist/react/ui/scroll-area.js#4"},{"location":"tmp/dist/react/ui/select.js#3"},{"location":"tmp/dist/react/ui/separator.js#4"},{"location":"tmp/dist/react/ui/sheet.js#3"},{"location":"tmp/dist/react/ui/sidebar.js#12"},{"location":"tmp/dist/react/ui/skeleton.js#2"},{"location":"tmp/dist/react/ui/slider.js#5"},{"location":"tmp/dist/react/ui/sonner.js#1"},{"location":"tmp/dist/react/ui/spinner.js#2"},{"location":"tmp/dist/react/ui/switch.js#4"},{"location":"tmp/dist/react/ui/table.js#2"},{"location":"tmp/dist/react/ui/tabs.js#4"},{"location":"tmp/dist/react/ui/textarea.js#2"},{"location":"tmp/dist/react/ui/toggle-group.js#4"},{"location":"tmp/dist/react/ui/toggle.js#2"},{"location":"tmp/dist/react/ui/tooltip.js#5"}]},"tags":["framework"]},{"authors":[{"name":"recharts group"}],"group":"","name":"recharts","version":"2.15.4","description":"React charts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/recharts@2.15.4","externalReferences":[{"type":"vcs","url":"https://github.com/recharts/recharts"},{"type":"vcs","url":"git+https://github.com/recharts/recharts.git"}],"type":"library","bom-ref":"pkg:npm/recharts@2.15.4","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/recharts/package.json"},{"name":"ImportedModules","value":"recharts"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/recharts/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/recharts/package.json"}],"occurrences":[{"location":"dist/react/ui/chart.js#6"},{"location":"tmp/dist/react/ui/chart.js#6"},{"location":"src/react/ui/chart.tsx#4"}]}},{"group":"","name":"shared","version":"0.0.1","scope":"required","purl":"pkg:npm/shared@0.0.1","type":"library","bom-ref":"pkg:npm/shared@0.0.1","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/shared/package.json"},{"name":"ExportedModules","value":"shared,isSQLTypeMarker,shared/isSQLTypeMarker,SQLBinaryMarker,shared/SQLBinaryMarker,SQLBooleanMarker,shared/SQLBooleanMarker,SQLDateMarker,shared/SQLDateMarker,SQLNumberMarker,shared/SQLNumberMarker,SQLStringMarker,shared/SQLStringMarker,SQLTimestampMarker,shared/SQLTimestampMarker,SQLTypeMarker,shared/SQLTypeMarker,shared/sql,GenieAttachmentResponse,shared/GenieAttachmentResponse,GenieMessageResponse,shared/GenieMessageResponse,GenieStatementResponse,shared/GenieStatementResponse,GenieStreamEvent,shared/GenieStreamEvent"},{"name":"ImportedModules","value":"shared,GenieStatementResponse,shared/GenieStatementResponse,GenieAttachmentResponse,shared/GenieAttachmentResponse"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/shared/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/shared/package.json"}],"occurrences":[{"location":"src/js/index.ts#11"},{"location":"src/react/genie/genie-query-transform.ts#11"},{"location":"src/react/genie/types.ts#1"},{"location":"src/react/genie/types.ts#8"},{"location":"src/react/genie/genie-query-visualization.tsx#3"}]},"tags":["sql"]},{"authors":[{"name":"Emil Kowalski <e@emilkowal.ski>"}],"group":"","name":"sonner","version":"2.0.7","description":"An opinionated toast component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/sonner@2.0.7","externalReferences":[{"type":"website","url":"https://sonner.emilkowal.ski/"},{"type":"vcs","url":"git+https://github.com/emilkowalski/sonner.git"}],"type":"library","bom-ref":"pkg:npm/sonner@2.0.7","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/sonner/package.json"},{"name":"ImportedModules","value":"sonner,Toaster,sonner/Toaster,ToasterProps,sonner/ToasterProps"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/sonner/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/sonner/package.json"}],"occurrences":[{"location":"dist/react/ui/sonner.js#4"},{"location":"tmp/dist/react/ui/sonner.js#4"},{"location":"src/react/ui/sonner.tsx#10"}]}},{"authors":[{"name":"Dany Castillo"}],"group":"","name":"tailwind-merge","version":"3.4.0","description":"Merge Tailwind CSS classes without style conflicts","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/tailwind-merge@3.4.0","externalReferences":[{"type":"vcs","url":"https://github.com/dcastil/tailwind-merge"},{"type":"vcs","url":"https://github.com/dcastil/tailwind-merge.git"}],"type":"library","bom-ref":"pkg:npm/tailwind-merge@3.4.0","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/tailwind-merge/package.json"},{"name":"ImportedModules","value":"tailwind-merge,twMerge,tailwind-merge/twMerge"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/tailwind-merge/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/tailwind-merge/package.json"}],"occurrences":[{"location":"dist/react/lib/utils.js#2"},{"location":"tmp/dist/react/lib/utils.js#2"},{"location":"src/react/lib/utils.ts#2"}]}},{"authors":[{"name":"Emil Kowalski <e@emilkowal.ski>"}],"group":"","name":"vaul","version":"1.1.2","description":"Drawer component for React.","scope":"required","licenses":[{"license":{"id":"MIT","url":"https://opensource.org/licenses/MIT"}}],"purl":"pkg:npm/vaul@1.1.2","externalReferences":[{"type":"website","url":"https://vaul.emilkowal.ski/"},{"type":"vcs","url":"https://github.com/emilkowalski/vaul.git"}],"type":"library","bom-ref":"pkg:npm/vaul@1.1.2","properties":[{"name":"SrcFile","value":"packages/appkit-ui/node_modules/vaul/package.json"},{"name":"ImportedModules","value":"vaul,Drawer,vaul/Drawer"}],"evidence":{"identity":[{"field":"purl","confidence":0.7,"methods":[{"technique":"manifest-analysis","confidence":0.7,"value":"packages/appkit-ui/node_modules/vaul/package.json"}],"concludedValue":"packages/appkit-ui/node_modules/vaul/package.json"}],"occurrences":[{"location":"dist/react/ui/drawer.js#6"},{"location":"tmp/dist/react/ui/drawer.js#6"},{"location":"src/react/ui/drawer.tsx#4"}]}}],"dependencies":[],"compositions":[{"bom-ref":"pkg:npm/@databricks/appkit-ui@0.35.2","aggregate":"incomplete"}],"annotations":[{"bom-ref":"metadata-annotations","subjects":["pkg:npm/@databricks/appkit-ui@0.35.2"],"annotator":{"component":{"group":"@cyclonedx","name":"cdxgen","version":"12.1.2","purl":"pkg:npm/%40cyclonedx/cdxgen@12.1.2","type":"application","bom-ref":"pkg:npm/@cyclonedx/cdxgen@12.1.2","publisher":"OWASP Foundation","authors":[{"name":"OWASP Foundation"}]}},"timestamp":"2026-05-15T18:49:51Z","text":"This Software Bill-of-Materials (SBOM) document was created on Friday, May 15, 2026 with cdxgen. The data was captured during the build lifecycle phase. The document describes an application named 'appkit-ui' with version '0.35.2'. There are 48 components. The package type in this SBOM is npm with 2 purl namespaces described under components. The components were identified from 48 source files."}]}
|