@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.
- package/LICENSE +21 -0
- package/README.md +44 -0
- package/dist/components/app-shell/AppShell.d.ts +38 -0
- package/dist/components/app-shell/AppShell.d.ts.map +1 -0
- package/dist/components/app-shell/AuthLayout.d.ts +7 -0
- package/dist/components/app-shell/AuthLayout.d.ts.map +1 -0
- package/dist/components/app-shell/BackLink.d.ts +10 -0
- package/dist/components/app-shell/BackLink.d.ts.map +1 -0
- package/dist/components/app-shell/BottomNav.d.ts +10 -0
- package/dist/components/app-shell/BottomNav.d.ts.map +1 -0
- package/dist/components/app-shell/Breadcrumbs.d.ts +9 -0
- package/dist/components/app-shell/Breadcrumbs.d.ts.map +1 -0
- package/dist/components/app-shell/CommandPalette.d.ts +19 -0
- package/dist/components/app-shell/CommandPalette.d.ts.map +1 -0
- package/dist/components/app-shell/MobileDrawer.d.ts +13 -0
- package/dist/components/app-shell/MobileDrawer.d.ts.map +1 -0
- package/dist/components/app-shell/Sidebar.d.ts +20 -0
- package/dist/components/app-shell/Sidebar.d.ts.map +1 -0
- package/dist/components/app-shell/TopBar.d.ts +15 -0
- package/dist/components/app-shell/TopBar.d.ts.map +1 -0
- package/dist/components/app-shell/commandPaletteEvents.d.ts +12 -0
- package/dist/components/app-shell/commandPaletteEvents.d.ts.map +1 -0
- package/dist/components/app-shell/navigation.d.ts +7 -0
- package/dist/components/app-shell/navigation.d.ts.map +1 -0
- package/dist/components/app-shell/types.d.ts +33 -0
- package/dist/components/app-shell/types.d.ts.map +1 -0
- package/dist/components/charts/AreaChart.d.ts +10 -0
- package/dist/components/charts/AreaChart.d.ts.map +1 -0
- package/dist/components/charts/BarChart.d.ts +10 -0
- package/dist/components/charts/BarChart.d.ts.map +1 -0
- package/dist/components/charts/DonutChart.d.ts +12 -0
- package/dist/components/charts/DonutChart.d.ts.map +1 -0
- package/dist/components/charts/RadarChart.d.ts +13 -0
- package/dist/components/charts/RadarChart.d.ts.map +1 -0
- package/dist/components/charts/RadialBarChart.d.ts +13 -0
- package/dist/components/charts/RadialBarChart.d.ts.map +1 -0
- package/dist/components/charts/SparkLine.d.ts +7 -0
- package/dist/components/charts/SparkLine.d.ts.map +1 -0
- package/dist/components/charts/VerticalBarChart.d.ts +11 -0
- package/dist/components/charts/VerticalBarChart.d.ts.map +1 -0
- package/dist/components/tables/ColumnPicker.d.ts +33 -0
- package/dist/components/tables/ColumnPicker.d.ts.map +1 -0
- package/dist/components/tables/Pagination.d.ts +8 -0
- package/dist/components/tables/Pagination.d.ts.map +1 -0
- package/dist/components/tables/ResourceTable.d.ts +56 -0
- package/dist/components/tables/ResourceTable.d.ts.map +1 -0
- package/dist/components/tables/sortRows.d.ts +13 -0
- package/dist/components/tables/sortRows.d.ts.map +1 -0
- package/dist/components/ui/Alert.d.ts +11 -0
- package/dist/components/ui/Alert.d.ts.map +1 -0
- package/dist/components/ui/AuthCard.d.ts +11 -0
- package/dist/components/ui/AuthCard.d.ts.map +1 -0
- package/dist/components/ui/AuthorByline.d.ts +57 -0
- package/dist/components/ui/AuthorByline.d.ts.map +1 -0
- package/dist/components/ui/Avatar.d.ts +8 -0
- package/dist/components/ui/Avatar.d.ts.map +1 -0
- package/dist/components/ui/Badge.d.ts +10 -0
- package/dist/components/ui/Badge.d.ts.map +1 -0
- package/dist/components/ui/Button.d.ts +63 -0
- package/dist/components/ui/Button.d.ts.map +1 -0
- package/dist/components/ui/CalendarGrid.d.ts +23 -0
- package/dist/components/ui/CalendarGrid.d.ts.map +1 -0
- package/dist/components/ui/Card.d.ts +9 -0
- package/dist/components/ui/Card.d.ts.map +1 -0
- package/dist/components/ui/Checkbox.d.ts +10 -0
- package/dist/components/ui/Checkbox.d.ts.map +1 -0
- package/dist/components/ui/Combobox.d.ts +15 -0
- package/dist/components/ui/Combobox.d.ts.map +1 -0
- package/dist/components/ui/DangerZone.d.ts +40 -0
- package/dist/components/ui/DangerZone.d.ts.map +1 -0
- package/dist/components/ui/DatePicker.d.ts +11 -0
- package/dist/components/ui/DatePicker.d.ts.map +1 -0
- package/dist/components/ui/DateRangePicker.d.ts +13 -0
- package/dist/components/ui/DateRangePicker.d.ts.map +1 -0
- package/dist/components/ui/DateTimePicker.d.ts +9 -0
- package/dist/components/ui/DateTimePicker.d.ts.map +1 -0
- package/dist/components/ui/DetailPanel.d.ts +19 -0
- package/dist/components/ui/DetailPanel.d.ts.map +1 -0
- package/dist/components/ui/Dialog.d.ts +28 -0
- package/dist/components/ui/Dialog.d.ts.map +1 -0
- package/dist/components/ui/DialogActions.d.ts +52 -0
- package/dist/components/ui/DialogActions.d.ts.map +1 -0
- package/dist/components/ui/DividerLabel.d.ts +7 -0
- package/dist/components/ui/DividerLabel.d.ts.map +1 -0
- package/dist/components/ui/DropdownMenu.d.ts +27 -0
- package/dist/components/ui/DropdownMenu.d.ts.map +1 -0
- package/dist/components/ui/EmptyState.d.ts +11 -0
- package/dist/components/ui/EmptyState.d.ts.map +1 -0
- package/dist/components/ui/ErrorBoundary.d.ts +16 -0
- package/dist/components/ui/ErrorBoundary.d.ts.map +1 -0
- package/dist/components/ui/FilterButton.d.ts +47 -0
- package/dist/components/ui/FilterButton.d.ts.map +1 -0
- package/dist/components/ui/FilterDropdown.d.ts +50 -0
- package/dist/components/ui/FilterDropdown.d.ts.map +1 -0
- package/dist/components/ui/Kbd.d.ts +7 -0
- package/dist/components/ui/Kbd.d.ts.map +1 -0
- package/dist/components/ui/LoadingSpinner.d.ts +7 -0
- package/dist/components/ui/LoadingSpinner.d.ts.map +1 -0
- package/dist/components/ui/MetadataGrid.d.ts +45 -0
- package/dist/components/ui/MetadataGrid.d.ts.map +1 -0
- package/dist/components/ui/MetricCard.d.ts +12 -0
- package/dist/components/ui/MetricCard.d.ts.map +1 -0
- package/dist/components/ui/OAuthButton.d.ts +8 -0
- package/dist/components/ui/OAuthButton.d.ts.map +1 -0
- package/dist/components/ui/PageHeader.d.ts +44 -0
- package/dist/components/ui/PageHeader.d.ts.map +1 -0
- package/dist/components/ui/PageSection.d.ts +13 -0
- package/dist/components/ui/PageSection.d.ts.map +1 -0
- package/dist/components/ui/PaginationBar.d.ts +58 -0
- package/dist/components/ui/PaginationBar.d.ts.map +1 -0
- package/dist/components/ui/PasswordInput.d.ts +8 -0
- package/dist/components/ui/PasswordInput.d.ts.map +1 -0
- package/dist/components/ui/ProfileHeader.d.ts +54 -0
- package/dist/components/ui/ProfileHeader.d.ts.map +1 -0
- package/dist/components/ui/ProseContent.d.ts +7 -0
- package/dist/components/ui/ProseContent.d.ts.map +1 -0
- package/dist/components/ui/RadioPill.d.ts +14 -0
- package/dist/components/ui/RadioPill.d.ts.map +1 -0
- package/dist/components/ui/SearchInput.d.ts +8 -0
- package/dist/components/ui/SearchInput.d.ts.map +1 -0
- package/dist/components/ui/SectionHeader.d.ts +35 -0
- package/dist/components/ui/SectionHeader.d.ts.map +1 -0
- package/dist/components/ui/Select.d.ts +12 -0
- package/dist/components/ui/Select.d.ts.map +1 -0
- package/dist/components/ui/SelectDropdown.d.ts +16 -0
- package/dist/components/ui/SelectDropdown.d.ts.map +1 -0
- package/dist/components/ui/SettingRow.d.ts +42 -0
- package/dist/components/ui/SettingRow.d.ts.map +1 -0
- package/dist/components/ui/SideSheet.d.ts +14 -0
- package/dist/components/ui/SideSheet.d.ts.map +1 -0
- package/dist/components/ui/Slider.d.ts +14 -0
- package/dist/components/ui/Slider.d.ts.map +1 -0
- package/dist/components/ui/SplitPaneLayout.d.ts +73 -0
- package/dist/components/ui/SplitPaneLayout.d.ts.map +1 -0
- package/dist/components/ui/StatusDot.d.ts +9 -0
- package/dist/components/ui/StatusDot.d.ts.map +1 -0
- package/dist/components/ui/StepProgress.d.ts +11 -0
- package/dist/components/ui/StepProgress.d.ts.map +1 -0
- package/dist/components/ui/Tabs.d.ts +18 -0
- package/dist/components/ui/Tabs.d.ts.map +1 -0
- package/dist/components/ui/TextInput.d.ts +13 -0
- package/dist/components/ui/TextInput.d.ts.map +1 -0
- package/dist/components/ui/Textarea.d.ts +9 -0
- package/dist/components/ui/Textarea.d.ts.map +1 -0
- package/dist/components/ui/ThemePreview.d.ts +14 -0
- package/dist/components/ui/ThemePreview.d.ts.map +1 -0
- package/dist/components/ui/Timeline.d.ts +39 -0
- package/dist/components/ui/Timeline.d.ts.map +1 -0
- package/dist/components/ui/Toast.d.ts +21 -0
- package/dist/components/ui/Toast.d.ts.map +1 -0
- package/dist/components/ui/Toggle.d.ts +9 -0
- package/dist/components/ui/Toggle.d.ts.map +1 -0
- package/dist/components/ui/Toolbar.d.ts +11 -0
- package/dist/components/ui/Toolbar.d.ts.map +1 -0
- package/dist/components/ui/Tooltip.d.ts +10 -0
- package/dist/components/ui/Tooltip.d.ts.map +1 -0
- package/dist/components/ui/UploadDropzone.d.ts +13 -0
- package/dist/components/ui/UploadDropzone.d.ts.map +1 -0
- package/dist/config/theme.d.ts +43 -0
- package/dist/config/theme.d.ts.map +1 -0
- package/dist/hooks/useApplyTheme.d.ts +7 -0
- package/dist/hooks/useApplyTheme.d.ts.map +1 -0
- package/dist/hooks/useDismiss.d.ts +8 -0
- package/dist/hooks/useDismiss.d.ts.map +1 -0
- package/dist/hooks/useDropUp.d.ts +7 -0
- package/dist/hooks/useDropUp.d.ts.map +1 -0
- package/dist/hooks/useFocusTrap.d.ts +7 -0
- package/dist/hooks/useFocusTrap.d.ts.map +1 -0
- package/dist/hooks/useSettings.d.ts +8 -0
- package/dist/hooks/useSettings.d.ts.map +1 -0
- package/dist/hooks/useTheme.d.ts +6 -0
- package/dist/hooks/useTheme.d.ts.map +1 -0
- package/dist/index.d.ts +91 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4622 -0
- package/dist/lib/cn.d.ts +3 -0
- package/dist/lib/cn.d.ts.map +1 -0
- package/dist/lib/formatDate.d.ts +28 -0
- package/dist/lib/formatDate.d.ts.map +1 -0
- package/dist/providers/SettingsContext.d.ts +60 -0
- package/dist/providers/SettingsContext.d.ts.map +1 -0
- package/dist/providers/SettingsProvider.d.ts +7 -0
- package/dist/providers/SettingsProvider.d.ts.map +1 -0
- package/dist/providers/ThemeContext.d.ts +8 -0
- package/dist/providers/ThemeContext.d.ts.map +1 -0
- package/dist/providers/ThemeProvider.d.ts +5 -0
- package/dist/providers/ThemeProvider.d.ts.map +1 -0
- package/dist/styles.css +923 -0
- package/package.json +63 -0
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AuthorByline — avatar + author name + metadata (date, read time, etc.).
|
|
3
|
+
*
|
|
4
|
+
* A compact author attribution row used in blog posts and content pages.
|
|
5
|
+
* Displays the author's avatar alongside their name and an optional
|
|
6
|
+
* secondary line of metadata (typically a date and read time).
|
|
7
|
+
*
|
|
8
|
+
* Two sizes are available:
|
|
9
|
+
* - `"sm"` (default) — 10px text, used in blog cards and compact contexts
|
|
10
|
+
* - `"md"` — 12px name / 10px meta, used in article pages and content sections
|
|
11
|
+
*
|
|
12
|
+
* @example Blog card (compact)
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <AuthorByline
|
|
15
|
+
* name="Alex Chen"
|
|
16
|
+
* meta="Apr 5, 2026 · 4 min read"
|
|
17
|
+
* />
|
|
18
|
+
* ```
|
|
19
|
+
*
|
|
20
|
+
* @example Article page (larger)
|
|
21
|
+
* ```tsx
|
|
22
|
+
* <AuthorByline
|
|
23
|
+
* size="md"
|
|
24
|
+
* name="Alex Chen"
|
|
25
|
+
* meta="Apr 5, 2026 · 4 min read"
|
|
26
|
+
* nameAppend={
|
|
27
|
+
* <span className="text-text-tertiary font-normal"> · Staff Engineer</span>
|
|
28
|
+
* }
|
|
29
|
+
* />
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import type { ReactNode } from "react";
|
|
33
|
+
interface AuthorBylineProps {
|
|
34
|
+
/** Author display name. */
|
|
35
|
+
name: string;
|
|
36
|
+
/**
|
|
37
|
+
* Secondary metadata string displayed below the name.
|
|
38
|
+
* Typically "Apr 5, 2026 · 4 min read".
|
|
39
|
+
*/
|
|
40
|
+
meta?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Optional content appended after the name on the same line.
|
|
43
|
+
* Useful for displaying a role or badge inline with the name.
|
|
44
|
+
*/
|
|
45
|
+
nameAppend?: ReactNode;
|
|
46
|
+
/**
|
|
47
|
+
* Text size variant.
|
|
48
|
+
* - "sm" (default): text-2xs for both name and meta — used in cards
|
|
49
|
+
* - "md": text-xs name / text-2xs meta — used in article and content pages
|
|
50
|
+
*/
|
|
51
|
+
size?: "sm" | "md";
|
|
52
|
+
/** Additional utility classes for the root container. */
|
|
53
|
+
className?: string;
|
|
54
|
+
}
|
|
55
|
+
export declare function AuthorByline({ name, meta, nameAppend, size, className, }: AuthorBylineProps): import("react/jsx-runtime").JSX.Element;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=AuthorByline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AuthorByline.d.ts","sourceRoot":"","sources":["../../../src/components/ui/AuthorByline.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKvC,UAAU,iBAAiB;IACzB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;;OAIG;IACH,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,IAAI,EACJ,UAAU,EACV,IAAW,EACX,SAAS,GACV,EAAE,iBAAiB,2CAoBnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface AvatarProps {
|
|
2
|
+
name: string;
|
|
3
|
+
src?: string;
|
|
4
|
+
size?: "xs" | "sm" | "md" | "lg";
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function Avatar({ name, src, size, className }: AvatarProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=Avatar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Avatar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Avatar.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA0BD,wBAAgB,MAAM,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,IAAW,EAAE,SAAS,EAAE,EAAE,WAAW,2CAsBxE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type BadgeColor = "green" | "yellow" | "red" | "blue" | "purple" | "gray";
|
|
2
|
+
interface BadgeProps {
|
|
3
|
+
color?: BadgeColor;
|
|
4
|
+
dot?: boolean;
|
|
5
|
+
children: React.ReactNode;
|
|
6
|
+
className?: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function Badge({ color, dot, children, className, }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
export {};
|
|
10
|
+
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Badge.tsx"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAClB,OAAO,GACP,QAAQ,GACR,KAAK,GACL,MAAM,GACN,QAAQ,GACR,MAAM,CAAC;AAEX,UAAU,UAAU;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAoBD,wBAAgB,KAAK,CAAC,EACpB,KAAc,EACd,GAAG,EACH,QAAQ,EACR,SAAS,GACV,EAAE,UAAU,2CAiBZ"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Button — the primary interactive element across the template.
|
|
3
|
+
*
|
|
4
|
+
* Supports five visual variants, three sizes, loading states, and
|
|
5
|
+
* responsive icon+label patterns via the `icon` prop.
|
|
6
|
+
*
|
|
7
|
+
* ## Responsive icon+label pattern
|
|
8
|
+
*
|
|
9
|
+
* Many toolbar buttons show an icon on all screens but only reveal the
|
|
10
|
+
* text label on larger breakpoints. Instead of manually wrapping children
|
|
11
|
+
* in `<span className="hidden sm:inline">`, use the `icon` prop:
|
|
12
|
+
*
|
|
13
|
+
* ```tsx
|
|
14
|
+
* // Icon always visible, label hidden below `sm` (640px)
|
|
15
|
+
* <Button icon={Trash2} hideLabel>Delete</Button>
|
|
16
|
+
*
|
|
17
|
+
* // Icon always visible, label hidden below `lg` (1024px)
|
|
18
|
+
* <Button icon={MailOpen} hideLabel="lg">Read</Button>
|
|
19
|
+
*
|
|
20
|
+
* // Icon always visible, label always visible (no hiding)
|
|
21
|
+
* <Button icon={Plus}>New Item</Button>
|
|
22
|
+
* ```
|
|
23
|
+
*
|
|
24
|
+
* This replaces the old pattern of:
|
|
25
|
+
* ```tsx
|
|
26
|
+
* <Button>
|
|
27
|
+
* <Trash2 className="h-3.5 w-3.5" />
|
|
28
|
+
* <span className="hidden sm:inline">Delete</span>
|
|
29
|
+
* </Button>
|
|
30
|
+
* ```
|
|
31
|
+
*
|
|
32
|
+
* When `hideLabel` is set and the label is hidden, the button's horizontal
|
|
33
|
+
* padding automatically shrinks on small screens so it doesn't look
|
|
34
|
+
* unbalanced as an icon-only button.
|
|
35
|
+
*/
|
|
36
|
+
import { type ButtonHTMLAttributes, type ElementType, type ReactNode } from "react";
|
|
37
|
+
type Variant = "primary" | "secondary" | "danger" | "ghost" | "icon";
|
|
38
|
+
type Size = "sm" | "md" | "lg";
|
|
39
|
+
export interface ButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
40
|
+
variant?: Variant;
|
|
41
|
+
size?: Size;
|
|
42
|
+
loading?: boolean;
|
|
43
|
+
/**
|
|
44
|
+
* Optional Lucide icon component rendered before children.
|
|
45
|
+
* Pass the component itself (e.g. `Trash2`), not JSX.
|
|
46
|
+
* The icon is always visible regardless of `hideLabel`.
|
|
47
|
+
*/
|
|
48
|
+
icon?: ElementType;
|
|
49
|
+
/**
|
|
50
|
+
* When set, hides the label text below the given breakpoint.
|
|
51
|
+
* - `true` or `"sm"` — label hidden below 640px (most common)
|
|
52
|
+
* - `"md"` — label hidden below 768px
|
|
53
|
+
* - `"lg"` — label hidden below 1024px
|
|
54
|
+
*
|
|
55
|
+
* Only meaningful when both `icon` and `children` are provided.
|
|
56
|
+
* On small screens the button renders as icon-only with tighter padding.
|
|
57
|
+
*/
|
|
58
|
+
hideLabel?: boolean | "sm" | "md" | "lg";
|
|
59
|
+
children?: ReactNode;
|
|
60
|
+
}
|
|
61
|
+
export declare const Button: import("react").ForwardRefExoticComponent<ButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
62
|
+
export {};
|
|
63
|
+
//# sourceMappingURL=Button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Button.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Button.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAEH,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,WAAW,EAChB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,KAAK,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;AACrE,KAAK,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE/B,MAAM,WAAW,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC1E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,IAAI,CAAC;IACZ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AA8CD,eAAO,MAAM,MAAM,2GAyDlB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
interface CalendarGridProps {
|
|
2
|
+
/** Currently displayed month (year, month). */
|
|
3
|
+
year: number;
|
|
4
|
+
month: number;
|
|
5
|
+
/** The single selected date (for single pickers). */
|
|
6
|
+
selected?: Date | null;
|
|
7
|
+
/** Start of a selected range. */
|
|
8
|
+
rangeStart?: Date | null;
|
|
9
|
+
/** End of a selected range. */
|
|
10
|
+
rangeEnd?: Date | null;
|
|
11
|
+
/** Date currently being hovered during range selection. */
|
|
12
|
+
hoverDate?: Date | null;
|
|
13
|
+
onSelect: (date: Date) => void;
|
|
14
|
+
onMonthChange: (year: number, month: number) => void;
|
|
15
|
+
onHover?: (date: Date | null) => void;
|
|
16
|
+
/** Minimum selectable date. */
|
|
17
|
+
minDate?: Date;
|
|
18
|
+
/** Maximum selectable date. */
|
|
19
|
+
maxDate?: Date;
|
|
20
|
+
}
|
|
21
|
+
export declare function CalendarGrid({ year, month, selected, rangeStart, rangeEnd, hoverDate, onSelect, onMonthChange, onHover, minDate, maxDate, }: CalendarGridProps): import("react/jsx-runtime").JSX.Element;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=CalendarGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CalendarGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ui/CalendarGrid.tsx"],"names":[],"mappings":"AAsBA,UAAU,iBAAiB;IACzB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,qDAAqD;IACrD,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,iCAAiC;IACjC,UAAU,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACzB,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,2DAA2D;IAC3D,SAAS,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACxB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,IAAI,CAAC;IAC/B,aAAa,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACrD,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,+BAA+B;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,+BAA+B;IAC/B,OAAO,CAAC,EAAE,IAAI,CAAC;CAChB;AA2BD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,UAAU,EACV,QAAQ,EACR,SAAS,EACT,QAAQ,EACR,aAAa,EACb,OAAO,EACP,OAAO,EACP,OAAO,GACR,EAAE,iBAAiB,2CA8KnB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface CardProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
header?: ReactNode;
|
|
6
|
+
footer?: ReactNode;
|
|
7
|
+
}
|
|
8
|
+
export declare function Card({ children, className, header, footer }: CardProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,MAAM,CAAC,EAAE,SAAS,CAAC;CACpB;AAED,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE,SAAS,2CAmBtE"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface CheckboxProps {
|
|
2
|
+
checked: boolean;
|
|
3
|
+
indeterminate?: boolean;
|
|
4
|
+
onChange: (checked: boolean) => void;
|
|
5
|
+
label?: string;
|
|
6
|
+
disabled?: boolean;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Checkbox({ checked, indeterminate, onChange, label, disabled, className, }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Checkbox.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,aAAa,EACb,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAS,GACV,EAAE,aAAa,2CAgCf"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
interface ComboboxOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
interface ComboboxProps {
|
|
6
|
+
options: ComboboxOption[];
|
|
7
|
+
value: string;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
label?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function Combobox({ options, value, onChange, placeholder, label, className, }: ComboboxProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=Combobox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Combobox.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Combobox.tsx"],"names":[],"mappings":"AAOA,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,aAAa;IACrB,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,WAAyB,EACzB,KAAK,EACL,SAAS,GACV,EAAE,aAAa,2CA4Jf"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DangerZone — a red-highlighted section for destructive actions.
|
|
3
|
+
*
|
|
4
|
+
* Used at the bottom of settings pages to visually separate destructive
|
|
5
|
+
* operations (like account deletion) from regular settings. The red heading
|
|
6
|
+
* and top border create a clear visual warning.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <DangerZone
|
|
11
|
+
* title="Danger Zone"
|
|
12
|
+
* description="Once you delete your account, there is no going back."
|
|
13
|
+
* >
|
|
14
|
+
* <Button variant="danger" onClick={() => setDeleteOpen(true)}>
|
|
15
|
+
* Delete Account
|
|
16
|
+
* </Button>
|
|
17
|
+
* </DangerZone>
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
import type { ReactNode } from "react";
|
|
21
|
+
interface DangerZoneProps {
|
|
22
|
+
/**
|
|
23
|
+
* Section heading.
|
|
24
|
+
* Defaults to "Danger Zone" — the universal convention for destructive
|
|
25
|
+
* action sections in settings UIs.
|
|
26
|
+
*/
|
|
27
|
+
title?: string;
|
|
28
|
+
/** Warning text displayed below the heading. */
|
|
29
|
+
description?: string;
|
|
30
|
+
/**
|
|
31
|
+
* The destructive action control(s) — typically a danger Button
|
|
32
|
+
* that opens a confirmation dialog.
|
|
33
|
+
*/
|
|
34
|
+
children: ReactNode;
|
|
35
|
+
/** Additional utility classes for the root container. */
|
|
36
|
+
className?: string;
|
|
37
|
+
}
|
|
38
|
+
export declare function DangerZone({ title, description, children, className, }: DangerZoneProps): import("react/jsx-runtime").JSX.Element;
|
|
39
|
+
export {};
|
|
40
|
+
//# sourceMappingURL=DangerZone.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DangerZone.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DangerZone.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,eAAe;IACvB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,QAAQ,EAAE,SAAS,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAqB,EACrB,WAAW,EACX,QAAQ,EACR,SAAS,GACV,EAAE,eAAe,2CAUjB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
interface DatePickerProps {
|
|
2
|
+
label?: string;
|
|
3
|
+
value: Date | null;
|
|
4
|
+
onChange: (date: Date | null) => void;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
/** Format function for display. Defaults to "MMM D, YYYY". */
|
|
7
|
+
format?: (date: Date) => string;
|
|
8
|
+
}
|
|
9
|
+
export declare function DatePicker({ label, value, onChange, placeholder, format, }: DatePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=DatePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DatePicker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DatePicker.tsx"],"names":[],"mappings":"AASA,UAAU,eAAe;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,8DAA8D;IAC9D,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,MAAM,CAAC;CACjC;AAoBD,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAA8B,EAC9B,MAAsB,GACvB,EAAE,eAAe,2CAkFjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface DateRange {
|
|
2
|
+
start: Date | null;
|
|
3
|
+
end: Date | null;
|
|
4
|
+
}
|
|
5
|
+
interface DateRangePickerProps {
|
|
6
|
+
label?: string;
|
|
7
|
+
value: DateRange;
|
|
8
|
+
onChange: (range: DateRange) => void;
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function DateRangePicker({ label, value, onChange, placeholder, }: DateRangePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=DateRangePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateRangePicker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DateRangePicker.tsx"],"names":[],"mappings":"AASA,MAAM,WAAW,SAAS;IACxB,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;CAClB;AAED,UAAU,oBAAoB;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,CAAC,KAAK,EAAE,SAAS,KAAK,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA6BD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAoC,GACrC,EAAE,oBAAoB,2CAqLtB"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
interface DateTimePickerProps {
|
|
2
|
+
label?: string;
|
|
3
|
+
value: Date | null;
|
|
4
|
+
onChange: (date: Date | null) => void;
|
|
5
|
+
placeholder?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function DateTimePicker({ label, value, onChange, placeholder, }: DateTimePickerProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=DateTimePicker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateTimePicker.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DateTimePicker.tsx"],"names":[],"mappings":"AASA,UAAU,mBAAmB;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC;IACtC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AA8CD,wBAAgB,cAAc,CAAC,EAC7B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAqC,GACtC,EAAE,mBAAmB,2CA6MrB"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
interface DetailPanelProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title: string;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
/** Allow horizontal resize via drag handle. Default true. */
|
|
9
|
+
resizable?: boolean;
|
|
10
|
+
/** Default width in px when the panel opens. */
|
|
11
|
+
defaultWidth?: number;
|
|
12
|
+
/** Minimum width in px during resize. */
|
|
13
|
+
minWidth?: number;
|
|
14
|
+
/** Maximum width in px during resize. */
|
|
15
|
+
maxWidth?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare function DetailPanel({ open, onClose, title, children, className, resizable, defaultWidth, minWidth, maxWidth, }: DetailPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=DetailPanel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DetailPanel.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DetailPanel.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAMf,UAAU,gBAAgB;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gDAAgD;IAChD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAMD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,SAAS,EACT,SAAgB,EAChB,YAA4B,EAC5B,QAAoB,EACpB,QAAoB,GACrB,EAAE,gBAAgB,2CAqFlB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface DialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title?: string;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
/**
|
|
8
|
+
* Optional footer rendered below the children.
|
|
9
|
+
* Typically used with `<DialogActions>` for Cancel + Confirm buttons,
|
|
10
|
+
* but can be any ReactNode.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* <Dialog
|
|
15
|
+
* open={open}
|
|
16
|
+
* onClose={close}
|
|
17
|
+
* title="Confirm"
|
|
18
|
+
* footer={<DialogActions onCancel={close} onConfirm={handle} />}
|
|
19
|
+
* >
|
|
20
|
+
* <p>Are you sure?</p>
|
|
21
|
+
* </Dialog>
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
footer?: ReactNode;
|
|
25
|
+
className?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function Dialog({ open, onClose, title, children, footer, className, }: DialogProps): import("react").ReactPortal | null;
|
|
28
|
+
//# sourceMappingURL=Dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Dialog.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Dialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA4B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQjE,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACN,SAAS,GACV,EAAE,WAAW,sCA2Db"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DialogActions — a right-aligned button footer for dialogs.
|
|
3
|
+
*
|
|
4
|
+
* Provides a consistent Cancel + Confirm button layout used inside
|
|
5
|
+
* `<Dialog>` components. The confirm button supports all `Button` variants
|
|
6
|
+
* so it can be used for destructive confirmations (variant="danger") or
|
|
7
|
+
* standard confirmations (variant="primary").
|
|
8
|
+
*
|
|
9
|
+
* @example Standard confirmation
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <Dialog open={open} onClose={() => setOpen(false)} title="Confirm">
|
|
12
|
+
* <p>Are you sure?</p>
|
|
13
|
+
* <DialogActions
|
|
14
|
+
* onCancel={() => setOpen(false)}
|
|
15
|
+
* onConfirm={handleConfirm}
|
|
16
|
+
* confirmLabel="Confirm"
|
|
17
|
+
* />
|
|
18
|
+
* </Dialog>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example Destructive action
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <DialogActions
|
|
24
|
+
* onCancel={() => setOpen(false)}
|
|
25
|
+
* onConfirm={handleDelete}
|
|
26
|
+
* confirmLabel="Delete Account"
|
|
27
|
+
* confirmVariant="danger"
|
|
28
|
+
* />
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
import { type ButtonProps } from "./Button";
|
|
32
|
+
interface DialogActionsProps {
|
|
33
|
+
/** Called when the Cancel button is clicked. */
|
|
34
|
+
onCancel: () => void;
|
|
35
|
+
/** Called when the Confirm button is clicked. */
|
|
36
|
+
onConfirm: () => void;
|
|
37
|
+
/** Label for the cancel button. Defaults to "Cancel". */
|
|
38
|
+
cancelLabel?: string;
|
|
39
|
+
/** Label for the confirm button. Defaults to "Confirm". */
|
|
40
|
+
confirmLabel?: string;
|
|
41
|
+
/**
|
|
42
|
+
* Visual variant for the confirm button.
|
|
43
|
+
* Use "danger" for destructive actions like deleting an account.
|
|
44
|
+
* Defaults to "primary".
|
|
45
|
+
*/
|
|
46
|
+
confirmVariant?: ButtonProps["variant"];
|
|
47
|
+
/** Additional utility classes for the root container. */
|
|
48
|
+
className?: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function DialogActions({ onCancel, onConfirm, cancelLabel, confirmLabel, confirmVariant, className, }: DialogActionsProps): import("react/jsx-runtime").JSX.Element;
|
|
51
|
+
export {};
|
|
52
|
+
//# sourceMappingURL=DialogActions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DialogActions.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DialogActions.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAGH,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAEpD,UAAU,kBAAkB;IAC1B,gDAAgD;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,iDAAiD;IACjD,SAAS,EAAE,MAAM,IAAI,CAAC;IACtB,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;OAIG;IACH,cAAc,CAAC,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC;IACxC,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,SAAS,EACT,WAAsB,EACtB,YAAwB,EACxB,cAA0B,EAC1B,SAAS,GACV,EAAE,kBAAkB,2CAWpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface DividerLabelProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function DividerLabel({ children, className }: DividerLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=DividerLabel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DividerLabel.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DividerLabel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,iBAAiB,2CAatE"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
interface DropdownContentItem {
|
|
3
|
+
label: string;
|
|
4
|
+
icon?: ReactNode;
|
|
5
|
+
shortcut?: string;
|
|
6
|
+
checked?: boolean;
|
|
7
|
+
onClick: () => void;
|
|
8
|
+
danger?: boolean;
|
|
9
|
+
divider?: false;
|
|
10
|
+
}
|
|
11
|
+
interface DropdownDivider {
|
|
12
|
+
divider: true;
|
|
13
|
+
}
|
|
14
|
+
export type DropdownItem = DropdownContentItem | DropdownDivider;
|
|
15
|
+
interface DropdownMenuProps {
|
|
16
|
+
trigger: ReactNode;
|
|
17
|
+
items: DropdownItem[];
|
|
18
|
+
align?: "left" | "right";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Menu whose panel portals to document.body. Position is captured from the
|
|
22
|
+
* trigger rect at open time and not recomputed, so it does not reposition on
|
|
23
|
+
* scroll/resize while open.
|
|
24
|
+
*/
|
|
25
|
+
export declare function DropdownMenu({ trigger, items, align, }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=DropdownMenu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/ui/DropdownMenu.tsx"],"names":[],"mappings":"AAAA,OAAO,EAML,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAQf,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,KAAK,CAAC;CACjB;AAED,UAAU,eAAe;IACvB,OAAO,EAAE,IAAI,CAAC;CACf;AAED,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAAG,eAAe,CAAC;AAEjE,UAAU,iBAAiB;IACzB,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,KAAe,GAChB,EAAE,iBAAiB,2CAsInB"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
interface EmptyStateProps {
|
|
3
|
+
icon?: ReactNode;
|
|
4
|
+
title: string;
|
|
5
|
+
description?: string;
|
|
6
|
+
action?: ReactNode;
|
|
7
|
+
className?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function EmptyState({ icon, title, description, action, className, }: EmptyStateProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=EmptyState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/components/ui/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMvC,UAAU,eAAe;IACvB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,eAAe,2CAoBjB"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { Component, type ErrorInfo, type ReactNode } from "react";
|
|
2
|
+
interface Props {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
}
|
|
5
|
+
interface State {
|
|
6
|
+
hasError: boolean;
|
|
7
|
+
error: Error | null;
|
|
8
|
+
}
|
|
9
|
+
export declare class ErrorBoundary extends Component<Props, State> {
|
|
10
|
+
state: State;
|
|
11
|
+
static getDerivedStateFromError(error: Error): State;
|
|
12
|
+
componentDidCatch(error: Error, info: ErrorInfo): void;
|
|
13
|
+
render(): string | number | bigint | boolean | import("react/jsx-runtime").JSX.Element | Iterable<ReactNode> | Promise<string | number | bigint | boolean | import("react").ReactPortal | import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>> | Iterable<ReactNode> | null | undefined> | null | undefined;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=ErrorBoundary.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ErrorBoundary.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ErrorBoundary.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIlE,UAAU,KAAK;IACb,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,UAAU,KAAK;IACb,QAAQ,EAAE,OAAO,CAAC;IAClB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED,qBAAa,aAAc,SAAQ,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC;IACxD,KAAK,EAAE,KAAK,CAAoC;IAEhD,MAAM,CAAC,wBAAwB,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK;IAIpD,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS;IAQ/C,MAAM;CAwBP"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FilterButton — a compact toolbar trigger button for dropdown filters.
|
|
3
|
+
*
|
|
4
|
+
* This is visually distinct from `<Button>` — it uses a secondary background
|
|
5
|
+
* with a subtle border, designed to sit in toolbars as the trigger element
|
|
6
|
+
* for `<DropdownMenu>`. The label text hides on small screens, leaving just
|
|
7
|
+
* the icon for a compact mobile experience.
|
|
8
|
+
*
|
|
9
|
+
* @example As a DropdownMenu trigger
|
|
10
|
+
* ```tsx
|
|
11
|
+
* <DropdownMenu
|
|
12
|
+
* trigger={
|
|
13
|
+
* <FilterButton icon={Filter}>
|
|
14
|
+
* Role{roleFilter !== "All" ? `: ${roleFilter}` : ""}
|
|
15
|
+
* </FilterButton>
|
|
16
|
+
* }
|
|
17
|
+
* items={...}
|
|
18
|
+
* />
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example Fixed width (prevents reflow when label changes)
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <FilterButton icon={LayoutGrid} className="w-[110px]">
|
|
24
|
+
* Cards
|
|
25
|
+
* </FilterButton>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import { type ElementType, type ReactNode } from "react";
|
|
29
|
+
interface FilterButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
|
|
30
|
+
/**
|
|
31
|
+
* A Lucide icon component rendered at 14px (h-3.5 w-3.5).
|
|
32
|
+
* Pass the component itself, not a JSX element.
|
|
33
|
+
*/
|
|
34
|
+
icon: ElementType;
|
|
35
|
+
/**
|
|
36
|
+
* Label text — hidden on small screens (`sm:inline`) so the button
|
|
37
|
+
* degrades gracefully to an icon-only state on mobile.
|
|
38
|
+
*/
|
|
39
|
+
children?: ReactNode;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Uses `forwardRef` so the button works correctly as a `<DropdownMenu>`
|
|
43
|
+
* trigger, which may need to attach a ref for positioning.
|
|
44
|
+
*/
|
|
45
|
+
export declare const FilterButton: import("react").ForwardRefExoticComponent<FilterButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
46
|
+
export {};
|
|
47
|
+
//# sourceMappingURL=FilterButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterButton.d.ts","sourceRoot":"","sources":["../../../src/components/ui/FilterButton.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAc,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIrE,UAAU,iBAAkB,SAAQ,KAAK,CAAC,oBAAoB,CAAC,iBAAiB,CAAC;IAC/E;;;OAGG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED;;;GAGG;AACH,eAAO,MAAM,YAAY,iHAyBxB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* FilterDropdown — a convenience wrapper combining FilterButton + DropdownMenu.
|
|
3
|
+
*
|
|
4
|
+
* Since FilterButton is almost always used as the trigger for a DropdownMenu,
|
|
5
|
+
* this component merges both into a single API, reducing ~5 lines per usage.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* ```tsx
|
|
9
|
+
* <FilterDropdown
|
|
10
|
+
* icon={Filter}
|
|
11
|
+
* items={roleOptions.map((r) => ({
|
|
12
|
+
* label: r,
|
|
13
|
+
* checked: roleFilter === r,
|
|
14
|
+
* onClick: () => setRoleFilter(r),
|
|
15
|
+
* }))}
|
|
16
|
+
* >
|
|
17
|
+
* Role{roleFilter !== "All" ? `: ${roleFilter}` : ""}
|
|
18
|
+
* </FilterDropdown>
|
|
19
|
+
* ```
|
|
20
|
+
*
|
|
21
|
+
* @example With alignment
|
|
22
|
+
* ```tsx
|
|
23
|
+
* <FilterDropdown icon={LayoutGrid} align="right" className="w-[110px]" items={items}>
|
|
24
|
+
* Cards
|
|
25
|
+
* </FilterDropdown>
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
import type { ComponentProps, ElementType, ReactNode } from "react";
|
|
29
|
+
import { DropdownMenu } from "./DropdownMenu";
|
|
30
|
+
interface FilterDropdownProps {
|
|
31
|
+
/**
|
|
32
|
+
* A Lucide icon component for the trigger button.
|
|
33
|
+
* Passed through to FilterButton.
|
|
34
|
+
*/
|
|
35
|
+
icon: ElementType;
|
|
36
|
+
/**
|
|
37
|
+
* Label text for the trigger — hidden on small screens.
|
|
38
|
+
* Passed as children to FilterButton.
|
|
39
|
+
*/
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
/** Dropdown menu items — same format as DropdownMenu `items`. */
|
|
42
|
+
items: ComponentProps<typeof DropdownMenu>["items"];
|
|
43
|
+
/** Dropdown alignment relative to the trigger. Defaults to DropdownMenu's default. */
|
|
44
|
+
align?: ComponentProps<typeof DropdownMenu>["align"];
|
|
45
|
+
/** Additional utility classes for the trigger button. */
|
|
46
|
+
className?: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function FilterDropdown({ icon, children, items, align, className, }: FilterDropdownProps): import("react/jsx-runtime").JSX.Element;
|
|
49
|
+
export {};
|
|
50
|
+
//# sourceMappingURL=FilterDropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/ui/FilterDropdown.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEpE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C,UAAU,mBAAmB;IAC3B;;;OAGG;IACH,IAAI,EAAE,WAAW,CAAC;IAClB;;;OAGG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,iEAAiE;IACjE,KAAK,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;IACpD,sFAAsF;IACtF,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,KAAK,EACL,SAAS,GACV,EAAE,mBAAmB,2CAYrB"}
|