@octaviaflow/core 3.0.9 → 3.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/AuthCard/AuthCard.d.ts.map +1 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts +8 -1
- package/dist/components/DropdownMenu/DropdownMenu.d.ts.map +1 -1
- package/dist/components/Sidebar/Sidebar.d.ts.map +1 -1
- package/dist/index.cjs +136 -43
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +257 -164
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuthCard.d.ts","sourceRoot":"","sources":["../../../src/components/AuthCard/AuthCard.tsx"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"AuthCard.d.ts","sourceRoot":"","sources":["../../../src/components/AuthCard/AuthCard.tsx"],"names":[],"mappings":"AACA,OAAO,EAAsB,KAAK,SAAS,EAA2B,MAAM,OAAO,CAAC;AAGpF,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,oEAAoE;IACpE,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,QAAQ,EAAE,SAAS,CAAC;IACpB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EACvB,IAAI,EACJ,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,OAAO,EACP,MAAM,EACN,SAAS,GACV,EAAE,aAAa,2CAgBf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,QAAe,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAQ3E;AAKD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,gBAAgB,2CAYxF;AAKD,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,OAAO,EAAE,SAAS,CAAC;CACpB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,OAAO,EAAE,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,QAAQ,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,aAAa,2CA6EvF;AAKD,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,KAAK,GAAG,UAAU,GAAG,WAAW,CAAC;AAEzE,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EAAE,IAAgB,EAAE,QAAQ,EAAE,SAAS,EAAE,EAAE,cAAc,2CAIlF"}
|
|
@@ -12,6 +12,13 @@ export interface DropdownMenuProps {
|
|
|
12
12
|
items: DropdownMenuItem[];
|
|
13
13
|
align?: "start" | "end";
|
|
14
14
|
className?: string;
|
|
15
|
+
/**
|
|
16
|
+
* Override the className applied to the auto-generated trigger <button>.
|
|
17
|
+
* Defaults to "ods-dropdown__trigger". Useful when composing the
|
|
18
|
+
* DropdownMenu inside a host component (e.g. Sidebar user card) that
|
|
19
|
+
* supplies its own button styling.
|
|
20
|
+
*/
|
|
21
|
+
triggerClassName?: string;
|
|
15
22
|
/**
|
|
16
23
|
* Accessible name for the trigger button. Required when `trigger` is not
|
|
17
24
|
* a plain string (e.g. an icon-only trigger). When omitted and `trigger`
|
|
@@ -21,5 +28,5 @@ export interface DropdownMenuProps {
|
|
|
21
28
|
/** id of an element that labels the trigger; alternative to aria-label. */
|
|
22
29
|
"aria-labelledby"?: string;
|
|
23
30
|
}
|
|
24
|
-
export declare function DropdownMenu({ trigger, items, align, className, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
31
|
+
export declare function DropdownMenu({ trigger, items, align, className, triggerClassName, "aria-label": ariaLabel, "aria-labelledby": ariaLabelledby, }: DropdownMenuProps): import("react/jsx-runtime").JSX.Element;
|
|
25
32
|
//# sourceMappingURL=DropdownMenu.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAQ/C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAsID,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,KAAe,EACf,SAAS,EACT,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,iBAAiB,
|
|
1
|
+
{"version":3,"file":"DropdownMenu.d.ts","sourceRoot":"","sources":["../../../src/components/DropdownMenu/DropdownMenu.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,SAAS,EAAU,MAAM,OAAO,CAAC;AAQ/C,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,SAAS,CAAC;IACnB,KAAK,EAAE,gBAAgB,EAAE,CAAC;IAC1B,KAAK,CAAC,EAAE,OAAO,GAAG,KAAK,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAsID,wBAAgB,YAAY,CAAC,EAC3B,OAAO,EACP,KAAK,EACL,KAAe,EACf,SAAS,EACT,gBAAgB,EAChB,YAAY,EAAE,SAAS,EACvB,iBAAiB,EAAE,cAAc,GAClC,EAAE,iBAAiB,2CA0CnB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAClD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EACtB,OAAoB,EACpB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,aAAqB,EACrB,cAAc,EACd,aAAoC,EACpC,cAAoB,EACpB,eAAqB,EACrB,YAAkB,EAClB,MAAe,EACf,SAAS,GACV,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../../src/components/Sidebar/Sidebar.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAA4C,MAAM,OAAO,CAAC;AAEjF,OAAO,EAAgB,KAAK,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,sDAAsD;IACtD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oEAAoE;IACpE,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,2EAA2E;IAC3E,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc;IAC7B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,KAAK,EAAE,cAAc,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;OAIG;IACH,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACvC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,SAAS,CAAC;QAAC,QAAQ,CAAC,EAAE,SAAS,CAAA;KAAE,CAAC;IAClD,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,cAAc,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,cAAc,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,cAAc,EAAE,CAAC;IAC/B,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,wFAAwF;IACxF,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;IAGtB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,YAAY,CAAC,EAAE,MAAM,CAAC;IAEtB,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,OAAO,CAAC,EACtB,OAAoB,EACpB,KAAK,EACL,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,WAAW,EACX,IAAI,EACJ,QAAQ,EACR,MAAM,EAAE,UAAU,EAClB,aAAqB,EACrB,cAAc,EACd,aAAoC,EACpC,cAAoB,EACpB,eAAqB,EACrB,YAAkB,EAClB,MAAe,EACf,SAAS,GACV,EAAE,YAAY,2CAuId"}
|
package/dist/index.cjs
CHANGED
|
@@ -415,24 +415,61 @@ function AuthTabs({ tabs, defaultTab, value, onChange, className }) {
|
|
|
415
415
|
onChange?.(id);
|
|
416
416
|
};
|
|
417
417
|
const activeTab = tabs.find((t) => t.id === active) ?? tabs[0];
|
|
418
|
+
const scopeId = (0, import_react2.useId)();
|
|
419
|
+
const tabRefs = (0, import_react2.useRef)({});
|
|
420
|
+
const handleKeyDown = (e) => {
|
|
421
|
+
const ids = tabs.map((t) => t.id);
|
|
422
|
+
const currentIdx = ids.indexOf(active);
|
|
423
|
+
if (currentIdx === -1) return;
|
|
424
|
+
let nextIdx = null;
|
|
425
|
+
if (e.key === "ArrowRight") nextIdx = (currentIdx + 1) % ids.length;
|
|
426
|
+
else if (e.key === "ArrowLeft") nextIdx = (currentIdx - 1 + ids.length) % ids.length;
|
|
427
|
+
else if (e.key === "Home") nextIdx = 0;
|
|
428
|
+
else if (e.key === "End") nextIdx = ids.length - 1;
|
|
429
|
+
if (nextIdx === null) return;
|
|
430
|
+
e.preventDefault();
|
|
431
|
+
const nextId = ids[nextIdx];
|
|
432
|
+
select(nextId);
|
|
433
|
+
tabRefs.current[nextId]?.focus();
|
|
434
|
+
};
|
|
418
435
|
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("div", { className: cn("ods-auth-tabs", className), children: [
|
|
419
|
-
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "ods-auth-tabs__list", role: "tablist", children: tabs.map((t) =>
|
|
420
|
-
|
|
436
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "ods-auth-tabs__list", role: "tablist", children: tabs.map((t) => {
|
|
437
|
+
const isActive2 = t.id === active;
|
|
438
|
+
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(
|
|
439
|
+
"button",
|
|
440
|
+
{
|
|
441
|
+
ref: (el) => {
|
|
442
|
+
tabRefs.current[t.id] = el;
|
|
443
|
+
},
|
|
444
|
+
type: "button",
|
|
445
|
+
role: "tab",
|
|
446
|
+
id: `${scopeId}-tab-${t.id}`,
|
|
447
|
+
"aria-selected": isActive2,
|
|
448
|
+
"aria-controls": `${scopeId}-panel-${t.id}`,
|
|
449
|
+
tabIndex: isActive2 ? 0 : -1,
|
|
450
|
+
className: cn("ods-auth-tabs__tab", isActive2 && "ods-auth-tabs__tab--active"),
|
|
451
|
+
onClick: () => select(t.id),
|
|
452
|
+
onKeyDown: handleKeyDown,
|
|
453
|
+
children: [
|
|
454
|
+
t.icon && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ods-auth-tabs__icon", children: t.icon }),
|
|
455
|
+
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ods-auth-tabs__label", children: t.label }),
|
|
456
|
+
t.description && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ods-auth-tabs__desc", children: t.description })
|
|
457
|
+
]
|
|
458
|
+
},
|
|
459
|
+
t.id
|
|
460
|
+
);
|
|
461
|
+
}) }),
|
|
462
|
+
activeTab && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(
|
|
463
|
+
"div",
|
|
421
464
|
{
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
"aria-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
children:
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
t.description && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("span", { className: "ods-auth-tabs__desc", children: t.description })
|
|
431
|
-
]
|
|
432
|
-
},
|
|
433
|
-
t.id
|
|
434
|
-
)) }),
|
|
435
|
-
activeTab && /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("div", { className: "ods-auth-tabs__panel", children: activeTab.content })
|
|
465
|
+
role: "tabpanel",
|
|
466
|
+
id: `${scopeId}-panel-${activeTab.id}`,
|
|
467
|
+
"aria-labelledby": `${scopeId}-tab-${activeTab.id}`,
|
|
468
|
+
tabIndex: 0,
|
|
469
|
+
className: "ods-auth-tabs__panel",
|
|
470
|
+
children: activeTab.content
|
|
471
|
+
}
|
|
472
|
+
)
|
|
436
473
|
] });
|
|
437
474
|
}
|
|
438
475
|
function AuthBadge({ tone = "neutral", children, className }) {
|
|
@@ -6569,6 +6606,7 @@ function DropdownMenu({
|
|
|
6569
6606
|
items,
|
|
6570
6607
|
align = "start",
|
|
6571
6608
|
className,
|
|
6609
|
+
triggerClassName,
|
|
6572
6610
|
"aria-label": ariaLabel,
|
|
6573
6611
|
"aria-labelledby": ariaLabelledby
|
|
6574
6612
|
}) {
|
|
@@ -6587,7 +6625,15 @@ function DropdownMenu({
|
|
|
6587
6625
|
);
|
|
6588
6626
|
const { onDrag, onDragStart, onDragEnd, onAnimationStart, ...safeTriggerProps } = buttonProps;
|
|
6589
6627
|
return /* @__PURE__ */ (0, import_jsx_runtime29.jsxs)(import_jsx_runtime29.Fragment, { children: [
|
|
6590
|
-
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
6628
|
+
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
6629
|
+
"button",
|
|
6630
|
+
{
|
|
6631
|
+
...safeTriggerProps,
|
|
6632
|
+
ref: triggerRef,
|
|
6633
|
+
className: triggerClassName ?? "ods-dropdown__trigger",
|
|
6634
|
+
children: trigger
|
|
6635
|
+
}
|
|
6636
|
+
),
|
|
6591
6637
|
/* @__PURE__ */ (0, import_jsx_runtime29.jsx)(
|
|
6592
6638
|
MenuPopup,
|
|
6593
6639
|
{
|
|
@@ -11253,15 +11299,17 @@ function Sidebar({
|
|
|
11253
11299
|
className
|
|
11254
11300
|
}) {
|
|
11255
11301
|
const allSections = sections ?? (items ? [{ items }] : []);
|
|
11256
|
-
const [internalPinned, setInternalPinned] = (0, import_react53.useState)(
|
|
11257
|
-
|
|
11302
|
+
const [internalPinned, setInternalPinned] = (0, import_react53.useState)(defaultPinned);
|
|
11303
|
+
(0, import_react53.useEffect)(() => {
|
|
11304
|
+
if (pinnedProp !== void 0) return;
|
|
11258
11305
|
try {
|
|
11259
11306
|
const stored = window.localStorage.getItem(pinStorageKey);
|
|
11260
|
-
if (stored !== null
|
|
11307
|
+
if (stored !== null && stored !== String(internalPinned)) {
|
|
11308
|
+
setInternalPinned(stored === "true");
|
|
11309
|
+
}
|
|
11261
11310
|
} catch {
|
|
11262
11311
|
}
|
|
11263
|
-
|
|
11264
|
-
});
|
|
11312
|
+
}, []);
|
|
11265
11313
|
const pinned = pinnedProp ?? internalPinned;
|
|
11266
11314
|
const setPinned = (0, import_react53.useCallback)(
|
|
11267
11315
|
(p) => {
|
|
@@ -11299,6 +11347,17 @@ function Sidebar({
|
|
|
11299
11347
|
const autoMode = variant === "auto";
|
|
11300
11348
|
const showAsRail = autoMode ? !pinned : variant === "rail";
|
|
11301
11349
|
const overlayOpen = autoMode && !pinned && hoverOpen;
|
|
11350
|
+
(0, import_react53.useEffect)(() => {
|
|
11351
|
+
if (!overlayOpen) return;
|
|
11352
|
+
const handler = (e) => {
|
|
11353
|
+
if (e.key === "Escape") {
|
|
11354
|
+
clearTimers();
|
|
11355
|
+
setHoverOpen(false);
|
|
11356
|
+
}
|
|
11357
|
+
};
|
|
11358
|
+
window.addEventListener("keydown", handler);
|
|
11359
|
+
return () => window.removeEventListener("keydown", handler);
|
|
11360
|
+
}, [overlayOpen]);
|
|
11302
11361
|
return /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(
|
|
11303
11362
|
"nav",
|
|
11304
11363
|
{
|
|
@@ -11404,17 +11463,34 @@ function RailLayout({
|
|
|
11404
11463
|
},
|
|
11405
11464
|
item.id
|
|
11406
11465
|
)) }),
|
|
11407
|
-
user && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11408
|
-
|
|
11466
|
+
user && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(SidebarUserRail, { user })
|
|
11467
|
+
] });
|
|
11468
|
+
}
|
|
11469
|
+
function SidebarUserRail({ user }) {
|
|
11470
|
+
const labelText = typeof user.name === "string" ? user.name : "User";
|
|
11471
|
+
const avatar = user.avatar ?? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: user.initial ?? (typeof user.name === "string" ? user.name.charAt(0).toUpperCase() : "?") });
|
|
11472
|
+
if (user.menu && user.menu.length > 0) {
|
|
11473
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11474
|
+
DropdownMenu,
|
|
11409
11475
|
{
|
|
11410
|
-
|
|
11411
|
-
|
|
11412
|
-
|
|
11413
|
-
"aria-label":
|
|
11414
|
-
|
|
11476
|
+
trigger: avatar,
|
|
11477
|
+
items: user.menu,
|
|
11478
|
+
align: "end",
|
|
11479
|
+
"aria-label": labelText,
|
|
11480
|
+
triggerClassName: "ods-sidebar__user-rail"
|
|
11415
11481
|
}
|
|
11416
|
-
)
|
|
11417
|
-
|
|
11482
|
+
);
|
|
11483
|
+
}
|
|
11484
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11485
|
+
"button",
|
|
11486
|
+
{
|
|
11487
|
+
type: "button",
|
|
11488
|
+
className: "ods-sidebar__user-rail",
|
|
11489
|
+
onClick: user.onClick,
|
|
11490
|
+
"aria-label": labelText,
|
|
11491
|
+
children: avatar
|
|
11492
|
+
}
|
|
11493
|
+
);
|
|
11418
11494
|
}
|
|
11419
11495
|
function RailItem({
|
|
11420
11496
|
item,
|
|
@@ -11533,18 +11609,7 @@ function ExpandedLayout({
|
|
|
11533
11609
|
] }, section.id ?? sIdx)) }),
|
|
11534
11610
|
(footerItems || user) && /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("div", { className: "ods-sidebar__footer", children: [
|
|
11535
11611
|
footerItems && footerItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("div", { className: "ods-sidebar__footer-list", children: footerItems.map((item) => /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(ExpandedItem, { item, level: 0 }, item.id)) }),
|
|
11536
|
-
user && /* @__PURE__ */ (0, import_jsx_runtime69.
|
|
11537
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-avatar", children: user.avatar ?? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: user.initial ?? (typeof user.name === "string" ? user.name.charAt(0).toUpperCase() : "?") }) }),
|
|
11538
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("span", { className: "ods-sidebar__user-info", children: [
|
|
11539
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-name", children: user.name }),
|
|
11540
|
-
user.email && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-email", children: user.email })
|
|
11541
|
-
] }),
|
|
11542
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
|
|
11543
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "3", r: "1.3", fill: "currentColor" }),
|
|
11544
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "8", r: "1.3", fill: "currentColor" }),
|
|
11545
|
-
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "13", r: "1.3", fill: "currentColor" })
|
|
11546
|
-
] })
|
|
11547
|
-
] })
|
|
11612
|
+
user && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(SidebarUserCard, { user })
|
|
11548
11613
|
] })
|
|
11549
11614
|
] });
|
|
11550
11615
|
}
|
|
@@ -11634,6 +11699,34 @@ function ExpandedItem({ item, level }) {
|
|
|
11634
11699
|
}
|
|
11635
11700
|
);
|
|
11636
11701
|
}
|
|
11702
|
+
function SidebarUserCard({ user }) {
|
|
11703
|
+
const labelText = typeof user.name === "string" ? user.name : "User";
|
|
11704
|
+
const body = /* @__PURE__ */ (0, import_jsx_runtime69.jsxs)(import_jsx_runtime69.Fragment, { children: [
|
|
11705
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-avatar", children: user.avatar ?? /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { children: user.initial ?? (typeof user.name === "string" ? user.name.charAt(0).toUpperCase() : "?") }) }),
|
|
11706
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("span", { className: "ods-sidebar__user-info", children: [
|
|
11707
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-name", children: user.name }),
|
|
11708
|
+
user.email && /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("span", { className: "ods-sidebar__user-email", children: user.email })
|
|
11709
|
+
] }),
|
|
11710
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsxs)("svg", { width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: [
|
|
11711
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "3", r: "1.3", fill: "currentColor" }),
|
|
11712
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "8", r: "1.3", fill: "currentColor" }),
|
|
11713
|
+
/* @__PURE__ */ (0, import_jsx_runtime69.jsx)("circle", { cx: "8", cy: "13", r: "1.3", fill: "currentColor" })
|
|
11714
|
+
] })
|
|
11715
|
+
] });
|
|
11716
|
+
if (user.menu && user.menu.length > 0) {
|
|
11717
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)(
|
|
11718
|
+
DropdownMenu,
|
|
11719
|
+
{
|
|
11720
|
+
trigger: body,
|
|
11721
|
+
items: user.menu,
|
|
11722
|
+
align: "end",
|
|
11723
|
+
"aria-label": labelText,
|
|
11724
|
+
triggerClassName: "ods-sidebar__user-card"
|
|
11725
|
+
}
|
|
11726
|
+
);
|
|
11727
|
+
}
|
|
11728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime69.jsx)("button", { type: "button", className: "ods-sidebar__user-card", onClick: user.onClick, children: body });
|
|
11729
|
+
}
|
|
11637
11730
|
function hasActiveDescendant(item) {
|
|
11638
11731
|
if (!item.children) return false;
|
|
11639
11732
|
for (const c of item.children) {
|