@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.
- package/dist/backends/gui/progress.cjs +2 -2
- package/dist/backends/gui/progress.d.ts +3 -1
- package/dist/backends/gui/progress.d.ts.map +1 -1
- package/dist/backends/gui/progress.js +2 -2
- package/dist/backends/gui/progress.js.map +1 -1
- package/dist/gallery.cjs +17 -1
- package/dist/gallery.d.ts.map +1 -1
- package/dist/gallery.html +43 -341
- package/dist/gallery.js +17 -1
- package/dist/gallery.js.map +1 -1
- package/dist/marketing/rows.cjs +5 -11
- package/dist/marketing/rows.d.ts +2 -1
- package/dist/marketing/rows.d.ts.map +1 -1
- package/dist/marketing/rows.js +5 -11
- package/dist/marketing/rows.js.map +1 -1
- package/dist/models/ModelSelector.cjs +7 -3
- package/dist/models/ModelSelector.d.ts +9 -1
- package/dist/models/ModelSelector.d.ts.map +1 -1
- package/dist/models/ModelSelector.js +7 -3
- package/dist/models/ModelSelector.js.map +1 -1
- package/dist/product/LimitedBanner.cjs +22 -0
- package/dist/product/LimitedBanner.d.ts +10 -0
- package/dist/product/LimitedBanner.d.ts.map +1 -0
- package/dist/product/LimitedBanner.js +20 -0
- package/dist/product/LimitedBanner.js.map +1 -0
- package/dist/product/UsageMeter.cjs +48 -0
- package/dist/product/UsageMeter.d.ts +18 -0
- package/dist/product/UsageMeter.d.ts.map +1 -0
- package/dist/product/UsageMeter.js +45 -0
- package/dist/product/UsageMeter.js.map +1 -0
- package/dist/product/index.cjs +6 -0
- package/dist/product/index.d.ts +4 -0
- package/dist/product/index.d.ts.map +1 -1
- package/dist/product/index.js +6 -0
- package/dist/product/index.js.map +1 -1
- package/dist/product/limits.cjs +246 -0
- package/dist/product/limits.d.ts +113 -0
- package/dist/product/limits.d.ts.map +1 -0
- package/dist/product/limits.js +233 -0
- package/dist/product/limits.js.map +1 -0
- package/dist/product/pure.cjs +17 -0
- package/dist/product/pure.d.ts +1 -0
- package/dist/product/pure.d.ts.map +1 -1
- package/dist/product/pure.js +3 -0
- package/dist/product/pure.js.map +1 -1
- package/dist/product/useLimits.cjs +124 -0
- package/dist/product/useLimits.d.ts +27 -0
- package/dist/product/useLimits.d.ts.map +1 -0
- package/dist/product/useLimits.js +120 -0
- package/dist/product/useLimits.js.map +1 -0
- package/dist/styles/motion.css +2 -160
- package/dist/styles.css +39 -337
- package/dist/theme.css +20 -177
- 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
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
|
|
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
|
-
|
|
1168
|
-
|
|
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
|
|
1175
|
-
|
|
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
|
-
|
|
1182
|
-
|
|
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
|
-
|
|
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.
|
|
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.
|
|
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",
|