@abyss-project/commons-front-core 7.1.0 → 8.1.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.
Files changed (61) hide show
  1. package/README.md +63 -0
  2. package/dist/{AbyssModal.component-DVIzX2ko.js → AbyssCookieConsentProvider-BhSzVu8P.js} +2328 -2103
  3. package/dist/CookieConsentSettings.component-DMEAuCVS.js +77 -0
  4. package/dist/components/layers/Toast/Toast.d.ts +1 -1
  5. package/dist/components/structure/AppShell/AppShell.d.ts +1 -1
  6. package/dist/components/structure/test-support/structure-test-harness.d.ts +1 -1
  7. package/dist/cookie-consent.js +17 -16
  8. package/dist/{design-theme-DGpfyrRa.js → design-theme-CvLzOz3p.js} +1 -1
  9. package/dist/fonts.css +1 -1
  10. package/dist/hooks/use-rich-intl.hook.d.ts +10 -0
  11. package/dist/{index-2dP8eJDC.js → index-21vSFz6u.js} +2 -2
  12. package/dist/{index-CKRPvslz.js → index-6KdfKdSJ.js} +2 -2
  13. package/dist/{index-CRAwLl2U.js → index-7HAvRXgu.js} +2 -2
  14. package/dist/{index-ClyGJxMq.js → index-ASLTmD1Y.js} +2 -2
  15. package/dist/{index-EOvj8bHf.js → index-BTjzj7mm.js} +2 -2
  16. package/dist/{index-Bnd34zc3.js → index-BVS73U9E.js} +4 -4
  17. package/dist/{index-D3RFab1e.js → index-BkfBpYKR.js} +3 -3
  18. package/dist/{index-G39MXErO.js → index-BqIg55B3.js} +4 -4
  19. package/dist/{index-BCbBLGCq.js → index-Btnmn1iK.js} +4 -4
  20. package/dist/{index-uN5dp-oL.js → index-BtsnuEJC.js} +24753 -22818
  21. package/dist/{index-5lZWuL9E.js → index-C92C_oG5.js} +2 -2
  22. package/dist/{index-BNXtGwVO.js → index-CHGRiRCe.js} +3 -3
  23. package/dist/{index-BvnEqebm.js → index-ClLoBnCN.js} +2 -2
  24. package/dist/{index-C9rZao0s.js → index-D4Qh2Iww.js} +3 -3
  25. package/dist/{index-DY-1nAn8.js → index-D5e4uD4k.js} +2 -2
  26. package/dist/{index-BzqtPPN5.js → index-D_GWBYM2.js} +1 -1
  27. package/dist/{index-D-ULIp83.js → index-DixNft1u.js} +2 -2
  28. package/dist/{index-s1jdo-Md.js → index-GoHiFeaw.js} +2 -2
  29. package/dist/{index-CtgSTnzK.js → index-LdiTmDFg.js} +2 -2
  30. package/dist/{index-Dne75cXj.js → index-Ni4BmFs4.js} +2 -2
  31. package/dist/{index-CUmAInm9.js → index-bR-mnNUA.js} +2 -2
  32. package/dist/{index-CEkvsFyX.js → index-l7FAjaVB.js} +3 -3
  33. package/dist/index.d.ts +1 -0
  34. package/dist/index.js +1724 -1591
  35. package/dist/legacy/components/CookieConsent/AbyssCookieConsentProvider.d.ts +5 -0
  36. package/dist/legacy/components/CookieConsent/AbyssCookieConsentProvider.spec.d.ts +1 -0
  37. package/dist/legacy/components/Utils/AbyssErrorPage/AbyssErrorBoundary.component.spec.d.ts +1 -0
  38. package/dist/legacy/fonts.css +1 -1
  39. package/dist/legacy.js +83 -82
  40. package/dist/rum/AbyssRumProvider.d.ts +29 -0
  41. package/dist/rum/AbyssRumProvider.spec.d.ts +1 -0
  42. package/dist/rum/abyss-main-session-path.d.ts +13 -0
  43. package/dist/rum/abyss-main-session-path.spec.d.ts +1 -0
  44. package/dist/rum/feedback-ticket.d.ts +31 -0
  45. package/dist/rum/index.d.ts +7 -0
  46. package/dist/rum/route-resolver.d.ts +7 -0
  47. package/dist/rum/route-resolver.spec.d.ts +1 -0
  48. package/dist/rum/rum-provider-config.d.ts +39 -0
  49. package/dist/rum/rum-provider-config.spec.d.ts +1 -0
  50. package/dist/theme/augmentation.d.ts +1 -1
  51. package/dist/theme/components/shared.d.ts +1 -1
  52. package/dist/theme/create-abyss-theme.d.ts +1 -1
  53. package/dist/theme/design-theme.d.ts +1 -1
  54. package/dist/theme/tokens/oklch.d.ts +1 -1
  55. package/dist/theme/tokens/soft.d.ts +1 -1
  56. package/dist/translations/en.d.ts +1 -0
  57. package/dist/translations/fr.d.ts +1 -0
  58. package/package.json +7 -3
  59. package/vite.config.ts +1 -1
  60. package/dist/CookieConsentSettings.component-BdBT72qy.js +0 -299
  61. package/test-results/catalog/.last-run.json +0 -4
@@ -1,6 +1,11 @@
1
1
  import { default as React } from 'react';
2
2
  import { UseCookieConsent } from '../../../hooks/use-cookie-consent.hook';
3
3
  export declare const useAbyssCookieConsent: () => UseCookieConsent;
4
+ /**
5
+ * The consent of the closest `<AbyssCookieConsentProvider>`, `null` outside one: for a consumer
6
+ * that must work without the provider (`AbyssRumProvider` then reads every category as refused).
7
+ */
8
+ export declare const useOptionalAbyssCookieConsent: () => UseCookieConsent | null;
4
9
  export interface AbyssCookieConsentProviderProps {
5
10
  children: React.ReactNode;
6
11
  consentVersion: string;
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Lexend, self-hosted for the legacy typography (ADR-0166 §2): an app imports
2
+ * Lexend, self-hosted for the legacy typography (ADR-0174 §2): an app imports
3
3
  * `@abyss-project/commons-front-core/legacy/fonts.css` once at its entry point in place of the
4
4
  * Google Fonts link. The variable font registers the family "Lexend Variable", listed first in the
5
5
  * legacy `fontFamily`.
package/dist/legacy.js CHANGED
@@ -1,9 +1,9 @@
1
- import { aE as e, aF as o, R as t, M as r, Q as i, aO as b, Z as n, aI as A, $ as l, a6 as C, aB as S, ac as p, ad as u, aQ as y, b0 as c, a$ as d, aJ as g, aC as T, aY as P, aZ as I, aV as _, ay as h, Y as L, ae as E, a_ as m, aW as O, af as R, bk as D, _ as f, bn as B, bt as k, ap as M, aH as v, al as F, ak as N, aD as W, aG as x, aX as U, V as w, a5 as Q, a4 as G, bQ as H, bo as V, bT as Y, ag as j, ai as z, ah as X, aa as K, a9 as Z, a8 as q, b_ as J, at as $, aS as aa, aR as sa, aw as ea, ax as oa, ab as ta, aj as ra, bU as ia, bX as ba, bR as na, bS as Aa, aT as la, aL as Ca, X as Sa, ar as pa, aq as ua, av as ya, a0 as ca, aU as da, au as ga, O as Ta, bW as Pa, bP as Ia, bl as _a, bm as ha, K as La, W as Ea, an as ma, ao as Oa, a1 as Ra, am as Da, aM as fa, bz as Ba, bu as ka, by as Ma, bq as va, b8 as Fa, b9 as Na, ba as Wa, bd as xa, bi as Ua, bg as wa, b7 as Qa, b6 as Ga, b3 as Ha, bb as Va, b2 as Ya, b5 as ja, bj as za, bc as Xa, b4 as Ka, bh as Za, U as qa, S as Ja, aK as $a, aN as as, aP as ss, a2 as es, a3 as os, bL as ts, b1 as rs, br as is, bC as bs, aA as ns, bE as As, bv as ls, bN as Cs, bH as Ss, bF as ps, bG as us, bf as ys, be as cs, bZ as ds, bY as gs, as as Ts, bV as Ps, bA as Is, bI as _s, bs as hs, bw as Ls, bp as Es, bO as ms, bB as Os, bK as Rs, bx as Ds, bM as fs, bD as Bs, bJ as ks, az as Ms, a7 as vs, b$ as Fs } from "./index-uN5dp-oL.js";
2
- import { A as Ws, C as xs, a as Us, u as ws } from "./CookieConsentSettings.component-BdBT72qy.js";
3
- import { A as Gs, C as Hs, D as Vs, R as Ys, V as js, p as zs, S as Xs, G as Ks, c as Zs, H as qs, I as Js, E as $s, F as ae, x as se, z as ee, f as oe, K as te, L as re, U as ie, W as be, O as ne, P as Ae, X as le, Y as Ce, v as Se, n as pe, l as ue, y as ye, B as ce, o as de, q as ge, r as Te, a as Pe, s as Ie, M as _e, N as he, T as Le, J as Ee, Q as me, u as Oe, w as Re } from "./AbyssModal.component-DVIzX2ko.js";
4
- import { aB as fe, y as Be, aA as ke, az as Me, aC as ve, x as Fe, C as Ne, E as We, I as xe, P as Ue, aE as we, W as Qe, aF as Ge, aG as He, v as Ve, q as Ye, aD as je } from "./design-theme-DGpfyrRa.js";
1
+ import { aE as e, aF as o, R as t, M as r, Q as i, aO as b, Z as n, aI as A, $ as C, a6 as l, aB as S, ac as p, ad as u, aQ as y, b0 as c, a$ as d, aJ as g, aC as T, aY as P, aZ as I, aV as _, ay as h, Y as L, ae as E, a_ as m, aW as O, af as R, bk as D, _ as f, bn as k, bt as B, ap as M, aH as v, al as F, ak as N, aD as W, aG as x, aX as U, V as w, a5 as Q, a4 as G, bQ as H, bo as V, bT as Y, ag as j, ai as z, ah as X, aa as K, a9 as Z, a8 as $, b_ as q, at as J, aS as aa, aR as sa, aw as ea, ax as oa, ab as ta, aj as ra, bU as ia, bX as ba, bR as na, bS as Aa, aT as Ca, aL as la, X as Sa, ar as pa, aq as ua, av as ya, a0 as ca, aU as da, au as ga, O as Ta, bW as Pa, bP as Ia, bl as _a, bm as ha, K as La, W as Ea, an as ma, ao as Oa, a1 as Ra, am as Da, aM as fa, bz as ka, bu as Ba, by as Ma, bq as va, b8 as Fa, b9 as Na, ba as Wa, bd as xa, bi as Ua, bg as wa, b7 as Qa, b6 as Ga, b3 as Ha, bb as Va, b2 as Ya, b5 as ja, bj as za, bc as Xa, b4 as Ka, bh as Za, U as $a, S as qa, aK as Ja, aN as as, aP as ss, a2 as es, a3 as os, bL as ts, b1 as rs, br as is, bC as bs, aA as ns, bE as As, bv as Cs, bN as ls, bH as Ss, bF as ps, bG as us, bf as ys, be as cs, bZ as ds, bY as gs, as as Ts, bV as Ps, bA as Is, bI as _s, bs as hs, bw as Ls, bp as Es, bO as ms, bB as Os, bK as Rs, bx as Ds, bM as fs, bD as ks, bJ as Bs, az as Ms, a7 as vs, b$ as Fs } from "./index-BtsnuEJC.js";
2
+ import { A as Ws, h as xs, c as Us, C as ws, D as Qs, R as Gs, V as Hs, x as Vs, X as Ys, K as js, d as zs, L as Xs, M as Ks, I as Zs, J as $s, E as qs, G as Js, f as ae, O as se, P as ee, Z as oe, _ as te, T as re, U as ie, $ as be, a0 as ne, B as Ae, s as Ce, p as le, F as Se, H as pe, v as ue, y as ye, r as ce, e as de, z as ge, Q as Te, S as Pe, Y as Ie, N as _e, W as he, u as Le, b as Ee, a as me, w as Oe } from "./AbyssCookieConsentProvider-BhSzVu8P.js";
3
+ import { C as De } from "./CookieConsentSettings.component-DMEAuCVS.js";
4
+ import { aB as ke, y as Be, aA as Me, az as ve, aC as Fe, x as Ne, C as We, E as xe, I as Ue, P as we, aE as Qe, W as Ge, aF as He, aG as Ve, v as Ye, q as je, aD as ze } from "./design-theme-CvLzOz3p.js";
5
5
  export {
6
- fe as ABYSS_SERVICE_CONFIG,
6
+ ke as ABYSS_SERVICE_CONFIG,
7
7
  e as ABYSS_SIDEBAR_WIDTH,
8
8
  o as ABYSS_SIDEBAR_WIDTH_COLLAPSED,
9
9
  t as AVATAR_BASE_SX,
@@ -12,8 +12,8 @@ export {
12
12
  b as AbyssBackground,
13
13
  n as AbyssBarChart,
14
14
  A as AbyssBillingPlan,
15
- l as AbyssCashFlowChart,
16
- C as AbyssCommandPalette,
15
+ C as AbyssCashFlowChart,
16
+ l as AbyssCommandPalette,
17
17
  Ws as AbyssCookieConsentProvider,
18
18
  S as AbyssDashboardLayout,
19
19
  p as AbyssDatePicker,
@@ -31,22 +31,22 @@ export {
31
31
  Be as AbyssLoadingScreen,
32
32
  E as AbyssMarkdownEditor,
33
33
  m as AbyssMenuItem,
34
- Gs as AbyssModal,
34
+ xs as AbyssModal,
35
35
  O as AbyssNotifications,
36
36
  R as AbyssNumberField,
37
37
  D as AbyssPendingInvitations,
38
38
  f as AbyssPieChart,
39
- B as AbyssQuotaGauge,
40
- k as AbyssQuotaOffer,
39
+ k as AbyssQuotaGauge,
40
+ B as AbyssQuotaOffer,
41
41
  M as AbyssScopeSwitcher,
42
42
  v as AbyssSearchBar,
43
43
  F as AbyssSelectOrganization,
44
44
  N as AbyssSelectProject,
45
- ke as AbyssServiceChip,
46
- Me as AbyssServiceSelect,
47
- ve as AbyssServiceSingleSelect,
45
+ Me as AbyssServiceChip,
46
+ ve as AbyssServiceSelect,
47
+ Fe as AbyssServiceSingleSelect,
48
48
  W as AbyssSidebar,
49
- Fe as AbyssTable,
49
+ Ne as AbyssTable,
50
50
  x as AbyssThemeToggle,
51
51
  U as AbyssToast,
52
52
  w as AccountTransactionsRow,
@@ -54,20 +54,20 @@ export {
54
54
  G as ApplicationWebhookTypeChip,
55
55
  H as BILLING_ACCOUNT_STATUS_COLORS,
56
56
  V as BUBBLE_MAX_WIDTH,
57
- Hs as COOKIE_NAME,
57
+ Us as COOKIE_NAME,
58
58
  Y as CREDIT_TRANSACTION_TYPE_COLORS,
59
59
  j as CloudImport,
60
60
  z as CloudImportFile,
61
61
  X as CloudImportFolder,
62
62
  K as ColorPalette,
63
63
  Z as ColorPicker,
64
- q as CompanySearchAutocomplete,
65
- Ne as ConfirmModal,
66
- J as ConfirmModalContextProvider,
67
- $ as ContextSelector,
68
- xs as CookieConsentBanner,
69
- Us as CookieConsentSettings,
70
- Vs as DEFAULT_PRIVACY_HREF,
64
+ $ as CompanySearchAutocomplete,
65
+ We as ConfirmModal,
66
+ q as ConfirmModalContextProvider,
67
+ J as ContextSelector,
68
+ ws as CookieConsentBanner,
69
+ De as CookieConsentSettings,
70
+ Qs as DEFAULT_PRIVACY_HREF,
71
71
  aa as DRAWER_WIDTH_COLLAPSED,
72
72
  sa as DRAWER_WIDTH_EXPANDED,
73
73
  ea as DashboardLayout,
@@ -75,13 +75,13 @@ export {
75
75
  ta as DatePeriodPicker,
76
76
  ra as DropZone,
77
77
  ia as EUR_TRANSACTION_TYPE_COLORS,
78
- We as ErrorInfoBox,
78
+ xe as ErrorInfoBox,
79
79
  ba as GROUP_COLORS,
80
80
  na as INVOICE_STATUS_COLORS,
81
81
  Aa as INVOICE_TYPE_COLORS,
82
- la as ImportButton,
83
- Ca as ImportFromCloudModal,
84
- xe as InfoBox,
82
+ Ca as ImportButton,
83
+ la as ImportFromCloudModal,
84
+ Ue as InfoBox,
85
85
  Sa as InternalProjectCard,
86
86
  pa as LANGUAGE_FLAGS,
87
87
  ua as LanguageFlagLabel,
@@ -92,7 +92,7 @@ export {
92
92
  Ta as OrganizationAvatar,
93
93
  Pa as PAGE_ICONS,
94
94
  Ia as PLAN_TIER_COLORS,
95
- Ue as PasswordInput,
95
+ we as PasswordInput,
96
96
  _a as PdfEditor,
97
97
  ha as PdfOperationType,
98
98
  La as ProjectAvatar,
@@ -102,12 +102,12 @@ export {
102
102
  Ra as ProjectStatusChip,
103
103
  Da as ProjectTagChip,
104
104
  fa as QRCodeModal,
105
- Ba as QUOTA_SERVICE_META,
106
- ka as QuotaOfferState,
105
+ ka as QUOTA_SERVICE_META,
106
+ Ba as QuotaOfferState,
107
107
  Ma as QuotaReachedDialog,
108
108
  va as QuotaSegmentKind,
109
- Ys as ReconcileAction,
110
- we as SuccessInfoBox,
109
+ Gs as ReconcileAction,
110
+ Qe as SuccessInfoBox,
111
111
  Fa as SupportActionButtons,
112
112
  Na as SupportActivityLog,
113
113
  Wa as SupportAttachmentsPanel,
@@ -124,36 +124,36 @@ export {
124
124
  Xa as SupportTicketDetail,
125
125
  Ka as SupportTicketList,
126
126
  Za as SupportTopBar,
127
- qa as UserAvatar,
128
- Ja as UserAvatarList,
129
- $a as UserSettings,
127
+ $a as UserAvatar,
128
+ qa as UserAvatarList,
129
+ Ja as UserSettings,
130
130
  as as UserSettingsModal,
131
- js as VALIDITY_DAYS,
132
- Qe as WarnInfoBox,
131
+ Hs as VALIDITY_DAYS,
132
+ Ge as WarnInfoBox,
133
133
  ss as WaterParticles,
134
134
  es as WebhookResponseCodeChip,
135
135
  os as WebhookTypeChip,
136
- zs as amber,
136
+ Vs as amber,
137
137
  ts as bioluminescentPulse,
138
- Xs as brand,
138
+ Ys as brand,
139
139
  rs as buildAbyssFamilyMenuSection,
140
140
  is as buildQuotaAxis,
141
141
  bs as buildQuotaServiceChipSx,
142
- Ks as chipColors,
143
- Zs as clearCookie,
144
- qs as colorPool,
145
- Js as colorPoolExtended,
146
- $s as colors,
142
+ js as chipColors,
143
+ zs as clearCookie,
144
+ Xs as colorPool,
145
+ Ks as colorPoolExtended,
146
+ Zs as colors,
147
147
  ns as createAbyssLayoutStore,
148
148
  As as createAbyssTheme,
149
- ae as cyan,
150
- se as darkCustom,
151
- ee as darkPalette,
152
- ls as deriveQuotaOfferState,
153
- Ge as duration,
154
- He as easing,
155
- Cs as fadeIn,
156
- oe as flattenTranslations,
149
+ $s as cyan,
150
+ qs as darkCustom,
151
+ Js as darkPalette,
152
+ Cs as deriveQuotaOfferState,
153
+ He as duration,
154
+ Ve as easing,
155
+ ls as fadeIn,
156
+ ae as flattenTranslations,
157
157
  Ss as fontFamily,
158
158
  ps as fontSize,
159
159
  us as fontWeight,
@@ -162,49 +162,50 @@ export {
162
162
  ds as getFileColor,
163
163
  gs as getFileIcon,
164
164
  Ts as getLanguageFlag,
165
- te as getPoolColor,
166
- re as getPoolColorExtended,
165
+ se as getPoolColor,
166
+ ee as getPoolColorExtended,
167
167
  Ps as getProjectColor,
168
168
  Is as getQuotaServiceColor,
169
- Ve as getServiceConfig,
170
- ie as glassDark,
171
- be as glassLight,
172
- ne as glow,
173
- Ae as glowCyan,
174
- le as gradientsDark,
175
- Ce as gradientsLight,
176
- Se as green,
169
+ Ye as getServiceConfig,
170
+ oe as glassDark,
171
+ te as glassLight,
172
+ re as glow,
173
+ ie as glowCyan,
174
+ be as gradientsDark,
175
+ ne as gradientsLight,
176
+ Ae as green,
177
177
  _s as iconSize,
178
- pe as indigo,
179
- ue as legacyTokens,
180
- ye as lightCustom,
181
- ce as lightPalette,
178
+ Ce as indigo,
179
+ le as legacyTokens,
180
+ Se as lightCustom,
181
+ pe as lightPalette,
182
182
  hs as markerRatio,
183
- de as neutral,
183
+ ue as neutral,
184
184
  Ls as offersAction,
185
185
  Es as placeBubble,
186
186
  ms as pulseGlow,
187
- ge as purple,
188
- Ye as radius,
189
- Te as readCookie,
190
- Pe as reconcile,
191
- Ie as red,
187
+ ye as purple,
188
+ je as radius,
189
+ ce as readCookie,
190
+ de as reconcile,
191
+ ge as red,
192
192
  Os as renderQuotaServiceIcon,
193
- _e as shadow,
194
- he as shadowLight,
193
+ Te as shadow,
194
+ Pe as shadowLight,
195
195
  Rs as shimmer,
196
196
  Ds as shouldSuggestModule,
197
197
  fs as slideInUp,
198
- Le as social,
199
- Ee as tagColorPool,
200
- me as textShadow,
201
- Bs as theme,
202
- je as transition,
203
- ks as typographyVariants,
204
- ws as useAbyssCookieConsent,
198
+ Ie as social,
199
+ _e as tagColorPool,
200
+ he as textShadow,
201
+ ks as theme,
202
+ ze as transition,
203
+ Bs as typographyVariants,
204
+ Le as useAbyssCookieConsent,
205
205
  Ms as useAbyssLayoutStore,
206
206
  vs as useCommandPaletteHotkey,
207
207
  Fs as useConfirm,
208
- Oe as useCookieConsent,
209
- Re as writeCookie
208
+ Ee as useCookieConsent,
209
+ me as useOptionalAbyssCookieConsent,
210
+ Oe as writeCookie
210
211
  };
@@ -0,0 +1,29 @@
1
+ import { PropsWithChildren } from 'react';
2
+ import { AbyssRumOptions, RumFeedbackSent } from '@abyss-project/monitor-browser';
3
+ import { AbyssRumFeedbackTicket } from './feedback-ticket';
4
+ /**
5
+ * The SDK options of the front, without the two this provider owns: `consent` (the analytics
6
+ * category of the cookie consent) and the SDK's `onFeedbackSent` (the ticket, then the front's).
7
+ */
8
+ export type AbyssRumProviderConfig = Omit<AbyssRumOptions, 'consent' | 'onFeedbackSent'> & {
9
+ /** Called for each feedback Monitor stored, after its ticket was filed (or skipped, or failed). */
10
+ onFeedbackSent?: (feedback: RumFeedbackSent) => void;
11
+ /** Files each feedback as an Internal Tickets ticket; without it, feedback stays in Monitor. */
12
+ feedbackTicket?: AbyssRumFeedbackTicket;
13
+ };
14
+ export type AbyssRumProviderProps = PropsWithChildren<{
15
+ /**
16
+ * Required on purpose (major 8.0.0): a front cannot forget its RUM. `null` disables it explicitly,
17
+ * nothing is installed. Read once: the SDK is started at the first commit with a non-null value,
18
+ * and a later change of `config` is ignored — the SDK lives as long as the page (§5).
19
+ */
20
+ config: AbyssRumProviderConfig | null;
21
+ }>;
22
+ /**
23
+ * Starts the browser RUM of the front. Mount it under `<AbyssCookieConsentProvider>`: replay
24
+ * requires the analytics consent, read at each decision of the SDK, so a consent given or withdrawn
25
+ * after start is followed; without the consent provider, analytics reads as refused. Under
26
+ * `<AuthProvider>`, the session's actor is the signed-in user (`null` once signed out); without it,
27
+ * there is no actor.
28
+ */
29
+ export declare const AbyssRumProvider: ({ config, children, }: AbyssRumProviderProps) => import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,13 @@
1
+ /** The route of a RUM session page in abyss-main's front. */
2
+ export declare const ABYSS_MAIN_RUM_SESSION_ROUTE: "/org/:orgId/project/:projectId/application/:applicationId/monitor/rum/sessions/:sessionId";
3
+ /** The Monitor application a session belongs to, in abyss-main's front. */
4
+ export interface AbyssMainRumSessionContext {
5
+ orgId: string;
6
+ projectId: string;
7
+ applicationId: string;
8
+ }
9
+ /**
10
+ * The path of a session page; `t` (seconds since the start of the session, floored, never
11
+ * negative) opens it at that instant (§35.8). The session id is URI-encoded.
12
+ */
13
+ export declare const abyssMainRumSessionPath: ({ orgId, projectId, applicationId }: AbyssMainRumSessionContext, sessionId: string, t?: number) => string;
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,31 @@
1
+ import { RumFeedbackSent } from '@abyss-project/monitor-browser';
2
+ /** Where a front files its users' feedback, and how it links back to the session. */
3
+ export interface AbyssRumFeedbackTicket {
4
+ /** Slug of the Internal Tickets intake (`/public/internal-ticket/intake/:slug`). */
5
+ intakeSlug: string;
6
+ /** Section of the intake the ticket is filed in. */
7
+ internalTicketSectionId: string;
8
+ /** Product name, in the ticket title: `[<appName>] Retour utilisateur`. */
9
+ appName: string;
10
+ /** The Monitor page of the session at the instant of the feedback. */
11
+ sessionUrl: (sessionId: string, offsetMs: number) => string;
12
+ /**
13
+ * The language the front is read in at the instant of the feedback (`fr`, `en-GB`…): the
14
+ * language of the intake's follow-up e-mails. Read at each feedback, so a language switched after
15
+ * start is followed. Without it, or for a language the intake does not speak, none is sent and the
16
+ * intake uses its default.
17
+ */
18
+ locale?: () => string | undefined;
19
+ }
20
+ /** The signed-in user of the front, when there is one: the reporter of last resort. */
21
+ export interface FeedbackAccount {
22
+ email: string;
23
+ alias: string;
24
+ }
25
+ /**
26
+ * Files the ticket of one feedback. The reporter is the e-mail typed in the feedback, otherwise the
27
+ * signed-in user's: an anonymous feedback without e-mail files nothing (the intake requires one),
28
+ * it stays in Monitor only. Never rejects: a failure is logged in one line and swallowed, the
29
+ * feedback itself is already stored by Monitor.
30
+ */
31
+ export declare const fileFeedbackTicket: (ticket: AbyssRumFeedbackTicket, feedback: RumFeedbackSent, account: FeedbackAccount | null) => Promise<void>;
@@ -0,0 +1,7 @@
1
+ export * from './AbyssRumProvider';
2
+ export type { AbyssRumFeedbackTicket } from './feedback-ticket';
3
+ export { createRouteResolver } from './route-resolver';
4
+ export { ABYSS_MAIN_RUM_SESSION_ROUTE, abyssMainRumSessionPath, } from './abyss-main-session-path';
5
+ export type { AbyssMainRumSessionContext } from './abyss-main-session-path';
6
+ export { buildAbyssRumProviderConfig } from './rum-provider-config';
7
+ export type { AbyssRumProviderConfigInput } from './rum-provider-config';
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The SDK's `routeResolver` over the front's full route templates. The templates are ranked as
3
+ * react-router ranks its routes: a static segment beats a parameter, a parameter beats a splat, so
4
+ * the most precise template wins whatever the order of the list. A URL no template matches resolves
5
+ * to its own `pathname` (the SDK masks it).
6
+ */
7
+ export declare const createRouteResolver: (patterns: readonly string[]) => ((location: Location) => string);
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,39 @@
1
+ import { AbyssRumProviderConfig } from './AbyssRumProvider';
2
+ /** The raw config values of a front's RUM; an empty string counts as not set. */
3
+ export interface AbyssRumProviderConfigInput {
4
+ /** Public RUM token of the front's environment (`VITE_ABYSS_MONITOR_RUM_TOKEN`). */
5
+ token: string | undefined;
6
+ /** The Monitor application of the front's API. */
7
+ applicationId: string | undefined;
8
+ /** Monitor's API URL; only its origin is kept. */
9
+ monitorApiUrl: string | undefined;
10
+ /** The front's own API URL: the relay, and an instrumented origin. */
11
+ apiUrl: string | undefined;
12
+ /** abyss-main's API URL: an instrumented origin (the same as `apiUrl` for abyss-main's front). */
13
+ mainApiUrl: string | undefined;
14
+ /** `true` for a front that calls Monitor's API itself (abyss-main's): Monitor is instrumented too. */
15
+ instrumentMonitorApi?: boolean;
16
+ /** Commit SHA of the build (`VITE_RELEASE`); empty: the sessions carry no release. */
17
+ release: string | undefined;
18
+ /** The front's full route templates, as its router mounts them (`/org/:orgId/boards/:boardId`). */
19
+ routeTemplates: readonly string[];
20
+ /** Product name, in the title of a feedback ticket (`AbyssCloud`). */
21
+ appName: string;
22
+ /** abyss-main's front URL, where the session page lives; only its origin is kept. */
23
+ mainFrontUrl: string | undefined;
24
+ /** Slug of the Internal Tickets intake the feedback is filed in. */
25
+ feedbackIntakeSlug: string | undefined;
26
+ /** Section of that intake. */
27
+ feedbackSectionId: string | undefined;
28
+ /** Organization of the Monitor application, in the session page's path. */
29
+ organizationId: string | undefined;
30
+ /** Project of the Monitor application, in the session page's path. */
31
+ projectId: string | undefined;
32
+ /** The front's current language, read at each feedback (see `AbyssRumFeedbackTicket.locale`). */
33
+ locale?: () => string | undefined;
34
+ }
35
+ /**
36
+ * The provider's options, `null` when the token, the application, Monitor's API, the front's API or
37
+ * abyss-main's API is not set (nothing to install).
38
+ */
39
+ export declare const buildAbyssRumProviderConfig: (input: AbyssRumProviderConfigInput) => AbyssRumProviderConfig | null;
@@ -0,0 +1 @@
1
+ export {};
@@ -5,7 +5,7 @@ export declare enum Density {
5
5
  Compact = "compact"
6
6
  }
7
7
  /**
8
- * The design system values carried by the MUI theme (ADR-0166 §3), read by every new component
8
+ * The design system values carried by the MUI theme (ADR-0174 §3), read by every new component
9
9
  * through `theme.design`. Colors are sRGB hexadecimal, generated from the OKLCH tokens.
10
10
  */
11
11
  export interface DesignTheme {
@@ -15,7 +15,7 @@ type ControlSize = 'small' | 'medium' | 'large';
15
15
  export declare const controlHeight: (theme: Theme, size?: ControlSize) => number;
16
16
  /** Height of a table or list row at the theme density. */
17
17
  export declare const rowHeight: (theme: Theme) => number;
18
- /** Minimum tap size below the `md` breakpoint (ADR-0166 §3, densité). */
18
+ /** Minimum tap size below the `md` breakpoint (ADR-0174 §3, densité). */
19
19
  export declare const touchTarget: (theme: Theme) => CSSObject;
20
20
  /** Motion of a property at the standard curve. */
21
21
  export declare const transitionOf: (theme: Theme, properties: string[], duration?: keyof Theme["design"]["durations"]) => string;
@@ -2,7 +2,7 @@ import { Theme } from '@mui/material/styles';
2
2
  import { Density } from './augmentation';
3
3
  import { ThemeMode } from './tokens/primitives';
4
4
  /**
5
- * The MUI theme of the design system, generated from the tokens (ADR-0166 §1, §3). Its values are
5
+ * The MUI theme of the design system, generated from the tokens (ADR-0174 §1, §3). Its values are
6
6
  * also exposed under `theme.design` for the components that style themselves.
7
7
  */
8
8
  export declare function createAbyssTheme(mode: ThemeMode, options?: {
@@ -1,7 +1,7 @@
1
1
  import { Density, DesignTheme } from './augmentation';
2
2
  import { ThemeMode } from './tokens/primitives';
3
3
  /**
4
- * The `theme.design` values of a mode (ADR-0166 §3). Shared by `createAbyssTheme` and by the legacy
4
+ * The `theme.design` values of a mode (ADR-0174 §3). Shared by `createAbyssTheme` and by the legacy
5
5
  * `createTheme`, so a new component rendered in an app still on the legacy theme reads the same
6
6
  * tokens.
7
7
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * OKLCH color, as written in the design tokens (ADR-0166 §3).
2
+ * OKLCH color, as written in the design tokens (ADR-0174 §3).
3
3
  * `l` in [0, 1], `c` >= 0, `h` in degrees, optional `alpha` in [0, 1].
4
4
  */
5
5
  export interface Oklch {
@@ -1,2 +1,2 @@
1
- /** Opacity of the `.soft` backgrounds (ADR-0166 §3): status badges, accent tints. */
1
+ /** Opacity of the `.soft` backgrounds (ADR-0174 §3): status badges, accent tints. */
2
2
  export declare const SOFT_ALPHA = 0.14;
@@ -307,6 +307,7 @@ declare const _default: {
307
307
  TOOLS_SHORT_LINK_COUNT: string;
308
308
  TOOLS_SHORTLINK_RESOLUTIONS_MONTH: string;
309
309
  MONITOR_WEBHOOK_INVOCATIONS_MONTH: string;
310
+ RUM_SESSIONS_MONTH: string;
310
311
  REHYDRATION_CONCURRENT_JOBS: string;
311
312
  REHYDRATION_ACTIVE_GB: string;
312
313
  REHYDRATION_MAX_TTL_DAYS: string;
@@ -307,6 +307,7 @@ declare const _default: {
307
307
  TOOLS_SHORT_LINK_COUNT: string;
308
308
  TOOLS_SHORTLINK_RESOLUTIONS_MONTH: string;
309
309
  MONITOR_WEBHOOK_INVOCATIONS_MONTH: string;
310
+ RUM_SESSIONS_MONTH: string;
310
311
  REHYDRATION_CONCURRENT_JOBS: string;
311
312
  REHYDRATION_ACTIVE_GB: string;
312
313
  REHYDRATION_MAX_TTL_DAYS: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@abyss-project/commons-front-core",
3
- "version": "7.1.0",
3
+ "version": "8.1.0",
4
4
  "description": "Front Core package of AbyssProject",
5
5
  "main": "dist/index.js",
6
6
  "module": "./dist/index.js",
@@ -60,6 +60,8 @@
60
60
  "peerDependencies": {
61
61
  "@abyss-project/capacitor-auth": "^1.0.0",
62
62
  "@abyss-project/cloud": "^2.4.0",
63
+ "@abyss-project/console": "^12.4.0",
64
+ "@abyss-project/monitor-browser": "^1.2.0",
63
65
  "@dnd-kit/core": "^6.0.0",
64
66
  "@dnd-kit/sortable": "^9.0.0",
65
67
  "@dnd-kit/utilities": "^3.0.0",
@@ -78,7 +80,7 @@
78
80
  "react-is": "^18.0.0 || ^19.0.0",
79
81
  "react-router-dom": "^6.15.0",
80
82
  "zustand": "^5.0.0",
81
- "@abyss-project/main": "15.0.0"
83
+ "@abyss-project/main": "15.2.0"
82
84
  },
83
85
  "peerDependenciesMeta": {
84
86
  "@abyss-project/capacitor-auth": {
@@ -128,10 +130,12 @@
128
130
  "use-debounce": "^10.0.5",
129
131
  "uuid": "^9.0.0",
130
132
  "yup": "^0.32.11",
131
- "@abyss-project/main": "15.0.0"
133
+ "@abyss-project/main": "15.2.0"
132
134
  },
133
135
  "devDependencies": {
134
136
  "@abyss-project/cloud": "^2.4.0",
137
+ "@abyss-project/console": "^12.4.0",
138
+ "@abyss-project/monitor-browser": "^1.2.0",
135
139
  "@playwright/test": "^1.52.0",
136
140
  "@testing-library/react": "^16.3.2",
137
141
  "@types/byte-size": "^8.1.0",
package/vite.config.ts CHANGED
@@ -77,7 +77,7 @@ export default defineConfig({
77
77
  // subpath stays `./auth` (package.json `exports`) — only the dist filename differs.
78
78
  'auth-client': resolve(__dirname, 'src/auth/client/index.ts'),
79
79
  // The previous design system (theme, visual components, their visual utils and hooks),
80
- // isolated until every app has migrated off it (ADR-0169 §2). Public subpath `./legacy`.
80
+ // isolated until every app has migrated off it (ADR-0174 §2). Public subpath `./legacy`.
81
81
  legacy: resolve(__dirname, 'src/legacy/index.ts'),
82
82
  },
83
83
  formats: ['es'],