@burdenoff/fe-libs 2026.1027.12 → 2026.1027.14

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.
@@ -2,29 +2,38 @@ import { useI18n as e } from "../../shared/providers/shell/I18nProvider.js";
2
2
  import { jsx as t, jsxs as n } from "react/jsx-runtime";
3
3
  //#region src/chrome/sideNavigation/MobileActionsBar.tsx
4
4
  var r = ({ actions: r, collapsed: i, onToggleCollapse: a }) => {
5
- let { t: o } = e();
5
+ let { t: o } = e(), s = (e, t) => {
6
+ let n = o(e);
7
+ return n === e ? t : n;
8
+ }, c = r.length % 3 == 1;
6
9
  return /* @__PURE__ */ n("div", {
7
10
  className: "md:hidden py-4 px-4 border-t border-border-subtle bg-bg-sunken/50",
8
11
  children: [/* @__PURE__ */ t("p", {
9
12
  className: "text-[11px] text-text-muted mb-3 font-medium uppercase tracking-wider",
10
- children: ((e, t) => {
11
- let n = o(e);
12
- return n === e ? t : n;
13
- })("appShell.quickActions", "Quick Actions")
13
+ children: s("appShell.quickActions", "Quick Actions")
14
14
  }), /* @__PURE__ */ t("div", {
15
- className: "flex flex-wrap items-center justify-center gap-3",
16
- children: r.map((e) => /* @__PURE__ */ t("button", {
17
- onClick: () => {
18
- e.onClick(), e.closeSidebar !== !1 && a && !i && a();
19
- },
20
- className: `flex shrink-0 items-center justify-center w-12 h-12 rounded-xl text-body-sm font-medium transition-all ${e.isToggle && e.isActive ? "bg-action-primary-bg text-action-primary-text shadow-sm" : "bg-bg-surface text-text-primary hover:bg-action-ghost-bg-hover border border-border-subtle hover:border-border-default active:scale-95"}`,
21
- "aria-label": e.label,
22
- title: e.label,
23
- children: /* @__PURE__ */ t("span", {
24
- className: "size-5",
25
- children: e.icon
26
- })
27
- }, e.id))
15
+ className: "grid grid-cols-3 gap-2",
16
+ children: r.map((e, o) => {
17
+ let s = !!e.isToggle && !!e.isActive, l = o === r.length - 1;
18
+ return /* @__PURE__ */ n("button", {
19
+ type: "button",
20
+ onClick: () => {
21
+ e.onClick(), e.closeSidebar !== !1 && a && !i && a();
22
+ },
23
+ "aria-pressed": e.isToggle ? s : void 0,
24
+ "aria-label": e.label,
25
+ title: e.label,
26
+ className: `flex w-full min-h-[64px] flex-col items-center justify-center gap-1.5 rounded-button px-2 py-3 text-center transition-colors duration-150 focus-visible:outline-none focus-visible:shadow-[var(--shadow-focus)] focus-visible:ring-1 focus-visible:ring-[var(--color-focus-ring)] ${c && l ? "col-start-2" : ""} ${s ? "bg-[var(--color-accent-soft)] text-text-primary font-medium" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary active:scale-95"}`,
27
+ children: [/* @__PURE__ */ t("span", {
28
+ className: "inline-flex size-5 shrink-0 items-center justify-center",
29
+ "aria-hidden": "true",
30
+ children: e.icon
31
+ }), /* @__PURE__ */ t("span", {
32
+ className: "text-[11px] leading-tight",
33
+ children: e.label
34
+ })]
35
+ }, e.id);
36
+ })
28
37
  })]
29
38
  });
30
39
  };
@@ -133,6 +133,7 @@ export * from './ui/AssistantMarkdownRenderer';
133
133
  export * from './ui/AssistantMessageAttachments';
134
134
  export * from './ui/AssistantPendingWriteCard';
135
135
  export * from './ui/AssistantWriteProposalCard';
136
+ export * from './ui/AssistantAiDisclaimer';
136
137
  export * from './ui/AssistantWriteConfirmDialog';
137
138
  export * from './ui/useWriteProposalConfirm';
138
139
  export * from './ui/writeProposalPresentation';
@@ -0,0 +1,26 @@
1
+ import { FC } from 'react';
2
+ export interface AssistantAiDisclaimerProps {
3
+ /** Extra layout classes from the mount point (spacing, borders). */
4
+ className?: string;
5
+ /** Distinguishes the mounts in tests and in Playwright checks. */
6
+ testId?: string;
7
+ /** Centred under a composer; start-aligned inside a card. */
8
+ align?: 'center' | 'start';
9
+ }
10
+ /**
11
+ * The standing "AI can make mistakes" line (BOFF-3720, AI_READINESS 5.3).
12
+ *
13
+ * ★★ Standing and non-dismissable by design: there is no close control, no
14
+ * prop that hides it and no stored "seen" flag. It sits under the composer of
15
+ * every assistant panel and on every write-proposal card, so it is on screen
16
+ * whenever an answer is read or a change is approved.
17
+ *
18
+ * ★ A platform shell label, not a product-prefixed assistant key. The
19
+ * `workspaces` dictionary is layered under every product's, so one seed of
20
+ * `assistantChrome.aiDisclaimer` translates it for every product. Until that
21
+ * seed lands, and in any locale it lacks, the English renders: the line is
22
+ * never missing, only untranslated.
23
+ *
24
+ * Semantic tokens only (`text-text-muted`).
25
+ */
26
+ export declare const AssistantAiDisclaimer: FC<AssistantAiDisclaimerProps>;
@@ -0,0 +1,13 @@
1
+ import { useAssistantDisclaimerLabel as e } from "../../providers/shell/useAssistantShellLabels.js";
2
+ import { jsx as t } from "react/jsx-runtime";
3
+ //#region src/shared/assistant/ui/AssistantAiDisclaimer.tsx
4
+ var n = ({ className: n, testId: r = "assistant-ai-disclaimer", align: i = "center" }) => {
5
+ let a = e();
6
+ return /* @__PURE__ */ t("p", {
7
+ className: `${i === "center" ? "text-center" : "text-start"} text-[11px] leading-snug text-text-muted${n ? ` ${n}` : ""}`,
8
+ "data-testid": r,
9
+ children: a
10
+ });
11
+ };
12
+ //#endregion
13
+ export { n as AssistantAiDisclaimer };