@osdk/react-components 0.20.0-main-4e2a115a796e8664c3972548bb02e707baafa912 → 0.20.0
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/CHANGELOG.md +2 -10
- package/build/browser/object-table/ObjectTable.js +2 -1
- package/build/browser/object-table/ObjectTable.js.map +1 -1
- package/build/browser/object-table/ObjectTableApi.js.map +1 -1
- package/build/browser/object-table/hooks/useObjectTableData.js +5 -3
- package/build/browser/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/browser/pdf-viewer/PdfViewer.js +4 -6
- package/build/browser/pdf-viewer/PdfViewer.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js +43 -0
- package/build/browser/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -0
- package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js +22 -14
- package/build/browser/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
- package/build/browser/pdf-viewer/components/PdfViewerContent.js +4 -6
- package/build/browser/pdf-viewer/components/PdfViewerContent.js.map +1 -1
- package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js +83 -13
- package/build/browser/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
- package/build/browser/pdf-viewer/types.js.map +1 -1
- package/build/browser/shared/calendar/DatePickerCommon.module.css +5 -0
- package/build/browser/styles.css +5 -0
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/chunk-2GAPPUP5.cjs +11 -0
- package/build/cjs/{chunk-BN5MGNSI.cjs.map → chunk-2GAPPUP5.cjs.map} +1 -1
- package/build/cjs/{chunk-QYUADULX.cjs → chunk-4MGATUJ3.cjs} +17 -17
- package/build/cjs/{chunk-QYUADULX.cjs.map → chunk-4MGATUJ3.cjs.map} +1 -1
- package/build/cjs/{chunk-HOPH2463.cjs → chunk-4WDDVYWV.cjs} +3 -3
- package/build/cjs/chunk-4WDDVYWV.cjs.map +1 -0
- package/build/cjs/chunk-5UTN55T6.cjs +11 -0
- package/build/cjs/{chunk-LLGHXDSY.cjs.map → chunk-5UTN55T6.cjs.map} +1 -1
- package/build/cjs/{chunk-YWDLYGD5.cjs → chunk-AICPFRJQ.cjs} +32 -32
- package/build/cjs/{chunk-YWDLYGD5.cjs.map → chunk-AICPFRJQ.cjs.map} +1 -1
- package/build/cjs/{chunk-WYIUQ3FZ.cjs → chunk-DAHWLFFD.cjs} +4 -4
- package/build/cjs/{chunk-WYIUQ3FZ.cjs.map → chunk-DAHWLFFD.cjs.map} +1 -1
- package/build/cjs/{chunk-ETOC4FJE.cjs → chunk-FWZS3WQ4.cjs} +135 -34
- package/build/cjs/chunk-FWZS3WQ4.cjs.map +1 -0
- package/build/cjs/{chunk-67LMSFXM.cjs → chunk-GUBIWML7.cjs} +16 -13
- package/build/cjs/chunk-GUBIWML7.cjs.map +1 -0
- package/build/cjs/chunk-KLL6MAZL.cjs +11 -0
- package/build/cjs/{chunk-YWYFWFUF.cjs.map → chunk-KLL6MAZL.cjs.map} +1 -1
- package/build/cjs/{chunk-7CYKOZFL.cjs → chunk-LIF2LJ2I.cjs} +7 -7
- package/build/cjs/{chunk-7CYKOZFL.cjs.map → chunk-LIF2LJ2I.cjs.map} +1 -1
- package/build/cjs/{chunk-4JJP3RNQ.cjs → chunk-PPQSIR4K.cjs} +4 -4
- package/build/cjs/{chunk-4JJP3RNQ.cjs.map → chunk-PPQSIR4K.cjs.map} +1 -1
- package/build/cjs/{chunk-4V245Z6A.cjs → chunk-PWXV5SBK.cjs} +26 -28
- package/build/cjs/chunk-PWXV5SBK.cjs.map +1 -0
- package/build/cjs/chunk-UJKIIMIE.cjs +11 -0
- package/build/cjs/{chunk-DCRVOHKP.cjs.map → chunk-UJKIIMIE.cjs.map} +1 -1
- package/build/cjs/chunk-VBM5GWFP.cjs +11 -0
- package/build/cjs/{chunk-LGUTBX34.cjs.map → chunk-VBM5GWFP.cjs.map} +1 -1
- package/build/cjs/{chunk-4KC5U44T.cjs → chunk-XA3S7YAO.cjs} +2 -2
- package/build/cjs/chunk-XA3S7YAO.cjs.map +1 -0
- package/build/cjs/{chunk-GN3PIYGH.cjs → chunk-Y6BGC7DP.cjs} +22 -22
- package/build/cjs/{chunk-GN3PIYGH.cjs.map → chunk-Y6BGC7DP.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +6 -6
- package/build/cjs/public/experimental/action-form.css +3 -0
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/document-viewer.cjs +5 -5
- package/build/cjs/public/experimental/document-viewer.d.cts +1 -1
- package/build/cjs/public/experimental/email-viewer.cjs +3 -3
- package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
- package/build/cjs/public/experimental/filter-list.cjs +15 -15
- package/build/cjs/public/experimental/filter-list.css +3 -0
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/image-viewer.cjs +3 -3
- package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
- package/build/cjs/public/experimental/object-table.cjs +10 -10
- package/build/cjs/public/experimental/object-table.css +3 -0
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/object-table.d.cts +14 -1
- package/build/cjs/public/experimental/pdf-viewer.cjs +25 -25
- package/build/cjs/public/experimental/pdf-viewer.d.cts +9 -4
- package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
- package/build/cjs/public/experimental/video-viewer.cjs +3 -3
- package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
- package/build/cjs/public/experimental.cjs +67 -67
- package/build/cjs/public/experimental.css +3 -0
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/cjs/public/experimental.d.cts +1 -1
- package/build/cjs/{types-CbSNeyzw.d.cts → types-Cg_LdKf-.d.cts} +1 -0
- package/build/esm/object-table/ObjectTable.js +2 -1
- package/build/esm/object-table/ObjectTable.js.map +1 -1
- package/build/esm/object-table/ObjectTableApi.js.map +1 -1
- package/build/esm/object-table/hooks/useObjectTableData.js +5 -3
- package/build/esm/object-table/hooks/useObjectTableData.js.map +1 -1
- package/build/esm/pdf-viewer/PdfViewer.js +4 -6
- package/build/esm/pdf-viewer/PdfViewer.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js +43 -0
- package/build/esm/pdf-viewer/components/PdfAnnotationOverlay.js.map +1 -0
- package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js +22 -14
- package/build/esm/pdf-viewer/components/PdfViewerAnnotationLayer.js.map +1 -1
- package/build/esm/pdf-viewer/components/PdfViewerContent.js +4 -6
- package/build/esm/pdf-viewer/components/PdfViewerContent.js.map +1 -1
- package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js +83 -13
- package/build/esm/pdf-viewer/hooks/usePdfAnnotationPortals.js.map +1 -1
- package/build/esm/pdf-viewer/types.js.map +1 -1
- package/build/esm/shared/calendar/DatePickerCommon.module.css +5 -0
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/object-table/ObjectTable.d.ts +1 -1
- package/build/types/object-table/ObjectTable.d.ts.map +1 -1
- package/build/types/object-table/ObjectTableApi.d.ts +13 -0
- package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
- package/build/types/object-table/hooks/useObjectTableData.d.ts +1 -1
- package/build/types/object-table/hooks/useObjectTableData.d.ts.map +1 -1
- package/build/types/pdf-viewer/PdfViewer.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts +9 -0
- package/build/types/pdf-viewer/components/PdfAnnotationOverlay.d.ts.map +1 -0
- package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts +2 -1
- package/build/types/pdf-viewer/components/PdfViewerAnnotationLayer.d.ts.map +1 -1
- package/build/types/pdf-viewer/components/PdfViewerContent.d.ts.map +1 -1
- package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts +5 -1
- package/build/types/pdf-viewer/hooks/usePdfAnnotationPortals.d.ts.map +1 -1
- package/build/types/pdf-viewer/types.d.ts +1 -0
- package/build/types/pdf-viewer/types.d.ts.map +1 -1
- package/docs/GettingStarted.md +65 -0
- package/docs/ObjectTable.md +6 -5
- package/docs/Prerequisites.md +1 -2
- package/docs/StylingOverview.md +146 -0
- package/docs/TokenColors.md +130 -0
- package/docs/TokenSpacing.md +73 -0
- package/docs/TokenTypography.md +57 -0
- package/docs/UsageWithOsdk.md +47 -0
- package/docs/Welcome.md +42 -0
- package/package.json +8 -8
- package/build/cjs/chunk-4KC5U44T.cjs.map +0 -1
- package/build/cjs/chunk-4V245Z6A.cjs.map +0 -1
- package/build/cjs/chunk-67LMSFXM.cjs.map +0 -1
- package/build/cjs/chunk-BN5MGNSI.cjs +0 -11
- package/build/cjs/chunk-DCRVOHKP.cjs +0 -11
- package/build/cjs/chunk-ETOC4FJE.cjs.map +0 -1
- package/build/cjs/chunk-HOPH2463.cjs.map +0 -1
- package/build/cjs/chunk-LGUTBX34.cjs +0 -11
- package/build/cjs/chunk-LLGHXDSY.cjs +0 -11
- package/build/cjs/chunk-YWYFWFUF.cjs +0 -11
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
# Getting Started
|
|
2
|
+
|
|
3
|
+
## 1. Install
|
|
4
|
+
|
|
5
|
+
```bash
|
|
6
|
+
npm install @osdk/react-components @osdk/react @osdk/client @osdk/api react react-dom classnames
|
|
7
|
+
```
|
|
8
|
+
|
|
9
|
+
## 2. Import styles
|
|
10
|
+
|
|
11
|
+
Add the component styles to your application CSS entry point:
|
|
12
|
+
|
|
13
|
+
```css
|
|
14
|
+
/* index.css */
|
|
15
|
+
@layer osdk.components;
|
|
16
|
+
|
|
17
|
+
@import "@osdk/react-components/styles.css" layer(osdk.components);
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Add portal isolation to your root element:
|
|
21
|
+
|
|
22
|
+
```css
|
|
23
|
+
#root {
|
|
24
|
+
isolation: isolate;
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## 3. Set up the provider
|
|
29
|
+
|
|
30
|
+
Wrap your application with `OsdkProvider`:
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { createClient } from "@osdk/client";
|
|
34
|
+
import { OsdkProvider } from "@osdk/react";
|
|
35
|
+
|
|
36
|
+
const client = createClient(
|
|
37
|
+
"https://your-stack.palantirfoundry.com",
|
|
38
|
+
"ri.ontology.main.ontology.{UUID}",
|
|
39
|
+
async () => {
|
|
40
|
+
// return your auth token
|
|
41
|
+
},
|
|
42
|
+
);
|
|
43
|
+
|
|
44
|
+
function App() {
|
|
45
|
+
return (
|
|
46
|
+
<OsdkProvider client={client}>
|
|
47
|
+
{/* your app */}
|
|
48
|
+
</OsdkProvider>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 4. Render your first component
|
|
54
|
+
|
|
55
|
+
```tsx
|
|
56
|
+
import { ObjectTable } from "@osdk/react-components/experimental/object-table";
|
|
57
|
+
import { Employee } from "@your-osdk-package";
|
|
58
|
+
|
|
59
|
+
function EmployeeDirectory() {
|
|
60
|
+
return <ObjectTable objectType={Employee} />;
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
That's it! The `ObjectTable` handles data fetching, pagination, and sorting
|
|
65
|
+
out of the box.
|
package/docs/ObjectTable.md
CHANGED
|
@@ -72,11 +72,12 @@ Add selection mode to enable row selection:
|
|
|
72
72
|
|
|
73
73
|
### Core Props
|
|
74
74
|
|
|
75
|
-
| Prop
|
|
76
|
-
|
|
|
77
|
-
| `objectType`
|
|
78
|
-
| `className`
|
|
79
|
-
| `rowHeight`
|
|
75
|
+
| Prop | Type | Required | Default | Description |
|
|
76
|
+
| --------------- | --------- | -------- | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
77
|
+
| `objectType` | `Q` | ✅ | - | The OSDK object type to display |
|
|
78
|
+
| `className` | `string` | ❌ | - | CSS class for custom styling |
|
|
79
|
+
| `rowHeight` | `number` | ❌ | `40` | Height of each row in pixels |
|
|
80
|
+
| `streamUpdates` | `boolean` | ❌ | `false` | When `true`, subscribes via websocket so the table automatically updates as matching objects are added, updated, or removed in Foundry. Cannot be used together with `pivotTo` or `withProperties` — the server does not support websocket subscriptions for link-traversal or derived-property queries, so those queries still fetch normally but won't receive real-time updates. |
|
|
80
81
|
|
|
81
82
|
### Column Management
|
|
82
83
|
|
package/docs/Prerequisites.md
CHANGED
|
@@ -8,8 +8,7 @@ Setup required before using `@osdk/react-components` or `@osdk/cbac-components`.
|
|
|
8
8
|
|
|
9
9
|
## Install dependencies
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
:::
|
|
11
|
+
> **Tip:** If your tooling already installs dependencies, skip this step.
|
|
13
12
|
|
|
14
13
|
Use whichever package manager your project uses (`# if using CBAC components` lines are optional):
|
|
15
14
|
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
# Styling Overview
|
|
2
|
+
|
|
3
|
+
`@osdk/react-components` uses a three-layer token architecture that makes
|
|
4
|
+
theming predictable and composable.
|
|
5
|
+
|
|
6
|
+
## Token Architecture
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
Blueprint Core (@blueprintjs/core)
|
|
10
|
+
|
|
|
11
|
+
Blueprint Tokens (--bp-*)
|
|
12
|
+
|
|
|
13
|
+
OSDK Tokens (--osdk-*)
|
|
14
|
+
|
|
|
15
|
+
Component Styles
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
[Blueprint](https://blueprintjs.com) is a React UI toolkit built by Palantir.
|
|
19
|
+
OSDK components use Blueprint's design tokens as the foundation layer so they
|
|
20
|
+
integrate seamlessly with other Palantir applications and components that
|
|
21
|
+
already use Blueprint.
|
|
22
|
+
|
|
23
|
+
### Layer 1: Blueprint Tokens
|
|
24
|
+
|
|
25
|
+
The foundation. Blueprint design tokens (`--bp-*`) define the raw visual
|
|
26
|
+
primitives — colors, typography, spacing, and intent states. These are
|
|
27
|
+
inherited from `@blueprintjs/core`.
|
|
28
|
+
|
|
29
|
+
### Layer 2: OSDK Tokens
|
|
30
|
+
|
|
31
|
+
OSDK tokens (`--osdk-*`) map to Blueprint tokens by default. Override these
|
|
32
|
+
to theme OSDK components **without** affecting other Blueprint components in
|
|
33
|
+
your app.
|
|
34
|
+
|
|
35
|
+
```css
|
|
36
|
+
:root {
|
|
37
|
+
/* Override just the OSDK table header */
|
|
38
|
+
--osdk-table-header-bg: #f5f5f5;
|
|
39
|
+
}
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Layer 3: Component Tokens
|
|
43
|
+
|
|
44
|
+
Per-component CSS variables (e.g. `--osdk-table-*`, `--osdk-form-*`) control
|
|
45
|
+
specific UI elements. Each component documents its available variables.
|
|
46
|
+
|
|
47
|
+
## CSS Layers
|
|
48
|
+
|
|
49
|
+
Styles are organized using CSS `@layer` for predictable cascade ordering:
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
@layer osdk.components, user.brand;
|
|
53
|
+
|
|
54
|
+
@import "@osdk/react-components/styles.css" layer(osdk.components);
|
|
55
|
+
@import "./my-brand.css" layer(user.brand);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Later layers always win, regardless of selector specificity. This means your
|
|
59
|
+
brand overrides will always take precedence over OSDK defaults.
|
|
60
|
+
|
|
61
|
+
## Dark Mode
|
|
62
|
+
|
|
63
|
+
Wrap your app with `OsdkThemeProvider` to control the color scheme:
|
|
64
|
+
|
|
65
|
+
```tsx
|
|
66
|
+
import { OsdkThemeProvider } from "@osdk/react-components/experimental/theme";
|
|
67
|
+
|
|
68
|
+
function App() {
|
|
69
|
+
return (
|
|
70
|
+
<OsdkThemeProvider defaultTheme="system">
|
|
71
|
+
{/* your app */}
|
|
72
|
+
</OsdkThemeProvider>
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Theme modes
|
|
78
|
+
|
|
79
|
+
| Mode | Behavior |
|
|
80
|
+
| ---------- | ----------------------------------------------------------- |
|
|
81
|
+
| `"system"` | Follows the OS `prefers-color-scheme` and updates on change |
|
|
82
|
+
| `"light"` | Forces light theme regardless of OS setting |
|
|
83
|
+
| `"dark"` | Forces dark theme regardless of OS setting |
|
|
84
|
+
|
|
85
|
+
The provider sets `data-bp-color-scheme` on the document element, which
|
|
86
|
+
the CSS token layer uses to flip both `--bp-*` and `--osdk-*` tokens.
|
|
87
|
+
|
|
88
|
+
### Switching at runtime
|
|
89
|
+
|
|
90
|
+
Use the `useOsdkTheme` hook from a descendant to switch modes:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
import { useOsdkTheme } from "@osdk/react-components/experimental/theme";
|
|
94
|
+
|
|
95
|
+
function ThemeToggle() {
|
|
96
|
+
const { resolvedTheme, setTheme } = useOsdkTheme();
|
|
97
|
+
return (
|
|
98
|
+
<button
|
|
99
|
+
onClick={() => setTheme(resolvedTheme === "dark" ? "light" : "dark")}
|
|
100
|
+
>
|
|
101
|
+
Toggle theme
|
|
102
|
+
</button>
|
|
103
|
+
);
|
|
104
|
+
}
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Controlled mode
|
|
108
|
+
|
|
109
|
+
If an external store already owns the theme (e.g. Redux, a parent
|
|
110
|
+
design-system provider), pass `theme` instead of `defaultTheme`:
|
|
111
|
+
|
|
112
|
+
```tsx
|
|
113
|
+
<OsdkThemeProvider theme={externalTheme} onThemeChanged={setExternalTheme}>
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
## When to Override `--bp-*` vs `--osdk-*`
|
|
117
|
+
|
|
118
|
+
| Prefix | Override when you want to... |
|
|
119
|
+
| ---------------------- | ----------------------------------------------------- |
|
|
120
|
+
| `--bp-*` | Theme both Blueprint and OSDK components consistently |
|
|
121
|
+
| `--osdk-*` | Theme only OSDK components, leave Blueprint unchanged |
|
|
122
|
+
| `--osdk-<component>-*` | Customize a single component |
|
|
123
|
+
|
|
124
|
+
Every `--osdk-*` token maps to a `--bp-*` token by default. If your app
|
|
125
|
+
uses Blueprint components alongside OSDK components and you want a
|
|
126
|
+
consistent look, override the `--bp-*` tokens. If you only want to restyle
|
|
127
|
+
OSDK components without affecting Blueprint, override the `--osdk-*` tokens.
|
|
128
|
+
|
|
129
|
+
## Custom Themes
|
|
130
|
+
|
|
131
|
+
Create a brand layer that overrides the tokens you care about:
|
|
132
|
+
|
|
133
|
+
```css
|
|
134
|
+
/* user-brand.css */
|
|
135
|
+
:root {
|
|
136
|
+
/* Global surface overrides */
|
|
137
|
+
--osdk-surface-border-radius: 8px;
|
|
138
|
+
|
|
139
|
+
/* Table-specific overrides */
|
|
140
|
+
--osdk-table-header-bg: var(--my-brand-surface);
|
|
141
|
+
--osdk-table-row-bg-hover: var(--my-brand-hover);
|
|
142
|
+
|
|
143
|
+
/* Form-specific overrides */
|
|
144
|
+
--osdk-form-section-padding: 20px;
|
|
145
|
+
}
|
|
146
|
+
```
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# Color Tokens
|
|
2
|
+
|
|
3
|
+
All color values in `@osdk/react-components` are exposed as CSS custom
|
|
4
|
+
properties. Override them to theme components without touching source code.
|
|
5
|
+
|
|
6
|
+
## Palette Tokens
|
|
7
|
+
|
|
8
|
+
Raw color primitives mapped from Blueprint. Use these as building blocks for
|
|
9
|
+
semantic tokens.
|
|
10
|
+
|
|
11
|
+
| Token | Maps to |
|
|
12
|
+
| ----------------------------- | --------------------------- |
|
|
13
|
+
| `--osdk-palette-white` | `--bp-palette-white` |
|
|
14
|
+
| `--osdk-palette-black` | `--bp-palette-black` |
|
|
15
|
+
| `--osdk-palette-gray-1` | `--bp-palette-gray-1` |
|
|
16
|
+
| `--osdk-palette-gray-2` | `--bp-palette-gray-2` |
|
|
17
|
+
| `--osdk-palette-gray-4` | `--bp-palette-gray-4` |
|
|
18
|
+
| `--osdk-palette-dark-gray-2` | `--bp-palette-dark-gray-2` |
|
|
19
|
+
| `--osdk-palette-dark-gray-3` | `--bp-palette-dark-gray-3` |
|
|
20
|
+
| `--osdk-palette-light-gray-1` | `--bp-palette-light-gray-1` |
|
|
21
|
+
| `--osdk-palette-light-gray-3` | `--bp-palette-light-gray-3` |
|
|
22
|
+
| `--osdk-palette-light-gray-4` | `--bp-palette-light-gray-4` |
|
|
23
|
+
| `--osdk-palette-light-gray-5` | `--bp-palette-light-gray-5` |
|
|
24
|
+
|
|
25
|
+
## Semantic Background Tokens
|
|
26
|
+
|
|
27
|
+
Higher-level tokens that abstract palette usage into meaningful roles.
|
|
28
|
+
|
|
29
|
+
| Token | Default |
|
|
30
|
+
| --------------------------------- | ---------------------------------- |
|
|
31
|
+
| `--osdk-background-primary` | `var(--osdk-palette-white)` |
|
|
32
|
+
| `--osdk-background-secondary` | `var(--osdk-palette-light-gray-5)` |
|
|
33
|
+
| `--osdk-background-tertiary` | `var(--osdk-palette-light-gray-4)` |
|
|
34
|
+
| `--osdk-background-skeleton-from` | `color-mix(gray-1, 5%)` |
|
|
35
|
+
| `--osdk-background-skeleton-to` | `color-mix(gray-1, 40%)` |
|
|
36
|
+
| `--osdk-background-backdrop` | `color-mix(black, 50%)` |
|
|
37
|
+
|
|
38
|
+
## Intent Tokens
|
|
39
|
+
|
|
40
|
+
Intent tokens define interactive color states. Each intent has five states:
|
|
41
|
+
`rest`, `hover`, `active`, `disabled`, and `foreground`.
|
|
42
|
+
|
|
43
|
+
### Default
|
|
44
|
+
|
|
45
|
+
| Token | Maps to |
|
|
46
|
+
| ---------------------------------- | -------------------------------- |
|
|
47
|
+
| `--osdk-intent-default-rest` | `--bp-intent-default-rest` |
|
|
48
|
+
| `--osdk-intent-default-hover` | `--bp-intent-default-hover` |
|
|
49
|
+
| `--osdk-intent-default-active` | `--bp-intent-default-active` |
|
|
50
|
+
| `--osdk-intent-default-disabled` | `--bp-intent-default-disabled` |
|
|
51
|
+
| `--osdk-intent-default-foreground` | `--bp-intent-default-foreground` |
|
|
52
|
+
|
|
53
|
+
### Primary
|
|
54
|
+
|
|
55
|
+
| Token | Maps to |
|
|
56
|
+
| ---------------------------------- | -------------------------------- |
|
|
57
|
+
| `--osdk-intent-primary-rest` | `--bp-intent-primary-rest` |
|
|
58
|
+
| `--osdk-intent-primary-hover` | `--bp-intent-primary-hover` |
|
|
59
|
+
| `--osdk-intent-primary-active` | `--bp-intent-primary-active` |
|
|
60
|
+
| `--osdk-intent-primary-disabled` | `--bp-intent-primary-disabled` |
|
|
61
|
+
| `--osdk-intent-primary-foreground` | `--bp-intent-primary-foreground` |
|
|
62
|
+
|
|
63
|
+
### Success
|
|
64
|
+
|
|
65
|
+
| Token | Maps to |
|
|
66
|
+
| ---------------------------------- | -------------------------------- |
|
|
67
|
+
| `--osdk-intent-success-rest` | `--bp-intent-success-rest` |
|
|
68
|
+
| `--osdk-intent-success-hover` | `--bp-intent-success-hover` |
|
|
69
|
+
| `--osdk-intent-success-active` | `--bp-intent-success-active` |
|
|
70
|
+
| `--osdk-intent-success-disabled` | `--bp-intent-success-disabled` |
|
|
71
|
+
| `--osdk-intent-success-foreground` | `--bp-intent-success-foreground` |
|
|
72
|
+
|
|
73
|
+
### Warning
|
|
74
|
+
|
|
75
|
+
| Token | Maps to |
|
|
76
|
+
| ---------------------------------- | -------------------------------- |
|
|
77
|
+
| `--osdk-intent-warning-rest` | `--bp-intent-warning-rest` |
|
|
78
|
+
| `--osdk-intent-warning-hover` | `--bp-intent-warning-hover` |
|
|
79
|
+
| `--osdk-intent-warning-active` | `--bp-intent-warning-active` |
|
|
80
|
+
| `--osdk-intent-warning-disabled` | `--bp-intent-warning-disabled` |
|
|
81
|
+
| `--osdk-intent-warning-foreground` | `--bp-intent-warning-foreground` |
|
|
82
|
+
|
|
83
|
+
### Danger
|
|
84
|
+
|
|
85
|
+
| Token | Maps to |
|
|
86
|
+
| --------------------------------- | ------------------------------- |
|
|
87
|
+
| `--osdk-intent-danger-rest` | `--bp-intent-danger-rest` |
|
|
88
|
+
| `--osdk-intent-danger-hover` | `--bp-intent-danger-hover` |
|
|
89
|
+
| `--osdk-intent-danger-active` | `--bp-intent-danger-active` |
|
|
90
|
+
| `--osdk-intent-danger-disabled` | `--bp-intent-danger-disabled` |
|
|
91
|
+
| `--osdk-intent-danger-foreground` | `--bp-intent-danger-foreground` |
|
|
92
|
+
|
|
93
|
+
## Surface Tokens
|
|
94
|
+
|
|
95
|
+
| Token | Maps to |
|
|
96
|
+
| ------------------------------------------------ | ---------------------------------------------- |
|
|
97
|
+
| `--osdk-surface-background-color-default-rest` | `--bp-surface-background-color-default-rest` |
|
|
98
|
+
| `--osdk-surface-background-color-default-hover` | `--bp-surface-background-color-default-hover` |
|
|
99
|
+
| `--osdk-surface-background-color-default-active` | `--bp-surface-background-color-default-active` |
|
|
100
|
+
| `--osdk-surface-background-color-danger-rest` | `--bp-surface-background-color-danger-rest` |
|
|
101
|
+
| `--osdk-surface-background-color-danger-hover` | `--bp-surface-background-color-danger-hover` |
|
|
102
|
+
| `--osdk-surface-background-color-danger-active` | `--bp-surface-background-color-danger-active` |
|
|
103
|
+
| `--osdk-surface-border-color-default` | `--bp-surface-border-color-default` |
|
|
104
|
+
| `--osdk-surface-border-color-strong` | `--bp-surface-border-color-strong` |
|
|
105
|
+
|
|
106
|
+
## Custom Color Tokens
|
|
107
|
+
|
|
108
|
+
Derived colors using `color-mix()` for opacity effects.
|
|
109
|
+
|
|
110
|
+
| Token | Definition |
|
|
111
|
+
| ---------------------------------- | ------------------------------------- |
|
|
112
|
+
| `--osdk-custom-color-gray-1` | `color-mix(gray-1, 5%)` |
|
|
113
|
+
| `--osdk-custom-color-gray-2` | `color-mix(gray-1, 8%)` |
|
|
114
|
+
| `--osdk-custom-color-gray-3` | `color-mix(gray-1, 10%)` |
|
|
115
|
+
| `--osdk-custom-color-gray-4` | `color-mix(gray-1, 20%)` |
|
|
116
|
+
| `--osdk-custom-color-light-gray-1` | `color-mix(light-gray-1, 60%)` |
|
|
117
|
+
| `--osdk-custom-color-light-gray-2` | `color-mix(light-gray-5, 50%)` |
|
|
118
|
+
| `--osdk-custom-color-primary-1` | `color-mix(intent-primary-rest, 50%)` |
|
|
119
|
+
|
|
120
|
+
## Typography Color Tokens
|
|
121
|
+
|
|
122
|
+
| Token | Maps to |
|
|
123
|
+
| ------------------------------------------ | ---------------------------------------- |
|
|
124
|
+
| `--osdk-typography-color-default-rest` | `--bp-typography-color-default-rest` |
|
|
125
|
+
| `--osdk-typography-color-default-hover` | `--bp-typography-color-default-hover` |
|
|
126
|
+
| `--osdk-typography-color-default-active` | `--bp-typography-color-default-active` |
|
|
127
|
+
| `--osdk-typography-color-default-disabled` | `--bp-typography-color-default-disabled` |
|
|
128
|
+
| `--osdk-typography-color-muted` | `--bp-typography-color-muted` |
|
|
129
|
+
| `--osdk-typography-color-danger-rest` | `--bp-typography-color-danger-rest` |
|
|
130
|
+
| `--osdk-typography-color-danger-active` | `--bp-typography-color-danger-active` |
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# Spacing Tokens
|
|
2
|
+
|
|
3
|
+
Spacing, border, shadow, and z-index tokens used across
|
|
4
|
+
`@osdk/react-components`. These tokens are a subset of the full
|
|
5
|
+
[CSS Variables reference](./CSSVariables.md), which documents every
|
|
6
|
+
custom property including per-component tokens.
|
|
7
|
+
|
|
8
|
+
## Surface Spacing
|
|
9
|
+
|
|
10
|
+
| Token | Maps to |
|
|
11
|
+
| ------------------------------ | ---------------------------- |
|
|
12
|
+
| `--osdk-surface-spacing` | `--bp-surface-spacing` |
|
|
13
|
+
| `--osdk-surface-border-radius` | `--bp-surface-border-radius` |
|
|
14
|
+
| `--osdk-surface-border-width` | `--bp-surface-border-width` |
|
|
15
|
+
| `--osdk-surface-layer-primary` | `--bp-surface-layer-primary` |
|
|
16
|
+
|
|
17
|
+
## Borders
|
|
18
|
+
|
|
19
|
+
| Token | Default |
|
|
20
|
+
| ------------------------------------- | --------------------------------------------------------------------------------- |
|
|
21
|
+
| `--osdk-surface-border` | `var(--osdk-surface-border-width) solid var(--osdk-surface-border-color-default)` |
|
|
22
|
+
| `--osdk-surface-border-color-default` | `--bp-surface-border-color-default` |
|
|
23
|
+
| `--osdk-surface-border-color-strong` | `--bp-surface-border-color-strong` |
|
|
24
|
+
|
|
25
|
+
## Shadows
|
|
26
|
+
|
|
27
|
+
| Token | Maps to |
|
|
28
|
+
| ------------------------- | ----------------------- |
|
|
29
|
+
| `--osdk-surface-shadow-2` | `--bp-surface-shadow-2` |
|
|
30
|
+
|
|
31
|
+
## Z-Index
|
|
32
|
+
|
|
33
|
+
Four z-index layers provide consistent stacking across components.
|
|
34
|
+
|
|
35
|
+
| Token | Maps to | Typical use |
|
|
36
|
+
| -------------------------- | ------------------------ | --------------------------------- |
|
|
37
|
+
| `--osdk-surface-z-index-1` | `--bp-surface-z-index-1` | Base content |
|
|
38
|
+
| `--osdk-surface-z-index-2` | `--bp-surface-z-index-2` | Sticky headers, floating elements |
|
|
39
|
+
| `--osdk-surface-z-index-3` | `--bp-surface-z-index-3` | Overlays, dropdowns |
|
|
40
|
+
| `--osdk-surface-z-index-4` | `--bp-surface-z-index-4` | Modals, dialogs |
|
|
41
|
+
|
|
42
|
+
## Focus Tokens
|
|
43
|
+
|
|
44
|
+
| Token | Maps to |
|
|
45
|
+
| ------------------------------------- | ------------------------------------------------------------------------- |
|
|
46
|
+
| `--osdk-emphasis-focus-width` | `--bp-emphasis-focus-width` |
|
|
47
|
+
| `--osdk-emphasis-focus-color` | `--bp-emphasis-focus-color` |
|
|
48
|
+
| `--osdk-emphasis-focus-offset` | `--bp-emphasis-focus-offset` |
|
|
49
|
+
| `--osdk-focus-outline` | `var(--osdk-emphasis-focus-width) solid var(--osdk-emphasis-focus-color)` |
|
|
50
|
+
| `--osdk-focus-visible-outline-offset` | `var(--osdk-emphasis-focus-offset)` |
|
|
51
|
+
|
|
52
|
+
## Transition Tokens
|
|
53
|
+
|
|
54
|
+
| Token | Maps to |
|
|
55
|
+
| ------------------------------------- | ----------------------------------- |
|
|
56
|
+
| `--osdk-emphasis-transition-duration` | `--bp-emphasis-transition-duration` |
|
|
57
|
+
| `--osdk-emphasis-ease-default` | `--bp-emphasis-ease-default` |
|
|
58
|
+
|
|
59
|
+
## Miscellaneous
|
|
60
|
+
|
|
61
|
+
| Token | Default |
|
|
62
|
+
| ------------------------- | ------- |
|
|
63
|
+
| `--osdk-disabled-opacity` | `0.5` |
|
|
64
|
+
|
|
65
|
+
## Override Example
|
|
66
|
+
|
|
67
|
+
```css
|
|
68
|
+
/* Increase border radius for a softer look */
|
|
69
|
+
:root {
|
|
70
|
+
--osdk-surface-border-radius: 8px;
|
|
71
|
+
--osdk-surface-spacing: 12px;
|
|
72
|
+
}
|
|
73
|
+
```
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# Typography Tokens
|
|
2
|
+
|
|
3
|
+
Typography tokens control font family, size, weight, and line height across
|
|
4
|
+
all `@osdk/react-components`.
|
|
5
|
+
|
|
6
|
+
## Font Family
|
|
7
|
+
|
|
8
|
+
| Token | Maps to |
|
|
9
|
+
| ---------------------------------- | -------------------------------- |
|
|
10
|
+
| `--osdk-typography-family-default` | `--bp-typography-family-default` |
|
|
11
|
+
|
|
12
|
+
The default font family inherits from Blueprint, which resolves to the
|
|
13
|
+
system font stack.
|
|
14
|
+
|
|
15
|
+
## Font Sizes
|
|
16
|
+
|
|
17
|
+
| Token | Maps to | Typical use |
|
|
18
|
+
| ------------------------------------- | ----------------------------------- | ---------------------- |
|
|
19
|
+
| `--osdk-typography-size-body-x-small` | `--bp-typography-size-body-x-small` | Captions, footnotes |
|
|
20
|
+
| `--osdk-typography-size-body-small` | `--bp-typography-size-body-small` | Secondary text, labels |
|
|
21
|
+
| `--osdk-typography-size-body-medium` | `--bp-typography-size-body-medium` | Body text (default) |
|
|
22
|
+
| `--osdk-typography-size-body-large` | `--bp-typography-size-body-large` | Headings, emphasis |
|
|
23
|
+
|
|
24
|
+
## Font Weights
|
|
25
|
+
|
|
26
|
+
| Token | Maps to | Typical use |
|
|
27
|
+
| ---------------------------------- | -------------------------------- | ------------------ |
|
|
28
|
+
| `--osdk-typography-weight-default` | `--bp-typography-weight-default` | Body text |
|
|
29
|
+
| `--osdk-typography-weight-bold` | `--bp-typography-weight-bold` | Headings, emphasis |
|
|
30
|
+
|
|
31
|
+
## Line Height
|
|
32
|
+
|
|
33
|
+
| Token | Maps to |
|
|
34
|
+
| --------------------------------------- | ------------------------------------- |
|
|
35
|
+
| `--osdk-typography-line-height-default` | `--bp-typography-line-height-default` |
|
|
36
|
+
|
|
37
|
+
## Global Defaults
|
|
38
|
+
|
|
39
|
+
The root element sets these defaults for all OSDK components:
|
|
40
|
+
|
|
41
|
+
```css
|
|
42
|
+
:root {
|
|
43
|
+
font-family: var(--osdk-typography-family-default);
|
|
44
|
+
color: var(--osdk-typography-color-default-rest);
|
|
45
|
+
font-size: var(--osdk-typography-size-body-medium);
|
|
46
|
+
}
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Override Example
|
|
50
|
+
|
|
51
|
+
```css
|
|
52
|
+
/* Make all OSDK components use a custom font */
|
|
53
|
+
:root {
|
|
54
|
+
--osdk-typography-family-default: "Inter", sans-serif;
|
|
55
|
+
--osdk-typography-size-body-medium: 15px;
|
|
56
|
+
}
|
|
57
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Usage with OSDK
|
|
2
|
+
|
|
3
|
+
`@osdk/react-components` is built on top of
|
|
4
|
+
[`@osdk/react`](https://github.com/palantir/osdk-ts/tree/main/packages/react),
|
|
5
|
+
which provides hooks for fetching Ontology data. Components accept OSDK types
|
|
6
|
+
directly and handle data loading, caching, and state management automatically.
|
|
7
|
+
|
|
8
|
+
## How it works
|
|
9
|
+
|
|
10
|
+
Every OSDK-aware component follows a two-layer architecture:
|
|
11
|
+
|
|
12
|
+
1. **OSDK layer** (e.g. `ObjectTable`, `FilterList`, `ActionForm`) — fetches
|
|
13
|
+
data via `@osdk/react` hooks, converts OSDK entities into primitives, and
|
|
14
|
+
passes them down.
|
|
15
|
+
2. **Base layer** (e.g. `BaseTable`, `BaseFilterList`) — a pure React
|
|
16
|
+
component with no OSDK imports. It receives primitives and handles all UI
|
|
17
|
+
interactions and styling.
|
|
18
|
+
|
|
19
|
+
This means you can always drop down to the `Base*` variant and bring your own
|
|
20
|
+
data source.
|
|
21
|
+
|
|
22
|
+
## OsdkProvider
|
|
23
|
+
|
|
24
|
+
All components require an `OsdkProvider` wrapping your app. The provider
|
|
25
|
+
supplies the OSDK client that hooks use for network requests.
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { createClient } from "@osdk/client";
|
|
29
|
+
import { OsdkProvider } from "@osdk/react";
|
|
30
|
+
|
|
31
|
+
const client = createClient(
|
|
32
|
+
"https://your-stack.palantirfoundry.com",
|
|
33
|
+
"your-ontology-rid",
|
|
34
|
+
async () => "your-auth-token",
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
function App() {
|
|
38
|
+
return (
|
|
39
|
+
<OsdkProvider client={client}>
|
|
40
|
+
{/* All @osdk/react-components go inside here */}
|
|
41
|
+
</OsdkProvider>
|
|
42
|
+
);
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Refer to individual component stories for up-to-date usage examples — the
|
|
47
|
+
component API is under active development and props may change between releases.
|
package/docs/Welcome.md
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# OSDK React Components
|
|
2
|
+
|
|
3
|
+
React components for building Foundry applications. These components are
|
|
4
|
+
Ontology-aware — pass in OSDK entities, and they handle data loading, caching,
|
|
5
|
+
and state management automatically.
|
|
6
|
+
|
|
7
|
+
Built on top of [`@osdk/react`](https://github.com/palantir/osdk-ts/tree/main/packages/react),
|
|
8
|
+
these components use OSDK hooks internally to provide ready-to-use UI elements.
|
|
9
|
+
While `@osdk/react` gives you low-level hooks for data fetching,
|
|
10
|
+
`@osdk/react-components` provides UI widgets for common patterns like tables,
|
|
11
|
+
forms, and filters.
|
|
12
|
+
|
|
13
|
+
## Available Components
|
|
14
|
+
|
|
15
|
+
| Component | Description |
|
|
16
|
+
| ---------------- | ---------------------------------------------------------------------------- |
|
|
17
|
+
| `ObjectTable` | Displays an Object Set as a sortable, paginated table with inline editing |
|
|
18
|
+
| `FilterList` | Interactive filter panel with histogram filters, date ranges, and search |
|
|
19
|
+
| `ActionForm` | Auto-generated form for executing Ontology Actions |
|
|
20
|
+
| `DocumentViewer` | Unified media viewer that auto-detects file type (PDF, Excel, images, video) |
|
|
21
|
+
| `AipAgentChat` | Chat surface backed by Foundry LMS |
|
|
22
|
+
|
|
23
|
+
All components are exported under `@osdk/react-components/experimental/*`
|
|
24
|
+
sub-paths (e.g. `@osdk/react-components/experimental/object-table`).
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install @osdk/react-components @osdk/react @osdk/client @osdk/api react react-dom classnames
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
```tsx
|
|
33
|
+
import { ObjectTable } from "@osdk/react-components/experimental/object-table";
|
|
34
|
+
import { Employee } from "@your-osdk-package";
|
|
35
|
+
|
|
36
|
+
function EmployeeDirectory() {
|
|
37
|
+
return <ObjectTable objectType={Employee} />;
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
See the **Installation** page for full setup instructions including CSS layers
|
|
42
|
+
and provider configuration.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@osdk/react-components",
|
|
3
|
-
"version": "0.20.0
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -193,9 +193,9 @@
|
|
|
193
193
|
"xlsx": "^0.18.5"
|
|
194
194
|
},
|
|
195
195
|
"peerDependencies": {
|
|
196
|
-
"@osdk/api": "
|
|
197
|
-
"@osdk/client": "
|
|
198
|
-
"@osdk/react": "
|
|
196
|
+
"@osdk/api": "^2.8.0",
|
|
197
|
+
"@osdk/client": "^2.8.0",
|
|
198
|
+
"@osdk/react": "^2.8.0",
|
|
199
199
|
"@types/react": "^17 || ^18 || ^19",
|
|
200
200
|
"classnames": "^2.0.0",
|
|
201
201
|
"react": "^17 || ^18 || ^19",
|
|
@@ -219,12 +219,12 @@
|
|
|
219
219
|
"react": "^18.3.1",
|
|
220
220
|
"react-dom": "^18.3.1",
|
|
221
221
|
"typescript": "~5.5.4",
|
|
222
|
+
"@osdk/api": "2.24.0",
|
|
222
223
|
"@osdk/aip-core": "0.4.0",
|
|
223
|
-
"@osdk/
|
|
224
|
-
"@osdk/client": "2.24.0-main-4e2a115a796e8664c3972548bb02e707baafa912",
|
|
225
|
-
"@osdk/monorepo.api-extractor": "~0.7.0",
|
|
224
|
+
"@osdk/client": "2.24.0",
|
|
226
225
|
"@osdk/monorepo.tsconfig": "~0.7.0",
|
|
227
|
-
"@osdk/react": "2.24.0
|
|
226
|
+
"@osdk/react": "2.24.0",
|
|
227
|
+
"@osdk/monorepo.api-extractor": "~0.7.0"
|
|
228
228
|
},
|
|
229
229
|
"publishConfig": {
|
|
230
230
|
"access": "public"
|