@rfdtech/components 1.22.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +209 -81
- package/dist/adapters/next-adapter.d.ts.map +1 -1
- package/dist/components/app-header/AppHeader.d.ts.map +1 -1
- package/dist/components/app-header/AppHeaderNotificationItem.d.ts +3 -0
- package/dist/components/app-header/AppHeaderNotificationItem.d.ts.map +1 -0
- package/dist/components/app-header/AppHeaderProfile.d.ts +5 -0
- package/dist/components/app-header/AppHeaderProfile.d.ts.map +1 -1
- package/dist/components/app-header/index.d.ts +3 -1
- package/dist/components/app-header/index.d.ts.map +1 -1
- package/dist/components/app-switcher/AppIconTile.d.ts +10 -0
- package/dist/components/app-switcher/AppIconTile.d.ts.map +1 -0
- package/dist/components/app-switcher/AppSwitcher.d.ts +1 -1
- package/dist/components/app-switcher/AppSwitcher.d.ts.map +1 -1
- package/dist/components/app-switcher/AppSwitcherItem.d.ts.map +1 -1
- package/dist/components/app-switcher/IconPatterns.d.ts +8 -0
- package/dist/components/app-switcher/IconPatterns.d.ts.map +1 -0
- package/dist/components/app-switcher/SystemAppIcon.d.ts.map +1 -1
- package/dist/components/app-switcher/index.d.ts +2 -0
- package/dist/components/app-switcher/index.d.ts.map +1 -1
- package/dist/components/avatar/Avatar.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
- package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts.map +1 -1
- package/dist/components/button/Button.d.ts +1 -1
- package/dist/components/button/Button.d.ts.map +1 -1
- package/dist/components/button/Spinner.d.ts.map +1 -1
- package/dist/components/combobox/Combobox.d.ts +4 -0
- package/dist/components/combobox/Combobox.d.ts.map +1 -0
- package/dist/components/combobox/Combobox.test.d.ts +2 -0
- package/dist/components/combobox/Combobox.test.d.ts.map +1 -0
- package/dist/components/combobox/index.d.ts +3 -0
- package/dist/components/combobox/index.d.ts.map +1 -0
- package/dist/components/country-selector/CountrySelector.d.ts +7 -0
- package/dist/components/country-selector/CountrySelector.d.ts.map +1 -1
- package/dist/components/country-selector/index.d.ts +1 -0
- package/dist/components/country-selector/index.d.ts.map +1 -1
- package/dist/components/date-range-selector/DateRangeSelector.d.ts +2 -2
- package/dist/components/date-range-selector/DateRangeSelector.d.ts.map +1 -1
- package/dist/components/date-range-selector/index.d.ts +1 -1
- package/dist/components/date-range-selector/index.d.ts.map +1 -1
- package/dist/components/date-selector/DateSelector.d.ts.map +1 -1
- package/dist/components/dropdown/Dropdown.d.ts +1 -1
- package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
- package/dist/components/export-button/ExportButton.d.ts +3 -0
- package/dist/components/export-button/ExportButton.d.ts.map +1 -0
- package/dist/components/export-button/ExportButton.test.d.ts +2 -0
- package/dist/components/export-button/ExportButton.test.d.ts.map +1 -0
- package/dist/components/export-button/index.d.ts +3 -0
- package/dist/components/export-button/index.d.ts.map +1 -0
- package/dist/components/launchpad/Launchpad.d.ts +4 -0
- package/dist/components/launchpad/Launchpad.d.ts.map +1 -0
- package/dist/components/launchpad/Launchpad.test.d.ts +2 -0
- package/dist/components/launchpad/Launchpad.test.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadGridIcon.d.ts +2 -0
- package/dist/components/launchpad/LaunchpadGridIcon.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadIconTile.d.ts +10 -0
- package/dist/components/launchpad/LaunchpadIconTile.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadItem.d.ts +8 -0
- package/dist/components/launchpad/LaunchpadItem.d.ts.map +1 -0
- package/dist/components/launchpad/LaunchpadOverlays.d.ts +3 -0
- package/dist/components/launchpad/LaunchpadOverlays.d.ts.map +1 -0
- package/dist/components/launchpad/SystemLaunchpadIcon.d.ts +5 -0
- package/dist/components/launchpad/SystemLaunchpadIcon.d.ts.map +1 -0
- package/dist/components/launchpad/hooks/useLaunchpad.d.ts +3 -0
- package/dist/components/launchpad/hooks/useLaunchpad.d.ts.map +1 -0
- package/dist/components/launchpad/index.d.ts +10 -0
- package/dist/components/launchpad/index.d.ts.map +1 -0
- package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
- package/dist/components/network-operator/NetworkOperator.d.ts +4 -0
- package/dist/components/network-operator/NetworkOperator.d.ts.map +1 -1
- package/dist/components/network-operator/index.d.ts +1 -0
- package/dist/components/network-operator/index.d.ts.map +1 -1
- package/dist/components/notice/Notice.d.ts +4 -0
- package/dist/components/notice/Notice.d.ts.map +1 -0
- package/dist/components/notice/Notice.test.d.ts +2 -0
- package/dist/components/notice/Notice.test.d.ts.map +1 -0
- package/dist/components/notice/index.d.ts +3 -0
- package/dist/components/notice/index.d.ts.map +1 -0
- package/dist/components/phone-number-input/PhoneNumberInput.d.ts.map +1 -1
- package/dist/components/popup/Popup.d.ts +15 -0
- package/dist/components/popup/Popup.d.ts.map +1 -0
- package/dist/components/popup/Popup.test.d.ts +2 -0
- package/dist/components/popup/Popup.test.d.ts.map +1 -0
- package/dist/components/popup/index.d.ts +3 -0
- package/dist/components/popup/index.d.ts.map +1 -0
- package/dist/components/profile-popover/ProfilePopover.d.ts +4 -0
- package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -0
- package/dist/components/profile-popover/ProfilePopover.test.d.ts +2 -0
- package/dist/components/profile-popover/ProfilePopover.test.d.ts.map +1 -0
- package/dist/components/profile-popover/index.d.ts +3 -0
- package/dist/components/profile-popover/index.d.ts.map +1 -0
- package/dist/components/role-select/RoleSelect.d.ts +4 -0
- package/dist/components/role-select/RoleSelect.d.ts.map +1 -0
- package/dist/components/role-select/RoleSelect.test.d.ts +2 -0
- package/dist/components/role-select/RoleSelect.test.d.ts.map +1 -0
- package/dist/components/role-select/index.d.ts +3 -0
- package/dist/components/role-select/index.d.ts.map +1 -0
- package/dist/components/section-header/SectionHeader.d.ts +7 -0
- package/dist/components/section-header/SectionHeader.d.ts.map +1 -0
- package/dist/components/section-header/SectionHeader.test.d.ts +2 -0
- package/dist/components/section-header/SectionHeader.test.d.ts.map +1 -0
- package/dist/components/section-header/index.d.ts +3 -0
- package/dist/components/section-header/index.d.ts.map +1 -0
- package/dist/components/sidebar/Sidebar.d.ts +1 -1
- package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
- package/dist/components/sidebar/SidebarContext.d.ts +6 -0
- package/dist/components/sidebar/SidebarContext.d.ts.map +1 -1
- package/dist/components/sidebar/index.d.ts +1 -1
- package/dist/components/sidebar/index.d.ts.map +1 -1
- package/dist/components/switch/Switch.d.ts +4 -0
- package/dist/components/switch/Switch.d.ts.map +1 -0
- package/dist/components/switch/Switch.test.d.ts +2 -0
- package/dist/components/switch/Switch.test.d.ts.map +1 -0
- package/dist/components/switch/index.d.ts +3 -0
- package/dist/components/switch/index.d.ts.map +1 -0
- package/dist/components/table/Table.d.ts.map +1 -1
- 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/theme/ThemeProvider.d.ts.map +1 -1
- package/dist/components/theme/cletTheme.d.ts +11 -0
- package/dist/components/theme/cletTheme.d.ts.map +1 -0
- package/dist/components/theme/cletTheme.test-d.d.ts +2 -0
- package/dist/components/theme/cletTheme.test-d.d.ts.map +1 -0
- package/dist/components/theme/cletTheme.test.d.ts +2 -0
- package/dist/components/theme/cletTheme.test.d.ts.map +1 -0
- package/dist/components/theme/index.d.ts +3 -1
- package/dist/components/theme/index.d.ts.map +1 -1
- package/dist/components/upload-field/UploadField.d.ts +5 -0
- package/dist/components/upload-field/UploadField.d.ts.map +1 -1
- package/dist/components/upload-field/index.d.ts +2 -2
- package/dist/components/upload-field/index.d.ts.map +1 -1
- package/dist/generated/components.theme.d.ts +313 -0
- package/dist/generated/components.theme.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/useHasMounted.d.ts +10 -0
- package/dist/hooks/useHasMounted.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.map +1 -1
- package/dist/index.cjs +84 -56
- package/dist/index.css +1 -1
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19025 -31594
- package/dist/mcp/cli.js +75 -0
- package/dist/mcp/docs.js +122 -0
- package/dist/mcp/generated/components.json +3601 -0
- package/dist/mcp/generated/examples.json +1233 -0
- package/dist/mcp/generated/index.meta.json +252 -0
- package/dist/mcp/generated/rules.json +629 -0
- package/dist/mcp/generated/search.json +1626 -0
- package/dist/mcp/generated/tokens.json +1022 -0
- package/dist/mcp/index.js +337 -0
- package/dist/mcp/indexer.js +370 -0
- package/dist/mcp/installers/claude.js +37 -0
- package/dist/mcp/installers/codex.js +24 -0
- package/dist/mcp/installers/cursor.js +33 -0
- package/dist/mcp/installers/doctor.js +36 -0
- package/dist/mcp/installers/opencode.js +36 -0
- package/dist/mcp/installers/setup.js +34 -0
- package/dist/mcp/installers/util.js +41 -0
- package/dist/mcp/paths.js +63 -0
- package/dist/mcp/skill/SKILL.md +36 -0
- package/dist/mcp/skill/image-to-components.md +49 -0
- package/dist/next-index.d.ts.map +1 -1
- package/dist/next.cjs +104 -94
- package/dist/next.css +1 -1
- package/dist/next.js +16275 -29977
- package/dist/types/app-header.d.ts +52 -13
- package/dist/types/app-header.d.ts.map +1 -1
- package/dist/types/app-switcher.d.ts +10 -1
- package/dist/types/app-switcher.d.ts.map +1 -1
- package/dist/types/avatar.d.ts +9 -0
- package/dist/types/avatar.d.ts.map +1 -1
- package/dist/types/combobox.d.ts +43 -0
- package/dist/types/combobox.d.ts.map +1 -0
- package/dist/types/country-selector.d.ts +4 -0
- package/dist/types/country-selector.d.ts.map +1 -1
- package/dist/types/date-range-selector.d.ts +11 -0
- package/dist/types/date-range-selector.d.ts.map +1 -1
- package/dist/types/dropdown.d.ts +8 -0
- package/dist/types/dropdown.d.ts.map +1 -1
- package/dist/types/export-button.d.ts +24 -0
- package/dist/types/export-button.d.ts.map +1 -0
- package/dist/types/launchpad.d.ts +79 -0
- package/dist/types/launchpad.d.ts.map +1 -0
- package/dist/types/metric-card.d.ts +4 -0
- package/dist/types/metric-card.d.ts.map +1 -1
- package/dist/types/network-operator.d.ts +8 -0
- package/dist/types/network-operator.d.ts.map +1 -1
- package/dist/types/notice.d.ts +24 -0
- package/dist/types/notice.d.ts.map +1 -0
- package/dist/types/popup.d.ts +43 -0
- package/dist/types/popup.d.ts.map +1 -0
- package/dist/types/profile-popover.d.ts +97 -0
- package/dist/types/profile-popover.d.ts.map +1 -0
- package/dist/types/role-select.d.ts +28 -0
- package/dist/types/role-select.d.ts.map +1 -0
- package/dist/types/section-header.d.ts +26 -0
- package/dist/types/section-header.d.ts.map +1 -0
- package/dist/types/sidebar.d.ts +5 -0
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/types/switch.d.ts +24 -0
- package/dist/types/switch.d.ts.map +1 -0
- package/dist/types/table.d.ts +23 -1
- package/dist/types/table.d.ts.map +1 -1
- package/dist/types/theme.d.ts +28 -8
- package/dist/types/theme.d.ts.map +1 -1
- package/dist/types/upload-field.d.ts +23 -0
- package/dist/types/upload-field.d.ts.map +1 -1
- package/dist/utils/export.d.ts +15 -0
- package/dist/utils/export.d.ts.map +1 -0
- package/dist/utils/stringToColor.d.ts +25 -0
- package/dist/utils/stringToColor.d.ts.map +1 -1
- package/package.json +29 -10
- package/scripts/postinstall.mjs +40 -0
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Clet Components
|
|
2
2
|
|
|
3
|
-
Shared React component library for
|
|
3
|
+
Shared React component library for Clet projects. CSS tokens and class names use the `--clet-*`/`.clet-*` naming (e.g. `--clet-primary`, `.clet-sidebar`); the original `--gsl-*`/`.gsl-*` spelling is kept as a permanent, unchanged alias for backward compatibility, and the `@rfdtech/components` package name is unaffected (see [Customize tokens](#7-customize-tokens)).
|
|
4
4
|
|
|
5
5
|
Requires React 18+ and a bundler that processes CSS (Vite, Webpack, etc.).
|
|
6
6
|
|
|
@@ -38,11 +38,11 @@ import { ThemeProvider } from "@rfdtech/components";
|
|
|
38
38
|
</ThemeProvider>
|
|
39
39
|
```
|
|
40
40
|
|
|
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
|
|
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 `.clet-theme` (the legacy `.gsl-theme` class is also present on the same element), `document.documentElement`, and all components (including portaled modals and popovers).
|
|
42
42
|
|
|
43
43
|
### 4. Tailwind v4 integration
|
|
44
44
|
|
|
45
|
-
If your project uses Tailwind v4, all `--
|
|
45
|
+
If your project uses Tailwind v4, all `--clet-*` design tokens are automatically available as utility classes. Import `style.css` after `tailwindcss` in your CSS entry:
|
|
46
46
|
|
|
47
47
|
```css
|
|
48
48
|
/* app/src/index.css */
|
|
@@ -54,25 +54,41 @@ The `@theme` block ships inside `style.css`. The consumer's Tailwind build proce
|
|
|
54
54
|
|
|
55
55
|
| Utility | Resolves to |
|
|
56
56
|
| --------- | ------------- |
|
|
57
|
-
| `bg-primary` / `text-primary` | `var(--
|
|
58
|
-
| `bg-primary-foreground` / `text-primary-foreground` | `var(--
|
|
59
|
-
| `bg-background` / `text-foreground` | `var(--
|
|
60
|
-
| `bg-secondary` / `text-secondary-foreground` | `var(--
|
|
61
|
-
| `bg-muted` / `text-muted-foreground` | `var(--
|
|
62
|
-
| `bg-accent` / `text-accent-foreground` | `var(--
|
|
63
|
-
| `bg-destructive` / `text-destructive-foreground` | `var(--
|
|
64
|
-
| `bg-card` / `text-card-foreground` | `var(--
|
|
65
|
-
| `bg-popover` / `text-popover-foreground` | `var(--
|
|
66
|
-
| `border` / `input` / `ring` | `var(--
|
|
67
|
-
| `rounded-lg` | `var(--
|
|
68
|
-
| `shadow-sm` / `shadow-md` / `shadow-lg` | `var(--
|
|
69
|
-
| `font-sans` | `var(--
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
**
|
|
74
|
-
|
|
75
|
-
|
|
57
|
+
| `bg-primary` / `text-primary` | `var(--clet-primary)` |
|
|
58
|
+
| `bg-primary-foreground` / `text-primary-foreground` | `var(--clet-on-primary)` |
|
|
59
|
+
| `bg-background` / `text-foreground` | `var(--clet-main-bg)` / `var(--clet-text)` |
|
|
60
|
+
| `bg-secondary` / `text-secondary-foreground` | `var(--clet-surface-dark)` / `var(--clet-text-secondary)` |
|
|
61
|
+
| `bg-muted` / `text-muted-foreground` | `var(--clet-surface-subtle)` / `var(--clet-text-secondary)` |
|
|
62
|
+
| `bg-accent` / `text-accent-foreground` | `var(--clet-hover)` / `var(--clet-text)` |
|
|
63
|
+
| `bg-destructive` / `text-destructive-foreground` | `var(--clet-error)` / `var(--clet-error-text)` |
|
|
64
|
+
| `bg-card` / `text-card-foreground` | `var(--clet-bg)` / `var(--clet-text)` |
|
|
65
|
+
| `bg-popover` / `text-popover-foreground` | `var(--clet-bg)` / `var(--clet-text)` |
|
|
66
|
+
| `border` / `input` / `ring` | `var(--clet-border)` / `var(--clet-border-strong)` / `var(--clet-focus)` |
|
|
67
|
+
| `rounded-lg` | `var(--clet-radius-base)` |
|
|
68
|
+
| `shadow-sm` / `shadow-md` / `shadow-lg` | `var(--clet-shadow-sm)` / etc. |
|
|
69
|
+
| `font-sans` | `var(--clet-font)` |
|
|
70
|
+
|
|
71
|
+
Every entry above is actually generated as `var(--gsl-<name>, var(--clet-<name>))` — overriding either the `--clet-*` name (preferred) or the legacy `--gsl-*` name works identically; `--gsl-*` wins if both are set.
|
|
72
|
+
|
|
73
|
+
**Dark mode** supports both conventions: `<html class="dark">` (Tailwind default) and `<html data-clet-theme="dark">` (`data-gsl-theme="dark"` is also written to the same element and matches equally).
|
|
74
|
+
|
|
75
|
+
**Non-Tailwind consumers** are unaffected. Browsers silently ignore `@theme` as an unknown at-rule. All `--clet-*` tokens (and their legacy `--gsl-*` aliases) continue to work as CSS custom properties.
|
|
76
|
+
|
|
77
|
+
### 6. AI-assisted development (automatic)
|
|
78
|
+
|
|
79
|
+
`npm install` also wires up an MCP server + skill doc for any AI coding tool it detects in your project — **Claude Code**, **Cursor**, **Codex**, and **OpenCode** — so agents search real components, pull authoritative prop types, and follow the library's design rules instead of inventing APIs. This runs via this package's own `postinstall` script (`scripts/postinstall.mjs`) — no separate command, no action needed. It's idempotent and safe to re-run. Set `RFDUI_SKIP_SETUP=1` to opt out (e.g. in CI). See [`mcp/README.md`](./mcp/README.md) for the `rfdui` CLI (`setup`, `doctor`, `search`, `update`) if you want to run it manually or check its status.
|
|
80
|
+
|
|
81
|
+
**If your package manager blocked the install script**, run setup manually — `npx rfdui setup` always works regardless of package manager or script-blocking config. Otherwise, to let it run automatically on the next install:
|
|
82
|
+
|
|
83
|
+
- **pnpm** (v8+) blocks lifecycle scripts from dependencies by default and prints `Ignored build scripts: @rfdtech/components` after install. Approve it, then reinstall:
|
|
84
|
+
```bash
|
|
85
|
+
pnpm approve-builds @rfdtech/components # or: pnpm approve-builds (interactive picker)
|
|
86
|
+
pnpm install
|
|
87
|
+
```
|
|
88
|
+
This writes `@rfdtech/components: true` under `allowBuilds` in `pnpm-workspace.yaml` (pnpm 11+; older pnpm uses `onlyBuiltDependencies` instead — same idea, different key).
|
|
89
|
+
- **npm** runs `postinstall` by default — nothing to approve. If it didn't run, your project or user `.npmrc` likely sets `ignore-scripts=true` (common in locked-down CI), or you ran `npm install --ignore-scripts`. Either drop that flag/setting for a local install, or just run `npx rfdui setup` manually — that always works even with scripts globally disabled.
|
|
90
|
+
|
|
91
|
+
### 7. Next.js App Router
|
|
76
92
|
|
|
77
93
|
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
94
|
|
|
@@ -97,8 +113,70 @@ See the [RouterAdapter](/docs/router-adapter) docs page for full setup.
|
|
|
97
113
|
|
|
98
114
|
### 7. Customize tokens
|
|
99
115
|
|
|
100
|
-
|
|
101
|
-
|
|
116
|
+
Components read `--clet-*` CSS variables — every token, color and
|
|
117
|
+
non-color alike (radius, shadow, font, spacing, z-index included), is
|
|
118
|
+
declared under the `--clet-*` name. The original `--gsl-*` spelling
|
|
119
|
+
also still works unchanged for existing overrides (every internal
|
|
120
|
+
`var(--clet-*)` read resolves as `var(--gsl-*, var(--clet-*))`, so
|
|
121
|
+
overriding either name works identically — `--gsl-*` wins if both are
|
|
122
|
+
set). **Prefer `--clet-*` in new override code**; `--gsl-*` is a
|
|
123
|
+
permanent compatibility alias, not a deprecated one.
|
|
124
|
+
|
|
125
|
+
**Use the `cletTheme()` runtime helper (recommended)** — no separate
|
|
126
|
+
CSS file, no build config. Import it from the package root alongside
|
|
127
|
+
the library CSS, and call it once at startup:
|
|
128
|
+
|
|
129
|
+
```ts title="src/main.tsx"
|
|
130
|
+
import "@rfdtech/components/style.css";
|
|
131
|
+
import { cletTheme } from "@rfdtech/components";
|
|
132
|
+
|
|
133
|
+
cletTheme({
|
|
134
|
+
all: {
|
|
135
|
+
primary: "#1d4ed8", // used by both modes unless a mode below overrides it
|
|
136
|
+
primaryLight: "#eff6ff",
|
|
137
|
+
focus: "#1d4ed8",
|
|
138
|
+
onPrimary: "#ffffff",
|
|
139
|
+
},
|
|
140
|
+
});
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
Keys are the **camelCase** form of the `--clet-*` token name
|
|
144
|
+
(`--clet-primary` → `primary`, `--clet-primary-light` → `primaryLight`),
|
|
145
|
+
and `all`/`light`/`dark` are all optional — a token set in `light` or
|
|
146
|
+
`dark` wins over the same token in `all`. `cletTheme()` is fully typed
|
|
147
|
+
against the library's real token set, so a misspelled or wrong-cased
|
|
148
|
+
key (or a value shaped wrong for its token, e.g. a non-color string for
|
|
149
|
+
`primary`) is a compile error, not a silent no-op. Calling it again
|
|
150
|
+
(e.g. on hot reload) replaces the previous overrides instead of
|
|
151
|
+
stacking a new `<style>` tag.
|
|
152
|
+
|
|
153
|
+
To keep every project's override in one predictable place, put the
|
|
154
|
+
`cletTheme(...)` call in its own **`src/clet.theme.ts`** file and
|
|
155
|
+
import it for its side effect, right after the library CSS:
|
|
156
|
+
|
|
157
|
+
```ts title="src/clet.theme.ts"
|
|
158
|
+
import { cletTheme } from "@rfdtech/components";
|
|
159
|
+
|
|
160
|
+
cletTheme({
|
|
161
|
+
all: { primary: "#1d4ed8" },
|
|
162
|
+
dark: { primary: "#ef4444", primaryLight: "#3f1515" },
|
|
163
|
+
});
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
```ts title="src/main.tsx"
|
|
167
|
+
import "@rfdtech/components/style.css";
|
|
168
|
+
import "./clet.theme"; // side-effect import — runs cletTheme() once at startup
|
|
169
|
+
import { ThemeProvider } from "@rfdtech/components";
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
See the [Theme](/docs/theme#clettheme-recommended) docs page for
|
|
173
|
+
component-scoped overrides, the full token/value type reference, and
|
|
174
|
+
type-safety details.
|
|
175
|
+
|
|
176
|
+
**Alternative: plain CSS, no JS.** Override any token by declaring a
|
|
177
|
+
new value on the same selectors the library uses — useful if you'd
|
|
178
|
+
rather not add a runtime call, or need the override present before any
|
|
179
|
+
JS runs.
|
|
102
180
|
|
|
103
181
|
**Step 1 — Import the library CSS** so its defaults are loaded:
|
|
104
182
|
|
|
@@ -121,11 +199,11 @@ these selectors:
|
|
|
121
199
|
| Selector | When it matches |
|
|
122
200
|
|----------|-----------------|
|
|
123
201
|
| `:root` | No theme attribute is set (no `ThemeProvider` mounted) |
|
|
124
|
-
| `:root[data-
|
|
125
|
-
| `:root[data-
|
|
126
|
-
| `.
|
|
127
|
-
| `.
|
|
128
|
-
| `.
|
|
202
|
+
| `:root[data-clet-theme="light"]` | Light mode on `<html>` — `ThemeProvider` writes the attribute here (also writes the legacy `data-gsl-theme="light"`, which matches identically) |
|
|
203
|
+
| `:root[data-clet-theme="dark"]` | Dark mode on `<html>` |
|
|
204
|
+
| `.clet-theme` | A consumer wrapper `<div class="clet-theme">` (the legacy `.gsl-theme` class is also present on the same element) |
|
|
205
|
+
| `.clet-theme[data-clet-theme="light"]` | Wrapper + light attribute |
|
|
206
|
+
| `.clet-theme[data-clet-theme="dark"]` | Wrapper + dark attribute |
|
|
129
207
|
|
|
130
208
|
A bare `:root { ... }` only matches the first row, so the library's
|
|
131
209
|
default keeps winning on rows 2–6 once `ThemeProvider` mounts. To
|
|
@@ -134,39 +212,44 @@ values (don't chain `var(--something)` — just write the color):
|
|
|
134
212
|
|
|
135
213
|
```css title="src/styles/theme.css"
|
|
136
214
|
:root,
|
|
137
|
-
:root[data-
|
|
138
|
-
.
|
|
139
|
-
:root[data-
|
|
140
|
-
.
|
|
141
|
-
--
|
|
142
|
-
--
|
|
143
|
-
--
|
|
144
|
-
--
|
|
215
|
+
:root[data-clet-theme="light"],
|
|
216
|
+
.clet-theme[data-clet-theme="light"],
|
|
217
|
+
:root[data-clet-theme="dark"],
|
|
218
|
+
.clet-theme[data-clet-theme="dark"] {
|
|
219
|
+
--clet-primary: #1d4ed8;
|
|
220
|
+
--clet-primary-light: #eff6ff;
|
|
221
|
+
--clet-focus: #1d4ed8;
|
|
222
|
+
--clet-on-primary: #ffffff;
|
|
145
223
|
}
|
|
146
224
|
```
|
|
147
225
|
|
|
148
226
|
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
|
-
|
|
227
|
+
and the unthemed fallback. The same shape works for any other color
|
|
228
|
+
token — list every selector, hardcode the value, and use its `--clet-*`
|
|
229
|
+
name (or the equivalent `--gsl-*` name — both work identically).
|
|
151
230
|
|
|
152
231
|
## Design tokens
|
|
153
232
|
|
|
154
|
-
Quick reference of commonly used tokens and their light-mode defaults
|
|
233
|
+
Quick reference of commonly used color tokens and their light-mode defaults.
|
|
234
|
+
Each has both a `--clet-*` (preferred) and `--gsl-*` (legacy, still works)
|
|
235
|
+
name for the same value:
|
|
155
236
|
|
|
156
|
-
| Token | Light default | Use |
|
|
237
|
+
| Token (`--clet-*` / `--gsl-*`) | Light default | Use |
|
|
157
238
|
| ------- | --------------- | ----- |
|
|
158
|
-
|
|
|
159
|
-
|
|
|
160
|
-
|
|
|
161
|
-
|
|
|
162
|
-
|
|
|
163
|
-
|
|
|
164
|
-
|
|
|
165
|
-
|
|
|
166
|
-
|
|
|
167
|
-
|
|
|
168
|
-
|
|
169
|
-
`
|
|
239
|
+
| `primary` | `#083755` | Buttons, focus rings, accents |
|
|
240
|
+
| `primary-light` | `#e7ebee` | Selected rows, hover fills |
|
|
241
|
+
| `secondary` | `#c8a24b` | Gold accent (e.g. active `SidebarLink`) |
|
|
242
|
+
| `bg` | `#ffffff` | Surfaces |
|
|
243
|
+
| `main-bg` | `#fafafa` | Page/app-layout background |
|
|
244
|
+
| `text` | `#3c4043` | Body text |
|
|
245
|
+
| `text-secondary` | `#5f6368` | Labels, muted UI |
|
|
246
|
+
| `border` | `#dadce0` | Borders |
|
|
247
|
+
| `hover` | `#f1f3f4` | Row/cell hover |
|
|
248
|
+
| `error` / `error-bg` | `#dc2626` / `#fef2f2` | Errors |
|
|
249
|
+
| `success` | `#16a34a` | Success states |
|
|
250
|
+
| `warning` | `#eab308` | Warnings |
|
|
251
|
+
|
|
252
|
+
`BulkImportModal` also has its own component-scoped tokens (`--clet-bulk-import-primary`, etc., falling back to the shared tokens above when unset) — the legacy `--gsl-bulk-import-primary` spelling also still works.
|
|
170
253
|
|
|
171
254
|
See the [Theme](/docs/theme) docs page for the full token reference (radius, shadows, z-index, fonts) and controlled mode.
|
|
172
255
|
|
|
@@ -197,7 +280,7 @@ Exports: `useSearchParamOverlay`, `useDialogSearchParam`, `useModalSearchParam`,
|
|
|
197
280
|
|
|
198
281
|
## AppHeader
|
|
199
282
|
|
|
200
|
-
Compound header bar with `AppHeader`, `AppHeaderSearch`, `AppHeaderActions`,
|
|
283
|
+
Compound header bar with `AppHeader`, `AppHeaderSearch`, `AppHeaderActions`, and `AppHeaderNotifications`. Nest search on the left and group switcher, notifications, and profile inside `AppHeaderActions` on the right. The profile trigger is [`ProfilePopover`](/docs/profile-popover) itself (pass `user`/`variant` for the compact header-style trigger) — there's no separate `AppHeaderProfile` component.
|
|
201
284
|
|
|
202
285
|
See the [AppHeader](/docs/app-header) docs page for props and exported types.
|
|
203
286
|
|
|
@@ -207,7 +290,8 @@ import {
|
|
|
207
290
|
AppHeaderActions,
|
|
208
291
|
AppHeaderSearch,
|
|
209
292
|
AppHeaderNotifications,
|
|
210
|
-
|
|
293
|
+
AppHeaderNotificationItem,
|
|
294
|
+
ProfilePopover,
|
|
211
295
|
AppSwitcher,
|
|
212
296
|
} from "@rfdtech/components";
|
|
213
297
|
|
|
@@ -217,20 +301,20 @@ import {
|
|
|
217
301
|
<AppSwitcher apps={apps} />
|
|
218
302
|
<AppHeaderNotifications loading={loading}>
|
|
219
303
|
{notifications.map((n) => (
|
|
220
|
-
<
|
|
221
|
-
<div className="gsl-notif-popover__body-text">{n.text}</div>
|
|
222
|
-
<div className="gsl-notif-popover__body-time">{n.time}</div>
|
|
223
|
-
</div>
|
|
304
|
+
<AppHeaderNotificationItem key={n.id} text={n.text} time={n.time} unread={n.unread} />
|
|
224
305
|
))}
|
|
225
306
|
</AppHeaderNotifications>
|
|
226
|
-
<
|
|
227
|
-
|
|
228
|
-
|
|
307
|
+
<ProfilePopover
|
|
308
|
+
user={{ name: "Kwame", role: "Admin", initials: "KA" }}
|
|
309
|
+
variant="avatar"
|
|
310
|
+
items={[{ label: "Settings", onClick: () => navigate("/settings") }]}
|
|
311
|
+
onSignOut={signOut}
|
|
312
|
+
/>
|
|
229
313
|
</AppHeaderActions>
|
|
230
314
|
</AppHeader>
|
|
231
315
|
```
|
|
232
316
|
|
|
233
|
-
Props: `AppHeader` — `className`, `children`. `AppHeaderActions` — `className`, `children`. Exported types: `AppHeaderProps`, `AppHeaderActionsProps`, `AppHeaderSearchProps`, `AppHeaderSearchDataGroup`, `AppHeaderSearchItem`, `AppHeaderNotificationsProps`, `
|
|
317
|
+
Props: `AppHeader` — `className`, `children`. `AppHeaderActions` — `className`, `children`. Exported types: `AppHeaderProps`, `AppHeaderActionsProps`, `AppHeaderSearchProps`, `AppHeaderSearchDataGroup`, `AppHeaderSearchItem`, `AppHeaderNotificationsProps`, `AppHeaderNotificationItemProps`. See [ProfilePopover](/docs/profile-popover) for `ProfilePopoverProps` and `AppUser`.
|
|
234
318
|
|
|
235
319
|
## AppLayout
|
|
236
320
|
|
|
@@ -456,24 +540,24 @@ Also exported: `useBulkImportFlow`, step components, and utilities (`parseSpread
|
|
|
456
540
|
|
|
457
541
|
### Theming
|
|
458
542
|
|
|
459
|
-
The modal uses a **near full-viewport** layout with a compulsory gutter on all sides (24px desktop, 16px mobile), enforced by overlay padding. Override shared tokens on `.gsl-bulk-import` via the `className` prop (see [Shared theming](#shared-theming)):
|
|
543
|
+
The modal uses a **near full-viewport** layout with a compulsory gutter on all sides (24px desktop, 16px mobile), enforced by overlay padding. Override shared tokens on `.clet-bulk-import` (the legacy `.gsl-bulk-import` class is also present on the same element) via the `className` prop (see [Shared theming](#shared-theming)):
|
|
460
544
|
|
|
461
545
|
```css
|
|
462
546
|
.my-import {
|
|
463
|
-
--
|
|
464
|
-
--
|
|
465
|
-
--
|
|
466
|
-
--
|
|
547
|
+
--clet-primary: #dc2626;
|
|
548
|
+
--clet-primary-light: #fef2f2;
|
|
549
|
+
--clet-success: #16a34a;
|
|
550
|
+
--clet-error-bg: #fef2f2;
|
|
467
551
|
}
|
|
468
552
|
```
|
|
469
553
|
|
|
470
|
-
|
|
554
|
+
The component-scoped `--clet-bulk-import-primary`, `--clet-bulk-import-primary-light`, etc. (and their legacy `--gsl-bulk-import-primary` spellings) still work too, and fall back to the shared tokens above when unset.
|
|
471
555
|
|
|
472
|
-
To change the gutter size, override `--
|
|
556
|
+
To change the gutter size, override `--clet-bulk-import-gutter` on `.clet-bulk-import__overlay` in your app CSS (do not override modal width/height — the dialog always fills the padded overlay area):
|
|
473
557
|
|
|
474
558
|
```css
|
|
475
|
-
.
|
|
476
|
-
--
|
|
559
|
+
.clet-bulk-import__overlay {
|
|
560
|
+
--clet-bulk-import-gutter: 32px;
|
|
477
561
|
}
|
|
478
562
|
```
|
|
479
563
|
|
|
@@ -506,7 +590,7 @@ Props: `variant`, `size`, `loading`, `loadingLabel`, `classNames`, and standard
|
|
|
506
590
|
|
|
507
591
|
## Card
|
|
508
592
|
|
|
509
|
-
Surface card wrapper with optional header and design tokens for padding and background. Uses `--
|
|
593
|
+
Surface card wrapper with optional header and design tokens for padding and background. Uses `--clet-surface-card` for background and `--clet-card-padding` for inner spacing. See the [Card](/docs/card) docs page for props and exported types.
|
|
510
594
|
|
|
511
595
|
```tsx
|
|
512
596
|
import { Card } from "@rfdtech/components";
|
|
@@ -540,9 +624,23 @@ import { Checkbox } from "@rfdtech/components";
|
|
|
540
624
|
|
|
541
625
|
Props: `checked`, `defaultChecked`, `onCheckedChange`, `label`, `disabled`, `required`, `name`, `value`, `id`, `aria-label`, `classNames`, `className`. Exported types: `CheckboxProps`, `CheckboxClassNames`.
|
|
542
626
|
|
|
543
|
-
##
|
|
627
|
+
## Combobox
|
|
544
628
|
|
|
545
|
-
|
|
629
|
+
Searchable option list built on `cmdk`, opened from a trigger button — supports single selection, multi-selection with checkboxes, and a per-option leading icon. Unlike `Dropdown` (Radix `Select`-based), it has search built in. See the [Combobox](/docs/combobox) docs page for props and exported types.
|
|
630
|
+
|
|
631
|
+
```tsx
|
|
632
|
+
import { Combobox } from "@rfdtech/components";
|
|
633
|
+
|
|
634
|
+
<Combobox aria-label="Field" options={options} value={value} onValueChange={setValue} clearable />
|
|
635
|
+
|
|
636
|
+
<Combobox aria-label="Field" options={options} value={values} onValueChange={setValues} multiple />
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
Props: `options`, `multiple`, `value`, `onValueChange`, `placeholder`, `searchPlaceholder`, `disabled`, `invalid`, `clearable`, `emptyMessage`, `aria-label`, `classNames`, `className`, `name`. Exported types: `ComboboxProps`, `ComboboxOption`, `ComboboxClassNames`.
|
|
640
|
+
|
|
641
|
+
## CountrySelector (Deprecated)
|
|
642
|
+
|
|
643
|
+
**Deprecated** — use [`Combobox`](#combobox) for general country selection, or [`PhoneNumberInput`](#phonenumberinput)'s own built-in country picker for phone numbers. 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.
|
|
546
644
|
|
|
547
645
|
```tsx
|
|
548
646
|
import { CountrySelector } from "@rfdtech/components";
|
|
@@ -839,7 +937,7 @@ Props: `label`, `value`, `icon`, `description`, `trend`, `trendValue`, `variant`
|
|
|
839
937
|
|
|
840
938
|
## Modal
|
|
841
939
|
|
|
842
|
-
Centered modal with four size variants (`sm`, `md`, `lg`, `xl`), popover-style border, and optional close-prevention. Size tokens are independently customizable via `--
|
|
940
|
+
Centered modal with four size variants (`sm`, `md`, `lg`, `xl`), popover-style border, and optional close-prevention. Size tokens are independently customizable via `--clet-modal-max-width-*`. See the [Modal](/docs/modal) docs page for props and exported types.
|
|
843
941
|
|
|
844
942
|
```tsx
|
|
845
943
|
import {
|
|
@@ -894,6 +992,24 @@ import { NetworkOperator } from "@rfdtech/components";
|
|
|
894
992
|
|
|
895
993
|
Props: `value`, `defaultValue`, `onChange`, `options`, `placeholder`, `invalid`, `disabled`, `classNames`, `className`. Exported types: `NetworkOperatorProps`, `NetworkOperatorOption`, `NetworkOperatorClassNames`.
|
|
896
994
|
|
|
995
|
+
## Notice
|
|
996
|
+
|
|
997
|
+
Boxed, persistent callout for scoped context, policy explanations, or a standing status message — unlike `Toast`, it renders inline and doesn't auto-dismiss. See the [Notice](/docs/notice) docs page for props and exported types.
|
|
998
|
+
|
|
999
|
+
```tsx
|
|
1000
|
+
import { Notice } from "@rfdtech/components";
|
|
1001
|
+
|
|
1002
|
+
<Notice variant="warning" leftBorder dashed title="Your scope for this composer">
|
|
1003
|
+
<ul>
|
|
1004
|
+
<li>Templates: Admissions Directorate only · Audience: 4 pre-approved groups.</li>
|
|
1005
|
+
</ul>
|
|
1006
|
+
</Notice>
|
|
1007
|
+
|
|
1008
|
+
<Notice variant="success">This will send directly.</Notice>
|
|
1009
|
+
```
|
|
1010
|
+
|
|
1011
|
+
Props: `variant`, `color`, `title`, `icon`, `leftBorder`, `dashed`, `classNames`, `className`, `children`. Exported types: `NoticeProps`, `NoticeClassNames`, `NoticeVariant`.
|
|
1012
|
+
|
|
897
1013
|
## OtpInput
|
|
898
1014
|
|
|
899
1015
|
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.
|
|
@@ -1140,7 +1256,21 @@ const [step, setStep] = useState(3);
|
|
|
1140
1256
|
</Stepper>
|
|
1141
1257
|
```
|
|
1142
1258
|
|
|
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 `--
|
|
1259
|
+
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 `--clet-stepper-accent` (defaults to `--clet-primary`) and related `--clet-stepper-*` custom properties.
|
|
1260
|
+
|
|
1261
|
+
## Switch
|
|
1262
|
+
|
|
1263
|
+
Binary on/off toggle built on `@radix-ui/react-switch`, with an optional label ("Switch + Text"). See the [Switch](/docs/switch) docs page for props and exported types.
|
|
1264
|
+
|
|
1265
|
+
```tsx
|
|
1266
|
+
import { Switch } from "@rfdtech/components";
|
|
1267
|
+
|
|
1268
|
+
<Switch aria-label="Notifications" checked={enabled} onCheckedChange={setEnabled} />
|
|
1269
|
+
|
|
1270
|
+
<Switch label="Email alerts" checked={enabled} onCheckedChange={setEnabled} />
|
|
1271
|
+
```
|
|
1272
|
+
|
|
1273
|
+
Props: `checked`, `defaultChecked`, `onCheckedChange`, `label`, `labelPosition`, `disabled`, `invalid`, `required`, `name`, `value`, `id`, `aria-label`, `classNames`, `className`. Exported types: `SwitchProps`, `SwitchClassNames`.
|
|
1144
1274
|
|
|
1145
1275
|
## Table
|
|
1146
1276
|
|
|
@@ -1294,9 +1424,7 @@ import { UploadField } from "@rfdtech/components";
|
|
|
1294
1424
|
<UploadField accept="image/*" maxSize={5 * 1024 * 1024} />
|
|
1295
1425
|
```
|
|
1296
1426
|
|
|
1297
|
-
Props: `accept`, `multiple`, `maxSize`, `value`, `onChange`, `invalid`, `disabled`, `name`, `classNames`, `className`. Exported types: `UploadFieldProps`, `UploadFieldClassNames`.
|
|
1298
|
-
|
|
1299
|
-
Props: `accept`, `multiple`, `maxSize`, `value`, `onChange`, `invalid`, `disabled`, `placeholder`, `classNames`, `className`. Exported types: `UploadFieldProps`, `UploadFieldClassNames`.
|
|
1427
|
+
Props: `accept`, `multiple`, `maxSize`, `value`, `onChange`, `invalid`, `disabled`, `name`, `fileStatuses`, `onCancel`, `onRetry`, `classNames`, `className`. Exported types: `UploadFieldProps`, `UploadFieldClassNames`, `UploadFieldFileStatus`, `UploadFieldFileStatusKind`. Also exports `FileFormatIcon` for rendering the same file-type icon standalone.
|
|
1300
1428
|
|
|
1301
1429
|
## Development
|
|
1302
1430
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"next-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/next-adapter.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"next-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/next-adapter.tsx"],"names":[],"mappings":"AAYA,OAAO,KAAK,EACX,kBAAkB,EAElB,MAAM,yBAAyB,CAAC;AAUjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,CA8CzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AppHeader.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeader.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACvB,MAAM,wBAAwB,CAAC;AAIhC,OAAO,yBAAyB,CAAC;AAiCjC,eAAO,MAAM,SAAS,GAAI,4CAKvB,cAAc,gCAmDhB,CAAC;AAEF,eAAO,MAAM,gBAAgB,GAAI,mCAAmC,qBAAqB,gCAMxF,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,iDAM/B,sBAAsB,gCAqBxB,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { AppHeaderNotificationItemProps } from "../../types/app-header";
|
|
2
|
+
export declare const AppHeaderNotificationItem: import("react").ForwardRefExoticComponent<AppHeaderNotificationItemProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
3
|
+
//# sourceMappingURL=AppHeaderNotificationItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppHeaderNotificationItem.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/AppHeaderNotificationItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,wBAAwB,CAAC;AAG7E,eAAO,MAAM,yBAAyB,2HA8CpC,CAAC"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
import type { AppHeaderProfileProps } from "../../types/app-header";
|
|
2
|
+
/**
|
|
3
|
+
* @deprecated Use `ProfilePopover` directly (pass `user`/`variant` for the same trigger) — see
|
|
4
|
+
* the [migration guide](/docs/migration-v2). Kept as a thin wrapper for backward compatibility;
|
|
5
|
+
* `headerAction` no longer has any effect since `ProfilePopover`'s theme toggle is automatic now.
|
|
6
|
+
*/
|
|
2
7
|
export declare const AppHeaderProfile: import("react").ForwardRefExoticComponent<AppHeaderProfileProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
3
8
|
//# sourceMappingURL=AppHeaderProfile.d.ts.map
|
|
@@ -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;
|
|
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;AAOpE;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,kHAwG3B,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { AppHeader, AppHeaderActions, AppHeaderBranding } from "./AppHeader";
|
|
2
2
|
export { AppHeaderSearch } from "./AppHeaderSearch";
|
|
3
3
|
export { AppHeaderNotifications } from "./AppHeaderNotifications";
|
|
4
|
+
export { AppHeaderNotificationItem } from "./AppHeaderNotificationItem";
|
|
5
|
+
/** @deprecated Use `ProfilePopover` directly — see the migration guide. */
|
|
4
6
|
export { AppHeaderProfile } from "./AppHeaderProfile";
|
|
5
|
-
export type { AppHeaderProps, AppHeaderActionsProps, AppHeaderBrandingProps, AppHeaderSearchProps, AppHeaderSearchDataGroup, AppHeaderSearchItem, AppHeaderNotificationsProps,
|
|
7
|
+
export type { AppHeaderProps, AppHeaderActionsProps, AppHeaderBrandingProps, AppHeaderSearchProps, AppHeaderSearchDataGroup, AppHeaderSearchItem, AppHeaderNotificationsProps, AppHeaderNotificationItemProps, AppHeaderNotificationItemClassNames, AppHeaderProfileProps, } from "../../types/app-header";
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app-header/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,2EAA2E;AAC3E,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EACV,cAAc,EACd,qBAAqB,EACrB,sBAAsB,EACtB,oBAAoB,EACpB,wBAAwB,EACxB,mBAAmB,EACnB,2BAA2B,EAC3B,8BAA8B,EAC9B,mCAAmC,EACnC,qBAAqB,GACtB,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface AppIconTileProps {
|
|
3
|
+
/** Seeds the deterministic background gradient and pattern texture */
|
|
4
|
+
name: string;
|
|
5
|
+
/** Glyph rendered centered on top of the tile (icon or initials) */
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function AppIconTile({ name, children, className }: AppIconTileProps): import("react").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=AppIconTile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppIconTile.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/AppIconTile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,MAAM,WAAW,gBAAgB;IAC/B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BAqB1E"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { AppSwitcherProps } from "../../types/app-switcher";
|
|
2
2
|
import "./styles/app-switcher.css";
|
|
3
|
-
export declare function AppSwitcher({ apps, loading, loadingLabel, open: controlledOpen, onOpenChange, onAppSelect, columns, triggerLabel, trigger, title, footer, className, style, placement, closeOnSelect, }: AppSwitcherProps): import("react").JSX.Element;
|
|
3
|
+
export declare function AppSwitcher({ apps, loading, loadingLabel, open: controlledOpen, onOpenChange, onAppSelect, columns, maxItems, triggerLabel, trigger, title, footer, children, className, style, placement, closeOnSelect, }: AppSwitcherProps): import("react").JSX.Element;
|
|
4
4
|
//# sourceMappingURL=AppSwitcher.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppSwitcher.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/AppSwitcher.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAW,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,2BAA2B,CAAC;AAcnC,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAe,EACf,YAAmC,EACnC,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,WAAW,EACX,OAAW,EACX,YAAkC,EAClC,OAAO,EACP,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,SAAwB,EACxB,aAAoB,GACrB,EAAE,gBAAgB,+
|
|
1
|
+
{"version":3,"file":"AppSwitcher.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/AppSwitcher.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAW,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAG1E,OAAO,2BAA2B,CAAC;AAcnC,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAe,EACf,YAAmC,EACnC,IAAI,EAAE,cAAc,EACpB,YAAY,EACZ,WAAW,EACX,OAAW,EACX,QAAY,EACZ,YAAkC,EAClC,OAAO,EACP,KAAK,EACL,MAAM,EACN,QAAQ,EACR,SAAS,EACT,KAAK,EACL,SAAwB,EACxB,aAAoB,GACrB,EAAE,gBAAgB,+BA0GlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AppSwitcherItem.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/AppSwitcherItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"AppSwitcherItem.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/AppSwitcherItem.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAIxD,UAAU,oBAAoB;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAmBD,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BAiEtE"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare const TILE_PATTERN_COUNT = 6;
|
|
2
|
+
interface TilePatternProps {
|
|
3
|
+
index: number;
|
|
4
|
+
patternId: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function TilePattern({ index, patternId }: TilePatternProps): import("react").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=IconPatterns.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconPatterns.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/IconPatterns.tsx"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,IAAI,CAAC;AAEpC,UAAU,gBAAgB;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAkFD,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,gBAAgB,+BASjE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SystemAppIcon.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/SystemAppIcon.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SystemAppIcon.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/SystemAppIcon.tsx"],"names":[],"mappings":"AAEA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAgBD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,+BAMzD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EACV,OAAO,EACP,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/app-switcher/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,YAAY,EACV,OAAO,EACP,gBAAgB,EAChB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,0BAA0B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAGlE,OAAO,qBAAqB,CAAC;AAyB7B,eAAO,MAAM,MAAM,
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/avatar/Avatar.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAc,MAAM,oBAAoB,CAAC;AAGlE,OAAO,qBAAqB,CAAC;AAyB7B,eAAO,MAAM,MAAM,wGAoDjB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BulkImportModal.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/BulkImportModal.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,+BAA+B,CAAC;AAYvC,OAAO,gCAAgC,CAAC;AAgCxC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,gBAAwC,EACxC,SAAS,EACT,YAAY,GACb,EAAE,oBAAoB,+
|
|
1
|
+
{"version":3,"file":"BulkImportModal.d.ts","sourceRoot":"","sources":["../../../src/components/bulk-import-modal/BulkImportModal.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,oBAAoB,EAGrB,MAAM,+BAA+B,CAAC;AAYvC,OAAO,gCAAgC,CAAC;AAgCxC,wBAAgB,eAAe,CAAC,EAC9B,IAAI,EACJ,YAAY,EACZ,MAAM,EACN,UAAU,EACV,gBAAwC,EACxC,SAAS,EACT,YAAY,GACb,EAAE,oBAAoB,+BAybtB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ValidateDataStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/ValidateDataStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"ValidateDataStep.d.ts","sourceRoot":"","sources":["../../../../src/components/bulk-import-modal/steps/ValidateDataStep.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAe,gBAAgB,EAAE,MAAM,OAAO,CAAC;AAI3D,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EAChB,yBAAyB,EAC1B,MAAM,kCAAkC,CAAC;AAgB1C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC;IACrC,MAAM,EAAE,yBAAyB,EAAE,CAAC;IACpC,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,EAAE,gBAAgB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IACxD,aAAa,EAAE,gBAAgB,CAAC,MAAM,gBAAgB,CAAC,CAAC;IACxD,qBAAqB,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IAC/C,oBAAoB,EAAE,MAAM,IAAI,CAAC;IACjC,kBAAkB,EAAE,CAAC,UAAU,EAAE,OAAO,KAAK,IAAI,CAAC;CACnD;AAmGD,wBAAgB,gBAAgB,CAAC,EAC/B,MAAM,EACN,UAAU,EACV,MAAM,EACN,aAAa,EACb,aAAa,EACb,aAAa,EACb,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,EAAE,qBAAqB,+BAsbvB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import type { ButtonProps } from "../../types/button";
|
|
2
2
|
import "./styles/button.css";
|
|
3
|
-
export declare
|
|
3
|
+
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
4
4
|
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/button/Button.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,qBAAqB,CAAC;AAE7B,eAAO,MAAM,MAAM,2GAkDlB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/button/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,YAAY,+
|
|
1
|
+
{"version":3,"file":"Spinner.d.ts","sourceRoot":"","sources":["../../../src/components/button/Spinner.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGrD,UAAU,YAAY;IACpB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,YAAY,+BAW/D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,uBAAuB,CAAC;AAE/B,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,+BA2M5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.test.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.test.tsx"],"names":[],"mappings":""}
|