@burdenoff/fe-libs 2026.815.4 → 2026.819.2

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.
@@ -1 +1 @@
1
- {"version":3,"file":"AppShellLayout.d.ts","sourceRoot":"","sources":["../../src/chrome/AppShellLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,sDAAsD;IACtD,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IAEpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oGAAoG;IACpG,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA6ElD,CAAC"}
1
+ {"version":3,"file":"AppShellLayout.d.ts","sourceRoot":"","sources":["../../src/chrome/AppShellLayout.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiB,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE1D;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,wBAAwB;IACxB,OAAO,CAAC,EAAE,SAAS,CAAC;IAEpB,uBAAuB;IACvB,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,uDAAuD;IACvD,WAAW,CAAC,EAAE,SAAS,CAAC;IAExB,sDAAsD;IACtD,UAAU,CAAC,EAAE,SAAS,CAAC;IAEvB,6CAA6C;IAC7C,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,mBAAmB;IACnB,QAAQ,EAAE,SAAS,CAAC;IAEpB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,gCAAgC;IAChC,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,iCAAiC;IACjC,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB,6CAA6C;IAC7C,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;OAGG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,oGAAoG;IACpG,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAmFlD,CAAC"}
@@ -19,7 +19,7 @@ var r = ({ header: r, sidebar: i, footer: a, bottomPanel: o, rightPanel: s, stat
19
19
  children: [/* @__PURE__ */ n("div", {
20
20
  className: "flex flex-col flex-1 overflow-hidden",
21
21
  children: [/* @__PURE__ */ t("main", {
22
- className: p || _,
22
+ className: `scrollbar-slim ${p || _}`,
23
23
  "data-shell-scroll-container": !0,
24
24
  children: h ? /* @__PURE__ */ n(e, { children: [/* @__PURE__ */ t("div", {
25
25
  className: d ? "flex-1" : "flex-1 min-h-0",
@@ -86,7 +86,7 @@ var p = ({ items: p, currentPath: m, collapsed: h = !1, onItemClick: g, onToggle
86
86
  onCollapseAll: O
87
87
  }),
88
88
  /* @__PURE__ */ d("nav", {
89
- className: "flex-1 min-h-0 py-card-padding overflow-y-auto overflow-x-hidden",
89
+ className: "scrollbar-slim scrollbar-hover-only flex-1 min-h-0 py-card-padding overflow-y-auto overflow-x-hidden",
90
90
  children: /* @__PURE__ */ d(n, {
91
91
  delayDuration: 300,
92
92
  children: /* @__PURE__ */ d("ul", {
@@ -18,7 +18,7 @@ var a = ({ sections: a, isCollapsed: o = !1, onToggleCollapse: s, header: c, foo
18
18
  children: c
19
19
  }),
20
20
  /* @__PURE__ */ r("nav", {
21
- className: "flex-1 overflow-y-auto py-section-gap",
21
+ className: "scrollbar-slim scrollbar-hover-only flex-1 overflow-y-auto py-section-gap",
22
22
  children: a.map((t) => {
23
23
  let a = p.has(t.title);
24
24
  return /* @__PURE__ */ i("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../../src/shared/config/products.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDf,CAAC;AAEX,eAAO,MAAM,QAAQ,EAAE,aAAa,EA8SnC,CAAC;AAOF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;QA5Y7B,MAAM;UACJ,MAAM;UACN,MAAM;WACL,MAAM;kBACC,MAAM;IACpB;;;;;OAKG;iBACU,OAAO;IAmYrB"}
1
+ {"version":3,"file":"products.d.ts","sourceRoot":"","sources":["../../../src/shared/config/products.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgDf,CAAC;AAEX,eAAO,MAAM,QAAQ,EAAE,aAAa,EAgRnC,CAAC;AAOF,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAGvE;AAED;;GAEG;AACH,wBAAgB,mBAAmB;;QA9W7B,MAAM;UACJ,MAAM;UACN,MAAM;WACL,MAAM;kBACC,MAAM;IACpB;;;;;OAKG;iBACU,OAAO;IAqWrB"}
@@ -95,32 +95,28 @@ var e = {
95
95
  name: "AdapterCloud",
96
96
  icon: "AC",
97
97
  color: "#0ea5e9",
98
- description: "Digital infrastructure continuum",
99
- comingSoon: !0
98
+ description: "Digital infrastructure continuum"
100
99
  },
101
100
  {
102
101
  id: "artistrybase",
103
102
  name: "ArtistryBase",
104
103
  icon: "AB",
105
104
  color: "#8b5cf6",
106
- description: "Audio, video, stories & art platform",
107
- comingSoon: !0
105
+ description: "Audio, video, stories & art platform"
108
106
  },
109
107
  {
110
108
  id: "atheletebridge",
111
109
  name: "AtheleteBridge",
112
110
  icon: "AB",
113
111
  color: "#f97316",
114
- description: "Sports, gaming & training platform",
115
- comingSoon: !0
112
+ description: "Sports, gaming & training platform"
116
113
  },
117
114
  {
118
115
  id: "coolandlovely",
119
116
  name: "CoolAndLovely",
120
117
  icon: "CL",
121
118
  color: "#ec4899",
122
- description: "Fashion & lifestyle platform",
123
- comingSoon: !0
119
+ description: "Fashion & lifestyle platform"
124
120
  },
125
121
  {
126
122
  id: "hookmovies",
@@ -135,184 +131,161 @@ var e = {
135
131
  name: "LabsOfScience",
136
132
  icon: "LS",
137
133
  color: "#14b8a6",
138
- description: "Science & discovery platform",
139
- comingSoon: !0
134
+ description: "Science & discovery platform"
140
135
  },
141
136
  {
142
137
  id: "subscriberbot",
143
138
  name: "SubscriberBot",
144
139
  icon: "SB",
145
140
  color: "#a855f7",
146
- description: "Recurring-subscription management",
147
- comingSoon: !0
141
+ description: "Recurring-subscription management"
148
142
  },
149
143
  {
150
144
  id: "crewfoundry",
151
145
  name: "Crewfoundry",
152
146
  icon: "CF",
153
147
  color: "#6366f1",
154
- description: "Workforce & crew management platform",
155
- comingSoon: !0
148
+ description: "Workforce & crew management platform"
156
149
  },
157
150
  {
158
151
  id: "kadaikodi",
159
152
  name: "Kadaikodi",
160
153
  icon: "KK",
161
154
  color: "#eab308",
162
- description: "Local commerce marketplace",
163
- comingSoon: !0
155
+ description: "Local commerce marketplace"
164
156
  },
165
157
  {
166
158
  id: "headshotmarketing",
167
159
  name: "HeadshotMarketing",
168
160
  icon: "HS",
169
161
  color: "#d946ef",
170
- description: "AI-powered marketing platform",
171
- comingSoon: !0
162
+ description: "AI-powered marketing platform"
172
163
  },
173
164
  {
174
165
  id: "ggnomad",
175
166
  name: "GGNomad",
176
167
  icon: "GG",
177
168
  color: "#2563EB",
178
- description: "Travel, tourism & entertainment",
179
- comingSoon: !0
169
+ description: "Travel, tourism & entertainment"
180
170
  },
181
171
  {
182
172
  id: "assethandler",
183
173
  name: "AssetHandler",
184
174
  icon: "AH",
185
175
  color: "#0891b2",
186
- description: "Asset lifecycle management platform",
187
- comingSoon: !0
176
+ description: "Asset lifecycle management platform"
188
177
  },
189
178
  {
190
179
  id: "eventfullymanaged",
191
180
  name: "EventfullyManaged",
192
181
  icon: "EM",
193
182
  color: "#e11d48",
194
- description: "Event management platform",
195
- comingSoon: !0
183
+ description: "Event management platform"
196
184
  },
197
185
  {
198
186
  id: "housingvista",
199
187
  name: "HousingVista",
200
188
  icon: "HV",
201
189
  color: "#059669",
202
- description: "Real estate & housing platform",
203
- comingSoon: !0
190
+ description: "Real estate & housing platform"
204
191
  },
205
192
  {
206
193
  id: "timecampus",
207
194
  name: "Timecampus",
208
195
  icon: "TC",
209
196
  color: "#2563eb",
210
- description: "Time & scheduling platform",
211
- comingSoon: !0
197
+ description: "Time & scheduling platform"
212
198
  },
213
199
  {
214
200
  id: "movethewheels",
215
201
  name: "MoveTheWheels",
216
202
  icon: "MW",
217
203
  color: "#ea580c",
218
- description: "Logistics & mobility platform",
219
- comingSoon: !0
204
+ description: "Logistics & mobility platform"
220
205
  },
221
206
  {
222
207
  id: "manufacturedops",
223
208
  name: "ManufacturedOps",
224
209
  icon: "MO",
225
210
  color: "#475569",
226
- description: "Manufacturing execution system",
227
- comingSoon: !0
211
+ description: "Manufacturing execution system"
228
212
  },
229
213
  {
230
214
  id: "proserviceworld",
231
215
  name: "ProServiceWorld",
232
216
  icon: "PS",
233
217
  color: "#7c3aed",
234
- description: "Professional services platform",
235
- comingSoon: !0
218
+ description: "Professional services platform"
236
219
  },
237
220
  {
238
221
  id: "intelwatchtower",
239
222
  name: "IntelWatchtower",
240
223
  icon: "IW",
241
224
  color: "#0369a1",
242
- description: "Military & intelligence platform",
243
- comingSoon: !0
225
+ description: "Military & intelligence platform"
244
226
  },
245
227
  {
246
228
  id: "govcitizenhub",
247
229
  name: "GovCitizenHub",
248
230
  icon: "GC",
249
231
  color: "#e34003",
250
- description: "Government & citizen operations platform",
251
- comingSoon: !0
232
+ description: "Government & citizen operations platform"
252
233
  },
253
234
  {
254
235
  id: "brainyrich",
255
236
  name: "BrainyRich",
256
237
  icon: "BR",
257
238
  color: "#059669",
258
- description: "Wealth management platform",
259
- comingSoon: !0
239
+ description: "Wealth management platform"
260
240
  },
261
241
  {
262
242
  id: "buildmyiq",
263
243
  name: "BuildMyIQ",
264
244
  icon: "BI",
265
245
  color: "#6366f1",
266
- description: "AI-native learning platform",
267
- comingSoon: !0
246
+ description: "AI-native learning platform"
268
247
  },
269
248
  {
270
249
  id: "collabkin",
271
250
  name: "CollabKin",
272
251
  icon: "CK",
273
252
  color: "#f59e0b",
274
- description: "Private family & ancestry",
275
- comingSoon: !0
253
+ description: "Private family & ancestry"
276
254
  },
277
255
  {
278
256
  id: "comradecircle",
279
257
  name: "ComradeCircle",
280
258
  icon: "CC",
281
259
  color: "#0d9488",
282
- description: "Community engagement platform",
283
- comingSoon: !0
260
+ description: "Community engagement platform"
284
261
  },
285
262
  {
286
263
  id: "cosmicintersection",
287
264
  name: "CosmicIntersection",
288
265
  icon: "CI",
289
266
  color: "#7c3aed",
290
- description: "Space & science data platform",
291
- comingSoon: !0
267
+ description: "Space & science data platform"
292
268
  },
293
269
  {
294
270
  id: "ecoimpacthub",
295
271
  name: "EcoImpactHub",
296
272
  icon: "EI",
297
273
  color: "#16a34a",
298
- description: "Environment, sustainability & conservation",
299
- comingSoon: !0
274
+ description: "Environment, sustainability & conservation"
300
275
  },
301
276
  {
302
277
  id: "mybodyshield",
303
278
  name: "MyBodyShield",
304
279
  icon: "MB",
305
280
  color: "#2563eb",
306
- description: "Complete health & fitness platform",
307
- comingSoon: !0
281
+ description: "Complete health & fitness platform"
308
282
  },
309
283
  {
310
284
  id: "planmagnet",
311
285
  name: "PlanMagnet",
312
286
  icon: "PM",
313
287
  color: "#3b82f6",
314
- description: "Product & project management",
315
- comingSoon: !0
288
+ description: "Product & project management"
316
289
  },
317
290
  {
318
291
  id: "semanticfed",
@@ -327,24 +300,21 @@ var e = {
327
300
  name: "TechnoSpam",
328
301
  icon: "TS",
329
302
  color: "#8b5cf6",
330
- description: "Learn technology by doing",
331
- comingSoon: !0
303
+ description: "Learn technology by doing"
332
304
  },
333
305
  {
334
306
  id: "theculturepost",
335
307
  name: "TheCulturePost",
336
308
  icon: "CP",
337
309
  color: "#db2777",
338
- description: "Sourced cultural storytelling",
339
- comingSoon: !0
310
+ description: "Sourced cultural storytelling"
340
311
  },
341
312
  {
342
313
  id: "theglobalfuel",
343
314
  name: "TheGlobalFuel",
344
315
  icon: "TF",
345
316
  color: "#f59e0b",
346
- description: "Energy, minerals & resources platform",
347
- comingSoon: !0
317
+ description: "Energy, minerals & resources platform"
348
318
  }
349
319
  ];
350
320
  function n() {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.815.4",
3
+ "version": "2026.819.2",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {
@@ -67,3 +67,99 @@
67
67
  :root[data-reduce-motion] {
68
68
  --pop-lift-y: 0px;
69
69
  }
70
+
71
+ /* Boff UI 2.0 — slim scrollbar utility.
72
+ *
73
+ * Opt-in (NOT a global `::-webkit-scrollbar` override) so it only lands on the
74
+ * surfaces that ask for it — the app-shell sidebars today. The browser default
75
+ * bar is a wide, opaque grey that reads as a foreign object against a dark
76
+ * sidebar; this replaces it with a thin rounded thumb on a transparent track.
77
+ *
78
+ * The thumb is mixed from --color-text-primary rather than pinned to a border
79
+ * or text token, because no fixed token reads correctly in both themes:
80
+ * --color-border-strong is a clean grey in light (#9CA3AF) but nearly the
81
+ * sidebar's own background in dark (#3C4759), while --color-text-muted is the
82
+ * reverse. Mixing off the foreground colour inverts with the theme for free.
83
+ *
84
+ * Native scrolling is kept intact — no Radix wrapper — so keyboard, touch and
85
+ * scroll-anchoring behaviour are unchanged.
86
+ *
87
+ * Unlayered, so it wins over the foundation/semantic/brands/themes layers
88
+ * without needing !important.
89
+ */
90
+ /* Firefox (and anything without the WebKit pseudo-elements).
91
+ *
92
+ * This MUST stay behind @supports: Chrome implements both APIs, and setting
93
+ * `scrollbar-width`/`scrollbar-color` on an element makes Chrome ignore that
94
+ * element's ::-webkit-scrollbar rules entirely. Applied unconditionally it
95
+ * silently disables the width and border-radius below, and Chrome falls back
96
+ * to its own built-in "thin" bar. */
97
+ @supports not selector(::-webkit-scrollbar) {
98
+ .scrollbar-slim {
99
+ scrollbar-width: thin;
100
+ scrollbar-color: color-mix(in oklab, var(--color-text-primary) 52%, transparent) transparent;
101
+ }
102
+ }
103
+
104
+ /* WebKit/Blink — the path Chrome, Edge and Safari actually take. */
105
+ .scrollbar-slim::-webkit-scrollbar {
106
+ width: 4px;
107
+ height: 4px;
108
+ }
109
+
110
+ .scrollbar-slim::-webkit-scrollbar-track {
111
+ background: transparent;
112
+ }
113
+
114
+ .scrollbar-slim::-webkit-scrollbar-thumb {
115
+ background-color: color-mix(in oklab, var(--color-text-primary) 52%, transparent);
116
+ border-radius: var(--radius-pill);
117
+ }
118
+
119
+ .scrollbar-slim::-webkit-scrollbar-thumb:hover {
120
+ background-color: color-mix(in oklab, var(--color-text-primary) 75%, transparent);
121
+ }
122
+
123
+ /* Corner where a vertical and horizontal bar meet — default is an opaque
124
+ * grey square that would reintroduce exactly the artefact this removes. */
125
+ .scrollbar-slim::-webkit-scrollbar-corner {
126
+ background: transparent;
127
+ }
128
+
129
+ /* Boff UI 2.0 — hover-reveal modifier for .scrollbar-slim.
130
+ *
131
+ * Composes with .scrollbar-slim: the thumb is transparent until the pointer is
132
+ * anywhere over the scroll container, then fades up to the normal resting
133
+ * colour. Used on the app-shell side nav, where a permanently visible bar
134
+ * competes with the nav items for attention.
135
+ *
136
+ * The width is deliberately NOT zeroed at rest — the gutter stays reserved so
137
+ * revealing the thumb cannot reflow the nav underneath it.
138
+ *
139
+ * Pointer-coarse devices (touch) are excluded: there is no hover there, so the
140
+ * bar would never be reachable.
141
+ */
142
+ @media (hover: hover) {
143
+ .scrollbar-hover-only::-webkit-scrollbar-thumb {
144
+ background-color: transparent;
145
+ }
146
+
147
+ .scrollbar-hover-only:hover::-webkit-scrollbar-thumb {
148
+ background-color: color-mix(in oklab, var(--color-text-primary) 52%, transparent);
149
+ }
150
+
151
+ .scrollbar-hover-only:hover::-webkit-scrollbar-thumb:hover {
152
+ background-color: color-mix(in oklab, var(--color-text-primary) 75%, transparent);
153
+ }
154
+
155
+ /* Firefox equivalent — same @supports reasoning as .scrollbar-slim above. */
156
+ @supports not selector(::-webkit-scrollbar) {
157
+ .scrollbar-hover-only {
158
+ scrollbar-color: transparent transparent;
159
+ }
160
+
161
+ .scrollbar-hover-only:hover {
162
+ scrollbar-color: color-mix(in oklab, var(--color-text-primary) 52%, transparent) transparent;
163
+ }
164
+ }
165
+ }