@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.
Files changed (218) hide show
  1. package/README.md +209 -81
  2. package/dist/adapters/next-adapter.d.ts.map +1 -1
  3. package/dist/components/app-header/AppHeader.d.ts.map +1 -1
  4. package/dist/components/app-header/AppHeaderNotificationItem.d.ts +3 -0
  5. package/dist/components/app-header/AppHeaderNotificationItem.d.ts.map +1 -0
  6. package/dist/components/app-header/AppHeaderProfile.d.ts +5 -0
  7. package/dist/components/app-header/AppHeaderProfile.d.ts.map +1 -1
  8. package/dist/components/app-header/index.d.ts +3 -1
  9. package/dist/components/app-header/index.d.ts.map +1 -1
  10. package/dist/components/app-switcher/AppIconTile.d.ts +10 -0
  11. package/dist/components/app-switcher/AppIconTile.d.ts.map +1 -0
  12. package/dist/components/app-switcher/AppSwitcher.d.ts +1 -1
  13. package/dist/components/app-switcher/AppSwitcher.d.ts.map +1 -1
  14. package/dist/components/app-switcher/AppSwitcherItem.d.ts.map +1 -1
  15. package/dist/components/app-switcher/IconPatterns.d.ts +8 -0
  16. package/dist/components/app-switcher/IconPatterns.d.ts.map +1 -0
  17. package/dist/components/app-switcher/SystemAppIcon.d.ts.map +1 -1
  18. package/dist/components/app-switcher/index.d.ts +2 -0
  19. package/dist/components/app-switcher/index.d.ts.map +1 -1
  20. package/dist/components/avatar/Avatar.d.ts.map +1 -1
  21. package/dist/components/bulk-import-modal/BulkImportModal.d.ts.map +1 -1
  22. package/dist/components/bulk-import-modal/steps/ValidateDataStep.d.ts.map +1 -1
  23. package/dist/components/button/Button.d.ts +1 -1
  24. package/dist/components/button/Button.d.ts.map +1 -1
  25. package/dist/components/button/Spinner.d.ts.map +1 -1
  26. package/dist/components/combobox/Combobox.d.ts +4 -0
  27. package/dist/components/combobox/Combobox.d.ts.map +1 -0
  28. package/dist/components/combobox/Combobox.test.d.ts +2 -0
  29. package/dist/components/combobox/Combobox.test.d.ts.map +1 -0
  30. package/dist/components/combobox/index.d.ts +3 -0
  31. package/dist/components/combobox/index.d.ts.map +1 -0
  32. package/dist/components/country-selector/CountrySelector.d.ts +7 -0
  33. package/dist/components/country-selector/CountrySelector.d.ts.map +1 -1
  34. package/dist/components/country-selector/index.d.ts +1 -0
  35. package/dist/components/country-selector/index.d.ts.map +1 -1
  36. package/dist/components/date-range-selector/DateRangeSelector.d.ts +2 -2
  37. package/dist/components/date-range-selector/DateRangeSelector.d.ts.map +1 -1
  38. package/dist/components/date-range-selector/index.d.ts +1 -1
  39. package/dist/components/date-range-selector/index.d.ts.map +1 -1
  40. package/dist/components/date-selector/DateSelector.d.ts.map +1 -1
  41. package/dist/components/dropdown/Dropdown.d.ts +1 -1
  42. package/dist/components/dropdown/Dropdown.d.ts.map +1 -1
  43. package/dist/components/export-button/ExportButton.d.ts +3 -0
  44. package/dist/components/export-button/ExportButton.d.ts.map +1 -0
  45. package/dist/components/export-button/ExportButton.test.d.ts +2 -0
  46. package/dist/components/export-button/ExportButton.test.d.ts.map +1 -0
  47. package/dist/components/export-button/index.d.ts +3 -0
  48. package/dist/components/export-button/index.d.ts.map +1 -0
  49. package/dist/components/launchpad/Launchpad.d.ts +4 -0
  50. package/dist/components/launchpad/Launchpad.d.ts.map +1 -0
  51. package/dist/components/launchpad/Launchpad.test.d.ts +2 -0
  52. package/dist/components/launchpad/Launchpad.test.d.ts.map +1 -0
  53. package/dist/components/launchpad/LaunchpadGridIcon.d.ts +2 -0
  54. package/dist/components/launchpad/LaunchpadGridIcon.d.ts.map +1 -0
  55. package/dist/components/launchpad/LaunchpadIconTile.d.ts +10 -0
  56. package/dist/components/launchpad/LaunchpadIconTile.d.ts.map +1 -0
  57. package/dist/components/launchpad/LaunchpadItem.d.ts +8 -0
  58. package/dist/components/launchpad/LaunchpadItem.d.ts.map +1 -0
  59. package/dist/components/launchpad/LaunchpadOverlays.d.ts +3 -0
  60. package/dist/components/launchpad/LaunchpadOverlays.d.ts.map +1 -0
  61. package/dist/components/launchpad/SystemLaunchpadIcon.d.ts +5 -0
  62. package/dist/components/launchpad/SystemLaunchpadIcon.d.ts.map +1 -0
  63. package/dist/components/launchpad/hooks/useLaunchpad.d.ts +3 -0
  64. package/dist/components/launchpad/hooks/useLaunchpad.d.ts.map +1 -0
  65. package/dist/components/launchpad/index.d.ts +10 -0
  66. package/dist/components/launchpad/index.d.ts.map +1 -0
  67. package/dist/components/metric-card/MetricCard.d.ts.map +1 -1
  68. package/dist/components/network-operator/NetworkOperator.d.ts +4 -0
  69. package/dist/components/network-operator/NetworkOperator.d.ts.map +1 -1
  70. package/dist/components/network-operator/index.d.ts +1 -0
  71. package/dist/components/network-operator/index.d.ts.map +1 -1
  72. package/dist/components/notice/Notice.d.ts +4 -0
  73. package/dist/components/notice/Notice.d.ts.map +1 -0
  74. package/dist/components/notice/Notice.test.d.ts +2 -0
  75. package/dist/components/notice/Notice.test.d.ts.map +1 -0
  76. package/dist/components/notice/index.d.ts +3 -0
  77. package/dist/components/notice/index.d.ts.map +1 -0
  78. package/dist/components/phone-number-input/PhoneNumberInput.d.ts.map +1 -1
  79. package/dist/components/popup/Popup.d.ts +15 -0
  80. package/dist/components/popup/Popup.d.ts.map +1 -0
  81. package/dist/components/popup/Popup.test.d.ts +2 -0
  82. package/dist/components/popup/Popup.test.d.ts.map +1 -0
  83. package/dist/components/popup/index.d.ts +3 -0
  84. package/dist/components/popup/index.d.ts.map +1 -0
  85. package/dist/components/profile-popover/ProfilePopover.d.ts +4 -0
  86. package/dist/components/profile-popover/ProfilePopover.d.ts.map +1 -0
  87. package/dist/components/profile-popover/ProfilePopover.test.d.ts +2 -0
  88. package/dist/components/profile-popover/ProfilePopover.test.d.ts.map +1 -0
  89. package/dist/components/profile-popover/index.d.ts +3 -0
  90. package/dist/components/profile-popover/index.d.ts.map +1 -0
  91. package/dist/components/role-select/RoleSelect.d.ts +4 -0
  92. package/dist/components/role-select/RoleSelect.d.ts.map +1 -0
  93. package/dist/components/role-select/RoleSelect.test.d.ts +2 -0
  94. package/dist/components/role-select/RoleSelect.test.d.ts.map +1 -0
  95. package/dist/components/role-select/index.d.ts +3 -0
  96. package/dist/components/role-select/index.d.ts.map +1 -0
  97. package/dist/components/section-header/SectionHeader.d.ts +7 -0
  98. package/dist/components/section-header/SectionHeader.d.ts.map +1 -0
  99. package/dist/components/section-header/SectionHeader.test.d.ts +2 -0
  100. package/dist/components/section-header/SectionHeader.test.d.ts.map +1 -0
  101. package/dist/components/section-header/index.d.ts +3 -0
  102. package/dist/components/section-header/index.d.ts.map +1 -0
  103. package/dist/components/sidebar/Sidebar.d.ts +1 -1
  104. package/dist/components/sidebar/Sidebar.d.ts.map +1 -1
  105. package/dist/components/sidebar/SidebarContext.d.ts +6 -0
  106. package/dist/components/sidebar/SidebarContext.d.ts.map +1 -1
  107. package/dist/components/sidebar/index.d.ts +1 -1
  108. package/dist/components/sidebar/index.d.ts.map +1 -1
  109. package/dist/components/switch/Switch.d.ts +4 -0
  110. package/dist/components/switch/Switch.d.ts.map +1 -0
  111. package/dist/components/switch/Switch.test.d.ts +2 -0
  112. package/dist/components/switch/Switch.test.d.ts.map +1 -0
  113. package/dist/components/switch/index.d.ts +3 -0
  114. package/dist/components/switch/index.d.ts.map +1 -0
  115. package/dist/components/table/Table.d.ts.map +1 -1
  116. package/dist/components/table/TableHeader.d.ts.map +1 -1
  117. package/dist/components/table/TablePagination.d.ts.map +1 -1
  118. package/dist/components/table/index.d.ts +1 -1
  119. package/dist/components/table/index.d.ts.map +1 -1
  120. package/dist/components/theme/ThemeProvider.d.ts.map +1 -1
  121. package/dist/components/theme/cletTheme.d.ts +11 -0
  122. package/dist/components/theme/cletTheme.d.ts.map +1 -0
  123. package/dist/components/theme/cletTheme.test-d.d.ts +2 -0
  124. package/dist/components/theme/cletTheme.test-d.d.ts.map +1 -0
  125. package/dist/components/theme/cletTheme.test.d.ts +2 -0
  126. package/dist/components/theme/cletTheme.test.d.ts.map +1 -0
  127. package/dist/components/theme/index.d.ts +3 -1
  128. package/dist/components/theme/index.d.ts.map +1 -1
  129. package/dist/components/upload-field/UploadField.d.ts +5 -0
  130. package/dist/components/upload-field/UploadField.d.ts.map +1 -1
  131. package/dist/components/upload-field/index.d.ts +2 -2
  132. package/dist/components/upload-field/index.d.ts.map +1 -1
  133. package/dist/generated/components.theme.d.ts +313 -0
  134. package/dist/generated/components.theme.d.ts.map +1 -0
  135. package/dist/hooks/index.d.ts +1 -0
  136. package/dist/hooks/index.d.ts.map +1 -1
  137. package/dist/hooks/useHasMounted.d.ts +10 -0
  138. package/dist/hooks/useHasMounted.d.ts.map +1 -0
  139. package/dist/hooks/useTableFilter.d.ts.map +1 -1
  140. package/dist/hooks/useTablePagination.d.ts.map +1 -1
  141. package/dist/hooks/useTableState.d.ts.map +1 -1
  142. package/dist/index.cjs +84 -56
  143. package/dist/index.css +1 -1
  144. package/dist/index.d.ts +12 -1
  145. package/dist/index.d.ts.map +1 -1
  146. package/dist/index.js +19025 -31594
  147. package/dist/mcp/cli.js +75 -0
  148. package/dist/mcp/docs.js +122 -0
  149. package/dist/mcp/generated/components.json +3601 -0
  150. package/dist/mcp/generated/examples.json +1233 -0
  151. package/dist/mcp/generated/index.meta.json +252 -0
  152. package/dist/mcp/generated/rules.json +629 -0
  153. package/dist/mcp/generated/search.json +1626 -0
  154. package/dist/mcp/generated/tokens.json +1022 -0
  155. package/dist/mcp/index.js +337 -0
  156. package/dist/mcp/indexer.js +370 -0
  157. package/dist/mcp/installers/claude.js +37 -0
  158. package/dist/mcp/installers/codex.js +24 -0
  159. package/dist/mcp/installers/cursor.js +33 -0
  160. package/dist/mcp/installers/doctor.js +36 -0
  161. package/dist/mcp/installers/opencode.js +36 -0
  162. package/dist/mcp/installers/setup.js +34 -0
  163. package/dist/mcp/installers/util.js +41 -0
  164. package/dist/mcp/paths.js +63 -0
  165. package/dist/mcp/skill/SKILL.md +36 -0
  166. package/dist/mcp/skill/image-to-components.md +49 -0
  167. package/dist/next-index.d.ts.map +1 -1
  168. package/dist/next.cjs +104 -94
  169. package/dist/next.css +1 -1
  170. package/dist/next.js +16275 -29977
  171. package/dist/types/app-header.d.ts +52 -13
  172. package/dist/types/app-header.d.ts.map +1 -1
  173. package/dist/types/app-switcher.d.ts +10 -1
  174. package/dist/types/app-switcher.d.ts.map +1 -1
  175. package/dist/types/avatar.d.ts +9 -0
  176. package/dist/types/avatar.d.ts.map +1 -1
  177. package/dist/types/combobox.d.ts +43 -0
  178. package/dist/types/combobox.d.ts.map +1 -0
  179. package/dist/types/country-selector.d.ts +4 -0
  180. package/dist/types/country-selector.d.ts.map +1 -1
  181. package/dist/types/date-range-selector.d.ts +11 -0
  182. package/dist/types/date-range-selector.d.ts.map +1 -1
  183. package/dist/types/dropdown.d.ts +8 -0
  184. package/dist/types/dropdown.d.ts.map +1 -1
  185. package/dist/types/export-button.d.ts +24 -0
  186. package/dist/types/export-button.d.ts.map +1 -0
  187. package/dist/types/launchpad.d.ts +79 -0
  188. package/dist/types/launchpad.d.ts.map +1 -0
  189. package/dist/types/metric-card.d.ts +4 -0
  190. package/dist/types/metric-card.d.ts.map +1 -1
  191. package/dist/types/network-operator.d.ts +8 -0
  192. package/dist/types/network-operator.d.ts.map +1 -1
  193. package/dist/types/notice.d.ts +24 -0
  194. package/dist/types/notice.d.ts.map +1 -0
  195. package/dist/types/popup.d.ts +43 -0
  196. package/dist/types/popup.d.ts.map +1 -0
  197. package/dist/types/profile-popover.d.ts +97 -0
  198. package/dist/types/profile-popover.d.ts.map +1 -0
  199. package/dist/types/role-select.d.ts +28 -0
  200. package/dist/types/role-select.d.ts.map +1 -0
  201. package/dist/types/section-header.d.ts +26 -0
  202. package/dist/types/section-header.d.ts.map +1 -0
  203. package/dist/types/sidebar.d.ts +5 -0
  204. package/dist/types/sidebar.d.ts.map +1 -1
  205. package/dist/types/switch.d.ts +24 -0
  206. package/dist/types/switch.d.ts.map +1 -0
  207. package/dist/types/table.d.ts +23 -1
  208. package/dist/types/table.d.ts.map +1 -1
  209. package/dist/types/theme.d.ts +28 -8
  210. package/dist/types/theme.d.ts.map +1 -1
  211. package/dist/types/upload-field.d.ts +23 -0
  212. package/dist/types/upload-field.d.ts.map +1 -1
  213. package/dist/utils/export.d.ts +15 -0
  214. package/dist/utils/export.d.ts.map +1 -0
  215. package/dist/utils/stringToColor.d.ts +25 -0
  216. package/dist/utils/stringToColor.d.ts.map +1 -1
  217. package/package.json +29 -10
  218. package/scripts/postinstall.mjs +40 -0
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
- # GSL Components
1
+ # Clet Components
2
2
 
3
- Shared React component library for Ghana School of Law (GSL) projects.
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`, `document.documentElement`, and all components (including portaled modals and popovers).
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 `--gsl-*` design tokens are automatically available as utility classes. Import `style.css` after `tailwindcss` in your CSS entry:
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(--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
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
- GSL components read `--gsl-*` CSS variables. Override any of them by
101
- declaring a new value on the same selectors the library uses.
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-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 |
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-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;
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
- `--gsl-*` token — list every selector, hardcode the value.
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
- | `--gsl-primary` | `#dc2626` | Buttons, focus rings, accents |
159
- | `--gsl-primary-light` | `#fef2f2` | Selected rows, hover fills |
160
- | `--gsl-bg` | `#ffffff` | Surfaces |
161
- | `--gsl-text` | `#3c4043` | Body text |
162
- | `--gsl-text-secondary` | `#5f6368` | Labels, muted UI |
163
- | `--gsl-border` | `#dadce0` | Borders |
164
- | `--gsl-hover` | `#f1f3f4` | Row/cell hover |
165
- | `--gsl-error` / `--gsl-error-bg` | `#dc2626` / `#fef2f2` | Errors |
166
- | `--gsl-success` | `#16a34a` | Success states |
167
- | `--gsl-warning` | `#eab308` | Warnings |
168
-
169
- `BulkImportModal` also accepts legacy aliases (`--gsl-bulk-import-primary`, etc.) that map to the shared tokens.
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`, `AppHeaderNotifications`, and `AppHeaderProfile`. Nest search on the left and group switcher, notifications, and profile inside `AppHeaderActions` on the right.
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
- AppHeaderProfile,
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
- <div key={n.id} className="gsl-notif-popover__item">
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
- <AppHeaderProfile user={{ name: "Kwame", role: "Admin", initials: "KA" }} variant="basic">
227
- <button className="gsl-profile-popover__action">Settings</button>
228
- </AppHeaderProfile>
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`, `AppHeaderProfileProps`, `AppUser`.
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
- --gsl-primary: #dc2626;
464
- --gsl-primary-light: #fef2f2;
465
- --gsl-success: #16a34a;
466
- --gsl-error-bg: #fef2f2;
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
- Legacy aliases (`--gsl-bulk-import-primary`, `--gsl-bulk-import-primary-light`, etc.) still work and map to the shared tokens.
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 `--gsl-bulk-import-gutter` on `.gsl-bulk-import__overlay` in your app CSS (do not override modal width/height — the dialog always fills the padded overlay area):
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
- .gsl-bulk-import__overlay {
476
- --gsl-bulk-import-gutter: 32px;
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 `--gsl-surface-card` for background and `--gsl-card-padding` for inner spacing. See the [Card](/docs/card) docs page for props and exported types.
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
- ## CountrySelector
627
+ ## Combobox
544
628
 
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.
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 `--gsl-modal-max-width-*`. See the [Modal](/docs/modal) docs page for props and exported types.
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 `--gsl-stepper-accent` (defaults to `--gsl-primary`) and related `--gsl-stepper-*` custom properties.
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":"AAMA,OAAO,KAAK,EACX,kBAAkB,EAElB,MAAM,yBAAyB,CAAC;AAUjC;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,oBAAoB,IAAI,kBAAkB,CA8CzD"}
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":"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
+ {"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;AAMpE,eAAO,MAAM,gBAAgB,kHA4E3B,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, AppHeaderProfileProps, AppUser, } from "../../types/app-header";
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,qBAAqB,EACrB,OAAO,GACR,MAAM,wBAAwB,CAAC"}
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,+BAoGlB"}
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;AAExD,UAAU,oBAAoB;IAC5B,GAAG,EAAE,OAAO,CAAC;IACb,QAAQ,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAClC;AAYD,wBAAgB,eAAe,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE,oBAAoB,+BA0DtE"}
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":"AAAA,UAAU,kBAAkB;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAgBD,wBAAgB,aAAa,CAAC,EAAE,IAAI,EAAE,EAAE,kBAAkB,+BAMzD"}
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,3 +1,5 @@
1
+ export { AppIconTile } from "./AppIconTile";
2
+ export type { AppIconTileProps } from "./AppIconTile";
1
3
  export { AppSwitcher } from "./AppSwitcher";
2
4
  export { AppSwitcherItem } from "./AppSwitcherItem";
3
5
  export { GridIcon } from "./GridIcon";
@@ -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,wGAgDjB,CAAC"}
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,+BA8atB"}
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;AAkB1C,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;AA2GD,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,+BAocvB"}
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 function Button({ variant, size, loading, loadingLabel, disabled, className, classNames, children, type, ...props }: ButtonProps): import("react").JSX.Element;
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":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAGtD,OAAO,qBAAqB,CAAC;AAE7B,wBAAgB,MAAM,CAAC,EACrB,OAAqB,EACrB,IAAW,EACX,OAAe,EACf,YAAwB,EACxB,QAAQ,EACR,SAAS,EACT,UAAU,EACV,QAAQ,EACR,IAAe,EACf,GAAG,KAAK,EACT,EAAE,WAAW,+BAiCb"}
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,+BAO/D"}
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,4 @@
1
+ import type { ComboboxProps } from "../../types/combobox";
2
+ import "./styles/combobox.css";
3
+ export declare function Combobox(props: ComboboxProps): import("react").JSX.Element;
4
+ //# sourceMappingURL=Combobox.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Combobox.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Combobox.test.d.ts","sourceRoot":"","sources":["../../../src/components/combobox/Combobox.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ export { Combobox } from "./Combobox";
2
+ export type { ComboboxClassNames, ComboboxOption, ComboboxProps, } from "../../types/combobox";
3
+ //# sourceMappingURL=index.d.ts.map