@leonardaustin/ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (189) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +44 -0
  3. package/dist/components/app-shell/AppShell.d.ts +38 -0
  4. package/dist/components/app-shell/AppShell.d.ts.map +1 -0
  5. package/dist/components/app-shell/AuthLayout.d.ts +7 -0
  6. package/dist/components/app-shell/AuthLayout.d.ts.map +1 -0
  7. package/dist/components/app-shell/BackLink.d.ts +10 -0
  8. package/dist/components/app-shell/BackLink.d.ts.map +1 -0
  9. package/dist/components/app-shell/BottomNav.d.ts +10 -0
  10. package/dist/components/app-shell/BottomNav.d.ts.map +1 -0
  11. package/dist/components/app-shell/Breadcrumbs.d.ts +9 -0
  12. package/dist/components/app-shell/Breadcrumbs.d.ts.map +1 -0
  13. package/dist/components/app-shell/CommandPalette.d.ts +19 -0
  14. package/dist/components/app-shell/CommandPalette.d.ts.map +1 -0
  15. package/dist/components/app-shell/MobileDrawer.d.ts +13 -0
  16. package/dist/components/app-shell/MobileDrawer.d.ts.map +1 -0
  17. package/dist/components/app-shell/Sidebar.d.ts +20 -0
  18. package/dist/components/app-shell/Sidebar.d.ts.map +1 -0
  19. package/dist/components/app-shell/TopBar.d.ts +15 -0
  20. package/dist/components/app-shell/TopBar.d.ts.map +1 -0
  21. package/dist/components/app-shell/commandPaletteEvents.d.ts +12 -0
  22. package/dist/components/app-shell/commandPaletteEvents.d.ts.map +1 -0
  23. package/dist/components/app-shell/navigation.d.ts +7 -0
  24. package/dist/components/app-shell/navigation.d.ts.map +1 -0
  25. package/dist/components/app-shell/types.d.ts +33 -0
  26. package/dist/components/app-shell/types.d.ts.map +1 -0
  27. package/dist/components/charts/AreaChart.d.ts +10 -0
  28. package/dist/components/charts/AreaChart.d.ts.map +1 -0
  29. package/dist/components/charts/BarChart.d.ts +10 -0
  30. package/dist/components/charts/BarChart.d.ts.map +1 -0
  31. package/dist/components/charts/DonutChart.d.ts +12 -0
  32. package/dist/components/charts/DonutChart.d.ts.map +1 -0
  33. package/dist/components/charts/RadarChart.d.ts +13 -0
  34. package/dist/components/charts/RadarChart.d.ts.map +1 -0
  35. package/dist/components/charts/RadialBarChart.d.ts +13 -0
  36. package/dist/components/charts/RadialBarChart.d.ts.map +1 -0
  37. package/dist/components/charts/SparkLine.d.ts +7 -0
  38. package/dist/components/charts/SparkLine.d.ts.map +1 -0
  39. package/dist/components/charts/VerticalBarChart.d.ts +11 -0
  40. package/dist/components/charts/VerticalBarChart.d.ts.map +1 -0
  41. package/dist/components/tables/ColumnPicker.d.ts +33 -0
  42. package/dist/components/tables/ColumnPicker.d.ts.map +1 -0
  43. package/dist/components/tables/Pagination.d.ts +8 -0
  44. package/dist/components/tables/Pagination.d.ts.map +1 -0
  45. package/dist/components/tables/ResourceTable.d.ts +56 -0
  46. package/dist/components/tables/ResourceTable.d.ts.map +1 -0
  47. package/dist/components/tables/sortRows.d.ts +13 -0
  48. package/dist/components/tables/sortRows.d.ts.map +1 -0
  49. package/dist/components/ui/Alert.d.ts +11 -0
  50. package/dist/components/ui/Alert.d.ts.map +1 -0
  51. package/dist/components/ui/AuthCard.d.ts +11 -0
  52. package/dist/components/ui/AuthCard.d.ts.map +1 -0
  53. package/dist/components/ui/AuthorByline.d.ts +57 -0
  54. package/dist/components/ui/AuthorByline.d.ts.map +1 -0
  55. package/dist/components/ui/Avatar.d.ts +8 -0
  56. package/dist/components/ui/Avatar.d.ts.map +1 -0
  57. package/dist/components/ui/Badge.d.ts +10 -0
  58. package/dist/components/ui/Badge.d.ts.map +1 -0
  59. package/dist/components/ui/Button.d.ts +63 -0
  60. package/dist/components/ui/Button.d.ts.map +1 -0
  61. package/dist/components/ui/CalendarGrid.d.ts +23 -0
  62. package/dist/components/ui/CalendarGrid.d.ts.map +1 -0
  63. package/dist/components/ui/Card.d.ts +9 -0
  64. package/dist/components/ui/Card.d.ts.map +1 -0
  65. package/dist/components/ui/Checkbox.d.ts +10 -0
  66. package/dist/components/ui/Checkbox.d.ts.map +1 -0
  67. package/dist/components/ui/Combobox.d.ts +15 -0
  68. package/dist/components/ui/Combobox.d.ts.map +1 -0
  69. package/dist/components/ui/DangerZone.d.ts +40 -0
  70. package/dist/components/ui/DangerZone.d.ts.map +1 -0
  71. package/dist/components/ui/DatePicker.d.ts +11 -0
  72. package/dist/components/ui/DatePicker.d.ts.map +1 -0
  73. package/dist/components/ui/DateRangePicker.d.ts +13 -0
  74. package/dist/components/ui/DateRangePicker.d.ts.map +1 -0
  75. package/dist/components/ui/DateTimePicker.d.ts +9 -0
  76. package/dist/components/ui/DateTimePicker.d.ts.map +1 -0
  77. package/dist/components/ui/DetailPanel.d.ts +19 -0
  78. package/dist/components/ui/DetailPanel.d.ts.map +1 -0
  79. package/dist/components/ui/Dialog.d.ts +28 -0
  80. package/dist/components/ui/Dialog.d.ts.map +1 -0
  81. package/dist/components/ui/DialogActions.d.ts +52 -0
  82. package/dist/components/ui/DialogActions.d.ts.map +1 -0
  83. package/dist/components/ui/DividerLabel.d.ts +7 -0
  84. package/dist/components/ui/DividerLabel.d.ts.map +1 -0
  85. package/dist/components/ui/DropdownMenu.d.ts +27 -0
  86. package/dist/components/ui/DropdownMenu.d.ts.map +1 -0
  87. package/dist/components/ui/EmptyState.d.ts +11 -0
  88. package/dist/components/ui/EmptyState.d.ts.map +1 -0
  89. package/dist/components/ui/ErrorBoundary.d.ts +16 -0
  90. package/dist/components/ui/ErrorBoundary.d.ts.map +1 -0
  91. package/dist/components/ui/FilterButton.d.ts +47 -0
  92. package/dist/components/ui/FilterButton.d.ts.map +1 -0
  93. package/dist/components/ui/FilterDropdown.d.ts +50 -0
  94. package/dist/components/ui/FilterDropdown.d.ts.map +1 -0
  95. package/dist/components/ui/Kbd.d.ts +7 -0
  96. package/dist/components/ui/Kbd.d.ts.map +1 -0
  97. package/dist/components/ui/LoadingSpinner.d.ts +7 -0
  98. package/dist/components/ui/LoadingSpinner.d.ts.map +1 -0
  99. package/dist/components/ui/MetadataGrid.d.ts +45 -0
  100. package/dist/components/ui/MetadataGrid.d.ts.map +1 -0
  101. package/dist/components/ui/MetricCard.d.ts +12 -0
  102. package/dist/components/ui/MetricCard.d.ts.map +1 -0
  103. package/dist/components/ui/OAuthButton.d.ts +8 -0
  104. package/dist/components/ui/OAuthButton.d.ts.map +1 -0
  105. package/dist/components/ui/PageHeader.d.ts +44 -0
  106. package/dist/components/ui/PageHeader.d.ts.map +1 -0
  107. package/dist/components/ui/PageSection.d.ts +13 -0
  108. package/dist/components/ui/PageSection.d.ts.map +1 -0
  109. package/dist/components/ui/PaginationBar.d.ts +58 -0
  110. package/dist/components/ui/PaginationBar.d.ts.map +1 -0
  111. package/dist/components/ui/PasswordInput.d.ts +8 -0
  112. package/dist/components/ui/PasswordInput.d.ts.map +1 -0
  113. package/dist/components/ui/ProfileHeader.d.ts +54 -0
  114. package/dist/components/ui/ProfileHeader.d.ts.map +1 -0
  115. package/dist/components/ui/ProseContent.d.ts +7 -0
  116. package/dist/components/ui/ProseContent.d.ts.map +1 -0
  117. package/dist/components/ui/RadioPill.d.ts +14 -0
  118. package/dist/components/ui/RadioPill.d.ts.map +1 -0
  119. package/dist/components/ui/SearchInput.d.ts +8 -0
  120. package/dist/components/ui/SearchInput.d.ts.map +1 -0
  121. package/dist/components/ui/SectionHeader.d.ts +35 -0
  122. package/dist/components/ui/SectionHeader.d.ts.map +1 -0
  123. package/dist/components/ui/Select.d.ts +12 -0
  124. package/dist/components/ui/Select.d.ts.map +1 -0
  125. package/dist/components/ui/SelectDropdown.d.ts +16 -0
  126. package/dist/components/ui/SelectDropdown.d.ts.map +1 -0
  127. package/dist/components/ui/SettingRow.d.ts +42 -0
  128. package/dist/components/ui/SettingRow.d.ts.map +1 -0
  129. package/dist/components/ui/SideSheet.d.ts +14 -0
  130. package/dist/components/ui/SideSheet.d.ts.map +1 -0
  131. package/dist/components/ui/Slider.d.ts +14 -0
  132. package/dist/components/ui/Slider.d.ts.map +1 -0
  133. package/dist/components/ui/SplitPaneLayout.d.ts +73 -0
  134. package/dist/components/ui/SplitPaneLayout.d.ts.map +1 -0
  135. package/dist/components/ui/StatusDot.d.ts +9 -0
  136. package/dist/components/ui/StatusDot.d.ts.map +1 -0
  137. package/dist/components/ui/StepProgress.d.ts +11 -0
  138. package/dist/components/ui/StepProgress.d.ts.map +1 -0
  139. package/dist/components/ui/Tabs.d.ts +18 -0
  140. package/dist/components/ui/Tabs.d.ts.map +1 -0
  141. package/dist/components/ui/TextInput.d.ts +13 -0
  142. package/dist/components/ui/TextInput.d.ts.map +1 -0
  143. package/dist/components/ui/Textarea.d.ts +9 -0
  144. package/dist/components/ui/Textarea.d.ts.map +1 -0
  145. package/dist/components/ui/ThemePreview.d.ts +14 -0
  146. package/dist/components/ui/ThemePreview.d.ts.map +1 -0
  147. package/dist/components/ui/Timeline.d.ts +39 -0
  148. package/dist/components/ui/Timeline.d.ts.map +1 -0
  149. package/dist/components/ui/Toast.d.ts +21 -0
  150. package/dist/components/ui/Toast.d.ts.map +1 -0
  151. package/dist/components/ui/Toggle.d.ts +9 -0
  152. package/dist/components/ui/Toggle.d.ts.map +1 -0
  153. package/dist/components/ui/Toolbar.d.ts +11 -0
  154. package/dist/components/ui/Toolbar.d.ts.map +1 -0
  155. package/dist/components/ui/Tooltip.d.ts +10 -0
  156. package/dist/components/ui/Tooltip.d.ts.map +1 -0
  157. package/dist/components/ui/UploadDropzone.d.ts +13 -0
  158. package/dist/components/ui/UploadDropzone.d.ts.map +1 -0
  159. package/dist/config/theme.d.ts +43 -0
  160. package/dist/config/theme.d.ts.map +1 -0
  161. package/dist/hooks/useApplyTheme.d.ts +7 -0
  162. package/dist/hooks/useApplyTheme.d.ts.map +1 -0
  163. package/dist/hooks/useDismiss.d.ts +8 -0
  164. package/dist/hooks/useDismiss.d.ts.map +1 -0
  165. package/dist/hooks/useDropUp.d.ts +7 -0
  166. package/dist/hooks/useDropUp.d.ts.map +1 -0
  167. package/dist/hooks/useFocusTrap.d.ts +7 -0
  168. package/dist/hooks/useFocusTrap.d.ts.map +1 -0
  169. package/dist/hooks/useSettings.d.ts +8 -0
  170. package/dist/hooks/useSettings.d.ts.map +1 -0
  171. package/dist/hooks/useTheme.d.ts +6 -0
  172. package/dist/hooks/useTheme.d.ts.map +1 -0
  173. package/dist/index.d.ts +91 -0
  174. package/dist/index.d.ts.map +1 -0
  175. package/dist/index.js +4622 -0
  176. package/dist/lib/cn.d.ts +3 -0
  177. package/dist/lib/cn.d.ts.map +1 -0
  178. package/dist/lib/formatDate.d.ts +28 -0
  179. package/dist/lib/formatDate.d.ts.map +1 -0
  180. package/dist/providers/SettingsContext.d.ts +60 -0
  181. package/dist/providers/SettingsContext.d.ts.map +1 -0
  182. package/dist/providers/SettingsProvider.d.ts +7 -0
  183. package/dist/providers/SettingsProvider.d.ts.map +1 -0
  184. package/dist/providers/ThemeContext.d.ts +8 -0
  185. package/dist/providers/ThemeContext.d.ts.map +1 -0
  186. package/dist/providers/ThemeProvider.d.ts +5 -0
  187. package/dist/providers/ThemeProvider.d.ts.map +1 -0
  188. package/dist/styles.css +923 -0
  189. package/package.json +63 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Leonard Austin
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # @leonardaustin/ui
2
+
3
+ Reusable React components, application shell, charts, tables, form controls, and
4
+ theme tooling for Leonard Austin projects.
5
+
6
+ ```bash
7
+ pnpm add github:leonardaustin/ui react react-dom lucide-react
8
+ ```
9
+
10
+ This installs straight from GitHub. To pin a release, append a tag:
11
+ `github:leonardaustin/ui#v0.1.0`.
12
+
13
+ Import the stylesheet once:
14
+
15
+ ```tsx
16
+ import "@leonardaustin/ui/styles.css";
17
+ ```
18
+
19
+ Wrap applications with the providers when using the built-in theme controls:
20
+
21
+ ```tsx
22
+ import {
23
+ SettingsProvider,
24
+ ThemeProvider,
25
+ ToastProvider,
26
+ } from "@leonardaustin/ui";
27
+
28
+ export function Root() {
29
+ return (
30
+ <SettingsProvider>
31
+ <ThemeProvider>
32
+ <ToastProvider>{/* app */}</ToastProvider>
33
+ </ThemeProvider>
34
+ </SettingsProvider>
35
+ );
36
+ }
37
+ ```
38
+
39
+ `AppShell` is router-agnostic. Pass `currentPath` and `onNavigate` from your
40
+ router when you want single-page navigation; otherwise links render as normal
41
+ anchors.
42
+
43
+ This repository contains only the built package. See
44
+ https://github.com/leonardaustin/ui for the full component list.
@@ -0,0 +1,38 @@
1
+ import { type ReactNode } from "react";
2
+ import type { CommandPaletteShortcut } from "./commandPaletteEvents";
3
+ import type { AppShellNavigate } from "./navigation";
4
+ import type { AppShellAccount, AppShellBrand, AppShellBreadcrumbOptions, AppShellNavItem, AppShellNavSection } from "./types";
5
+ export interface AppShellProps {
6
+ children?: ReactNode;
7
+ navSections: AppShellNavSection[];
8
+ brand: AppShellBrand;
9
+ accounts?: AppShellAccount[];
10
+ bottomNavItems?: AppShellNavItem[];
11
+ commandItems?: AppShellNavItem[];
12
+ breadcrumbs?: AppShellBreadcrumbOptions | false;
13
+ initialAccountIndex?: number;
14
+ onAccountChange?: (account: AppShellAccount, index: number) => void;
15
+ onSignOut?: () => void;
16
+ signOutPath?: string;
17
+ signOutLabel?: string;
18
+ settingsPath?: string;
19
+ settingsLabel?: string;
20
+ onOpenSettings?: () => void;
21
+ showCommandPalette?: boolean;
22
+ showCommandTrigger?: boolean;
23
+ commandTriggerLabel?: string;
24
+ commandShortcut?: CommandPaletteShortcut;
25
+ currentPath?: string;
26
+ onNavigate?: AppShellNavigate;
27
+ mainClassName?: string;
28
+ className?: string;
29
+ }
30
+ /**
31
+ * Top-level app chrome: sidebar, top bar, mobile drawer, and bottom nav around
32
+ * the routed `children`. A leading skip link jumps focus to the `#main-content`
33
+ * <main>. When `showCommandPalette` is on it mounts a CommandPalette bound to
34
+ * `commandShortcut` (default ⌘K) whose searchable items default to the
35
+ * flattened `navSections` (override via `commandItems`).
36
+ */
37
+ export declare function AppShell({ children, navSections, brand, accounts, bottomNavItems, commandItems, breadcrumbs, initialAccountIndex, onAccountChange, onSignOut, signOutPath, signOutLabel, settingsPath, settingsLabel, onOpenSettings, showCommandPalette, showCommandTrigger, commandTriggerLabel, commandShortcut, currentPath, onNavigate, mainClassName, className, }: AppShellProps): import("react/jsx-runtime").JSX.Element;
38
+ //# sourceMappingURL=AppShell.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AppShell.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/AppShell.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAErE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAGrD,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EACb,yBAAyB,EACzB,eAAe,EACf,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,cAAc,CAAC,EAAE,eAAe,EAAE,CAAC;IACnC,YAAY,CAAC,EAAE,eAAe,EAAE,CAAC;IACjC,WAAW,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC;IAChD,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,EACvB,QAAQ,EACR,WAAW,EACX,KAAK,EACL,QAAQ,EACR,cAAmB,EACnB,YAAY,EACZ,WAAW,EACX,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,kBAAyB,EACzB,kBAAyB,EACzB,mBAAmB,EACnB,eAAe,EACf,WAAW,EACX,UAAU,EACV,aAAa,EACb,SAAS,GACV,EAAE,aAAa,2CA0Ef"}
@@ -0,0 +1,7 @@
1
+ import type { ReactNode } from "react";
2
+ export interface AuthLayoutProps {
3
+ children?: ReactNode;
4
+ className?: string;
5
+ }
6
+ export declare function AuthLayout({ children, className }: AuthLayoutProps): import("react/jsx-runtime").JSX.Element;
7
+ //# sourceMappingURL=AuthLayout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthLayout.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/AuthLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,eAAe,2CAkBlE"}
@@ -0,0 +1,10 @@
1
+ import type { ReactNode } from "react";
2
+ import { type AppShellNavigate } from "./navigation";
3
+ export interface BackLinkProps {
4
+ to: string;
5
+ children: ReactNode;
6
+ onNavigate?: AppShellNavigate;
7
+ className?: string;
8
+ }
9
+ export declare function BackLink({ to, children, onNavigate, className, }: BackLinkProps): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=BackLink.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackLink.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/BackLink.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAE7E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,SAAS,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,EAAE,EACF,QAAQ,EACR,UAAU,EACV,SAAS,GACV,EAAE,aAAa,2CAgBf"}
@@ -0,0 +1,10 @@
1
+ import { type AppShellNavigate } from "./navigation";
2
+ import type { AppShellNavItem } from "./types";
3
+ export interface BottomNavProps {
4
+ items: AppShellNavItem[];
5
+ currentPath?: string;
6
+ onNavigate?: AppShellNavigate;
7
+ className?: string;
8
+ }
9
+ export declare function BottomNav({ items, currentPath, onNavigate, className, }: BottomNavProps): import("react/jsx-runtime").JSX.Element | null;
10
+ //# sourceMappingURL=BottomNav.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BottomNav.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/BottomNav.tsx"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE,cAAc,kDAwChB"}
@@ -0,0 +1,9 @@
1
+ import { type AppShellNavigate } from "./navigation";
2
+ import type { AppShellBreadcrumbOptions } from "./types";
3
+ export interface BreadcrumbsProps extends AppShellBreadcrumbOptions {
4
+ currentPath?: string;
5
+ onNavigate?: AppShellNavigate;
6
+ className?: string;
7
+ }
8
+ export declare function Breadcrumbs({ homeLabel, labels, parents, currentPath, onNavigate, className, }: BreadcrumbsProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=Breadcrumbs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/Breadcrumbs.tsx"],"names":[],"mappings":"AAGA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAC7E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEzD,MAAM,WAAW,gBAAiB,SAAQ,yBAAyB;IACjE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,SAAuB,EACvB,MAAW,EACX,OAAY,EACZ,WAAiB,EACjB,UAAU,EACV,SAAS,GACV,EAAE,gBAAgB,2CAmDlB"}
@@ -0,0 +1,19 @@
1
+ import { type CommandPaletteShortcut } from "./commandPaletteEvents";
2
+ import { type AppShellNavigate } from "./navigation";
3
+ import type { AppShellNavItem } from "./types";
4
+ export interface CommandPaletteProps {
5
+ items: AppShellNavItem[];
6
+ eventName?: string;
7
+ shortcut?: CommandPaletteShortcut;
8
+ placeholder?: string;
9
+ emptyLabel?: string;
10
+ onNavigate?: AppShellNavigate;
11
+ onSelect?: (item: AppShellNavItem) => void;
12
+ }
13
+ /**
14
+ * Searchable page palette. Opens via a document-level keydown listener matching
15
+ * `shortcut` (default ⌘K), or when the `eventName` CustomEvent is dispatched on
16
+ * `document` (see openCommandPalette()); the shortcut also toggles it closed.
17
+ */
18
+ export declare function CommandPalette({ items, eventName, shortcut, placeholder, emptyLabel, onNavigate, onSelect, }: CommandPaletteProps): import("react/jsx-runtime").JSX.Element | null;
19
+ //# sourceMappingURL=CommandPalette.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CommandPalette.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/CommandPalette.tsx"],"names":[],"mappings":"AAMA,OAAO,EAIL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAkB,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,sBAAsB,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,eAAe,KAAK,IAAI,CAAC;CAC5C;AASD;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,SAAiC,EACjC,QAA2C,EAC3C,WAA+B,EAC/B,UAA+B,EAC/B,UAAU,EACV,QAAQ,GACT,EAAE,mBAAmB,kDA0IrB"}
@@ -0,0 +1,13 @@
1
+ import { type AppShellNavigate } from "./navigation";
2
+ import type { AppShellBrand, AppShellNavItem } from "./types";
3
+ export interface MobileDrawerProps {
4
+ open: boolean;
5
+ onClose: () => void;
6
+ items: AppShellNavItem[];
7
+ brand: AppShellBrand;
8
+ currentPath?: string;
9
+ onNavigate?: AppShellNavigate;
10
+ className?: string;
11
+ }
12
+ export declare function MobileDrawer({ open, onClose, items, brand, currentPath, onNavigate, className, }: MobileDrawerProps): import("react/jsx-runtime").JSX.Element | null;
13
+ //# sourceMappingURL=MobileDrawer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MobileDrawer.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/MobileDrawer.tsx"],"names":[],"mappings":"AAMA,OAAO,EAGL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE9D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,eAAe,EAAE,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAiBD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,KAAK,EACL,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE,iBAAiB,kDA4EnB"}
@@ -0,0 +1,20 @@
1
+ import { type AppShellNavigate } from "./navigation";
2
+ import type { AppShellAccount, AppShellBrand, AppShellNavSection } from "./types";
3
+ export interface SidebarProps {
4
+ navSections: AppShellNavSection[];
5
+ brand: AppShellBrand;
6
+ accounts?: AppShellAccount[];
7
+ initialAccountIndex?: number;
8
+ onAccountChange?: (account: AppShellAccount, index: number) => void;
9
+ onSignOut?: () => void;
10
+ signOutPath?: string;
11
+ signOutLabel?: string;
12
+ settingsPath?: string;
13
+ settingsLabel?: string;
14
+ onOpenSettings?: () => void;
15
+ currentPath?: string;
16
+ onNavigate?: AppShellNavigate;
17
+ className?: string;
18
+ }
19
+ export declare function Sidebar({ navSections, brand, accounts, initialAccountIndex, onAccountChange, onSignOut, signOutPath, signOutLabel, settingsPath, settingsLabel, onOpenSettings, currentPath, onNavigate, className, }: SidebarProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=Sidebar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/Sidebar.tsx"],"names":[],"mappings":"AAqBA,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACV,eAAe,EACf,aAAa,EAEb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AA2YjB,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAClC,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,EAAE,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACpE,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAC5B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EACtB,WAAW,EACX,KAAK,EACL,QAAa,EACb,mBAAmB,EACnB,eAAe,EACf,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,WAAW,EACX,UAAU,EACV,SAAS,GACV,EAAE,YAAY,2CA6Id"}
@@ -0,0 +1,15 @@
1
+ import { type CommandPaletteShortcut } from "./commandPaletteEvents";
2
+ import type { AppShellNavigate } from "./navigation";
3
+ import type { AppShellBreadcrumbOptions } from "./types";
4
+ export interface TopBarProps {
5
+ onMobileMenuToggle?: () => void;
6
+ breadcrumbs?: AppShellBreadcrumbOptions | false;
7
+ showCommandTrigger?: boolean;
8
+ commandTriggerLabel?: string;
9
+ commandShortcut?: CommandPaletteShortcut;
10
+ currentPath?: string;
11
+ onNavigate?: AppShellNavigate;
12
+ onCommandTrigger?: () => void;
13
+ }
14
+ export declare function TopBar({ onMobileMenuToggle, breadcrumbs, showCommandTrigger, commandTriggerLabel, commandShortcut, currentPath, onNavigate, onCommandTrigger, }: TopBarProps): import("react/jsx-runtime").JSX.Element;
15
+ //# sourceMappingURL=TopBar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TopBar.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/TopBar.tsx"],"names":[],"mappings":"AAaA,OAAO,EAGL,KAAK,sBAAsB,EAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAMzD,MAAM,WAAW,WAAW;IAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,WAAW,CAAC,EAAE,yBAAyB,GAAG,KAAK,CAAC;IAChD,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,eAAe,CAAC,EAAE,sBAAsB,CAAC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAC9B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,wBAAgB,MAAM,CAAC,EACrB,kBAAkB,EAClB,WAAW,EACX,kBAAyB,EACzB,mBAA8B,EAC9B,eAAkD,EAClD,WAAW,EACX,UAAU,EACV,gBAAgB,GACjB,EAAE,WAAW,2CAyEb"}
@@ -0,0 +1,12 @@
1
+ export declare const COMMAND_PALETTE_EVENT = "open-command-palette";
2
+ export interface CommandPaletteShortcut {
3
+ key: string;
4
+ label: string;
5
+ modifier?: "primary" | "meta" | "ctrl" | "none";
6
+ altKey?: boolean;
7
+ shiftKey?: boolean;
8
+ }
9
+ export declare const DEFAULT_COMMAND_PALETTE_SHORTCUT: CommandPaletteShortcut;
10
+ export declare function openCommandPalette(eventName?: string): void;
11
+ export declare function matchesCommandPaletteShortcut(event: KeyboardEvent, shortcut: CommandPaletteShortcut): boolean;
12
+ //# sourceMappingURL=commandPaletteEvents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"commandPaletteEvents.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/commandPaletteEvents.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,qBAAqB,yBAAyB,CAAC;AAE5D,MAAM,WAAW,sBAAsB;IACrC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAChD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,eAAO,MAAM,gCAAgC,EAAE,sBAI9C,CAAC;AAEF,wBAAgB,kBAAkB,CAAC,SAAS,SAAwB,QAGnE;AAED,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,sBAAsB,WAoBjC"}
@@ -0,0 +1,7 @@
1
+ import type { MouseEvent } from "react";
2
+ import type { AppShellNavItem } from "./types";
3
+ export type AppShellNavigate = (path: string) => void;
4
+ export declare function isAppShellPathActive(item: AppShellNavItem, currentPath?: string): boolean;
5
+ export declare function handleAppShellNavigate(event: MouseEvent<HTMLAnchorElement>, path: string, onNavigate?: AppShellNavigate, onAfterNavigate?: () => void): void;
6
+ export declare function navigateToPath(path: string, onNavigate?: AppShellNavigate): void;
7
+ //# sourceMappingURL=navigation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,OAAO,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAE/C,MAAM,MAAM,gBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;AAEtD,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,WAAW,CAAC,EAAE,MAAM,WASrB;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,UAAU,CAAC,iBAAiB,CAAC,EACpC,IAAI,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,gBAAgB,EAC7B,eAAe,CAAC,EAAE,MAAM,IAAI,QAsB7B;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,gBAAgB,QAOzE"}
@@ -0,0 +1,33 @@
1
+ import type { ComponentType, ReactNode } from "react";
2
+ export type AppShellIcon = ComponentType<{
3
+ className?: string;
4
+ }>;
5
+ export interface AppShellBrand {
6
+ name: string;
7
+ icon?: AppShellIcon;
8
+ logo?: ReactNode;
9
+ }
10
+ export interface AppShellNavItem {
11
+ label: string;
12
+ path: string;
13
+ icon: AppShellIcon;
14
+ shortLabel?: string;
15
+ keywords?: string[];
16
+ end?: boolean;
17
+ }
18
+ export interface AppShellNavSection {
19
+ title: string;
20
+ items: AppShellNavItem[];
21
+ }
22
+ export interface AppShellAccount {
23
+ name: string;
24
+ email?: string;
25
+ role?: string;
26
+ avatarSrc?: string;
27
+ }
28
+ export interface AppShellBreadcrumbOptions {
29
+ homeLabel?: string;
30
+ labels?: Record<string, string>;
31
+ parents?: Record<string, string>;
32
+ }
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/components/app-shell/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC;AAEjE,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,yBAAyB;IACxC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC"}
@@ -0,0 +1,10 @@
1
+ interface AreaChartProps {
2
+ data: {
3
+ date: string;
4
+ value: number;
5
+ }[];
6
+ height?: number;
7
+ }
8
+ export declare function AreaChart({ data, height }: AreaChartProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=AreaChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AreaChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/AreaChart.tsx"],"names":[],"mappings":"AAEA,UAAU,cAAc;IACtB,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD,wBAAgB,SAAS,CAAC,EAAE,IAAI,EAAE,MAAY,EAAE,EAAE,cAAc,2CA2M/D"}
@@ -0,0 +1,10 @@
1
+ interface BarChartProps {
2
+ data: {
3
+ label: string;
4
+ value: number;
5
+ }[];
6
+ height?: number;
7
+ }
8
+ export declare function BarChart({ data, height }: BarChartProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=BarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BarChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/BarChart.tsx"],"names":[],"mappings":"AAEA,UAAU,aAAa;IACrB,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,aAAa,2CA2FvD"}
@@ -0,0 +1,12 @@
1
+ interface DonutSegment {
2
+ name: string;
3
+ value: number;
4
+ color: string;
5
+ }
6
+ interface DonutChartProps {
7
+ segments: DonutSegment[];
8
+ size?: number;
9
+ }
10
+ export declare function DonutChart({ segments, size }: DonutChartProps): import("react/jsx-runtime").JSX.Element;
11
+ export {};
12
+ //# sourceMappingURL=DonutChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DonutChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/DonutChart.tsx"],"names":[],"mappings":"AAIA,UAAU,YAAY;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,eAAe;IACvB,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AA4CD,wBAAgB,UAAU,CAAC,EAAE,QAAQ,EAAE,IAAU,EAAE,EAAE,eAAe,2CAiKnE"}
@@ -0,0 +1,13 @@
1
+ interface RadarDataPoint {
2
+ label: string;
3
+ value: number;
4
+ }
5
+ interface RadarChartProps {
6
+ data: RadarDataPoint[];
7
+ /** Max value for the scale. Defaults to auto from data. */
8
+ maxValue?: number;
9
+ size?: number;
10
+ }
11
+ export declare function RadarChart({ data, maxValue, size }: RadarChartProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=RadarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadarChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/RadarChart.tsx"],"names":[],"mappings":"AAIA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,eAAe;IACvB,IAAI,EAAE,cAAc,EAAE,CAAC;IACvB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAID,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,IAAU,EAAE,EAAE,eAAe,2CA0JzE"}
@@ -0,0 +1,13 @@
1
+ interface RadialSegment {
2
+ label: string;
3
+ value: number;
4
+ max: number;
5
+ color: string;
6
+ }
7
+ interface RadialBarChartProps {
8
+ segments: RadialSegment[];
9
+ size?: number;
10
+ }
11
+ export declare function RadialBarChart({ segments, size }: RadialBarChartProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=RadialBarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RadialBarChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/RadialBarChart.tsx"],"names":[],"mappings":"AAIA,UAAU,aAAa;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,mBAAmB;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAWD,wBAAgB,cAAc,CAAC,EAAE,QAAQ,EAAE,IAAU,EAAE,EAAE,mBAAmB,2CAiK3E"}
@@ -0,0 +1,7 @@
1
+ export declare function SparkLine({ data, width, height, color, }: {
2
+ data: number[];
3
+ width?: number;
4
+ height?: number;
5
+ color?: string;
6
+ }): import("react/jsx-runtime").JSX.Element | null;
7
+ //# sourceMappingURL=SparkLine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SparkLine.d.ts","sourceRoot":"","sources":["../../../src/components/charts/SparkLine.tsx"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,KAAU,EACV,MAAW,EACX,KAAK,GACN,EAAE;IACD,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,kDAgCA"}
@@ -0,0 +1,11 @@
1
+ interface VerticalBarChartProps {
2
+ data: {
3
+ label: string;
4
+ value: number;
5
+ color?: string;
6
+ }[];
7
+ height?: number;
8
+ }
9
+ export declare function VerticalBarChart({ data, height, }: VerticalBarChartProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=VerticalBarChart.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"VerticalBarChart.d.ts","sourceRoot":"","sources":["../../../src/components/charts/VerticalBarChart.tsx"],"names":[],"mappings":"AAEA,UAAU,qBAAqB;IAC7B,IAAI,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACzD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAaD,wBAAgB,gBAAgB,CAAC,EAC/B,IAAI,EACJ,MAAY,GACb,EAAE,qBAAqB,2CA4HvB"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * ColumnPicker — a dropdown for toggling table column visibility.
3
+ *
4
+ * Extracted from Tables.tsx. Renders a FilterButton trigger that opens a
5
+ * checklist of toggleable columns. Uses `useDismiss` to close on outside
6
+ * click or Escape.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * <ColumnPicker
11
+ * columns={columns.filter((c) => c.key !== "select" && c.key !== "actions")}
12
+ * hidden={hiddenCols}
13
+ * onToggle={toggleCol}
14
+ * />
15
+ * ```
16
+ */
17
+ interface ColumnDef {
18
+ /** Unique column key. */
19
+ key: string;
20
+ /** Display label for the column header. */
21
+ header: string;
22
+ }
23
+ interface ColumnPickerProps {
24
+ /** List of toggleable columns (exclude utility columns like select/actions). */
25
+ columns: ColumnDef[];
26
+ /** Set of currently hidden column keys. */
27
+ hidden: Set<string>;
28
+ /** Called when a column's visibility is toggled. */
29
+ onToggle: (key: string) => void;
30
+ }
31
+ export declare function ColumnPicker({ columns, hidden, onToggle }: ColumnPickerProps): import("react/jsx-runtime").JSX.Element;
32
+ export {};
33
+ //# sourceMappingURL=ColumnPicker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColumnPicker.d.ts","sourceRoot":"","sources":["../../../src/components/tables/ColumnPicker.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAUH,UAAU,SAAS;IACjB,yBAAyB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,2CAA2C;IAC3C,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,iBAAiB;IACzB,gFAAgF;IAChF,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,2CAA2C;IAC3C,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,oDAAoD;IACpD,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC;AAED,wBAAgB,YAAY,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,iBAAiB,2CAqC5E"}
@@ -0,0 +1,8 @@
1
+ interface PaginationProps {
2
+ page: number;
3
+ totalPages: number;
4
+ onPageChange: (page: number) => void;
5
+ }
6
+ export declare function Pagination({ page, totalPages, onPageChange, }: PaginationProps): import("react/jsx-runtime").JSX.Element | null;
7
+ export {};
8
+ //# sourceMappingURL=Pagination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/components/tables/Pagination.tsx"],"names":[],"mappings":"AAIA,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,UAAU,EACV,YAAY,GACb,EAAE,eAAe,kDAwDjB"}
@@ -0,0 +1,56 @@
1
+ import { type ReactNode } from "react";
2
+ import { type SortDir } from "./sortRows";
3
+ export interface Column<T> {
4
+ key: string;
5
+ header: string;
6
+ width?: string;
7
+ sortable?: boolean;
8
+ /**
9
+ * Mark a column as interactive to prevent clicks inside it from
10
+ * triggering `onRowClick`. Use this for columns that contain buttons,
11
+ * checkboxes, dropdown menus, or other clickable elements.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * { key: "select", interactive: true, render: (row) => <Checkbox ... /> }
16
+ * { key: "actions", interactive: true, render: (row) => <DropdownMenu ... /> }
17
+ * ```
18
+ */
19
+ interactive?: boolean;
20
+ cellClassName?: string;
21
+ getValue?: (row: T) => string | number;
22
+ render: (row: T) => ReactNode;
23
+ }
24
+ interface ResourceTableProps<T> {
25
+ data: T[];
26
+ columns: Column<T>[];
27
+ getRowId: (row: T) => string | number;
28
+ onRowClick?: (row: T) => void;
29
+ emptyMessage?: string;
30
+ /**
31
+ * Controlled sort key. Provide together with `onSortChange` to make
32
+ * sorting controlled — the table then renders `data` as-is and the caller
33
+ * is responsible for ordering it.
34
+ */
35
+ sortKey?: string | null;
36
+ /** Controlled sort direction. Used with `sortKey`/`onSortChange`. */
37
+ sortDir?: SortDir;
38
+ /**
39
+ * Called when a sortable header is clicked. When provided, the table is
40
+ * controlled: it does NOT sort `data` itself and the caller must order the
41
+ * data to match. When omitted, the table sorts `data` internally.
42
+ */
43
+ onSortChange?: (key: string | null, dir: SortDir) => void;
44
+ }
45
+ /**
46
+ * Sorting: by default ResourceTable sorts client-side over the `data` prop.
47
+ * If you paginate (slice `data` to a single page), use controlled sorting
48
+ * (`sortKey`/`sortDir`/`onSortChange`) and sort the FULL dataset before
49
+ * slicing — otherwise header clicks reorder only the current page, giving
50
+ * wrong results. The exported {@link sortRows} helper applies the same
51
+ * comparison semantics for that pre-slice sort. For server-paginated data,
52
+ * sort in the query.
53
+ */
54
+ export declare function ResourceTable<T>({ data, columns, getRowId, onRowClick, emptyMessage, sortKey: controlledSortKey, sortDir: controlledSortDir, onSortChange, }: ResourceTableProps<T>): import("react/jsx-runtime").JSX.Element;
55
+ export {};
56
+ //# sourceMappingURL=ResourceTable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ResourceTable.d.ts","sourceRoot":"","sources":["../../../src/components/tables/ResourceTable.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAK1D,OAAO,EAAY,KAAK,OAAO,EAAE,MAAM,YAAY,CAAC;AAEpD,MAAM,WAAW,MAAM,CAAC,CAAC;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACvC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,SAAS,CAAC;CAC/B;AAED,UAAU,kBAAkB,CAAC,CAAC;IAC5B,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IACrB,QAAQ,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,MAAM,GAAG,MAAM,CAAC;IACtC,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,EAAE,OAAO,KAAK,IAAI,CAAC;CAC3D;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,EAC/B,IAAI,EACJ,OAAO,EACP,QAAQ,EACR,UAAU,EACV,YAAwB,EACxB,OAAO,EAAE,iBAAiB,EAC1B,OAAO,EAAE,iBAAiB,EAC1B,YAAY,GACb,EAAE,kBAAkB,CAAC,CAAC,CAAC,2CAkHvB"}
@@ -0,0 +1,13 @@
1
+ import type { Column } from "./ResourceTable";
2
+ export type SortDir = "asc" | "desc";
3
+ /**
4
+ * Sort `rows` by the given column's `getValue`, using the same comparison
5
+ * semantics ResourceTable applies internally (locale-aware, numeric-aware).
6
+ * Returns a new array; the input is not mutated. When `key` is null or the
7
+ * column has no `getValue`, the rows are returned unchanged.
8
+ *
9
+ * Exposed so paginated callers can sort the FULL dataset before slicing into
10
+ * a page (see the controlled-sorting note on ResourceTable).
11
+ */
12
+ export declare function sortRows<T>(rows: T[], columns: Column<T>[], key: string | null, dir: SortDir): T[];
13
+ //# sourceMappingURL=sortRows.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sortRows.d.ts","sourceRoot":"","sources":["../../../src/components/tables/sortRows.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,MAAM,OAAO,GAAG,KAAK,GAAG,MAAM,CAAC;AAErC;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EACxB,IAAI,EAAE,CAAC,EAAE,EACT,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,EACpB,GAAG,EAAE,MAAM,GAAG,IAAI,EAClB,GAAG,EAAE,OAAO,GACX,CAAC,EAAE,CAWL"}
@@ -0,0 +1,11 @@
1
+ type AlertType = "success" | "warning" | "error" | "info";
2
+ export interface AlertProps {
3
+ type: AlertType;
4
+ title?: string;
5
+ children: React.ReactNode;
6
+ dismissible?: boolean;
7
+ className?: string;
8
+ }
9
+ export declare function Alert({ type, title, children, dismissible, className, }: AlertProps): import("react/jsx-runtime").JSX.Element | null;
10
+ export {};
11
+ //# sourceMappingURL=Alert.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Alert.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Alert.tsx"],"names":[],"mappings":"AAMA,KAAK,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgCD,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,WAAW,EACX,SAAS,GACV,EAAE,UAAU,kDAoCZ"}
@@ -0,0 +1,11 @@
1
+ import type { ElementType, ReactNode } from "react";
2
+ export interface AuthCardProps {
3
+ title: string;
4
+ subtitle?: string;
5
+ icon?: ElementType;
6
+ children: ReactNode;
7
+ footer?: ReactNode;
8
+ className?: string;
9
+ }
10
+ export declare function AuthCard({ title, subtitle, icon: Icon, children, footer, className, }: AuthCardProps): import("react/jsx-runtime").JSX.Element;
11
+ //# sourceMappingURL=AuthCard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AuthCard.d.ts","sourceRoot":"","sources":["../../../src/components/ui/AuthCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpD,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,QAAQ,EACR,IAAI,EAAE,IAAI,EACV,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,aAAa,2CAwBf"}