@hanzo/ui 8.27.53 → 8.27.55

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 (54) hide show
  1. package/dist/backends/gui/progress.cjs +2 -2
  2. package/dist/backends/gui/progress.d.ts +3 -1
  3. package/dist/backends/gui/progress.d.ts.map +1 -1
  4. package/dist/backends/gui/progress.js +2 -2
  5. package/dist/backends/gui/progress.js.map +1 -1
  6. package/dist/gallery.cjs +17 -1
  7. package/dist/gallery.d.ts.map +1 -1
  8. package/dist/gallery.html +43 -341
  9. package/dist/gallery.js +17 -1
  10. package/dist/gallery.js.map +1 -1
  11. package/dist/marketing/rows.cjs +5 -11
  12. package/dist/marketing/rows.d.ts +2 -1
  13. package/dist/marketing/rows.d.ts.map +1 -1
  14. package/dist/marketing/rows.js +5 -11
  15. package/dist/marketing/rows.js.map +1 -1
  16. package/dist/models/ModelSelector.cjs +7 -3
  17. package/dist/models/ModelSelector.d.ts +9 -1
  18. package/dist/models/ModelSelector.d.ts.map +1 -1
  19. package/dist/models/ModelSelector.js +7 -3
  20. package/dist/models/ModelSelector.js.map +1 -1
  21. package/dist/product/LimitedBanner.cjs +22 -0
  22. package/dist/product/LimitedBanner.d.ts +10 -0
  23. package/dist/product/LimitedBanner.d.ts.map +1 -0
  24. package/dist/product/LimitedBanner.js +20 -0
  25. package/dist/product/LimitedBanner.js.map +1 -0
  26. package/dist/product/UsageMeter.cjs +48 -0
  27. package/dist/product/UsageMeter.d.ts +18 -0
  28. package/dist/product/UsageMeter.d.ts.map +1 -0
  29. package/dist/product/UsageMeter.js +45 -0
  30. package/dist/product/UsageMeter.js.map +1 -0
  31. package/dist/product/index.cjs +6 -0
  32. package/dist/product/index.d.ts +4 -0
  33. package/dist/product/index.d.ts.map +1 -1
  34. package/dist/product/index.js +6 -0
  35. package/dist/product/index.js.map +1 -1
  36. package/dist/product/limits.cjs +246 -0
  37. package/dist/product/limits.d.ts +113 -0
  38. package/dist/product/limits.d.ts.map +1 -0
  39. package/dist/product/limits.js +233 -0
  40. package/dist/product/limits.js.map +1 -0
  41. package/dist/product/pure.cjs +17 -0
  42. package/dist/product/pure.d.ts +1 -0
  43. package/dist/product/pure.d.ts.map +1 -1
  44. package/dist/product/pure.js +3 -0
  45. package/dist/product/pure.js.map +1 -1
  46. package/dist/product/useLimits.cjs +124 -0
  47. package/dist/product/useLimits.d.ts +27 -0
  48. package/dist/product/useLimits.d.ts.map +1 -0
  49. package/dist/product/useLimits.js +120 -0
  50. package/dist/product/useLimits.js.map +1 -0
  51. package/dist/styles/motion.css +2 -160
  52. package/dist/styles.css +39 -337
  53. package/dist/theme.css +20 -177
  54. package/package.json +2 -2
package/dist/theme.css CHANGED
@@ -1152,34 +1152,35 @@
1152
1152
  ::selection{background:var(--selection);color:var(--text-primary)}
1153
1153
 
1154
1154
  /* ——— the scrollbar ———
1155
- The single largest piece of UNSTYLED chrome left on a dark surface: a
1156
- default 15px light-grey scrollbar down the side of a #0a0a0a panel is the
1157
- one element on the page that did not get the memo, and it is visible on
1158
- every scrolling surface in the product. 6px, no track, thumb on the same
1159
- hairline ladder as everything else. Both syntaxes ship because they are
1160
- disjoint — `scrollbar-*` is Firefox and the `::-webkit-*` pseudos are
1161
- Chromium/Safari; neither engine reads the other.
1155
+ 6px, no track, no stepper buttons, the thumb on the same hairline ladder as
1156
+ everything else. ONE treatment per engine. Chromium 121+ reads the standard
1157
+ `scrollbar-color`/`scrollbar-width` as well as the `::-webkit-*` pseudos,
1158
+ and an element with either standard property set ignores its pseudos —
1159
+ `scrollbar-color` inherits, so stated on html it gives every scroller the
1160
+ native bar, which on Linux/GTK draws a boxed arrow at each end. So the
1161
+ standard pair goes only to an engine without the pseudos (Firefox), and the
1162
+ pseudos serve the rest. Check 1e holds that.
1162
1163
  The thumb is a --white-* rung, so it does not invert; the `.light`
1163
1164
  restatements sit here rather than in colors.css because a scrollbar is an
1164
1165
  element default and this file is where element defaults live. Everything
1165
1166
  stays INSIDE the layer — an unlayered rule here would outrank an app's own
1166
1167
  utilities, which is the defect check 1c exists to catch. */
1167
- :where(html){scrollbar-color:var(--white-15) transparent;scrollbar-width:thin}
1168
- .light, :root.t_light, .t_light{scrollbar-color:rgb(0 0 0 / .18) transparent}
1168
+ @supports not selector(::-webkit-scrollbar){
1169
+ :where(html){scrollbar-color:var(--white-15) transparent;scrollbar-width:thin}
1170
+ .light, :root.t_light, .t_light{scrollbar-color:rgb(0 0 0 / .18) transparent}
1171
+ }
1169
1172
  :where(*)::-webkit-scrollbar{width:6px;height:6px}
1170
1173
  :where(*)::-webkit-scrollbar-track{background:transparent}
1171
1174
  :where(*)::-webkit-scrollbar-thumb{background:var(--white-15);border-radius:var(--radius-full)}
1172
1175
  :where(*)::-webkit-scrollbar-thumb:hover{background:var(--white-30)}
1173
1176
  :where(*)::-webkit-scrollbar-corner{background:transparent}
1174
- /* The stepper arrows, and they are a LINUX defect specifically. Chromium on
1175
- macOS draws no buttons, so styling the track and thumb looks finished there
1176
- and ships a classic GTK scrollbar — a boxed arrow at each end of every
1177
- scroller, on both axes — to everyone on Ubuntu. Styling the other pseudos
1178
- does not suppress them; only this does. Zero width AND height because the
1179
- horizontal and vertical bars each read one of them. */
1177
+ /* The steppers. Styling the other pseudos does not remove them; only this
1178
+ does. Zero width AND height because each axis reads one of them. */
1180
1179
  :where(*)::-webkit-scrollbar-button{display:none;width:0;height:0}
1181
- .light :where(*)::-webkit-scrollbar-thumb{background:rgb(0 0 0 / .18)}
1182
- .light :where(*)::-webkit-scrollbar-thumb:hover{background:rgb(0 0 0 / .32)}
1180
+ /* `.light` itself as well as its subtree: with the theme class on <html>,
1181
+ html's own pseudos draw the page's scrollbar. */
1182
+ .light::-webkit-scrollbar-thumb,.light :where(*)::-webkit-scrollbar-thumb{background:rgb(0 0 0 / .18)}
1183
+ .light::-webkit-scrollbar-thumb:hover,.light :where(*)::-webkit-scrollbar-thumb:hover{background:rgb(0 0 0 / .32)}
1183
1184
  }
1184
1185
 
1185
1186
  /**
@@ -2040,166 +2041,8 @@
2040
2041
  }
2041
2042
 
2042
2043
 
2043
- /* ─────────────────────────────────────────────────────────────────────────────
2044
- Scrollbars, on the surfaces this package scrolls.
2045
-
2046
- Left to the platform this is not neutral: Linux/GTK Chrome draws a wide track
2047
- with STEPPER ARROWS at both ends, so a dark product grows two grey buttons per
2048
- scroll region. Windows draws a wide light track. macOS overlays a thin one,
2049
- which is the behaviour the other two should have had.
2050
-
2051
- THE TWO HALVES MUST NOT BE DECLARED TOGETHER, and that is the whole subtlety.
2052
- Chromium supports both the standard properties and the `::-webkit-scrollbar`
2053
- pseudo-elements — but the moment `scrollbar-width` or `scrollbar-color` is
2054
- anything other than `auto`, it takes the standard path and DISCARDS the entire
2055
- webkit block. Shipping both is how 8.1.19 removed nothing: measured headed on
2056
- Linux, as-shipped gave a 10px gutter with arrows, while the authored webkit
2057
- rule alone gives 8px with none. Isolated: webkit-only 8px no arrows;
2058
- standard-only 10px arrows; both together 10px arrows.
2059
-
2060
- Neither half is redundant, so neither can simply be deleted — Firefox
2061
- implements ONLY the standard properties, Safari ONLY the webkit ones. They are
2062
- separated by engine instead: the webkit block applies wherever the selector is
2063
- understood, and the standard properties apply only where it is not.
2064
-
2065
- And it is invisible headless. Chromium's headless shell paints OVERLAY
2066
- scrollbars, so nothing is drawn, `offsetWidth - clientWidth` is 0 on a blank
2067
- page, and `getComputedStyle(el, '::-webkit-scrollbar-button').display` happily
2068
- reports `none` for a rule that never ran. This must be checked headed.
2069
- ───────────────────────────────────────────────────────────────────────────── */
2070
-
2071
- /* Firefox and anything else with no webkit pseudo-elements. */
2072
- @supports not selector(::-webkit-scrollbar) {
2073
- :where(
2074
- [data-slot='fill'],
2075
- [data-slot='thread'],
2076
- [data-slot='sources-strip'],
2077
- [data-slot='sidebar-scroll'],
2078
- [data-slot='scroll-area-viewport'],
2079
- [data-slot='textarea'],
2080
- [data-slot='composer-field']
2081
- ) {
2082
- scrollbar-width: thin;
2083
- scrollbar-color: rgb(255 255 255 / 0.18) transparent;
2084
- }
2085
- .t_light :where(
2086
- [data-slot='fill'],
2087
- [data-slot='thread'],
2088
- [data-slot='sources-strip'],
2089
- [data-slot='sidebar-scroll'],
2090
- [data-slot='scroll-area-viewport'],
2091
- [data-slot='textarea'],
2092
- [data-slot='composer-field']
2093
- ) { scrollbar-color: rgb(0 0 0 / 0.20) transparent; }
2094
- }
2095
-
2096
- /* Chromium and Safari.
2097
- The first rule is the load-bearing one and it is a RESET, not a style.
2098
- @hanzo/design sets `scrollbar-color` and `scrollbar-width` on `:where(html)`
2099
- (theme.css), and both INHERIT — so every element in the document already
2100
- carries a non-`auto` value, Chromium takes the standard path, and the whole
2101
- webkit block below is discarded before it is read. Nothing declared here can
2102
- win until the inherited value is put back to `auto` on the element itself.
2103
- That is why the arrows survived 8.1.19: the competing declaration was one
2104
- level up and inherited, not a rule anyone would find in this file. */
2105
- @supports selector(::-webkit-scrollbar) {
2106
- :where(
2107
- [data-slot='fill'],
2108
- [data-slot='thread'],
2109
- [data-slot='sources-strip'],
2110
- [data-slot='sidebar-scroll'],
2111
- [data-slot='scroll-area-viewport'],
2112
- [data-slot='textarea'],
2113
- [data-slot='composer-field']
2114
- ) {
2115
- scrollbar-width: auto;
2116
- scrollbar-color: auto;
2117
- }
2118
-
2119
- :where(
2120
- [data-slot='fill'],
2121
- [data-slot='thread'],
2122
- [data-slot='sources-strip'],
2123
- [data-slot='sidebar-scroll'],
2124
- [data-slot='scroll-area-viewport'],
2125
- [data-slot='textarea'],
2126
- [data-slot='composer-field']
2127
- )::-webkit-scrollbar { width: 8px; height: 8px; }
2128
-
2129
- /* The steppers. This is the rule that removes the arrows, and the reason the
2130
- two halves had to be separated at all. */
2131
- :where(
2132
- [data-slot='fill'],
2133
- [data-slot='thread'],
2134
- [data-slot='sources-strip'],
2135
- [data-slot='sidebar-scroll'],
2136
- [data-slot='scroll-area-viewport'],
2137
- [data-slot='textarea'],
2138
- [data-slot='composer-field']
2139
- )::-webkit-scrollbar-button { display: none; width: 0; height: 0; }
2140
-
2141
- :where(
2142
- [data-slot='fill'],
2143
- [data-slot='thread'],
2144
- [data-slot='sources-strip'],
2145
- [data-slot='sidebar-scroll'],
2146
- [data-slot='scroll-area-viewport'],
2147
- [data-slot='textarea'],
2148
- [data-slot='composer-field']
2149
- )::-webkit-scrollbar-track { background: transparent; }
2150
-
2151
- :where(
2152
- [data-slot='fill'],
2153
- [data-slot='thread'],
2154
- [data-slot='sources-strip'],
2155
- [data-slot='sidebar-scroll'],
2156
- [data-slot='scroll-area-viewport'],
2157
- [data-slot='textarea'],
2158
- [data-slot='composer-field']
2159
- )::-webkit-scrollbar-thumb {
2160
- background: rgb(255 255 255 / 0.18);
2161
- border-radius: 999px;
2162
- /* A transparent border with background-clip keeps the thumb off the very
2163
- edge without a track colour doing it, so it reads as an overlay rather
2164
- than a channel. */
2165
- border: 2px solid transparent;
2166
- background-clip: content-box;
2167
- }
2168
- :where(
2169
- [data-slot='fill'],
2170
- [data-slot='thread'],
2171
- [data-slot='sources-strip'],
2172
- [data-slot='sidebar-scroll'],
2173
- [data-slot='scroll-area-viewport'],
2174
- [data-slot='textarea'],
2175
- [data-slot='composer-field']
2176
- )::-webkit-scrollbar-thumb:hover {
2177
- background: rgb(255 255 255 / 0.30);
2178
- background-clip: content-box;
2179
- }
2180
- :where(
2181
- [data-slot='fill'],
2182
- [data-slot='thread'],
2183
- [data-slot='sources-strip'],
2184
- [data-slot='sidebar-scroll'],
2185
- [data-slot='scroll-area-viewport'],
2186
- [data-slot='textarea'],
2187
- [data-slot='composer-field']
2188
- )::-webkit-scrollbar-corner { background: transparent; }
2189
-
2190
- .t_light :where(
2191
- [data-slot='fill'],
2192
- [data-slot='thread'],
2193
- [data-slot='sources-strip'],
2194
- [data-slot='sidebar-scroll'],
2195
- [data-slot='scroll-area-viewport'],
2196
- [data-slot='textarea'],
2197
- [data-slot='composer-field']
2198
- )::-webkit-scrollbar-thumb {
2199
- background: rgb(0 0 0 / 0.20);
2200
- background-clip: content-box;
2201
- }
2202
- }
2044
+ /* Scrollbars are @hanzo/design's (base.css, ≥ 0.5.34): a thin thumb on every
2045
+ scroller and no stepper buttons, stated once for the page. */
2203
2046
 
2204
2047
  /* A carousel scrolls but shows no bar: the arrows and the snap already say it
2205
2048
  scrolls, and a bar appearing mid-drag shifts the slides under the pointer.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.27.53",
3
+ "version": "8.27.55",
4
4
  "type": "module",
5
5
  "description": "Hanzo UI — the one canonical Hanzo component library, on @hanzo/gui + @hanzo/design. ONE substrate: every component renders through @hanzo/gui primitives, so the same import works on web, native (expo) and desktop (Tauri). Self-contained (theme.css), presentational, host-agnostic, clean-room.",
6
6
  "exports": {
@@ -305,7 +305,7 @@
305
305
  "dependencies": {
306
306
  "@hanzo/appearance": "0.2.7",
307
307
  "@hanzo/brand": "1.4.8",
308
- "@hanzo/design": "0.5.33",
308
+ "@hanzo/design": "0.5.34",
309
309
  "@hanzo/font": "1.9.2",
310
310
  "@hanzo/logo": "1.0.26",
311
311
  "@hanzo/products": "0.2.6",