@burdenoff/fe-libs 2026.815.3 → 2026.819.1

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,EA+SnC,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;;QA7Y7B,MAAM;UACJ,MAAM;UACN,MAAM;WACL,MAAM;kBACC,MAAM;IACpB;;;;;OAKG;iBACU,OAAO;IAoYrB"}
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"}
@@ -85,11 +85,10 @@ var e = {
85
85
  },
86
86
  {
87
87
  id: "healthybowl",
88
- name: "Healthybowl",
88
+ name: "HealthyBowl",
89
89
  icon: "HB",
90
90
  color: "#22c55e",
91
- description: "Health & wellness platform",
92
- comingSoon: !0
91
+ description: "AI-powered agricultural intelligence & farm operations"
93
92
  },
94
93
  {
95
94
  id: "adaptercloud",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.815.3",
3
+ "version": "2026.819.1",
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
+ }