@teja-app/ui 0.0.11 → 0.0.12
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/hooks/index.d.ts +1 -1
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/useSidebar.d.ts +32 -1
- package/dist/hooks/useSidebar.d.ts.map +1 -1
- package/dist/index.cjs +0 -4879
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.ts +6 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +0 -4863
- package/dist/index.js.map +1 -1
- package/dist/theme/components/Breadcrumbs.d.ts +53 -0
- package/dist/theme/components/Breadcrumbs.d.ts.map +1 -0
- package/dist/theme/components/Checkbox.d.ts +6 -1
- package/dist/theme/components/Checkbox.d.ts.map +1 -1
- package/dist/theme/components/OTPInput.d.ts +58 -0
- package/dist/theme/components/OTPInput.d.ts.map +1 -0
- package/dist/theme/components/PasswordInput.d.ts +48 -0
- package/dist/theme/components/PasswordInput.d.ts.map +1 -0
- package/dist/{components/PillSelector/PillSelector.types.d.ts → theme/components/PillSelector.d.ts} +21 -2
- package/dist/theme/components/PillSelector.d.ts.map +1 -0
- package/dist/theme/components/Radio.d.ts +89 -0
- package/dist/theme/components/Radio.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/SidebarNav.d.ts +20 -0
- package/dist/theme/components/SidebarNav/SidebarNav.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/SidebarNavDivider.d.ts +8 -0
- package/dist/theme/components/SidebarNav/SidebarNavDivider.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/SidebarNavGroupRow.d.ts +8 -0
- package/dist/theme/components/SidebarNav/SidebarNavGroupRow.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/SidebarNavItemRow.d.ts +8 -0
- package/dist/theme/components/SidebarNav/SidebarNavItemRow.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/index.d.ts +12 -0
- package/dist/theme/components/SidebarNav/index.d.ts.map +1 -0
- package/dist/theme/components/SidebarNav/types.d.ts +157 -0
- package/dist/theme/components/SidebarNav/types.d.ts.map +1 -0
- package/dist/theme/components/Table.d.ts +70 -0
- package/dist/theme/components/Table.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +8 -0
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/index.cjs +13092 -1017
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.js +13045 -986
- package/dist/theme/index.js.map +1 -1
- package/dist/ui.css +159 -159
- package/dist/useSidebar-BWe09WbE.js.map +1 -1
- package/dist/useSidebar-d1VZFhxd.cjs.map +1 -1
- package/package.json +1 -1
- package/dist/components/Alert/Alert.d.ts +0 -13
- package/dist/components/Alert/Alert.d.ts.map +0 -1
- package/dist/components/Alert/Alert.types.d.ts +0 -17
- package/dist/components/Alert/Alert.types.d.ts.map +0 -1
- package/dist/components/Alert/index.d.ts +0 -3
- package/dist/components/Alert/index.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.d.ts +0 -13
- package/dist/components/Avatar/Avatar.d.ts.map +0 -1
- package/dist/components/Avatar/Avatar.types.d.ts +0 -18
- package/dist/components/Avatar/Avatar.types.d.ts.map +0 -1
- package/dist/components/Avatar/index.d.ts +0 -3
- package/dist/components/Avatar/index.d.ts.map +0 -1
- package/dist/components/Badge/Badge.d.ts +0 -13
- package/dist/components/Badge/Badge.d.ts.map +0 -1
- package/dist/components/Badge/Badge.types.d.ts +0 -14
- package/dist/components/Badge/Badge.types.d.ts.map +0 -1
- package/dist/components/Badge/index.d.ts +0 -3
- package/dist/components/Badge/index.d.ts.map +0 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts +0 -18
- package/dist/components/Breadcrumbs/Breadcrumbs.d.ts.map +0 -1
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts +0 -22
- package/dist/components/Breadcrumbs/Breadcrumbs.types.d.ts.map +0 -1
- package/dist/components/Breadcrumbs/index.d.ts +0 -3
- package/dist/components/Breadcrumbs/index.d.ts.map +0 -1
- package/dist/components/Button/Button.d.ts +0 -13
- package/dist/components/Button/Button.d.ts.map +0 -1
- package/dist/components/Button/Button.types.d.ts +0 -18
- package/dist/components/Button/Button.types.d.ts.map +0 -1
- package/dist/components/Button/index.d.ts +0 -3
- package/dist/components/Button/index.d.ts.map +0 -1
- package/dist/components/Card/Card.d.ts +0 -18
- package/dist/components/Card/Card.d.ts.map +0 -1
- package/dist/components/Card/Card.types.d.ts +0 -16
- package/dist/components/Card/Card.types.d.ts.map +0 -1
- package/dist/components/Card/index.d.ts +0 -3
- package/dist/components/Card/index.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.d.ts +0 -13
- package/dist/components/Checkbox/Checkbox.d.ts.map +0 -1
- package/dist/components/Checkbox/Checkbox.types.d.ts +0 -21
- package/dist/components/Checkbox/Checkbox.types.d.ts.map +0 -1
- package/dist/components/Checkbox/index.d.ts +0 -3
- package/dist/components/Checkbox/index.d.ts.map +0 -1
- package/dist/components/Combobox/Combobox.d.ts +0 -24
- package/dist/components/Combobox/Combobox.d.ts.map +0 -1
- package/dist/components/Combobox/Combobox.types.d.ts +0 -43
- package/dist/components/Combobox/Combobox.types.d.ts.map +0 -1
- package/dist/components/Combobox/index.d.ts +0 -3
- package/dist/components/Combobox/index.d.ts.map +0 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts +0 -23
- package/dist/components/ConfirmDialog/ConfirmDialog.d.ts.map +0 -1
- package/dist/components/ConfirmDialog/ConfirmDialog.types.d.ts +0 -24
- package/dist/components/ConfirmDialog/ConfirmDialog.types.d.ts.map +0 -1
- package/dist/components/ConfirmDialog/index.d.ts +0 -3
- package/dist/components/ConfirmDialog/index.d.ts.map +0 -1
- package/dist/components/DateInput/DateInput.d.ts +0 -14
- package/dist/components/DateInput/DateInput.d.ts.map +0 -1
- package/dist/components/DateInput/DateInput.types.d.ts +0 -39
- package/dist/components/DateInput/DateInput.types.d.ts.map +0 -1
- package/dist/components/DateInput/index.d.ts +0 -3
- package/dist/components/DateInput/index.d.ts.map +0 -1
- package/dist/components/Drawer/Drawer.d.ts +0 -27
- package/dist/components/Drawer/Drawer.d.ts.map +0 -1
- package/dist/components/Drawer/Drawer.types.d.ts +0 -25
- package/dist/components/Drawer/Drawer.types.d.ts.map +0 -1
- package/dist/components/Drawer/index.d.ts +0 -3
- package/dist/components/Drawer/index.d.ts.map +0 -1
- package/dist/components/EmptyState/EmptyState.d.ts +0 -34
- package/dist/components/EmptyState/EmptyState.d.ts.map +0 -1
- package/dist/components/EmptyState/EmptyState.types.d.ts +0 -19
- package/dist/components/EmptyState/EmptyState.types.d.ts.map +0 -1
- package/dist/components/EmptyState/index.d.ts +0 -3
- package/dist/components/EmptyState/index.d.ts.map +0 -1
- package/dist/components/Input/Input.d.ts +0 -13
- package/dist/components/Input/Input.d.ts.map +0 -1
- package/dist/components/Input/Input.types.d.ts +0 -20
- package/dist/components/Input/Input.types.d.ts.map +0 -1
- package/dist/components/Input/index.d.ts +0 -3
- package/dist/components/Input/index.d.ts.map +0 -1
- package/dist/components/Modal/Modal.d.ts +0 -28
- package/dist/components/Modal/Modal.d.ts.map +0 -1
- package/dist/components/Modal/Modal.types.d.ts +0 -29
- package/dist/components/Modal/Modal.types.d.ts.map +0 -1
- package/dist/components/Modal/index.d.ts +0 -3
- package/dist/components/Modal/index.d.ts.map +0 -1
- package/dist/components/MultiSelect/MultiSelect.d.ts +0 -26
- package/dist/components/MultiSelect/MultiSelect.d.ts.map +0 -1
- package/dist/components/MultiSelect/MultiSelect.types.d.ts +0 -51
- package/dist/components/MultiSelect/MultiSelect.types.d.ts.map +0 -1
- package/dist/components/MultiSelect/index.d.ts +0 -3
- package/dist/components/MultiSelect/index.d.ts.map +0 -1
- package/dist/components/OTPInput/OTPInput.d.ts +0 -22
- package/dist/components/OTPInput/OTPInput.d.ts.map +0 -1
- package/dist/components/OTPInput/OTPInput.types.d.ts +0 -19
- package/dist/components/OTPInput/OTPInput.types.d.ts.map +0 -1
- package/dist/components/OTPInput/index.d.ts +0 -3
- package/dist/components/OTPInput/index.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.d.ts +0 -35
- package/dist/components/Pagination/Pagination.d.ts.map +0 -1
- package/dist/components/Pagination/Pagination.types.d.ts +0 -31
- package/dist/components/Pagination/Pagination.types.d.ts.map +0 -1
- package/dist/components/Pagination/index.d.ts +0 -3
- package/dist/components/Pagination/index.d.ts.map +0 -1
- package/dist/components/PasswordInput/PasswordInput.d.ts +0 -12
- package/dist/components/PasswordInput/PasswordInput.d.ts.map +0 -1
- package/dist/components/PasswordInput/PasswordInput.types.d.ts +0 -16
- package/dist/components/PasswordInput/PasswordInput.types.d.ts.map +0 -1
- package/dist/components/PasswordInput/index.d.ts +0 -3
- package/dist/components/PasswordInput/index.d.ts.map +0 -1
- package/dist/components/PillSelector/PillSelector.d.ts +0 -16
- package/dist/components/PillSelector/PillSelector.d.ts.map +0 -1
- package/dist/components/PillSelector/PillSelector.types.d.ts.map +0 -1
- package/dist/components/PillSelector/index.d.ts +0 -3
- package/dist/components/PillSelector/index.d.ts.map +0 -1
- package/dist/components/Radio/Radio.d.ts +0 -12
- package/dist/components/Radio/Radio.d.ts.map +0 -1
- package/dist/components/Radio/Radio.types.d.ts +0 -49
- package/dist/components/Radio/Radio.types.d.ts.map +0 -1
- package/dist/components/Radio/RadioGroup.d.ts +0 -23
- package/dist/components/Radio/RadioGroup.d.ts.map +0 -1
- package/dist/components/Radio/index.d.ts +0 -4
- package/dist/components/Radio/index.d.ts.map +0 -1
- package/dist/components/Select/Select.d.ts +0 -22
- package/dist/components/Select/Select.d.ts.map +0 -1
- package/dist/components/Select/Select.types.d.ts +0 -42
- package/dist/components/Select/Select.types.d.ts.map +0 -1
- package/dist/components/Select/index.d.ts +0 -3
- package/dist/components/Select/index.d.ts.map +0 -1
- package/dist/components/Sidebar/Sidebar.d.ts +0 -36
- package/dist/components/Sidebar/Sidebar.d.ts.map +0 -1
- package/dist/components/Sidebar/Sidebar.types.d.ts +0 -200
- package/dist/components/Sidebar/Sidebar.types.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarDivider.d.ts +0 -12
- package/dist/components/Sidebar/SidebarDivider.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarGroup.d.ts +0 -26
- package/dist/components/Sidebar/SidebarGroup.d.ts.map +0 -1
- package/dist/components/Sidebar/SidebarItem.d.ts +0 -23
- package/dist/components/Sidebar/SidebarItem.d.ts.map +0 -1
- package/dist/components/Sidebar/index.d.ts +0 -9
- package/dist/components/Sidebar/index.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.d.ts +0 -22
- package/dist/components/Skeleton/Skeleton.d.ts.map +0 -1
- package/dist/components/Skeleton/Skeleton.types.d.ts +0 -19
- package/dist/components/Skeleton/Skeleton.types.d.ts.map +0 -1
- package/dist/components/Skeleton/index.d.ts +0 -3
- package/dist/components/Skeleton/index.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.d.ts +0 -13
- package/dist/components/Spinner/Spinner.d.ts.map +0 -1
- package/dist/components/Spinner/Spinner.types.d.ts +0 -14
- package/dist/components/Spinner/Spinner.types.d.ts.map +0 -1
- package/dist/components/Spinner/index.d.ts +0 -3
- package/dist/components/Spinner/index.d.ts.map +0 -1
- package/dist/components/Table/Table.d.ts +0 -44
- package/dist/components/Table/Table.d.ts.map +0 -1
- package/dist/components/Table/Table.types.d.ts +0 -33
- package/dist/components/Table/Table.types.d.ts.map +0 -1
- package/dist/components/Table/index.d.ts +0 -3
- package/dist/components/Table/index.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.d.ts +0 -43
- package/dist/components/Tabs/Tabs.d.ts.map +0 -1
- package/dist/components/Tabs/Tabs.types.d.ts +0 -42
- package/dist/components/Tabs/Tabs.types.d.ts.map +0 -1
- package/dist/components/Tabs/index.d.ts +0 -3
- package/dist/components/Tabs/index.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.d.ts +0 -13
- package/dist/components/Textarea/Textarea.d.ts.map +0 -1
- package/dist/components/Textarea/Textarea.types.d.ts +0 -22
- package/dist/components/Textarea/Textarea.types.d.ts.map +0 -1
- package/dist/components/Textarea/index.d.ts +0 -3
- package/dist/components/Textarea/index.d.ts.map +0 -1
- package/dist/components/Toggle/Toggle.d.ts +0 -20
- package/dist/components/Toggle/Toggle.d.ts.map +0 -1
- package/dist/components/Toggle/Toggle.types.d.ts +0 -22
- package/dist/components/Toggle/Toggle.types.d.ts.map +0 -1
- package/dist/components/Toggle/index.d.ts +0 -3
- package/dist/components/Toggle/index.d.ts.map +0 -1
- package/dist/components/index.d.ts +0 -32
- package/dist/components/index.d.ts.map +0 -1
- package/dist/style-D6av97Pw.cjs +0 -10406
- package/dist/style-D6av97Pw.cjs.map +0 -1
- package/dist/style-DyXPy-7b.js +0 -10392
- package/dist/style-DyXPy-7b.js.map +0 -1
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
|
+
export interface BreadcrumbItem {
|
|
3
|
+
/** Display label */
|
|
4
|
+
label: string;
|
|
5
|
+
/** URL/path for navigation (omit for current page) */
|
|
6
|
+
href?: string;
|
|
7
|
+
/** Optional icon before label */
|
|
8
|
+
icon?: ReactNode;
|
|
9
|
+
}
|
|
10
|
+
export interface BreadcrumbsProps extends HTMLAttributes<HTMLElement> {
|
|
11
|
+
/** Breadcrumb items */
|
|
12
|
+
items: BreadcrumbItem[];
|
|
13
|
+
/** Separator between items (default: chevron icon) */
|
|
14
|
+
separator?: ReactNode;
|
|
15
|
+
/** Maximum items to show before collapsing (0 = no collapse) */
|
|
16
|
+
maxItems?: number;
|
|
17
|
+
/** Render function for links (for custom routing, e.g. React Router Link) */
|
|
18
|
+
renderLink?: (item: BreadcrumbItem, children: ReactNode) => ReactNode;
|
|
19
|
+
/** Forwarded as `data-testid` (and `data-test-id`) on the root element.
|
|
20
|
+
* Child items receive `{testId}-item-{index}`. */
|
|
21
|
+
testId?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Breadcrumbs — navigation hierarchy trail.
|
|
25
|
+
*
|
|
26
|
+
* Drop-in replacement for the legacy `@teja-app/ui` Breadcrumbs: identical
|
|
27
|
+
* public prop API (`items`, `separator`, `maxItems`, `renderLink`, `testId`),
|
|
28
|
+
* styled with CSS-var tokens from the `@teja-app/ui/theme` design system.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```tsx
|
|
32
|
+
* <Breadcrumbs
|
|
33
|
+
* items={[
|
|
34
|
+
* { label: 'Home', href: '/' },
|
|
35
|
+
* { label: 'Clients', href: '/clients' },
|
|
36
|
+
* { label: 'John Smith', href: '/clients/123' },
|
|
37
|
+
* { label: 'Notes' },
|
|
38
|
+
* ]}
|
|
39
|
+
* />
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* @example Custom router integration
|
|
43
|
+
* ```tsx
|
|
44
|
+
* <Breadcrumbs
|
|
45
|
+
* items={items}
|
|
46
|
+
* renderLink={(item, children) => (
|
|
47
|
+
* <Link to={item.href!}>{children}</Link>
|
|
48
|
+
* )}
|
|
49
|
+
* />
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export declare const Breadcrumbs: import("react").ForwardRefExoticComponent<BreadcrumbsProps & import("react").RefAttributes<HTMLElement>>;
|
|
53
|
+
//# sourceMappingURL=Breadcrumbs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Breadcrumbs.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Breadcrumbs.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAMtE,MAAM,WAAW,cAAc;IAC7B,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,sDAAsD;IACtD,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,WAAW,CAAC;IACnE,uBAAuB;IACvB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,sDAAsD;IACtD,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,KAAK,SAAS,CAAC;IACtE;uDACmD;IACnD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAgED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,eAAO,MAAM,WAAW,0GAkKvB,CAAC"}
|
|
@@ -13,11 +13,16 @@ export interface CheckboxProps extends Omit<InputHTMLAttributes<HTMLInputElement
|
|
|
13
13
|
tone?: 'block' | 'inline';
|
|
14
14
|
/** Custom outer style for the wrapping label. */
|
|
15
15
|
containerStyle?: CSSProperties;
|
|
16
|
+
/**
|
|
17
|
+
* Tri-state: renders the dash glyph and sets the native input's
|
|
18
|
+
* `indeterminate` DOM property (used by "select all" rows).
|
|
19
|
+
*/
|
|
20
|
+
indeterminate?: boolean;
|
|
16
21
|
/**
|
|
17
22
|
* Test ID — applied to the wrapping `<label>` as the root. The native
|
|
18
23
|
* input gets `${testId}-input`, the styled square gets `${testId}-square`.
|
|
19
24
|
*/
|
|
20
25
|
testId?: string;
|
|
21
26
|
}
|
|
22
|
-
export declare function Checkbox({ label, tone, containerStyle, checked, testId, ...inputProps }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
27
|
+
export declare function Checkbox({ label, tone, containerStyle, checked, indeterminate, testId, ...inputProps }: CheckboxProps): import("react/jsx-runtime").JSX.Element;
|
|
23
28
|
//# sourceMappingURL=Checkbox.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Checkbox.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Checkbox.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Checkbox.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,mBAAmB,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAI3E;;;;;;;GAOG;AACH,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpE,wFAAwF;IACxF,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAC;IAC1B,iDAAiD;IACjD,cAAc,CAAC,EAAE,aAAa,CAAC;IAC/B;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,QAAQ,CAAC,EACvB,KAAK,EACL,IAAe,EACf,cAAc,EACd,OAAO,EACP,aAAqB,EACrB,MAAM,EACN,GAAG,UAAU,EACd,EAAE,aAAa,2CAoGf"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { type HTMLAttributes } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* OTPInput — theme-layer, variable-length one-time-code input.
|
|
4
|
+
*
|
|
5
|
+
* Drop-in replacement for the legacy `@teja-app/ui` OTPInput. Preserves the
|
|
6
|
+
* full public prop API (length, value, onChange, error, disabled, autoFocus,
|
|
7
|
+
* label, className) and adds theme-house-style extras: CSS-var tokens, inline
|
|
8
|
+
* style objects, forwardRef, and `testId`.
|
|
9
|
+
*
|
|
10
|
+
* Visual states per cell:
|
|
11
|
+
* - empty neutral border + surface-1 fill
|
|
12
|
+
* - active primary border + ring + blinking caret overlay
|
|
13
|
+
* - filled border-strong + surface-0 fill + ink-1 digit
|
|
14
|
+
* - error danger border + danger-tinted fill + danger digit
|
|
15
|
+
* - disabled reduced opacity, not-allowed cursor
|
|
16
|
+
*
|
|
17
|
+
* Interaction behaviours (preserved from legacy):
|
|
18
|
+
* - Auto-focus first empty cell on mount when autoFocus is true.
|
|
19
|
+
* - Typing a digit auto-advances focus to the next cell.
|
|
20
|
+
* - Backspace on an empty cell jumps back and clears the previous cell.
|
|
21
|
+
* - ArrowLeft / ArrowRight navigate between cells.
|
|
22
|
+
* - Delete clears the current cell without moving focus.
|
|
23
|
+
* - Paste strips non-digits and fills cells left-to-right from paste point.
|
|
24
|
+
* - onFocus selects the cell content for easy overwrite.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```tsx
|
|
28
|
+
* const [code, setCode] = useState('');
|
|
29
|
+
* <OTPInput value={code} onChange={setCode} />
|
|
30
|
+
* <OTPInput value={code} onChange={setCode} length={4} error="Invalid code" />
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export interface OTPInputProps extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'> {
|
|
34
|
+
/** Number of digit cells. Defaults to 6. */
|
|
35
|
+
length?: number;
|
|
36
|
+
/** Current value — a numeric string up to `length` chars. */
|
|
37
|
+
value: string;
|
|
38
|
+
/** Fired on every mutation; receives the joined digit string. */
|
|
39
|
+
onChange: (value: string) => void;
|
|
40
|
+
/** Error message displayed below the cell row. */
|
|
41
|
+
error?: string;
|
|
42
|
+
/** Disables all cells. */
|
|
43
|
+
disabled?: boolean;
|
|
44
|
+
/** Auto-focus the first empty cell on mount. Defaults to false. */
|
|
45
|
+
autoFocus?: boolean;
|
|
46
|
+
/** Screen-reader label for the cell group. Defaults to 'One-time password'. */
|
|
47
|
+
label?: string;
|
|
48
|
+
/** Additional CSS class for the root container. */
|
|
49
|
+
className?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Root `data-testid` / `data-test-id` value. Each cell gets `${testId}-digit-${i}`.
|
|
52
|
+
* Defaults to `otp-input`.
|
|
53
|
+
*/
|
|
54
|
+
testId?: string;
|
|
55
|
+
}
|
|
56
|
+
export declare const OTPInput: import("react").ForwardRefExoticComponent<OTPInputProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
57
|
+
export default OTPInput;
|
|
58
|
+
//# sourceMappingURL=OTPInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OTPInput.d.ts","sourceRoot":"","sources":["../../../src/theme/components/OTPInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,cAAc,EAEpB,MAAM,OAAO,CAAC;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAMH,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,4CAA4C;IAC5C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,6DAA6D;IAC7D,KAAK,EAAE,MAAM,CAAC;IACd,iEAAiE;IACjE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,+EAA+E;IAC/E,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,mDAAmD;IACnD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAqGD,eAAO,MAAM,QAAQ,0GA6RpB,CAAC;AAEF,eAAe,QAAQ,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { type InputHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type FieldChromeProps } from './fieldShell';
|
|
3
|
+
export interface PasswordStrength {
|
|
4
|
+
/** Strength percentage (0–100) */
|
|
5
|
+
strength: number;
|
|
6
|
+
/** Display label */
|
|
7
|
+
label: 'Weak' | 'Medium' | 'Strong' | '';
|
|
8
|
+
/** CSS-var background colour token for the progress bar segment */
|
|
9
|
+
colorVar: string;
|
|
10
|
+
/** CSS-var text colour token for the label */
|
|
11
|
+
textColorVar: string;
|
|
12
|
+
}
|
|
13
|
+
export interface PasswordInputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'>, Omit<FieldChromeProps, 'disabled'> {
|
|
14
|
+
/** Show the strength indicator bar + label below the input. */
|
|
15
|
+
showStrengthIndicator?: boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Root test ID. Applied to the outer wrapper as both `data-testid` and
|
|
18
|
+
* `data-test-id`; children are suffixed (`-input`, `-toggle-button`,
|
|
19
|
+
* `-strength`, `-error`, `-hint`).
|
|
20
|
+
*/
|
|
21
|
+
testId?: string;
|
|
22
|
+
/**
|
|
23
|
+
* Legacy compat: `fullWidth` is accepted as an alias for `full`.
|
|
24
|
+
* Consumers migrating from legacy Input/PasswordInput can keep using it.
|
|
25
|
+
*/
|
|
26
|
+
fullWidth?: boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Legacy compat: `helperText` is accepted as an alias for `hint`.
|
|
29
|
+
*/
|
|
30
|
+
helperText?: ReactNode;
|
|
31
|
+
/**
|
|
32
|
+
* Shows a loading spinner in the trailing position (right slot).
|
|
33
|
+
* Preserved from legacy `isLoading` so callers don't regress.
|
|
34
|
+
*/
|
|
35
|
+
isLoading?: boolean;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* PasswordInput — themed text input with show/hide reveal toggle and an
|
|
39
|
+
* optional password-strength indicator bar. Drop-in replacement for the legacy
|
|
40
|
+
* `@teja-app/ui` `PasswordInput`; swap the import path and remove Tailwind
|
|
41
|
+
* class overrides.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* <PasswordInput label="Password" placeholder="Enter password" />
|
|
45
|
+
* <PasswordInput label="Password" showStrengthIndicator value={pw} onChange={…} />
|
|
46
|
+
*/
|
|
47
|
+
export declare const PasswordInput: import("react").ForwardRefExoticComponent<PasswordInputProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
48
|
+
//# sourceMappingURL=PasswordInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PasswordInput.d.ts","sourceRoot":"","sources":["../../../src/theme/components/PasswordInput.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,mBAAmB,EACxB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAIL,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAC;AA2CtB,MAAM,WAAW,gBAAgB;IAC/B,kCAAkC;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,oBAAoB;IACpB,KAAK,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;IACzC,mEAAmE;IACnE,QAAQ,EAAE,MAAM,CAAC;IACjB,8CAA8C;IAC9C,YAAY,EAAE,MAAM,CAAC;CACtB;AAyCD,MAAM,WAAW,kBACf,SAAQ,IAAI,CACV,mBAAmB,CAAC,gBAAgB,CAAC,EACrC,MAAM,GAAG,MAAM,CAChB,EACC,IAAI,CAAC,gBAAgB,EAAE,UAAU,CAAC;IACpC,+DAA+D;IAC/D,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,UAAU,CAAC,EAAE,SAAS,CAAC;IACvB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AA+CD;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,iHAgKzB,CAAC"}
|
package/dist/{components/PillSelector/PillSelector.types.d.ts → theme/components/PillSelector.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
2
|
export type PillSelectorSize = 'sm' | 'md' | 'lg';
|
|
3
3
|
export interface PillOption {
|
|
4
4
|
/** Unique value for the option */
|
|
@@ -25,5 +25,24 @@ export interface PillSelectorProps extends Omit<HTMLAttributes<HTMLDivElement>,
|
|
|
25
25
|
fullWidth?: boolean;
|
|
26
26
|
/** Disable the selector */
|
|
27
27
|
disabled?: boolean;
|
|
28
|
+
/** Forwarded as `data-testid` on the root div. */
|
|
29
|
+
testId?: string;
|
|
28
30
|
}
|
|
29
|
-
|
|
31
|
+
/**
|
|
32
|
+
* PillSelector — segmented pill chooser for multi- or single-select chip UI.
|
|
33
|
+
*
|
|
34
|
+
* Preserves the exact legacy public API from `teja-ui/src/components/PillSelector/`.
|
|
35
|
+
* Styled with CSS-var tokens from the `@teja-app/ui/theme` design system.
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```tsx
|
|
39
|
+
* const [selected, setSelected] = useState<string[]>([]);
|
|
40
|
+
* <PillSelector
|
|
41
|
+
* options={[{ value: 'a', label: 'Option A' }, { value: 'b', label: 'Option B' }]}
|
|
42
|
+
* selected={selected}
|
|
43
|
+
* onChange={setSelected}
|
|
44
|
+
* />
|
|
45
|
+
* ```
|
|
46
|
+
*/
|
|
47
|
+
export declare const PillSelector: import("react").ForwardRefExoticComponent<PillSelectorProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
48
|
+
//# sourceMappingURL=PillSelector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PillSelector.d.ts","sourceRoot":"","sources":["../../../src/theme/components/PillSelector.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAkC,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAI5F,MAAM,MAAM,gBAAgB,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;IACd,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,+BAA+B;IAC/B,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,iBACf,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACxD,wBAAwB;IACxB,OAAO,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3B,gCAAgC;IAChC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACxB,oCAAoC;IACpC,QAAQ,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;IAC5C,gDAAgD;IAChD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,wBAAwB;IACxB,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,6BAA6B;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kDAAkD;IAClD,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,2BAA2B;IAC3B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAoBD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,YAAY,8GAiIxB,CAAC"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type CSSProperties, type InputHTMLAttributes } from 'react';
|
|
2
|
+
export type RadioSize = 'sm' | 'md' | 'lg';
|
|
3
|
+
export interface RadioOption {
|
|
4
|
+
/** Option value */
|
|
5
|
+
value: string;
|
|
6
|
+
/** Option label */
|
|
7
|
+
label: string;
|
|
8
|
+
/** Disable this option */
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export interface RadioProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'type' | 'size'> {
|
|
12
|
+
/** Radio label */
|
|
13
|
+
label?: string;
|
|
14
|
+
/** Radio size */
|
|
15
|
+
size?: RadioSize;
|
|
16
|
+
/** Error state (typically set by RadioGroup) */
|
|
17
|
+
error?: boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Test ID — applied to the wrapping `<label>` as root.
|
|
20
|
+
* The native input gets `${testId}-radio`; the label span gets `${testId}-label`.
|
|
21
|
+
*/
|
|
22
|
+
testId?: string;
|
|
23
|
+
}
|
|
24
|
+
export interface RadioGroupProps {
|
|
25
|
+
/** Group name (required for proper radio behavior) */
|
|
26
|
+
name: string;
|
|
27
|
+
/** Available options */
|
|
28
|
+
options: RadioOption[];
|
|
29
|
+
/** Currently selected value */
|
|
30
|
+
value?: string;
|
|
31
|
+
/** Callback when selection changes */
|
|
32
|
+
onChange?: (value: string) => void;
|
|
33
|
+
/** Group label */
|
|
34
|
+
label?: string;
|
|
35
|
+
/** Radio size */
|
|
36
|
+
size?: RadioSize;
|
|
37
|
+
/** Error message */
|
|
38
|
+
error?: string;
|
|
39
|
+
/** Helper text */
|
|
40
|
+
helperText?: string;
|
|
41
|
+
/** Disable all options */
|
|
42
|
+
disabled?: boolean;
|
|
43
|
+
/** Layout direction */
|
|
44
|
+
orientation?: 'vertical' | 'horizontal';
|
|
45
|
+
/** Additional inline style on the root fieldset */
|
|
46
|
+
style?: CSSProperties;
|
|
47
|
+
/** Shows loading spinner and disables group */
|
|
48
|
+
isLoading?: boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Test ID — applied to the wrapping `<fieldset>`.
|
|
51
|
+
* Each option gets `${testId}-option-{index}`; error/helper get suffixed too.
|
|
52
|
+
*/
|
|
53
|
+
testId?: string;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Radio — a single radio input with an optional label. Typically used inside
|
|
57
|
+
* a `RadioGroup`, but can be used standalone.
|
|
58
|
+
*
|
|
59
|
+
* Styled entirely with CSS-var tokens — no Tailwind, no hex literals.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```tsx
|
|
63
|
+
* <Radio name="plan" value="pro" label="Pro" checked={plan === 'pro'} onChange={…} />
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export declare const Radio: import("react").ForwardRefExoticComponent<RadioProps & import("react").RefAttributes<HTMLInputElement>>;
|
|
67
|
+
/**
|
|
68
|
+
* RadioGroup — manages a group of radio options with optional label, error,
|
|
69
|
+
* helper text, orientation, and loading state.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```tsx
|
|
73
|
+
* <RadioGroup
|
|
74
|
+
* name="status"
|
|
75
|
+
* label="Status"
|
|
76
|
+
* options={[
|
|
77
|
+
* { value: 'active', label: 'Active' },
|
|
78
|
+
* { value: 'inactive', label: 'Inactive' },
|
|
79
|
+
* ]}
|
|
80
|
+
* value={status}
|
|
81
|
+
* onChange={setStatus}
|
|
82
|
+
* />
|
|
83
|
+
* ```
|
|
84
|
+
*/
|
|
85
|
+
export declare function RadioGroup({ name, options, value, onChange, label, size, error, helperText, disabled, orientation, style, isLoading, testId, }: RadioGroupProps): import("react/jsx-runtime").JSX.Element;
|
|
86
|
+
export declare namespace RadioGroup {
|
|
87
|
+
var displayName: string;
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=Radio.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Radio.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Radio.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAMjF,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAE3C,MAAM,WAAW,WAAW;IAC1B,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,mBAAmB;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UACf,SAAQ,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACpE,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,gDAAgD;IAChD,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,eAAe;IAC9B,sDAAsD;IACtD,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,oBAAoB;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kBAAkB;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0BAA0B;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uBAAuB;IACvB,WAAW,CAAC,EAAE,UAAU,GAAG,YAAY,CAAC;IACxC,mDAAmD;IACnD,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,+CAA+C;IAC/C,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAyCD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,KAAK,yGAgHhB,CAAC;AAMH;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,UAAU,CAAC,EACzB,IAAI,EACJ,OAAO,EACP,KAAK,EACL,QAAQ,EACR,KAAK,EACL,IAAW,EACX,KAAK,EACL,UAAU,EACV,QAAgB,EAChB,WAAwB,EACxB,KAAK,EACL,SAAiB,EACjB,MAAM,GACP,EAAE,eAAe,2CA+FjB;yBA7Ge,UAAU"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { SidebarNavProps } from './types';
|
|
2
|
+
export declare function ensureSidebarNavStyles(): void;
|
|
3
|
+
/**
|
|
4
|
+
* SidebarNav — theme port of the legacy @teja-app/ui Sidebar component.
|
|
5
|
+
*
|
|
6
|
+
* Provides a responsive navigation container with:
|
|
7
|
+
* - Mobile overlay + open/close state (fixed, translated off-screen when closed)
|
|
8
|
+
* - Collapsible desktop mode (icon-only, via `collapsed` + `onCollapsedChange`)
|
|
9
|
+
* - Four navigation zones: featured / primary / secondary / bottom
|
|
10
|
+
* - Custom LinkComponent for router integration
|
|
11
|
+
*
|
|
12
|
+
* Named SidebarNav to avoid colliding with the existing opinionated Sidebar
|
|
13
|
+
* component already exported by @teja-app/ui/theme.
|
|
14
|
+
*
|
|
15
|
+
* On desktop (lg+) the sidebar becomes `position: static` via injected CSS
|
|
16
|
+
* (see `ensureSidebarNavStyles`). The component calls this automatically on
|
|
17
|
+
* first render.
|
|
18
|
+
*/
|
|
19
|
+
export declare const SidebarNav: import("react").ForwardRefExoticComponent<SidebarNavProps & import("react").RefAttributes<HTMLElement>>;
|
|
20
|
+
//# sourceMappingURL=SidebarNav.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNav.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/SidebarNav.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAqB,MAAM,SAAS,CAAC;AAWlE,wBAAgB,sBAAsB,IAAI,IAAI,CAkB7C;AAuFD;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,UAAU,yGAgPtB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SidebarNavDividerProps } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* SidebarNavDivider — visual separator between navigation sections.
|
|
4
|
+
* Theme port of the legacy SidebarDivider component.
|
|
5
|
+
* Uses CSS-var inline styles instead of Tailwind className.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SidebarNavDivider: import("react").ForwardRefExoticComponent<SidebarNavDividerProps & import("react").RefAttributes<HTMLHRElement>>;
|
|
8
|
+
//# sourceMappingURL=SidebarNavDivider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNavDivider.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/SidebarNavDivider.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AAEtD;;;;GAIG;AACH,eAAO,MAAM,iBAAiB,kHA6C7B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SidebarNavGroupRowProps, SidebarNavGroup } from './types';
|
|
2
|
+
export declare function shouldShowNavGroup(group: SidebarNavGroup): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Renders a navigation group (optional label + list of items).
|
|
5
|
+
* Theme port of legacy SidebarGroup — uses inline styles instead of Tailwind.
|
|
6
|
+
*/
|
|
7
|
+
export declare const SidebarNavGroupRow: import("react").ForwardRefExoticComponent<SidebarNavGroupRowProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
8
|
+
//# sourceMappingURL=SidebarNavGroupRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNavGroupRow.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/SidebarNavGroupRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAKxE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAKlE;AAID;;;GAGG;AACH,eAAO,MAAM,kBAAkB,oHAwD9B,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SidebarNavItemRowProps, SidebarNavItemConfig } from './types';
|
|
2
|
+
export declare function shouldShowNavItem(item: SidebarNavItemConfig): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Renders a single navigation item inside SidebarNav.
|
|
5
|
+
* Theme port of legacy SidebarItem — uses inline style objects instead of Tailwind.
|
|
6
|
+
*/
|
|
7
|
+
export declare function SidebarNavItemRow({ item, currentPath, size, collapsed, onNavigate, LinkComponent, testId, }: SidebarNavItemRowProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=SidebarNavItemRow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SidebarNavItemRow.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/SidebarNavItemRow.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EACtB,oBAAoB,EAIrB,MAAM,SAAS,CAAC;AAIjB,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAKrE;AA4HD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAChC,IAAI,EACJ,WAAW,EACX,IAAW,EACX,SAAiB,EACjB,UAAU,EACV,aAAa,EACb,MAAM,GACP,EAAE,sBAAsB,kDA2ExB"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SidebarNav — theme port of the legacy @teja-app/ui Sidebar component family.
|
|
3
|
+
*
|
|
4
|
+
* Named with the SidebarNav prefix to avoid colliding with the existing
|
|
5
|
+
* opinionated Sidebar (and SidebarNavItem) components in the theme.
|
|
6
|
+
*/
|
|
7
|
+
export { SidebarNav, ensureSidebarNavStyles } from './SidebarNav';
|
|
8
|
+
export { SidebarNavDivider } from './SidebarNavDivider';
|
|
9
|
+
export { SidebarNavGroupRow } from './SidebarNavGroupRow';
|
|
10
|
+
export { SidebarNavItemRow, shouldShowNavItem } from './SidebarNavItemRow';
|
|
11
|
+
export type { SidebarNavProps, SidebarNavGroup, SidebarNavItemConfig, SidebarNavGroupRowProps, SidebarNavItemRowProps, SidebarNavDividerProps, SidebarNavLinkProps, SidebarNavSize, SidebarNavVariant, SidebarNavActiveMatcher, SidebarNavPermissionCheck, } from './types';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,UAAU,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE3E,YAAY,EACV,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,uBAAuB,EACvB,yBAAyB,GAC1B,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import type { HTMLAttributes, ReactNode, ComponentType } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Active state matcher type
|
|
4
|
+
* - 'exact': path === href
|
|
5
|
+
* - 'startsWith': path.startsWith(href)
|
|
6
|
+
* - function: custom matching logic
|
|
7
|
+
*/
|
|
8
|
+
export type SidebarNavActiveMatcher = 'exact' | 'startsWith' | ((currentPath: string, href: string) => boolean);
|
|
9
|
+
/**
|
|
10
|
+
* Permission check function type
|
|
11
|
+
*/
|
|
12
|
+
export type SidebarNavPermissionCheck = () => boolean;
|
|
13
|
+
/**
|
|
14
|
+
* Individual navigation item configuration (ported from legacy Sidebar)
|
|
15
|
+
*/
|
|
16
|
+
export interface SidebarNavItemConfig {
|
|
17
|
+
/** Unique identifier for the item */
|
|
18
|
+
key: string;
|
|
19
|
+
/** Display label */
|
|
20
|
+
label: string;
|
|
21
|
+
/** Navigation href/path */
|
|
22
|
+
href: string;
|
|
23
|
+
/** Icon element to display */
|
|
24
|
+
icon?: ReactNode;
|
|
25
|
+
/** Badge count or text */
|
|
26
|
+
badge?: number | string;
|
|
27
|
+
/** Whether item is disabled */
|
|
28
|
+
disabled?: boolean;
|
|
29
|
+
/** Visibility control */
|
|
30
|
+
visible?: boolean | SidebarNavPermissionCheck;
|
|
31
|
+
/** How to determine active state (default: 'exact') */
|
|
32
|
+
activeMatch?: SidebarNavActiveMatcher;
|
|
33
|
+
/** Nested items (future use) */
|
|
34
|
+
children?: SidebarNavItemConfig[];
|
|
35
|
+
/** Click handler for non-navigation actions */
|
|
36
|
+
onClick?: () => void;
|
|
37
|
+
/** Accessibility label override */
|
|
38
|
+
'aria-label'?: string;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Navigation group configuration — named SidebarNavGroup to match the legacy
|
|
42
|
+
* export that the consumer (frontend Sidebar.tsx) imports.
|
|
43
|
+
*/
|
|
44
|
+
export interface SidebarNavGroup {
|
|
45
|
+
/** Unique identifier for the group */
|
|
46
|
+
key: string;
|
|
47
|
+
/** Optional group label/heading */
|
|
48
|
+
label?: string;
|
|
49
|
+
/** Navigation items in this group */
|
|
50
|
+
items: SidebarNavItemConfig[];
|
|
51
|
+
/** Visibility control for entire group */
|
|
52
|
+
visible?: boolean | SidebarNavPermissionCheck;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Size variant (sm/md/lg — maps to padding/font-size)
|
|
56
|
+
*/
|
|
57
|
+
export type SidebarNavSize = 'sm' | 'md' | 'lg';
|
|
58
|
+
/**
|
|
59
|
+
* Visual variant
|
|
60
|
+
*/
|
|
61
|
+
export type SidebarNavVariant = 'default' | 'minimal';
|
|
62
|
+
/**
|
|
63
|
+
* Link component props for router integration.
|
|
64
|
+
* Consumers may destructure only what they need — extras are safely ignored.
|
|
65
|
+
*/
|
|
66
|
+
export interface SidebarNavLinkProps {
|
|
67
|
+
to: string;
|
|
68
|
+
className?: string;
|
|
69
|
+
children: ReactNode;
|
|
70
|
+
onClick?: () => void;
|
|
71
|
+
title?: string;
|
|
72
|
+
'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
|
|
73
|
+
'aria-label'?: string;
|
|
74
|
+
/** Forwarded style so the theme can drive appearance without className */
|
|
75
|
+
style?: React.CSSProperties;
|
|
76
|
+
onMouseEnter?: React.MouseEventHandler;
|
|
77
|
+
onMouseLeave?: React.MouseEventHandler;
|
|
78
|
+
/** data-testid forwarded to the DOM anchor/link */
|
|
79
|
+
'data-testid'?: string;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Props for the SidebarNavItemRow sub-component
|
|
83
|
+
*/
|
|
84
|
+
export interface SidebarNavItemRowProps extends Omit<HTMLAttributes<HTMLElement>, 'onClick'> {
|
|
85
|
+
item: SidebarNavItemConfig;
|
|
86
|
+
currentPath?: string;
|
|
87
|
+
size?: SidebarNavSize;
|
|
88
|
+
collapsed?: boolean;
|
|
89
|
+
onNavigate?: (href: string) => void;
|
|
90
|
+
LinkComponent?: ComponentType<SidebarNavLinkProps>;
|
|
91
|
+
testId?: string;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Props for SidebarNavGroupRow sub-component
|
|
95
|
+
*/
|
|
96
|
+
export interface SidebarNavGroupRowProps extends HTMLAttributes<HTMLElement> {
|
|
97
|
+
group: SidebarNavGroup;
|
|
98
|
+
currentPath?: string;
|
|
99
|
+
size?: SidebarNavSize;
|
|
100
|
+
collapsed?: boolean;
|
|
101
|
+
LinkComponent?: ComponentType<SidebarNavLinkProps>;
|
|
102
|
+
onNavigate?: (href: string) => void;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Props for SidebarNavDivider
|
|
106
|
+
*/
|
|
107
|
+
export interface SidebarNavDividerProps extends HTMLAttributes<HTMLHRElement> {
|
|
108
|
+
/** Optional label for the divider */
|
|
109
|
+
label?: string;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Props for SidebarNav (the main ported component, equivalent to legacy Sidebar)
|
|
113
|
+
*/
|
|
114
|
+
export interface SidebarNavProps extends HTMLAttributes<HTMLElement> {
|
|
115
|
+
/** Navigation groups organized by position */
|
|
116
|
+
navigation: {
|
|
117
|
+
/** Featured items at the very top */
|
|
118
|
+
featured?: SidebarNavGroup[];
|
|
119
|
+
/** Primary navigation items */
|
|
120
|
+
primary?: SidebarNavGroup[];
|
|
121
|
+
/** Secondary navigation items (below divider) */
|
|
122
|
+
secondary?: SidebarNavGroup[];
|
|
123
|
+
/** Bottom navigation items */
|
|
124
|
+
bottom?: SidebarNavGroup[];
|
|
125
|
+
};
|
|
126
|
+
/** Current router path for active detection */
|
|
127
|
+
currentPath?: string;
|
|
128
|
+
/** Whether sidebar is open (for mobile) */
|
|
129
|
+
isOpen?: boolean;
|
|
130
|
+
/** Callback when sidebar should close (mobile) */
|
|
131
|
+
onClose?: () => void;
|
|
132
|
+
/** Whether sidebar is collapsed (desktop) */
|
|
133
|
+
collapsed?: boolean;
|
|
134
|
+
/** Callback when collapse state changes */
|
|
135
|
+
onCollapsedChange?: (collapsed: boolean) => void;
|
|
136
|
+
/** Visual variant */
|
|
137
|
+
variant?: SidebarNavVariant;
|
|
138
|
+
/** Size of nav items */
|
|
139
|
+
size?: SidebarNavSize;
|
|
140
|
+
/** Header content */
|
|
141
|
+
header?: ReactNode;
|
|
142
|
+
/** Footer content */
|
|
143
|
+
footer?: ReactNode;
|
|
144
|
+
/** Custom link component for router integration */
|
|
145
|
+
LinkComponent?: ComponentType<SidebarNavLinkProps>;
|
|
146
|
+
/** Navigation callback */
|
|
147
|
+
onNavigate?: (href: string) => void;
|
|
148
|
+
/** Whether to show mobile overlay */
|
|
149
|
+
showMobileOverlay?: boolean;
|
|
150
|
+
/** Width when expanded (default: 16rem) */
|
|
151
|
+
width?: string;
|
|
152
|
+
/** Width when collapsed (default: 4rem) */
|
|
153
|
+
collapsedWidth?: string;
|
|
154
|
+
/** Optional test ID for e2e testing */
|
|
155
|
+
testId?: string;
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/theme/components/SidebarNav/types.ts"],"names":[],"mappings":"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"}
|