@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.
- package/dist/chrome/AppShellLayout.d.ts.map +1 -1
- package/dist/chrome/AppShellLayout.js +1 -1
- package/dist/chrome/SideNavigation.js +1 -1
- package/dist/chrome/Sidebar.js +1 -1
- package/dist/shared/config/products.d.ts.map +1 -1
- package/dist/shared/config/products.js +30 -60
- package/package.json +1 -1
- package/src/shared/tokens/tokens.css +96 -0
|
@@ -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,
|
|
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", {
|
package/dist/chrome/Sidebar.js
CHANGED
|
@@ -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,
|
|
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
|
@@ -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
|
+
}
|