@alfadocs/ui-kit-debug 0.24.0 → 0.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{card-CWzuTLYE.js → card-C353dU-H.js} +21 -13
- package/dist/_chunks/{card-CWzuTLYE.js.map → card-C353dU-H.js.map} +1 -1
- package/dist/_chunks/carousel.agent-DnPiqijR.js +1733 -0
- package/dist/_chunks/carousel.agent-DnPiqijR.js.map +1 -0
- package/dist/_chunks/{contact-card-DTQUMetD.js → contact-card-CjG7c-1q.js} +2 -2
- package/dist/_chunks/{contact-card-DTQUMetD.js.map → contact-card-CjG7c-1q.js.map} +1 -1
- package/dist/_chunks/description-list-Bsga4IW8.js +309 -0
- package/dist/_chunks/description-list-Bsga4IW8.js.map +1 -0
- package/dist/_chunks/{locale-picker-CYBhgSHR.js → locale-picker-BxEUUPW7.js} +212 -149
- package/dist/_chunks/locale-picker-BxEUUPW7.js.map +1 -0
- package/dist/_chunks/{timeline-Czeqr3HF.js → timeline-jmd7lfDf.js} +19 -12
- package/dist/_chunks/{timeline-Czeqr3HF.js.map → timeline-jmd7lfDf.js.map} +1 -1
- package/dist/_chunks/{workflow-map-712GL-8u.js → workflow-map-BR6txfFX.js} +2 -2
- package/dist/_chunks/{workflow-map-712GL-8u.js.map → workflow-map-BR6txfFX.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/carousel/carousel.d.ts +21 -0
- package/dist/components/carousel/carousel.d.ts.map +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/contact-card/index.js +1 -1
- package/dist/components/description-list/description-list.d.ts +40 -0
- package/dist/components/description-list/description-list.d.ts.map +1 -1
- package/dist/components/description-list/index.d.ts +1 -1
- package/dist/components/description-list/index.d.ts.map +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/header-settings/index.js +123 -96
- package/dist/components/header-settings/index.js.map +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timeline/timeline.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/index.js +6 -6
- package/dist/tokens.css +1 -1
- package/package.json +1 -1
- package/dist/_chunks/carousel.agent-CQPFfppK.js +0 -1696
- package/dist/_chunks/carousel.agent-CQPFfppK.js.map +0 -1
- package/dist/_chunks/description-list-y7Hk51KI.js +0 -191
- package/dist/_chunks/description-list-y7Hk51KI.js.map +0 -1
- package/dist/_chunks/locale-picker-CYBhgSHR.js.map +0 -1
package/dist/agent-catalog.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/card/card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAsBlE,QAAA,MAAM,YAAY;;;;8EAwCjB,CAAC;AAMF,MAAM,WAAW,SACf,SACE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EACzC,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;
|
|
1
|
+
{"version":3,"file":"card.d.ts","sourceRoot":"","sources":["../../../src/components/card/card.tsx"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EAEnB,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAEf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAsBlE,QAAA,MAAM,YAAY;;;;8EAwCjB,CAAC;AAMF,MAAM,WAAW,SACf,SACE,IAAI,CAAC,cAAc,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC,EACzC,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,OAAO,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;IAC9C,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;CACrB;AAqLD,eAAO,MAAM,IAAI;;;;;CAKf,CAAC;AAEH,YAAY,EAAE,YAAY,IAAI,gBAAgB,EAAE,CAAC"}
|
|
@@ -26,6 +26,27 @@ export interface CarouselProps extends Omit<ComponentPropsWithoutRef<'section'>,
|
|
|
26
26
|
snap?: 'mandatory' | 'proximity';
|
|
27
27
|
/** Consumer-supplied instance id, surfaced as `data-component-id`. */
|
|
28
28
|
id?: string;
|
|
29
|
+
/**
|
|
30
|
+
* Fade the inline edges of the viewport so offscreen slides on the
|
|
31
|
+
* leading and trailing edges appear to dissolve into the surrounding
|
|
32
|
+
* surface instead of being clipped abruptly. Defaults to `true`.
|
|
33
|
+
*
|
|
34
|
+
* The fade is conditionally suppressed when the carousel is at the
|
|
35
|
+
* start of the strip (leading edge stays solid) or at the end
|
|
36
|
+
* (trailing edge stays solid) — there is no offscreen content to
|
|
37
|
+
* hint at in those positions, and a fade would just look like a
|
|
38
|
+
* decorative haze.
|
|
39
|
+
*
|
|
40
|
+
* The gradient width is controlled by `--carousel-fade-distance`,
|
|
41
|
+
* which defaults to `var(--spacing-xl)`. Consumers can override it
|
|
42
|
+
* by setting the variable on the Carousel root via className, e.g.
|
|
43
|
+
* `<Carousel className="ds:[--carousel-fade-distance:5rem]" …>`.
|
|
44
|
+
*
|
|
45
|
+
* Automatically disabled under `prefers-reduced-motion`, the
|
|
46
|
+
* `theme-accessible` palette, and Windows High Contrast Mode so the
|
|
47
|
+
* mask never strips information from users who need it.
|
|
48
|
+
*/
|
|
49
|
+
fadeEdges?: boolean;
|
|
29
50
|
}
|
|
30
51
|
export interface CarouselItemProps extends ComponentPropsWithoutRef<'div'> {
|
|
31
52
|
children: ReactNode;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/carousel.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAaL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAWlE,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8CAA8C;IAC9C,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,kDAAkD;IAClD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,aACf,SACE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EACrD,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACjC,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../../../src/components/carousel/carousel.tsx"],"names":[],"mappings":"AA0BA,OAAO,EAaL,KAAK,wBAAwB,EAE7B,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAWlE,MAAM,WAAW,cAAc;IAC7B,gEAAgE;IAChE,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,8CAA8C;IAC9C,cAAc,EAAE,MAAM,MAAM,CAAC;IAC7B,yBAAyB;IACzB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,kDAAkD;IAClD,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,8CAA8C;IAC9C,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB;AAED,MAAM,WAAW,aACf,SACE,IAAI,CAAC,wBAAwB,CAAC,SAAS,CAAC,EAAE,UAAU,CAAC,EACrD,YAAY,CAAC,OAAO,YAAY,CAAC;IACnC,QAAQ,EAAE,SAAS,CAAC;IACpB,8DAA8D;IAC9D,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,qEAAqE;IACrE,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,2CAA2C;IAC3C,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,iFAAiF;IACjF,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,yEAAyE;IACzE,IAAI,CAAC,EAAE,WAAW,GAAG,WAAW,CAAC;IACjC,sEAAsE;IACtE,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;;;;;;;;;OAmBG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAkB,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IACxE,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,MAAM,WAAW,mBAAoB,SAAQ,wBAAwB,CAAC,KAAK,CAAC;IAC1E,QAAQ,EAAE,SAAS,CAAC;CACrB;AAMD,QAAA,MAAM,YAAY;;8EAYjB,CAAC;AAgrBF,eAAO,MAAM,QAAQ;;;;CAInB,CAAC"}
|
|
@@ -1,7 +1,29 @@
|
|
|
1
|
+
type LabelWidthPreset = 'auto' | 'fixed';
|
|
2
|
+
export type DescriptionListLabelWidth = LabelWidthPreset | (string & {});
|
|
1
3
|
export interface DescriptionListProps extends React.HTMLAttributes<HTMLDListElement> {
|
|
2
4
|
layout?: 'inline' | 'stacked' | 'responsive';
|
|
3
5
|
density?: 'default' | 'compact';
|
|
4
6
|
divider?: 'none' | 'between' | 'bordered';
|
|
7
|
+
/**
|
|
8
|
+
* Width of the term column in `inline` and `responsive` layouts.
|
|
9
|
+
*
|
|
10
|
+
* - `'auto'` (default): the term column sizes to its intrinsic content
|
|
11
|
+
* per row, so labels wrap at word boundaries in narrow contexts (carousel
|
|
12
|
+
* cards, sidebar panels) and the detail column takes the remaining inline
|
|
13
|
+
* space. **Sibling rows do NOT share column widths under this preset** —
|
|
14
|
+
* each row's columns size to its own content. Use this when intrinsic
|
|
15
|
+
* per-row sizing matters more than vertical alignment of values.
|
|
16
|
+
* - `'fixed'`: ⅓ / ⅔ split — term column is `minmax(0, 1fr)` and detail
|
|
17
|
+
* column is `minmax(0, 2fr)`. Sibling rows share the same proportional
|
|
18
|
+
* widths, so values align vertically across rows. Use this when shared
|
|
19
|
+
* value-column alignment matters (the typical use case for a list of
|
|
20
|
+
* contact rows, profile fields, or any tabular-feeling metadata).
|
|
21
|
+
* - any CSS track size (`'8rem'`, `'min-content'`, `'40%'`, …): pins the
|
|
22
|
+
* term column to that width and lets the detail column take the rest.
|
|
23
|
+
*
|
|
24
|
+
* Ignored when `layout="stacked"` (single content column).
|
|
25
|
+
*/
|
|
26
|
+
labelWidth?: DescriptionListLabelWidth;
|
|
5
27
|
}
|
|
6
28
|
export interface DescriptionListRowProps extends React.HTMLAttributes<HTMLDivElement> {
|
|
7
29
|
/** When true, shows a copy-to-clipboard button using KeyValuePair's established mechanism */
|
|
@@ -10,6 +32,23 @@ export interface DescriptionListRowProps extends React.HTMLAttributes<HTMLDivEle
|
|
|
10
32
|
copyText?: string;
|
|
11
33
|
/** Label used in the copy button's aria-label: "Copy {copyLabel}". Falls back to copyText. */
|
|
12
34
|
copyLabel?: string;
|
|
35
|
+
/**
|
|
36
|
+
* Optional decorative icon rendered at the leading edge of the row.
|
|
37
|
+
* Pass a `lucide-react` icon (or any single React element) for visual
|
|
38
|
+
* consistency. The wrapper applies `aria-hidden="true"` and paints
|
|
39
|
+
* the icon with `var(--description-list-icon-color)` (defaults to
|
|
40
|
+
* `--muted-foreground`); consumers can recolour the slot via that
|
|
41
|
+
* token without forking the component.
|
|
42
|
+
*
|
|
43
|
+
* When any row in the list passes an `icon`, every row reserves a
|
|
44
|
+
* leading icon column so values align across siblings — including
|
|
45
|
+
* rows that did not pass an icon.
|
|
46
|
+
*
|
|
47
|
+
* Type is `ReactElement` (not the broader `ReactNode`) so the intent
|
|
48
|
+
* is clear at the call site: this slot is for a single SVG/icon,
|
|
49
|
+
* not arbitrary fragments, strings, or numbers.
|
|
50
|
+
*/
|
|
51
|
+
icon?: React.ReactElement | null;
|
|
13
52
|
}
|
|
14
53
|
export type DescriptionListTermProps = React.HTMLAttributes<HTMLElement>;
|
|
15
54
|
export interface DescriptionListDetailProps extends React.HTMLAttributes<HTMLElement> {
|
|
@@ -21,4 +60,5 @@ export declare const DescriptionList: import("react").ForwardRefExoticComponent<
|
|
|
21
60
|
Term: import("react").ForwardRefExoticComponent<DescriptionListTermProps & import("react").RefAttributes<HTMLElement>>;
|
|
22
61
|
Detail: import("react").ForwardRefExoticComponent<DescriptionListDetailProps & import("react").RefAttributes<HTMLElement>>;
|
|
23
62
|
};
|
|
63
|
+
export {};
|
|
24
64
|
//# sourceMappingURL=description-list.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"description-list.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/description-list.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"description-list.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/description-list.tsx"],"names":[],"mappings":"AAuCA,KAAK,gBAAgB,GAAG,MAAM,GAAG,OAAO,CAAC;AACzC,MAAM,MAAM,yBAAyB,GAAG,gBAAgB,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAmOzE,MAAM,WAAW,oBAAqB,SAAQ,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC;IAClF,MAAM,CAAC,EAAE,QAAQ,GAAG,SAAS,GAAG,YAAY,CAAC;IAC7C,OAAO,CAAC,EAAE,SAAS,GAAG,SAAS,CAAC;IAChC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,UAAU,CAAC;IAC1C;;;;;;;;;;;;;;;;;;OAkBG;IACH,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACxC;AAED,MAAM,WAAW,uBAAwB,SAAQ,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC;IACnF,6FAA6F;IAC7F,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8FAA8F;IAC9F,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;;;;;;OAeG;IACH,IAAI,CAAC,EAAE,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,MAAM,wBAAwB,GAAG,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;AAEzE,MAAM,WAAW,0BAA2B,SAAQ,KAAK,CAAC,cAAc,CAAC,WAAW,CAAC;IACnF,+CAA+C;IAC/C,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAsPD,eAAO,MAAM,eAAe;;;;CAI1B,CAAC"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
export { DescriptionList } from './description-list';
|
|
2
|
-
export type { DescriptionListProps, DescriptionListRowProps, DescriptionListTermProps, DescriptionListDetailProps, } from './description-list';
|
|
2
|
+
export type { DescriptionListProps, DescriptionListRowProps, DescriptionListTermProps, DescriptionListDetailProps, DescriptionListLabelWidth, } from './description-list';
|
|
3
3
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/description-list/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,YAAY,EACV,oBAAoB,EACpB,uBAAuB,EACvB,wBAAwB,EACxB,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,oBAAoB,CAAC"}
|
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { c as
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { I } from "../../_chunks/icon-button-C4CGcYuz.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
1
|
+
import { jsx as e, jsxs as d } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as T, useRef as g, useImperativeHandle as A, useCallback as C, useMemo as I } from "react";
|
|
3
|
+
import { c as N } from "../../_chunks/index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as E } from "react-i18next";
|
|
5
|
+
import { I as o } from "../../_chunks/icon-button-C4CGcYuz.js";
|
|
6
|
+
import { I as R } from "../../_chunks/icon-button-group-DeV3FpNY.js";
|
|
7
|
+
import { D as r } from "../../_chunks/dropdown-menu-DZxwF23X.js";
|
|
8
|
+
import { S as x } from "../../_chunks/switch-D916VW86.js";
|
|
9
|
+
import { c as v, a as M, L as _ } from "../../_chunks/locale-picker-BxEUUPW7.js";
|
|
9
10
|
import { u as H } from "../../_chunks/use-locale-BkCIHujH.js";
|
|
10
11
|
import { u as O } from "../../_chunks/use-theme-B1cwAXJR.js";
|
|
11
12
|
import { u as P } from "../../_chunks/registry-C9nwlNyL.js";
|
|
12
|
-
import { S as
|
|
13
|
-
import { S as
|
|
14
|
-
const
|
|
13
|
+
import { S as K } from "../../_chunks/settings-ca2Yi9R8.js";
|
|
14
|
+
import { S as j, M as D, a as V } from "../../_chunks/sun-Eweh5fvi.js";
|
|
15
|
+
const z = {
|
|
15
16
|
id: "header-settings",
|
|
16
17
|
capabilities: ["view_change"],
|
|
17
18
|
state: {},
|
|
@@ -21,8 +22,8 @@ const D = {
|
|
|
21
22
|
argsType: "{ locale: string }",
|
|
22
23
|
descriptionKey: "ui.agent.headerSettings.actions.setLocale",
|
|
23
24
|
description: "Switch the active locale to the given IETF tag.",
|
|
24
|
-
invoke: (t,
|
|
25
|
-
t.setLocale(
|
|
25
|
+
invoke: (t, i) => {
|
|
26
|
+
t.setLocale(i.locale);
|
|
26
27
|
}
|
|
27
28
|
},
|
|
28
29
|
set_theme: {
|
|
@@ -30,8 +31,8 @@ const D = {
|
|
|
30
31
|
argsType: '{ theme: "light" | "dark" | "system" }',
|
|
31
32
|
descriptionKey: "ui.agent.headerSettings.actions.setTheme",
|
|
32
33
|
description: "Switch the theme preference.",
|
|
33
|
-
invoke: (t,
|
|
34
|
-
t.setTheme(
|
|
34
|
+
invoke: (t, i) => {
|
|
35
|
+
t.setTheme(i.theme);
|
|
35
36
|
}
|
|
36
37
|
},
|
|
37
38
|
set_accessibility: {
|
|
@@ -39,8 +40,8 @@ const D = {
|
|
|
39
40
|
argsType: '{ accessibility: "default" | "accessible" }',
|
|
40
41
|
descriptionKey: "ui.agent.headerSettings.actions.setAccessibility",
|
|
41
42
|
description: "Switch the accessibility preference.",
|
|
42
|
-
invoke: (t,
|
|
43
|
-
t.setAccessibility(
|
|
43
|
+
invoke: (t, i) => {
|
|
44
|
+
t.setAccessibility(i.accessibility);
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
},
|
|
@@ -52,19 +53,19 @@ const D = {
|
|
|
52
53
|
}
|
|
53
54
|
}
|
|
54
55
|
};
|
|
55
|
-
function
|
|
56
|
+
function B(t, i) {
|
|
56
57
|
if (!(typeof window > "u"))
|
|
57
58
|
try {
|
|
58
|
-
window.localStorage.setItem(t,
|
|
59
|
+
window.localStorage.setItem(t, i);
|
|
59
60
|
} catch {
|
|
60
61
|
}
|
|
61
62
|
}
|
|
62
63
|
function G(t) {
|
|
63
64
|
if (typeof document > "u") return;
|
|
64
|
-
const
|
|
65
|
-
|
|
65
|
+
const i = document.documentElement;
|
|
66
|
+
i.lang = t, i.dir = v[t].dir;
|
|
66
67
|
}
|
|
67
|
-
const W =
|
|
68
|
+
const W = N("ds:inline-flex ds:items-center", {
|
|
68
69
|
variants: {
|
|
69
70
|
align: {
|
|
70
71
|
start: "",
|
|
@@ -72,120 +73,146 @@ const W = R("ds:inline-flex ds:items-center", {
|
|
|
72
73
|
}
|
|
73
74
|
},
|
|
74
75
|
defaultVariants: { align: "end" }
|
|
75
|
-
}),
|
|
76
|
+
}), F = [
|
|
76
77
|
"ds:w-[20rem] ds:p-[var(--spacing-xs)]",
|
|
77
78
|
"ds:rounded-[var(--radius-md)] ds:border ds:border-border",
|
|
78
79
|
"ds:bg-background ds:text-foreground ds:shadow-[var(--shadow-lg)]"
|
|
79
|
-
].join(" "),
|
|
80
|
-
(t,
|
|
80
|
+
].join(" "), U = T(
|
|
81
|
+
(t, i) => {
|
|
81
82
|
const {
|
|
82
|
-
align:
|
|
83
|
+
align: p = "end",
|
|
83
84
|
disabled: y = !1,
|
|
84
85
|
className: S,
|
|
85
|
-
id:
|
|
86
|
-
...
|
|
87
|
-
} = t, { t:
|
|
88
|
-
|
|
89
|
-
const
|
|
90
|
-
(
|
|
91
|
-
|
|
86
|
+
id: m,
|
|
87
|
+
...w
|
|
88
|
+
} = t, { t: s } = E(), n = O(), { setLocale: h } = H(), u = g(null);
|
|
89
|
+
A(i, () => u.current, []);
|
|
90
|
+
const f = C(
|
|
91
|
+
(a) => {
|
|
92
|
+
h(a), G(a), B(_, a);
|
|
92
93
|
},
|
|
93
|
-
[
|
|
94
|
-
),
|
|
95
|
-
|
|
96
|
-
const c =
|
|
94
|
+
[h]
|
|
95
|
+
), b = g(f);
|
|
96
|
+
b.current = f;
|
|
97
|
+
const c = g(n);
|
|
97
98
|
c.current = n;
|
|
98
|
-
const
|
|
99
|
+
const L = I(
|
|
99
100
|
() => ({
|
|
100
|
-
setLocale: (
|
|
101
|
-
Object.prototype.hasOwnProperty.call(
|
|
101
|
+
setLocale: (a) => {
|
|
102
|
+
Object.prototype.hasOwnProperty.call(v, a) && b.current(a);
|
|
102
103
|
},
|
|
103
|
-
setTheme: (
|
|
104
|
-
setAccessibility: (
|
|
104
|
+
setTheme: (a) => c.current.setTheme(a),
|
|
105
|
+
setAccessibility: (a) => c.current.setAccessibility(a)
|
|
105
106
|
}),
|
|
106
107
|
[]
|
|
107
108
|
);
|
|
108
|
-
P(
|
|
109
|
-
const
|
|
110
|
-
return /* @__PURE__ */
|
|
109
|
+
P(z, L, m);
|
|
110
|
+
const k = n.accessibility === "accessible";
|
|
111
|
+
return /* @__PURE__ */ e(
|
|
111
112
|
"div",
|
|
112
113
|
{
|
|
113
|
-
ref:
|
|
114
|
+
ref: u,
|
|
114
115
|
"data-component": "header-settings",
|
|
115
|
-
"data-component-id":
|
|
116
|
-
className: W({ align:
|
|
117
|
-
...
|
|
118
|
-
children: /* @__PURE__ */
|
|
119
|
-
/* @__PURE__ */
|
|
120
|
-
|
|
116
|
+
"data-component-id": m,
|
|
117
|
+
className: W({ align: p, className: S }),
|
|
118
|
+
...w,
|
|
119
|
+
children: /* @__PURE__ */ d(r.Root, { children: [
|
|
120
|
+
/* @__PURE__ */ e(r.Trigger, { asChild: !0, children: /* @__PURE__ */ e(
|
|
121
|
+
o,
|
|
121
122
|
{
|
|
122
123
|
disabled: y,
|
|
123
|
-
icon: /* @__PURE__ */
|
|
124
|
-
"aria-label":
|
|
124
|
+
icon: /* @__PURE__ */ e(K, { "aria-hidden": !0 }),
|
|
125
|
+
"aria-label": s("navigation.headerSettings.trigger")
|
|
125
126
|
}
|
|
126
127
|
) }),
|
|
127
|
-
/* @__PURE__ */
|
|
128
|
-
|
|
128
|
+
/* @__PURE__ */ e(r.Portal, { children: /* @__PURE__ */ d(
|
|
129
|
+
r.Content,
|
|
129
130
|
{
|
|
130
|
-
align:
|
|
131
|
+
align: p,
|
|
131
132
|
sideOffset: 8,
|
|
132
|
-
className:
|
|
133
|
-
onKeyDownCapture: (
|
|
134
|
-
const
|
|
135
|
-
(
|
|
136
|
-
|
|
133
|
+
className: F,
|
|
134
|
+
onKeyDownCapture: (a) => {
|
|
135
|
+
const l = a.target;
|
|
136
|
+
(l == null ? void 0 : l.tagName) === "INPUT" && // Always allow Escape so the menu can close.
|
|
137
|
+
a.key !== "Escape" && a.stopPropagation();
|
|
137
138
|
},
|
|
138
139
|
children: [
|
|
139
|
-
/* @__PURE__ */
|
|
140
|
-
/* @__PURE__ */
|
|
140
|
+
/* @__PURE__ */ e(r.Label, { children: s("navigation.headerSettings.language.label") }),
|
|
141
|
+
/* @__PURE__ */ e(
|
|
141
142
|
"div",
|
|
142
143
|
{
|
|
143
144
|
role: "group",
|
|
144
|
-
"aria-label":
|
|
145
|
+
"aria-label": s("navigation.headerSettings.language.label"),
|
|
145
146
|
className: "ds:py-[var(--spacing-xs)]",
|
|
146
|
-
children: /* @__PURE__ */
|
|
147
|
+
children: /* @__PURE__ */ e(M.SearchList, {})
|
|
147
148
|
}
|
|
148
149
|
),
|
|
149
|
-
/* @__PURE__ */
|
|
150
|
-
/* @__PURE__ */
|
|
151
|
-
/* @__PURE__ */
|
|
152
|
-
|
|
150
|
+
/* @__PURE__ */ e(r.Separator, {}),
|
|
151
|
+
/* @__PURE__ */ e(r.Label, { children: s("navigation.headerSettings.appearance.label") }),
|
|
152
|
+
/* @__PURE__ */ e(
|
|
153
|
+
"div",
|
|
153
154
|
{
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
155
|
+
role: "group",
|
|
156
|
+
"aria-label": s("navigation.headerSettings.appearance.label"),
|
|
157
|
+
className: "ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]",
|
|
158
|
+
children: /* @__PURE__ */ d(
|
|
159
|
+
R,
|
|
160
|
+
{
|
|
161
|
+
role: "radiogroup",
|
|
162
|
+
mode: "toggle-single",
|
|
163
|
+
size: "sm",
|
|
164
|
+
"aria-label": s("navigation.headerSettings.appearance.label"),
|
|
165
|
+
value: n.theme,
|
|
166
|
+
onValueChange: (a) => n.setTheme(a),
|
|
167
|
+
children: [
|
|
168
|
+
/* @__PURE__ */ e(
|
|
169
|
+
o,
|
|
170
|
+
{
|
|
171
|
+
icon: /* @__PURE__ */ e(j, { "aria-hidden": !0 }),
|
|
172
|
+
"aria-label": s("navigation.headerSettings.appearance.light"),
|
|
173
|
+
value: "light"
|
|
174
|
+
}
|
|
175
|
+
),
|
|
176
|
+
/* @__PURE__ */ e(
|
|
177
|
+
o,
|
|
178
|
+
{
|
|
179
|
+
icon: /* @__PURE__ */ e(D, { "aria-hidden": !0 }),
|
|
180
|
+
"aria-label": s("navigation.headerSettings.appearance.dark"),
|
|
181
|
+
value: "dark"
|
|
182
|
+
}
|
|
183
|
+
),
|
|
184
|
+
/* @__PURE__ */ e(
|
|
185
|
+
o,
|
|
186
|
+
{
|
|
187
|
+
icon: /* @__PURE__ */ e(V, { "aria-hidden": !0 }),
|
|
188
|
+
"aria-label": s(
|
|
189
|
+
"navigation.headerSettings.appearance.system"
|
|
190
|
+
),
|
|
191
|
+
value: "system"
|
|
192
|
+
}
|
|
193
|
+
)
|
|
194
|
+
]
|
|
195
|
+
}
|
|
196
|
+
)
|
|
170
197
|
}
|
|
171
198
|
),
|
|
172
|
-
/* @__PURE__ */
|
|
173
|
-
/* @__PURE__ */
|
|
199
|
+
/* @__PURE__ */ e(r.Separator, {}),
|
|
200
|
+
/* @__PURE__ */ e(
|
|
174
201
|
"div",
|
|
175
202
|
{
|
|
176
203
|
role: "group",
|
|
177
|
-
"aria-label":
|
|
204
|
+
"aria-label": s(
|
|
178
205
|
"navigation.headerSettings.appearance.accessible"
|
|
179
206
|
),
|
|
180
207
|
className: "ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]",
|
|
181
|
-
children: /* @__PURE__ */
|
|
182
|
-
|
|
208
|
+
children: /* @__PURE__ */ e(
|
|
209
|
+
x,
|
|
183
210
|
{
|
|
184
|
-
label:
|
|
211
|
+
label: s("navigation.headerSettings.appearance.accessible"),
|
|
185
212
|
labelSide: "start",
|
|
186
213
|
size: "sm",
|
|
187
|
-
checked:
|
|
188
|
-
onCheckedChange: (
|
|
214
|
+
checked: k,
|
|
215
|
+
onCheckedChange: (a) => n.setAccessibility(a ? "accessible" : "default")
|
|
189
216
|
}
|
|
190
217
|
)
|
|
191
218
|
}
|
|
@@ -198,8 +225,8 @@ const W = R("ds:inline-flex ds:items-center", {
|
|
|
198
225
|
);
|
|
199
226
|
}
|
|
200
227
|
);
|
|
201
|
-
|
|
228
|
+
U.displayName = "HeaderSettings";
|
|
202
229
|
export {
|
|
203
|
-
|
|
230
|
+
U as HeaderSettings
|
|
204
231
|
};
|
|
205
232
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../src/components/header-settings/header-settings.agent.ts","../../../src/components/header-settings/header-settings.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — HeaderSettings. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { HeaderSettingsHandle } from './header-settings';\n\nexport const headerSettingsAgent: AgentAdapter<HeaderSettingsHandle> = {\n id: 'header-settings',\n capabilities: ['view_change'],\n state: {},\n actions: {\n set_locale: {\n safety: 'write',\n argsType: '{ locale: string }',\n descriptionKey: 'ui.agent.headerSettings.actions.setLocale',\n description: 'Switch the active locale to the given IETF tag.',\n invoke: (handle, args: { locale: string }) => {\n // Validation happens inside the handle so the agent surface\n // accepts arbitrary tags and silently drops unknown ones.\n handle.setLocale(args.locale);\n },\n },\n set_theme: {\n safety: 'write',\n argsType: '{ theme: \"light\" | \"dark\" | \"system\" }',\n descriptionKey: 'ui.agent.headerSettings.actions.setTheme',\n description: 'Switch the theme preference.',\n invoke: (handle, args: { theme: 'light' | 'dark' | 'system' }) => {\n handle.setTheme(args.theme);\n },\n },\n set_accessibility: {\n safety: 'write',\n argsType: '{ accessibility: \"default\" | \"accessible\" }',\n descriptionKey: 'ui.agent.headerSettings.actions.setAccessibility',\n description: 'Switch the accessibility preference.',\n invoke: (handle, args: { accessibility: 'default' | 'accessible' }) => {\n handle.setAccessibility(args.accessibility);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'header-settings',\n description: 'Marks the HeaderSettings wrapper.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Monitor, Moon, Settings, Sun } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { Switch } from '../switch/switch';\nimport {\n LocalePicker,\n LOCALE_STORAGE_KEY,\n} from '../locale-picker/locale-picker';\nimport {\n useTheme,\n type AccessibilityPreference,\n type ThemePreference,\n} from '../../hooks';\nimport { useLocale } from '../../hooks/use-locale';\nimport { LOCALE_META, type Locale } from '../../i18n/locale-meta';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { headerSettingsAgent } from './header-settings.agent';\n\nfunction safeWriteStorage(key: string, value: string): void {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* Storage can throw in private mode — silent-fail per use-theme.ts. */\n }\n}\n\nfunction applyDocumentAttrs(locale: Locale): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.lang = locale;\n root.dir = LOCALE_META[locale].dir;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n align: {\n start: '',\n end: '',\n },\n },\n defaultVariants: { align: 'end' },\n});\n\nconst dropdownContentClasses = [\n 'ds:w-[20rem] ds:p-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:bg-background ds:text-foreground ds:shadow-[var(--shadow-lg)]',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface HeaderSettingsProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n /** Anchor side for the dropdown. Defaults to `end` (matches LTR + RTL). */\n align?: 'start' | 'end';\n /** Disable the trigger entirely. */\n disabled?: boolean;\n}\n\nexport interface HeaderSettingsHandle {\n /**\n * Switch the active locale. Widened to `string` (vs. `Locale`) so\n * agent surfaces with untyped inputs can call through without\n * extra casting — invalid tags no-op silently.\n */\n setLocale: (next: string) => void;\n setTheme: (next: ThemePreference) => void;\n setAccessibility: (next: AccessibilityPreference) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* HeaderSettings */\n/* */\n/* Single button → single DropdownMenu surface. Inside the menu, the */\n/* \"Language\" section embeds `LocalePicker.SearchList` (the kit's */\n/* searchable list without its own trigger / popover) and the */\n/* \"Appearance\" section mirrors `ThemeToggle`'s menu-variant internals */\n/* using `DropdownMenu.RadioGroup` + `CheckboxItem`. Both sections */\n/* read/write the same hooks (`useLocale`, `useTheme`) that the */\n/* standalone components use, so there's no state duplication. */\n/* ------------------------------------------------------------------ */\n\nexport const HeaderSettings = forwardRef<HTMLDivElement, HeaderSettingsProps>(\n (props, ref) => {\n const {\n align = 'end',\n disabled = false,\n className,\n id,\n ...rest\n } = props as HeaderSettingsProps & { id?: string };\n\n const { t } = useTranslation();\n const theme = useTheme();\n const { setLocale: setLocaleI18n } = useLocale();\n\n const forwardedRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => forwardedRef.current as HTMLDivElement, []);\n\n // Same side-effect chain as LocalePicker's internal helper:\n // i18next.changeLanguage → document.dir/lang → persist.\n // Inlined here (rather than exported from locale-picker) because\n // it's three small calls; the LocalePicker.SearchList component\n // continues to own its own copy for inline use, and both apply\n // the same persistence key (`alfadocs-ui.locale`) so a write from\n // either path is visible to the other on next mount.\n const setLocaleWithPersistence = useCallback(\n (next: Locale) => {\n void setLocaleI18n(next);\n applyDocumentAttrs(next);\n safeWriteStorage(LOCALE_STORAGE_KEY, next);\n },\n [setLocaleI18n],\n );\n const setLocaleRef = useRef(setLocaleWithPersistence);\n setLocaleRef.current = setLocaleWithPersistence;\n\n const themeRef = useRef(theme);\n themeRef.current = theme;\n const agentHandle = useMemo<HeaderSettingsHandle>(\n () => ({\n setLocale: (next: string) => {\n // Mirrors LocalePicker's gating — silently drop unknown tags\n // rather than crash mid-cascade. `LOCALES_WITH_BUNDLES` is\n // re-imported via the LOCALE_META keys so this file doesn't\n // need the resources module on the build-agent-catalog path.\n if (Object.prototype.hasOwnProperty.call(LOCALE_META, next)) {\n setLocaleRef.current(next as Locale);\n }\n },\n setTheme: (next) => themeRef.current.setTheme(next),\n setAccessibility: (next) => themeRef.current.setAccessibility(next),\n }),\n [],\n );\n useAgentRegistration(headerSettingsAgent, agentHandle, id);\n\n const accessibleChecked = theme.accessibility === 'accessible';\n\n return (\n <div\n ref={forwardedRef}\n data-component=\"header-settings\"\n data-component-id={id}\n className={wrapperVariants({ align, className })}\n {...rest}\n >\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n disabled={disabled}\n icon={<Settings aria-hidden />}\n aria-label={t('navigation.headerSettings.trigger')}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align={align}\n sideOffset={8}\n className={dropdownContentClasses}\n // Search input inside the menu owns its own keyboard\n // capture (cmdk). Stop Radix Menu's typeahead from\n // intercepting letters typed into the search field —\n // `onKeyDownCapture` runs before the menu's listener.\n onKeyDownCapture={(event) => {\n const target = event.target as HTMLElement | null;\n if (\n target?.tagName === 'INPUT' &&\n // Always allow Escape so the menu can close.\n event.key !== 'Escape'\n ) {\n event.stopPropagation();\n }\n }}\n >\n <DropdownMenu.Label>\n {t('navigation.headerSettings.language.label')}\n </DropdownMenu.Label>\n {/* The searchable list owns its own keyboard nav (cmdk).\n Wrap in `role=\"group\"` (vs. `role=\"presentation\"`)\n so the menu's `aria-required-children` rule sees a\n permitted child role, not the cmdk input/listbox\n leaking up as direct children of `role=\"menu\"`. */}\n <div\n role=\"group\"\n aria-label={t('navigation.headerSettings.language.label')}\n className=\"ds:py-[var(--spacing-xs)]\"\n >\n <LocalePicker.SearchList />\n </div>\n\n <DropdownMenu.Separator />\n\n <DropdownMenu.Label>\n {t('navigation.headerSettings.appearance.label')}\n </DropdownMenu.Label>\n <DropdownMenu.RadioGroup\n value={theme.theme}\n onValueChange={(next) =>\n theme.setTheme(next as ThemePreference)\n }\n >\n <DropdownMenu.RadioItem value=\"light\">\n <Sun aria-hidden className=\"ds:size-4\" />\n {t('navigation.headerSettings.appearance.light')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"dark\">\n <Moon aria-hidden className=\"ds:size-4\" />\n {t('navigation.headerSettings.appearance.dark')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"system\">\n <Monitor aria-hidden className=\"ds:size-4\" />\n {t('navigation.headerSettings.appearance.system')}\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n\n <DropdownMenu.Separator />\n\n {/* Accessible-mode toggle uses the kit's Switch primitive\n for a clearer visual affordance than a checkbox tick.\n Rendered inside a `presentation` row (not a\n DropdownMenu.CheckboxItem) — the Switch is focusable\n via Tab while the menu is open, so keyboard users\n still reach it; arrow keys keep moving between the\n three theme radios above without falling into the\n switch's roving collection.\n\n When the switch flips, `setAccessibility` writes\n through useTheme (the same store the standalone\n ThemeToggle uses) so document.documentElement gets\n the `theme-accessible` class instantly — including\n swapping `--font-sans` to Lexend for Latin scripts\n (see src/tokens/index.css). */}\n {/* `role=\"group\"` so the menu's `aria-required-children`\n (which only permits menuitem* / group / separator /\n menu inside `role=\"menu\"`) is satisfied — the Switch's\n `role=\"switch\"` would be a forbidden direct child of\n the menu. `aria-label` names the group so SR users\n hear \"Accessibility toggle, group\". */}\n <div\n role=\"group\"\n aria-label={t(\n 'navigation.headerSettings.appearance.accessible',\n )}\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]\"\n >\n <Switch\n label={t('navigation.headerSettings.appearance.accessible')}\n labelSide=\"start\"\n size=\"sm\"\n checked={accessibleChecked}\n onCheckedChange={(next) =>\n theme.setAccessibility(next ? 'accessible' : 'default')\n }\n />\n </div>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\nHeaderSettings.displayName = 'HeaderSettings';\n"],"names":["headerSettingsAgent","handle","args","safeWriteStorage","key","value","applyDocumentAttrs","locale","root","LOCALE_META","wrapperVariants","cva","dropdownContentClasses","HeaderSettings","forwardRef","props","ref","align","disabled","className","id","rest","t","useTranslation","theme","useTheme","setLocaleI18n","useLocale","forwardedRef","useRef","useImperativeHandle","setLocaleWithPersistence","useCallback","next","LOCALE_STORAGE_KEY","setLocaleRef","themeRef","agentHandle","useMemo","useAgentRegistration","accessibleChecked","jsx","jsxs","DropdownMenu","IconButton","Settings","event","target","LocalePicker","Sun","Moon","Monitor","Switch"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../src/components/header-settings/header-settings.agent.ts","../../../src/components/header-settings/header-settings.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — HeaderSettings. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { HeaderSettingsHandle } from './header-settings';\n\nexport const headerSettingsAgent: AgentAdapter<HeaderSettingsHandle> = {\n id: 'header-settings',\n capabilities: ['view_change'],\n state: {},\n actions: {\n set_locale: {\n safety: 'write',\n argsType: '{ locale: string }',\n descriptionKey: 'ui.agent.headerSettings.actions.setLocale',\n description: 'Switch the active locale to the given IETF tag.',\n invoke: (handle, args: { locale: string }) => {\n // Validation happens inside the handle so the agent surface\n // accepts arbitrary tags and silently drops unknown ones.\n handle.setLocale(args.locale);\n },\n },\n set_theme: {\n safety: 'write',\n argsType: '{ theme: \"light\" | \"dark\" | \"system\" }',\n descriptionKey: 'ui.agent.headerSettings.actions.setTheme',\n description: 'Switch the theme preference.',\n invoke: (handle, args: { theme: 'light' | 'dark' | 'system' }) => {\n handle.setTheme(args.theme);\n },\n },\n set_accessibility: {\n safety: 'write',\n argsType: '{ accessibility: \"default\" | \"accessible\" }',\n descriptionKey: 'ui.agent.headerSettings.actions.setAccessibility',\n description: 'Switch the accessibility preference.',\n invoke: (handle, args: { accessibility: 'default' | 'accessible' }) => {\n handle.setAccessibility(args.accessibility);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'header-settings',\n description: 'Marks the HeaderSettings wrapper.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n type HTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Monitor, Moon, Settings, Sun } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { Switch } from '../switch/switch';\nimport {\n LocalePicker,\n LOCALE_STORAGE_KEY,\n} from '../locale-picker/locale-picker';\nimport {\n useTheme,\n type AccessibilityPreference,\n type ThemePreference,\n} from '../../hooks';\nimport { useLocale } from '../../hooks/use-locale';\nimport { LOCALE_META, type Locale } from '../../i18n/locale-meta';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { headerSettingsAgent } from './header-settings.agent';\n\nfunction safeWriteStorage(key: string, value: string): void {\n if (typeof window === 'undefined') return;\n try {\n window.localStorage.setItem(key, value);\n } catch {\n /* Storage can throw in private mode — silent-fail per use-theme.ts. */\n }\n}\n\nfunction applyDocumentAttrs(locale: Locale): void {\n if (typeof document === 'undefined') return;\n const root = document.documentElement;\n root.lang = locale;\n root.dir = LOCALE_META[locale].dir;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n align: {\n start: '',\n end: '',\n },\n },\n defaultVariants: { align: 'end' },\n});\n\nconst dropdownContentClasses = [\n 'ds:w-[20rem] ds:p-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:bg-background ds:text-foreground ds:shadow-[var(--shadow-lg)]',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface HeaderSettingsProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n /** Anchor side for the dropdown. Defaults to `end` (matches LTR + RTL). */\n align?: 'start' | 'end';\n /** Disable the trigger entirely. */\n disabled?: boolean;\n}\n\nexport interface HeaderSettingsHandle {\n /**\n * Switch the active locale. Widened to `string` (vs. `Locale`) so\n * agent surfaces with untyped inputs can call through without\n * extra casting — invalid tags no-op silently.\n */\n setLocale: (next: string) => void;\n setTheme: (next: ThemePreference) => void;\n setAccessibility: (next: AccessibilityPreference) => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* HeaderSettings */\n/* */\n/* Single button → single DropdownMenu surface. Inside the menu, the */\n/* \"Language\" section embeds `LocalePicker.SearchList` (the kit's */\n/* searchable list without its own trigger / popover) and the */\n/* \"Appearance\" section mirrors `ThemeToggle`'s menu-variant internals */\n/* using `DropdownMenu.RadioGroup` + `CheckboxItem`. Both sections */\n/* read/write the same hooks (`useLocale`, `useTheme`) that the */\n/* standalone components use, so there's no state duplication. */\n/* ------------------------------------------------------------------ */\n\nexport const HeaderSettings = forwardRef<HTMLDivElement, HeaderSettingsProps>(\n (props, ref) => {\n const {\n align = 'end',\n disabled = false,\n className,\n id,\n ...rest\n } = props as HeaderSettingsProps & { id?: string };\n\n const { t } = useTranslation();\n const theme = useTheme();\n const { setLocale: setLocaleI18n } = useLocale();\n\n const forwardedRef = useRef<HTMLDivElement | null>(null);\n useImperativeHandle(ref, () => forwardedRef.current as HTMLDivElement, []);\n\n // Same side-effect chain as LocalePicker's internal helper:\n // i18next.changeLanguage → document.dir/lang → persist.\n // Inlined here (rather than exported from locale-picker) because\n // it's three small calls; the LocalePicker.SearchList component\n // continues to own its own copy for inline use, and both apply\n // the same persistence key (`alfadocs-ui.locale`) so a write from\n // either path is visible to the other on next mount.\n const setLocaleWithPersistence = useCallback(\n (next: Locale) => {\n void setLocaleI18n(next);\n applyDocumentAttrs(next);\n safeWriteStorage(LOCALE_STORAGE_KEY, next);\n },\n [setLocaleI18n],\n );\n const setLocaleRef = useRef(setLocaleWithPersistence);\n setLocaleRef.current = setLocaleWithPersistence;\n\n const themeRef = useRef(theme);\n themeRef.current = theme;\n const agentHandle = useMemo<HeaderSettingsHandle>(\n () => ({\n setLocale: (next: string) => {\n // Mirrors LocalePicker's gating — silently drop unknown tags\n // rather than crash mid-cascade. `LOCALES_WITH_BUNDLES` is\n // re-imported via the LOCALE_META keys so this file doesn't\n // need the resources module on the build-agent-catalog path.\n if (Object.prototype.hasOwnProperty.call(LOCALE_META, next)) {\n setLocaleRef.current(next as Locale);\n }\n },\n setTheme: (next) => themeRef.current.setTheme(next),\n setAccessibility: (next) => themeRef.current.setAccessibility(next),\n }),\n [],\n );\n useAgentRegistration(headerSettingsAgent, agentHandle, id);\n\n const accessibleChecked = theme.accessibility === 'accessible';\n\n return (\n <div\n ref={forwardedRef}\n data-component=\"header-settings\"\n data-component-id={id}\n className={wrapperVariants({ align, className })}\n {...rest}\n >\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n disabled={disabled}\n icon={<Settings aria-hidden />}\n aria-label={t('navigation.headerSettings.trigger')}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n align={align}\n sideOffset={8}\n className={dropdownContentClasses}\n // Search input inside the menu owns its own keyboard\n // capture (cmdk). Stop Radix Menu's typeahead from\n // intercepting letters typed into the search field —\n // `onKeyDownCapture` runs before the menu's listener.\n onKeyDownCapture={(event) => {\n const target = event.target as HTMLElement | null;\n if (\n target?.tagName === 'INPUT' &&\n // Always allow Escape so the menu can close.\n event.key !== 'Escape'\n ) {\n event.stopPropagation();\n }\n }}\n >\n <DropdownMenu.Label>\n {t('navigation.headerSettings.language.label')}\n </DropdownMenu.Label>\n {/* The searchable list owns its own keyboard nav (cmdk).\n Wrap in `role=\"group\"` (vs. `role=\"presentation\"`)\n so the menu's `aria-required-children` rule sees a\n permitted child role, not the cmdk input/listbox\n leaking up as direct children of `role=\"menu\"`. */}\n <div\n role=\"group\"\n aria-label={t('navigation.headerSettings.language.label')}\n className=\"ds:py-[var(--spacing-xs)]\"\n >\n <LocalePicker.SearchList />\n </div>\n\n <DropdownMenu.Separator />\n\n <DropdownMenu.Label>\n {t('navigation.headerSettings.appearance.label')}\n </DropdownMenu.Label>\n {/* Horizontal segmented toggle (mirrors ThemeToggle's\n `split` variant) instead of stacked radio rows — uses\n fewer rows of menu real estate and reads as a single\n control. `role=\"radiogroup\"` keeps the screen-reader\n semantics correct, and the group is wrapped in\n `role=\"group\"` for the same reason the language\n search-list wrapper is — the menu's\n aria-required-children doesn't permit raw IconButtons\n as direct menu descendants. */}\n <div\n role=\"group\"\n aria-label={t('navigation.headerSettings.appearance.label')}\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]\"\n >\n <IconButtonGroup\n role=\"radiogroup\"\n mode=\"toggle-single\"\n size=\"sm\"\n aria-label={t('navigation.headerSettings.appearance.label')}\n value={theme.theme}\n onValueChange={(next) =>\n theme.setTheme(next as ThemePreference)\n }\n >\n <IconButton\n icon={<Sun aria-hidden />}\n aria-label={t('navigation.headerSettings.appearance.light')}\n value=\"light\"\n />\n <IconButton\n icon={<Moon aria-hidden />}\n aria-label={t('navigation.headerSettings.appearance.dark')}\n value=\"dark\"\n />\n <IconButton\n icon={<Monitor aria-hidden />}\n aria-label={t(\n 'navigation.headerSettings.appearance.system',\n )}\n value=\"system\"\n />\n </IconButtonGroup>\n </div>\n\n <DropdownMenu.Separator />\n\n {/* Accessible-mode toggle uses the kit's Switch primitive\n for a clearer visual affordance than a checkbox tick.\n Rendered inside a `presentation` row (not a\n DropdownMenu.CheckboxItem) — the Switch is focusable\n via Tab while the menu is open, so keyboard users\n still reach it; arrow keys keep moving between the\n three theme radios above without falling into the\n switch's roving collection.\n\n When the switch flips, `setAccessibility` writes\n through useTheme (the same store the standalone\n ThemeToggle uses) so document.documentElement gets\n the `theme-accessible` class instantly — including\n swapping `--font-sans` to Lexend for Latin scripts\n (see src/tokens/index.css). */}\n {/* `role=\"group\"` so the menu's `aria-required-children`\n (which only permits menuitem* / group / separator /\n menu inside `role=\"menu\"`) is satisfied — the Switch's\n `role=\"switch\"` would be a forbidden direct child of\n the menu. `aria-label` names the group so SR users\n hear \"Accessibility toggle, group\". */}\n <div\n role=\"group\"\n aria-label={t(\n 'navigation.headerSettings.appearance.accessible',\n )}\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-sm)]\"\n >\n <Switch\n label={t('navigation.headerSettings.appearance.accessible')}\n labelSide=\"start\"\n size=\"sm\"\n checked={accessibleChecked}\n onCheckedChange={(next) =>\n theme.setAccessibility(next ? 'accessible' : 'default')\n }\n />\n </div>\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n );\n },\n);\n\nHeaderSettings.displayName = 'HeaderSettings';\n"],"names":["headerSettingsAgent","handle","args","safeWriteStorage","key","value","applyDocumentAttrs","locale","root","LOCALE_META","wrapperVariants","cva","dropdownContentClasses","HeaderSettings","forwardRef","props","ref","align","disabled","className","id","rest","t","useTranslation","theme","useTheme","setLocaleI18n","useLocale","forwardedRef","useRef","useImperativeHandle","setLocaleWithPersistence","useCallback","next","LOCALE_STORAGE_KEY","setLocaleRef","themeRef","agentHandle","useMemo","useAgentRegistration","accessibleChecked","jsx","jsxs","DropdownMenu","IconButton","Settings","event","target","LocalePicker","IconButtonGroup","Sun","Moon","Monitor","Switch"],"mappings":";;;;;;;;;;;;;;AAOO,MAAMA,IAA0D;AAAA,EACrE,IAAI;AAAA,EACJ,cAAc,CAAC,aAAa;AAAA,EAC5B,OAAO,CAAA;AAAA,EACP,SAAS;AAAA,IACP,YAAY;AAAA,MACV,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACC,GAAQC,MAA6B;AAG5C,QAAAD,EAAO,UAAUC,EAAK,MAAM;AAAA,MAC9B;AAAA,IAAA;AAAA,IAEF,WAAW;AAAA,MACT,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACD,GAAQC,MAAiD;AAChE,QAAAD,EAAO,SAASC,EAAK,KAAK;AAAA,MAC5B;AAAA,IAAA;AAAA,IAEF,mBAAmB;AAAA,MACjB,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACD,GAAQC,MAAsD;AACrE,QAAAD,EAAO,iBAAiBC,EAAK,aAAa;AAAA,MAC5C;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;ACpBA,SAASC,EAAiBC,GAAaC,GAAqB;AAC1D,MAAI,SAAO,SAAW;AACtB,QAAI;AACF,aAAO,aAAa,QAAQD,GAAKC,CAAK;AAAA,IACxC,QAAQ;AAAA,IAER;AACF;AAEA,SAASC,EAAmBC,GAAsB;AAChD,MAAI,OAAO,WAAa,IAAa;AACrC,QAAMC,IAAO,SAAS;AACtB,EAAAA,EAAK,OAAOD,GACZC,EAAK,MAAMC,EAAYF,CAAM,EAAE;AACjC;AAMA,MAAMG,IAAkBC,EAAI,kCAAkC;AAAA,EAC5D,UAAU;AAAA,IACR,OAAO;AAAA,MACL,OAAO;AAAA,MACP,KAAK;AAAA,IAAA;AAAA,EACP;AAAA,EAEF,iBAAiB,EAAE,OAAO,MAAA;AAC5B,CAAC,GAEKC,IAAyB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAuCGC,IAAiBC;AAAA,EAC5B,CAACC,GAAOC,MAAQ;AACd,UAAM;AAAA,MACJ,OAAAC,IAAQ;AAAA,MACR,UAAAC,IAAW;AAAA,MACX,WAAAC;AAAA,MACA,IAAAC;AAAA,MACA,GAAGC;AAAA,IAAA,IACDN,GAEE,EAAE,GAAAO,EAAA,IAAMC,EAAA,GACRC,IAAQC,EAAA,GACR,EAAE,WAAWC,EAAA,IAAkBC,EAAA,GAE/BC,IAAeC,EAA8B,IAAI;AACvD,IAAAC,EAAoBd,GAAK,MAAMY,EAAa,SAA2B,CAAA,CAAE;AASzE,UAAMG,IAA2BC;AAAA,MAC/B,CAACC,MAAiB;AAChB,QAAKP,EAAcO,CAAI,GACvB3B,EAAmB2B,CAAI,GACvB9B,EAAiB+B,GAAoBD,CAAI;AAAA,MAC3C;AAAA,MACA,CAACP,CAAa;AAAA,IAAA,GAEVS,IAAeN,EAAOE,CAAwB;AACpD,IAAAI,EAAa,UAAUJ;AAEvB,UAAMK,IAAWP,EAAOL,CAAK;AAC7B,IAAAY,EAAS,UAAUZ;AACnB,UAAMa,IAAcC;AAAA,MAClB,OAAO;AAAA,QACL,WAAW,CAACL,MAAiB;AAK3B,UAAI,OAAO,UAAU,eAAe,KAAKxB,GAAawB,CAAI,KACxDE,EAAa,QAAQF,CAAc;AAAA,QAEvC;AAAA,QACA,UAAU,CAACA,MAASG,EAAS,QAAQ,SAASH,CAAI;AAAA,QAClD,kBAAkB,CAACA,MAASG,EAAS,QAAQ,iBAAiBH,CAAI;AAAA,MAAA;AAAA,MAEpE,CAAA;AAAA,IAAC;AAEH,IAAAM,EAAqBvC,GAAqBqC,GAAajB,CAAE;AAEzD,UAAMoB,IAAoBhB,EAAM,kBAAkB;AAElD,WACE,gBAAAiB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAKb;AAAA,QACL,kBAAe;AAAA,QACf,qBAAmBR;AAAA,QACnB,WAAWV,EAAgB,EAAE,OAAAO,GAAO,WAAAE,GAAW;AAAA,QAC9C,GAAGE;AAAA,QAEJ,UAAA,gBAAAqB,EAACC,EAAa,MAAb,EACC,UAAA;AAAA,UAAA,gBAAAF,EAACE,EAAa,SAAb,EAAqB,SAAO,IAC3B,UAAA,gBAAAF;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,UAAA1B;AAAA,cACA,MAAM,gBAAAuB,EAACI,GAAA,EAAS,eAAW,GAAA,CAAC;AAAA,cAC5B,cAAYvB,EAAE,mCAAmC;AAAA,YAAA;AAAA,UAAA,GAErD;AAAA,UACA,gBAAAmB,EAACE,EAAa,QAAb,EACC,UAAA,gBAAAD;AAAA,YAACC,EAAa;AAAA,YAAb;AAAA,cACC,OAAA1B;AAAA,cACA,YAAY;AAAA,cACZ,WAAWL;AAAA,cAKX,kBAAkB,CAACkC,MAAU;AAC3B,sBAAMC,IAASD,EAAM;AACrB,iBACEC,KAAA,gBAAAA,EAAQ,aAAY;AAAA,gBAEpBD,EAAM,QAAQ,YAEdA,EAAM,gBAAA;AAAA,cAEV;AAAA,cAEA,UAAA;AAAA,gBAAA,gBAAAL,EAACE,EAAa,OAAb,EACE,UAAArB,EAAE,0CAA0C,GAC/C;AAAA,gBAMA,gBAAAmB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,cAAYnB,EAAE,0CAA0C;AAAA,oBACxD,WAAU;AAAA,oBAEV,UAAA,gBAAAmB,EAACO,EAAa,YAAb,CAAA,CAAwB;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAG3B,gBAAAP,EAACE,EAAa,WAAb,EAAuB;AAAA,kCAEvBA,EAAa,OAAb,EACE,UAAArB,EAAE,4CAA4C,GACjD;AAAA,gBAUA,gBAAAmB;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,cAAYnB,EAAE,4CAA4C;AAAA,oBAC1D,WAAU;AAAA,oBAEV,UAAA,gBAAAoB;AAAA,sBAACO;AAAA,sBAAA;AAAA,wBACC,MAAK;AAAA,wBACL,MAAK;AAAA,wBACL,MAAK;AAAA,wBACL,cAAY3B,EAAE,4CAA4C;AAAA,wBAC1D,OAAOE,EAAM;AAAA,wBACb,eAAe,CAACS,MACdT,EAAM,SAASS,CAAuB;AAAA,wBAGxC,UAAA;AAAA,0BAAA,gBAAAQ;AAAA,4BAACG;AAAA,4BAAA;AAAA,8BACC,MAAM,gBAAAH,EAACS,GAAA,EAAI,eAAW,GAAA,CAAC;AAAA,8BACvB,cAAY5B,EAAE,4CAA4C;AAAA,8BAC1D,OAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAER,gBAAAmB;AAAA,4BAACG;AAAA,4BAAA;AAAA,8BACC,MAAM,gBAAAH,EAACU,GAAA,EAAK,eAAW,GAAA,CAAC;AAAA,8BACxB,cAAY7B,EAAE,2CAA2C;AAAA,8BACzD,OAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,0BAER,gBAAAmB;AAAA,4BAACG;AAAA,4BAAA;AAAA,8BACC,MAAM,gBAAAH,EAACW,GAAA,EAAQ,eAAW,GAAA,CAAC;AAAA,8BAC3B,cAAY9B;AAAA,gCACV;AAAA,8BAAA;AAAA,8BAEF,OAAM;AAAA,4BAAA;AAAA,0BAAA;AAAA,wBACR;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBACF;AAAA,gBAAA;AAAA,gBAGF,gBAAAmB,EAACE,EAAa,WAAb,EAAuB;AAAA,gBAuBxB,gBAAAF;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,cAAYnB;AAAA,sBACV;AAAA,oBAAA;AAAA,oBAEF,WAAU;AAAA,oBAEV,UAAA,gBAAAmB;AAAA,sBAACY;AAAA,sBAAA;AAAA,wBACC,OAAO/B,EAAE,iDAAiD;AAAA,wBAC1D,WAAU;AAAA,wBACV,MAAK;AAAA,wBACL,SAASkB;AAAA,wBACT,iBAAiB,CAACP,MAChBT,EAAM,iBAAiBS,IAAO,eAAe,SAAS;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAE1D;AAAA,gBAAA;AAAA,cACF;AAAA,YAAA;AAAA,UAAA,EACF,CACF;AAAA,QAAA,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AAEApB,EAAe,cAAc;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/components/timeline/timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAelE,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACtE,KAAK,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AAwBxD,QAAA,MAAM,gBAAgB;;;8EAcpB,CAAC;AAiEH,MAAM,WAAW,aACf,SACE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,EACjD,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IACjF,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"timeline.d.ts","sourceRoot":"","sources":["../../../src/components/timeline/timeline.tsx"],"names":[],"mappings":"AAAA,OAAO,EASL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,kBAAkB,EACxB,MAAM,OAAO,CAAC;AACf,OAAO,EAAO,KAAK,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAelE,KAAK,SAAS,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,CAAC;AACtE,KAAK,MAAM,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,CAAC;AAwBxD,QAAA,MAAM,gBAAgB;;;8EAcpB,CAAC;AAiEH,MAAM,WAAW,aACf,SACE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,EACjD,YAAY,CAAC,OAAO,gBAAgB,CAAC;IACvC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,cAAc,GAAG,cAAc,CAAC;IACxC,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACzE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,iEAAiE;AACjE,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,MAAM,GAAG,IAAI,CAAC;IACtC,WAAW,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,gBAAiB,SAAQ,cAAc,CAAC,cAAc,CAAC;IACtE,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,oBAAqB,SAAQ,cAAc,CAAC,cAAc,CAAC;IAC1E,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB,CAAC,eAAe,CAAC;IACjF,IAAI,EAAE,IAAI,GAAG,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,MAAM,CAAC,EAAE,IAAI,CAAC,qBAAqB,CAAC;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AA4QD,eAAO,MAAM,QAAQ;;;;;CAKnB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-
|
|
1
|
+
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-BR6txfFX.js";
|
|
2
2
|
export {
|
|
3
3
|
r as CORE_PATIENT_FIELDS,
|
|
4
4
|
e as WorkflowCard,
|