@flamingo-stack/openframe-frontend-core 0.0.466 → 0.0.467

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.
Files changed (97) hide show
  1. package/dist/{chunk-XJH5ZT5Y.js → chunk-25YYEVSE.js} +2 -2
  2. package/dist/{chunk-CC73CSLI.js → chunk-3L44PPMF.js} +2 -2
  3. package/dist/{chunk-GRB7LPJV.js → chunk-4DFPQKKJ.js} +2 -2
  4. package/dist/{chunk-3WF7INYU.cjs → chunk-6DZ5QOUM.cjs} +11 -11
  5. package/dist/{chunk-3WF7INYU.cjs.map → chunk-6DZ5QOUM.cjs.map} +1 -1
  6. package/dist/{chunk-BVNAYWLM.cjs → chunk-72NEN4G4.cjs} +15 -15
  7. package/dist/{chunk-BVNAYWLM.cjs.map → chunk-72NEN4G4.cjs.map} +1 -1
  8. package/dist/{chunk-FHLJQI4F.js → chunk-ABU37QSG.js} +4 -4
  9. package/dist/{chunk-KX2TBXKN.js → chunk-BIDOIPIT.js} +2 -2
  10. package/dist/{chunk-IZCOYFCN.js → chunk-CZFPPNYV.js} +3921 -3876
  11. package/dist/chunk-CZFPPNYV.js.map +1 -0
  12. package/dist/{chunk-FGL4ZNR7.cjs → chunk-G2H4AKL3.cjs} +62 -62
  13. package/dist/{chunk-FGL4ZNR7.cjs.map → chunk-G2H4AKL3.cjs.map} +1 -1
  14. package/dist/{chunk-YN77BNI7.cjs → chunk-G5D7NRH5.cjs} +26 -26
  15. package/dist/{chunk-YN77BNI7.cjs.map → chunk-G5D7NRH5.cjs.map} +1 -1
  16. package/dist/{chunk-72HPXAMZ.js → chunk-GXXLJHQX.js} +2 -2
  17. package/dist/{chunk-RQZOCLTI.js → chunk-ILZ66CS6.js} +4 -4
  18. package/dist/{chunk-GHZMNDPN.js → chunk-LOWJWKM5.js} +4 -4
  19. package/dist/{chunk-7DULN25L.js → chunk-NYOQNYSI.js} +2 -2
  20. package/dist/{chunk-KLBBOLDK.cjs → chunk-O7LQYYUA.cjs} +5 -5
  21. package/dist/{chunk-KLBBOLDK.cjs.map → chunk-O7LQYYUA.cjs.map} +1 -1
  22. package/dist/{chunk-HDP5VRPL.cjs → chunk-QITN43HN.cjs} +7 -7
  23. package/dist/{chunk-HDP5VRPL.cjs.map → chunk-QITN43HN.cjs.map} +1 -1
  24. package/dist/{chunk-OO7DO4DI.js → chunk-QJ7NIL6A.js} +4 -4
  25. package/dist/{chunk-NHNKMR22.cjs → chunk-SGDXS7VT.cjs} +59 -59
  26. package/dist/{chunk-NHNKMR22.cjs.map → chunk-SGDXS7VT.cjs.map} +1 -1
  27. package/dist/{chunk-WAO34PFO.js → chunk-TZSPLSDU.js} +2 -2
  28. package/dist/{chunk-MQQ7VIG6.cjs → chunk-UWW4PQQS.cjs} +26 -26
  29. package/dist/{chunk-MQQ7VIG6.cjs.map → chunk-UWW4PQQS.cjs.map} +1 -1
  30. package/dist/{chunk-5H3HACZZ.cjs → chunk-VERK32MO.cjs} +37 -37
  31. package/dist/{chunk-5H3HACZZ.cjs.map → chunk-VERK32MO.cjs.map} +1 -1
  32. package/dist/{chunk-VLLFRPNP.cjs → chunk-WWC75D3J.cjs} +57 -12
  33. package/dist/chunk-WWC75D3J.cjs.map +1 -0
  34. package/dist/{chunk-2VCSDMPV.cjs → chunk-YGW7T57C.cjs} +31 -31
  35. package/dist/{chunk-2VCSDMPV.cjs.map → chunk-YGW7T57C.cjs.map} +1 -1
  36. package/dist/{chunk-YHCLDRMU.cjs → chunk-ZYPHZ3R3.cjs} +9 -9
  37. package/dist/{chunk-YHCLDRMU.cjs.map → chunk-ZYPHZ3R3.cjs.map} +1 -1
  38. package/dist/components/announcement-bar.d.ts +1 -1
  39. package/dist/components/announcement-bar.d.ts.map +1 -1
  40. package/dist/components/case-studies/index.cjs +8 -8
  41. package/dist/components/case-studies/index.js +2 -2
  42. package/dist/components/chat/index.cjs +2 -2
  43. package/dist/components/chat/index.js +1 -1
  44. package/dist/components/contact/index.cjs +3 -3
  45. package/dist/components/contact/index.js +2 -2
  46. package/dist/components/docs/index.cjs +5 -5
  47. package/dist/components/docs/index.js +4 -4
  48. package/dist/components/embeds/index.cjs +3 -3
  49. package/dist/components/embeds/index.js +2 -2
  50. package/dist/components/faq/index.cjs +3 -3
  51. package/dist/components/faq/index.js +2 -2
  52. package/dist/components/features/index.cjs +2 -2
  53. package/dist/components/features/index.js +1 -1
  54. package/dist/components/form.d.ts +1 -0
  55. package/dist/components/form.d.ts.map +1 -1
  56. package/dist/components/help-center-pages/index.cjs +20 -20
  57. package/dist/components/help-center-pages/index.js +11 -11
  58. package/dist/components/index.cjs +232 -206
  59. package/dist/components/index.cjs.map +1 -1
  60. package/dist/components/index.js +117 -91
  61. package/dist/components/index.js.map +1 -1
  62. package/dist/components/navigation/index.cjs +2 -2
  63. package/dist/components/navigation/index.js +1 -1
  64. package/dist/components/onboarding-guides/index.cjs +5 -5
  65. package/dist/components/onboarding-guides/index.js +4 -4
  66. package/dist/components/related-content/index.cjs +3 -3
  67. package/dist/components/related-content/index.js +2 -2
  68. package/dist/components/tickets/index.cjs +5 -5
  69. package/dist/components/tickets/index.js +4 -4
  70. package/dist/components/ui/announcement-bar-view.d.ts +49 -0
  71. package/dist/components/ui/announcement-bar-view.d.ts.map +1 -0
  72. package/dist/components/ui/index.cjs +4 -2
  73. package/dist/components/ui/index.cjs.map +1 -1
  74. package/dist/components/ui/index.d.ts +1 -0
  75. package/dist/components/ui/index.d.ts.map +1 -1
  76. package/dist/components/ui/index.js +3 -1
  77. package/dist/index.cjs +4 -2
  78. package/dist/index.cjs.map +1 -1
  79. package/dist/index.js +3 -1
  80. package/package.json +1 -1
  81. package/src/components/announcement-bar.tsx +102 -110
  82. package/src/components/ui/announcement-bar-view.tsx +94 -0
  83. package/src/components/ui/index.ts +1 -0
  84. package/src/styles/ods-colors.css +16 -0
  85. package/dist/chunk-IZCOYFCN.js.map +0 -1
  86. package/dist/chunk-VLLFRPNP.cjs.map +0 -1
  87. /package/dist/{chunk-XJH5ZT5Y.js.map → chunk-25YYEVSE.js.map} +0 -0
  88. /package/dist/{chunk-CC73CSLI.js.map → chunk-3L44PPMF.js.map} +0 -0
  89. /package/dist/{chunk-GRB7LPJV.js.map → chunk-4DFPQKKJ.js.map} +0 -0
  90. /package/dist/{chunk-FHLJQI4F.js.map → chunk-ABU37QSG.js.map} +0 -0
  91. /package/dist/{chunk-KX2TBXKN.js.map → chunk-BIDOIPIT.js.map} +0 -0
  92. /package/dist/{chunk-72HPXAMZ.js.map → chunk-GXXLJHQX.js.map} +0 -0
  93. /package/dist/{chunk-RQZOCLTI.js.map → chunk-ILZ66CS6.js.map} +0 -0
  94. /package/dist/{chunk-GHZMNDPN.js.map → chunk-LOWJWKM5.js.map} +0 -0
  95. /package/dist/{chunk-7DULN25L.js.map → chunk-NYOQNYSI.js.map} +0 -0
  96. /package/dist/{chunk-OO7DO4DI.js.map → chunk-QJ7NIL6A.js.map} +0 -0
  97. /package/dist/{chunk-WAO34PFO.js.map → chunk-TZSPLSDU.js.map} +0 -0
@@ -4,7 +4,7 @@ import "../chunk-GZ4C3XW6.js";
4
4
  import {
5
5
  GROUP_PAGE_SIZE,
6
6
  RelatedContentSection
7
- } from "../chunk-KX2TBXKN.js";
7
+ } from "../chunk-BIDOIPIT.js";
8
8
  import {
9
9
  DeliveryLists,
10
10
  DeliveryTable,
@@ -21,7 +21,7 @@ import {
21
21
  useLegalDocs,
22
22
  usePaginationLoading,
23
23
  useRoadmapVoting
24
- } from "../chunk-RQZOCLTI.js";
24
+ } from "../chunk-ILZ66CS6.js";
25
25
  import {
26
26
  AnnouncementBarSkeleton,
27
27
  ArticleLayoutSkeleton,
@@ -54,17 +54,17 @@ import {
54
54
  useDocNavigation,
55
55
  useDocumentTree,
56
56
  useScrollSpy
57
- } from "../chunk-FHLJQI4F.js";
57
+ } from "../chunk-ABU37QSG.js";
58
58
  import {
59
59
  FileDownloadCard,
60
60
  GoogleSheetsViewer,
61
61
  PdfViewer
62
- } from "../chunk-7DULN25L.js";
62
+ } from "../chunk-NYOQNYSI.js";
63
63
  import {
64
64
  FaqAccordion,
65
65
  FaqDocumentPage,
66
66
  FaqSection
67
- } from "../chunk-CC73CSLI.js";
67
+ } from "../chunk-3L44PPMF.js";
68
68
  import {
69
69
  DeliveryRow,
70
70
  DevCardRowContent,
@@ -75,11 +75,11 @@ import {
75
75
  EmptyState,
76
76
  UnifiedPagination,
77
77
  init_unified_pagination
78
- } from "../chunk-GRB7LPJV.js";
78
+ } from "../chunk-4DFPQKKJ.js";
79
79
  import {
80
80
  ArticleAuthorByline,
81
81
  DetailPageSkeleton
82
- } from "../chunk-WAO34PFO.js";
82
+ } from "../chunk-TZSPLSDU.js";
83
83
  import {
84
84
  DocSearchBar,
85
85
  DocSearchResultRow,
@@ -87,7 +87,7 @@ import {
87
87
  mapDocSearchResults,
88
88
  resolveSearchResultAction,
89
89
  useDocSearch
90
- } from "../chunk-XJH5ZT5Y.js";
90
+ } from "../chunk-25YYEVSE.js";
91
91
  import {
92
92
  useSelfFetch
93
93
  } from "../chunk-ILUX3DXS.js";
@@ -129,6 +129,7 @@ import {
129
129
  AlertDialogTrigger,
130
130
  AlertTitle,
131
131
  AllowedDomainsInput,
132
+ AnnouncementBarView,
132
133
  AppHeader,
133
134
  AppLayout,
134
135
  AppLayoutDrawerBody,
@@ -904,7 +905,7 @@ import {
904
905
  useVideoOriginPreconnect,
905
906
  useVideoWarmup,
906
907
  usesCanonicalStatusStyle
907
- } from "../chunk-IZCOYFCN.js";
908
+ } from "../chunk-CZFPPNYV.js";
908
909
  import {
909
910
  CommandApprovalToast,
910
911
  ToastCard,
@@ -1140,15 +1141,11 @@ import "../chunk-P47NN7RY.js";
1140
1141
  import "../chunk-GGWZFCYS.js";
1141
1142
 
1142
1143
  // src/components/announcement-bar.tsx
1143
- init_button();
1144
- import { useEffect, useMemo, useRef, useState } from "react";
1145
1144
  import { X } from "lucide-react";
1145
+ import { useEffect, useMemo, useRef, useState } from "react";
1146
+ init_button();
1146
1147
  import { jsx, jsxs } from "react/jsx-runtime";
1147
- function AnnouncementBar({
1148
- initialAnnouncement,
1149
- previewMode = false,
1150
- className
1151
- } = {}) {
1148
+ function AnnouncementBar({ initialAnnouncement, previewMode = false, className } = {}) {
1152
1149
  const platform = getAppType();
1153
1150
  const endpoints = useEndpointsRuntime();
1154
1151
  const url = previewMode ? null : endpoints?.announcementsUrl ?? null;
@@ -1205,8 +1202,10 @@ function AnnouncementBar({
1205
1202
  };
1206
1203
  if (!displayAnnouncement) return null;
1207
1204
  const themeScope = pickReadableTextColor(displayAnnouncement.background_color) === "dark" ? "theme-light" : "theme-dark";
1208
- const barButtonClasses = "text-[color:var(--ods-system-greys-white)] hover:bg-[var(--ods-system-greys-black-hover)] active:bg-[var(--ods-system-greys-black-action)]";
1209
- const hasCta = Boolean(displayAnnouncement.cta_enabled && displayAnnouncement.cta_url && displayAnnouncement.cta_text);
1205
+ const barButtonClasses = "text-[color:var(--color-text-primary)] hover:bg-[var(--color-bg-hover)] active:bg-[var(--color-bg-active)]";
1206
+ const hasCta = Boolean(
1207
+ displayAnnouncement.cta_enabled && displayAnnouncement.cta_url && displayAnnouncement.cta_text
1208
+ );
1210
1209
  return /* @__PURE__ */ jsx(
1211
1210
  "div",
1212
1211
  {
@@ -1216,81 +1215,107 @@ function AnnouncementBar({
1216
1215
  ...previewMode ? {} : { "data-announcement-bar": true },
1217
1216
  className: `relative w-full grid transition-[grid-template-rows] duration-200 ease-out motion-reduce:transition-none ${previewMode ? "" : "z-50"} ${className ?? ""}`,
1218
1217
  style: { gridTemplateRows: expanded ? "1fr" : "0fr" },
1219
- children: /* @__PURE__ */ jsx("div", { className: `min-h-0 overflow-hidden ${themeScope}`, style: { backgroundColor: displayAnnouncement.background_color }, children: /* @__PURE__ */ jsxs("div", { className: "flex items-center w-full max-w-full min-h-11 text-[color:var(--ods-system-greys-white)]", children: [
1220
- /* @__PURE__ */ jsxs(
1221
- "div",
1222
- {
1223
- className: `flex flex-row gap-2 md:gap-3 items-center pl-4 md:pl-6 py-1.5 flex-1 min-w-0 ${hasCta ? "md:cursor-default cursor-pointer" : ""}`,
1224
- onClick: (e) => {
1225
- if (window.innerWidth < 768 && hasCta) {
1226
- e.preventDefault();
1227
- handleCtaClick();
1228
- }
1229
- },
1230
- children: [
1231
- /* @__PURE__ */ jsx(
1232
- EntityIcon,
1233
- {
1234
- icon: {
1235
- name: displayAnnouncement.icon_name || "openframe-logo",
1236
- url: displayAnnouncement.icon_url,
1237
- props: displayAnnouncement.icon_props
1238
- },
1239
- size: 24,
1240
- className: "relative shrink-0 w-5 h-5 md:w-6 md:h-6"
1241
- }
1218
+ children: /* @__PURE__ */ jsx(
1219
+ "div",
1220
+ {
1221
+ className: `min-h-0 overflow-hidden ${themeScope}`,
1222
+ style: { backgroundColor: displayAnnouncement.background_color },
1223
+ children: /* @__PURE__ */ jsx(
1224
+ AnnouncementBarView,
1225
+ {
1226
+ className: "text-[color:var(--color-text-primary)]",
1227
+ startAdornment: (
1228
+ /* ONE unified icon path (shared with the chat): uploaded image URL
1229
+ wins, else a library glyph by name (+ props), via <EntityIcon>. */
1230
+ /* @__PURE__ */ jsx(
1231
+ EntityIcon,
1232
+ {
1233
+ icon: {
1234
+ name: displayAnnouncement.icon_name || "openframe-logo",
1235
+ url: displayAnnouncement.icon_url,
1236
+ props: displayAnnouncement.icon_props
1237
+ },
1238
+ size: 24,
1239
+ className: "relative !size-[var(--icon-size-icon-size)] shrink-0"
1240
+ }
1241
+ )
1242
1242
  ),
1243
- /* @__PURE__ */ jsxs("p", { className: "flex-1 min-w-0 max-w-full text-h6 truncate mb-0", children: [
1244
- /* @__PURE__ */ jsx("span", { className: "font-semibold", children: displayAnnouncement.title }),
1245
- displayAnnouncement.description && /* @__PURE__ */ jsxs("span", { className: "hidden sm:inline opacity-80", children: [
1246
- " \xB7 ",
1247
- displayAnnouncement.description
1243
+ title: (
1244
+ /* Single-line message: title + description inline, truncating as
1245
+ one unit. Type per the ODS mockup (2862-8391): the "h3 body @
1246
+ 500" Figma style maps to the code's `.text-h4` utility (the
1247
+ `.text-h3` utility is 700; h3/h4 body share the same size
1248
+ tokens) — the same treatment string titles get from the view.
1249
+ Description keeps opacity-80 for hierarchy. Separator is a
1250
+ middot (house rule: no en/em dashes in copy). */
1251
+ /* @__PURE__ */ jsxs("p", { className: "min-w-0 max-w-full text-h4 truncate mb-0", children: [
1252
+ /* @__PURE__ */ jsx("span", { children: displayAnnouncement.title }),
1253
+ displayAnnouncement.description && /* @__PURE__ */ jsxs("span", { className: "hidden sm:inline opacity-80", children: [
1254
+ " \xB7 ",
1255
+ displayAnnouncement.description
1256
+ ] })
1248
1257
  ] })
1249
- ] }),
1250
- hasCta && displayAnnouncement.cta_text && /* @__PURE__ */ jsx("div", { className: "hidden md:flex flex-shrink-0 ml-2 md:ml-4", children: /* @__PURE__ */ jsx(
1251
- Button,
1252
- {
1253
- onClick: handleCtaClick,
1254
- variant: "outline",
1255
- size: "compact",
1256
- className: "transition-opacity hover:opacity-90",
1257
- style: {
1258
- backgroundColor: displayAnnouncement.cta_button_background_color || ANNOUNCEMENT_CTA_DEFAULTS.background,
1259
- color: displayAnnouncement.cta_button_text_color || ANNOUNCEMENT_CTA_DEFAULTS.text,
1260
- borderColor: displayAnnouncement.cta_button_background_color || ANNOUNCEMENT_CTA_DEFAULTS.background
1261
- },
1262
- tabIndex: expanded ? 0 : -1,
1263
- leftIcon: displayAnnouncement.cta_show_icon && displayAnnouncement.cta_icon_name ? /* @__PURE__ */ jsx(
1264
- EntityIcon,
1265
- {
1266
- icon: { name: displayAnnouncement.cta_icon_name, props: displayAnnouncement.cta_icon_props },
1267
- size: 14,
1268
- className: "w-3.5 h-3.5"
1269
- }
1270
- ) : void 0,
1271
- children: displayAnnouncement.cta_text
1272
- }
1273
- ) })
1274
- ]
1275
- }
1276
- ),
1277
- /* @__PURE__ */ jsx("div", { className: "flex-shrink-0 ml-1 md:ml-2 mr-2 md:mr-4", children: /* @__PURE__ */ jsx(
1278
- Button,
1279
- {
1280
- onClick: (e) => {
1281
- e.stopPropagation();
1282
- handleDismiss();
1283
- },
1284
- variant: "transparent",
1285
- size: "icon-sm",
1286
- className: barButtonClasses,
1287
- "aria-label": "Dismiss announcement",
1288
- type: "button",
1289
- tabIndex: expanded ? 0 : -1,
1290
- children: /* @__PURE__ */ jsx(X, { strokeWidth: 2 })
1291
- }
1292
- ) })
1293
- ] }) })
1258
+ ),
1259
+ actionBlock: (
1260
+ /* CTA - the common Button carrying the ADMIN-CONFIGURED colors
1261
+ (cta_button_background_color / cta_button_text_color are an
1262
+ admin FEATURE, defaults from ANNOUNCEMENT_CTA_DEFAULTS —
1263
+ announcement colors are data, not token surfaces). Inline
1264
+ styles win over the variant's hover classes on every state,
1265
+ so hover feedback is opacity (the bar's original treatment);
1266
+ nothing can render dark-on-dark.
1267
+
1268
+ Geometry + type come from the design system's size="compact"
1269
+ (24px caption-scale pill for slim strips — rationale documented
1270
+ on the variant in button.tsx). */
1271
+ hasCta && displayAnnouncement.cta_text ? /* @__PURE__ */ jsx(
1272
+ Button,
1273
+ {
1274
+ onClick: handleCtaClick,
1275
+ variant: "outline",
1276
+ size: "compact",
1277
+ className: "transition-opacity hover:opacity-90",
1278
+ style: {
1279
+ backgroundColor: displayAnnouncement.cta_button_background_color || ANNOUNCEMENT_CTA_DEFAULTS.background,
1280
+ color: displayAnnouncement.cta_button_text_color || ANNOUNCEMENT_CTA_DEFAULTS.text,
1281
+ borderColor: displayAnnouncement.cta_button_background_color || ANNOUNCEMENT_CTA_DEFAULTS.background
1282
+ },
1283
+ tabIndex: expanded ? 0 : -1,
1284
+ leftIcon: displayAnnouncement.cta_show_icon && displayAnnouncement.cta_icon_name ? /* @__PURE__ */ jsx(
1285
+ EntityIcon,
1286
+ {
1287
+ icon: { name: displayAnnouncement.cta_icon_name, props: displayAnnouncement.cta_icon_props },
1288
+ size: 14,
1289
+ className: "w-3.5 h-3.5"
1290
+ }
1291
+ ) : void 0,
1292
+ children: displayAnnouncement.cta_text
1293
+ }
1294
+ ) : void 0
1295
+ ),
1296
+ endAdornment: (
1297
+ /* Dismiss - the common Button in its ghost-icon treatment
1298
+ (size="icon-sm": 32px target, >= the 24px WCAG 2.5.8 AA floor,
1299
+ 16px glyph) with the bar's quiet tint hover. Inert in
1300
+ previewMode. */
1301
+ /* @__PURE__ */ jsx(
1302
+ Button,
1303
+ {
1304
+ onClick: handleDismiss,
1305
+ variant: "transparent",
1306
+ size: "icon-sm",
1307
+ className: barButtonClasses,
1308
+ "aria-label": "Dismiss announcement",
1309
+ type: "button",
1310
+ tabIndex: expanded ? 0 : -1,
1311
+ children: /* @__PURE__ */ jsx(X, { strokeWidth: 2 })
1312
+ }
1313
+ )
1314
+ )
1315
+ }
1316
+ )
1317
+ }
1318
+ )
1294
1319
  }
1295
1320
  );
1296
1321
  }
@@ -4599,6 +4624,7 @@ export {
4599
4624
  AllowedDomainsInput,
4600
4625
  AnnouncementBar,
4601
4626
  AnnouncementBarSkeleton,
4627
+ AnnouncementBarView,
4602
4628
  AppHeader,
4603
4629
  AppLayout,
4604
4630
  AppLayoutDrawerRoot as AppLayoutDrawer,