@teja-app/ui 0.0.10 → 0.0.11
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/dist/index.cjs +3451 -13754
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +3423 -13726
- package/dist/index.js.map +1 -1
- package/dist/style-D6av97Pw.cjs +10406 -0
- package/dist/style-D6av97Pw.cjs.map +1 -0
- package/dist/style-DyXPy-7b.js +10392 -0
- package/dist/style-DyXPy-7b.js.map +1 -0
- package/dist/theme/ThemeProvider.d.ts +23 -0
- package/dist/theme/ThemeProvider.d.ts.map +1 -0
- package/dist/theme/applyTheme.d.ts +33 -0
- package/dist/theme/applyTheme.d.ts.map +1 -0
- package/dist/theme/components/AIBadge.d.ts +20 -0
- package/dist/theme/components/AIBadge.d.ts.map +1 -0
- package/dist/theme/components/AICard.d.ts +16 -0
- package/dist/theme/components/AICard.d.ts.map +1 -0
- package/dist/theme/components/AIChip.d.ts +7 -0
- package/dist/theme/components/AIChip.d.ts.map +1 -0
- package/dist/theme/components/AIComposeButton.d.ts +14 -0
- package/dist/theme/components/AIComposeButton.d.ts.map +1 -0
- package/dist/theme/components/AIGhostText.d.ts +14 -0
- package/dist/theme/components/AIGhostText.d.ts.map +1 -0
- package/dist/theme/components/AISectionHeader.d.ts +15 -0
- package/dist/theme/components/AISectionHeader.d.ts.map +1 -0
- package/dist/theme/components/AISparkle.d.ts +12 -0
- package/dist/theme/components/AISparkle.d.ts.map +1 -0
- package/dist/theme/components/AIWorking.d.ts +12 -0
- package/dist/theme/components/AIWorking.d.ts.map +1 -0
- package/dist/theme/components/Alert.d.ts +22 -0
- package/dist/theme/components/Alert.d.ts.map +1 -0
- package/dist/theme/components/AppShell.d.ts +16 -0
- package/dist/theme/components/AppShell.d.ts.map +1 -0
- package/dist/theme/components/AskTeja.d.ts +17 -0
- package/dist/theme/components/AskTeja.d.ts.map +1 -0
- package/dist/theme/components/Avatar.d.ts +12 -0
- package/dist/theme/components/Avatar.d.ts.map +1 -0
- package/dist/theme/components/Badge.d.ts +16 -0
- package/dist/theme/components/Badge.d.ts.map +1 -0
- package/dist/theme/components/Brand.d.ts +19 -0
- package/dist/theme/components/Brand.d.ts.map +1 -0
- package/dist/theme/components/Button.d.ts +19 -0
- package/dist/theme/components/Button.d.ts.map +1 -0
- package/dist/theme/components/Card.d.ts +10 -0
- package/dist/theme/components/Card.d.ts.map +1 -0
- package/dist/theme/components/Checkbox.d.ts +23 -0
- package/dist/theme/components/Checkbox.d.ts.map +1 -0
- package/dist/theme/components/Chip.d.ts +19 -0
- package/dist/theme/components/Chip.d.ts.map +1 -0
- package/dist/theme/components/Combobox.d.ts +29 -0
- package/dist/theme/components/Combobox.d.ts.map +1 -0
- package/dist/theme/components/Compat.d.ts +34 -0
- package/dist/theme/components/Compat.d.ts.map +1 -0
- package/dist/theme/components/ConfirmDialog.d.ts +39 -0
- package/dist/theme/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/theme/components/CountryPicker.d.ts +14 -0
- package/dist/theme/components/CountryPicker.d.ts.map +1 -0
- package/dist/theme/components/DateInput.d.ts +30 -0
- package/dist/theme/components/DateInput.d.ts.map +1 -0
- package/dist/theme/components/Divider.d.ts +13 -0
- package/dist/theme/components/Divider.d.ts.map +1 -0
- package/dist/theme/components/Drawer.d.ts +52 -0
- package/dist/theme/components/Drawer.d.ts.map +1 -0
- package/dist/theme/components/EmptyState.d.ts +28 -0
- package/dist/theme/components/EmptyState.d.ts.map +1 -0
- package/dist/theme/components/FactList.d.ts +21 -0
- package/dist/theme/components/FactList.d.ts.map +1 -0
- package/dist/theme/components/Field.d.ts +35 -0
- package/dist/theme/components/Field.d.ts.map +1 -0
- package/dist/theme/components/FieldHint.d.ts +17 -0
- package/dist/theme/components/FieldHint.d.ts.map +1 -0
- package/dist/theme/components/Icon.d.ts +19 -0
- package/dist/theme/components/Icon.d.ts.map +1 -0
- package/dist/theme/components/IconButton.d.ts +17 -0
- package/dist/theme/components/IconButton.d.ts.map +1 -0
- package/dist/theme/components/KV.d.ts +26 -0
- package/dist/theme/components/KV.d.ts.map +1 -0
- package/dist/theme/components/LabelGroup.d.ts +15 -0
- package/dist/theme/components/LabelGroup.d.ts.map +1 -0
- package/dist/theme/components/LangSwitcher.d.ts +30 -0
- package/dist/theme/components/LangSwitcher.d.ts.map +1 -0
- package/dist/theme/components/MiniStat.d.ts +20 -0
- package/dist/theme/components/MiniStat.d.ts.map +1 -0
- package/dist/theme/components/Modal.d.ts +57 -0
- package/dist/theme/components/Modal.d.ts.map +1 -0
- package/dist/theme/components/MultiSelect.d.ts +38 -0
- package/dist/theme/components/MultiSelect.d.ts.map +1 -0
- package/dist/theme/components/PageHeader.d.ts +24 -0
- package/dist/theme/components/PageHeader.d.ts.map +1 -0
- package/dist/theme/components/Pagination.d.ts +10 -0
- package/dist/theme/components/Pagination.d.ts.map +1 -0
- package/dist/theme/components/PersonRow.d.ts +18 -0
- package/dist/theme/components/PersonRow.d.ts.map +1 -0
- package/dist/theme/components/RoleTile.d.ts +20 -0
- package/dist/theme/components/RoleTile.d.ts.map +1 -0
- package/dist/theme/components/SectionLabel.d.ts +20 -0
- package/dist/theme/components/SectionLabel.d.ts.map +1 -0
- package/dist/theme/components/SegmentedControl.d.ts +15 -0
- package/dist/theme/components/SegmentedControl.d.ts.map +1 -0
- package/dist/theme/components/Select.d.ts +24 -0
- package/dist/theme/components/Select.d.ts.map +1 -0
- package/dist/theme/components/SettingRow.d.ts +23 -0
- package/dist/theme/components/SettingRow.d.ts.map +1 -0
- package/dist/theme/components/Sidebar.d.ts +28 -0
- package/dist/theme/components/Sidebar.d.ts.map +1 -0
- package/dist/theme/components/SidebarNavItem.d.ts +31 -0
- package/dist/theme/components/SidebarNavItem.d.ts.map +1 -0
- package/dist/theme/components/Skeleton.d.ts +32 -0
- package/dist/theme/components/Skeleton.d.ts.map +1 -0
- package/dist/theme/components/Spinner.d.ts +26 -0
- package/dist/theme/components/Spinner.d.ts.map +1 -0
- package/dist/theme/components/Stat.d.ts +23 -0
- package/dist/theme/components/Stat.d.ts.map +1 -0
- package/dist/theme/components/StatePicker.d.ts +17 -0
- package/dist/theme/components/StatePicker.d.ts.map +1 -0
- package/dist/theme/components/Stepper.d.ts +23 -0
- package/dist/theme/components/Stepper.d.ts.map +1 -0
- package/dist/theme/components/Switch.d.ts +18 -0
- package/dist/theme/components/Switch.d.ts.map +1 -0
- package/dist/theme/components/TOTP6Cells.d.ts +49 -0
- package/dist/theme/components/TOTP6Cells.d.ts.map +1 -0
- package/dist/theme/components/Tabs.d.ts +33 -0
- package/dist/theme/components/Tabs.d.ts.map +1 -0
- package/dist/theme/components/Tag.d.ts +15 -0
- package/dist/theme/components/Tag.d.ts.map +1 -0
- package/dist/theme/components/TextInput.d.ts +24 -0
- package/dist/theme/components/TextInput.d.ts.map +1 -0
- package/dist/theme/components/Textarea.d.ts +17 -0
- package/dist/theme/components/Textarea.d.ts.map +1 -0
- package/dist/theme/components/TimeZonePicker.d.ts +14 -0
- package/dist/theme/components/TimeZonePicker.d.ts.map +1 -0
- package/dist/theme/components/TimelineRow.d.ts +27 -0
- package/dist/theme/components/TimelineRow.d.ts.map +1 -0
- package/dist/theme/components/ToolbarSearch.d.ts +8 -0
- package/dist/theme/components/ToolbarSearch.d.ts.map +1 -0
- package/dist/theme/components/TopBar.d.ts +35 -0
- package/dist/theme/components/TopBar.d.ts.map +1 -0
- package/dist/theme/components/ViewToggle.d.ts +24 -0
- package/dist/theme/components/ViewToggle.d.ts.map +1 -0
- package/dist/theme/components/aiStyles.d.ts +2 -0
- package/dist/theme/components/aiStyles.d.ts.map +1 -0
- package/dist/theme/components/fieldShell.d.ts +68 -0
- package/dist/theme/components/fieldShell.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +66 -0
- package/dist/theme/components/index.d.ts.map +1 -0
- package/dist/theme/data/countries.d.ts +8 -0
- package/dist/theme/data/countries.d.ts.map +1 -0
- package/dist/theme/data/index.d.ts +4 -0
- package/dist/theme/data/index.d.ts.map +1 -0
- package/dist/theme/data/regions.d.ts +8 -0
- package/dist/theme/data/regions.d.ts.map +1 -0
- package/dist/theme/data/timezones.d.ts +8 -0
- package/dist/theme/data/timezones.d.ts.map +1 -0
- package/dist/theme/fonts.d.ts +9 -0
- package/dist/theme/fonts.d.ts.map +1 -0
- package/dist/theme/index.cjs +6168 -0
- package/dist/theme/index.cjs.map +1 -0
- package/dist/theme/index.d.ts +18 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +6168 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/presets.d.ts +370 -0
- package/dist/theme/presets.d.ts.map +1 -0
- package/dist/ui.css +159 -0
- package/package.json +6 -1
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import 'react-day-picker/style.css';
|
|
2
|
+
import { type FieldChromeProps } from './fieldShell';
|
|
3
|
+
export interface DateInputProps extends FieldChromeProps {
|
|
4
|
+
/** Current value as an ISO `YYYY-MM-DD` string, or `null` when unset. */
|
|
5
|
+
value: string | null;
|
|
6
|
+
onChange?: (value: string | null) => void;
|
|
7
|
+
/** Trigger text when no value is selected. Defaults to `Select date`. */
|
|
8
|
+
placeholder?: string;
|
|
9
|
+
/** Lower bound (inclusive) as an ISO `YYYY-MM-DD` string. */
|
|
10
|
+
min?: string;
|
|
11
|
+
/** Upper bound (inclusive) as an ISO `YYYY-MM-DD` string. */
|
|
12
|
+
max?: string;
|
|
13
|
+
}
|
|
14
|
+
/** Parse a `YYYY-MM-DD` string to a local Date. Returns undefined if invalid. */
|
|
15
|
+
export declare function parseDate(value: string | null): Date | undefined;
|
|
16
|
+
/** Format a Date to a `YYYY-MM-DD` string (local timezone). */
|
|
17
|
+
export declare function formatDate(date: Date): string;
|
|
18
|
+
/** Whether a string is a valid `YYYY-MM-DD` calendar date. */
|
|
19
|
+
export declare function isValidDateString(value: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* DateInput — a date field whose trigger mirrors the theme `Select` (a 36px
|
|
22
|
+
* control box with a leading `calendar` Icon, the formatted date or placeholder,
|
|
23
|
+
* and a trailing chevron). Clicking it opens a `react-day-picker` calendar in a
|
|
24
|
+
* `--surface-0` + `--shadow-pop` popover. The value is an ISO `YYYY-MM-DD`
|
|
25
|
+
* string (or null); `min`/`max` disable out-of-range days.
|
|
26
|
+
*
|
|
27
|
+
* Ported from `design/components/inputs.jsx` (`DateInput`).
|
|
28
|
+
*/
|
|
29
|
+
export declare function DateInput({ value, onChange, placeholder, min, max, label, hint, error, required, full, disabled, testId, }: DateInputProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=DateInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DateInput.d.ts","sourceRoot":"","sources":["../../../src/theme/components/DateInput.tsx"],"names":[],"mappings":"AAGA,OAAO,4BAA4B,CAAC;AAEpC,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,yEAAyE;IACzE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAC;IAC1C,yEAAyE;IACzE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,6DAA6D;IAC7D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AASD,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAShE;AAED,+DAA+D;AAC/D,wBAAgB,UAAU,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAE7C;AAED,8DAA8D;AAC9D,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAExD;AAoDD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,WAA2B,EAC3B,GAAG,EACH,GAAG,EACH,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAW,EACX,QAAQ,EACR,MAAM,GACP,EAAE,cAAc,2CA4IhB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { HTMLAttributes } from 'react';
|
|
2
|
+
export interface DividerProps extends HTMLAttributes<HTMLDivElement> {
|
|
3
|
+
/** Render as a vertical 1px line instead of horizontal. */
|
|
4
|
+
vertical?: boolean;
|
|
5
|
+
/** Forwarded as `data-testid`. */
|
|
6
|
+
testId?: string;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Divider — 1px hairline using `var(--divider)`.
|
|
10
|
+
* Source: design/screens/client-detail.jsx:315
|
|
11
|
+
*/
|
|
12
|
+
export declare function Divider({ vertical, style, testId, ...rest }: DividerProps): import("react/jsx-runtime").JSX.Element;
|
|
13
|
+
//# sourceMappingURL=Divider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Divider.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Divider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,MAAM,OAAO,CAAC;AAE3D,MAAM,WAAW,YAAa,SAAQ,cAAc,CAAC,cAAc,CAAC;IAClE,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,EAAE,YAAY,2CAKzE"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
|
+
export type DrawerWidth = 'md' | 'lg' | number;
|
|
3
|
+
export interface DrawerHeaderProps {
|
|
4
|
+
/** Slot rendered on the left of the header (title, breadcrumb, etc.). */
|
|
5
|
+
children?: ReactNode;
|
|
6
|
+
/** Extra inline actions placed before the close button. */
|
|
7
|
+
actions?: ReactNode;
|
|
8
|
+
/** Render the close button and wire its click to this handler. */
|
|
9
|
+
onClose?: () => void;
|
|
10
|
+
style?: CSSProperties;
|
|
11
|
+
/** Forwarded as `data-testid` on the header root. */
|
|
12
|
+
testId?: string;
|
|
13
|
+
/** Forwarded as `data-testid` on the close button. */
|
|
14
|
+
closeTestId?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function DrawerHeader({ children, actions, onClose, style, testId, closeTestId, }: DrawerHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export interface DrawerFooterProps {
|
|
18
|
+
/** Optional left-aligned context string ("Confirms with Sarah…"). */
|
|
19
|
+
info?: ReactNode;
|
|
20
|
+
children?: ReactNode;
|
|
21
|
+
style?: CSSProperties;
|
|
22
|
+
testId?: string;
|
|
23
|
+
}
|
|
24
|
+
export declare function DrawerFooter({ info, children, style, testId }: DrawerFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
25
|
+
export interface DrawerProps {
|
|
26
|
+
/** Whether the drawer is mounted/visible. */
|
|
27
|
+
open: boolean;
|
|
28
|
+
/** Fired on overlay click, Escape key, and close button (via DrawerHeader). */
|
|
29
|
+
onClose: () => void;
|
|
30
|
+
/** Width preset or arbitrary number. md=520, lg=640. Default md. */
|
|
31
|
+
width?: DrawerWidth;
|
|
32
|
+
/** Slot for `<DrawerHeader>`. */
|
|
33
|
+
header?: ReactNode;
|
|
34
|
+
/** Slot for `<DrawerFooter>`. */
|
|
35
|
+
footer?: ReactNode;
|
|
36
|
+
children?: ReactNode;
|
|
37
|
+
/** Forwarded as `data-testid` on the root. Overlay gets `${testId}-overlay`. */
|
|
38
|
+
testId?: string;
|
|
39
|
+
/** ARIA label for the dialog. */
|
|
40
|
+
ariaLabel?: string;
|
|
41
|
+
/** Customize the root container `style`. */
|
|
42
|
+
style?: CSSProperties;
|
|
43
|
+
/** Customize the inner panel `style`. */
|
|
44
|
+
panelStyle?: CSSProperties;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Drawer — right-anchored slide-over with overlay scrim, focus trap, and
|
|
48
|
+
* Escape-to-close. Source: design/components/primitives.jsx:168
|
|
49
|
+
* Composes with DrawerHeader/DrawerFooter.
|
|
50
|
+
*/
|
|
51
|
+
export declare function Drawer({ open, onClose, width, header, footer, children, testId, ariaLabel, style, panelStyle, }: DrawerProps): import("react/jsx-runtime").JSX.Element | null;
|
|
52
|
+
//# sourceMappingURL=Drawer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Drawer.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Drawer.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,WAAW,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,CAAC;AAmB/C,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,2DAA2D;IAC3D,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,kEAAkE;IAClE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,sDAAsD;IACtD,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,OAAO,EACP,OAAO,EACP,KAAK,EACL,MAAM,EACN,WAAW,GACZ,EAAE,iBAAiB,2CAiDnB;AAGD,MAAM,WAAW,iBAAiB;IAChC,qEAAqE;IACrE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,YAAY,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,iBAAiB,2CAqBhF;AAGD,MAAM,WAAW,WAAW;IAC1B,6CAA6C;IAC7C,IAAI,EAAE,OAAO,CAAC;IACd,+EAA+E;IAC/E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,oEAAoE;IACpE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,iCAAiC;IACjC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,iCAAiC;IACjC,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,iCAAiC;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,yCAAyC;IACzC,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,MAAM,CAAC,EACrB,IAAI,EACJ,OAAO,EACP,KAAY,EACZ,MAAM,EACN,MAAM,EACN,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,WAAW,kDAkHb"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* EmptyState — empty / no-results / error placeholder using theme tokens.
|
|
4
|
+
* Ported from src/components/EmptyState. Preserves the same default SVG icons
|
|
5
|
+
* and child testids: `${testId}-icon`, `${testId}-title`, `${testId}-description`,
|
|
6
|
+
* `${testId}-action`.
|
|
7
|
+
*/
|
|
8
|
+
export type EmptyStateType = 'no-data' | 'no-results' | 'error';
|
|
9
|
+
type EmptyStateSize = 'sm' | 'md' | 'lg';
|
|
10
|
+
export interface EmptyStateProps extends Omit<HTMLAttributes<HTMLDivElement>, 'title'> {
|
|
11
|
+
/** Type of empty state. Default `no-data`. */
|
|
12
|
+
type?: EmptyStateType;
|
|
13
|
+
/** Title text. */
|
|
14
|
+
title: string;
|
|
15
|
+
/** Description text. */
|
|
16
|
+
description?: string;
|
|
17
|
+
/** Custom icon (overrides default type icon). */
|
|
18
|
+
icon?: ReactNode;
|
|
19
|
+
/** Action button or link. */
|
|
20
|
+
action?: ReactNode;
|
|
21
|
+
/** Size variant. Default `md`. */
|
|
22
|
+
size?: EmptyStateSize;
|
|
23
|
+
/** Forwarded as `data-testid` on the root with child elements suffixed. */
|
|
24
|
+
testId?: string;
|
|
25
|
+
}
|
|
26
|
+
export declare const EmptyState: import("react").ForwardRefExoticComponent<EmptyStateProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=EmptyState.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EmptyState.d.ts","sourceRoot":"","sources":["../../../src/theme/components/EmptyState.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,YAAY,GAAG,OAAO,CAAC;AAqDhE,KAAK,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AA+BzC,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IACrD,8CAA8C;IAC9C,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,iDAAiD;IACjD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,6BAA6B;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,kCAAkC;IAClC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,UAAU,4GAgFtB,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
export type FactListItem = [key: ReactNode, value: ReactNode] | {
|
|
3
|
+
key: ReactNode;
|
|
4
|
+
value: ReactNode;
|
|
5
|
+
/** Optional stable id; defaults to stringified key. */
|
|
6
|
+
id?: string;
|
|
7
|
+
};
|
|
8
|
+
export interface FactListProps {
|
|
9
|
+
items: ReadonlyArray<FactListItem>;
|
|
10
|
+
/** Pixel gap between rows. Defaults to 10. */
|
|
11
|
+
gap?: number;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
/** Forwarded as `data-testid` on the wrapper. */
|
|
14
|
+
testId?: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* FactList — flat key/value rows with uppercase eyebrow keys.
|
|
18
|
+
* Source: design/screens/client-detail.jsx:316
|
|
19
|
+
*/
|
|
20
|
+
export declare function FactList({ items, gap, style, testId }: FactListProps): import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
//# sourceMappingURL=FactList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FactList.d.ts","sourceRoot":"","sources":["../../../src/theme/components/FactList.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,CAAC,GAAG;IAC9D,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,SAAS,CAAC;IACjB,uDAAuD;IACvD,EAAE,CAAC,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;IACnC,8CAA8C;IAC9C,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,iDAAiD;IACjD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAUD;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,EAAE,KAAK,EAAE,GAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,aAAa,2CAiCzE"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Field — labeled text input with optional hint and trailing slot.
|
|
4
|
+
*
|
|
5
|
+
* Composition pattern from design/screens/register.jsx:
|
|
6
|
+
* <Field label="Email" hint="…" trailing={<Badge>…</Badge>} />
|
|
7
|
+
*
|
|
8
|
+
* Renders a <label> wrapping the input so the entire field area is clickable.
|
|
9
|
+
*/
|
|
10
|
+
export interface FieldProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {
|
|
11
|
+
label: string;
|
|
12
|
+
hint?: ReactNode;
|
|
13
|
+
/** Right-side slot inside the field box (e.g., a strength Badge). */
|
|
14
|
+
trailing?: ReactNode;
|
|
15
|
+
/** Use monospace input font (e.g., for password masking). */
|
|
16
|
+
mono?: boolean;
|
|
17
|
+
/** Full-width container. Defaults to true. */
|
|
18
|
+
full?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Error treatment for the field.
|
|
21
|
+
* - `true`: red border only (caller renders the message elsewhere, e.g. a sibling Alert)
|
|
22
|
+
* - `ReactNode`: red border + message rendered below via `<FieldHint tone="error">`
|
|
23
|
+
* - `undefined | null | false`: no error treatment
|
|
24
|
+
*/
|
|
25
|
+
error?: ReactNode | true;
|
|
26
|
+
/**
|
|
27
|
+
* Test ID — applied to the wrapping `<label>` as the root testid.
|
|
28
|
+
* The input gets `${testId}-input`, error gets `${testId}-error`,
|
|
29
|
+
* hint gets `${testId}-hint`. Native `data-testid` (e.g., from
|
|
30
|
+
* `react-hook-form` register) is preserved on the input too.
|
|
31
|
+
*/
|
|
32
|
+
testId?: string;
|
|
33
|
+
}
|
|
34
|
+
export declare const Field: import("react").ForwardRefExoticComponent<FieldProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
35
|
+
//# sourceMappingURL=Field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Field.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Field.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAKf;;;;;;;GAOG;AACH,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,qEAAqE;IACrE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,6DAA6D;IAC7D,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,8CAA8C;IAC9C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf;;;;;OAKG;IACH,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IACzB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,yGA8FhB,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* FieldHint — below-field helper / error text.
|
|
4
|
+
*
|
|
5
|
+
* Ported from design/components/primitives.jsx. Renders a small line of
|
|
6
|
+
* text under a form control; in `error` tone it prepends an `alert-circle`
|
|
7
|
+
* icon in `var(--danger)`.
|
|
8
|
+
*/
|
|
9
|
+
export type FieldHintTone = 'error' | 'hint';
|
|
10
|
+
export interface FieldHintProps {
|
|
11
|
+
tone?: FieldHintTone;
|
|
12
|
+
children?: ReactNode;
|
|
13
|
+
/** data-testid forwarded to the root. */
|
|
14
|
+
testId?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function FieldHint({ tone, children, testId }: FieldHintProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
//# sourceMappingURL=FieldHint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FieldHint.d.ts","sourceRoot":"","sources":["../../../src/theme/components/FieldHint.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC;;;;;;GAMG;AACH,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,MAAM,CAAC;AAE7C,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,yCAAyC;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAa,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,cAAc,2CAoB5E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Inline SVG icon set ported from design/components/icons.jsx.
|
|
4
|
+
* 1.5px stroke, 16px viewBox. All glyphs render in `currentColor` by default
|
|
5
|
+
* so an icon inherits the parent's text color unless overridden.
|
|
6
|
+
*/
|
|
7
|
+
declare const ICON_PATHS: Record<string, ReactNode>;
|
|
8
|
+
export type IconName = keyof typeof ICON_PATHS;
|
|
9
|
+
export interface IconProps {
|
|
10
|
+
name: IconName;
|
|
11
|
+
size?: number;
|
|
12
|
+
color?: string;
|
|
13
|
+
strokeWidth?: number;
|
|
14
|
+
style?: CSSProperties;
|
|
15
|
+
}
|
|
16
|
+
export declare function Icon({ name, size, color, strokeWidth, style, }: IconProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export declare const ICON_NAMES: IconName[];
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=Icon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Icon.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Icon.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD;;;;GAIG;AAEH,QAAA,MAAM,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CA2NzC,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,UAAU,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,IAAS,EACT,KAAsB,EACtB,WAAiB,EACjB,KAAK,GACN,EAAE,SAAS,2CAgBX;AAED,eAAO,MAAM,UAAU,EAA8B,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* IconButton — small square icon-only button.
|
|
4
|
+
* Ported from design/components/primitives.jsx. Used for toolbars, drawer
|
|
5
|
+
* header action clusters, composer rails. `tone="primary"` switches to a
|
|
6
|
+
* soft-primary fill; default is the neutral surface chip.
|
|
7
|
+
*/
|
|
8
|
+
export type IconButtonSize = 'sm' | 'md' | 'lg';
|
|
9
|
+
export type IconButtonTone = 'default' | 'primary';
|
|
10
|
+
export interface IconButtonProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
size?: IconButtonSize;
|
|
13
|
+
tone?: IconButtonTone;
|
|
14
|
+
testId?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare const IconButton: import("react").ForwardRefExoticComponent<IconButtonProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
17
|
+
//# sourceMappingURL=IconButton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IconButton.d.ts","sourceRoot":"","sources":["../../../src/theme/components/IconButton.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElG;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAChD,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,CAAC;AAEnD,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAID,eAAO,MAAM,UAAU,+GAmCtB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* KV — key/value display.
|
|
4
|
+
* Ported from design/components/patterns.jsx.
|
|
5
|
+
*
|
|
6
|
+
* - `layout="inline"`: key on the left, value right-aligned. Used in meta
|
|
7
|
+
* rails like the appointment flyout summary.
|
|
8
|
+
* - `layout="stack"` : uppercase eyebrow over a value block. Used in info
|
|
9
|
+
* grids like the appointment detail header.
|
|
10
|
+
*
|
|
11
|
+
* `colspan` forces a stacked KV to occupy the full grid row.
|
|
12
|
+
*/
|
|
13
|
+
export type KVLayout = 'inline' | 'stack';
|
|
14
|
+
export type KVTone = 'default' | 'success' | 'warning' | 'danger' | 'muted';
|
|
15
|
+
export interface KVProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
16
|
+
k: ReactNode;
|
|
17
|
+
v: ReactNode;
|
|
18
|
+
layout?: KVLayout;
|
|
19
|
+
tone?: KVTone;
|
|
20
|
+
mono?: boolean;
|
|
21
|
+
/** Span all columns in a parent CSS grid (only honored for layout="stack"). */
|
|
22
|
+
colspan?: boolean;
|
|
23
|
+
testId?: string;
|
|
24
|
+
}
|
|
25
|
+
export declare function KV({ k, v, layout, tone, mono, colspan, style, testId, ...rest }: KVProps): import("react/jsx-runtime").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=KV.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"KV.d.ts","sourceRoot":"","sources":["../../../src/theme/components/KV.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE;;;;;;;;;;GAUG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAC1C,MAAM,MAAM,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5E,MAAM,WAAW,OAAQ,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAC/E,CAAC,EAAE,SAAS,CAAC;IACb,CAAC,EAAE,SAAS,CAAC;IACb,MAAM,CAAC,EAAE,QAAQ,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAiBD,wBAAgB,EAAE,CAAC,EACjB,CAAC,EACD,CAAC,EACD,MAAiB,EACjB,IAAI,EACJ,IAAI,EACJ,OAAO,EACP,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,OAAO,2CAiDT"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* LabelGroup — uppercase eyebrow + a stacked content region.
|
|
4
|
+
* Ported from design/components/patterns.jsx. Use for small all-caps section
|
|
5
|
+
* headings: "PEOPLE", "TIME & PLACE", "RECURRENCE", etc.
|
|
6
|
+
*/
|
|
7
|
+
export interface LabelGroupProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
8
|
+
label: ReactNode;
|
|
9
|
+
/** Gap between children inside the content stack. */
|
|
10
|
+
gap?: number;
|
|
11
|
+
children?: ReactNode;
|
|
12
|
+
testId?: string;
|
|
13
|
+
}
|
|
14
|
+
export declare function LabelGroup({ label, gap, children, style, testId, ...rest }: LabelGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
15
|
+
//# sourceMappingURL=LabelGroup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LabelGroup.d.ts","sourceRoot":"","sources":["../../../src/theme/components/LabelGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE;;;;GAIG;AACH,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,KAAK,EAAE,SAAS,CAAC;IACjB,qDAAqD;IACrD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,EACzB,KAAK,EACL,GAAO,EACP,QAAQ,EACR,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,eAAe,2CAkBjB"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type CSSProperties } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* LangSwitcher — compact flag + language-name button shown on the front-door
|
|
4
|
+
* auth screens (sign in + register) so non-English users can switch before
|
|
5
|
+
* reading any UI copy.
|
|
6
|
+
*
|
|
7
|
+
* Ported from `design/components/primitives.jsx` LangSwitcher (lines
|
|
8
|
+
* 274–297). Adds: typed options API, a working dropdown menu (the canvas
|
|
9
|
+
* shows only the closed state), keyboard close on Escape, and click-outside.
|
|
10
|
+
*
|
|
11
|
+
* Consumer wires `value` + `onChange` to whatever language store they use
|
|
12
|
+
* (zustand / i18next / etc.) so this primitive stays state-management
|
|
13
|
+
* agnostic.
|
|
14
|
+
*/
|
|
15
|
+
export interface LangOption {
|
|
16
|
+
value: string;
|
|
17
|
+
flag: string;
|
|
18
|
+
label: string;
|
|
19
|
+
}
|
|
20
|
+
export declare const DEFAULT_LANG_OPTIONS: ReadonlyArray<LangOption>;
|
|
21
|
+
export interface LangSwitcherProps {
|
|
22
|
+
value?: string;
|
|
23
|
+
onChange?: (value: string) => void;
|
|
24
|
+
options?: ReadonlyArray<LangOption>;
|
|
25
|
+
/** Override the root data-testid. Defaults to `lang-switcher`. */
|
|
26
|
+
testId?: string;
|
|
27
|
+
style?: CSSProperties;
|
|
28
|
+
}
|
|
29
|
+
export declare function LangSwitcher({ value, onChange, options, testId, style, }: LangSwitcherProps): import("react/jsx-runtime").JSX.Element;
|
|
30
|
+
//# sourceMappingURL=LangSwitcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LangSwitcher.d.ts","sourceRoot":"","sources":["../../../src/theme/components/LangSwitcher.tsx"],"names":[],"mappings":"AAAA,OAAO,EAMN,KAAK,aAAa,EAClB,MAAM,OAAO,CAAC;AAIf;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,oBAAoB,EAAE,aAAa,CAAC,UAAU,CAI1D,CAAC;AAEF,MAAM,WAAW,iBAAiB;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,OAAO,CAAC,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IACpC,kEAAkE;IAClE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAgB,YAAY,CAAC,EAC5B,KAAY,EACZ,QAAQ,EACR,OAA8B,EAC9B,MAAwB,EACxB,KAAK,GACL,EAAE,iBAAiB,2CAiInB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* MiniStat — compact label + value (no card chrome).
|
|
4
|
+
* Ported from design/components/patterns.jsx. Use for hero strips, settings
|
|
5
|
+
* cards, and rating clusters where the surrounding container provides chrome.
|
|
6
|
+
* For full Card-wrapped KPI with sparkline, use `<Stat>`.
|
|
7
|
+
*/
|
|
8
|
+
export type MiniStatTone = 'default' | 'success' | 'warning' | 'danger' | 'ai';
|
|
9
|
+
export type MiniStatSize = 'sm' | 'md' | 'lg';
|
|
10
|
+
export interface MiniStatProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
11
|
+
label: ReactNode;
|
|
12
|
+
value: ReactNode;
|
|
13
|
+
sub?: ReactNode;
|
|
14
|
+
tone?: MiniStatTone;
|
|
15
|
+
size?: MiniStatSize;
|
|
16
|
+
mono?: boolean;
|
|
17
|
+
testId?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function MiniStat({ label, value, sub, tone, size, mono, style, testId, ...rest }: MiniStatProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=MiniStat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MiniStat.d.ts","sourceRoot":"","sources":["../../../src/theme/components/MiniStat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE;;;;;GAKG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,IAAI,CAAC;AAC/E,MAAM,MAAM,YAAY,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE9C,MAAM,WAAW,aAAc,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrF,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAmBD,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,KAAK,EACL,GAAG,EACH,IAAI,EACJ,IAAW,EACX,IAAI,EACJ,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,aAAa,2CA6Bf"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { type CSSProperties, type ReactNode } from 'react';
|
|
2
|
+
export type ModalVariant = 'confirm' | 'form';
|
|
3
|
+
export interface ModalHeaderProps {
|
|
4
|
+
/** Title text. */
|
|
5
|
+
title?: ReactNode;
|
|
6
|
+
/** Optional supporting description rendered under the title. */
|
|
7
|
+
description?: ReactNode;
|
|
8
|
+
/** Custom left-side slot — overrides `title`/`description` rendering. */
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
/** Render the close button and wire its click. */
|
|
11
|
+
onClose?: () => void;
|
|
12
|
+
style?: CSSProperties;
|
|
13
|
+
testId?: string;
|
|
14
|
+
closeTestId?: string;
|
|
15
|
+
}
|
|
16
|
+
export declare function ModalHeader({ title, description, children, onClose, style, testId, closeTestId, }: ModalHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
17
|
+
export interface ModalFooterProps {
|
|
18
|
+
children?: ReactNode;
|
|
19
|
+
style?: CSSProperties;
|
|
20
|
+
testId?: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function ModalFooter({ children, style, testId }: ModalFooterProps): import("react/jsx-runtime").JSX.Element;
|
|
23
|
+
export interface ModalProps {
|
|
24
|
+
open: boolean;
|
|
25
|
+
onClose: () => void;
|
|
26
|
+
/** `confirm` (max-width 420) or `form` (max-width 640). Default confirm. */
|
|
27
|
+
variant?: ModalVariant;
|
|
28
|
+
/** Override the computed max-width with an exact pixel value. */
|
|
29
|
+
maxWidth?: number;
|
|
30
|
+
/** Convenience: title shown via internal ModalHeader if `header` is omitted. */
|
|
31
|
+
title?: ReactNode;
|
|
32
|
+
/** Convenience: description under the title in the internal ModalHeader. */
|
|
33
|
+
description?: ReactNode;
|
|
34
|
+
/** Custom header slot — overrides internal title/description rendering. */
|
|
35
|
+
header?: ReactNode;
|
|
36
|
+
/** Custom footer slot — overrides convenience confirm/cancel buttons. */
|
|
37
|
+
footer?: ReactNode;
|
|
38
|
+
/** Convenience confirm/cancel buttons rendered into ModalFooter. */
|
|
39
|
+
confirmLabel?: ReactNode;
|
|
40
|
+
cancelLabel?: ReactNode;
|
|
41
|
+
onConfirm?: () => void;
|
|
42
|
+
/** Render confirm with the `danger` button variant (for destructive prompts). */
|
|
43
|
+
destructive?: boolean;
|
|
44
|
+
children?: ReactNode;
|
|
45
|
+
/** Forwarded as `data-testid` on root. Overlay/close/confirm/cancel get suffixes. */
|
|
46
|
+
testId?: string;
|
|
47
|
+
ariaLabel?: string;
|
|
48
|
+
style?: CSSProperties;
|
|
49
|
+
panelStyle?: CSSProperties;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Modal — centered dialog with focus trap, Escape close, and backdrop blur.
|
|
53
|
+
* Source: design/components/patterns.jsx Modal (and billing-modals.jsx
|
|
54
|
+
* `ModalOverlay`/`ModalHeader`/`ModalFooter` shadows for confirm-style usage).
|
|
55
|
+
*/
|
|
56
|
+
export declare function Modal({ open, onClose, variant, maxWidth, title, description, header, footer, confirmLabel, cancelLabel, onConfirm, destructive, children, testId, ariaLabel, style, panelStyle, }: ModalProps): import("react/jsx-runtime").JSX.Element | null;
|
|
57
|
+
//# sourceMappingURL=Modal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Modal.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Modal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,MAAM,CAAC;AAkB9C,MAAM,WAAW,gBAAgB;IAC/B,kBAAkB;IAClB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,gEAAgE;IAChE,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kDAAkD;IAClD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,WAAW,EACX,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAM,EACN,WAAW,GACZ,EAAE,gBAAgB,2CAsElB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,gBAAgB,2CAgBxE;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gFAAgF;IAChF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,4EAA4E;IAC5E,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,2EAA2E;IAC3E,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,yEAAyE;IACzE,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,oEAAoE;IACpE,YAAY,CAAC,EAAE,SAAS,CAAC;IACzB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,iFAAiF;IACjF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qFAAqF;IACrF,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,aAAa,CAAC;CAC5B;AAED;;;;GAIG;AACH,wBAAgB,KAAK,CAAC,EACpB,IAAI,EACJ,OAAO,EACP,OAAmB,EACnB,QAAQ,EACR,KAAK,EACL,WAAW,EACX,MAAM,EACN,MAAM,EACN,YAAY,EACZ,WAAW,EACX,SAAS,EACT,WAAW,EACX,QAAQ,EACR,MAAM,EACN,SAAS,EACT,KAAK,EACL,UAAU,GACX,EAAE,UAAU,kDAkKZ"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type TejaOption, type FieldChromeProps } from './fieldShell';
|
|
2
|
+
export interface MultiSelectProps extends FieldChromeProps {
|
|
3
|
+
/** Selectable options. */
|
|
4
|
+
items: TejaOption[];
|
|
5
|
+
/** Currently selected values (controlled). */
|
|
6
|
+
value: string[];
|
|
7
|
+
onChange?: (values: string[]) => void;
|
|
8
|
+
/** Trigger text when nothing is selected. Defaults to `Select…`. */
|
|
9
|
+
placeholder?: string;
|
|
10
|
+
/** Render the search input row in the panel. Defaults to `true`. */
|
|
11
|
+
searchable?: boolean;
|
|
12
|
+
/** Notified on every search-query change. */
|
|
13
|
+
onSearch?: (query: string) => void;
|
|
14
|
+
/** Show at most N chips in the trigger; the rest collapse into a `+N`. 0/undefined = show all. */
|
|
15
|
+
maxDisplayedItems?: number;
|
|
16
|
+
/** Render a "select all / clear all" row at the top of the panel. */
|
|
17
|
+
showSelectAll?: boolean;
|
|
18
|
+
/** Label for the select-all row. Defaults to `Select all`. */
|
|
19
|
+
selectAllLabel?: string;
|
|
20
|
+
/** Text when no options match the search. Defaults to `No results`. */
|
|
21
|
+
emptyText?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* MultiSelect — multi-value, searchable select with removable chips, built on
|
|
25
|
+
* Headless UI v2 `Combobox` (with `multiple`) and restyled to the theme's
|
|
26
|
+
* "Clinical Calm" tokens.
|
|
27
|
+
*
|
|
28
|
+
* The trigger is an auto-height control box (surface-0, strong border, r-md)
|
|
29
|
+
* that wraps the selected values as `--primary-soft` pills, each with an `x`
|
|
30
|
+
* remove button, plus a `+N` overflow when `maxDisplayedItems` is exceeded and
|
|
31
|
+
* a chevron. The panel renders on `--surface-0` with `--shadow-pop`; it has an
|
|
32
|
+
* optional search input row, an optional select-all row, and option rows each
|
|
33
|
+
* with a filled-check square + icon? + label + sub?.
|
|
34
|
+
*
|
|
35
|
+
* Ported from `design/components/inputs.jsx` (`MultiSelect`).
|
|
36
|
+
*/
|
|
37
|
+
export declare function MultiSelect({ items, value, onChange, placeholder, searchable, onSearch, maxDisplayedItems, showSelectAll, selectAllLabel, emptyText, label, hint, error, required, full, disabled, testId, }: MultiSelectProps): import("react/jsx-runtime").JSX.Element;
|
|
38
|
+
//# sourceMappingURL=MultiSelect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiSelect.d.ts","sourceRoot":"","sources":["../../../src/theme/components/MultiSelect.tsx"],"names":[],"mappings":"AAWA,OAAO,EAIL,KAAK,UAAU,EACf,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AAGtB,MAAM,WAAW,gBAAiB,SAAQ,gBAAgB;IACxD,0BAA0B;IAC1B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,8CAA8C;IAC9C,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACtC,oEAAoE;IACpE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oEAAoE;IACpE,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kGAAkG;IAClG,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qEAAqE;IACrE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uEAAuE;IACvE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4DD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,WAAuB,EACvB,UAAiB,EACjB,QAAQ,EACR,iBAAqB,EACrB,aAAqB,EACrB,cAA6B,EAC7B,SAAwB,EACxB,KAAK,EACL,IAAI,EACJ,KAAK,EACL,QAAQ,EACR,IAAW,EACX,QAAQ,EACR,MAAM,GACP,EAAE,gBAAgB,2CA2NlB"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { CSSProperties, ReactNode } from 'react';
|
|
2
|
+
export interface PageHeaderProps {
|
|
3
|
+
/** Uppercase eyebrow (date / section). */
|
|
4
|
+
eyebrow?: ReactNode;
|
|
5
|
+
/** H1 title. */
|
|
6
|
+
title: ReactNode;
|
|
7
|
+
/** Supporting paragraph under the title. */
|
|
8
|
+
subtitle?: ReactNode;
|
|
9
|
+
/** Additional inline content appended after subtitle. */
|
|
10
|
+
children?: ReactNode;
|
|
11
|
+
/** Right-side cluster (segmented control, search, buttons). */
|
|
12
|
+
right?: ReactNode;
|
|
13
|
+
/** Pixel margin below the header. Defaults to 18. */
|
|
14
|
+
marginBottom?: number;
|
|
15
|
+
style?: CSSProperties;
|
|
16
|
+
/** Forwarded as `data-testid`. */
|
|
17
|
+
testId?: string;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* PageHeader — eyebrow + h1 + optional subtitle + optional right cluster.
|
|
21
|
+
* Source: design/components/patterns.jsx:11
|
|
22
|
+
*/
|
|
23
|
+
export declare function PageHeader({ eyebrow, title, subtitle, children, right, marginBottom, style, testId, }: PageHeaderProps): import("react/jsx-runtime").JSX.Element;
|
|
24
|
+
//# sourceMappingURL=PageHeader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PageHeader.d.ts","sourceRoot":"","sources":["../../../src/theme/components/PageHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,eAAe;IAC9B,0CAA0C;IAC1C,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,gBAAgB;IAChB,KAAK,EAAE,SAAS,CAAC;IACjB,4CAA4C;IAC5C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,yDAAyD;IACzD,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,+DAA+D;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,KAAK,EACL,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,YAAiB,EACjB,KAAK,EACL,MAAM,GACP,EAAE,eAAe,2CAgDjB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CSSProperties } from 'react';
|
|
2
|
+
export interface PaginationProps {
|
|
3
|
+
page: number;
|
|
4
|
+
total: number;
|
|
5
|
+
onChange?: (page: number) => void;
|
|
6
|
+
style?: CSSProperties;
|
|
7
|
+
testId?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function Pagination({ page, total, onChange, style, testId }: PaginationProps): import("react/jsx-runtime").JSX.Element;
|
|
10
|
+
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAI3C,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AA6CD,wBAAgB,UAAU,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,2CA6DnF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* PersonRow — avatar + name + role/sub line, with an optional right slot.
|
|
4
|
+
* Ported from design/components/patterns.jsx. Used in client picker rows,
|
|
5
|
+
* clinician select lists, appointment people meta.
|
|
6
|
+
*/
|
|
7
|
+
export interface PersonRowProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
8
|
+
name: string;
|
|
9
|
+
sub?: ReactNode;
|
|
10
|
+
/** Avatar palette index 0-5. When omitted the Avatar derives from name. */
|
|
11
|
+
idx?: number;
|
|
12
|
+
/** Avatar diameter. Defaults to 28. */
|
|
13
|
+
size?: number;
|
|
14
|
+
right?: ReactNode;
|
|
15
|
+
testId?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare function PersonRow({ name, sub, idx, size, right, style, testId, ...rest }: PersonRowProps): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
//# sourceMappingURL=PersonRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PersonRow.d.ts","sourceRoot":"","sources":["../../../src/theme/components/PersonRow.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAItE;;;;GAIG;AACH,MAAM,WAAW,cACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,uCAAuC;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,GAAG,EACH,GAAG,EACH,IAAS,EACT,KAAK,EACL,KAAK,EACL,MAAM,EACN,GAAG,IAAI,EACR,EAAE,cAAc,2CA6BhB"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { ReactNode } from 'react';
|
|
2
|
+
import { type IconName } from './Icon';
|
|
3
|
+
/**
|
|
4
|
+
* RoleTile — large radio-card used in the Register screen to pick "Practice
|
|
5
|
+
* owner" vs "Operations manager". Renders as a clickable card with an icon,
|
|
6
|
+
* title, description, and a check indicator on the right.
|
|
7
|
+
*
|
|
8
|
+
* Stateless — parent passes `active` and `onSelect`.
|
|
9
|
+
*/
|
|
10
|
+
export interface RoleTileProps {
|
|
11
|
+
icon: IconName;
|
|
12
|
+
title: string;
|
|
13
|
+
desc?: ReactNode;
|
|
14
|
+
active?: boolean;
|
|
15
|
+
onSelect?: () => void;
|
|
16
|
+
/** data-testid forwarded to the button. */
|
|
17
|
+
testId?: string;
|
|
18
|
+
}
|
|
19
|
+
export declare function RoleTile({ icon, title, desc, active, onSelect, testId, }: RoleTileProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=RoleTile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RoleTile.d.ts","sourceRoot":"","sources":["../../../src/theme/components/RoleTile.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,IAAI,EACJ,MAAc,EACd,QAAQ,EACR,MAAM,GACP,EAAE,aAAa,2CAmFf"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export type SectionLabelTone = 'ink' | 'ai';
|
|
3
|
+
export interface SectionLabelProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
4
|
+
tone?: SectionLabelTone;
|
|
5
|
+
/** Optional element rendered before the label text (icon, sparkle, etc.). */
|
|
6
|
+
icon?: ReactNode;
|
|
7
|
+
/** Optional element rendered after the label text, pushed to the far right. */
|
|
8
|
+
right?: ReactNode;
|
|
9
|
+
children?: ReactNode;
|
|
10
|
+
/** Forwarded as `data-testid`. */
|
|
11
|
+
testId?: string;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* SectionLabel — uppercase 11px section header used across drawers and detail
|
|
15
|
+
* panels. Generalises `CreateClientSectionLabel` (create-client-drawer.jsx:163)
|
|
16
|
+
* and `ClientDetailSectionLabel` (client-detail.jsx:312) into a single primitive
|
|
17
|
+
* with optional `icon`/`right` slots and a `tone="ai"` variant (ai-scribe.jsx:271).
|
|
18
|
+
*/
|
|
19
|
+
export declare function SectionLabel({ tone, icon, right, children, style, testId, ...rest }: SectionLabelProps): import("react/jsx-runtime").JSX.Element;
|
|
20
|
+
//# sourceMappingURL=SectionLabel.d.ts.map
|