@hanzo/ui 8.9.2 → 8.10.0

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 (193) hide show
  1. package/dist/backends/gui/breadcrumb.cjs +30 -0
  2. package/dist/backends/gui/breadcrumb.d.ts +32 -0
  3. package/dist/backends/gui/breadcrumb.d.ts.map +1 -0
  4. package/dist/backends/gui/breadcrumb.js +21 -0
  5. package/dist/backends/gui/breadcrumb.js.map +1 -0
  6. package/dist/backends/gui/button.d.ts +17 -3
  7. package/dist/backends/gui/button.d.ts.map +1 -1
  8. package/dist/backends/gui/button.js +1 -1
  9. package/dist/backends/gui/button.js.map +1 -1
  10. package/dist/backends/gui/card.d.ts +2 -1
  11. package/dist/backends/gui/card.d.ts.map +1 -1
  12. package/dist/backends/gui/card.js.map +1 -1
  13. package/dist/backends/gui/carousel.cjs +19 -5
  14. package/dist/backends/gui/carousel.d.ts +2 -0
  15. package/dist/backends/gui/carousel.d.ts.map +1 -1
  16. package/dist/backends/gui/carousel.js +19 -5
  17. package/dist/backends/gui/carousel.js.map +1 -1
  18. package/dist/backends/gui/drawer.cjs +183 -0
  19. package/dist/backends/gui/drawer.d.ts +49 -0
  20. package/dist/backends/gui/drawer.d.ts.map +1 -0
  21. package/dist/backends/gui/drawer.js +145 -0
  22. package/dist/backends/gui/drawer.js.map +1 -0
  23. package/dist/backends/gui/index.cjs +30 -1
  24. package/dist/backends/gui/index.d.ts +6 -0
  25. package/dist/backends/gui/index.d.ts.map +1 -1
  26. package/dist/backends/gui/index.js +6 -0
  27. package/dist/backends/gui/index.js.map +1 -1
  28. package/dist/backends/gui/input-otp.cjs +101 -0
  29. package/dist/backends/gui/input-otp.d.ts +37 -0
  30. package/dist/backends/gui/input-otp.d.ts.map +1 -0
  31. package/dist/backends/gui/input-otp.js +62 -0
  32. package/dist/backends/gui/input-otp.js.map +1 -0
  33. package/dist/backends/gui/link.cjs +3 -1
  34. package/dist/backends/gui/link.d.ts +7 -1
  35. package/dist/backends/gui/link.d.ts.map +1 -1
  36. package/dist/backends/gui/link.js +3 -1
  37. package/dist/backends/gui/link.js.map +1 -1
  38. package/dist/backends/gui/media-stack.cjs +4 -7
  39. package/dist/backends/gui/media-stack.d.ts.map +1 -1
  40. package/dist/backends/gui/media-stack.js +4 -7
  41. package/dist/backends/gui/media-stack.js.map +1 -1
  42. package/dist/backends/gui/microdata.cjs +2 -0
  43. package/dist/backends/gui/microdata.d.ts +24 -0
  44. package/dist/backends/gui/microdata.d.ts.map +1 -0
  45. package/dist/backends/gui/microdata.js +2 -0
  46. package/dist/backends/gui/microdata.js.map +1 -0
  47. package/dist/backends/gui/nav-items.cjs +13 -0
  48. package/dist/backends/gui/nav-items.d.ts +22 -0
  49. package/dist/backends/gui/nav-items.d.ts.map +1 -0
  50. package/dist/backends/gui/nav-items.js +10 -0
  51. package/dist/backends/gui/nav-items.js.map +1 -0
  52. package/dist/backends/gui/navigation-menu.cjs +97 -0
  53. package/dist/backends/gui/navigation-menu.d.ts +25 -0
  54. package/dist/backends/gui/navigation-menu.d.ts.map +1 -0
  55. package/dist/backends/gui/navigation-menu.js +55 -0
  56. package/dist/backends/gui/navigation-menu.js.map +1 -0
  57. package/dist/backends/gui/step-indicator.cjs +23 -0
  58. package/dist/backends/gui/step-indicator.d.ts +22 -0
  59. package/dist/backends/gui/step-indicator.d.ts.map +1 -0
  60. package/dist/backends/gui/step-indicator.js +20 -0
  61. package/dist/backends/gui/step-indicator.js.map +1 -0
  62. package/dist/backends/gui/toggle-group.cjs +1 -1
  63. package/dist/backends/gui/toggle-group.d.ts +56 -2
  64. package/dist/backends/gui/toggle-group.d.ts.map +1 -1
  65. package/dist/backends/gui/toggle-group.js +1 -1
  66. package/dist/backends/gui/toggle-group.js.map +1 -1
  67. package/dist/gallery.html +16 -2
  68. package/dist/index.cjs +26 -2
  69. package/dist/index.d.ts +2 -2
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +1 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/index.node.js +1 -1
  74. package/dist/primitives/Breadcrumb.cjs +8 -0
  75. package/dist/primitives/Breadcrumb.d.ts +2 -0
  76. package/dist/primitives/Breadcrumb.d.ts.map +1 -0
  77. package/dist/primitives/Breadcrumb.js +5 -0
  78. package/dist/primitives/Breadcrumb.js.map +1 -0
  79. package/dist/primitives/BreadcrumbEllipsis.cjs +8 -0
  80. package/dist/primitives/BreadcrumbEllipsis.d.ts +2 -0
  81. package/dist/primitives/BreadcrumbEllipsis.d.ts.map +1 -0
  82. package/dist/primitives/BreadcrumbEllipsis.js +5 -0
  83. package/dist/primitives/BreadcrumbEllipsis.js.map +1 -0
  84. package/dist/primitives/BreadcrumbItem.cjs +8 -0
  85. package/dist/primitives/BreadcrumbItem.d.ts +2 -0
  86. package/dist/primitives/BreadcrumbItem.d.ts.map +1 -0
  87. package/dist/primitives/BreadcrumbItem.js +5 -0
  88. package/dist/primitives/BreadcrumbItem.js.map +1 -0
  89. package/dist/primitives/BreadcrumbLink.cjs +8 -0
  90. package/dist/primitives/BreadcrumbLink.d.ts +2 -0
  91. package/dist/primitives/BreadcrumbLink.d.ts.map +1 -0
  92. package/dist/primitives/BreadcrumbLink.js +5 -0
  93. package/dist/primitives/BreadcrumbLink.js.map +1 -0
  94. package/dist/primitives/BreadcrumbList.cjs +8 -0
  95. package/dist/primitives/BreadcrumbList.d.ts +2 -0
  96. package/dist/primitives/BreadcrumbList.d.ts.map +1 -0
  97. package/dist/primitives/BreadcrumbList.js +5 -0
  98. package/dist/primitives/BreadcrumbList.js.map +1 -0
  99. package/dist/primitives/BreadcrumbPage.cjs +8 -0
  100. package/dist/primitives/BreadcrumbPage.d.ts +2 -0
  101. package/dist/primitives/BreadcrumbPage.d.ts.map +1 -0
  102. package/dist/primitives/BreadcrumbPage.js +5 -0
  103. package/dist/primitives/BreadcrumbPage.js.map +1 -0
  104. package/dist/primitives/BreadcrumbSeparator.cjs +8 -0
  105. package/dist/primitives/BreadcrumbSeparator.d.ts +2 -0
  106. package/dist/primitives/BreadcrumbSeparator.d.ts.map +1 -0
  107. package/dist/primitives/BreadcrumbSeparator.js +5 -0
  108. package/dist/primitives/BreadcrumbSeparator.js.map +1 -0
  109. package/dist/primitives/Drawer.cjs +8 -0
  110. package/dist/primitives/Drawer.d.ts +2 -0
  111. package/dist/primitives/Drawer.d.ts.map +1 -0
  112. package/dist/primitives/Drawer.js +5 -0
  113. package/dist/primitives/Drawer.js.map +1 -0
  114. package/dist/primitives/DrawerContent.cjs +8 -0
  115. package/dist/primitives/DrawerContent.d.ts +2 -0
  116. package/dist/primitives/DrawerContent.d.ts.map +1 -0
  117. package/dist/primitives/DrawerContent.js +5 -0
  118. package/dist/primitives/DrawerContent.js.map +1 -0
  119. package/dist/primitives/DrawerHandle.cjs +8 -0
  120. package/dist/primitives/DrawerHandle.d.ts +2 -0
  121. package/dist/primitives/DrawerHandle.d.ts.map +1 -0
  122. package/dist/primitives/DrawerHandle.js +5 -0
  123. package/dist/primitives/DrawerHandle.js.map +1 -0
  124. package/dist/primitives/InputOTP.cjs +8 -0
  125. package/dist/primitives/InputOTP.d.ts +2 -0
  126. package/dist/primitives/InputOTP.d.ts.map +1 -0
  127. package/dist/primitives/InputOTP.js +5 -0
  128. package/dist/primitives/InputOTP.js.map +1 -0
  129. package/dist/primitives/InputOTPGroup.cjs +8 -0
  130. package/dist/primitives/InputOTPGroup.d.ts +2 -0
  131. package/dist/primitives/InputOTPGroup.d.ts.map +1 -0
  132. package/dist/primitives/InputOTPGroup.js +5 -0
  133. package/dist/primitives/InputOTPGroup.js.map +1 -0
  134. package/dist/primitives/InputOTPSeparator.cjs +8 -0
  135. package/dist/primitives/InputOTPSeparator.d.ts +2 -0
  136. package/dist/primitives/InputOTPSeparator.d.ts.map +1 -0
  137. package/dist/primitives/InputOTPSeparator.js +5 -0
  138. package/dist/primitives/InputOTPSeparator.js.map +1 -0
  139. package/dist/primitives/InputOTPSlot.cjs +8 -0
  140. package/dist/primitives/InputOTPSlot.d.ts +2 -0
  141. package/dist/primitives/InputOTPSlot.d.ts.map +1 -0
  142. package/dist/primitives/InputOTPSlot.js +5 -0
  143. package/dist/primitives/InputOTPSlot.js.map +1 -0
  144. package/dist/primitives/NavItems.cjs +8 -0
  145. package/dist/primitives/NavItems.d.ts +2 -0
  146. package/dist/primitives/NavItems.d.ts.map +1 -0
  147. package/dist/primitives/NavItems.js +5 -0
  148. package/dist/primitives/NavItems.js.map +1 -0
  149. package/dist/primitives/NavigationMenu.cjs +8 -0
  150. package/dist/primitives/NavigationMenu.d.ts +2 -0
  151. package/dist/primitives/NavigationMenu.d.ts.map +1 -0
  152. package/dist/primitives/NavigationMenu.js +5 -0
  153. package/dist/primitives/NavigationMenu.js.map +1 -0
  154. package/dist/primitives/NavigationMenuContent.cjs +8 -0
  155. package/dist/primitives/NavigationMenuContent.d.ts +2 -0
  156. package/dist/primitives/NavigationMenuContent.d.ts.map +1 -0
  157. package/dist/primitives/NavigationMenuContent.js +5 -0
  158. package/dist/primitives/NavigationMenuContent.js.map +1 -0
  159. package/dist/primitives/NavigationMenuItem.cjs +8 -0
  160. package/dist/primitives/NavigationMenuItem.d.ts +2 -0
  161. package/dist/primitives/NavigationMenuItem.d.ts.map +1 -0
  162. package/dist/primitives/NavigationMenuItem.js +5 -0
  163. package/dist/primitives/NavigationMenuItem.js.map +1 -0
  164. package/dist/primitives/NavigationMenuLink.cjs +8 -0
  165. package/dist/primitives/NavigationMenuLink.d.ts +2 -0
  166. package/dist/primitives/NavigationMenuLink.d.ts.map +1 -0
  167. package/dist/primitives/NavigationMenuLink.js +5 -0
  168. package/dist/primitives/NavigationMenuLink.js.map +1 -0
  169. package/dist/primitives/NavigationMenuList.cjs +8 -0
  170. package/dist/primitives/NavigationMenuList.d.ts +2 -0
  171. package/dist/primitives/NavigationMenuList.d.ts.map +1 -0
  172. package/dist/primitives/NavigationMenuList.js +5 -0
  173. package/dist/primitives/NavigationMenuList.js.map +1 -0
  174. package/dist/primitives/NavigationMenuTrigger.cjs +8 -0
  175. package/dist/primitives/NavigationMenuTrigger.d.ts +2 -0
  176. package/dist/primitives/NavigationMenuTrigger.d.ts.map +1 -0
  177. package/dist/primitives/NavigationMenuTrigger.js +5 -0
  178. package/dist/primitives/NavigationMenuTrigger.js.map +1 -0
  179. package/dist/primitives/StepIndicator.cjs +8 -0
  180. package/dist/primitives/StepIndicator.d.ts +2 -0
  181. package/dist/primitives/StepIndicator.d.ts.map +1 -0
  182. package/dist/primitives/StepIndicator.js +5 -0
  183. package/dist/primitives/StepIndicator.js.map +1 -0
  184. package/dist/primitives/navigationMenuTriggerStyle.cjs +8 -0
  185. package/dist/primitives/navigationMenuTriggerStyle.d.ts +2 -0
  186. package/dist/primitives/navigationMenuTriggerStyle.d.ts.map +1 -0
  187. package/dist/primitives/navigationMenuTriggerStyle.js +5 -0
  188. package/dist/primitives/navigationMenuTriggerStyle.js.map +1 -0
  189. package/dist/styles.css +15 -1
  190. package/dist/theme.css +15 -1
  191. package/dist/types.d.ts +9 -9
  192. package/dist/types.d.ts.map +1 -1
  193. package/package.json +1 -1
@@ -20,10 +20,9 @@ export const fit = (dim, to, scale = 1) => {
20
20
  export const MediaStack = ({ media, constrainTo, className, ...props }) => {
21
21
  const scale = media?.mediaTransform?.scale ?? 1;
22
22
  const { offsetX = 0, offsetY = 0 } = media?.mediaTransform ?? {};
23
- // Richest first. `animation` renders as its poster: a Lottie document needs a
24
- // player, no content in this estate carries one, and a still is a better
25
- // answer than an empty box for content that does.
26
- const anim = media?.animation;
23
+ // Richest first, and richest that can be PLAYED here: an animation is a url
24
+ // to a document needing a player this does not carry, so a stack holding one
25
+ // falls to its video or its still rather than rendering an empty box.
27
26
  const video = media?.video;
28
27
  const img = media?.img;
29
28
  const inner = (() => {
@@ -31,9 +30,7 @@ export const MediaStack = ({ media, constrainTo, className, ...props }) => {
31
30
  const d = fit(video.dim?.md ?? constrainTo, constrainTo, scale);
32
31
  return (_jsx(VideoPlayer, { width: d.w, height: d.h, poster: video.poster, sources: video.sources, ...video.videoProps }));
33
32
  }
34
- const still = anim?.poster
35
- ? { src: anim.poster, alt: '', dim: anim.dim }
36
- : img;
33
+ const still = img;
37
34
  if (!still?.src)
38
35
  return null;
39
36
  const d = fit(still.dim ?? constrainTo, constrainTo, scale);
@@ -1 +1 @@
1
- {"version":3,"file":"media-stack.js","sourceRoot":"","sources":["../../../src/backends/gui/media-stack.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"media-stack.js","sourceRoot":"","sources":["../../../src/backends/gui/media-stack.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ 'use client';"use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The schema.org attributes, for the components that carry a described thing.
3
+ *
4
+ * A product card and its buy button are part of one Product in the markup, and
5
+ * that markup is what a search engine and a merchant feed read the price and
6
+ * availability out of. Dropping these loses the listing, not an attribute.
7
+ *
8
+ * They already REACHED the element — every unrecognised prop is spread onto the
9
+ * gui frame, which forwards it — but the frame's props come from the
10
+ * cross-platform stack and name no DOM attribute. A spread carries an unknown
11
+ * property silently; a written-out one is excess-property-checked. So
12
+ * `<Card itemScope>` was an error on markup that works, and the workaround at
13
+ * the call site is to re-declare the component as `any`, which hides every real
14
+ * error in the file along with this one.
15
+ *
16
+ * Declared because it is true on web and harmless elsewhere: native ignores an
17
+ * attribute it does not know.
18
+ */
19
+ export type Microdata = {
20
+ itemProp?: string;
21
+ itemScope?: boolean;
22
+ itemType?: string;
23
+ };
24
+ //# sourceMappingURL=microdata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microdata.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/microdata.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB,CAAA"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=microdata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"microdata.js","sourceRoot":"","sources":["../../../src/backends/gui/microdata.ts"],"names":[],"mappings":""}
@@ -0,0 +1,13 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.NavItems = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const box_1 = require("../../box.cjs");
7
+ const cn_1 = require("../../core/cn.cjs");
8
+ const link_1 = require("./link.cjs");
9
+ const NavItems = ({ items, currentAs, as = 'nav', className, itemClx, onNavigate, }) => ((0, jsx_runtime_1.jsx)(box_1.Box, { tag: as, "aria-label": as === 'nav' ? 'Navigation' : undefined, className: (0, cn_1.cn)('grid grid-flow-col auto-cols-max items-center', className), children: items.map((def, i) => {
10
+ const current = !!currentAs && def.href === currentAs;
11
+ return ((0, jsx_runtime_1.jsx)(link_1.LinkElement, { def: def, onClick: onNavigate, "aria-current": current ? 'page' : false, className: (0, cn_1.cn)(typeof itemClx === 'function' ? itemClx(def) : itemClx) }, def.href || i));
12
+ }) }));
13
+ exports.NavItems = NavItems;
@@ -0,0 +1,22 @@
1
+ import { type ClassValue } from '../../core/cn.js';
2
+ import type { LinkDef } from '../../types.js';
3
+ export type NavItemsProps = {
4
+ items: LinkDef[];
5
+ /**
6
+ * The path you are on. The item whose href matches it is the current one.
7
+ * Absent, nothing is current — which is right for a footer.
8
+ */
9
+ currentAs?: string;
10
+ /** The element holding the list. `nav` unless it is not a navigation. */
11
+ as?: 'nav' | 'div' | 'ul';
12
+ className?: ClassValue;
13
+ /**
14
+ * A class for every item, or one worked out per item — a menu whose featured
15
+ * entries read differently from its ordinary ones needs the second.
16
+ */
17
+ itemClx?: string | ((def: LinkDef) => string);
18
+ /** Fires alongside the navigation — e.g. to close the menu it sits in. */
19
+ onNavigate?: () => void;
20
+ };
21
+ export declare const NavItems: ({ items, currentAs, as, className, itemClx, onNavigate, }: NavItemsProps) => import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=nav-items.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-items.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/nav-items.tsx"],"names":[],"mappings":"AAeA,OAAO,EAAM,KAAK,UAAU,EAAE,MAAM,eAAe,CAAA;AACnD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAG1C,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,OAAO,EAAE,CAAA;IAChB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yEAAyE;IACzE,EAAE,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAA;IACzB,SAAS,CAAC,EAAE,UAAU,CAAA;IACtB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,CAAC,CAAA;IAC7C,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,IAAI,CAAA;CACxB,CAAA;AAED,eAAO,MAAM,QAAQ,8DAOlB,aAAa,4CAqBf,CAAA"}
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { Box } from '../../box.js';
4
+ import { cn } from '../../core/cn.js';
5
+ import { LinkElement } from './link.js';
6
+ export const NavItems = ({ items, currentAs, as = 'nav', className, itemClx, onNavigate, }) => (_jsx(Box, { tag: as, "aria-label": as === 'nav' ? 'Navigation' : undefined, className: cn('grid grid-flow-col auto-cols-max items-center', className), children: items.map((def, i) => {
7
+ const current = !!currentAs && def.href === currentAs;
8
+ return (_jsx(LinkElement, { def: def, onClick: onNavigate, "aria-current": current ? 'page' : false, className: cn(typeof itemClx === 'function' ? itemClx(def) : itemClx) }, def.href || i));
9
+ }) }));
10
+ //# sourceMappingURL=nav-items.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nav-items.js","sourceRoot":"","sources":["../../../src/backends/gui/nav-items.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAcZ,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,EAAE,EAAmB,MAAM,eAAe,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAA;AAqBpC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,EACvB,KAAK,EACL,SAAS,EACT,EAAE,GAAG,KAAK,EACV,SAAS,EACT,OAAO,EACP,UAAU,GACI,EAAE,EAAE,CAAC,CACnB,KAAC,GAAG,IACF,GAAG,EAAE,EAAE,gBAGK,EAAE,KAAK,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,EACnD,SAAS,EAAE,EAAE,CAAC,+CAA+C,EAAE,SAAS,CAAC,YAExE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,OAAO,GAAG,CAAC,CAAC,SAAS,IAAI,GAAG,CAAC,IAAI,KAAK,SAAS,CAAA;QACrD,OAAO,CACL,KAAC,WAAW,IAEV,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,UAAU,kBACL,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,EACtC,SAAS,EAAE,EAAE,CAAC,OAAO,OAAO,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAJhE,GAAG,CAAC,IAAI,IAAI,CAAC,CAKlB,CACH,CAAA;IACH,CAAC,CAAC,GACE,CACP,CAAA"}
@@ -0,0 +1,97 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.NavigationMenuLink = exports.NavigationMenuContent = exports.NavigationMenuTrigger = exports.navigationMenuTriggerStyle = exports.NavigationMenuItem = exports.NavigationMenuList = exports.NavigationMenu = void 0;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ /**
40
+ * NavigationMenu — a site menu whose entries can open a panel.
41
+ *
42
+ * Each item owns its own open state and opens on hover OR focus, closing on
43
+ * leave or blur. Focus is not decoration here: a menu that opens only on hover
44
+ * is a menu a keyboard cannot reach, and the panel behind it is unreachable
45
+ * content rather than hidden content.
46
+ *
47
+ * A caller's own pointer handlers still run — several sites drive a shared
48
+ * backdrop from the same events — so they are chained, never replaced.
49
+ */
50
+ const React = __importStar(require("react"));
51
+ const box_1 = require("../../box.cjs");
52
+ const cn_1 = require("../../core/cn.cjs");
53
+ const Item = /* @__PURE__ */ React.createContext(null);
54
+ const useItem = () => React.useContext(Item);
55
+ /** Run the caller's handler after ours, never instead of it. */
56
+ const both = (ours, theirs) => (e) => {
57
+ ours(e);
58
+ theirs?.(e);
59
+ };
60
+ const NavigationMenu = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)(box_1.Box, { tag: "nav", "aria-label": "Main", className: (0, cn_1.cn)('relative grid justify-center', className), ...props }));
61
+ exports.NavigationMenu = NavigationMenu;
62
+ const NavigationMenuList = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)(box_1.Box, { tag: "ul", className: (0, cn_1.cn)('grid grid-flow-col auto-cols-max items-center gap-1', className), ...props }));
63
+ exports.NavigationMenuList = NavigationMenuList;
64
+ const NavigationMenuItem = ({ className, children, ...props }) => {
65
+ const [open, setOpen] = React.useState(false);
66
+ const id = React.useId();
67
+ return ((0, jsx_runtime_1.jsx)(Item.Provider, { value: { open, setOpen, id }, children: (0, jsx_runtime_1.jsx)(box_1.Box, { tag: "li", className: (0, cn_1.cn)('relative', className),
68
+ // On the ITEM, not the trigger: the panel is a child of the item, so
69
+ // the pointer can travel from the trigger into the panel without ever
70
+ // leaving the item — which is what stops the menu closing under a
71
+ // cursor moving towards it.
72
+ onMouseEnter: () => setOpen(true), onMouseLeave: () => setOpen(false), ...props, children: children }) }));
73
+ };
74
+ exports.NavigationMenuItem = NavigationMenuItem;
75
+ /**
76
+ * A stable class handle for hosts that hook menu triggers from CSS. Styling
77
+ * lives in the tokens; this only names the part.
78
+ */
79
+ const navigationMenuTriggerStyle = () => 'nav-menu-trigger';
80
+ exports.navigationMenuTriggerStyle = navigationMenuTriggerStyle;
81
+ const NavigationMenuTrigger = ({ className, children, onFocus, onBlur, onClick, ...props }) => {
82
+ const item = useItem();
83
+ return ((0, jsx_runtime_1.jsx)(box_1.Box, { tag: "button", type: "button", "aria-haspopup": "true", "aria-expanded": item?.open ?? false, "aria-controls": item?.id, className: (0, cn_1.cn)((0, exports.navigationMenuTriggerStyle)(), 'grid grid-flow-col auto-cols-max items-center gap-1', className), onFocus: both(() => item?.setOpen(true), onFocus), onBlur: both(() => item?.setOpen(false), onBlur),
84
+ // Touch has no hover. Without this the panel is unreachable on a phone —
85
+ // which is where most of these menus are actually read.
86
+ onClick: both(() => item?.setOpen(!item.open), onClick), ...props, children: children }));
87
+ };
88
+ exports.NavigationMenuTrigger = NavigationMenuTrigger;
89
+ const NavigationMenuContent = ({ className, children, ...props }) => {
90
+ const item = useItem();
91
+ if (item && !item.open)
92
+ return null;
93
+ return ((0, jsx_runtime_1.jsx)(box_1.Box, { id: item?.id, className: (0, cn_1.cn)('absolute top-full left-0', className), ...props, children: children }));
94
+ };
95
+ exports.NavigationMenuContent = NavigationMenuContent;
96
+ const NavigationMenuLink = ({ className, ...props }) => ((0, jsx_runtime_1.jsx)(box_1.Box, { tag: "a", className: className, ...props }));
97
+ exports.NavigationMenuLink = NavigationMenuLink;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * NavigationMenu — a site menu whose entries can open a panel.
3
+ *
4
+ * Each item owns its own open state and opens on hover OR focus, closing on
5
+ * leave or blur. Focus is not decoration here: a menu that opens only on hover
6
+ * is a menu a keyboard cannot reach, and the panel behind it is unreachable
7
+ * content rather than hidden content.
8
+ *
9
+ * A caller's own pointer handlers still run — several sites drive a shared
10
+ * backdrop from the same events — so they are chained, never replaced.
11
+ */
12
+ import * as React from 'react';
13
+ import { Box, type BoxProps } from '../../box.js';
14
+ export declare const NavigationMenu: ({ className, ...props }: React.ComponentProps<typeof Box>) => import("react/jsx-runtime").JSX.Element;
15
+ export declare const NavigationMenuList: ({ className, ...props }: React.ComponentProps<typeof Box>) => import("react/jsx-runtime").JSX.Element;
16
+ export declare const NavigationMenuItem: ({ className, children, ...props }: React.ComponentProps<typeof Box>) => import("react/jsx-runtime").JSX.Element;
17
+ /**
18
+ * A stable class handle for hosts that hook menu triggers from CSS. Styling
19
+ * lives in the tokens; this only names the part.
20
+ */
21
+ export declare const navigationMenuTriggerStyle: () => string;
22
+ export declare const NavigationMenuTrigger: ({ className, children, onFocus, onBlur, onClick, ...props }: BoxProps<'button'>) => import("react/jsx-runtime").JSX.Element;
23
+ export declare const NavigationMenuContent: ({ className, children, ...props }: React.ComponentProps<typeof Box>) => import("react/jsx-runtime").JSX.Element | null;
24
+ export declare const NavigationMenuLink: ({ className, ...props }: BoxProps<'a'>) => import("react/jsx-runtime").JSX.Element;
25
+ //# sourceMappingURL=navigation-menu.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/navigation-menu.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,GAAG,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAA;AAqB9C,eAAO,MAAM,cAAc,4BAA6B,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,4CAOvF,CAAA;AAED,eAAO,MAAM,kBAAkB,4BAA6B,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,4CAM3F,CAAA;AAED,eAAO,MAAM,kBAAkB,sCAAuC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,4CAoBrG,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,0BAA0B,cAA2B,CAAA;AAElE,eAAO,MAAM,qBAAqB,gEAO/B,QAAQ,CAAC,QAAQ,CAAC,4CAoBpB,CAAA;AAED,eAAO,MAAM,qBAAqB,sCAAuC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,mDAQxG,CAAA;AAED,eAAO,MAAM,kBAAkB,4BAA6B,QAAQ,CAAC,GAAG,CAAC,4CAExE,CAAA"}
@@ -0,0 +1,55 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * NavigationMenu — a site menu whose entries can open a panel.
5
+ *
6
+ * Each item owns its own open state and opens on hover OR focus, closing on
7
+ * leave or blur. Focus is not decoration here: a menu that opens only on hover
8
+ * is a menu a keyboard cannot reach, and the panel behind it is unreachable
9
+ * content rather than hidden content.
10
+ *
11
+ * A caller's own pointer handlers still run — several sites drive a shared
12
+ * backdrop from the same events — so they are chained, never replaced.
13
+ */
14
+ import * as React from 'react';
15
+ import { Box } from '../../box.js';
16
+ import { cn } from '../../core/cn.js';
17
+ const Item = /* @__PURE__ */ React.createContext(null);
18
+ const useItem = () => React.useContext(Item);
19
+ /** Run the caller's handler after ours, never instead of it. */
20
+ const both = (ours, theirs) => (e) => {
21
+ ours(e);
22
+ theirs?.(e);
23
+ };
24
+ export const NavigationMenu = ({ className, ...props }) => (_jsx(Box, { tag: "nav", "aria-label": "Main", className: cn('relative grid justify-center', className), ...props }));
25
+ export const NavigationMenuList = ({ className, ...props }) => (_jsx(Box, { tag: "ul", className: cn('grid grid-flow-col auto-cols-max items-center gap-1', className), ...props }));
26
+ export const NavigationMenuItem = ({ className, children, ...props }) => {
27
+ const [open, setOpen] = React.useState(false);
28
+ const id = React.useId();
29
+ return (_jsx(Item.Provider, { value: { open, setOpen, id }, children: _jsx(Box, { tag: "li", className: cn('relative', className),
30
+ // On the ITEM, not the trigger: the panel is a child of the item, so
31
+ // the pointer can travel from the trigger into the panel without ever
32
+ // leaving the item — which is what stops the menu closing under a
33
+ // cursor moving towards it.
34
+ onMouseEnter: () => setOpen(true), onMouseLeave: () => setOpen(false), ...props, children: children }) }));
35
+ };
36
+ /**
37
+ * A stable class handle for hosts that hook menu triggers from CSS. Styling
38
+ * lives in the tokens; this only names the part.
39
+ */
40
+ export const navigationMenuTriggerStyle = () => 'nav-menu-trigger';
41
+ export const NavigationMenuTrigger = ({ className, children, onFocus, onBlur, onClick, ...props }) => {
42
+ const item = useItem();
43
+ return (_jsx(Box, { tag: "button", type: "button", "aria-haspopup": "true", "aria-expanded": item?.open ?? false, "aria-controls": item?.id, className: cn(navigationMenuTriggerStyle(), 'grid grid-flow-col auto-cols-max items-center gap-1', className), onFocus: both(() => item?.setOpen(true), onFocus), onBlur: both(() => item?.setOpen(false), onBlur),
44
+ // Touch has no hover. Without this the panel is unreachable on a phone —
45
+ // which is where most of these menus are actually read.
46
+ onClick: both(() => item?.setOpen(!item.open), onClick), ...props, children: children }));
47
+ };
48
+ export const NavigationMenuContent = ({ className, children, ...props }) => {
49
+ const item = useItem();
50
+ if (item && !item.open)
51
+ return null;
52
+ return (_jsx(Box, { id: item?.id, className: cn('absolute top-full left-0', className), ...props, children: children }));
53
+ };
54
+ export const NavigationMenuLink = ({ className, ...props }) => (_jsx(Box, { tag: "a", className: className, ...props }));
55
+ //# sourceMappingURL=navigation-menu.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-menu.js","sourceRoot":"","sources":["../../../src/backends/gui/navigation-menu.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ 'use client';"use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.StepIndicator = void 0;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const box_1 = require("../../box.cjs");
7
+ const cn_1 = require("../../core/cn.cjs");
8
+ const StepIndicator = ({ steps, currentStep, dotSizeRem = 1, className, ...props }) => {
9
+ const dot = `${dotSizeRem}rem`;
10
+ return ((0, jsx_runtime_1.jsx)(box_1.Box, { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": steps.length - 1, "aria-valuenow": currentStep, "aria-valuetext": steps[currentStep], className: (0, cn_1.cn)('grid items-start', className),
11
+ // One column per step, each an equal share. A count is data, and data
12
+ // cannot be a class name.
13
+ style: { gridTemplateColumns: `repeat(${steps.length}, minmax(0, 1fr))` }, ...props, children: steps.map((name, i) => {
14
+ const done = i <= currentStep;
15
+ return ((0, jsx_runtime_1.jsxs)(box_1.Box, { className: "grid justify-items-center gap-1 relative", children: [i < steps.length - 1 && ((0, jsx_runtime_1.jsx)(box_1.Box, { "aria-hidden": "true", className: (0, cn_1.cn)('absolute', i < currentStep ? 'bg-foreground' : 'bg-muted'), style: {
16
+ height: 2,
17
+ top: `calc(${dot} / 2 - 1px)`,
18
+ left: '50%',
19
+ right: '-50%',
20
+ } })), (0, jsx_runtime_1.jsx)(box_1.Box, { "aria-hidden": "true", className: (0, cn_1.cn)('rounded-full relative', done ? 'bg-foreground' : 'bg-muted'), style: { width: dot, height: dot } }), (0, jsx_runtime_1.jsx)(box_1.Box, { tag: "span", className: done ? 'text-foreground' : 'text-muted-foreground', children: name })] }, name));
21
+ }) }));
22
+ };
23
+ exports.StepIndicator = StepIndicator;
@@ -0,0 +1,22 @@
1
+ /**
2
+ * StepIndicator — how far along a sequence you are.
3
+ *
4
+ * A dot per step joined by a rule, the ones behind you filled. It is a
5
+ * PROGRESSBAR, not a list of buttons: the steps are not reachable from here,
6
+ * and announcing them as controls invites a keyboard user to try.
7
+ *
8
+ * The dot size is a caller's number in rem, because this sits inside a checkout
9
+ * header whose height the caller owns — and because a dot that scales with the
10
+ * text is a dot that changes size when someone changes their type size.
11
+ */
12
+ import * as React from 'react';
13
+ import { Box } from '../../box.js';
14
+ export type StepIndicatorProps = Omit<React.ComponentProps<typeof Box>, 'children'> & {
15
+ steps: string[];
16
+ /** Zero-based. Steps before it are done; this one is current. */
17
+ currentStep: number;
18
+ /** Diameter, in rem. */
19
+ dotSizeRem?: number;
20
+ };
21
+ export declare const StepIndicator: ({ steps, currentStep, dotSizeRem, className, ...props }: StepIndicatorProps) => import("react/jsx-runtime").JSX.Element;
22
+ //# sourceMappingURL=step-indicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-indicator.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/step-indicator.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAA;AAE9B,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAG/B,MAAM,MAAM,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG;IACpF,KAAK,EAAE,MAAM,EAAE,CAAA;IACf,iEAAiE;IACjE,WAAW,EAAE,MAAM,CAAA;IACnB,wBAAwB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,CAAA;AAED,eAAO,MAAM,aAAa,4DAMvB,kBAAkB,4CA8CpB,CAAA"}
@@ -0,0 +1,20 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { Box } from '../../box.js';
4
+ import { cn } from '../../core/cn.js';
5
+ export const StepIndicator = ({ steps, currentStep, dotSizeRem = 1, className, ...props }) => {
6
+ const dot = `${dotSizeRem}rem`;
7
+ return (_jsx(Box, { role: "progressbar", "aria-valuemin": 0, "aria-valuemax": steps.length - 1, "aria-valuenow": currentStep, "aria-valuetext": steps[currentStep], className: cn('grid items-start', className),
8
+ // One column per step, each an equal share. A count is data, and data
9
+ // cannot be a class name.
10
+ style: { gridTemplateColumns: `repeat(${steps.length}, minmax(0, 1fr))` }, ...props, children: steps.map((name, i) => {
11
+ const done = i <= currentStep;
12
+ return (_jsxs(Box, { className: "grid justify-items-center gap-1 relative", children: [i < steps.length - 1 && (_jsx(Box, { "aria-hidden": "true", className: cn('absolute', i < currentStep ? 'bg-foreground' : 'bg-muted'), style: {
13
+ height: 2,
14
+ top: `calc(${dot} / 2 - 1px)`,
15
+ left: '50%',
16
+ right: '-50%',
17
+ } })), _jsx(Box, { "aria-hidden": "true", className: cn('rounded-full relative', done ? 'bg-foreground' : 'bg-muted'), style: { width: dot, height: dot } }), _jsx(Box, { tag: "span", className: done ? 'text-foreground' : 'text-muted-foreground', children: name })] }, name));
18
+ }) }));
19
+ };
20
+ //# sourceMappingURL=step-indicator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"step-indicator.js","sourceRoot":"","sources":["../../../src/backends/gui/step-indicator.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAeZ,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAC/B,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAA;AAUlC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAC5B,KAAK,EACL,WAAW,EACX,UAAU,GAAG,CAAC,EACd,SAAS,EACT,GAAG,KAAK,EACW,EAAE,EAAE;IACvB,MAAM,GAAG,GAAG,GAAG,UAAU,KAAK,CAAA;IAC9B,OAAO,CACL,KAAC,GAAG,IACF,IAAI,EAAC,aAAa,mBACH,CAAC,mBACD,KAAK,CAAC,MAAM,GAAG,CAAC,mBAChB,WAAW,oBACV,KAAK,CAAC,WAAW,CAAC,EAClC,SAAS,EAAE,EAAE,CAAC,kBAAkB,EAAE,SAAS,CAAC;QAC5C,sEAAsE;QACtE,0BAA0B;QAC1B,KAAK,EAAE,EAAE,mBAAmB,EAAE,UAAU,KAAK,CAAC,MAAM,mBAAmB,EAAE,KACrE,KAAK,YAER,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;YACrB,MAAM,IAAI,GAAG,CAAC,IAAI,WAAW,CAAA;YAC7B,OAAO,CACL,MAAC,GAAG,IAAY,SAAS,EAAC,0CAA0C,aAGjE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,CACvB,KAAC,GAAG,mBACU,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,UAAU,EAAE,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EACzE,KAAK,EAAE;4BACL,MAAM,EAAE,CAAC;4BACT,GAAG,EAAE,QAAQ,GAAG,aAAa;4BAC7B,IAAI,EAAE,KAAK;4BACX,KAAK,EAAE,MAAM;yBACd,GACD,CACH,EACD,KAAC,GAAG,mBACU,MAAM,EAClB,SAAS,EAAE,EAAE,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,EAC3E,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,GAClC,EACF,KAAC,GAAG,IAAC,GAAG,EAAC,MAAM,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,uBAAuB,YAC1E,IAAI,GACD,KAtBE,IAAI,CAuBR,CACP,CAAA;QACH,CAAC,CAAC,GACE,CACP,CAAA;AACH,CAAC,CAAA"}
@@ -83,7 +83,7 @@ const GroupContext = /* @__PURE__ */ (0, react_1.createContext)({
83
83
  type: 'multiple',
84
84
  selected: [],
85
85
  });
86
- function ToggleGroup({ type, value, defaultValue, onValueChange, orientation = 'horizontal', disableDeactivation, variant, size, disabled, children, ...props }) {
86
+ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orientation = 'horizontal', disableDeactivation, variant, size, disabled, children, ...props }) {
87
87
  const [current, setCurrent] = (0, gui_1.useControllableState)({
88
88
  prop: value,
89
89
  defaultProp: defaultValue,
@@ -39,13 +39,67 @@
39
39
  * what the prop actually does.
40
40
  */
41
41
  import { ToggleGroup as GuiToggleGroup } from '@hanzo/gui';
42
- import { type ComponentProps, type ReactNode } from 'react';
42
+ import { type CSSProperties, type ComponentProps, type ReactNode } from 'react';
43
43
  export type ToggleGroupVariant = 'default' | 'outline';
44
44
  export type ToggleGroupSize = 'default' | 'sm' | 'lg';
45
- export type ToggleGroupProps = Omit<ComponentProps<typeof GuiToggleGroup>, 'size'> & {
45
+ /**
46
+ * Written out rather than derived from gui's, which cannot be used here.
47
+ *
48
+ * gui discriminates `single` from `multiple` by unioning its ENTIRE prop set
49
+ * twice, and that prop set is the whole style vocabulary — hundreds of
50
+ * properties, each with theme, media and pseudo variants. TypeScript will not
51
+ * represent the union: `error TS2590: Expression produces a union type that is
52
+ * too complex to represent`, at the JSX site, on correct markup. A literal
53
+ * `type` does not help, because the union is built before anything narrows it.
54
+ *
55
+ * `Omit` cannot cut it down either. gui's props carry a string index signature,
56
+ * and `Omit` is `Pick<T, Exclude<keyof T, K>>` — `Exclude<string, 'value'>` is
57
+ * still `string`, so the signature comes back with everything else. Worse, a
58
+ * declared property must SATISFY the index signature it sits beside, so
59
+ * narrowing `value` to `string | string[]` produced "Property 'value' is
60
+ * incompatible with index signature" — an array being measured against a style
61
+ * value.
62
+ *
63
+ * So this is the surface, stated. It is the whole surface: the style props were
64
+ * never declared by gui either — they arrived through that same index signature
65
+ * — and no call site in this estate passes one to a toggle group.
66
+ */
67
+ type ToggleGroupBase = {
46
68
  variant?: ToggleGroupVariant;
47
69
  size?: ToggleGroupSize;
48
70
  children?: ReactNode;
71
+ className?: string;
72
+ /**
73
+ * Plain CSS, because that is what it is on web: gui hands the object to the
74
+ * DOM element, and a `gridTemplateColumns` written this way arrives as inline
75
+ * `grid-template-columns` (measured). A caller laying tabs out in a computed
76
+ * number of columns has no other way to say it — a count is data, and data
77
+ * cannot be a class name.
78
+ */
79
+ style?: CSSProperties;
80
+ orientation?: 'horizontal' | 'vertical';
81
+ /** Clicking the selected segment clears it, unless this says otherwise. */
82
+ disableDeactivation?: boolean;
83
+ disabled?: boolean;
84
+ id?: string;
85
+ 'aria-label'?: string;
86
+ 'aria-labelledby'?: string;
87
+ };
88
+ export type ToggleGroupProps = ToggleGroupBase & {
89
+ type?: 'single' | 'multiple';
90
+ value?: string | string[];
91
+ defaultValue?: string | string[];
92
+ /**
93
+ * METHOD syntax, deliberately. It is bivariant where the arrow form is
94
+ * contravariant, so a handler written for the single case, `(v: string) =>
95
+ * …`, and one written for the many case are both assignable — which is what a
96
+ * caller choosing between them at runtime needs.
97
+ *
98
+ * A discriminated union would say this more precisely and cannot be written
99
+ * here at all: see the base type above. Between a union the compiler refuses
100
+ * and one bivariant parameter, this is the half to give up.
101
+ */
102
+ onValueChange?(value: string | string[]): void;
49
103
  };
50
104
  declare function ToggleGroup({ type, value, defaultValue, onValueChange, orientation, disableDeactivation, variant, size, disabled, children, ...props }: ToggleGroupProps): import("react/jsx-runtime").JSX.Element;
51
105
  export type ToggleGroupItemProps = Omit<ComponentProps<typeof GuiToggleGroup.Item>, 'size'> & {
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKtF,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,cAAc,CAAC,EAAE,MAAM,CAAC,GAAG;IACnF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;CACrB,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAI,EACJ,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CA8C7F;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
1
+ {"version":3,"file":"toggle-group.d.ts","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,OAAO,EAAE,WAAW,IAAI,cAAc,EAAwB,MAAM,YAAY,CAAA;AAChF,OAAO,EAA6B,KAAK,aAAa,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAK1G,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,SAAS,CAAA;AACtD,MAAM,MAAM,eAAe,GAAG,SAAS,GAAG,IAAI,GAAG,IAAI,CAAA;AAyDrD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,KAAK,eAAe,GAAG;IACrB,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAA;IACpB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAC7B,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAA;CAC3B,CAAA;AAED,MAAM,MAAM,gBAAgB,GAAG,eAAe,GAAG;IAC/C,IAAI,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAA;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IACzB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;IAChC;;;;;;;;;OASG;IACH,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAA;CAC/C,CAAA;AAED,iBAAS,WAAW,CAAC,EACnB,IAAe,EACf,KAAK,EACL,YAAY,EACZ,aAAa,EACb,WAA0B,EAC1B,mBAAmB,EACnB,OAAO,EACP,IAAI,EACJ,QAAQ,EACR,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,gBAAgB,2CAoClB;AAED,MAAM,MAAM,oBAAoB,GAAG,IAAI,CACrC,cAAc,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,EAC1C,MAAM,CACP,GAAG;IACF,OAAO,CAAC,EAAE,kBAAkB,CAAA;IAC5B,IAAI,CAAC,EAAE,eAAe,CAAA;CACvB,CAAA;AAED,iBAAS,eAAe,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,2CA8C7F;AAED,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,CAAA"}
@@ -79,7 +79,7 @@ const GroupContext = /* @__PURE__ */ createContext({
79
79
  type: 'multiple',
80
80
  selected: [],
81
81
  });
82
- function ToggleGroup({ type, value, defaultValue, onValueChange, orientation = 'horizontal', disableDeactivation, variant, size, disabled, children, ...props }) {
82
+ function ToggleGroup({ type = 'single', value, defaultValue, onValueChange, orientation = 'horizontal', disableDeactivation, variant, size, disabled, children, ...props }) {
83
83
  const [current, setCurrent] = useControllableState({
84
84
  prop: value,
85
85
  defaultProp: defaultValue,
@@ -1 +1 @@
1
- {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"toggle-group.js","sourceRoot":"","sources":["../../../src/backends/gui/toggle-group.tsx"],"names":[],"mappings":"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"}
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.9.2</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.10.0</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
  *
@@ -1459,9 +1459,23 @@
1459
1459
  property rides on the component so only this half needs a sheet. */
1460
1460
  .hz-scroller::-webkit-scrollbar { display: none }
1461
1461
 
1462
- /* Motion is a preference, and both of the above are decoration. */
1462
+ /* The drawn caret in a one-time-code box. The real one is hidden, because it
1463
+ would sit at the left edge of an invisible full-width field rather than in
1464
+ the box the next keystroke lands in. */
1465
+ @keyframes hz-caret {
1466
+ 0%, 49% { opacity: 1 }
1467
+ 50%, 100% { opacity: 0 }
1468
+ }
1469
+ .hz-caret {
1470
+ background: var(--foreground);
1471
+ animation: hz-caret 1s steps(1) infinite;
1472
+ }
1473
+
1474
+ /* Motion is a preference, and all of the above is decoration. A caret that does
1475
+ not blink is still a caret; one that does can trigger a migraine. */
1463
1476
  @media (prefers-reduced-motion: reduce) {
1464
1477
  .hz-pulse { animation: none }
1478
+ .hz-caret { animation: none }
1465
1479
  .hz-scroller { scroll-behavior: auto }
1466
1480
  }
1467
1481