@hanzo/ui 8.2.0 → 8.2.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.
@@ -9,18 +9,20 @@ const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  * The shape is always the same: something pinned at the top, something pinned at
10
10
  * the bottom, and a middle that takes whatever is left and scrolls. Chat writes
11
11
  * it, the console writes it, every workbench pane writes it. Written by hand it
12
- * is two declarations, and BOTH have to be right or the failure is silent:
12
+ * is `flex: 1` for the slack plus something that says what to do with the
13
+ * overflow, and the second half is the one that gets left out. Measured in this
14
+ * package: `Thread` rendered 976px of turns in a 332px box and drew every one of
15
+ * them across the composer, because a container with `overflow: visible` never
16
+ * scrolls no matter how full it gets.
13
17
  *
14
- * `flex: 1` alone gives the middle the slack…
15
- * `minHeight: 0` is what lets it actually shrink to take it.
16
- *
17
- * Without the second, a flex item's automatic minimum is its CONTENT, so the
18
- * middle refuses to go below its natural height, grows the shell instead, and —
19
- * because a scroll container that never overflows never scrolls — paints its
20
- * content straight over whatever follows. Measured in this package: `Thread`
21
- * rendered 976px of turns in a 332px box and drew every one of them across the
22
- * composer. 37 files here set `flex={1}`; exactly one had ever written the
23
- * second declaration, and only after that bug was found.
18
+ * The folklore names `minHeight: 0` as that second half — a flex item's
19
+ * automatic minimum is its content, so the item refuses to shrink and grows the
20
+ * shell instead. True in general, and already handled here: rnw's `View` base and
21
+ * gui's own stack base both set `min-height: 0`, measured on the rendered
22
+ * element. So on web it is the DECLARED OVERFLOW that contains a shell, and
23
+ * `scripts/contain.mjs` keeps one frame of each as a control to say so —
24
+ * overflow without `minH` contains, `minH` without overflow escapes by 310px.
25
+ * Do not go adding `minH={0}` to flex sites; it changes nothing here.
24
26
  *
25
27
  * So the rule stops being a rule. `Fill` IS the middle, with both halves and the
26
28
  * clip built in, and a caller cannot forget a thing it does not have to write.
@@ -57,10 +59,17 @@ exports.Screen = Screen;
57
59
  /**
58
60
  * The middle. Takes the slack, and can give it back.
59
61
  *
60
- * `flexBasis: 0` with `minHeight: 0` is the pair that makes "takes the slack"
61
- * true in both directions: grow into a bigger shell, shrink inside a smaller
62
- * one. Siblings need nothing — a bar keeps its natural height because it never
63
- * asked for slack.
62
+ * `flexBasis: 0` is what makes "takes the slack" true in both directions: grow
63
+ * into a bigger shell, shrink inside a smaller one. Siblings need nothing — a bar
64
+ * keeps its natural height because it never asked for slack. `overflowY` is the
65
+ * half that actually contains the result, and `minH` restates a floor the bases
66
+ * already set, kept because it costs nothing and this is where a reader looks
67
+ * for it.
68
+ *
69
+ * On web `scroll` becomes `overflow-y: auto` on a styled stack. A `ScrollView`
70
+ * is the other way to get a scrolling middle and the two are not
71
+ * interchangeable off the web — nothing here measures native, so nothing here
72
+ * claims it.
64
73
  */
65
74
  const Fill = ({ children, scroll = true, ...props }) => ((0, jsx_runtime_1.jsx)(gui_1.YStack, { ...(0, slot_1.slot)('fill'), flex: 1, flexBasis: 0, minH: 0, width: "100%", overflowY: scroll ? 'auto' : 'hidden', ...props, children: children }));
66
75
  exports.Fill = Fill;
@@ -4,18 +4,20 @@
4
4
  * The shape is always the same: something pinned at the top, something pinned at
5
5
  * the bottom, and a middle that takes whatever is left and scrolls. Chat writes
6
6
  * it, the console writes it, every workbench pane writes it. Written by hand it
7
- * is two declarations, and BOTH have to be right or the failure is silent:
7
+ * is `flex: 1` for the slack plus something that says what to do with the
8
+ * overflow, and the second half is the one that gets left out. Measured in this
9
+ * package: `Thread` rendered 976px of turns in a 332px box and drew every one of
10
+ * them across the composer, because a container with `overflow: visible` never
11
+ * scrolls no matter how full it gets.
8
12
  *
9
- * `flex: 1` alone gives the middle the slack…
10
- * `minHeight: 0` is what lets it actually shrink to take it.
11
- *
12
- * Without the second, a flex item's automatic minimum is its CONTENT, so the
13
- * middle refuses to go below its natural height, grows the shell instead, and —
14
- * because a scroll container that never overflows never scrolls — paints its
15
- * content straight over whatever follows. Measured in this package: `Thread`
16
- * rendered 976px of turns in a 332px box and drew every one of them across the
17
- * composer. 37 files here set `flex={1}`; exactly one had ever written the
18
- * second declaration, and only after that bug was found.
13
+ * The folklore names `minHeight: 0` as that second half — a flex item's
14
+ * automatic minimum is its content, so the item refuses to shrink and grows the
15
+ * shell instead. True in general, and already handled here: rnw's `View` base and
16
+ * gui's own stack base both set `min-height: 0`, measured on the rendered
17
+ * element. So on web it is the DECLARED OVERFLOW that contains a shell, and
18
+ * `scripts/contain.mjs` keeps one frame of each as a control to say so —
19
+ * overflow without `minH` contains, `minH` without overflow escapes by 310px.
20
+ * Do not go adding `minH={0}` to flex sites; it changes nothing here.
19
21
  *
20
22
  * So the rule stops being a rule. `Fill` IS the middle, with both halves and the
21
23
  * clip built in, and a caller cannot forget a thing it does not have to write.
@@ -49,10 +51,17 @@ export interface FillProps extends YStackProps {
49
51
  /**
50
52
  * The middle. Takes the slack, and can give it back.
51
53
  *
52
- * `flexBasis: 0` with `minHeight: 0` is the pair that makes "takes the slack"
53
- * true in both directions: grow into a bigger shell, shrink inside a smaller
54
- * one. Siblings need nothing — a bar keeps its natural height because it never
55
- * asked for slack.
54
+ * `flexBasis: 0` is what makes "takes the slack" true in both directions: grow
55
+ * into a bigger shell, shrink inside a smaller one. Siblings need nothing — a bar
56
+ * keeps its natural height because it never asked for slack. `overflowY` is the
57
+ * half that actually contains the result, and `minH` restates a floor the bases
58
+ * already set, kept because it costs nothing and this is where a reader looks
59
+ * for it.
60
+ *
61
+ * On web `scroll` becomes `overflow-y: auto` on a styled stack. A `ScrollView`
62
+ * is the other way to get a scrolling middle and the two are not
63
+ * interchangeable off the web — nothing here measures native, so nothing here
64
+ * claims it.
56
65
  */
57
66
  declare const Fill: ({ children, scroll, ...props }: FillProps) => import("react/jsx-runtime").JSX.Element;
58
67
  export { Screen, Fill };
@@ -1 +1 @@
1
- {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/screen.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAGrD,MAAM,WAAW,WAAY,SAAQ,WAAW;CAAG;AAEnD;;;;GAIG;AACH,QAAA,MAAM,MAAM,GAAI,wBAAwB,WAAW,4CAkBlD,CAAA;AAED,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;GAOG;AACH,QAAA,MAAM,IAAI,GAAI,gCAAuC,SAAS,4CAY7D,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/screen.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAU,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAGrD,MAAM,WAAW,WAAY,SAAQ,WAAW;CAAG;AAEnD;;;;GAIG;AACH,QAAA,MAAM,MAAM,GAAI,wBAAwB,WAAW,4CAkBlD,CAAA;AAED,MAAM,WAAW,SAAU,SAAQ,WAAW;IAC5C,6EAA6E;IAC7E,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;;;;;;;GAcG;AACH,QAAA,MAAM,IAAI,GAAI,gCAAuC,SAAS,4CAY7D,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
@@ -6,18 +6,20 @@ import { jsx as _jsx } from "react/jsx-runtime";
6
6
  * The shape is always the same: something pinned at the top, something pinned at
7
7
  * the bottom, and a middle that takes whatever is left and scrolls. Chat writes
8
8
  * it, the console writes it, every workbench pane writes it. Written by hand it
9
- * is two declarations, and BOTH have to be right or the failure is silent:
9
+ * is `flex: 1` for the slack plus something that says what to do with the
10
+ * overflow, and the second half is the one that gets left out. Measured in this
11
+ * package: `Thread` rendered 976px of turns in a 332px box and drew every one of
12
+ * them across the composer, because a container with `overflow: visible` never
13
+ * scrolls no matter how full it gets.
10
14
  *
11
- * `flex: 1` alone gives the middle the slack…
12
- * `minHeight: 0` is what lets it actually shrink to take it.
13
- *
14
- * Without the second, a flex item's automatic minimum is its CONTENT, so the
15
- * middle refuses to go below its natural height, grows the shell instead, and —
16
- * because a scroll container that never overflows never scrolls — paints its
17
- * content straight over whatever follows. Measured in this package: `Thread`
18
- * rendered 976px of turns in a 332px box and drew every one of them across the
19
- * composer. 37 files here set `flex={1}`; exactly one had ever written the
20
- * second declaration, and only after that bug was found.
15
+ * The folklore names `minHeight: 0` as that second half — a flex item's
16
+ * automatic minimum is its content, so the item refuses to shrink and grows the
17
+ * shell instead. True in general, and already handled here: rnw's `View` base and
18
+ * gui's own stack base both set `min-height: 0`, measured on the rendered
19
+ * element. So on web it is the DECLARED OVERFLOW that contains a shell, and
20
+ * `scripts/contain.mjs` keeps one frame of each as a control to say so —
21
+ * overflow without `minH` contains, `minH` without overflow escapes by 310px.
22
+ * Do not go adding `minH={0}` to flex sites; it changes nothing here.
21
23
  *
22
24
  * So the rule stops being a rule. `Fill` IS the middle, with both halves and the
23
25
  * clip built in, and a caller cannot forget a thing it does not have to write.
@@ -53,10 +55,17 @@ const Screen = ({ children, ...props }) => (_jsx(YStack, { ...slot('screen'),
53
55
  /**
54
56
  * The middle. Takes the slack, and can give it back.
55
57
  *
56
- * `flexBasis: 0` with `minHeight: 0` is the pair that makes "takes the slack"
57
- * true in both directions: grow into a bigger shell, shrink inside a smaller
58
- * one. Siblings need nothing — a bar keeps its natural height because it never
59
- * asked for slack.
58
+ * `flexBasis: 0` is what makes "takes the slack" true in both directions: grow
59
+ * into a bigger shell, shrink inside a smaller one. Siblings need nothing — a bar
60
+ * keeps its natural height because it never asked for slack. `overflowY` is the
61
+ * half that actually contains the result, and `minH` restates a floor the bases
62
+ * already set, kept because it costs nothing and this is where a reader looks
63
+ * for it.
64
+ *
65
+ * On web `scroll` becomes `overflow-y: auto` on a styled stack. A `ScrollView`
66
+ * is the other way to get a scrolling middle and the two are not
67
+ * interchangeable off the web — nothing here measures native, so nothing here
68
+ * claims it.
60
69
  */
61
70
  const Fill = ({ children, scroll = true, ...props }) => (_jsx(YStack, { ...slot('fill'), flex: 1, flexBasis: 0, minH: 0, width: "100%", overflowY: scroll ? 'auto' : 'hidden', ...props, children: children }));
62
71
  export { Screen, Fill };
@@ -1 +1 @@
1
- {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../src/backends/gui/screen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,OAAO,EAAE,MAAM,EAAoB,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAI7B;;;;GAIG;AACH,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAe,EAAE,EAAE,CAAC,CACtD,KAAC,MAAM,OACD,IAAI,CAAC,QAAQ,CAAC;IAClB,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,EAAE,CAAC,EACP,SAAS,EAAC,MAAM,EAChB,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAC,QAAQ,KACb,KAAK,YAER,QAAQ,GACF,CACV,CAAA;AAOD;;;;;;;GAOG;AACH,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,EAAa,EAAE,EAAE,CAAC,CACjE,KAAC,MAAM,OACD,IAAI,CAAC,MAAM,CAAC,EAChB,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KACjC,KAAK,YAER,QAAQ,GACF,CACV,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
1
+ {"version":3,"file":"screen.js","sourceRoot":"","sources":["../../../src/backends/gui/screen.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,OAAO,EAAE,MAAM,EAAoB,MAAM,YAAY,CAAA;AACrD,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAI7B;;;;GAIG;AACH,MAAM,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAe,EAAE,EAAE,CAAC,CACtD,KAAC,MAAM,OACD,IAAI,CAAC,QAAQ,CAAC;IAClB,yEAAyE;IACzE,6EAA6E;IAC7E,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,8EAA8E;IAC9E,IAAI,EAAE,CAAC,EACP,SAAS,EAAC,MAAM,EAChB,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,MAAM,EACZ,QAAQ,EAAC,QAAQ,KACb,KAAK,YAER,QAAQ,GACF,CACV,CAAA;AAOD;;;;;;;;;;;;;;GAcG;AACH,MAAM,IAAI,GAAG,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,EAAa,EAAE,EAAE,CAAC,CACjE,KAAC,MAAM,OACD,IAAI,CAAC,MAAM,CAAC,EAChB,IAAI,EAAE,CAAC,EACP,SAAS,EAAE,CAAC,EACZ,IAAI,EAAE,CAAC,EACP,KAAK,EAAC,MAAM,EACZ,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,KACjC,KAAK,YAER,QAAQ,GACF,CACV,CAAA;AAED,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAA"}
package/dist/gallery.html CHANGED
@@ -1,4 +1,4 @@
1
- <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.2.0</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
1
+ <!doctype html><html lang="en" class="t_dark"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>@hanzo/ui 8.2.2</title><style>/* @hanzo/ui — generated by scripts/gen-css.mjs. Do not edit. */
2
2
  :root { --hanzo-ui-styles: 1; }
3
3
  /* Hanzo Design System — the entry point. Import THIS one file.
4
4
  *
@@ -1686,6 +1686,180 @@
1686
1686
  }
1687
1687
  }
1688
1688
 
1689
+ [stylesheet-group="0"]{}
1690
+ body{margin:0;}
1691
+ button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
1692
+ html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}
1693
+ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}
1694
+ [stylesheet-group="1"]{}
1695
+ .css-accessibilityImage-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;}
1696
+ .css-text-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;}
1697
+ .css-textHasAncestor-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;}
1698
+ .css-textinput-11aywtz{-moz-appearance:textfield;-webkit-appearance:none;background-color:rgba(0,0,0,0.00);border-bottom-left-radius:0px;border-bottom-right-radius:0px;border-top-left-radius:0px;border-top-right-radius:0px;border:0 solid black;box-sizing:border-box;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;margin:0px;padding:0px;resize:none;}
1699
+ .css-view-g5y9jx{align-content:flex-start;align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;}
1700
+ [stylesheet-group="2"]{}
1701
+ .r-borderColor-1awa8pu{border-bottom-color:rgba(101,119,134,1.00);border-left-color:rgba(101,119,134,1.00);border-right-color:rgba(101,119,134,1.00);border-top-color:rgba(101,119,134,1.00);}
1702
+ .r-borderColor-1d4xg89{border-bottom-color:rgba(170,184,194,1.00);border-left-color:rgba(170,184,194,1.00);border-right-color:rgba(170,184,194,1.00);border-top-color:rgba(170,184,194,1.00);}
1703
+ .r-borderColor-1jyn79y{border-bottom-color:rgba(0,150,136,1.00);border-left-color:rgba(0,150,136,1.00);border-right-color:rgba(0,150,136,1.00);border-top-color:rgba(0,150,136,1.00);}
1704
+ .r-borderColor-4a18lf{border-bottom-color:rgba(255,0,0,1.00);border-left-color:rgba(255,0,0,1.00);border-right-color:rgba(255,0,0,1.00);border-top-color:rgba(255,0,0,1.00);}
1705
+ .r-borderColor-60ke3l{border-bottom-color:rgba(0,128,0,1.00);border-left-color:rgba(0,128,0,1.00);border-right-color:rgba(0,128,0,1.00);border-top-color:rgba(0,128,0,1.00);}
1706
+ .r-borderColor-9x6qib{border-bottom-color:rgba(204,214,221,1.00);border-left-color:rgba(204,214,221,1.00);border-right-color:rgba(204,214,221,1.00);border-top-color:rgba(204,214,221,1.00);}
1707
+ .r-borderColor-fx7oqy{border-bottom-color:rgba(0,0,255,1.00);border-left-color:rgba(0,0,255,1.00);border-right-color:rgba(0,0,255,1.00);border-top-color:rgba(0,0,255,1.00);}
1708
+ .r-borderRadius-1j16mh1{border-bottom-left-radius:100%;border-bottom-right-radius:100%;border-top-left-radius:100%;border-top-right-radius:100%;}
1709
+ .r-borderRadius-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;}
1710
+ .r-borderStyle-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;}
1711
+ .r-borderWidth-d045u9{border-bottom-width:2px;border-left-width:2px;border-right-width:2px;border-top-width:2px;}
1712
+ .r-borderWidth-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;}
1713
+ .r-display-krxsd3{display:-webkit-box;}
1714
+ .r-display-xoduu5{display:inline-flex;}
1715
+ .r-flex-13awgt0{flex:1;}
1716
+ .r-margin-crgep1{margin:0px;}
1717
+ .r-margin-ywje51{margin:auto;}
1718
+ .r-overflow-1qsk4np{overflow-x:clip;overflow-y:clip;}
1719
+ .r-overflow-1udh08x{overflow-x:hidden;overflow-y:hidden;}
1720
+ .r-padding-edyy15{padding:8px;}
1721
+ .r-padding-t60dpp{padding:0px;}
1722
+ [stylesheet-group="2.2"]{}
1723
+ .r-insetInlineStart-10s2tm5{left:0%;}
1724
+ .r-insetInlineStart-16o8guy{right:100%;}
1725
+ .r-insetInlineStart-dqe1q{right:0%;}
1726
+ .r-insetInlineStart-rci37q{left:100%;}
1727
+ [stylesheet-group="3"]{}
1728
+ .r-WebkitBoxOrient-8akbws{-webkit-box-orient:vertical;}
1729
+ .r-WebkitOverflowScrolling-150rngu{-webkit-overflow-scrolling:touch;}
1730
+ .r-alignItems-1awozwy{align-items:center;}
1731
+ .r-alignSelf-k200y{align-self:flex-start;}
1732
+ .r-animationDuration-17bb2tj{animation-duration:0.75s;}
1733
+ .r-animationDuration-1ay1djp{animation-duration:1s;}
1734
+ .r-animationDuration-9daxd3{animation-duration:250ms;}
1735
+ .r-animationIterationCount-1muvv40{animation-iteration-count:infinite;}
1736
+ .r-animationKeyframes-13aq9py{animation-name:r-animation-1iq689l;}
1737
+ .r-animationKeyframes-1qulhi1{animation-name:r-animation-1pzkwqh;}
1738
+ .r-animationKeyframes-1yef0xd{animation-name:r-animation-11cv4x;}
1739
+ .r-animationKeyframes-ebwn4k{animation-name:r-animation-q67da2;}
1740
+ .r-animationKeyframes-g3mlsw{animation-name:r-animation-t2lo5v;}
1741
+ .r-animationKeyframes-xx3c9p{animation-name:r-animation-imtty0;}
1742
+ .r-animationPlayState-1abnn5w{animation-play-state:paused;}
1743
+ .r-animationTimingFunction-1ldzwu0{animation-timing-function:linear;}
1744
+ .r-animationTimingFunction-leqjx2{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);}
1745
+ .r-animationTimingFunction-s62m2j{animation-timing-function:cubic-bezier(0.47, 0, 0.745, 0.715);}
1746
+ .r-appearance-30o5oe{-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none;}
1747
+ .r-backgroundColor-11mpjr4{background-color:rgba(223,223,223,1.00);}
1748
+ .r-backgroundColor-11udlyb{background-color:rgba(0,150,136,1.00);}
1749
+ .r-backgroundColor-14lw9ot{background-color:rgba(255,255,255,1.00);}
1750
+ .r-backgroundColor-14sbq61{background-color:rgba(33,150,243,1.00);}
1751
+ .r-backgroundColor-1niwhzg{background-color:rgba(0,0,0,0.00);}
1752
+ .r-backgroundColor-dkge59{background-color:rgba(170,184,194,1.00);}
1753
+ .r-backgroundColor-u92y06{background-color:rgba(255,165,0,1.00);}
1754
+ .r-backgroundImage-rs94m5{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");}
1755
+ .r-backgroundPosition-1mrlafo{background-position:0;}
1756
+ .r-backgroundPosition-vvn4in{background-position:center;}
1757
+ .r-backgroundRepeat-17leim2{background-repeat:repeat;}
1758
+ .r-backgroundRepeat-u6sd8q{background-repeat:no-repeat;}
1759
+ .r-backgroundSize-1sxrcry{background-size:auto;}
1760
+ .r-backgroundSize-4gszlv{background-size:cover;}
1761
+ .r-backgroundSize-ehq7j7{background-size:contain;}
1762
+ .r-backgroundSize-x3cy2q{background-size:100% 100%;}
1763
+ .r-bottom-1p0dtai{bottom:0px;}
1764
+ .r-boxShadow-1ewcgjf{box-shadow:0px 1px 3px rgba(0,0,0,0.5);}
1765
+ .r-caretColor-van48c{caret-color:transparent;}
1766
+ .r-color-c68hjy{color:rgba(161,161,161,1.00);}
1767
+ .r-color-jwli3a{color:rgba(255,255,255,1.00);}
1768
+ .r-cursor-1ei5mc7{cursor:inherit;}
1769
+ .r-cursor-1loqt21{cursor:pointer;}
1770
+ .r-cursor-7q8q6z{cursor:default;}
1771
+ .r-flexBasis-1mlwlqe{flex-basis:auto;}
1772
+ .r-flexDirection-18u37iz{flex-direction:row;}
1773
+ .r-flexDirection-1d5kdc7{flex-direction:column-reverse;}
1774
+ .r-flexDirection-1euycsn{flex-direction:row-reverse;}
1775
+ .r-flexDirection-eqz5dr{flex-direction:column;}
1776
+ .r-flexGrow-16y2uox{flex-grow:1;}
1777
+ .r-flexShrink-1wbh5a2{flex-shrink:1;}
1778
+ .r-fontFamily-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
1779
+ .r-fontSize-7cikom{font-size:inherit;}
1780
+ .r-fontWeight-majxgm{font-weight:500;}
1781
+ .r-forcedColorAdjust-1c6unfx{forced-color-adjust:none;}
1782
+ .r-height-10ptun7{height:16px;}
1783
+ .r-height-1dernwh{height:70%;}
1784
+ .r-height-1pi2tsx{height:100%;}
1785
+ .r-height-1r8g8re{height:36px;}
1786
+ .r-height-4v7adb{height:5px;}
1787
+ .r-height-z80fyv{height:20px;}
1788
+ .r-justifyContent-1777fci{justify-content:center;}
1789
+ .r-left-1d2f490{left:0px;}
1790
+ .r-maxWidth-dnmrzs{max-width:100%;}
1791
+ .r-opacity-6dt33c{opacity:1;}
1792
+ .r-opacity-orgf3d{opacity:0;}
1793
+ .r-outlineStyle-1ny4l3l{outline-style:none;}
1794
+ .r-overflowX-11yh6sk{overflow-x:hidden;}
1795
+ .r-overflowX-lltvgl{overflow-x:auto;}
1796
+ .r-overflowY-1rnoaur{overflow-y:auto;}
1797
+ .r-overflowY-buy8e9{overflow-y:hidden;}
1798
+ .r-paddingBottom-97e31f{padding-bottom:env(safe-area-inset-bottom);}
1799
+ .r-paddingLeft-bv2aro{padding-left:env(safe-area-inset-left);}
1800
+ .r-paddingRight-hxflta{padding-right:env(safe-area-inset-right);}
1801
+ .r-paddingTop-10xqauy{padding-top:env(safe-area-inset-top);}
1802
+ .r-placeholderTextColor-6taxm2:-ms-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
1803
+ .r-placeholderTextColor-6taxm2::-moz-placeholder{color:var(--placeholderTextColor);opacity:1;}
1804
+ .r-placeholderTextColor-6taxm2::-webkit-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
1805
+ .r-placeholderTextColor-6taxm2::placeholder{color:var(--placeholderTextColor);opacity:1;}
1806
+ .r-pointerEvents-105ug2t{pointer-events:auto!important;}
1807
+ .r-pointerEvents-12vffkv>* {pointer-events:auto;}
1808
+ .r-pointerEvents-12vffkv{pointer-events:none!important;}
1809
+ .r-pointerEvents-633pao>* {pointer-events:none;}
1810
+ .r-pointerEvents-633pao{pointer-events:none!important;}
1811
+ .r-pointerEvents-ah5dr5>* {pointer-events:none;}
1812
+ .r-pointerEvents-ah5dr5{pointer-events:auto!important;}
1813
+ .r-position-1xcajam{position:fixed;}
1814
+ .r-position-gtdqiz{position:-webkit-sticky;position:sticky;}
1815
+ .r-position-u8s1d{position:absolute;}
1816
+ .r-right-zchlnj{right:0px;}
1817
+ .r-scrollSnapAlign-cpa5s6{scroll-snap-align:start;}
1818
+ .r-scrollSnapType-1ocf4r9{scroll-snap-type:y mandatory;}
1819
+ .r-scrollSnapType-mfh4gg{scroll-snap-type:x mandatory;}
1820
+ .r-scrollbarWidth-2eszeu::-webkit-scrollbar{display:none}
1821
+ .r-scrollbarWidth-2eszeu{scrollbar-width:none;}
1822
+ .r-textAlign-1ff274t{text-align:right;}
1823
+ .r-textAlign-fdjqy7{text-align:left;}
1824
+ .r-textAlign-q4m81j{text-align:center;}
1825
+ .r-textOverflow-1udbk01{text-overflow:ellipsis;}
1826
+ .r-textTransform-tsynxw{text-transform:uppercase;}
1827
+ .r-top-ipm5af{top:0px;}
1828
+ .r-touchAction-19z077z{touch-action:none;}
1829
+ .r-touchAction-1otgn73{touch-action:manipulation;}
1830
+ .r-transform-10v3vxq{transform:scaleX(-1);}
1831
+ .r-transform-173mzie{transform:scaleY(-1);}
1832
+ .r-transform-agouwx{transform:translateZ(0);}
1833
+ .r-transform-bi4vy9{transform:translateY(100%);}
1834
+ .r-transform-ghxds0{transform:translateY(0%);}
1835
+ .r-transitionDuration-13tjlyg{transition-duration:0.1s;}
1836
+ .r-transitionDuration-eafdt9{transition-duration:0.15s;}
1837
+ .r-transitionProperty-1i6wzkk{-moz-transition-property:opacity;-webkit-transition-property:opacity;transition-property:opacity;}
1838
+ .r-userSelect-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;}
1839
+ .r-userSelect-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;}
1840
+ .r-visibility-11j9u27{visibility:hidden;}
1841
+ .r-whiteSpace-3s2u2q{white-space:nowrap;}
1842
+ .r-width-13qz1uu{width:100%;}
1843
+ .r-width-19wmn03{width:20px;}
1844
+ .r-width-1acpoxo{width:36px;}
1845
+ .r-width-1janqcz{width:16px;}
1846
+ .r-wordWrap-1iln25a{word-wrap:normal;}
1847
+ .r-zIndex-1wyyakw{z-index:-1;}
1848
+ .r-zIndex-417010{z-index:0;}
1849
+ .r-zIndex-mhe3cw{z-index:10;}
1850
+ .r-zIndex-sfbmgh{z-index:9999;}
1851
+ @-webkit-keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
1852
+ @-webkit-keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
1853
+ @-webkit-keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
1854
+ @-webkit-keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
1855
+ @-webkit-keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
1856
+ @-webkit-keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}
1857
+ @keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
1858
+ @keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
1859
+ @keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
1860
+ @keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
1861
+ @keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
1862
+ @keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}
1689
1863
  /* @hanzo/ui motion primitives — the calm, restrained animation vocabulary the
1690
1864
  Hanzo surfaces share. One place defines the easing; components apply the class.
1691
1865
  `className` forwards to the underlying DOM node on web, so the browser
package/dist/styles.css CHANGED
@@ -1686,6 +1686,180 @@
1686
1686
  }
1687
1687
  }
1688
1688
 
1689
+ [stylesheet-group="0"]{}
1690
+ body{margin:0;}
1691
+ button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0;}
1692
+ html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0);}
1693
+ input::-webkit-search-cancel-button,input::-webkit-search-decoration,input::-webkit-search-results-button,input::-webkit-search-results-decoration{display:none;}
1694
+ [stylesheet-group="1"]{}
1695
+ .css-accessibilityImage-9pa8cd{bottom:0px;height:100%;left:0px;opacity:0;position:absolute;right:0px;top:0px;width:100%;z-index:-1;}
1696
+ .css-text-146c3p1{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:rgba(0,0,0,1.00);display:inline;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;list-style:none;margin:0px;padding:0px;position:relative;text-align:start;text-decoration:none;white-space:pre-wrap;word-wrap:break-word;}
1697
+ .css-textHasAncestor-1jxf684{background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;color:inherit;display:inline;font:inherit;list-style:none;margin:0px;padding:0px;position:relative;text-align:inherit;text-decoration:none;white-space:inherit;word-wrap:break-word;}
1698
+ .css-textinput-11aywtz{-moz-appearance:textfield;-webkit-appearance:none;background-color:rgba(0,0,0,0.00);border-bottom-left-radius:0px;border-bottom-right-radius:0px;border-top-left-radius:0px;border-top-right-radius:0px;border:0 solid black;box-sizing:border-box;font:14px -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;margin:0px;padding:0px;resize:none;}
1699
+ .css-view-g5y9jx{align-content:flex-start;align-items:stretch;background-color:rgba(0,0,0,0.00);border:0 solid black;box-sizing:border-box;display:flex;flex-basis:auto;flex-direction:column;flex-shrink:0;list-style:none;margin:0px;min-height:0px;min-width:0px;padding:0px;position:relative;text-decoration:none;z-index:0;}
1700
+ [stylesheet-group="2"]{}
1701
+ .r-borderColor-1awa8pu{border-bottom-color:rgba(101,119,134,1.00);border-left-color:rgba(101,119,134,1.00);border-right-color:rgba(101,119,134,1.00);border-top-color:rgba(101,119,134,1.00);}
1702
+ .r-borderColor-1d4xg89{border-bottom-color:rgba(170,184,194,1.00);border-left-color:rgba(170,184,194,1.00);border-right-color:rgba(170,184,194,1.00);border-top-color:rgba(170,184,194,1.00);}
1703
+ .r-borderColor-1jyn79y{border-bottom-color:rgba(0,150,136,1.00);border-left-color:rgba(0,150,136,1.00);border-right-color:rgba(0,150,136,1.00);border-top-color:rgba(0,150,136,1.00);}
1704
+ .r-borderColor-4a18lf{border-bottom-color:rgba(255,0,0,1.00);border-left-color:rgba(255,0,0,1.00);border-right-color:rgba(255,0,0,1.00);border-top-color:rgba(255,0,0,1.00);}
1705
+ .r-borderColor-60ke3l{border-bottom-color:rgba(0,128,0,1.00);border-left-color:rgba(0,128,0,1.00);border-right-color:rgba(0,128,0,1.00);border-top-color:rgba(0,128,0,1.00);}
1706
+ .r-borderColor-9x6qib{border-bottom-color:rgba(204,214,221,1.00);border-left-color:rgba(204,214,221,1.00);border-right-color:rgba(204,214,221,1.00);border-top-color:rgba(204,214,221,1.00);}
1707
+ .r-borderColor-fx7oqy{border-bottom-color:rgba(0,0,255,1.00);border-left-color:rgba(0,0,255,1.00);border-right-color:rgba(0,0,255,1.00);border-top-color:rgba(0,0,255,1.00);}
1708
+ .r-borderRadius-1j16mh1{border-bottom-left-radius:100%;border-bottom-right-radius:100%;border-top-left-radius:100%;border-top-right-radius:100%;}
1709
+ .r-borderRadius-1jkafct{border-bottom-left-radius:2px;border-bottom-right-radius:2px;border-top-left-radius:2px;border-top-right-radius:2px;}
1710
+ .r-borderStyle-1phboty{border-bottom-style:solid;border-left-style:solid;border-right-style:solid;border-top-style:solid;}
1711
+ .r-borderWidth-d045u9{border-bottom-width:2px;border-left-width:2px;border-right-width:2px;border-top-width:2px;}
1712
+ .r-borderWidth-rs99b7{border-bottom-width:1px;border-left-width:1px;border-right-width:1px;border-top-width:1px;}
1713
+ .r-display-krxsd3{display:-webkit-box;}
1714
+ .r-display-xoduu5{display:inline-flex;}
1715
+ .r-flex-13awgt0{flex:1;}
1716
+ .r-margin-crgep1{margin:0px;}
1717
+ .r-margin-ywje51{margin:auto;}
1718
+ .r-overflow-1qsk4np{overflow-x:clip;overflow-y:clip;}
1719
+ .r-overflow-1udh08x{overflow-x:hidden;overflow-y:hidden;}
1720
+ .r-padding-edyy15{padding:8px;}
1721
+ .r-padding-t60dpp{padding:0px;}
1722
+ [stylesheet-group="2.2"]{}
1723
+ .r-insetInlineStart-10s2tm5{left:0%;}
1724
+ .r-insetInlineStart-16o8guy{right:100%;}
1725
+ .r-insetInlineStart-dqe1q{right:0%;}
1726
+ .r-insetInlineStart-rci37q{left:100%;}
1727
+ [stylesheet-group="3"]{}
1728
+ .r-WebkitBoxOrient-8akbws{-webkit-box-orient:vertical;}
1729
+ .r-WebkitOverflowScrolling-150rngu{-webkit-overflow-scrolling:touch;}
1730
+ .r-alignItems-1awozwy{align-items:center;}
1731
+ .r-alignSelf-k200y{align-self:flex-start;}
1732
+ .r-animationDuration-17bb2tj{animation-duration:0.75s;}
1733
+ .r-animationDuration-1ay1djp{animation-duration:1s;}
1734
+ .r-animationDuration-9daxd3{animation-duration:250ms;}
1735
+ .r-animationIterationCount-1muvv40{animation-iteration-count:infinite;}
1736
+ .r-animationKeyframes-13aq9py{animation-name:r-animation-1iq689l;}
1737
+ .r-animationKeyframes-1qulhi1{animation-name:r-animation-1pzkwqh;}
1738
+ .r-animationKeyframes-1yef0xd{animation-name:r-animation-11cv4x;}
1739
+ .r-animationKeyframes-ebwn4k{animation-name:r-animation-q67da2;}
1740
+ .r-animationKeyframes-g3mlsw{animation-name:r-animation-t2lo5v;}
1741
+ .r-animationKeyframes-xx3c9p{animation-name:r-animation-imtty0;}
1742
+ .r-animationPlayState-1abnn5w{animation-play-state:paused;}
1743
+ .r-animationTimingFunction-1ldzwu0{animation-timing-function:linear;}
1744
+ .r-animationTimingFunction-leqjx2{animation-timing-function:cubic-bezier(0.215, 0.61, 0.355, 1);}
1745
+ .r-animationTimingFunction-s62m2j{animation-timing-function:cubic-bezier(0.47, 0, 0.745, 0.715);}
1746
+ .r-appearance-30o5oe{-moz-appearance:none;-ms-appearance:none;-webkit-appearance:none;appearance:none;}
1747
+ .r-backgroundColor-11mpjr4{background-color:rgba(223,223,223,1.00);}
1748
+ .r-backgroundColor-11udlyb{background-color:rgba(0,150,136,1.00);}
1749
+ .r-backgroundColor-14lw9ot{background-color:rgba(255,255,255,1.00);}
1750
+ .r-backgroundColor-14sbq61{background-color:rgba(33,150,243,1.00);}
1751
+ .r-backgroundColor-1niwhzg{background-color:rgba(0,0,0,0.00);}
1752
+ .r-backgroundColor-dkge59{background-color:rgba(170,184,194,1.00);}
1753
+ .r-backgroundColor-u92y06{background-color:rgba(255,165,0,1.00);}
1754
+ .r-backgroundImage-rs94m5{background-image:url("data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgdmVyc2lvbj0iMS4xIgogICB2aWV3Qm94PSIwIDAgMSAxIgogICBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJ4TWluWU1pbiBtZWV0Ij4KICA8cGF0aAogICAgIGQ9Ik0gMC4wNDAzODA1OSwwLjYyNjc3NjcgMC4xNDY0NDY2MSwwLjUyMDcxMDY4IDAuNDI5Mjg5MzIsMC44MDM1NTMzOSAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IE0gMC4yMTcxNTcyOSwwLjgwMzU1MzM5IDAuODUzNTUzMzksMC4xNjcxNTcyOSAwLjk1OTYxOTQxLDAuMjczMjIzMyAwLjMyMzIyMzMsMC45MDk2MTk0MSB6IgogICAgIGlkPSJyZWN0Mzc4MCIKICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lIiAvPgo8L3N2Zz4K");}
1755
+ .r-backgroundPosition-1mrlafo{background-position:0;}
1756
+ .r-backgroundPosition-vvn4in{background-position:center;}
1757
+ .r-backgroundRepeat-17leim2{background-repeat:repeat;}
1758
+ .r-backgroundRepeat-u6sd8q{background-repeat:no-repeat;}
1759
+ .r-backgroundSize-1sxrcry{background-size:auto;}
1760
+ .r-backgroundSize-4gszlv{background-size:cover;}
1761
+ .r-backgroundSize-ehq7j7{background-size:contain;}
1762
+ .r-backgroundSize-x3cy2q{background-size:100% 100%;}
1763
+ .r-bottom-1p0dtai{bottom:0px;}
1764
+ .r-boxShadow-1ewcgjf{box-shadow:0px 1px 3px rgba(0,0,0,0.5);}
1765
+ .r-caretColor-van48c{caret-color:transparent;}
1766
+ .r-color-c68hjy{color:rgba(161,161,161,1.00);}
1767
+ .r-color-jwli3a{color:rgba(255,255,255,1.00);}
1768
+ .r-cursor-1ei5mc7{cursor:inherit;}
1769
+ .r-cursor-1loqt21{cursor:pointer;}
1770
+ .r-cursor-7q8q6z{cursor:default;}
1771
+ .r-flexBasis-1mlwlqe{flex-basis:auto;}
1772
+ .r-flexDirection-18u37iz{flex-direction:row;}
1773
+ .r-flexDirection-1d5kdc7{flex-direction:column-reverse;}
1774
+ .r-flexDirection-1euycsn{flex-direction:row-reverse;}
1775
+ .r-flexDirection-eqz5dr{flex-direction:column;}
1776
+ .r-flexGrow-16y2uox{flex-grow:1;}
1777
+ .r-flexShrink-1wbh5a2{flex-shrink:1;}
1778
+ .r-fontFamily-1qd0xha{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;}
1779
+ .r-fontSize-7cikom{font-size:inherit;}
1780
+ .r-fontWeight-majxgm{font-weight:500;}
1781
+ .r-forcedColorAdjust-1c6unfx{forced-color-adjust:none;}
1782
+ .r-height-10ptun7{height:16px;}
1783
+ .r-height-1dernwh{height:70%;}
1784
+ .r-height-1pi2tsx{height:100%;}
1785
+ .r-height-1r8g8re{height:36px;}
1786
+ .r-height-4v7adb{height:5px;}
1787
+ .r-height-z80fyv{height:20px;}
1788
+ .r-justifyContent-1777fci{justify-content:center;}
1789
+ .r-left-1d2f490{left:0px;}
1790
+ .r-maxWidth-dnmrzs{max-width:100%;}
1791
+ .r-opacity-6dt33c{opacity:1;}
1792
+ .r-opacity-orgf3d{opacity:0;}
1793
+ .r-outlineStyle-1ny4l3l{outline-style:none;}
1794
+ .r-overflowX-11yh6sk{overflow-x:hidden;}
1795
+ .r-overflowX-lltvgl{overflow-x:auto;}
1796
+ .r-overflowY-1rnoaur{overflow-y:auto;}
1797
+ .r-overflowY-buy8e9{overflow-y:hidden;}
1798
+ .r-paddingBottom-97e31f{padding-bottom:env(safe-area-inset-bottom);}
1799
+ .r-paddingLeft-bv2aro{padding-left:env(safe-area-inset-left);}
1800
+ .r-paddingRight-hxflta{padding-right:env(safe-area-inset-right);}
1801
+ .r-paddingTop-10xqauy{padding-top:env(safe-area-inset-top);}
1802
+ .r-placeholderTextColor-6taxm2:-ms-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
1803
+ .r-placeholderTextColor-6taxm2::-moz-placeholder{color:var(--placeholderTextColor);opacity:1;}
1804
+ .r-placeholderTextColor-6taxm2::-webkit-input-placeholder{color:var(--placeholderTextColor);opacity:1;}
1805
+ .r-placeholderTextColor-6taxm2::placeholder{color:var(--placeholderTextColor);opacity:1;}
1806
+ .r-pointerEvents-105ug2t{pointer-events:auto!important;}
1807
+ .r-pointerEvents-12vffkv>* {pointer-events:auto;}
1808
+ .r-pointerEvents-12vffkv{pointer-events:none!important;}
1809
+ .r-pointerEvents-633pao>* {pointer-events:none;}
1810
+ .r-pointerEvents-633pao{pointer-events:none!important;}
1811
+ .r-pointerEvents-ah5dr5>* {pointer-events:none;}
1812
+ .r-pointerEvents-ah5dr5{pointer-events:auto!important;}
1813
+ .r-position-1xcajam{position:fixed;}
1814
+ .r-position-gtdqiz{position:-webkit-sticky;position:sticky;}
1815
+ .r-position-u8s1d{position:absolute;}
1816
+ .r-right-zchlnj{right:0px;}
1817
+ .r-scrollSnapAlign-cpa5s6{scroll-snap-align:start;}
1818
+ .r-scrollSnapType-1ocf4r9{scroll-snap-type:y mandatory;}
1819
+ .r-scrollSnapType-mfh4gg{scroll-snap-type:x mandatory;}
1820
+ .r-scrollbarWidth-2eszeu::-webkit-scrollbar{display:none}
1821
+ .r-scrollbarWidth-2eszeu{scrollbar-width:none;}
1822
+ .r-textAlign-1ff274t{text-align:right;}
1823
+ .r-textAlign-fdjqy7{text-align:left;}
1824
+ .r-textAlign-q4m81j{text-align:center;}
1825
+ .r-textOverflow-1udbk01{text-overflow:ellipsis;}
1826
+ .r-textTransform-tsynxw{text-transform:uppercase;}
1827
+ .r-top-ipm5af{top:0px;}
1828
+ .r-touchAction-19z077z{touch-action:none;}
1829
+ .r-touchAction-1otgn73{touch-action:manipulation;}
1830
+ .r-transform-10v3vxq{transform:scaleX(-1);}
1831
+ .r-transform-173mzie{transform:scaleY(-1);}
1832
+ .r-transform-agouwx{transform:translateZ(0);}
1833
+ .r-transform-bi4vy9{transform:translateY(100%);}
1834
+ .r-transform-ghxds0{transform:translateY(0%);}
1835
+ .r-transitionDuration-13tjlyg{transition-duration:0.1s;}
1836
+ .r-transitionDuration-eafdt9{transition-duration:0.15s;}
1837
+ .r-transitionProperty-1i6wzkk{-moz-transition-property:opacity;-webkit-transition-property:opacity;transition-property:opacity;}
1838
+ .r-userSelect-1xnzce8{-moz-user-select:text;-webkit-user-select:text;user-select:text;}
1839
+ .r-userSelect-lrvibr{-moz-user-select:none;-webkit-user-select:none;user-select:none;}
1840
+ .r-visibility-11j9u27{visibility:hidden;}
1841
+ .r-whiteSpace-3s2u2q{white-space:nowrap;}
1842
+ .r-width-13qz1uu{width:100%;}
1843
+ .r-width-19wmn03{width:20px;}
1844
+ .r-width-1acpoxo{width:36px;}
1845
+ .r-width-1janqcz{width:16px;}
1846
+ .r-wordWrap-1iln25a{word-wrap:normal;}
1847
+ .r-zIndex-1wyyakw{z-index:-1;}
1848
+ .r-zIndex-417010{z-index:0;}
1849
+ .r-zIndex-mhe3cw{z-index:10;}
1850
+ .r-zIndex-sfbmgh{z-index:9999;}
1851
+ @-webkit-keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
1852
+ @-webkit-keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
1853
+ @-webkit-keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
1854
+ @-webkit-keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
1855
+ @-webkit-keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
1856
+ @-webkit-keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}
1857
+ @keyframes r-animation-11cv4x{0%{transform:rotate(0deg);}100%{transform:rotate(360deg);}}
1858
+ @keyframes r-animation-1iq689l{0%{transform:translateY(0%);}100%{transform:translateY(100%);}}
1859
+ @keyframes r-animation-1pzkwqh{0%{transform:translateY(100%);}100%{transform:translateY(0%);}}
1860
+ @keyframes r-animation-imtty0{0%{opacity:0;}100%{opacity:1;}}
1861
+ @keyframes r-animation-q67da2{0%{transform:translateX(-100%);}100%{transform:translateX(400%);}}
1862
+ @keyframes r-animation-t2lo5v{0%{opacity:1;}100%{opacity:0;}}
1689
1863
  /* @hanzo/ui motion primitives — the calm, restrained animation vocabulary the
1690
1864
  Hanzo surfaces share. One place defines the easing; components apply the class.
1691
1865
  `className` forwards to the underlying DOM node on web, so the browser
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hanzo/ui",
3
- "version": "8.2.0",
3
+ "version": "8.2.2",
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": {
@@ -300,6 +300,7 @@
300
300
  "test": "pnpm run test:unit",
301
301
  "test:watch": "vitest",
302
302
  "test:responsive": "node scripts/responsive.mjs",
303
+ "test:contain": "node scripts/contain.mjs",
303
304
  "test:consumer": "node scripts/consumer-test.mjs",
304
305
  "test:unit": "vitest run",
305
306
  "test:consumer:webpack": "node scripts/consumer-webpack.mjs"