@teja-app/ui 0.0.12 → 0.0.13
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/theme/components/Accordion.d.ts +75 -0
- package/dist/theme/components/Accordion.d.ts.map +1 -0
- package/dist/theme/components/Badge.d.ts +21 -1
- package/dist/theme/components/Badge.d.ts.map +1 -1
- package/dist/theme/components/Card.d.ts +37 -2
- package/dist/theme/components/Card.d.ts.map +1 -1
- package/dist/theme/components/DarkScope.d.ts +54 -0
- package/dist/theme/components/DarkScope.d.ts.map +1 -0
- package/dist/theme/components/Menu.d.ts +84 -0
- package/dist/theme/components/Menu.d.ts.map +1 -0
- package/dist/theme/components/SegmentedControl.d.ts.map +1 -1
- package/dist/theme/components/SelectableCard.d.ts +34 -0
- package/dist/theme/components/SelectableCard.d.ts.map +1 -0
- package/dist/theme/components/Toast.d.ts +79 -0
- package/dist/theme/components/Toast.d.ts.map +1 -0
- package/dist/theme/components/ToggleChip.d.ts +38 -0
- package/dist/theme/components/ToggleChip.d.ts.map +1 -0
- package/dist/theme/components/Tooltip.d.ts +40 -0
- package/dist/theme/components/Tooltip.d.ts.map +1 -0
- package/dist/theme/components/index.d.ts +8 -1
- package/dist/theme/components/index.d.ts.map +1 -1
- package/dist/theme/index.cjs +966 -14
- package/dist/theme/index.cjs.map +1 -1
- package/dist/theme/index.js +967 -15
- package/dist/theme/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Accordion / AccordionItem
|
|
3
|
+
*
|
|
4
|
+
* Design source:
|
|
5
|
+
* - design/screens/app/documents/note-editor/intake.jsx:29-37
|
|
6
|
+
* (NEIntakeBlock collapsible header pattern: surface-1 bg, border-bottom,
|
|
7
|
+
* fontSize:13/fontWeight:600 title, Icon chevronDown size:11 ink-3)
|
|
8
|
+
* - design/screens/app/settings/audit-logs.jsx (chevronDown expander rows)
|
|
9
|
+
*
|
|
10
|
+
* Header: full-width button, ink-1 title (fontSize 13, weight 600),
|
|
11
|
+
* trailing chevronDown Icon (size 11, ink-3), rotate(180deg) when open,
|
|
12
|
+
* transition: transform .15s; hover background: surface-1;
|
|
13
|
+
* borderRadius: r-md.
|
|
14
|
+
* Panel: content region below header; mount/unmount; paddingTop: 8.
|
|
15
|
+
* a11y: header <button aria-expanded>; panel role="region" + aria-labelledby.
|
|
16
|
+
* testId: forwarded as {testId}-header and {testId}-panel.
|
|
17
|
+
*/
|
|
18
|
+
import { type ButtonHTMLAttributes, type CSSProperties, type ReactNode } from 'react';
|
|
19
|
+
export interface AccordionProps {
|
|
20
|
+
/** Allow multiple panels to be open simultaneously. Default: false (single-open). */
|
|
21
|
+
multiple?: boolean;
|
|
22
|
+
/** Uncontrolled default open value(s). */
|
|
23
|
+
defaultValue?: string | string[];
|
|
24
|
+
/** Controlled open value(s). */
|
|
25
|
+
value?: string | string[];
|
|
26
|
+
/** Called with the new open value(s) whenever a panel is toggled. */
|
|
27
|
+
onChange?: (value: string | string[]) => void;
|
|
28
|
+
children?: ReactNode;
|
|
29
|
+
/** Extra inline styles on the container. */
|
|
30
|
+
style?: CSSProperties;
|
|
31
|
+
/** Forwarded as data-testid on the root element. */
|
|
32
|
+
testId?: string;
|
|
33
|
+
}
|
|
34
|
+
export interface AccordionItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'title'> {
|
|
35
|
+
/** Unique value used for controlled/uncontrolled open state. */
|
|
36
|
+
value: string;
|
|
37
|
+
/** Header content — string or ReactNode. */
|
|
38
|
+
title: ReactNode;
|
|
39
|
+
/** Panel content. */
|
|
40
|
+
children?: ReactNode;
|
|
41
|
+
/** Forwarded as {testId}-header + {testId}-panel. */
|
|
42
|
+
testId?: string;
|
|
43
|
+
/** Extra inline styles on the outer item wrapper. */
|
|
44
|
+
style?: CSSProperties;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Accordion — collapsible section container.
|
|
48
|
+
*
|
|
49
|
+
* ```tsx
|
|
50
|
+
* <Accordion defaultValue="section-1">
|
|
51
|
+
* <AccordionItem value="section-1" title="Presenting problem" testId="pp">
|
|
52
|
+
* Content here…
|
|
53
|
+
* </AccordionItem>
|
|
54
|
+
* <AccordionItem value="section-2" title="Clinical history">
|
|
55
|
+
* More content…
|
|
56
|
+
* </AccordionItem>
|
|
57
|
+
* </Accordion>
|
|
58
|
+
* ```
|
|
59
|
+
*/
|
|
60
|
+
export declare function Accordion({ multiple, defaultValue, value: controlledValue, onChange, children, style, testId, }: AccordionProps): import("react/jsx-runtime").JSX.Element;
|
|
61
|
+
/**
|
|
62
|
+
* AccordionItem — a single collapsible panel within an Accordion.
|
|
63
|
+
*
|
|
64
|
+
* Visual harvest from NEIntakeBlock (intake.jsx:29-37):
|
|
65
|
+
* header row: display:flex, alignItems:center, justifyContent:space-between
|
|
66
|
+
* background:var(--surface-1), borderBottom:1px solid var(--border)
|
|
67
|
+
* title: fontSize:13, fontWeight:600 (ink-1 inherited)
|
|
68
|
+
* icon: chevronDown size:11, color:var(--ink-3), rotates 180° when open
|
|
69
|
+
* transition: transform .15s
|
|
70
|
+
* hover: background:var(--surface-1)
|
|
71
|
+
*
|
|
72
|
+
* a11y: button aria-expanded; panel role="region" aria-labelledby headerId.
|
|
73
|
+
*/
|
|
74
|
+
export declare const AccordionItem: import("react").ForwardRefExoticComponent<AccordionItemProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
75
|
+
//# sourceMappingURL=Accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Accordion.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Accordion.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAQL,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,WAAW,cAAc;IAC7B,qFAAqF;IACrF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IACjC,gCAAgC;IAChC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;IAC1B,qEAAqE;IACrE,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,KAAK,IAAI,CAAC;IAC9C,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,oDAAoD;IACpD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC9D,gEAAgE;IAChE,KAAK,EAAE,MAAM,CAAC;IACd,4CAA4C;IAC5C,KAAK,EAAE,SAAS,CAAC;IACjB,qBAAqB;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAqBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,SAAS,CAAC,EACxB,QAAgB,EAChB,YAAY,EACZ,KAAK,EAAE,eAAe,EACtB,QAAQ,EACR,QAAQ,EACR,KAAK,EACL,MAAM,GACP,EAAE,cAAc,2CA8DhB;AAID;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,aAAa,kHAmGzB,CAAC"}
|
|
@@ -1,16 +1,36 @@
|
|
|
1
1
|
import type { HTMLAttributes, ReactNode } from 'react';
|
|
2
2
|
export type BadgeTone = 'neutral' | 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'ai';
|
|
3
3
|
export type BadgeSize = 'sm' | 'md';
|
|
4
|
+
/**
|
|
5
|
+
* Explicit color override for dynamically-computed badge tones.
|
|
6
|
+
* Callers should pass CSS-var strings (e.g. `var(--success-soft)`) but
|
|
7
|
+
* arbitrary CSS color strings are accepted.
|
|
8
|
+
*/
|
|
9
|
+
export interface BadgeColors {
|
|
10
|
+
/** Background color. */
|
|
11
|
+
bg: string;
|
|
12
|
+
/** Foreground (text) color. */
|
|
13
|
+
fg: string;
|
|
14
|
+
/** Leading dot color. Falls back to `fg` when omitted. */
|
|
15
|
+
dot?: string;
|
|
16
|
+
}
|
|
4
17
|
export interface BadgeProps extends Omit<HTMLAttributes<HTMLSpanElement>, 'children'> {
|
|
5
18
|
tone?: BadgeTone;
|
|
6
19
|
size?: BadgeSize;
|
|
7
20
|
/** Show a leading colored dot. */
|
|
8
21
|
dot?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Explicit color override for dynamically-computed tones.
|
|
24
|
+
* When provided, overrides the `tone` token lookup.
|
|
25
|
+
* Callers should pass CSS-var strings but arbitrary CSS color strings are accepted.
|
|
26
|
+
* Named `tone` prop is still used as a semantic hint for tooling; `colors` wins visually.
|
|
27
|
+
*/
|
|
28
|
+
colors?: BadgeColors;
|
|
9
29
|
children?: ReactNode;
|
|
10
30
|
/** Forwarded as `data-testid` for e2e selectors. */
|
|
11
31
|
'data-testid'?: string;
|
|
12
32
|
/** Alias of `data-testid` to keep the API uniform across primitives. */
|
|
13
33
|
testId?: string;
|
|
14
34
|
}
|
|
15
|
-
export declare function Badge({ tone, size, dot, children, style, testId, 'data-testid': dataTestId, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
35
|
+
export declare function Badge({ tone, size, dot, colors, children, style, testId, 'data-testid': dataTestId, ...rest }: BadgeProps): import("react/jsx-runtime").JSX.Element;
|
|
16
36
|
//# sourceMappingURL=Badge.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"Badge.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Badge.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,cAAc,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtE,MAAM,MAAM,SAAS,GACjB,SAAS,GACT,SAAS,GACT,SAAS,GACT,SAAS,GACT,QAAQ,GACR,MAAM,GACN,IAAI,CAAC;AACT,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,CAAC;AAEpC;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC1B,wBAAwB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,+BAA+B;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,0DAA0D;IAC1D,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AA4BD,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC,EAAE,UAAU,CAAC;IACnF,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,kCAAkC;IAClC,GAAG,CAAC,EAAE,OAAO,CAAC;IACd;;;;;OAKG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,oDAAoD;IACpD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wEAAwE;IACxE,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,KAAK,CAAC,EACpB,IAAgB,EAChB,IAAW,EACX,GAAG,EACH,MAAM,EACN,QAAQ,EACR,KAAK,EACL,MAAM,EACN,aAAa,EAAE,UAAU,EACzB,GAAG,IAAI,EACR,EAAE,UAAU,2CA0CZ"}
|
|
@@ -1,10 +1,45 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
2
|
export interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
3
3
|
/** Inner padding in pixels. Defaults to 20. */
|
|
4
4
|
padding?: number;
|
|
5
5
|
children?: ReactNode;
|
|
6
6
|
/** Forwarded as `data-testid` on the root div. */
|
|
7
7
|
testId?: string;
|
|
8
|
+
/**
|
|
9
|
+
* Renders the card in a selected/active state:
|
|
10
|
+
* - border becomes 1px var(--primary) (border-width unchanged, only color changes)
|
|
11
|
+
* - outer ring: 0 0 0 3px var(--primary-ring)
|
|
12
|
+
* - background tint: var(--primary-soft)
|
|
13
|
+
*
|
|
14
|
+
* Harvested from design/screens/app/clients/modals/create-client.jsx:191-213
|
|
15
|
+
* (TypeCard: r-md, 1px border, shadow-xs unselected) and
|
|
16
|
+
* create-inquiry.jsx SourceCard (same pattern).
|
|
17
|
+
*/
|
|
18
|
+
selected?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* Makes the card interactive (pointer cursor, hover surface lift, focus-visible
|
|
21
|
+
* primary ring). Automatically inferred when an `onClick` handler is provided.
|
|
22
|
+
* Renders as a `<button>` when interactive so keyboard activation works natively.
|
|
23
|
+
*
|
|
24
|
+
* Harvested from create-client.jsx TypeCard (cursor:pointer + button element)
|
|
25
|
+
* and create-inquiry.jsx SourceCard (same treatment).
|
|
26
|
+
*/
|
|
27
|
+
interactive?: boolean;
|
|
8
28
|
}
|
|
9
|
-
|
|
29
|
+
/**
|
|
30
|
+
* Card — base surface primitive.
|
|
31
|
+
*
|
|
32
|
+
* Default (no extra props): white surface, r-lg radius, 1px border — identical
|
|
33
|
+
* to the original Card and 100% backward-compatible.
|
|
34
|
+
*
|
|
35
|
+
* Interactive/selected variant: r-md radius to match TypeCard / SourceCard design
|
|
36
|
+
* sources (create-client.jsx:198, create-inquiry.jsx:292). Non-selected interactive
|
|
37
|
+
* cards carry shadow-xs; selected state swaps it for the primary-ring glow.
|
|
38
|
+
*
|
|
39
|
+
* Enhanced:
|
|
40
|
+
* selected — primary ring + tint background (design TypeCard / CoupleCard pattern)
|
|
41
|
+
* interactive — pointer cursor, keyboard activation via <button> root
|
|
42
|
+
* (automatically inferred when onClick is supplied)
|
|
43
|
+
*/
|
|
44
|
+
export declare const Card: import("react").ForwardRefExoticComponent<CardProps & import("react").RefAttributes<HTMLElement>>;
|
|
10
45
|
//# sourceMappingURL=Card.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EAKnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,MAAM,WAAW,SAAU,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACjF,+CAA+C;IAC/C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kDAAkD;IAClD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,IAAI,mGAqFf,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* DarkScope — scoped dark-room wrapper.
|
|
4
|
+
*
|
|
5
|
+
* Applies the existing `[data-theme="dark"]` token block (tokens.css:120+)
|
|
6
|
+
* to **a subtree** by setting `data-theme="dark"` on a container div plus
|
|
7
|
+
* `color-scheme: dark` via inline style. Every theme component inside renders
|
|
8
|
+
* dark automatically — no per-component `tone="dark"` prop needed.
|
|
9
|
+
*
|
|
10
|
+
* Primary use-case: Telehealth video room (`/telehealth/$roomId`) where the
|
|
11
|
+
* full viewport must be dark regardless of the user's global theme setting.
|
|
12
|
+
*
|
|
13
|
+
* Design source:
|
|
14
|
+
* - `design/screens/app/sessions/telehealth-room.jsx` — immersive dark video
|
|
15
|
+
* room layout; the root `background: '#0f1117'` is the design's intent; we
|
|
16
|
+
* use `var(--bg)` from the dark token block instead of the hardcoded hex so
|
|
17
|
+
* the full dark palette applies to all children.
|
|
18
|
+
* - `teja-ui/src/theme/tokens.css:120` — `[data-theme="dark"]` block with
|
|
19
|
+
* full dark surface/ink/border/shadow/semantic token overrides.
|
|
20
|
+
*
|
|
21
|
+
* Tokens consumed (all from the `[data-theme="dark"]` block in tokens.css):
|
|
22
|
+
* --bg, --surface-0..3, --sidebar, --border, --border-strong, --divider,
|
|
23
|
+
* --ink-1..5, --primary-soft, --success/warning/danger/info/ai (-soft),
|
|
24
|
+
* --shadow-xs/sm/md/lg/pop (resolved via color-scheme:dark cascade).
|
|
25
|
+
*
|
|
26
|
+
* Decision note: the token-scope approach (data-theme="dark" on a subtree)
|
|
27
|
+
* covers EVERY theme component for free — do NOT add per-component tone="dark"
|
|
28
|
+
* props. See GAP-PRIMITIVES-BUILD-SPEC.md §6.
|
|
29
|
+
*/
|
|
30
|
+
export interface DarkScopeProps extends HTMLAttributes<HTMLDivElement> {
|
|
31
|
+
children?: ReactNode;
|
|
32
|
+
/**
|
|
33
|
+
* Forwarded as `data-testid` on the root div for e2e selectors.
|
|
34
|
+
* Also accepts the raw `data-testid` attribute for consistency with
|
|
35
|
+
* components that expose both forms (e.g. Badge).
|
|
36
|
+
*/
|
|
37
|
+
testId?: string;
|
|
38
|
+
/** Raw `data-testid` — takes precedence over `testId`. */
|
|
39
|
+
'data-testid'?: string;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Scoped dark wrapper. Renders a `div` with `data-theme="dark"` so all
|
|
43
|
+
* `@teja-app/ui/theme` components in the subtree pick up dark tokens.
|
|
44
|
+
*
|
|
45
|
+
* @example
|
|
46
|
+
* ```tsx
|
|
47
|
+
* <DarkScope style={{ position: 'fixed', inset: 0 }}>
|
|
48
|
+
* <Card>Dark-themed card</Card>
|
|
49
|
+
* <Button variant="primary">Join</Button>
|
|
50
|
+
* </DarkScope>
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export declare const DarkScope: import("react").ForwardRefExoticComponent<DarkScopeProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
54
|
+
//# sourceMappingURL=DarkScope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DarkScope.d.ts","sourceRoot":"","sources":["../../../src/theme/components/DarkScope.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,WAAW,cAAe,SAAQ,cAAc,CAAC,cAAc,CAAC;IACpE,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,SAAS,2GAsBrB,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Menu / MenuItem / MenuDivider
|
|
3
|
+
*
|
|
4
|
+
* Design source:
|
|
5
|
+
* - design/screens/app/appointments/modals/flyout.jsx:514 (FlyoutOverflowMenu)
|
|
6
|
+
* - design/components/shell.jsx:524 (NotificationBell dropdown pattern)
|
|
7
|
+
*
|
|
8
|
+
* Panel: position:absolute, top:100%, right:0, marginTop:4, zIndex high,
|
|
9
|
+
* minWidth:220, --surface-0 bg, 1px --border border, --r-md radius,
|
|
10
|
+
* shadow-pop, padding:4.
|
|
11
|
+
* Item: flex, gap:8, 100% width, padding 8px 10px, --r-sm radius,
|
|
12
|
+
* transparent bg, cursor:pointer, fontSize:12.5, --ink-1 / --danger
|
|
13
|
+
* color, hover --surface-1.
|
|
14
|
+
* Divider: hr, border:0, borderTop 1px --divider, margin 4px 2px.
|
|
15
|
+
* Backdrop: fixed inset:0 click-catcher (shell.jsx pattern).
|
|
16
|
+
*/
|
|
17
|
+
import { type ButtonHTMLAttributes, type CSSProperties, type HTMLAttributes, type ReactNode } from 'react';
|
|
18
|
+
import { type IconName } from './Icon';
|
|
19
|
+
export type MenuPlacement = 'bottom-end' | 'bottom-start' | 'top-end' | 'top-start';
|
|
20
|
+
export interface MenuProps {
|
|
21
|
+
/** Controlled open state. */
|
|
22
|
+
open: boolean;
|
|
23
|
+
/** Called when the menu should close (outside click, Escape, item click). */
|
|
24
|
+
onClose: () => void;
|
|
25
|
+
/**
|
|
26
|
+
* Trigger element — rendered as the anchor. The menu positions itself
|
|
27
|
+
* relative to this via the parent `position:relative` wrapper.
|
|
28
|
+
*/
|
|
29
|
+
trigger?: ReactNode;
|
|
30
|
+
children?: ReactNode;
|
|
31
|
+
/** Placement relative to the trigger. Default: bottom-end. */
|
|
32
|
+
placement?: MenuPlacement;
|
|
33
|
+
/** Minimum width of the panel. Default: 220. */
|
|
34
|
+
minWidth?: number;
|
|
35
|
+
/** z-index of the backdrop + panel. Default: 200. */
|
|
36
|
+
zIndex?: number;
|
|
37
|
+
/** Forwarded as `data-testid` on the panel element. */
|
|
38
|
+
testId?: string;
|
|
39
|
+
/** Extra inline styles for the panel. */
|
|
40
|
+
style?: CSSProperties;
|
|
41
|
+
}
|
|
42
|
+
export interface MenuItemProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
43
|
+
/** Leading icon name from the Teja icon set. */
|
|
44
|
+
icon?: IconName;
|
|
45
|
+
/** Render in danger (red) color. */
|
|
46
|
+
danger?: boolean;
|
|
47
|
+
children?: ReactNode;
|
|
48
|
+
/** Forwarded as `data-testid`. */
|
|
49
|
+
testId?: string;
|
|
50
|
+
}
|
|
51
|
+
export type MenuDividerProps = Omit<HTMLAttributes<HTMLHRElement>, 'children'>;
|
|
52
|
+
/**
|
|
53
|
+
* Menu — floating action panel.
|
|
54
|
+
*
|
|
55
|
+
* ```tsx
|
|
56
|
+
* const [open, setOpen] = useState(false);
|
|
57
|
+
* <Menu open={open} onClose={() => setOpen(false)} trigger={<IconButton>…</IconButton>}>
|
|
58
|
+
* <MenuItem icon="edit" onClick={…}>Edit</MenuItem>
|
|
59
|
+
* <MenuDivider />
|
|
60
|
+
* <MenuItem icon="trash" danger onClick={…}>Delete</MenuItem>
|
|
61
|
+
* </Menu>
|
|
62
|
+
* ```
|
|
63
|
+
*/
|
|
64
|
+
export declare function Menu({ open, onClose, trigger, children, placement, minWidth, zIndex, testId, style, }: MenuProps): import("react/jsx-runtime").JSX.Element;
|
|
65
|
+
/**
|
|
66
|
+
* MenuItem — action row inside a Menu.
|
|
67
|
+
*
|
|
68
|
+
* Harvested from FlyoutOverflowMenu button styling (flyout.jsx:527-539):
|
|
69
|
+
* display:flex, alignItems:center, gap:8, width:100%,
|
|
70
|
+
* padding:8px 10px, border:0, borderRadius:var(--r-sm),
|
|
71
|
+
* background:transparent, cursor:pointer, fontFamily:inherit,
|
|
72
|
+
* fontSize:12.5, color:--ink-1 / --danger, textAlign:left.
|
|
73
|
+
* Icon size:12, color:--ink-3 / --danger.
|
|
74
|
+
* hover: background:--surface-1 (added via data-hover state).
|
|
75
|
+
*/
|
|
76
|
+
export declare const MenuItem: import("react").ForwardRefExoticComponent<MenuItemProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
77
|
+
/**
|
|
78
|
+
* MenuDivider — horizontal rule between item groups.
|
|
79
|
+
*
|
|
80
|
+
* Harvested from FlyoutOverflowMenu hr (flyout.jsx:525):
|
|
81
|
+
* border:0; borderTop:1px solid var(--divider); margin:4px 2px.
|
|
82
|
+
*/
|
|
83
|
+
export declare function MenuDivider({ style, ...rest }: MenuDividerProps): import("react/jsx-runtime").JSX.Element;
|
|
84
|
+
//# sourceMappingURL=Menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Menu.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Menu.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,OAAO,EAML,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAI7C,MAAM,MAAM,aAAa,GAAG,YAAY,GAAG,cAAc,GAAG,SAAS,GAAG,WAAW,CAAC;AAEpF,MAAM,WAAW,SAAS;IACxB,6BAA6B;IAC7B,IAAI,EAAE,OAAO,CAAC;IACd,6EAA6E;IAC7E,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yCAAyC;IACzC,KAAK,CAAC,EAAE,aAAa,CAAC;CACvB;AAED,MAAM,WAAW,aACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,gDAAgD;IAChD,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,oCAAoC;IACpC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,EAAE,UAAU,CAAC,CAAC;AA4B/E;;;;;;;;;;;GAWG;AACH,wBAAgB,IAAI,CAAC,EACnB,IAAI,EACJ,OAAO,EACP,OAAO,EACP,QAAQ,EACR,SAAwB,EACxB,QAAc,EACd,MAAY,EACZ,MAAM,EACN,KAAK,GACN,EAAE,SAAS,2CAsEX;AAID;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ,6GA2DnB,CAAC;AAIH;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,EAAE,gBAAgB,2CAa/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/theme/components/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC7D,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9D,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC1D,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,qBAAqB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"SegmentedControl.d.ts","sourceRoot":"","sources":["../../../src/theme/components/SegmentedControl.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC7D,KAAK,EAAE,CAAC,CAAC;IACT,KAAK,EAAE,SAAS,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM;IAC9D,KAAK,EAAE,aAAa,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,KAAK,EAAE,CAAC,CAAC;IACT,QAAQ,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,gBAAgB,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,EAAE,EAC1D,KAAK,EACL,KAAK,EACL,QAAQ,EACR,IAAW,EACX,KAAK,EACL,MAAM,GACP,EAAE,qBAAqB,CAAC,CAAC,CAAC,2CAkD1B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* SelectableCard — generic selectable card primitive.
|
|
4
|
+
*
|
|
5
|
+
* Generalises `RoleTile` to arbitrary children (no hard-coded icon + title +
|
|
6
|
+
* description layout). Accepts `selected` + `onSelect` and renders as a full-
|
|
7
|
+
* width `<button>` with the same primary-border / primary-soft-bg / shadow-xs
|
|
8
|
+
* treatment as RoleTile.
|
|
9
|
+
*
|
|
10
|
+
* Design source: teja-ui/src/theme/components/RoleTile.tsx — lines 31–111
|
|
11
|
+
* (button shell, border/bg/shadow token assignments, disabled dimming).
|
|
12
|
+
*
|
|
13
|
+
* Usage:
|
|
14
|
+
* <SelectableCard selected={picked === 'a'} onSelect={() => setPicked('a')}>
|
|
15
|
+
* <MyCardContent />
|
|
16
|
+
* </SelectableCard>
|
|
17
|
+
*/
|
|
18
|
+
export type SelectableCardRole = 'radio' | 'checkbox';
|
|
19
|
+
export interface SelectableCardProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'role' | 'aria-checked'> {
|
|
20
|
+
/** Whether this card is currently selected. */
|
|
21
|
+
selected: boolean;
|
|
22
|
+
/** ARIA role. Defaults to "radio" for single-select groups; use "checkbox" for multi-select. */
|
|
23
|
+
role?: SelectableCardRole;
|
|
24
|
+
/** Called when the card is clicked (or activated via keyboard). */
|
|
25
|
+
onSelect?: () => void;
|
|
26
|
+
/** When true the card is visually dimmed and non-interactive. */
|
|
27
|
+
disabled?: boolean;
|
|
28
|
+
/** Forwarded to `data-testid`. */
|
|
29
|
+
testId?: string;
|
|
30
|
+
/** Card body — any React content. */
|
|
31
|
+
children?: ReactNode;
|
|
32
|
+
}
|
|
33
|
+
export declare const SelectableCard: import("react").ForwardRefExoticComponent<SelectableCardProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
34
|
+
//# sourceMappingURL=SelectableCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SelectableCard.d.ts","sourceRoot":"","sources":["../../../src/theme/components/SelectableCard.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,oBAAoB,EAAsB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAElG;;;;;;;;;;;;;;;GAeG;AAEH,MAAM,MAAM,kBAAkB,GAAG,OAAO,GAAG,UAAU,CAAC;AAEtD,MAAM,WAAW,mBACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC;IAC9E,+CAA+C;IAC/C,QAAQ,EAAE,OAAO,CAAC;IAClB,gGAAgG;IAChG,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,mEAAmE;IACnE,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IACtB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,kCAAkC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qCAAqC;IACrC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,eAAO,MAAM,cAAc,mHA+D1B,CAAC"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
import { type IconName } from './Icon';
|
|
3
|
+
/**
|
|
4
|
+
* Toast — floating notification card.
|
|
5
|
+
*
|
|
6
|
+
* Harvested from:
|
|
7
|
+
* - design/components/mobile-shell.jsx:373 (MobileToast + useMobileToast + MobileToastHost)
|
|
8
|
+
* - design/components/shell.jsx:561–608 (NotifToastHost desktop slot)
|
|
9
|
+
*
|
|
10
|
+
* Visual treatment:
|
|
11
|
+
* background: var(--surface-0) border: 1px solid var(--border)
|
|
12
|
+
* accent left border: 3px solid <tone color>
|
|
13
|
+
* borderRadius: var(--r-md) boxShadow: var(--shadow-pop)
|
|
14
|
+
* padding: 11px 14px icon dot: var(--<tone>-soft) / var(--<tone>)
|
|
15
|
+
* maxWidth: 320 zIndex: 200
|
|
16
|
+
* position: fixed; top: 80px; right: 20px (host stacks multiple)
|
|
17
|
+
*
|
|
18
|
+
* API:
|
|
19
|
+
* useToast() → { showToast }
|
|
20
|
+
* showToast(message, opts?) opts: { icon?, tone?, ms?, action?, then? }
|
|
21
|
+
* <ToastHost /> — mount once at app root; renders via portal
|
|
22
|
+
*/
|
|
23
|
+
export type ToastTone = 'success' | 'danger' | 'info' | 'neutral';
|
|
24
|
+
export interface ToastOptions {
|
|
25
|
+
/** Override the default tone icon. */
|
|
26
|
+
icon?: IconName;
|
|
27
|
+
/** Visual tone. Defaults to 'success'. */
|
|
28
|
+
tone?: ToastTone;
|
|
29
|
+
/** Auto-dismiss delay in milliseconds. Default 2500. */
|
|
30
|
+
ms?: number;
|
|
31
|
+
/** Optional CTA label. When provided, `action.onClick` is called on click. */
|
|
32
|
+
action?: {
|
|
33
|
+
label: string;
|
|
34
|
+
onClick: () => void;
|
|
35
|
+
};
|
|
36
|
+
/** Callback executed after the toast auto-dismisses. */
|
|
37
|
+
then?: () => void;
|
|
38
|
+
}
|
|
39
|
+
interface ToastContextValue {
|
|
40
|
+
showToast: (message: ReactNode, opts?: ToastOptions) => void;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* useToast — returns `{ showToast }`.
|
|
44
|
+
* Must be used inside a component tree wrapped by `<ToastHost />` (which
|
|
45
|
+
* provides the context). The call signature mirrors the design's `useMobileToast`:
|
|
46
|
+
*
|
|
47
|
+
* showToast('Saved', { tone: 'success', ms: 2000, then: () => navigate('/') })
|
|
48
|
+
*/
|
|
49
|
+
export declare function useToast(): ToastContextValue;
|
|
50
|
+
export interface ToastProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
51
|
+
message: ReactNode;
|
|
52
|
+
tone?: ToastTone;
|
|
53
|
+
icon?: IconName;
|
|
54
|
+
action?: {
|
|
55
|
+
label: string;
|
|
56
|
+
onClick: () => void;
|
|
57
|
+
};
|
|
58
|
+
onDismiss?: () => void;
|
|
59
|
+
/** Forwarded as data-testid on the root div. */
|
|
60
|
+
testId?: string;
|
|
61
|
+
}
|
|
62
|
+
export declare const Toast: import("react").ForwardRefExoticComponent<ToastProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
63
|
+
/**
|
|
64
|
+
* ToastHost — mount once at app root.
|
|
65
|
+
*
|
|
66
|
+
* Provides the ToastContext so all children can call `useToast()`.
|
|
67
|
+
* Renders active toasts in a fixed portal (top:80px right:20px zIndex:200)
|
|
68
|
+
* that stacks vertically, matching the shell.jsx desktop slot coordinates.
|
|
69
|
+
*
|
|
70
|
+
* The portal target is `document.body` by default; pass `container` to
|
|
71
|
+
* override (useful for storybook or scoped testing).
|
|
72
|
+
*/
|
|
73
|
+
export interface ToastHostProps {
|
|
74
|
+
children: ReactNode;
|
|
75
|
+
container?: Element | null;
|
|
76
|
+
}
|
|
77
|
+
export declare function ToastHost({ children, container }: ToastHostProps): import("react/jsx-runtime").JSX.Element;
|
|
78
|
+
export {};
|
|
79
|
+
//# sourceMappingURL=Toast.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Toast.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Toast.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,EAAQ,KAAK,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;GAmBG;AAIH,MAAM,MAAM,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAC;AAsClE,MAAM,WAAW,YAAY;IAC3B,sCAAsC;IACtC,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,0CAA0C;IAC1C,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,wDAAwD;IACxD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,8EAA8E;IAC9E,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAChD,wDAAwD;IACxD,IAAI,CAAC,EAAE,MAAM,IAAI,CAAC;CACnB;AAcD,UAAU,iBAAiB;IACzB,SAAS,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,EAAE,YAAY,KAAK,IAAI,CAAC;CAC9D;AAUD;;;;;;GAMG;AACH,wBAAgB,QAAQ,IAAI,iBAAiB,CAM5C;AAID,MAAM,WAAW,UAAW,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IAClF,OAAO,EAAE,SAAS,CAAC;IACnB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,MAAM,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,IAAI,CAAA;KAAE,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,gDAAgD;IAChD,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,eAAO,MAAM,KAAK,uGA4GhB,CAAC;AAmEH;;;;;;;;;GASG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED,wBAAgB,SAAS,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CAsDhE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ButtonHTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
export type ToggleChipTone = 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
3
|
+
export type ToggleChipSize = 'sm' | 'md';
|
|
4
|
+
export interface ToggleChipProps extends Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {
|
|
5
|
+
/** Whether the chip is in the pressed/active state. */
|
|
6
|
+
pressed: boolean;
|
|
7
|
+
/** Called when the pressed state should change. */
|
|
8
|
+
onPressedChange?: (pressed: boolean) => void;
|
|
9
|
+
/** Optional leading icon node. */
|
|
10
|
+
icon?: ReactNode;
|
|
11
|
+
/** Color tone — defaults to 'primary'. Controls active colours via tokens. */
|
|
12
|
+
tone?: ToggleChipTone;
|
|
13
|
+
/** Size variant: 'sm' (24px) or 'md' (28px, default). */
|
|
14
|
+
size?: ToggleChipSize;
|
|
15
|
+
/** Forwarded as `data-testid` on the root button. */
|
|
16
|
+
testId?: string;
|
|
17
|
+
children?: ReactNode;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* ToggleChip — a single independently-toggleable pill.
|
|
21
|
+
*
|
|
22
|
+
* Fills the gap between Chip (display-only) and PillSelector (a group of pills).
|
|
23
|
+
* Harvest source: `PillSelector.tsx` item treatment (lines 148–183) — pill radius,
|
|
24
|
+
* `aria-pressed`, `data-state`, token-only colours.
|
|
25
|
+
*
|
|
26
|
+
* Inactive: `var(--surface-0)` bg / `var(--ink-2)` fg / `1px var(--border)` (spec §3: Chip-neutral).
|
|
27
|
+
* Active: `var(--{tone}-soft)` bg / `var(--{tone})` fg / `1px var(--{tone})` border (spec §3 text, tone-aware).
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```tsx
|
|
31
|
+
* const [on, setOn] = useState(false);
|
|
32
|
+
* <ToggleChip pressed={on} onPressedChange={setOn} icon={<Icon name="tag" size={12} />}>
|
|
33
|
+
* Urgent
|
|
34
|
+
* </ToggleChip>
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export declare const ToggleChip: import("react").ForwardRefExoticComponent<ToggleChipProps & import("react").RefAttributes<HTMLButtonElement>>;
|
|
38
|
+
//# sourceMappingURL=ToggleChip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ToggleChip.d.ts","sourceRoot":"","sources":["../../../src/theme/components/ToggleChip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAIf,MAAM,MAAM,cAAc,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,CAAC;AACnF,MAAM,MAAM,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC;AAEzC,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,EAAE,UAAU,CAAC;IACjE,uDAAuD;IACvD,OAAO,EAAE,OAAO,CAAC;IACjB,mDAAmD;IACnD,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7C,kCAAkC;IAClC,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,8EAA8E;IAC9E,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,yDAAyD;IACzD,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAkBD;;;;;;;;;;;;;;;;;GAiBG;AACH,eAAO,MAAM,UAAU,+GAuEtB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type HTMLAttributes, type ReactNode } from 'react';
|
|
2
|
+
/**
|
|
3
|
+
* Tooltip — small dark-chip bubble that appears on hover/focus.
|
|
4
|
+
*
|
|
5
|
+
* Treatment: dark-chip style — `var(--ink-1)` background with `var(--surface-0)` text,
|
|
6
|
+
* matching the design spec's recommendation ("dark-chip on light"). Consistent with
|
|
7
|
+
* the Menu surface tokens: `var(--r-sm)` radius, `var(--shadow-pop)` shadow.
|
|
8
|
+
*
|
|
9
|
+
* Accessibility:
|
|
10
|
+
* - Renders with `role="tooltip"` and a generated `id`.
|
|
11
|
+
* - Trigger receives `aria-describedby` pointing at that `id`.
|
|
12
|
+
* - Never traps focus — purely presentational overlay.
|
|
13
|
+
*
|
|
14
|
+
* Positioning:
|
|
15
|
+
* - Uses an `absolute`-positioned bubble relative to a `relative` wrapper.
|
|
16
|
+
* - `placement` controls which edge the bubble appears on.
|
|
17
|
+
* - The arrow is a rotated square (pseudo-element pattern via inline div).
|
|
18
|
+
*
|
|
19
|
+
* Usage:
|
|
20
|
+
* <Tooltip label="Save changes">
|
|
21
|
+
* <button>Save</button>
|
|
22
|
+
* </Tooltip>
|
|
23
|
+
*/
|
|
24
|
+
export type TooltipPlacement = 'top' | 'bottom' | 'left' | 'right';
|
|
25
|
+
export interface TooltipProps extends Omit<HTMLAttributes<HTMLDivElement>, 'children'> {
|
|
26
|
+
/** The tooltip text / content. */
|
|
27
|
+
label: ReactNode;
|
|
28
|
+
/** Which side of the trigger to attach the bubble. Default: `top`. */
|
|
29
|
+
placement?: TooltipPlacement;
|
|
30
|
+
/** Hover/focus delay before the tooltip appears (ms). Default: 400. */
|
|
31
|
+
delay?: number;
|
|
32
|
+
/** The focusable/hoverable trigger element. */
|
|
33
|
+
children: ReactNode;
|
|
34
|
+
/** Forwarded as `data-testid` on the wrapper div. */
|
|
35
|
+
testId?: string;
|
|
36
|
+
/** Max width of the tooltip bubble in px. Default: 220. */
|
|
37
|
+
maxWidth?: number;
|
|
38
|
+
}
|
|
39
|
+
export declare const Tooltip: import("react").ForwardRefExoticComponent<TooltipProps & import("react").RefAttributes<HTMLDivElement>>;
|
|
40
|
+
//# sourceMappingURL=Tooltip.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Tooltip.d.ts","sourceRoot":"","sources":["../../../src/theme/components/Tooltip.tsx"],"names":[],"mappings":"AAAA,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnE,MAAM,WAAW,YAAa,SAAQ,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACpF,kCAAkC;IAClC,KAAK,EAAE,SAAS,CAAC;IACjB,sEAAsE;IACtE,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,uEAAuE;IACvE,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,+CAA+C;IAC/C,QAAQ,EAAE,SAAS,CAAC;IACpB,qDAAqD;IACrD,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAwFD,eAAO,MAAM,OAAO,yGAyGlB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { Icon, ICON_NAMES, type IconName, type IconProps } from './Icon';
|
|
2
2
|
export { Button, type ButtonProps, type ButtonVariant, type ButtonSize, } from './Button';
|
|
3
|
-
export { Badge, type BadgeProps, type BadgeTone, type BadgeSize } from './Badge';
|
|
3
|
+
export { Badge, type BadgeProps, type BadgeTone, type BadgeSize, type BadgeColors } from './Badge';
|
|
4
4
|
export { Card, type CardProps } from './Card';
|
|
5
5
|
export { TejaMark, TejaLogo, type TejaMarkProps, type TejaLogoProps } from './Brand';
|
|
6
6
|
export { Field, type FieldProps } from './Field';
|
|
@@ -22,6 +22,7 @@ export { AISparkle, type AISparkleProps } from './AISparkle';
|
|
|
22
22
|
export { Checkbox, type CheckboxProps } from './Checkbox';
|
|
23
23
|
export { Radio, RadioGroup, type RadioProps, type RadioGroupProps, type RadioOption, type RadioSize, } from './Radio';
|
|
24
24
|
export { RoleTile, type RoleTileProps } from './RoleTile';
|
|
25
|
+
export { SelectableCard, type SelectableCardProps, type SelectableCardRole, } from './SelectableCard';
|
|
25
26
|
export { TOTP6Cells, type TOTP6CellsProps, type TOTP6CellsState, } from './TOTP6Cells';
|
|
26
27
|
export { OTPInput, type OTPInputProps } from './OTPInput';
|
|
27
28
|
export { LangSwitcher, DEFAULT_LANG_OPTIONS, type LangSwitcherProps, type LangOption, } from './LangSwitcher';
|
|
@@ -54,6 +55,7 @@ export { LabelGroup, type LabelGroupProps } from './LabelGroup';
|
|
|
54
55
|
export { PersonRow, type PersonRowProps } from './PersonRow';
|
|
55
56
|
export { SettingRow, type SettingRowProps, type SettingRowTone, } from './SettingRow';
|
|
56
57
|
export { Chip, type ChipProps, type ChipTone } from './Chip';
|
|
58
|
+
export { ToggleChip, type ToggleChipProps, type ToggleChipTone, type ToggleChipSize, } from './ToggleChip';
|
|
57
59
|
export { PillSelector, type PillSelectorProps, type PillOption, type PillSelectorSize, } from './PillSelector';
|
|
58
60
|
export { ViewToggle, type ViewToggleProps, type ViewToggleItem, } from './ViewToggle';
|
|
59
61
|
export { TimelineRow, type TimelineRowProps } from './TimelineRow';
|
|
@@ -71,4 +73,9 @@ export { Spinner, ensureSpinnerStyles, type SpinnerProps, type SpinnerSize, type
|
|
|
71
73
|
export { Skeleton, ensureSkeletonStyles, type SkeletonProps, type SkeletonVariant, } from './Skeleton';
|
|
72
74
|
export { EmptyState, type EmptyStateProps, type EmptyStateType, } from './EmptyState';
|
|
73
75
|
export { ConfirmDialog, type ConfirmDialogProps, type ConfirmDialogVariant, } from './ConfirmDialog';
|
|
76
|
+
export { Menu, MenuItem, MenuDivider, type MenuProps, type MenuItemProps, type MenuDividerProps, type MenuPlacement, } from './Menu';
|
|
77
|
+
export { Tooltip, type TooltipProps, type TooltipPlacement, } from './Tooltip';
|
|
78
|
+
export { DarkScope, type DarkScopeProps } from './DarkScope';
|
|
79
|
+
export { Toast, ToastHost, useToast, type ToastProps, type ToastHostProps, type ToastOptions, type ToastTone, } from './Toast';
|
|
80
|
+
export { Accordion, AccordionItem, type AccordionProps, type AccordionItemProps, } from './Accordion';
|
|
74
81
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAE,MAAM,QAAQ,CAAC;AACzE,OAAO,EACL,MAAM,EACN,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,UAAU,GAChB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,EAAE,KAAK,UAAU,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/theme/components/index.ts"],"names":[],"mappings":"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"}
|