@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 @@
|
|
|
1
|
+
{"version":3,"file":"Kbd.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Kbd.tsx"],"names":[],"mappings":"AAEA,UAAU,QAAQ;IAChB,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,GAAG,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,QAAQ,2CAYpD"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
interface LoadingSpinnerProps {
|
|
2
|
+
className?: string;
|
|
3
|
+
size?: "sm" | "md" | "lg";
|
|
4
|
+
}
|
|
5
|
+
export declare function LoadingSpinner({ className, size, }: LoadingSpinnerProps): import("react/jsx-runtime").JSX.Element;
|
|
6
|
+
export {};
|
|
7
|
+
//# sourceMappingURL=LoadingSpinner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LoadingSpinner.d.ts","sourceRoot":"","sources":["../../../src/components/ui/LoadingSpinner.tsx"],"names":[],"mappings":"AAIA,UAAU,mBAAmB;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;CAC3B;AAID,wBAAgB,cAAc,CAAC,EAC7B,SAAS,EACT,IAAW,GACZ,EAAE,mBAAmB,2CAWrB"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MetadataGrid — a two-column label/value grid for detail panels.
|
|
3
|
+
*
|
|
4
|
+
* Used in side panels and overlay sheets to display key-value metadata
|
|
5
|
+
* (e.g. Email, Status, Role). The label column has a fixed width and
|
|
6
|
+
* the value column stretches to fill the remaining space.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <MetadataGrid
|
|
11
|
+
* items={[
|
|
12
|
+
* { label: "Email", value: "alice@example.com" },
|
|
13
|
+
* { label: "Status", value: <StatusDot status="active" label="Active" /> },
|
|
14
|
+
* { label: "Role", value: <Badge color="purple">Admin</Badge> },
|
|
15
|
+
* ]}
|
|
16
|
+
* />
|
|
17
|
+
* ```
|
|
18
|
+
*
|
|
19
|
+
* @example Custom label width
|
|
20
|
+
* ```tsx
|
|
21
|
+
* <MetadataGrid labelWidth="120px" items={items} />
|
|
22
|
+
* ```
|
|
23
|
+
*/
|
|
24
|
+
import { type ReactNode } from "react";
|
|
25
|
+
interface MetadataItem {
|
|
26
|
+
/** The label displayed in the left column. */
|
|
27
|
+
label: string;
|
|
28
|
+
/** The value displayed in the right column — can be a string or JSX. */
|
|
29
|
+
value: ReactNode;
|
|
30
|
+
}
|
|
31
|
+
interface MetadataGridProps {
|
|
32
|
+
/** The list of label/value pairs to display. */
|
|
33
|
+
items: MetadataItem[];
|
|
34
|
+
/**
|
|
35
|
+
* Width of the label column.
|
|
36
|
+
* Defaults to "100px" — the most common width in the codebase.
|
|
37
|
+
* The overlay sheet panels use "80px" for tighter layouts.
|
|
38
|
+
*/
|
|
39
|
+
labelWidth?: string;
|
|
40
|
+
/** Additional utility classes for the root container. */
|
|
41
|
+
className?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare function MetadataGrid({ items, labelWidth, className, }: MetadataGridProps): import("react/jsx-runtime").JSX.Element;
|
|
44
|
+
export {};
|
|
45
|
+
//# sourceMappingURL=MetadataGrid.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetadataGrid.d.ts","sourceRoot":"","sources":["../../../src/components/ui/MetadataGrid.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIjD,UAAU,YAAY;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd,wEAAwE;IACxE,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,UAAU,iBAAiB;IACzB,gDAAgD;IAChD,KAAK,EAAE,YAAY,EAAE,CAAC;IACtB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,UAAoB,EACpB,SAAS,GACV,EAAE,iBAAiB,2CAuBnB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { ElementType } from "react";
|
|
2
|
+
export interface MetricCardProps {
|
|
3
|
+
label: string;
|
|
4
|
+
value: string | number;
|
|
5
|
+
sub?: string;
|
|
6
|
+
bar?: number;
|
|
7
|
+
icon?: ElementType;
|
|
8
|
+
iconColor?: string;
|
|
9
|
+
className?: string;
|
|
10
|
+
}
|
|
11
|
+
export declare function MetricCard({ label, value, sub, bar, icon: Icon, iconColor, className, }: MetricCardProps): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=MetricCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MetricCard.d.ts","sourceRoot":"","sources":["../../../src/components/ui/MetricCard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAIzC,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,KAAK,EACL,GAAG,EACH,GAAG,EACH,IAAI,EAAE,IAAI,EACV,SAAS,EACT,SAAS,GACV,EAAE,eAAe,2CAmCjB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { ButtonHTMLAttributes } from "react";
|
|
2
|
+
type OAuthProvider = "github" | "google";
|
|
3
|
+
export interface OAuthButtonProps extends ButtonHTMLAttributes<HTMLButtonElement> {
|
|
4
|
+
provider: OAuthProvider;
|
|
5
|
+
}
|
|
6
|
+
export declare function OAuthButton({ provider, children, ...props }: OAuthButtonProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=OAuthButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OAuthButton.d.ts","sourceRoot":"","sources":["../../../src/components/ui/OAuthButton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAiB,MAAM,OAAO,CAAC;AAIjE,KAAK,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEzC,MAAM,WAAW,gBAAiB,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IAC/E,QAAQ,EAAE,aAAa,CAAC;CACzB;AAgDD,wBAAgB,WAAW,CAAC,EAC1B,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CASlB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PageHeader — the top-of-page title bar used on every page.
|
|
3
|
+
*
|
|
4
|
+
* Renders a consistent h1 + optional subtitle + right-aligned actions.
|
|
5
|
+
* The layout uses flexbox so that actions naturally push to the right,
|
|
6
|
+
* and the title area takes up remaining space.
|
|
7
|
+
*
|
|
8
|
+
* @example Title only
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <PageHeader title="Forms" />
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @example Title + subtitle + action buttons
|
|
14
|
+
* ```tsx
|
|
15
|
+
* <PageHeader
|
|
16
|
+
* title="Dashboard"
|
|
17
|
+
* subtitle="Real-time overview"
|
|
18
|
+
* actions={
|
|
19
|
+
* <>
|
|
20
|
+
* <Button variant="secondary" size="sm">Export</Button>
|
|
21
|
+
* <Button variant="primary" size="sm">New</Button>
|
|
22
|
+
* </>
|
|
23
|
+
* }
|
|
24
|
+
* />
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
import type { ReactNode } from "react";
|
|
28
|
+
interface PageHeaderProps {
|
|
29
|
+
/** The page title rendered as an h1. */
|
|
30
|
+
title: string;
|
|
31
|
+
/** Optional subtitle displayed below the title in a smaller, muted style. */
|
|
32
|
+
subtitle?: string;
|
|
33
|
+
/**
|
|
34
|
+
* Action buttons or controls aligned to the right of the header.
|
|
35
|
+
* Wrap multiple buttons in a fragment — the component provides a
|
|
36
|
+
* flex container with `gap-2` for consistent spacing.
|
|
37
|
+
*/
|
|
38
|
+
actions?: ReactNode;
|
|
39
|
+
/** Additional utility classes appended to the root element. */
|
|
40
|
+
className?: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function PageHeader({ title, subtitle, actions, className, }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
43
|
+
export {};
|
|
44
|
+
//# sourceMappingURL=PageHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PageHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,eAAe;IACvB,wCAAwC;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;OAIG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,QAAQ,EACR,OAAO,EACP,SAAS,GACV,EAAE,eAAe,2CAgBjB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ElementType, ReactNode } from "react";
|
|
2
|
+
export interface PageSectionProps {
|
|
3
|
+
title?: ReactNode;
|
|
4
|
+
description?: ReactNode;
|
|
5
|
+
actions?: ReactNode;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
as?: ElementType;
|
|
8
|
+
className?: string;
|
|
9
|
+
headerClassName?: string;
|
|
10
|
+
contentClassName?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function PageSection({ title, description, actions, children, as: Tag, className, headerClassName, contentClassName, }: PageSectionProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=PageSection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageSection.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PageSection.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;IACpB,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,OAAO,EACP,QAAQ,EACR,EAAE,EAAE,GAAU,EACd,SAAS,EACT,eAAe,EACf,gBAAgB,GACjB,EAAE,gBAAgB,2CA0BlB"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PaginationBar — combines page-size selector, item count, and page controls.
|
|
3
|
+
*
|
|
4
|
+
* This was previously copy-pasted between Tables and Inbox. It wraps the
|
|
5
|
+
* existing `Pagination` and `SelectDropdown` components into a single,
|
|
6
|
+
* self-contained footer bar.
|
|
7
|
+
*
|
|
8
|
+
* The layout is responsive: on small screens the count text hides,
|
|
9
|
+
* leaving just the page-size dropdown and pagination buttons.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <PaginationBar
|
|
14
|
+
* page={page}
|
|
15
|
+
* pageSize={pageSize}
|
|
16
|
+
* total={filtered.length}
|
|
17
|
+
* pageSizeOptions={[
|
|
18
|
+
* { value: "10", label: "10 per page" },
|
|
19
|
+
* { value: "25", label: "25 per page" },
|
|
20
|
+
* ]}
|
|
21
|
+
* onPageChange={setPage}
|
|
22
|
+
* onPageSizeChange={(size) => {
|
|
23
|
+
* setPageSize(size);
|
|
24
|
+
* setPage(1); // reset to first page on size change
|
|
25
|
+
* }}
|
|
26
|
+
* />
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
interface PageSizeOption {
|
|
30
|
+
value: string;
|
|
31
|
+
label: string;
|
|
32
|
+
}
|
|
33
|
+
interface PaginationBarProps {
|
|
34
|
+
/** Current page number (1-indexed). */
|
|
35
|
+
page: number;
|
|
36
|
+
/** Number of items per page. */
|
|
37
|
+
pageSize: number;
|
|
38
|
+
/** Total number of items across all pages. */
|
|
39
|
+
total: number;
|
|
40
|
+
/**
|
|
41
|
+
* Options for the page-size dropdown.
|
|
42
|
+
* Defaults to 10 / 25 / 50 per page. Override when your table
|
|
43
|
+
* or list uses different page sizes.
|
|
44
|
+
*/
|
|
45
|
+
pageSizeOptions?: PageSizeOption[];
|
|
46
|
+
/** Called when the user navigates to a different page. */
|
|
47
|
+
onPageChange: (page: number) => void;
|
|
48
|
+
/**
|
|
49
|
+
* Called when the user changes the page size.
|
|
50
|
+
* The consumer should also reset the page to 1 when this fires.
|
|
51
|
+
*/
|
|
52
|
+
onPageSizeChange: (size: number) => void;
|
|
53
|
+
/** Additional utility classes for the root container. */
|
|
54
|
+
className?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare function PaginationBar({ page, pageSize, total, pageSizeOptions, onPageChange, onPageSizeChange, className, }: PaginationBarProps): import("react/jsx-runtime").JSX.Element;
|
|
57
|
+
export {};
|
|
58
|
+
//# sourceMappingURL=PaginationBar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PaginationBar.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PaginationBar.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAMH,UAAU,cAAc;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAaD,UAAU,kBAAkB;IAC1B,uCAAuC;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,CAAC;IACd;;;;OAIG;IACH,eAAe,CAAC,EAAE,cAAc,EAAE,CAAC;IACnC,0DAA0D;IAC1D,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACrC;;;OAGG;IACH,gBAAgB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACzC,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,eAA2C,EAC3C,YAAY,EACZ,gBAAgB,EAChB,SAAS,GACV,EAAE,kBAAkB,2CAiCpB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type InputHTMLAttributes } from "react";
|
|
2
|
+
interface PasswordInputProps extends InputHTMLAttributes<HTMLInputElement> {
|
|
3
|
+
label?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=PasswordInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordInput.d.ts","sourceRoot":"","sources":["../../../src/components/ui/PasswordInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAMvE,UAAU,kBAAmB,SAAQ,mBAAmB,CAAC,gBAAgB,CAAC;IACxE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,aAAa,iHAmDzB,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ProfileHeader — a rich header layout for user profile pages.
|
|
3
|
+
*
|
|
4
|
+
* Unlike PageHeader (title + actions), ProfileHeader renders a user's
|
|
5
|
+
* avatar, name, role badge, subtitle, and metadata (location, join date,
|
|
6
|
+
* external links) alongside an action button.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <ProfileHeader
|
|
11
|
+
* name="Jane Doe"
|
|
12
|
+
* subtitle="Senior Software Engineer"
|
|
13
|
+
* badge={<Badge color="purple">Admin</Badge>}
|
|
14
|
+
* meta={[
|
|
15
|
+
* { icon: MapPin, text: "San Francisco, CA" },
|
|
16
|
+
* { icon: Calendar, text: "Joined March 2024" },
|
|
17
|
+
* ]}
|
|
18
|
+
* action={
|
|
19
|
+
* <Button variant="secondary" size="sm">
|
|
20
|
+
* <Edit className="h-3.5 w-3.5" /> Edit
|
|
21
|
+
* </Button>
|
|
22
|
+
* }
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { ElementType, ReactNode } from "react";
|
|
27
|
+
interface MetaItem {
|
|
28
|
+
/** A Lucide icon component rendered at 12px. */
|
|
29
|
+
icon: ElementType;
|
|
30
|
+
/** The metadata text displayed next to the icon. */
|
|
31
|
+
text: string;
|
|
32
|
+
/** Optional href — renders the item as a link instead of a span. */
|
|
33
|
+
href?: string;
|
|
34
|
+
}
|
|
35
|
+
interface ProfileHeaderProps {
|
|
36
|
+
/** User display name — rendered as an h1. */
|
|
37
|
+
name: string;
|
|
38
|
+
/** Secondary text below the name (e.g. job title). */
|
|
39
|
+
subtitle?: string;
|
|
40
|
+
/** Optional badge rendered inline with the name (e.g. role badge). */
|
|
41
|
+
badge?: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Metadata items displayed below the subtitle.
|
|
44
|
+
* Each item has an icon + text pair. Items with `href` render as links.
|
|
45
|
+
*/
|
|
46
|
+
meta?: MetaItem[];
|
|
47
|
+
/** Action button(s) displayed on the right side of the header. */
|
|
48
|
+
action?: ReactNode;
|
|
49
|
+
/** Additional utility classes for the root container. */
|
|
50
|
+
className?: string;
|
|
51
|
+
}
|
|
52
|
+
export declare function ProfileHeader({ name, subtitle, badge, meta, action, className, }: ProfileHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=ProfileHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProfileHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ProfileHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAKpD,UAAU,QAAQ;IAChB,gDAAgD;IAChD,IAAI,EAAE,WAAW,CAAC;IAClB,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,UAAU,kBAAkB;IAC1B,6CAA6C;IAC7C,IAAI,EAAE,MAAM,CAAC;IACb,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;OAGG;IACH,IAAI,CAAC,EAAE,QAAQ,EAAE,CAAC;IAClB,kEAAkE;IAClE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,IAAI,EACJ,MAAM,EACN,SAAS,GACV,EAAE,kBAAkB,2CAgDpB"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ReactNode } from "react";
|
|
2
|
+
export interface ProseContentProps {
|
|
3
|
+
children: ReactNode;
|
|
4
|
+
className?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function ProseContent({ children, className }: ProseContentProps): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=ProseContent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ProseContent.d.ts","sourceRoot":"","sources":["../../../src/components/ui/ProseContent.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,2CAEtE"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface RadioPillProps<T extends string> {
|
|
2
|
+
options: {
|
|
3
|
+
value: T;
|
|
4
|
+
label: string;
|
|
5
|
+
}[];
|
|
6
|
+
value: T;
|
|
7
|
+
onChange: (value: T) => void;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
className?: string;
|
|
10
|
+
"aria-label"?: string;
|
|
11
|
+
}
|
|
12
|
+
export declare function RadioPill<T extends string>({ options, value, onChange, disabled, className, "aria-label": ariaLabel, }: RadioPillProps<T>): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=RadioPill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RadioPill.d.ts","sourceRoot":"","sources":["../../../src/components/ui/RadioPill.tsx"],"names":[],"mappings":"AAEA,UAAU,cAAc,CAAC,CAAC,SAAS,MAAM;IACvC,OAAO,EAAE;QAAE,KAAK,EAAE,CAAC,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACvC,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,EAAE,EAC1C,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,YAAY,EAAE,SAAS,GACxB,EAAE,cAAc,CAAC,CAAC,CAAC,2CAgCnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface SearchInputProps {
|
|
2
|
+
value: string;
|
|
3
|
+
onChange: (value: string) => void;
|
|
4
|
+
placeholder?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function SearchInput({ value, onChange, placeholder, className, }: SearchInputProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
//# sourceMappingURL=SearchInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SearchInput.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SearchInput.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,QAAQ,EACR,WAAyB,EACzB,SAAS,GACV,EAAE,gBAAgB,2CAmBlB"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SectionHeader — a bordered section heading used throughout the template.
|
|
3
|
+
*
|
|
4
|
+
* This is the most-repeated markup in the codebase (~30+ occurrences).
|
|
5
|
+
* It renders a small, semibold heading with a bottom border to visually
|
|
6
|
+
* separate content sections within a page.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <SectionHeader>Text Inputs</SectionHeader>
|
|
11
|
+
* ```
|
|
12
|
+
*
|
|
13
|
+
* @example With a custom element or extra class
|
|
14
|
+
* ```tsx
|
|
15
|
+
* <SectionHeader as="h3" className="mb-4">Settings</SectionHeader>
|
|
16
|
+
* ```
|
|
17
|
+
*/
|
|
18
|
+
import type { ElementType, ReactNode } from "react";
|
|
19
|
+
interface SectionHeaderProps {
|
|
20
|
+
/** The heading text or content. */
|
|
21
|
+
children: ReactNode;
|
|
22
|
+
/**
|
|
23
|
+
* The HTML element to render.
|
|
24
|
+
* Defaults to "h2" for semantic correctness within a page that already
|
|
25
|
+
* has an h1 via PageHeader.
|
|
26
|
+
*/
|
|
27
|
+
as?: ElementType;
|
|
28
|
+
/** Additional utility classes appended to the root element. */
|
|
29
|
+
className?: string;
|
|
30
|
+
/** Render the dividing bottom border. Defaults to true. */
|
|
31
|
+
border?: boolean;
|
|
32
|
+
}
|
|
33
|
+
export declare function SectionHeader({ children, as: Tag, className, border, }: SectionHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
34
|
+
export {};
|
|
35
|
+
//# sourceMappingURL=SectionHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SectionHeader.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SectionHeader.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIpD,UAAU,kBAAkB;IAC1B,mCAAmC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,EAAE,CAAC,EAAE,WAAW,CAAC;IACjB,+DAA+D;IAC/D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,aAAa,CAAC,EAC5B,QAAQ,EACR,EAAE,EAAE,GAAU,EACd,SAAS,EACT,MAAa,GACd,EAAE,kBAAkB,2CAepB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type SelectHTMLAttributes } from "react";
|
|
2
|
+
interface SelectProps extends SelectHTMLAttributes<HTMLSelectElement> {
|
|
3
|
+
label?: string;
|
|
4
|
+
error?: string;
|
|
5
|
+
options: {
|
|
6
|
+
value: string;
|
|
7
|
+
label: string;
|
|
8
|
+
}[];
|
|
9
|
+
}
|
|
10
|
+
export declare const Select: import("react").ForwardRefExoticComponent<SelectProps & import("react").RefAttributes<HTMLSelectElement>>;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=Select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Select.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Select.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAE,MAAM,OAAO,CAAC;AAM9D,UAAU,WAAY,SAAQ,oBAAoB,CAAC,iBAAiB,CAAC;IACnE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AAED,eAAO,MAAM,MAAM,2GA6ClB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface SelectDropdownOption {
|
|
2
|
+
value: string;
|
|
3
|
+
label: string;
|
|
4
|
+
}
|
|
5
|
+
interface SelectDropdownProps {
|
|
6
|
+
options: SelectDropdownOption[];
|
|
7
|
+
value: string;
|
|
8
|
+
onChange: (value: string) => void;
|
|
9
|
+
label?: string;
|
|
10
|
+
placeholder?: string;
|
|
11
|
+
className?: string;
|
|
12
|
+
size?: "sm" | "md";
|
|
13
|
+
}
|
|
14
|
+
export declare function SelectDropdown({ options, value, onChange, label, placeholder, className, size, }: SelectDropdownProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=SelectDropdown.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectDropdown.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SelectDropdown.tsx"],"names":[],"mappings":"AAQA,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,mBAAmB;IAC3B,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;CACpB;AAED,wBAAgB,cAAc,CAAC,EAC7B,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAyB,EACzB,SAAS,EACT,IAAW,GACZ,EAAE,mBAAmB,2CAiJrB"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SettingRow — a label + description + action layout for settings pages.
|
|
3
|
+
*
|
|
4
|
+
* Each row displays a setting name and description on the left, with a
|
|
5
|
+
* control (typically a `<Toggle>`) on the right. Rows are separated by
|
|
6
|
+
* a bottom border for visual grouping.
|
|
7
|
+
*
|
|
8
|
+
* @example With a toggle
|
|
9
|
+
* ```tsx
|
|
10
|
+
* <SettingRow
|
|
11
|
+
* label="Reduced Motion"
|
|
12
|
+
* description="Disable animations and transitions"
|
|
13
|
+
* action={<Toggle checked={reducedMotion} onChange={setReducedMotion} />}
|
|
14
|
+
* />
|
|
15
|
+
* ```
|
|
16
|
+
*
|
|
17
|
+
* @example With any control
|
|
18
|
+
* ```tsx
|
|
19
|
+
* <SettingRow
|
|
20
|
+
* label="Language"
|
|
21
|
+
* description="Choose your preferred language"
|
|
22
|
+
* action={<SelectDropdown value={lang} onChange={setLang} options={langs} />}
|
|
23
|
+
* />
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
import type { ReactNode } from "react";
|
|
27
|
+
interface SettingRowProps {
|
|
28
|
+
/** The setting name displayed as a small, medium-weight label. */
|
|
29
|
+
label: string;
|
|
30
|
+
/** A brief description shown below the label in a muted style. */
|
|
31
|
+
description?: string;
|
|
32
|
+
/**
|
|
33
|
+
* The control rendered on the right side of the row.
|
|
34
|
+
* Typically a `<Toggle>`, but can be any React node.
|
|
35
|
+
*/
|
|
36
|
+
action: ReactNode;
|
|
37
|
+
/** Additional utility classes appended to the root container. */
|
|
38
|
+
className?: string;
|
|
39
|
+
}
|
|
40
|
+
export declare function SettingRow({ label, description, action, className, }: SettingRowProps): import("react/jsx-runtime").JSX.Element;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=SettingRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SettingRow.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SettingRow.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,eAAe;IACvB,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAC;IACd,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,MAAM,EAAE,SAAS,CAAC;IAClB,iEAAiE;IACjE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE,eAAe,2CAwBjB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
export interface SideSheetProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
children: ReactNode;
|
|
7
|
+
footer?: ReactNode;
|
|
8
|
+
side?: "left" | "right";
|
|
9
|
+
widthClassName?: string;
|
|
10
|
+
className?: string;
|
|
11
|
+
contentClassName?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function SideSheet({ open, onClose, title, children, footer, side, widthClassName, className, contentClassName, }: SideSheetProps): import("react").ReactPortal | null;
|
|
14
|
+
//# sourceMappingURL=SideSheet.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SideSheet.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SideSheet.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAQ1D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,MAAM,EACN,IAAc,EACd,cAA4B,EAC5B,SAAS,EACT,gBAAgB,GACjB,EAAE,cAAc,sCA0EhB"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export interface SliderProps {
|
|
2
|
+
min: number;
|
|
3
|
+
max: number;
|
|
4
|
+
step?: number;
|
|
5
|
+
value: number;
|
|
6
|
+
onChange: (value: number) => void;
|
|
7
|
+
/** Called when the user releases the slider (pointerup / change) */
|
|
8
|
+
onCommit?: (value: number) => void;
|
|
9
|
+
label?: string;
|
|
10
|
+
showValue?: boolean;
|
|
11
|
+
className?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function Slider({ min, max, step, value, onChange, onCommit, label, showValue, className, }: SliderProps): import("react/jsx-runtime").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=Slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Slider.d.ts","sourceRoot":"","sources":["../../../src/components/ui/Slider.tsx"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,oEAAoE;IACpE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,MAAM,CAAC,EACrB,GAAG,EACH,GAAG,EACH,IAAQ,EACR,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,SAAS,EACT,SAAS,GACV,EAAE,WAAW,2CAmCb"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SplitPaneLayout — a full-viewport-height container with main + panel areas.
|
|
3
|
+
*
|
|
4
|
+
* Used by Tables, Inbox, Components, and EmailDetail to create a layout
|
|
5
|
+
* that breaks out of the page padding and fills the remaining viewport
|
|
6
|
+
* height below the top bar. The main content area scrolls independently.
|
|
7
|
+
*
|
|
8
|
+
* The component uses a CSS calc based on `--topbar-height` to fill the
|
|
9
|
+
* viewport minus the top navigation bar.
|
|
10
|
+
*
|
|
11
|
+
* @example With a side panel
|
|
12
|
+
* ```tsx
|
|
13
|
+
* <SplitPaneLayout>
|
|
14
|
+
* <SplitPaneLayout.Main>
|
|
15
|
+
* <ResourceTable ... />
|
|
16
|
+
* </SplitPaneLayout.Main>
|
|
17
|
+
* <DetailPanel open={panelOpen} onClose={close}>
|
|
18
|
+
* ...
|
|
19
|
+
* </DetailPanel>
|
|
20
|
+
* </SplitPaneLayout>
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @example Column direction (e.g. Inbox bottom split)
|
|
24
|
+
* ```tsx
|
|
25
|
+
* <SplitPaneLayout direction="column">
|
|
26
|
+
* <SplitPaneLayout.Main>...</SplitPaneLayout.Main>
|
|
27
|
+
* <ReadingPanel orientation="bottom" />
|
|
28
|
+
* </SplitPaneLayout>
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @example EmailDetail — single column, no split
|
|
32
|
+
* ```tsx
|
|
33
|
+
* <SplitPaneLayout direction="column">
|
|
34
|
+
* <div>toolbar</div>
|
|
35
|
+
* <div className="flex-1 overflow-y-auto">content</div>
|
|
36
|
+
* </SplitPaneLayout>
|
|
37
|
+
* ```
|
|
38
|
+
*/
|
|
39
|
+
import type { ReactNode } from "react";
|
|
40
|
+
interface SplitPaneLayoutProps {
|
|
41
|
+
children: ReactNode;
|
|
42
|
+
/**
|
|
43
|
+
* Flex direction of the split.
|
|
44
|
+
* - "row" (default): side-by-side layout (main | panel)
|
|
45
|
+
* - "column": stacked layout (main / panel)
|
|
46
|
+
*/
|
|
47
|
+
direction?: "row" | "column";
|
|
48
|
+
/** Additional utility classes for the root container. */
|
|
49
|
+
className?: string;
|
|
50
|
+
}
|
|
51
|
+
declare function SplitPaneLayoutRoot({ children, direction, className, }: SplitPaneLayoutProps): import("react/jsx-runtime").JSX.Element;
|
|
52
|
+
interface MainProps {
|
|
53
|
+
children: ReactNode;
|
|
54
|
+
/** Additional utility classes. */
|
|
55
|
+
className?: string;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* The scrollable main content area within a SplitPaneLayout.
|
|
59
|
+
* Prevents flex children from expanding beyond available space
|
|
60
|
+
* via min-w-0 and min-h-0.
|
|
61
|
+
*/
|
|
62
|
+
declare function Main({ children, className }: MainProps): import("react/jsx-runtime").JSX.Element;
|
|
63
|
+
/**
|
|
64
|
+
* Attach sub-components so consumers can write:
|
|
65
|
+
* <SplitPaneLayout>
|
|
66
|
+
* <SplitPaneLayout.Main>...</SplitPaneLayout.Main>
|
|
67
|
+
* </SplitPaneLayout>
|
|
68
|
+
*/
|
|
69
|
+
export declare const SplitPaneLayout: typeof SplitPaneLayoutRoot & {
|
|
70
|
+
Main: typeof Main;
|
|
71
|
+
};
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=SplitPaneLayout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SplitPaneLayout.d.ts","sourceRoot":"","sources":["../../../src/components/ui/SplitPaneLayout.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAQvC,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,SAAS,CAAC;IACpB;;;;OAIG;IACH,SAAS,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC7B,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iBAAS,mBAAmB,CAAC,EAC3B,QAAQ,EACR,SAAiB,EACjB,SAAS,GACV,EAAE,oBAAoB,2CAkBtB;AAID,UAAU,SAAS;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,kCAAkC;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,iBAAS,IAAI,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,SAAS,2CAW/C;AAID;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;CAA+C,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
type Status = "active" | "inactive" | "pending" | "error";
|
|
2
|
+
interface StatusDotProps {
|
|
3
|
+
status: Status;
|
|
4
|
+
label?: string;
|
|
5
|
+
className?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function StatusDot({ status, label, className }: StatusDotProps): import("react/jsx-runtime").JSX.Element;
|
|
8
|
+
export {};
|
|
9
|
+
//# sourceMappingURL=StatusDot.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StatusDot.d.ts","sourceRoot":"","sources":["../../../src/components/ui/StatusDot.tsx"],"names":[],"mappings":"AAEA,KAAK,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,CAAC;AAE1D,UAAU,cAAc;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAgBD,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,cAAc,2CASrE"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface StepProgressProps {
|
|
2
|
+
steps: {
|
|
3
|
+
label: string;
|
|
4
|
+
description?: string;
|
|
5
|
+
}[];
|
|
6
|
+
/** Zero-indexed current step. Steps before it render as completed. */
|
|
7
|
+
currentStep: number;
|
|
8
|
+
className?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare function StepProgress({ steps, currentStep, className, }: StepProgressProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=StepProgress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"StepProgress.d.ts","sourceRoot":"","sources":["../../../src/components/ui/StepProgress.tsx"],"names":[],"mappings":"AAIA,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACjD,sEAAsE;IACtE,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,EAC3B,KAAK,EACL,WAAW,EACX,SAAS,GACV,EAAE,iBAAiB,2CA8CnB"}
|