@rfdtech/components 1.18.1 → 1.22.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/README.md +200 -61
- package/dist/adapters/context-adapter.d.ts +18 -0
- package/dist/adapters/context-adapter.d.ts.map +1 -0
- package/dist/adapters/next-adapter.d.ts +23 -0
- package/dist/adapters/next-adapter.d.ts.map +1 -0
- package/dist/adapters/react-router-adapter.d.ts +9 -0
- package/dist/adapters/react-router-adapter.d.ts.map +1 -0
- package/dist/adapters/registry.d.ts +19 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/components/app-header/AppHeader.d.ts +3 -2
- package/dist/components/app-header/AppHeader.d.ts.map +1 -1
- package/dist/components/app-header/AppHeaderProfile.d.ts.map +1 -1
- package/dist/components/app-header/index.d.ts +2 -2
- package/dist/components/app-header/index.d.ts.map +1 -1
- package/dist/components/app-layout/AppLayout.d.ts +6 -0
- package/dist/components/app-layout/AppLayout.d.ts.map +1 -1
- package/dist/components/app-layout/AppLayoutInner.d.ts +1 -0
- package/dist/components/app-layout/AppLayoutInner.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/BulkImportModal.d.ts +1 -1
- package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/constants.d.ts +8 -0
- package/dist/components/bulk-import-modal/constants.d.ts.map +1 -0
- package/dist/components/bulk-import-modal/hooks/useBulkImportFlow.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/index.d.ts +5 -4
- package/dist/components/bulk-import-modal/index.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/steps/SelectHeaderRowStep.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/steps/UploadStep.d.ts +3 -1
- package/dist/components/bulk-import-modal/steps/UploadStep.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts +7 -10
- package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/utils/mapRowsToRecords.d.ts +1 -0
- package/dist/components/bulk-import-modal/utils/mapRowsToRecords.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/utils/parseSpreadsheetFile.d.ts +4 -0
- package/dist/components/bulk-import-modal/utils/parseSpreadsheetFile.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/utils/validateMappedRows.d.ts +2 -1
- package/dist/components/bulk-import-modal/utils/validateMappedRows.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/utils/validateRowsChunked.d.ts +11 -0
- package/dist/components/bulk-import-modal/utils/validateRowsChunked.d.ts.map +1 -0
- package/dist/components/command/Command.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
- package/dist/components/metric-card/index.d.ts +1 -1
- package/dist/components/metric-card/index.d.ts.map +1 -1
- package/dist/components/modal/Modal.d.ts.map +1 -1
- package/dist/components/phone-number-input/PhoneNumberInput.d.ts.map +1 -1
- package/dist/components/sidebar/Sidebar.d.ts +2 -2
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/index.d.ts.map +1 -1
- package/dist/components/stepper/Stepper.d.ts +12 -0
- package/dist/components/stepper/Stepper.d.ts.map +1 -0
- package/dist/components/stepper/Stepper.test.d.ts +2 -0
- package/dist/components/stepper/Stepper.test.d.ts.map +1 -0
- package/dist/components/stepper/StepperContext.d.ts +4 -0
- package/dist/components/stepper/StepperContext.d.ts.map +1 -0
- package/dist/components/stepper/index.d.ts +3 -0
- package/dist/components/stepper/index.d.ts.map +1 -0
- package/dist/components/table/ProgressModal.d.ts +13 -0
- package/dist/components/table/ProgressModal.d.ts.map +1 -0
- package/dist/components/table/Table.d.ts +4 -22
- package/dist/components/table/Table.d.ts.map +1 -1
- package/dist/components/table/TableHeader.d.ts +3 -10
- package/dist/components/table/TableHeader.d.ts.map +1 -1
- package/dist/components/table/TablePagination.d.ts.map +1 -1
- package/dist/components/table/index.d.ts +1 -1
- package/dist/components/table/index.d.ts.map +1 -1
- package/dist/components/tabs/Tabs.d.ts.map +1 -1
- package/dist/components/tabs/hooks/useTabsLineIndicator.d.ts.map +1 -1
- package/dist/components/timeline/Timeline.d.ts +8 -0
- package/dist/components/timeline/Timeline.d.ts.map +1 -0
- package/dist/components/timeline/Timeline.test.d.ts +2 -0
- package/dist/components/timeline/Timeline.test.d.ts.map +1 -0
- package/dist/components/timeline/index.d.ts +3 -0
- package/dist/components/timeline/index.d.ts.map +1 -0
- package/dist/components/tooltip/Tooltip.d.ts.map +1 -1
- package/dist/contexts/router-adapter-context.d.ts +27 -0
- package/dist/contexts/router-adapter-context.d.ts.map +1 -0
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useComposedRefs.d.ts +14 -0
- package/dist/hooks/useComposedRefs.d.ts.map +1 -0
- package/dist/hooks/useTableFilter.d.ts.map +1 -1
- package/dist/hooks/useTablePagination.d.ts.map +1 -1
- package/dist/hooks/useTableState.d.ts +1 -1
- package/dist/hooks/useTableState.d.ts.map +1 -1
- package/dist/index.cjs +50 -33
- package/dist/index.css +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14865 -10661
- package/dist/next-index.d.ts +44 -0
- package/dist/next-index.d.ts.map +1 -0
- package/dist/next.cjs +272 -0
- package/dist/next.css +1 -0
- package/dist/next.d.ts +29 -0
- package/dist/next.js +51481 -0
- package/dist/test/mocks/lottie-react.d.ts +2 -0
- package/dist/test/mocks/lottie-react.d.ts.map +1 -0
- package/dist/types/app-header.d.ts +23 -2
- package/dist/types/app-header.d.ts.map +1 -1
- package/dist/types/bulk-import-modal.d.ts +21 -18
- package/dist/types/bulk-import-modal.d.ts.map +1 -1
- package/dist/types/metric-card.d.ts +3 -0
- package/dist/types/metric-card.d.ts.map +1 -1
- package/dist/types/modal.d.ts +0 -1
- package/dist/types/modal.d.ts.map +1 -1
- package/dist/types/router-adapter.d.ts +46 -0
- package/dist/types/router-adapter.d.ts.map +1 -0
- package/dist/types/sidebar.d.ts +11 -0
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/types/stepper.d.ts +45 -0
- package/dist/types/stepper.d.ts.map +1 -0
- package/dist/types/table.d.ts +85 -2
- package/dist/types/table.d.ts.map +1 -1
- package/dist/types/tabs.d.ts +1 -1
- package/dist/types/tabs.d.ts.map +1 -1
- package/dist/types/timeline.d.ts +52 -0
- package/dist/types/timeline.d.ts.map +1 -0
- package/package.json +40 -19
package/README.md
CHANGED
|
@@ -8,33 +8,153 @@ Requires React 18+ and a bundler that processes CSS (Vite, Webpack, etc.).
|
|
|
8
8
|
|
|
9
9
|
See [CHANGELOG.md](./CHANGELOG.md) for release history.
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Getting Started
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
### 1. Install
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm install @rfdtech/components
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Requires React 18+. npm 7+ auto-installs `react` and `react-dom` as peer dependencies. Radix UI and other runtime packages are dependencies of `@rfdtech/components`.
|
|
20
|
+
|
|
21
|
+
### 2. Import CSS
|
|
22
|
+
|
|
23
|
+
Add this once to your app entry (`main.tsx` or `App.tsx`):
|
|
14
24
|
|
|
15
25
|
```ts
|
|
16
26
|
import "@rfdtech/components/style.css";
|
|
17
27
|
```
|
|
18
28
|
|
|
19
|
-
|
|
29
|
+
Components load CSS automatically from the JS bundle (the JS bundle includes `import './index.css'`), but the explicit import above ensures reliable production styling. After upgrading, clear Vite's dependency cache if styles look stale: `rm -rf node_modules/.vite`. alright
|
|
20
30
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
Wrap your app in `ThemeProvider` for light, dark, and system themes. Design tokens live in [`src/styles/theme.css`](src/styles/theme.css) and apply to `.gsl-theme`, `document.documentElement`, and all components (including portaled modals and popovers).
|
|
31
|
+
### 3. Wrap with ThemeProvider
|
|
24
32
|
|
|
25
33
|
```tsx
|
|
26
34
|
import { ThemeProvider } from "@rfdtech/components";
|
|
27
|
-
import "@rfdtech/components/style.css";
|
|
28
35
|
|
|
29
36
|
<ThemeProvider defaultTheme="system">
|
|
30
37
|
<App />
|
|
31
38
|
</ThemeProvider>
|
|
32
39
|
```
|
|
33
40
|
|
|
34
|
-
Use `useTheme()` to read or change the active theme at runtime.
|
|
41
|
+
Supports `"light"`, `"dark"`, and `"system"` (follows `prefers-color-scheme`). Use `useTheme()` to read or change the active theme at runtime. Design tokens apply to `.gsl-theme`, `document.documentElement`, and all components (including portaled modals and popovers).
|
|
42
|
+
|
|
43
|
+
### 4. Tailwind v4 integration
|
|
44
|
+
|
|
45
|
+
If your project uses Tailwind v4, all `--gsl-*` design tokens are automatically available as utility classes. Import `style.css` after `tailwindcss` in your CSS entry:
|
|
46
|
+
|
|
47
|
+
```css
|
|
48
|
+
/* app/src/index.css */
|
|
49
|
+
@import "tailwindcss";
|
|
50
|
+
@import "@rfdtech/components/style.css";
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
The `@theme` block ships inside `style.css`. The consumer's Tailwind build processes it and generates these utility classes:
|
|
54
|
+
|
|
55
|
+
| Utility | Resolves to |
|
|
56
|
+
| --------- | ------------- |
|
|
57
|
+
| `bg-primary` / `text-primary` | `var(--gsl-primary)` |
|
|
58
|
+
| `bg-primary-foreground` / `text-primary-foreground` | `var(--gsl-on-primary)` |
|
|
59
|
+
| `bg-background` / `text-foreground` | `var(--gsl-page-bg)` / `var(--gsl-text)` |
|
|
60
|
+
| `bg-secondary` / `text-secondary-foreground` | `var(--gsl-surface-dark)` / `var(--gsl-text-secondary)` |
|
|
61
|
+
| `bg-muted` / `text-muted-foreground` | `var(--gsl-surface-subtle)` / `var(--gsl-text-secondary)` |
|
|
62
|
+
| `bg-accent` / `text-accent-foreground` | `var(--gsl-hover)` / `var(--gsl-text)` |
|
|
63
|
+
| `bg-destructive` / `text-destructive-foreground` | `var(--gsl-error)` / `var(--gsl-error-text)` |
|
|
64
|
+
| `bg-card` / `text-card-foreground` | `var(--gsl-bg)` / `var(--gsl-text)` |
|
|
65
|
+
| `bg-popover` / `text-popover-foreground` | `var(--gsl-bg)` / `var(--gsl-text)` |
|
|
66
|
+
| `border` / `input` / `ring` | `var(--gsl-border)` / `var(--gsl-border-strong)` / `var(--gsl-focus)` |
|
|
67
|
+
| `rounded-lg` | `var(--gsl-radius-base)` |
|
|
68
|
+
| `shadow-sm` / `shadow-md` / `shadow-lg` | `var(--gsl-shadow-sm)` / etc. |
|
|
69
|
+
| `font-sans` | `var(--gsl-font)` |
|
|
70
|
+
|
|
71
|
+
**Dark mode** supports both conventions: `<html class="dark">` (Tailwind default) and `<html data-gsl-theme="dark">`.
|
|
72
|
+
|
|
73
|
+
**Non-Tailwind consumers** are unaffected. Browsers silently ignore `@theme` as an unknown at-rule. All `--gsl-*` tokens continue to work as CSS custom properties.
|
|
74
|
+
|
|
75
|
+
### 6. Next.js App Router
|
|
76
|
+
|
|
77
|
+
The library ships a `/next` subpath for Next.js App Router. All components and hooks work with Next.js by wrapping your app in `RouterAdapterProvider`:
|
|
78
|
+
|
|
79
|
+
```tsx
|
|
80
|
+
// app/providers.tsx
|
|
81
|
+
"use client";
|
|
82
|
+
import { RouterAdapterProvider, useNextRouterAdapter } from "@rfdtech/components/next";
|
|
83
|
+
|
|
84
|
+
export function Providers({ children }) {
|
|
85
|
+
const adapter = useNextRouterAdapter();
|
|
86
|
+
return <RouterAdapterProvider value={adapter}>{children}</RouterAdapterProvider>;
|
|
87
|
+
}
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Then use components from `@rfdtech/components/next`:
|
|
91
|
+
|
|
92
|
+
```tsx
|
|
93
|
+
import { useTableState, SidebarLink } from "@rfdtech/components/next";
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
See the [RouterAdapter](/docs/router-adapter) docs page for full setup.
|
|
97
|
+
|
|
98
|
+
### 7. Customize tokens
|
|
99
|
+
|
|
100
|
+
GSL components read `--gsl-*` CSS variables. Override any of them by
|
|
101
|
+
declaring a new value on the same selectors the library uses.
|
|
102
|
+
|
|
103
|
+
**Step 1 — Import the library CSS** so its defaults are loaded:
|
|
104
|
+
|
|
105
|
+
```ts title="src/main.tsx"
|
|
106
|
+
import "@rfdtech/components/style.css";
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Step 2 — Create a theme override file** and import it AFTER the
|
|
110
|
+
library CSS. CSS source order matters: later rules with the same
|
|
111
|
+
specificity win.
|
|
112
|
+
|
|
113
|
+
```ts title="src/main.tsx"
|
|
114
|
+
import "@rfdtech/components/style.css";
|
|
115
|
+
import "./styles/theme.css"; // imported after
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
**Step 3 — Override the tokens.** The library writes its defaults on
|
|
119
|
+
these selectors:
|
|
120
|
+
|
|
121
|
+
| Selector | When it matches |
|
|
122
|
+
|----------|-----------------|
|
|
123
|
+
| `:root` | No theme attribute is set (no `ThemeProvider` mounted) |
|
|
124
|
+
| `:root[data-gsl-theme="light"]` | Light mode on `<html>` — `ThemeProvider` writes the attribute here |
|
|
125
|
+
| `:root[data-gsl-theme="dark"]` | Dark mode on `<html>` |
|
|
126
|
+
| `.gsl-theme` | A consumer wrapper `<div class="gsl-theme">` |
|
|
127
|
+
| `.gsl-theme[data-gsl-theme="light"]` | Wrapper + light attribute |
|
|
128
|
+
| `.gsl-theme[data-gsl-theme="dark"]` | Wrapper + dark attribute |
|
|
129
|
+
|
|
130
|
+
A bare `:root { ... }` only matches the first row, so the library's
|
|
131
|
+
default keeps winning on rows 2–6 once `ThemeProvider` mounts. To
|
|
132
|
+
cover all of them, list every selector in one rule and hardcode the
|
|
133
|
+
values (don't chain `var(--something)` — just write the color):
|
|
134
|
+
|
|
135
|
+
```css title="src/styles/theme.css"
|
|
136
|
+
:root,
|
|
137
|
+
:root[data-gsl-theme="light"],
|
|
138
|
+
.gsl-theme[data-gsl-theme="light"],
|
|
139
|
+
:root[data-gsl-theme="dark"],
|
|
140
|
+
.gsl-theme[data-gsl-theme="dark"] {
|
|
141
|
+
--gsl-primary: #1d4ed8;
|
|
142
|
+
--gsl-primary-light: #eff6ff;
|
|
143
|
+
--gsl-focus: #1d4ed8;
|
|
144
|
+
--gsl-on-primary: #ffffff;
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
That one block overrides the primary color in light mode, dark mode,
|
|
149
|
+
and the unthemed fallback. The same shape works for any other
|
|
150
|
+
`--gsl-*` token — list every selector, hardcode the value.
|
|
151
|
+
|
|
152
|
+
## Design tokens
|
|
153
|
+
|
|
154
|
+
Quick reference of commonly used tokens and their light-mode defaults:
|
|
35
155
|
|
|
36
156
|
| Token | Light default | Use |
|
|
37
|
-
|
|
157
|
+
| ------- | --------------- | ----- |
|
|
38
158
|
| `--gsl-primary` | `#dc2626` | Buttons, focus rings, accents |
|
|
39
159
|
| `--gsl-primary-light` | `#fef2f2` | Selected rows, hover fills |
|
|
40
160
|
| `--gsl-bg` | `#ffffff` | Surfaces |
|
|
@@ -46,25 +166,9 @@ Use `useTheme()` to read or change the active theme at runtime. See the [Theme](
|
|
|
46
166
|
| `--gsl-success` | `#16a34a` | Success states |
|
|
47
167
|
| `--gsl-warning` | `#eab308` | Warnings |
|
|
48
168
|
|
|
49
|
-
You can still override tokens on any ancestor without `ThemeProvider`:
|
|
50
|
-
|
|
51
|
-
```css
|
|
52
|
-
.my-app {
|
|
53
|
-
--gsl-primary: #1d4ed8;
|
|
54
|
-
--gsl-primary-light: #eff6ff;
|
|
55
|
-
}
|
|
56
|
-
```
|
|
57
|
-
|
|
58
169
|
`BulkImportModal` also accepts legacy aliases (`--gsl-bulk-import-primary`, etc.) that map to the shared tokens.
|
|
59
170
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
```bash
|
|
63
|
-
npm install @rfdtech/components
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
Requires React 18+. npm 7+ auto-installs `react` and `react-dom` as peer dependencies. Radix UI and other runtime packages are included as dependencies of `@rfdtech/components`.
|
|
67
|
-
|
|
171
|
+
See the [Theme](/docs/theme) docs page for the full token reference (radius, shadows, z-index, fonts) and controlled mode.
|
|
68
172
|
|
|
69
173
|
## Hooks
|
|
70
174
|
|
|
@@ -91,7 +195,6 @@ openWith({ userId: "42" });
|
|
|
91
195
|
|
|
92
196
|
Exports: `useSearchParamOverlay`, `useDialogSearchParam`, `useModalSearchParam`, `createSearchParamAdapter`, `createBrowserSearchParamAdapter`, `readOverlayData`, `writeOverlayData`, `clearOverlayData`, `getDataPrefix`. Types: `SearchParamOverlayState`, `SearchParamOverlayData`, `SearchParamAdapter`, `UseSearchParamOverlayOptions`, `UseSearchParamOverlayReturn`.
|
|
93
197
|
|
|
94
|
-
|
|
95
198
|
## AppHeader
|
|
96
199
|
|
|
97
200
|
Compound header bar with `AppHeader`, `AppHeaderSearch`, `AppHeaderActions`, `AppHeaderNotifications`, and `AppHeaderProfile`. Nest search on the left and group switcher, notifications, and profile inside `AppHeaderActions` on the right.
|
|
@@ -129,7 +232,6 @@ import {
|
|
|
129
232
|
|
|
130
233
|
Props: `AppHeader` — `className`, `children`. `AppHeaderActions` — `className`, `children`. Exported types: `AppHeaderProps`, `AppHeaderActionsProps`, `AppHeaderSearchProps`, `AppHeaderSearchDataGroup`, `AppHeaderSearchItem`, `AppHeaderNotificationsProps`, `AppHeaderProfileProps`, `AppUser`.
|
|
131
234
|
|
|
132
|
-
|
|
133
235
|
## AppLayout
|
|
134
236
|
|
|
135
237
|
Application layout container that auto-positions `AppHeader`, `AppSidebar`, and `AppBody` by component type. Sidebar on the left, header sticky at the top, main content filling the rest. See the [AppLayout](/docs/app-layout) docs page for props and exported types.
|
|
@@ -150,7 +252,6 @@ import { AppLayout, AppSidebar, AppBody } from "@rfdtech/components";
|
|
|
150
252
|
|
|
151
253
|
Props: `AppLayout` — `children`, `className`. `AppSidebar` — `children`, `className`. `AppBody` — `children`, `className`. Exported types: `AppLayoutProps`, `AppSidebarProps`, `AppBodyProps`.
|
|
152
254
|
|
|
153
|
-
|
|
154
255
|
## AppSwitcher
|
|
155
256
|
|
|
156
257
|
Google Apps–style 9-dot launcher for switching between GSL systems. Drop it into your header to let users jump between products. Pass `apps` directly from your own data layer; use `loading` while data is being fetched.
|
|
@@ -176,7 +277,6 @@ Props: `apps`, `loading`, `loadingLabel`, `columns`, `open`, `onOpenChange`, `on
|
|
|
176
277
|
|
|
177
278
|
Also exported: `AppSwitcherItem`, `GridIcon`, `SystemAppIcon`, `useAppSwitcher`.
|
|
178
279
|
|
|
179
|
-
|
|
180
280
|
## Badge
|
|
181
281
|
|
|
182
282
|
Compact inline label for status, counts, and metadata with semantic color variants. See the [Badge](/docs/badge) docs page for props and exported types.
|
|
@@ -194,7 +294,6 @@ import { Badge } from "@rfdtech/components";
|
|
|
194
294
|
|
|
195
295
|
Props: `variant`, `size`, `classNames`, `className`, and standard `span` attributes. Exported types: `BadgeProps`, `BadgeClassNames`, `BadgeVariant`, `BadgeSize`.
|
|
196
296
|
|
|
197
|
-
|
|
198
297
|
## Breadcrumb
|
|
199
298
|
|
|
200
299
|
Compound breadcrumb primitives for hierarchical page trails. See the [Breadcrumb](/docs/breadcrumb) docs page for props and exported types.
|
|
@@ -224,7 +323,6 @@ import {
|
|
|
224
323
|
|
|
225
324
|
Exported parts: `Breadcrumb`, `BreadcrumbList`, `BreadcrumbItem`, `BreadcrumbLink`, `BreadcrumbPage`, `BreadcrumbSeparator`, `BreadcrumbEllipsis`. Exported types: `BreadcrumbProps`, `BreadcrumbLinkProps`, `BreadcrumbPageProps`, and related `*ClassNames` interfaces.
|
|
226
325
|
|
|
227
|
-
|
|
228
326
|
## BulkImportModal
|
|
229
327
|
|
|
230
328
|
Four-step modal wizard for importing spreadsheet data (.xlsx, .xls, .csv). Parsing and validation run entirely in the browser.
|
|
@@ -268,7 +366,7 @@ The first worksheet is used for multi-sheet workbooks. Discarded rows are exclud
|
|
|
268
366
|
### Props
|
|
269
367
|
|
|
270
368
|
| Prop | Type | Default | Description |
|
|
271
|
-
|
|
369
|
+
| ------ | ------ | --------- | ------------- |
|
|
272
370
|
| `open` | `boolean` | required | Controlled open state |
|
|
273
371
|
| `onOpenChange` | `(open: boolean) => void` | required | Open state callback |
|
|
274
372
|
| `fields` | `BulkImportField[]` | required | Target field schema for column matching |
|
|
@@ -379,7 +477,6 @@ To change the gutter size, override `--gsl-bulk-import-gutter` on `.gsl-bulk-imp
|
|
|
379
477
|
}
|
|
380
478
|
```
|
|
381
479
|
|
|
382
|
-
|
|
383
480
|
## Button
|
|
384
481
|
|
|
385
482
|
Shared button with primary, secondary, outline, and ghost variants, plus loading and disabled states. See the [Button](/docs/button) docs page for props and exported types.
|
|
@@ -407,7 +504,6 @@ import { Button } from "@rfdtech/components";
|
|
|
407
504
|
|
|
408
505
|
Props: `variant`, `size`, `loading`, `loadingLabel`, `classNames`, and standard `button` attributes. Exported types: `ButtonProps`, `ButtonClassNames`, `ButtonVariant`, `ButtonSize`.
|
|
409
506
|
|
|
410
|
-
|
|
411
507
|
## Card
|
|
412
508
|
|
|
413
509
|
Surface card wrapper with optional header and design tokens for padding and background. Uses `--gsl-surface-card` for background and `--gsl-card-padding` for inner spacing. See the [Card](/docs/card) docs page for props and exported types.
|
|
@@ -422,7 +518,6 @@ import { Card } from "@rfdtech/components";
|
|
|
422
518
|
|
|
423
519
|
Props: `header`, `children`, `classNames`, `className`, plus standard `div` attributes. Exported types: `CardProps`, `CardClassNames`.
|
|
424
520
|
|
|
425
|
-
|
|
426
521
|
## Checkbox
|
|
427
522
|
|
|
428
523
|
Accessible checkbox with optional label and part-level `classNames`. See the [Checkbox](/docs/checkbox) docs page for props and exported types.
|
|
@@ -445,7 +540,6 @@ import { Checkbox } from "@rfdtech/components";
|
|
|
445
540
|
|
|
446
541
|
Props: `checked`, `defaultChecked`, `onCheckedChange`, `label`, `disabled`, `required`, `name`, `value`, `id`, `aria-label`, `classNames`, `className`. Exported types: `CheckboxProps`, `CheckboxClassNames`.
|
|
447
542
|
|
|
448
|
-
|
|
449
543
|
## CountrySelector
|
|
450
544
|
|
|
451
545
|
Country selector dropdown with flag emoji, country name, search filtering, and keyboard navigation. Built on `@radix-ui/react-popover`. See the [CountrySelector](/docs/country-selector) docs page for props and exported types.
|
|
@@ -460,7 +554,6 @@ import { CountrySelector } from "@rfdtech/components";
|
|
|
460
554
|
|
|
461
555
|
Props: `value`, `defaultValue`, `onChange`, `placeholder`, `invalid`, `disabled`, `classNames`, `className`. Exported types: `CountrySelectorProps`, `CountrySelectorClassNames`.
|
|
462
556
|
|
|
463
|
-
|
|
464
557
|
## DateRangeSelector
|
|
465
558
|
|
|
466
559
|
Date range picker with a single trigger showing the selected range, a calendar popover for two-click range selection, and auto-swap to keep start before end. See the [DateRangeSelector](/docs/date-range-selector) docs page for props and exported types.
|
|
@@ -477,7 +570,6 @@ import { DateRangeSelector } from "@rfdtech/components";
|
|
|
477
570
|
|
|
478
571
|
Props: `value`, `defaultValue`, `onChange`, `placeholder`, `formatOptions`, `invalid`, `disabled`, `min`, `max`, `classNames`, `className`. Exported types: `DateRangeSelectorProps`, `DateRangeSelectorClassNames`, `DateRangeValue`.
|
|
479
572
|
|
|
480
|
-
|
|
481
573
|
## DateSelector
|
|
482
574
|
|
|
483
575
|
Date picker for choosing a single date from a calendar grid. Built on `@radix-ui/react-popover`. See the [DateSelector](/docs/date-selector) docs page for props and exported types.
|
|
@@ -496,7 +588,6 @@ import { DateSelector } from "@rfdtech/components";
|
|
|
496
588
|
|
|
497
589
|
Props: `value`, `defaultValue`, `onChange`, `placeholder`, `formatOptions`, `invalid`, `disabled`, `min`, `max`, `classNames`, `className`. Exported types: `DateSelectorProps`, `DateSelectorClassNames`.
|
|
498
590
|
|
|
499
|
-
|
|
500
591
|
## Command
|
|
501
592
|
|
|
502
593
|
Compound command menu primitives for searchable, keyboard-navigable action lists. Supports inline pickers and modal palettes via `CommandDialog`. See the [Command](/docs/command) docs page for props and exported types.
|
|
@@ -544,7 +635,6 @@ const { open, onOpenChange, openWith } = useDialogSearchParam("command-menu");
|
|
|
544
635
|
|
|
545
636
|
Exports: `Command`, `CommandDialog`, `CommandInput`, `CommandList`, `CommandEmpty`, `CommandGroup`, `CommandItem`, `CommandSeparator`, `CommandLoading`, `CommandShortcut`, `useCommandShortcut`. Exported types: `CommandProps`, `CommandDialogProps`, `CommandItemProps`, `CommandShortcutProps`, `UseCommandShortcutOptions`, and related `*ClassNames` types.
|
|
546
637
|
|
|
547
|
-
|
|
548
638
|
## RadioGroup
|
|
549
639
|
|
|
550
640
|
Single-choice radio group with optional labels and descriptions on each `Radio` item. Use `variant="card"` for bordered choice cards. See the [RadioGroup](/docs/radio-group) docs page for props and exported types.
|
|
@@ -568,7 +658,6 @@ import { Radio, RadioGroup } from "@rfdtech/components";
|
|
|
568
658
|
|
|
569
659
|
Props: `RadioGroup` — `value`, `defaultValue`, `onValueChange`, `name`, `disabled`, `required`, `orientation`, `variant`, `classNames`, `className`, `children`. `Radio` — `value`, `label`, `description`, `disabled`, `id`, `aria-label`, `classNames`, `className`. Exported types: `RadioGroupProps`, `RadioProps`, `RadioGroupClassNames`, `RadioClassNames`, `RadioGroupVariant`.
|
|
570
660
|
|
|
571
|
-
|
|
572
661
|
## Dropdown
|
|
573
662
|
|
|
574
663
|
Select-style dropdown for choosing one option from a list. See the [Dropdown](/docs/dropdown) docs page for props and exported types.
|
|
@@ -591,7 +680,6 @@ import { Dropdown } from "@rfdtech/components";
|
|
|
591
680
|
|
|
592
681
|
Props: `value`, `onValueChange`, `options`, `placeholder`, `clearable`, `disabled`, `aria-label`, `classNames`, `className`. Exported types: `DropdownProps`, `DropdownOption`, `DropdownClassNames`.
|
|
593
682
|
|
|
594
|
-
|
|
595
683
|
## Form
|
|
596
684
|
|
|
597
685
|
Field, Input, and Textarea primitives for accessible form layouts. See the [Form](/docs/form) docs page for props and exported types.
|
|
@@ -617,7 +705,6 @@ import {
|
|
|
617
705
|
|
|
618
706
|
Exports: `Field`, `FieldLabel`, `FieldDescription`, `FieldError`, `FieldControl`, `Input`, `Textarea`. Types: `FieldProps`, `FieldClassNames`, `InputProps`, `TextareaProps`.
|
|
619
707
|
|
|
620
|
-
|
|
621
708
|
## FormField
|
|
622
709
|
|
|
623
710
|
react-hook-form adapters with Zod validation support. See the [FormField](/docs/form-field) docs page for props and exported types.
|
|
@@ -674,7 +761,6 @@ const form = useForm<FormValues>({
|
|
|
674
761
|
|
|
675
762
|
Exports: `Form`, `FormField`, `useFormField`. Types: `FormProps`, `FormFieldProps`, `UseFormFieldReturn`.
|
|
676
763
|
|
|
677
|
-
|
|
678
764
|
## Dialog
|
|
679
765
|
|
|
680
766
|
Compound dialog primitives for modal overlays. See the [Dialog](/docs/dialog) docs page for props and exported types.
|
|
@@ -714,7 +800,6 @@ const { open, data, onOpenChange, openWith } = useDialogSearchParam<{
|
|
|
714
800
|
|
|
715
801
|
Props: `Dialog` — `open`, `defaultOpen`, `onOpenChange`. `DialogContent` — `showCloseButton`, `classNames`, `className`. Styled parts also support part-level `classNames`. Exported types: `DialogOverlayProps`, `DialogContentProps`, `DialogTitleProps`, `DialogDescriptionProps`, and related `*ClassNames` interfaces.
|
|
716
802
|
|
|
717
|
-
|
|
718
803
|
## Draggable
|
|
719
804
|
|
|
720
805
|
Repositionable panel primitive with optional handle and bounded pointer dragging. See the [Draggable](/docs/draggable) docs page for props and exported types.
|
|
@@ -732,7 +817,6 @@ import { Draggable, DraggableHandle } from "@rfdtech/components";
|
|
|
732
817
|
|
|
733
818
|
Exports: `Draggable`, `DraggableHandle`, `useDraggable`, `clampPosition`. Types: `DraggableProps`, `DraggableHandleProps`, `DraggablePosition`, `DraggableBounds`, `DraggableAxis`, `UseDraggableOptions`, `UseDraggableReturn`.
|
|
734
819
|
|
|
735
|
-
|
|
736
820
|
## MetricCard
|
|
737
821
|
|
|
738
822
|
Compact dashboard card for displaying a metric value, label, trend indicator, and optional icon or description. Variants (`default`, `primary`, `success`, `warning`, `error`) only affect the trend color — background and text stay neutral. Use the `color` prop for custom accent colors.
|
|
@@ -753,7 +837,6 @@ import { MetricCard } from "@rfdtech/components";
|
|
|
753
837
|
|
|
754
838
|
Props: `label`, `value`, `icon`, `description`, `trend`, `trendValue`, `variant`, `color`, `classNames`, `className`, plus standard `div` attributes. Exported types: `MetricCardProps`, `MetricCardClassNames`, `MetricCardVariant`, `MetricTrend`.
|
|
755
839
|
|
|
756
|
-
|
|
757
840
|
## Modal
|
|
758
841
|
|
|
759
842
|
Centered modal with four size variants (`sm`, `md`, `lg`, `xl`), popover-style border, and optional close-prevention. Size tokens are independently customizable via `--gsl-modal-max-width-*`. See the [Modal](/docs/modal) docs page for props and exported types.
|
|
@@ -797,7 +880,6 @@ const { open, onOpenChange, openWith } = useModalSearchParam("review-changes");
|
|
|
797
880
|
|
|
798
881
|
Props: `Modal` — `open`, `defaultOpen`, `onOpenChange`. `ModalContent` — `showCloseButton`, `size`, `preventClose`, `preventCloseTitle`, `preventCloseDescription`, `onOpenChange`, `classNames`, `className`. Layout parts (`ModalHeader`, `ModalBody`, `ModalFooter`) support part-level `classNames`. Exported types: `ModalSize`, `ModalOverlayProps`, `ModalContentProps`, `ModalHeaderProps`, `ModalTitleProps`, `ModalDescriptionProps`, `ModalBodyProps`, `ModalFooterProps`, and related `*ClassNames` interfaces.
|
|
799
882
|
|
|
800
|
-
|
|
801
883
|
## NetworkOperator
|
|
802
884
|
|
|
803
885
|
Network operator selector with operator image thumbnails (MTN, Vodafone, AirtelTigo, Glo), search filtering, and keyboard navigation. Built on `@radix-ui/react-popover`. See the [NetworkOperator](/docs/network-operator) docs page for props and exported types.
|
|
@@ -812,7 +894,6 @@ import { NetworkOperator } from "@rfdtech/components";
|
|
|
812
894
|
|
|
813
895
|
Props: `value`, `defaultValue`, `onChange`, `options`, `placeholder`, `invalid`, `disabled`, `classNames`, `className`. Exported types: `NetworkOperatorProps`, `NetworkOperatorOption`, `NetworkOperatorClassNames`.
|
|
814
896
|
|
|
815
|
-
|
|
816
897
|
## OtpInput
|
|
817
898
|
|
|
818
899
|
One-time password input with configurable digit length, paste support, keyboard navigation (arrow keys, backspace), auto-focus advancement, and `onComplete` callback. See the [OtpInput](/docs/otp-input) docs page for props and exported types.
|
|
@@ -827,7 +908,6 @@ import { OtpInput } from "@rfdtech/components";
|
|
|
827
908
|
|
|
828
909
|
Props: `length`, `value`, `onChange`, `onComplete`, `invalid`, `disabled`, `name`, `classNames`, `className`. Exported types: `OtpInputProps`, `OtpInputClassNames`.
|
|
829
910
|
|
|
830
|
-
|
|
831
911
|
## PhoneNumberInput
|
|
832
912
|
|
|
833
913
|
Phone number input with a country code selector (flag + dial code prefix) that auto-detects the country from the number prefix as the user types. Built on `@radix-ui/react-popover`. See the [PhoneNumberInput](/docs/phone-number-input) docs page for props and exported types.
|
|
@@ -842,7 +922,6 @@ import { PhoneNumberInput } from "@rfdtech/components";
|
|
|
842
922
|
|
|
843
923
|
Props: `value`, `defaultValue`, `onChange`, `invalid`, `disabled`, `classNames`, `className`. Exported types: `PhoneNumberInputProps`, `PhoneNumberInputClassNames`.
|
|
844
924
|
|
|
845
|
-
|
|
846
925
|
## Popover
|
|
847
926
|
|
|
848
927
|
Compound popover primitives for floating panels. See the [Popover](/docs/popover) docs page for props and exported types.
|
|
@@ -888,7 +967,6 @@ import {
|
|
|
888
967
|
|
|
889
968
|
Exports: `Popover`, `PopoverTrigger`, `PopoverContent`, `PopoverPortal`, `PopoverAnchor`, `PopoverClose`. Exported types: `PopoverContentProps`, `PopoverContentClassNames`.
|
|
890
969
|
|
|
891
|
-
|
|
892
970
|
## ProgressBar
|
|
893
971
|
|
|
894
972
|
Accessible progress indicator for task completion and loading states. See the [ProgressBar](/docs/progress-bar) docs page for props and exported types.
|
|
@@ -903,10 +981,22 @@ import { ProgressBar } from "@rfdtech/components";
|
|
|
903
981
|
|
|
904
982
|
Props: `value`, `max`, `variant`, `size`, `indeterminate`, `label`, `showValue`, `classNames`, `className`, and standard `div` attributes. Exported types: `ProgressBarProps`, `ProgressBarClassNames`, `ProgressBarVariant`, `ProgressBarSize`.
|
|
905
983
|
|
|
984
|
+
## RouterAdapter
|
|
985
|
+
|
|
986
|
+
Framework-agnostic router abstraction for Next.js and react-router compatibility.
|
|
987
|
+
|
|
988
|
+
Seven files that previously imported `react-router-dom` directly (`useTableFilter`, `useTablePagination`, `useTableState`, `TableSearch`, `TableFilter`, `TablePagination`, `SidebarLink`, `AppLayoutInner`) now consume `RouterAdapter` from context. The library ships two entry points:
|
|
989
|
+
|
|
990
|
+
- `@rfdtech/components` — default, backward compatible (react-router-dom)
|
|
991
|
+
- `@rfdtech/components/next` — Next.js App Router support via `<RouterAdapterProvider>`
|
|
992
|
+
|
|
993
|
+
See the [RouterAdapter](/docs/router-adapter) docs page for setup instructions.
|
|
994
|
+
|
|
995
|
+
Exports: `RouterAdapterProvider`, `setRouterAdapter`, `getRouterAdapter`. Types: `RouterAdapterValue`, `RouterSearchParams`, `RouterLinkComponent`.
|
|
906
996
|
|
|
907
997
|
## Sidebar
|
|
908
998
|
|
|
909
|
-
Compound sidebar primitives for app shells and section navigation. Desktop uses a sticky card-style rail with optional collapse; mobile uses an offcanvas drawer with trigger and overlay. See the [Sidebar](/docs/sidebar) docs page for props and exported types.
|
|
999
|
+
Compound sidebar primitives for app shells and section navigation. Desktop uses a sticky card-style rail with optional collapse; mobile uses an offcanvas drawer with trigger and overlay. `SidebarGroup` supports a `collapsible` flag that turns the group label into a button toggle with an animated open/close for the group's content. See the [Sidebar](/docs/sidebar) docs page for props and exported types.
|
|
910
1000
|
|
|
911
1001
|
```tsx
|
|
912
1002
|
import {
|
|
@@ -953,7 +1043,6 @@ import {
|
|
|
953
1043
|
|
|
954
1044
|
Exports: `SidebarProvider`, `useSidebar`, `Sidebar`, `SidebarBadge`, `SidebarCollapse`, `SidebarTrigger`, `SidebarOverlay`, `SidebarHeader`, `SidebarContent`, `SidebarFooter`, `SidebarNav`, `SidebarGroup`, `SidebarGroupLabel`, `SidebarItem`, `SidebarLink`. Exported types: `SidebarProviderProps`, `SidebarProps`, `SidebarLinkProps`, `SidebarBadgeProps`, `SidebarCollapseProps`, and related `*ClassNames` types.
|
|
955
1045
|
|
|
956
|
-
|
|
957
1046
|
## Sheet
|
|
958
1047
|
|
|
959
1048
|
Compound sheet primitives for edge-sliding panels. See the [Sheet](/docs/sheet) docs page for props and exported types.
|
|
@@ -996,7 +1085,6 @@ import {
|
|
|
996
1085
|
|
|
997
1086
|
Props: `Sheet` — `open`, `defaultOpen`, `onOpenChange`. `SheetContent` — `side`, `showCloseButton`, `classNames`, `className`. Layout parts support part-level `classNames`. Exported types: `SheetSide`, `SheetOverlayProps`, `SheetContentProps`, `SheetHeaderProps`, `SheetTitleProps`, `SheetDescriptionProps`, `SheetBodyProps`, `SheetFooterProps`, and related `*ClassNames` interfaces.
|
|
998
1087
|
|
|
999
|
-
|
|
1000
1088
|
## Sortable
|
|
1001
1089
|
|
|
1002
1090
|
Reorderable list primitive with optional drag handles and keyboard support. See the [Sortable](/docs/sortable) docs page for props and exported types.
|
|
@@ -1026,6 +1114,33 @@ const [items, setItems] = useState(["alpha", "beta", "gamma"]);
|
|
|
1026
1114
|
|
|
1027
1115
|
Exports: `Sortable`, `SortableList`, `SortableItem`, `SortableHandle`, `reorderItems`. Types: `SortableProps`, `SortableListProps`, `SortableItemProps`, `SortableHandleProps`, `SortableId`, `SortableStrategy`, `SortableClassNames`.
|
|
1028
1116
|
|
|
1117
|
+
## Stepper
|
|
1118
|
+
|
|
1119
|
+
Horizontal step indicator for multi-step flows. `Stepper` holds the active step value and derives each `Step`'s `complete` / `active` / `upcoming` state. Each step renders a numbered circle that flips to a check when done, with a connector line that fills between completed steps. Add a `StepLabel` for the step's text. See the [Stepper](/docs/stepper) docs page for props and exported types.
|
|
1120
|
+
|
|
1121
|
+
```tsx
|
|
1122
|
+
import { useState } from "react";
|
|
1123
|
+
import { Step, StepLabel, Stepper } from "@rfdtech/components";
|
|
1124
|
+
|
|
1125
|
+
const [step, setStep] = useState(3);
|
|
1126
|
+
|
|
1127
|
+
<Stepper value={step} clickable onValueChange={setStep}>
|
|
1128
|
+
<Step value={1}>
|
|
1129
|
+
<StepLabel>Upload Document</StepLabel>
|
|
1130
|
+
</Step>
|
|
1131
|
+
<Step value={2}>
|
|
1132
|
+
<StepLabel>Select header row</StepLabel>
|
|
1133
|
+
</Step>
|
|
1134
|
+
<Step value={3}>
|
|
1135
|
+
<StepLabel>Match Columns</StepLabel>
|
|
1136
|
+
</Step>
|
|
1137
|
+
<Step value={4}>
|
|
1138
|
+
<StepLabel>Validate data</StepLabel>
|
|
1139
|
+
</Step>
|
|
1140
|
+
</Stepper>
|
|
1141
|
+
```
|
|
1142
|
+
|
|
1143
|
+
Exports: `Stepper`, `Step`, `StepLabel`. Also available as `Stepper.Step`, `Stepper.StepLabel` for compound-style imports. Props: `Stepper` — `value`, `clickable`, `onValueChange`, `classNames`, `className`, `children`. `Step` — `value`, `disabled`, `classNames`, `className`, `children`. `StepLabel` — `classNames`, `className`, `children`. Exported types: `StepperProps`, `StepProps`, `StepLabelProps`, `StepperClassNames`, `StepClassNames`, `StepLabelClassNames`, `StepperContextValue`, `StepState`, `StepInternalProps`. Retheme via `--gsl-stepper-accent` (defaults to `--gsl-primary`) and related `--gsl-stepper-*` custom properties.
|
|
1029
1144
|
|
|
1030
1145
|
## Table
|
|
1031
1146
|
|
|
@@ -1074,7 +1189,6 @@ const [selected, setSelected] = useState<Set<string | number>>(new Set());
|
|
|
1074
1189
|
|
|
1075
1190
|
Props: `paramPrefix`, `classNames`, `className`. Exports: `Table`, `TableHeader`, `TableSearch`, `TableFilter`, `TableContent`, `TableBulkActions`, `TableFooter`, `TablePagination`. Types: `TableProps`, `TableHeaderProps`, `TableContentProps`, `TableFooterProps`, `TableSearchProps`, `TableFilterProps`, `TableBulkActionsProps`, `TableBulkAction`, `TableBulkActionsClassNames`, `TableClassNames`, `PaginationControlsProps`, `TableColumn`.
|
|
1076
1191
|
|
|
1077
|
-
|
|
1078
1192
|
## Tabs
|
|
1079
1193
|
|
|
1080
1194
|
Compound tabs primitives for switching between related panels. See the [Tabs](/docs/tabs) docs page for props and exported types.
|
|
@@ -1092,8 +1206,36 @@ import { Tabs, TabsContent, TabsList, TabsTrigger } from "@rfdtech/components";
|
|
|
1092
1206
|
</Tabs>
|
|
1093
1207
|
```
|
|
1094
1208
|
|
|
1095
|
-
Exports: `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`. Props: `Tabs` — `value`, `defaultValue`, `onValueChange`, `orientation`, `activationMode`, `variant`, `classNames`, `className`, `children`. `TabsTrigger` — `value`, `disabled`, `classNames`, `className`. Exported types: `TabsProps`, `TabsListProps`, `TabsTriggerProps`, `TabsContentProps`, `TabsVariant`, `TabsClassNames`, `TabsListClassNames`, `TabsTriggerClassNames`, `TabsContentClassNames`.
|
|
1209
|
+
Exports: `Tabs`, `TabsList`, `TabsTrigger`, `TabsContent`. Props: `Tabs` — `value`, `defaultValue`, `onValueChange`, `orientation`, `activationMode`, `variant` (`"default"`, `"line"`, `"pill"`), `classNames`, `className`, `children`. `TabsTrigger` — `value`, `disabled`, `classNames`, `className`. Exported types: `TabsProps`, `TabsListProps`, `TabsTriggerProps`, `TabsContentProps`, `TabsVariant`, `TabsClassNames`, `TabsListClassNames`, `TabsTriggerClassNames`, `TabsContentClassNames`.
|
|
1210
|
+
|
|
1211
|
+
## Timeline
|
|
1096
1212
|
|
|
1213
|
+
Composable vertical timeline with `Timeline` and `TimelineItem` primitives. Dot color variants for past, current, warning, and error events with optional `color` override. Sub-components `TimelineTitle`, `TimelineData`, and `TimelineFooter` provide styled content slots. Connector animations with staggered draw-in. See the [Timeline](/docs/timeline) docs page for props and exported types.
|
|
1214
|
+
|
|
1215
|
+
```tsx
|
|
1216
|
+
import {
|
|
1217
|
+
Timeline,
|
|
1218
|
+
TimelineData,
|
|
1219
|
+
TimelineFooter,
|
|
1220
|
+
TimelineItem,
|
|
1221
|
+
TimelineTitle,
|
|
1222
|
+
} from "@rfdtech/components";
|
|
1223
|
+
import { Check, AlertTriangle } from "lucide-react";
|
|
1224
|
+
|
|
1225
|
+
<Timeline>
|
|
1226
|
+
<TimelineItem status="complete" icon={<Check size={10} strokeWidth={3} />}>
|
|
1227
|
+
<TimelineTitle>Case reported</TimelineTitle>
|
|
1228
|
+
<TimelineData>12 Jun 2026</TimelineData>
|
|
1229
|
+
<TimelineFooter>HR Officer intake</TimelineFooter>
|
|
1230
|
+
</TimelineItem>
|
|
1231
|
+
<TimelineItem status="warning" icon={<AlertTriangle size={10} strokeWidth={3} />}>
|
|
1232
|
+
<TimelineTitle>Response overdue</TimelineTitle>
|
|
1233
|
+
<TimelineData>Since 3 Jul 2026</TimelineData>
|
|
1234
|
+
</TimelineItem>
|
|
1235
|
+
</Timeline>
|
|
1236
|
+
```
|
|
1237
|
+
|
|
1238
|
+
Exports: `Timeline`, `TimelineItem`, `TimelineTitle`, `TimelineData`, `TimelineFooter`. Exported types: `TimelineProps`, `TimelineItemProps`, `TimelineTitleProps`, `TimelineDataProps`, `TimelineFooterProps`, `TimelineClassNames`, `TimelineItemClassNames`, `TimelineTitleClassNames`, `TimelineDataClassNames`, `TimelineFooterClassNames`, `TimelineItemMode`.
|
|
1097
1239
|
|
|
1098
1240
|
## Toast
|
|
1099
1241
|
|
|
@@ -1120,7 +1262,6 @@ toast({
|
|
|
1120
1262
|
|
|
1121
1263
|
Exports: `ToastProvider`, `Toaster`, `useToast`. Types: `ToastOptions`, `ToastVariant`, `ToastProviderProps`, `ToasterProps`, `UseToastReturn`, `ToastClassNames`, `ToastAction`, `ToastReturn`.
|
|
1122
1264
|
|
|
1123
|
-
|
|
1124
1265
|
## Tooltip
|
|
1125
1266
|
|
|
1126
1267
|
Pure-CSS hover tooltip with directional arrow (top, right, bottom, left). Used internally by SidebarLink on the collapsed icon rail. See the [Tooltip](/docs/tooltip) docs page for props and exported types.
|
|
@@ -1137,7 +1278,6 @@ import { Tooltip } from "@rfdtech/components";
|
|
|
1137
1278
|
|
|
1138
1279
|
Props: `content`, `side`, `classNames`, `className`. Exported types: `TooltipProps`, `TooltipClassNames`.
|
|
1139
1280
|
|
|
1140
|
-
|
|
1141
1281
|
## UploadField
|
|
1142
1282
|
|
|
1143
1283
|
File upload with dashed-border dropzone, cloud upload icon, auto-generated file type/size support text, file cards with type icons, and a primary action button. See the [UploadField](/docs/upload-field) docs page for props and exported types.
|
|
@@ -1158,7 +1298,6 @@ Props: `accept`, `multiple`, `maxSize`, `value`, `onChange`, `invalid`, `disable
|
|
|
1158
1298
|
|
|
1159
1299
|
Props: `accept`, `multiple`, `maxSize`, `value`, `onChange`, `invalid`, `disabled`, `placeholder`, `classNames`, `className`. Exported types: `UploadFieldProps`, `UploadFieldClassNames`.
|
|
1160
1300
|
|
|
1161
|
-
|
|
1162
1301
|
## Development
|
|
1163
1302
|
|
|
1164
1303
|
```bash
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { RouterAdapterValue } from "../types/router-adapter";
|
|
2
|
+
/**
|
|
3
|
+
* Router adapter that reads from `RouterAdapterContext` only.
|
|
4
|
+
* Throws if no provider is present.
|
|
5
|
+
*
|
|
6
|
+
* This adapter has zero dependency on `react-router-dom`.
|
|
7
|
+
* It is used by the `@rfdtech/components/next` entry point.
|
|
8
|
+
*
|
|
9
|
+
* Consumers must wrap their app in `<RouterAdapterProvider>`:
|
|
10
|
+
*
|
|
11
|
+
* ```tsx
|
|
12
|
+
* <RouterAdapterProvider value={adapter}>
|
|
13
|
+
* <App />
|
|
14
|
+
* </RouterAdapterProvider>
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare function useContextRouterAdapter(): RouterAdapterValue;
|
|
18
|
+
//# sourceMappingURL=context-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/context-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,IAAI,kBAAkB,CAY5D"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { RouterAdapterValue } from "../types/router-adapter";
|
|
2
|
+
/**
|
|
3
|
+
* Create a `RouterAdapterValue` for Next.js App Router.
|
|
4
|
+
*
|
|
5
|
+
* Consumers import this hook and pass the result to `<RouterAdapterProvider>`:
|
|
6
|
+
*
|
|
7
|
+
* ```tsx
|
|
8
|
+
* // app/providers.tsx
|
|
9
|
+
* 'use client';
|
|
10
|
+
* import { RouterAdapterProvider, useNextRouterAdapter } from '@rfdtech/components/next';
|
|
11
|
+
*
|
|
12
|
+
* export function Providers({ children }) {
|
|
13
|
+
* const adapter = useNextRouterAdapter();
|
|
14
|
+
* return (
|
|
15
|
+
* <RouterAdapterProvider value={adapter}>
|
|
16
|
+
* {children}
|
|
17
|
+
* </RouterAdapterProvider>
|
|
18
|
+
* );
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export declare function useNextRouterAdapter(): RouterAdapterValue;
|
|
23
|
+
//# sourceMappingURL=next-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"next-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/next-adapter.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EACX,kBAAkB,EAElB,MAAM,yBAAyB,CAAC;AAUjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,CA8CzD"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { RouterAdapterValue } from "../types/router-adapter";
|
|
2
|
+
/**
|
|
3
|
+
* Default router adapter backed by react-router-dom's `useSearchParams`
|
|
4
|
+
* and `Link`. This is the standard adapter for Vite / react-router consumers.
|
|
5
|
+
*
|
|
6
|
+
* Injected into the registry by `src/index.ts`.
|
|
7
|
+
*/
|
|
8
|
+
export declare function useReactRouterAdapter(): RouterAdapterValue;
|
|
9
|
+
//# sourceMappingURL=react-router-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"react-router-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/react-router-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;GAKG;AACH,wBAAgB,qBAAqB,IAAI,kBAAkB,CAW1D"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { RouterAdapterValue } from "../types/router-adapter";
|
|
2
|
+
/**
|
|
3
|
+
* Inject the router adapter factory. Called once by the entry point
|
|
4
|
+
* (`src/index.ts` or `src/next-index.ts`) at module load time.
|
|
5
|
+
*
|
|
6
|
+
* - Default entry injects `useReactRouterAdapter` (react-router-dom)
|
|
7
|
+
* - Next.js entry injects `useContextRouterAdapter` (context-only)
|
|
8
|
+
*/
|
|
9
|
+
export declare function setRouterAdapter(fn: () => RouterAdapterValue): void;
|
|
10
|
+
/**
|
|
11
|
+
* Called by every hook/component that needs router primitives.
|
|
12
|
+
* Returns the search params + Link component for the current framework.
|
|
13
|
+
*
|
|
14
|
+
* This MUST be called at the top of a hook or component function
|
|
15
|
+
* (like any hook) — the returned adapter function internally
|
|
16
|
+
* calls hooks.
|
|
17
|
+
*/
|
|
18
|
+
export declare function getRouterAdapter(): RouterAdapterValue;
|
|
19
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/adapters/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAIlE;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,kBAAkB,GAAG,IAAI,CAEnE;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,IAAI,kBAAkB,CAWrD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AppHeaderProps, AppHeaderActionsProps } from "../../types/app-header";
|
|
1
|
+
import type { AppHeaderProps, AppHeaderActionsProps, AppHeaderBrandingProps } from "../../types/app-header";
|
|
2
2
|
import "./styles/app-header.css";
|
|
3
|
-
export declare const AppHeader: ({ className, children, ...props }: AppHeaderProps) => import("react").JSX.Element;
|
|
3
|
+
export declare const AppHeader: ({ className, children, variant, ...props }: AppHeaderProps) => import("react").JSX.Element;
|
|
4
4
|
export declare const AppHeaderActions: ({ className, children, ...props }: AppHeaderActionsProps) => import("react").JSX.Element;
|
|
5
|
+
export declare const AppHeaderBranding: ({ className, logo, title, subtitle, children, }: AppHeaderBrandingProps) => import("react").JSX.Element;
|
|
5
6
|
//# sourceMappingURL=AppHeader.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAEhC,OAAO,yBAAyB,CAAC;AAEjC,eAAO,MAAM,SAAS,GAAI,4CAKvB,cAAc,gCAahB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,mCAAmC,qBAAqB,gCAMxF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,iDAM/B,sBAAsB,gCAqBxB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppHeaderProfile.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderProfile.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAMpE,eAAO,MAAM,gBAAgB,
|
|
1
|
+
{"version":3,"file":"AppHeaderProfile.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderProfile.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAMpE,eAAO,MAAM,gBAAgB,kHA4E3B,CAAC"}
|