@apostel/bedrock 0.1.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 (285) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +216 -0
  3. package/dist/accessible-icon/parts.d.ts +16 -0
  4. package/dist/accessible-icon/parts.d.ts.map +1 -0
  5. package/dist/accessible-icon/parts.js +24 -0
  6. package/dist/accessible-icon/parts.js.map +1 -0
  7. package/dist/accordion/controlled-root.d.ts +19 -0
  8. package/dist/accordion/controlled-root.d.ts.map +1 -0
  9. package/dist/accordion/controlled-root.js +53 -0
  10. package/dist/accordion/controlled-root.js.map +1 -0
  11. package/dist/accordion/parts.d.ts +35 -0
  12. package/dist/accordion/parts.d.ts.map +1 -0
  13. package/dist/accordion/parts.js +52 -0
  14. package/dist/accordion/parts.js.map +1 -0
  15. package/dist/accordion/root.d.ts +24 -0
  16. package/dist/accordion/root.d.ts.map +1 -0
  17. package/dist/accordion/root.js +45 -0
  18. package/dist/accordion/root.js.map +1 -0
  19. package/dist/accordion/shared.d.ts +23 -0
  20. package/dist/accordion/shared.d.ts.map +1 -0
  21. package/dist/accordion/shared.js +16 -0
  22. package/dist/accordion/shared.js.map +1 -0
  23. package/dist/alert-dialog/parts.d.ts +16 -0
  24. package/dist/alert-dialog/parts.d.ts.map +1 -0
  25. package/dist/alert-dialog/parts.js +20 -0
  26. package/dist/alert-dialog/parts.js.map +1 -0
  27. package/dist/anchor.d.ts +27 -0
  28. package/dist/anchor.d.ts.map +1 -0
  29. package/dist/anchor.js +70 -0
  30. package/dist/anchor.js.map +1 -0
  31. package/dist/aspect-ratio/parts.d.ts +16 -0
  32. package/dist/aspect-ratio/parts.d.ts.map +1 -0
  33. package/dist/aspect-ratio/parts.js +15 -0
  34. package/dist/aspect-ratio/parts.js.map +1 -0
  35. package/dist/avatar/parts.d.ts +23 -0
  36. package/dist/avatar/parts.d.ts.map +1 -0
  37. package/dist/avatar/parts.js +51 -0
  38. package/dist/avatar/parts.js.map +1 -0
  39. package/dist/bedrock.css +64 -0
  40. package/dist/capabilities.d.ts +25 -0
  41. package/dist/capabilities.d.ts.map +1 -0
  42. package/dist/capabilities.js +40 -0
  43. package/dist/capabilities.js.map +1 -0
  44. package/dist/checkbox/controlled-root.d.ts +18 -0
  45. package/dist/checkbox/controlled-root.d.ts.map +1 -0
  46. package/dist/checkbox/controlled-root.js +28 -0
  47. package/dist/checkbox/controlled-root.js.map +1 -0
  48. package/dist/checkbox/parts.d.ts +29 -0
  49. package/dist/checkbox/parts.d.ts.map +1 -0
  50. package/dist/checkbox/parts.js +42 -0
  51. package/dist/checkbox/parts.js.map +1 -0
  52. package/dist/client-render.d.ts +10 -0
  53. package/dist/client-render.d.ts.map +1 -0
  54. package/dist/client-render.js +14 -0
  55. package/dist/client-render.js.map +1 -0
  56. package/dist/collapsible/controlled-root.d.ts +17 -0
  57. package/dist/collapsible/controlled-root.d.ts.map +1 -0
  58. package/dist/collapsible/controlled-root.js +21 -0
  59. package/dist/collapsible/controlled-root.js.map +1 -0
  60. package/dist/collapsible/parts.d.ts +14 -0
  61. package/dist/collapsible/parts.d.ts.map +1 -0
  62. package/dist/collapsible/parts.js +24 -0
  63. package/dist/collapsible/parts.js.map +1 -0
  64. package/dist/collapsible/root.d.ts +16 -0
  65. package/dist/collapsible/root.d.ts.map +1 -0
  66. package/dist/collapsible/root.js +28 -0
  67. package/dist/collapsible/root.js.map +1 -0
  68. package/dist/collapsible/shared.d.ts +11 -0
  69. package/dist/collapsible/shared.d.ts.map +1 -0
  70. package/dist/collapsible/shared.js +26 -0
  71. package/dist/collapsible/shared.js.map +1 -0
  72. package/dist/compose-refs.d.ts +29 -0
  73. package/dist/compose-refs.d.ts.map +1 -0
  74. package/dist/compose-refs.js +67 -0
  75. package/dist/compose-refs.js.map +1 -0
  76. package/dist/context-menu/root.d.ts +17 -0
  77. package/dist/context-menu/root.d.ts.map +1 -0
  78. package/dist/context-menu/root.js +50 -0
  79. package/dist/context-menu/root.js.map +1 -0
  80. package/dist/controlled.d.ts +120 -0
  81. package/dist/controlled.d.ts.map +1 -0
  82. package/dist/controlled.js +91 -0
  83. package/dist/controlled.js.map +1 -0
  84. package/dist/create-controlled-root.d.ts +29 -0
  85. package/dist/create-controlled-root.d.ts.map +1 -0
  86. package/dist/create-controlled-root.js +92 -0
  87. package/dist/create-controlled-root.js.map +1 -0
  88. package/dist/dialog/controlled-root.d.ts +15 -0
  89. package/dist/dialog/controlled-root.d.ts.map +1 -0
  90. package/dist/dialog/controlled-root.js +21 -0
  91. package/dist/dialog/controlled-root.js.map +1 -0
  92. package/dist/dialog/parts.d.ts +18 -0
  93. package/dist/dialog/parts.d.ts.map +1 -0
  94. package/dist/dialog/parts.js +80 -0
  95. package/dist/dialog/parts.js.map +1 -0
  96. package/dist/dialog/root.d.ts +22 -0
  97. package/dist/dialog/root.d.ts.map +1 -0
  98. package/dist/dialog/root.js +39 -0
  99. package/dist/dialog/root.js.map +1 -0
  100. package/dist/dialog/shared.d.ts +32 -0
  101. package/dist/dialog/shared.d.ts.map +1 -0
  102. package/dist/dialog/shared.js +53 -0
  103. package/dist/dialog/shared.js.map +1 -0
  104. package/dist/dropdown-menu/controlled-root.d.ts +7 -0
  105. package/dist/dropdown-menu/controlled-root.d.ts.map +1 -0
  106. package/dist/dropdown-menu/controlled-root.js +13 -0
  107. package/dist/dropdown-menu/controlled-root.js.map +1 -0
  108. package/dist/dropdown-menu/root.d.ts +13 -0
  109. package/dist/dropdown-menu/root.d.ts.map +1 -0
  110. package/dist/dropdown-menu/root.js +22 -0
  111. package/dist/dropdown-menu/root.js.map +1 -0
  112. package/dist/hover-card/controlled-root.d.ts +9 -0
  113. package/dist/hover-card/controlled-root.d.ts.map +1 -0
  114. package/dist/hover-card/controlled-root.js +15 -0
  115. package/dist/hover-card/controlled-root.js.map +1 -0
  116. package/dist/hover-card/root.d.ts +13 -0
  117. package/dist/hover-card/root.d.ts.map +1 -0
  118. package/dist/hover-card/root.js +19 -0
  119. package/dist/hover-card/root.js.map +1 -0
  120. package/dist/index.d.ts +274 -0
  121. package/dist/index.d.ts.map +1 -0
  122. package/dist/index.js +211 -0
  123. package/dist/index.js.map +1 -0
  124. package/dist/interest.d.ts +30 -0
  125. package/dist/interest.d.ts.map +1 -0
  126. package/dist/interest.js +94 -0
  127. package/dist/interest.js.map +1 -0
  128. package/dist/label/parts.d.ts +14 -0
  129. package/dist/label/parts.d.ts.map +1 -0
  130. package/dist/label/parts.js +21 -0
  131. package/dist/label/parts.js.map +1 -0
  132. package/dist/menu/parts.d.ts +64 -0
  133. package/dist/menu/parts.d.ts.map +1 -0
  134. package/dist/menu/parts.js +131 -0
  135. package/dist/menu/parts.js.map +1 -0
  136. package/dist/menu/shared.d.ts +7 -0
  137. package/dist/menu/shared.d.ts.map +1 -0
  138. package/dist/menu/shared.js +9 -0
  139. package/dist/menu/shared.js.map +1 -0
  140. package/dist/menubar/parts.d.ts +20 -0
  141. package/dist/menubar/parts.d.ts.map +1 -0
  142. package/dist/menubar/parts.js +34 -0
  143. package/dist/menubar/parts.js.map +1 -0
  144. package/dist/navigation-menu/parts.d.ts +28 -0
  145. package/dist/navigation-menu/parts.d.ts.map +1 -0
  146. package/dist/navigation-menu/parts.js +46 -0
  147. package/dist/navigation-menu/parts.js.map +1 -0
  148. package/dist/open-state.d.ts +23 -0
  149. package/dist/open-state.d.ts.map +1 -0
  150. package/dist/open-state.js +106 -0
  151. package/dist/open-state.js.map +1 -0
  152. package/dist/popover/controlled-root.d.ts +14 -0
  153. package/dist/popover/controlled-root.d.ts.map +1 -0
  154. package/dist/popover/controlled-root.js +17 -0
  155. package/dist/popover/controlled-root.js.map +1 -0
  156. package/dist/popover/parts.d.ts +27 -0
  157. package/dist/popover/parts.d.ts.map +1 -0
  158. package/dist/popover/parts.js +39 -0
  159. package/dist/popover/parts.js.map +1 -0
  160. package/dist/popover/root.d.ts +24 -0
  161. package/dist/popover/root.d.ts.map +1 -0
  162. package/dist/popover/root.js +24 -0
  163. package/dist/popover/root.js.map +1 -0
  164. package/dist/popover/shared.d.ts +22 -0
  165. package/dist/popover/shared.d.ts.map +1 -0
  166. package/dist/popover/shared.js +25 -0
  167. package/dist/popover/shared.js.map +1 -0
  168. package/dist/progress/parts.d.ts +25 -0
  169. package/dist/progress/parts.d.ts.map +1 -0
  170. package/dist/progress/parts.js +32 -0
  171. package/dist/progress/parts.js.map +1 -0
  172. package/dist/radio-group/controlled-root.d.ts +19 -0
  173. package/dist/radio-group/controlled-root.d.ts.map +1 -0
  174. package/dist/radio-group/controlled-root.js +29 -0
  175. package/dist/radio-group/controlled-root.js.map +1 -0
  176. package/dist/radio-group/parts.d.ts +36 -0
  177. package/dist/radio-group/parts.d.ts.map +1 -0
  178. package/dist/radio-group/parts.js +62 -0
  179. package/dist/radio-group/parts.js.map +1 -0
  180. package/dist/roving.d.ts +26 -0
  181. package/dist/roving.d.ts.map +1 -0
  182. package/dist/roving.js +124 -0
  183. package/dist/roving.js.map +1 -0
  184. package/dist/scroll-area/parts.d.ts +29 -0
  185. package/dist/scroll-area/parts.d.ts.map +1 -0
  186. package/dist/scroll-area/parts.js +44 -0
  187. package/dist/scroll-area/parts.js.map +1 -0
  188. package/dist/select/parts.d.ts +57 -0
  189. package/dist/select/parts.d.ts.map +1 -0
  190. package/dist/select/parts.js +76 -0
  191. package/dist/select/parts.js.map +1 -0
  192. package/dist/separator/parts.d.ts +14 -0
  193. package/dist/separator/parts.d.ts.map +1 -0
  194. package/dist/separator/parts.js +15 -0
  195. package/dist/separator/parts.js.map +1 -0
  196. package/dist/slider/parts.d.ts +32 -0
  197. package/dist/slider/parts.d.ts.map +1 -0
  198. package/dist/slider/parts.js +52 -0
  199. package/dist/slider/parts.js.map +1 -0
  200. package/dist/slot.d.ts +3 -0
  201. package/dist/slot.d.ts.map +1 -0
  202. package/dist/slot.js +49 -0
  203. package/dist/slot.js.map +1 -0
  204. package/dist/switch/parts.d.ts +21 -0
  205. package/dist/switch/parts.d.ts.map +1 -0
  206. package/dist/switch/parts.js +31 -0
  207. package/dist/switch/parts.js.map +1 -0
  208. package/dist/tabs/controlled-root.d.ts +11 -0
  209. package/dist/tabs/controlled-root.d.ts.map +1 -0
  210. package/dist/tabs/controlled-root.js +15 -0
  211. package/dist/tabs/controlled-root.js.map +1 -0
  212. package/dist/tabs/parts.d.ts +20 -0
  213. package/dist/tabs/parts.d.ts.map +1 -0
  214. package/dist/tabs/parts.js +42 -0
  215. package/dist/tabs/parts.js.map +1 -0
  216. package/dist/tabs/root.d.ts +15 -0
  217. package/dist/tabs/root.d.ts.map +1 -0
  218. package/dist/tabs/root.js +26 -0
  219. package/dist/tabs/root.js.map +1 -0
  220. package/dist/tabs/shared.d.ts +12 -0
  221. package/dist/tabs/shared.d.ts.map +1 -0
  222. package/dist/tabs/shared.js +11 -0
  223. package/dist/tabs/shared.js.map +1 -0
  224. package/dist/toast/parts.d.ts +40 -0
  225. package/dist/toast/parts.d.ts.map +1 -0
  226. package/dist/toast/parts.js +102 -0
  227. package/dist/toast/parts.js.map +1 -0
  228. package/dist/toggle/controlled-root.d.ts +9 -0
  229. package/dist/toggle/controlled-root.d.ts.map +1 -0
  230. package/dist/toggle/controlled-root.js +14 -0
  231. package/dist/toggle/controlled-root.js.map +1 -0
  232. package/dist/toggle/parts.d.ts +20 -0
  233. package/dist/toggle/parts.d.ts.map +1 -0
  234. package/dist/toggle/parts.js +29 -0
  235. package/dist/toggle/parts.js.map +1 -0
  236. package/dist/toggle-group/parts.d.ts +28 -0
  237. package/dist/toggle-group/parts.d.ts.map +1 -0
  238. package/dist/toggle-group/parts.js +57 -0
  239. package/dist/toggle-group/parts.js.map +1 -0
  240. package/dist/toolbar/parts.d.ts +22 -0
  241. package/dist/toolbar/parts.d.ts.map +1 -0
  242. package/dist/toolbar/parts.js +27 -0
  243. package/dist/toolbar/parts.js.map +1 -0
  244. package/dist/tooltip/controlled-root.d.ts +9 -0
  245. package/dist/tooltip/controlled-root.d.ts.map +1 -0
  246. package/dist/tooltip/controlled-root.js +15 -0
  247. package/dist/tooltip/controlled-root.js.map +1 -0
  248. package/dist/tooltip/parts.d.ts +23 -0
  249. package/dist/tooltip/parts.d.ts.map +1 -0
  250. package/dist/tooltip/parts.js +28 -0
  251. package/dist/tooltip/parts.js.map +1 -0
  252. package/dist/tooltip/root.d.ts +13 -0
  253. package/dist/tooltip/root.d.ts.map +1 -0
  254. package/dist/tooltip/root.js +17 -0
  255. package/dist/tooltip/root.js.map +1 -0
  256. package/dist/tooltip/shared.d.ts +13 -0
  257. package/dist/tooltip/shared.d.ts.map +1 -0
  258. package/dist/tooltip/shared.js +9 -0
  259. package/dist/tooltip/shared.js.map +1 -0
  260. package/dist/tooltip/use-controlled-interest-root.d.ts +19 -0
  261. package/dist/tooltip/use-controlled-interest-root.d.ts.map +1 -0
  262. package/dist/tooltip/use-controlled-interest-root.js +31 -0
  263. package/dist/tooltip/use-controlled-interest-root.js.map +1 -0
  264. package/dist/tooltip/use-interest-root.d.ts +16 -0
  265. package/dist/tooltip/use-interest-root.d.ts.map +1 -0
  266. package/dist/tooltip/use-interest-root.js +39 -0
  267. package/dist/tooltip/use-interest-root.js.map +1 -0
  268. package/dist/types.d.ts +55 -0
  269. package/dist/types.d.ts.map +1 -0
  270. package/dist/types.js +2 -0
  271. package/dist/types.js.map +1 -0
  272. package/dist/validate-element.d.ts +12 -0
  273. package/dist/validate-element.d.ts.map +1 -0
  274. package/dist/validate-element.js +21 -0
  275. package/dist/validate-element.js.map +1 -0
  276. package/dist/validate-trigger.d.ts +14 -0
  277. package/dist/validate-trigger.d.ts.map +1 -0
  278. package/dist/validate-trigger.js +59 -0
  279. package/dist/validate-trigger.js.map +1 -0
  280. package/dist/visually-hidden/parts.d.ts +12 -0
  281. package/dist/visually-hidden/parts.d.ts.map +1 -0
  282. package/dist/visually-hidden/parts.js +25 -0
  283. package/dist/visually-hidden/parts.js.map +1 -0
  284. package/package.json +81 -0
  285. package/skills/migrate-to-bedrock/SKILL.md +188 -0
@@ -0,0 +1,29 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface ScrollAreaProps extends ComponentPropsWithRef<'div'>, AsChildProps {
4
+ /** `auto` shows scrollbars only when there is something to scroll. */
5
+ type?: 'auto' | 'always' | 'hover';
6
+ }
7
+ /**
8
+ * A scroll container. Radix rebuilds scrollbars out of divs because browsers
9
+ * used to disagree about styling them; `scrollbar-width` and `scrollbar-color`
10
+ * are now the standard way, and `::-webkit-scrollbar` remains for the parts they
11
+ * do not cover.
12
+ *
13
+ * What that costs: no custom scrollbar *elements*, so a design with a scrollbar
14
+ * that has its own hover animation or sits outside the box is a redesign. What
15
+ * it buys: momentum scrolling, overscroll behaviour, the scroll anchoring the
16
+ * browser does, and no wheel listeners.
17
+ */
18
+ export declare function ScrollAreaRoot({ asChild, type, style, ...props }: ScrollAreaProps): import("react").JSX.Element;
19
+ export interface ScrollAreaViewportProps extends ComponentPropsWithRef<'div'>, AsChildProps {
20
+ }
21
+ /** Kept so Radix-shaped markup compiles; the root is already the viewport. */
22
+ export declare function ScrollAreaViewport({ asChild, ...props }: ScrollAreaViewportProps): import("react").JSX.Element;
23
+ export interface ScrollAreaScrollbarProps extends ComponentPropsWithRef<'div'>, AsChildProps {
24
+ }
25
+ /** Renders nothing — the scrollbar is the browser's. */
26
+ export declare function ScrollAreaScrollbar({ className }: ScrollAreaScrollbarProps): null;
27
+ export declare function ScrollAreaThumb(): null;
28
+ export declare function ScrollAreaCorner(): null;
29
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/scroll-area/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAA8B,MAAM,OAAO,CAAA;AAE9E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,eAAgB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IACjF,sEAAsE;IACtE,IAAI,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;CACnC;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,IAAa,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAU1F;AAED,MAAM,WAAW,uBAAwB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;CAAG;AAE9F,8EAA8E;AAC9E,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,uBAAuB,+BAIhF;AAID,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;CAAG;AAE/F,wDAAwD;AACxD,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,QAU1E;AAED,wBAAgB,eAAe,SAE9B;AAED,wBAAgB,gBAAgB,SAE/B"}
@@ -0,0 +1,44 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Slot } from '../slot.js';
3
+ const SCROLLBAR = {
4
+ auto: 'auto',
5
+ always: 'scroll',
6
+ hover: 'auto',
7
+ };
8
+ /**
9
+ * A scroll container. Radix rebuilds scrollbars out of divs because browsers
10
+ * used to disagree about styling them; `scrollbar-width` and `scrollbar-color`
11
+ * are now the standard way, and `::-webkit-scrollbar` remains for the parts they
12
+ * do not cover.
13
+ *
14
+ * What that costs: no custom scrollbar *elements*, so a design with a scrollbar
15
+ * that has its own hover animation or sits outside the box is a redesign. What
16
+ * it buys: momentum scrolling, overscroll behaviour, the scroll anchoring the
17
+ * browser does, and no wheel listeners.
18
+ */
19
+ export function ScrollAreaRoot({ asChild, type = 'auto', style, ...props }) {
20
+ const Part = asChild ? Slot : 'div';
21
+ return (_jsx(Part, { ...props, style: { overflow: SCROLLBAR[type] ?? 'auto', ...style }, "data-bedrock-scroll-area": "" }));
22
+ }
23
+ /** Kept so Radix-shaped markup compiles; the root is already the viewport. */
24
+ export function ScrollAreaViewport({ asChild, ...props }) {
25
+ const Part = asChild ? Slot : 'div';
26
+ return _jsx(Part, { ...props, "data-bedrock-scroll-area-viewport": "" });
27
+ }
28
+ let warned = false;
29
+ /** Renders nothing — the scrollbar is the browser's. */
30
+ export function ScrollAreaScrollbar({ className }) {
31
+ if (process.env.NODE_ENV !== 'production' && className && !warned) {
32
+ warned = true;
33
+ console.warn('[bedrock] ScrollArea.Scrollbar renders nothing — the scrollbar is the browser’s. ' +
34
+ 'Use scrollbar-width / scrollbar-color, or ::-webkit-scrollbar, on ScrollArea.Root.');
35
+ }
36
+ return null;
37
+ }
38
+ export function ScrollAreaThumb() {
39
+ return null;
40
+ }
41
+ export function ScrollAreaCorner() {
42
+ return null;
43
+ }
44
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/scroll-area/parts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAQ9B,MAAM,SAAS,GAA2B;IACxC,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,KAAK,EAAE,MAAM;CACd,CAAA;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,cAAc,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,MAAM,EAAE,KAAK,EAAE,GAAG,KAAK,EAAmB;IACzF,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,KAAK,EAAE,EAAE,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,GAAG,KAAK,EAAmB,8BAChD,EAAE,GAC3B,CACH,CAAA;AACH,CAAC;AAID,8EAA8E;AAC9E,MAAM,UAAU,kBAAkB,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAA2B;IAC/E,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,KAAC,IAAI,OAAK,KAAK,uCAAoC,EAAE,GAAG,CAAA;AACjE,CAAC;AAED,IAAI,MAAM,GAAG,KAAK,CAAA;AAIlB,wDAAwD;AACxD,MAAM,UAAU,mBAAmB,CAAC,EAAE,SAAS,EAA4B;IACzE,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,GAAG,IAAI,CAAA;QACb,OAAO,CAAC,IAAI,CACV,mFAAmF;YACjF,oFAAoF,CACvF,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,57 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface SelectRootProps extends Omit<ComponentPropsWithRef<'select'>, 'value' | 'defaultValue'>, AsChildProps {
4
+ defaultValue?: string;
5
+ value?: string;
6
+ onValueChange?(value: string): void;
7
+ }
8
+ /**
9
+ * A real `<select>`, made stylable by `appearance: base-select`.
10
+ *
11
+ * That is the whole primitive. Listbox semantics, typeahead, the mobile picker,
12
+ * form participation, `:open` — all of it is the element's, including the parts
13
+ * Radix has to rebuild and the parts it cannot (a native picker on a phone).
14
+ *
15
+ * The structure the customizable-select spec expects is the structure Radix
16
+ * already has, which is why the part names line up so well:
17
+ *
18
+ * <select> Select.Root
19
+ * <button> Select.Trigger
20
+ * <selectedcontent> Select.Value
21
+ * <option> Select.Item
22
+ */
23
+ export declare function SelectRoot({ asChild, onValueChange, onChange, style, ...props }: SelectRootProps): import("react").JSX.Element;
24
+ export interface SelectTriggerProps extends ComponentPropsWithRef<'button'>, AsChildProps {
25
+ }
26
+ /** The in-select button. Only rendered as one under `appearance: base-select`. */
27
+ export declare function SelectTrigger({ asChild, style, ...props }: SelectTriggerProps): import("react").JSX.Element;
28
+ export interface SelectValueProps extends ComponentPropsWithRef<'span'>, AsChildProps {
29
+ }
30
+ /**
31
+ * `<selectedcontent>`, which mirrors the chosen option's markup — so an option
32
+ * with an icon and two lines of text shows both in the closed state without
33
+ * anyone duplicating it into a `Value` render prop.
34
+ */
35
+ export declare function SelectValue({ asChild, ...props }: SelectValueProps): import("react").JSX.Element;
36
+ export interface SelectContentProps extends ComponentPropsWithRef<'div'>, AsChildProps {
37
+ }
38
+ /** The picker's box. It is the select's own popover, so nothing is portalled. */
39
+ export declare function SelectContent({ asChild, style, ...props }: SelectContentProps): import("react").JSX.Element;
40
+ export interface SelectItemProps extends ComponentPropsWithRef<'option'>, AsChildProps {
41
+ value: string;
42
+ }
43
+ export declare function SelectItem({ asChild, ...props }: SelectItemProps): import("react").JSX.Element;
44
+ export interface SelectItemTextProps extends ComponentPropsWithRef<'span'>, AsChildProps {
45
+ }
46
+ export declare function SelectItemText({ asChild, ...props }: SelectItemTextProps): import("react").JSX.Element;
47
+ export interface SelectItemIndicatorProps extends ComponentPropsWithRef<'span'>, AsChildProps {
48
+ }
49
+ /** Renders nothing — the tick is `::checkmark` on the selected option. */
50
+ export declare function SelectItemIndicator({ className }: SelectItemIndicatorProps): null;
51
+ export interface SelectGroupProps extends ComponentPropsWithRef<'optgroup'>, AsChildProps {
52
+ }
53
+ export declare function SelectGroup({ asChild, ...props }: SelectGroupProps): import("react").JSX.Element;
54
+ export interface SelectSeparatorProps extends ComponentPropsWithRef<'hr'>, AsChildProps {
55
+ }
56
+ export declare function SelectSeparator({ asChild, ...props }: SelectSeparatorProps): import("react").JSX.Element;
57
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/select/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,qBAAqB,EAG3B,MAAM,OAAO,CAAA;AAEd,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAM5C,MAAM,WAAW,eACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,EAAE,OAAO,GAAG,cAAc,CAAC,EAAE,YAAY;IACrF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAqBhG;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;CAAG;AAE5F,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAI7E;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY;CAAG;AAExF;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAIlE;AAED,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;CAAG;AAEzF,iFAAiF;AACjF,wBAAgB,aAAa,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,KAAK,EAAE,EAAE,kBAAkB,+BAI7E;AAED,MAAM,WAAW,eAAgB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;IACpF,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,eAAe,+BAIhE;AAED,MAAM,WAAW,mBAAoB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY;CAAG;AAE3F,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,mBAAmB,+BAIxE;AAID,MAAM,WAAW,wBAAyB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY;CAAG;AAEhG,0EAA0E;AAC1E,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,EAAE,wBAAwB,QAS1E;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,UAAU,CAAC,EAAE,YAAY;CAAG;AAE5F,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BAIlE;AAED,MAAM,WAAW,oBAAqB,SAAQ,qBAAqB,CAAC,IAAI,CAAC,EAAE,YAAY;CAAG;AAE1F,wBAAgB,eAAe,CAAC,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,oBAAoB,+BAI1E"}
@@ -0,0 +1,76 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, } from 'react';
3
+ import { Slot } from '../slot.js';
4
+ /** csstype does not know `base-select` yet; the browser does. */
5
+ const BASE_SELECT = (style) => ({ appearance: 'base-select', ...style });
6
+ /**
7
+ * A real `<select>`, made stylable by `appearance: base-select`.
8
+ *
9
+ * That is the whole primitive. Listbox semantics, typeahead, the mobile picker,
10
+ * form participation, `:open` — all of it is the element's, including the parts
11
+ * Radix has to rebuild and the parts it cannot (a native picker on a phone).
12
+ *
13
+ * The structure the customizable-select spec expects is the structure Radix
14
+ * already has, which is why the part names line up so well:
15
+ *
16
+ * <select> Select.Root
17
+ * <button> Select.Trigger
18
+ * <selectedcontent> Select.Value
19
+ * <option> Select.Item
20
+ */
21
+ export function SelectRoot({ asChild, onValueChange, onChange, style, ...props }) {
22
+ const Part = asChild ? Slot : 'select';
23
+ const handleChange = useCallback((event) => {
24
+ onChange?.(event);
25
+ onValueChange?.(event.currentTarget.value);
26
+ }, [onChange, onValueChange]);
27
+ return (_jsx(Part, { ...props,
28
+ // Opting in to the stylable form. Without support the declaration is
29
+ // dropped and this is an ordinary OS dropdown: accessible, unstylable.
30
+ style: BASE_SELECT(style), onChange: handleChange, "data-bedrock-select": "" }));
31
+ }
32
+ /** The in-select button. Only rendered as one under `appearance: base-select`. */
33
+ export function SelectTrigger({ asChild, style, ...props }) {
34
+ const Part = asChild ? Slot : 'button';
35
+ return _jsx(Part, { ...props, type: "button", style: BASE_SELECT(style), "data-bedrock-select-trigger": "" });
36
+ }
37
+ /**
38
+ * `<selectedcontent>`, which mirrors the chosen option's markup — so an option
39
+ * with an icon and two lines of text shows both in the closed state without
40
+ * anyone duplicating it into a `Value` render prop.
41
+ */
42
+ export function SelectValue({ asChild, ...props }) {
43
+ const Part = asChild ? Slot : 'selectedcontent';
44
+ return _jsx(Part, { ...props, "data-bedrock-select-value": "" });
45
+ }
46
+ /** The picker's box. It is the select's own popover, so nothing is portalled. */
47
+ export function SelectContent({ asChild, style, ...props }) {
48
+ const Part = asChild ? Slot : 'div';
49
+ return _jsx(Part, { ...props, style: BASE_SELECT(style), "data-bedrock-select-content": "" });
50
+ }
51
+ export function SelectItem({ asChild, ...props }) {
52
+ const Part = asChild ? Slot : 'option';
53
+ return _jsx(Part, { ...props, "data-bedrock-select-item": "" });
54
+ }
55
+ export function SelectItemText({ asChild, ...props }) {
56
+ const Part = asChild ? Slot : 'span';
57
+ return _jsx(Part, { ...props, "data-bedrock-select-item-text": "" });
58
+ }
59
+ let warned = false;
60
+ /** Renders nothing — the tick is `::checkmark` on the selected option. */
61
+ export function SelectItemIndicator({ className }) {
62
+ if (process.env.NODE_ENV !== 'production' && className && !warned) {
63
+ warned = true;
64
+ console.warn('[bedrock] Select.ItemIndicator renders nothing — style option::checkmark instead.');
65
+ }
66
+ return null;
67
+ }
68
+ export function SelectGroup({ asChild, ...props }) {
69
+ const Part = asChild ? Slot : 'optgroup';
70
+ return _jsx(Part, { ...props, "data-bedrock-select-group": "" });
71
+ }
72
+ export function SelectSeparator({ asChild, ...props }) {
73
+ const Part = asChild ? Slot : 'hr';
74
+ return _jsx(Part, { ...props, "data-bedrock-select-separator": "" });
75
+ }
76
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/select/parts.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface SeparatorProps extends ComponentPropsWithRef<'div'>, AsChildProps {
4
+ orientation?: 'horizontal' | 'vertical';
5
+ /** A line that is only visual. Removes it from the accessibility tree. */
6
+ decorative?: boolean;
7
+ }
8
+ /**
9
+ * `<hr>` would be the native element, but it cannot be vertical without
10
+ * fighting its own UA styles, and a decorative separator has to leave the
11
+ * accessibility tree entirely — which `role="none"` on a div does cleanly.
12
+ */
13
+ export declare function SeparatorRoot({ asChild, orientation, decorative, ...props }: SeparatorProps): import("react").JSX.Element;
14
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/separator/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAe,MAAM,OAAO,CAAA;AAE/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,cAAe,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IAChF,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,WAA0B,EAC1B,UAAkB,EAClB,GAAG,KAAK,EACT,EAAE,cAAc,+BAchB"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { Slot } from '../slot.js';
3
+ /**
4
+ * `<hr>` would be the native element, but it cannot be vertical without
5
+ * fighting its own UA styles, and a decorative separator has to leave the
6
+ * accessibility tree entirely — which `role="none"` on a div does cleanly.
7
+ */
8
+ export function SeparatorRoot({ asChild, orientation = 'horizontal', decorative = false, ...props }) {
9
+ const Part = asChild ? Slot : 'div';
10
+ return (_jsx(Part, { ...props,
11
+ // `aria-orientation` is only meaningful on a real separator, and only
12
+ // vertical is worth stating: horizontal is the default.
13
+ role: decorative ? 'none' : 'separator', "aria-orientation": !decorative && orientation === 'vertical' ? 'vertical' : undefined, "data-orientation": orientation, "data-bedrock-separator": "" }));
14
+ }
15
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/separator/parts.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAS9B;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,EAC5B,OAAO,EACP,WAAW,GAAG,YAAY,EAC1B,UAAU,GAAG,KAAK,EAClB,GAAG,KAAK,EACO;IACf,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,CACL,KAAC,IAAI,OACC,KAAK;QACT,sEAAsE;QACtE,wDAAwD;QACxD,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,sBACrB,CAAC,UAAU,IAAI,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,sBAClE,WAAW,4BACN,EAAE,GACzB,CACH,CAAA;AACH,CAAC"}
@@ -0,0 +1,32 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface SliderProps extends Omit<ComponentPropsWithRef<'input'>, 'type' | 'value' | 'defaultValue'>, AsChildProps {
4
+ defaultValue?: number;
5
+ value?: number;
6
+ min?: number;
7
+ max?: number;
8
+ step?: number;
9
+ orientation?: 'horizontal' | 'vertical';
10
+ onValueChange?(value: number): void;
11
+ }
12
+ /**
13
+ * An `<input type="range">`. Keyboard, `aria-valuenow`, page-up and page-down,
14
+ * touch, and the pointer capture that makes dragging work are all the element's.
15
+ *
16
+ * Radix implements every one of those. The cost of not doing so is real and
17
+ * named in the docs: this takes a single value, because a range input has one
18
+ * thumb and a two-thumb range has no native equivalent.
19
+ */
20
+ /**
21
+ * `children` is accepted and dropped. Radix nests Track, Range and Thumb inside
22
+ * the root, and an `<input>` is a void element that React refuses to give
23
+ * children to — so the markup would not compile at all. Dropping them lets
24
+ * Radix-shaped code keep its shape while the element stays one element.
25
+ */
26
+ export declare function SliderRoot({ asChild, children: _children, orientation, onValueChange, onChange, style, ...props }: SliderProps): import("react").JSX.Element;
27
+ export interface SliderPartProps extends ComponentPropsWithRef<'span'>, AsChildProps {
28
+ }
29
+ export declare function SliderTrack({ className }: SliderPartProps): null;
30
+ export declare function SliderRange({ className }: SliderPartProps): null;
31
+ export declare function SliderThumb({ className }: SliderPartProps): null;
32
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/slider/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,qBAAqB,EAAoB,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,GAAG,cAAc,CAAC,EAAE,YAAY;IAC7F,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAA;IACvC,aAAa,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;CACpC;AAED;;;;;;;GAOG;AACH;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EAAE,SAAS,EACnB,WAA0B,EAC1B,aAAa,EACb,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACT,EAAE,WAAW,+BAuBb;AAID,MAAM,WAAW,eAAgB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY;CAAG;AAmBvF,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,eAAe,QAEzD;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,eAAe,QAEzD;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,eAAe,QAEzD"}
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
3
+ import { Slot } from '../slot.js';
4
+ /**
5
+ * An `<input type="range">`. Keyboard, `aria-valuenow`, page-up and page-down,
6
+ * touch, and the pointer capture that makes dragging work are all the element's.
7
+ *
8
+ * Radix implements every one of those. The cost of not doing so is real and
9
+ * named in the docs: this takes a single value, because a range input has one
10
+ * thumb and a two-thumb range has no native equivalent.
11
+ */
12
+ /**
13
+ * `children` is accepted and dropped. Radix nests Track, Range and Thumb inside
14
+ * the root, and an `<input>` is a void element that React refuses to give
15
+ * children to — so the markup would not compile at all. Dropping them lets
16
+ * Radix-shaped code keep its shape while the element stays one element.
17
+ */
18
+ export function SliderRoot({ asChild, children: _children, orientation = 'horizontal', onValueChange, onChange, style, ...props }) {
19
+ const Part = asChild ? Slot : 'input';
20
+ const handleChange = useCallback((event) => {
21
+ onChange?.(event);
22
+ onValueChange?.(event.currentTarget.valueAsNumber);
23
+ }, [onChange, onValueChange]);
24
+ return (_jsx(Part, { ...props, type: "range",
25
+ // A vertical range input is a writing mode, not a transform: the arrow
26
+ // keys and the drag direction follow it, which a rotation would break.
27
+ style: orientation === 'vertical' ? { writingMode: 'vertical-rl', ...style } : style, "data-orientation": orientation, onChange: handleChange, "data-bedrock-slider": "" }));
28
+ }
29
+ let warned = false;
30
+ /**
31
+ * Track, Range and Thumb all render nothing — an `<input>` has no children.
32
+ * `::-webkit-slider-runnable-track` and `::-webkit-slider-thumb` are the hooks,
33
+ * after `appearance: none`.
34
+ */
35
+ function nothing(className, part) {
36
+ if (process.env.NODE_ENV !== 'production' && className && !warned) {
37
+ warned = true;
38
+ console.warn(`[bedrock] Slider.${part} renders nothing — an <input> has no children. ` +
39
+ 'Style ::-webkit-slider-runnable-track and ::-webkit-slider-thumb on Slider.Root.');
40
+ }
41
+ return null;
42
+ }
43
+ export function SliderTrack({ className }) {
44
+ return nothing(className, 'Track');
45
+ }
46
+ export function SliderRange({ className }) {
47
+ return nothing(className, 'Range');
48
+ }
49
+ export function SliderThumb({ className }) {
50
+ return nothing(className, 'Thumb');
51
+ }
52
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/slider/parts.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAkE,MAAM,OAAO,CAAA;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAc9B;;;;;;;GAOG;AACH;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EAAE,SAAS,EACnB,WAAW,GAAG,YAAY,EAC1B,aAAa,EACb,QAAQ,EACR,KAAK,EACL,GAAG,KAAK,EACI;IACZ,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;IAElD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,KAAoC,EAAE,EAAE;QACvC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;QACjB,aAAa,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;IACpD,CAAC,EACD,CAAC,QAAQ,EAAE,aAAa,CAAC,CAC1B,CAAA;IAED,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,OAAO;QACZ,uEAAuE;QACvE,uEAAuE;QACvE,KAAK,EAAE,WAAW,KAAK,UAAU,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,sBAClE,WAAW,EAC7B,QAAQ,EAAE,YAAY,yBACF,EAAE,GACtB,CACH,CAAA;AACH,CAAC;AAED,IAAI,MAAM,GAAG,KAAK,CAAA;AAIlB;;;;GAIG;AACH,SAAS,OAAO,CAAC,SAA6B,EAAE,IAAY;IAC1D,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,GAAG,IAAI,CAAA;QACb,OAAO,CAAC,IAAI,CACV,oBAAoB,IAAI,iDAAiD;YACvE,kFAAkF,CACrF,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAmB;IACxD,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAmB;IACxD,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAmB;IACxD,OAAO,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;AACpC,CAAC"}
package/dist/slot.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ import type { SlotProps } from './types.js';
2
+ export declare function Slot({ children, ...slotProps }: SlotProps): import("react").ReactElement<unknown, string | import("react").JSXElementConstructor<any>>;
3
+ //# sourceMappingURL=slot.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.d.ts","sourceRoot":"","sources":["../src/slot.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAY,SAAS,EAAE,MAAM,SAAS,CAAA;AAuClD,wBAAgB,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAE,EAAE,SAAS,8FAazD"}
package/dist/slot.js ADDED
@@ -0,0 +1,49 @@
1
+ import { cloneElement, isValidElement } from 'react';
2
+ import { useComposedRefs } from './compose-refs.js';
3
+ /**
4
+ * Merges the props a part wanted to render onto the child it was handed.
5
+ *
6
+ * The child wins on plain values, because `asChild` exists so consumers can
7
+ * override what we would have rendered. The exceptions are the three props
8
+ * where losing one side silently breaks something: handlers both run, styles
9
+ * merge, class names concatenate.
10
+ */
11
+ function mergeProps(slotProps, childProps) {
12
+ const merged = { ...slotProps, ...childProps };
13
+ for (const key of Object.keys(childProps)) {
14
+ const ours = slotProps[key];
15
+ const theirs = childProps[key];
16
+ if (/^on[A-Z]/.test(key)) {
17
+ if (typeof ours === 'function' && typeof theirs === 'function') {
18
+ // Child first, so ours can read `event.defaultPrevented` and stand down.
19
+ merged[key] = (...args) => {
20
+ ;
21
+ theirs(...args);
22
+ ours(...args);
23
+ };
24
+ }
25
+ else if (typeof ours === 'function') {
26
+ merged[key] = ours;
27
+ }
28
+ }
29
+ else if (key === 'style') {
30
+ merged[key] = { ...ours, ...theirs };
31
+ }
32
+ else if (key === 'className') {
33
+ merged[key] = [ours, theirs].filter(Boolean).join(' ');
34
+ }
35
+ }
36
+ return merged;
37
+ }
38
+ export function Slot({ children, ...slotProps }) {
39
+ if (!isValidElement(children)) {
40
+ throw new Error('[bedrock] asChild expects exactly one React element child.');
41
+ }
42
+ const childProps = children.props;
43
+ const merged = mergeProps(slotProps, childProps);
44
+ // Ours reads the node for tag validation and, under the controlled root, for
45
+ // event wiring; theirs must keep working regardless.
46
+ merged.ref = useComposedRefs(slotProps.ref, childProps.ref);
47
+ return cloneElement(children, merged);
48
+ }
49
+ //# sourceMappingURL=slot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slot.js","sourceRoot":"","sources":["../src/slot.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,cAAc,EAAY,MAAM,OAAO,CAAA;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAKhD;;;;;;;GAOG;AACH,SAAS,UAAU,CAAC,SAAmB,EAAE,UAAoB;IAC3D,MAAM,MAAM,GAAa,EAAE,GAAG,SAAS,EAAE,GAAG,UAAU,EAAE,CAAA;IAExD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;QAC3B,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAE9B,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YACzB,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,OAAO,MAAM,KAAK,UAAU,EAAE,CAAC;gBAC/D,yEAAyE;gBACzE,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;oBACnC,CAAC;oBAAC,MAAkB,CAAC,GAAG,IAAI,CAAC,CAC5B;oBAAC,IAAgB,CAAC,GAAG,IAAI,CAAC,CAAA;gBAC7B,CAAC,CAAA;YACH,CAAC;iBAAM,IAAI,OAAO,IAAI,KAAK,UAAU,EAAE,CAAC;gBACtC,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;YACpB,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,GAAI,IAAe,EAAE,GAAI,MAAiB,EAAE,CAAA;QAC9D,CAAC;aAAM,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QACxD,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAA;AACf,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAE,QAAQ,EAAE,GAAG,SAAS,EAAa;IACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IAED,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAiB,CAAA;IAC7C,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,EAAE,UAAU,CAAC,CAAA;IAEhD,6EAA6E;IAC7E,qDAAqD;IACrD,MAAM,CAAC,GAAG,GAAG,eAAe,CAAC,SAAS,CAAC,GAAmB,EAAE,UAAU,CAAC,GAAmB,CAAC,CAAA;IAE3F,OAAO,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;AACvC,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface SwitchProps extends Omit<ComponentPropsWithRef<'input'>, 'type' | 'checked'>, AsChildProps {
4
+ defaultChecked?: boolean;
5
+ onCheckedChange?(checked: boolean): void;
6
+ }
7
+ /**
8
+ * A checkbox with `role="switch"`, which is exactly what the ARIA pattern says
9
+ * a switch is: the same two-state control, announced as on/off rather than
10
+ * checked/unchecked.
11
+ *
12
+ * Everything else — form participation, the space bar, `:checked` — comes from
13
+ * the input, so the difference between this and Checkbox really is one
14
+ * attribute.
15
+ */
16
+ export declare function SwitchRoot({ asChild, children: _children, onCheckedChange, onChange, ...props }: SwitchProps): import("react").JSX.Element;
17
+ export interface SwitchThumbProps extends ComponentPropsWithRef<'span'>, AsChildProps {
18
+ }
19
+ /** Renders nothing — the thumb is a pseudo-element on the input. */
20
+ export declare function SwitchThumb({ className }: SwitchThumbProps): null;
21
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/switch/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiC,KAAK,qBAAqB,EAAoB,MAAM,OAAO,CAAA;AAEnG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAE5C,MAAM,WAAW,WACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC,EAAE,YAAY;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAA;IACxB,eAAe,CAAC,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAAA;CACzC;AAED;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EAAE,SAAS,EACnB,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACT,EAAE,WAAW,+BAcb;AAID,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,MAAM,CAAC,EAAE,YAAY;CAAG;AAExF,oEAAoE;AACpE,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,EAAE,gBAAgB,QAU1D"}
@@ -0,0 +1,31 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
3
+ import { Slot } from '../slot.js';
4
+ /**
5
+ * A checkbox with `role="switch"`, which is exactly what the ARIA pattern says
6
+ * a switch is: the same two-state control, announced as on/off rather than
7
+ * checked/unchecked.
8
+ *
9
+ * Everything else — form participation, the space bar, `:checked` — comes from
10
+ * the input, so the difference between this and Checkbox really is one
11
+ * attribute.
12
+ */
13
+ export function SwitchRoot({ asChild, children: _children, onCheckedChange, onChange, ...props }) {
14
+ const Part = asChild ? Slot : 'input';
15
+ const handleChange = useCallback((event) => {
16
+ onChange?.(event);
17
+ onCheckedChange?.(event.currentTarget.checked);
18
+ }, [onChange, onCheckedChange]);
19
+ return (_jsx(Part, { ...props, type: "checkbox", role: "switch", onChange: handleChange, "data-bedrock-switch": "" }));
20
+ }
21
+ let warned = false;
22
+ /** Renders nothing — the thumb is a pseudo-element on the input. */
23
+ export function SwitchThumb({ className }) {
24
+ if (process.env.NODE_ENV !== 'production' && className && !warned) {
25
+ warned = true;
26
+ console.warn('[bedrock] Switch.Thumb renders nothing — an <input> has no children. ' +
27
+ 'Draw the thumb with ::before on Switch.Root and move it under :checked.');
28
+ }
29
+ return null;
30
+ }
31
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/switch/parts.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAkE,MAAM,OAAO,CAAA;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAS9B;;;;;;;;GAQG;AACH,MAAM,UAAU,UAAU,CAAC,EACzB,OAAO,EACP,QAAQ,EAAE,SAAS,EACnB,eAAe,EACf,QAAQ,EACR,GAAG,KAAK,EACI;IACZ,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAA;IAElD,MAAM,YAAY,GAAG,WAAW,CAC9B,CAAC,KAAoC,EAAE,EAAE;QACvC,QAAQ,EAAE,CAAC,KAAK,CAAC,CAAA;QACjB,eAAe,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,OAAO,CAAC,CAAA;IAChD,CAAC,EACD,CAAC,QAAQ,EAAE,eAAe,CAAC,CAC5B,CAAA;IAED,OAAO,CACL,KAAC,IAAI,OAAK,KAAK,EAAE,IAAI,EAAC,UAAU,EAAC,IAAI,EAAC,QAAQ,EAAC,QAAQ,EAAE,YAAY,yBAAsB,EAAE,GAAG,CACjG,CAAA;AACH,CAAC;AAED,IAAI,MAAM,GAAG,KAAK,CAAA;AAIlB,oEAAoE;AACpE,MAAM,UAAU,WAAW,CAAC,EAAE,SAAS,EAAoB;IACzD,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,YAAY,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QAClE,MAAM,GAAG,IAAI,CAAA;QACb,OAAO,CAAC,IAAI,CACV,uEAAuE;YACrE,yEAAyE,CAC5E,CAAA;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import type { Orientation } from '../roving.js';
3
+ import type { AsChildProps } from '../types.js';
4
+ export interface ControlledTabsRootProps extends Omit<ComponentPropsWithRef<'div'>, 'defaultValue'>, AsChildProps {
5
+ value: string;
6
+ orientation?: Orientation;
7
+ onValueChange?: ((value: string) => void) | undefined;
8
+ }
9
+ /** `value` decides; selecting a tab asks and changes nothing on its own. */
10
+ export declare function TabsRoot({ asChild, children, value, orientation, onValueChange, ...props }: ControlledTabsRootProps): import("react").JSX.Element;
11
+ //# sourceMappingURL=controlled-root.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlled-root.d.ts","sourceRoot":"","sources":["../../src/tabs/controlled-root.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,qBAAqB,EAE3B,MAAM,OAAO,CAAA;AACd,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAA;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,MAAM,WAAW,uBACf,SAAQ,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,EAAE,cAAc,CAAC,EAAE,YAAY;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,WAAW,CAAC,EAAE,WAAW,CAAA;IACzB,aAAa,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAA;CACtD;AAED,4EAA4E;AAC5E,wBAAgB,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAA0B,EAC1B,aAAa,EACb,GAAG,KAAK,EACT,EAAE,uBAAuB,+BAqBzB"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback, useId, useMemo, useRef, } from 'react';
3
+ import { Slot } from '../slot.js';
4
+ import { TabsContext } from './shared.js';
5
+ /** `value` decides; selecting a tab asks and changes nothing on its own. */
6
+ export function TabsRoot({ asChild, children, value, orientation = 'horizontal', onValueChange, ...props }) {
7
+ const baseId = useId();
8
+ const Part = asChild ? Slot : 'div';
9
+ const changeRef = useRef(onValueChange);
10
+ changeRef.current = onValueChange;
11
+ const select = useCallback((next) => changeRef.current?.(next), []);
12
+ const context = useMemo(() => ({ baseId, value, select, orientation }), [baseId, value, select, orientation]);
13
+ return (_jsx(TabsContext.Provider, { value: context, children: _jsx(Part, { ...props, "data-orientation": orientation, "data-bedrock-tabs": "", children: children }) }));
14
+ }
15
+ //# sourceMappingURL=controlled-root.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"controlled-root.js","sourceRoot":"","sources":["../../src/tabs/controlled-root.tsx"],"names":[],"mappings":";AAAA,OAAO,EACL,WAAW,EACX,KAAK,EACL,OAAO,EACP,MAAM,GAGP,MAAM,OAAO,CAAA;AAEd,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAStC,4EAA4E;AAC5E,MAAM,UAAU,QAAQ,CAAC,EACvB,OAAO,EACP,QAAQ,EACR,KAAK,EACL,WAAW,GAAG,YAAY,EAC1B,aAAa,EACb,GAAG,KAAK,EACgB;IACxB,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,MAAM,SAAS,GAAG,MAAM,CAAC,aAAa,CAAC,CAAA;IACvC,SAAS,CAAC,OAAO,GAAG,aAAa,CAAA;IAEjC,MAAM,MAAM,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;IAE3E,MAAM,OAAO,GAAG,OAAO,CACrB,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAC9C,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,CAAC,CACrC,CAAA;IAED,OAAO,CACL,KAAC,WAAW,CAAC,QAAQ,IAAC,KAAK,EAAE,OAAO,YAClC,KAAC,IAAI,OAAK,KAAK,sBAAoB,WAAW,uBAAoB,EAAE,YACjE,QAAQ,GACJ,GACc,CACxB,CAAA;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { type ComponentPropsWithRef } from 'react';
2
+ import type { AsChildProps } from '../types.js';
3
+ export interface TabsListProps extends ComponentPropsWithRef<'div'>, AsChildProps {
4
+ loop?: boolean;
5
+ }
6
+ /**
7
+ * The tab list is one tab stop and the arrow keys move within it — the roving
8
+ * pattern the ARIA APG asks for, and the reason Tabs is in the "still
9
+ * substantially JavaScript" group. There is no native tab list.
10
+ */
11
+ export declare function TabsList({ asChild, loop, ref, ...props }: TabsListProps): import("react").JSX.Element;
12
+ export interface TabsTriggerProps extends ComponentPropsWithRef<'button'>, AsChildProps {
13
+ value: string;
14
+ }
15
+ export declare function TabsTrigger({ asChild, value, onClick, ...props }: TabsTriggerProps): import("react").JSX.Element;
16
+ export interface TabsContentProps extends ComponentPropsWithRef<'div'>, AsChildProps {
17
+ value: string;
18
+ }
19
+ export declare function TabsContent({ asChild, value, children, ...props }: TabsContentProps): import("react").JSX.Element | null;
20
+ //# sourceMappingURL=parts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.d.ts","sourceRoot":"","sources":["../../src/tabs/parts.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAe,KAAK,qBAAqB,EAAqC,MAAM,OAAO,CAAA;AAKlG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,MAAM,WAAW,aAAc,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAW,EAAE,GAAG,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,+BAe9E;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,QAAQ,CAAC,EAAE,YAAY;IACrF,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,+BA4BlF;AAED,MAAM,WAAW,gBAAiB,SAAQ,qBAAqB,CAAC,KAAK,CAAC,EAAE,YAAY;IAClF,KAAK,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAE,EAAE,gBAAgB,sCAsBnF"}
@@ -0,0 +1,42 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { useCallback } from 'react';
3
+ import { useClientRender } from '../client-render.js';
4
+ import { useComposedRefs } from '../compose-refs.js';
5
+ import { useRoving } from '../roving.js';
6
+ import { Slot } from '../slot.js';
7
+ import { panelId, tabId, useTabsContext } from './shared.js';
8
+ /**
9
+ * The tab list is one tab stop and the arrow keys move within it — the roving
10
+ * pattern the ARIA APG asks for, and the reason Tabs is in the "still
11
+ * substantially JavaScript" group. There is no native tab list.
12
+ */
13
+ export function TabsList({ asChild, loop = true, ref, ...props }) {
14
+ const { orientation } = useTabsContext('Tabs.List');
15
+ const { registerContainer } = useRoving({ orientation, loop, typeahead: false });
16
+ const Part = asChild ? Slot : 'div';
17
+ return (_jsx(Part, { ...props, role: "tablist", "aria-orientation": orientation === 'both' ? undefined : orientation, "data-orientation": orientation, ref: useComposedRefs(ref, registerContainer), "data-bedrock-tabs-list": "" }));
18
+ }
19
+ export function TabsTrigger({ asChild, value, onClick, ...props }) {
20
+ const { baseId, value: selected, select } = useTabsContext('Tabs.Trigger');
21
+ const Part = asChild ? Slot : 'button';
22
+ const active = selected === value;
23
+ const handleClick = useCallback((event) => {
24
+ onClick?.(event);
25
+ if (!event.defaultPrevented)
26
+ select(value);
27
+ }, [onClick, select, value]);
28
+ return (_jsx(Part, { ...props, type: "button", role: "tab", id: tabId(baseId, value), "aria-selected": active, "aria-controls": panelId(baseId, value),
29
+ // Selection follows focus, which is the APG default for tabs.
30
+ onFocus: () => select(value), onClick: handleClick, "data-bedrock-roving-item": "", "data-bedrock-tabs-trigger": "" }));
31
+ }
32
+ export function TabsContent({ asChild, value, children, ...props }) {
33
+ const { baseId, value: selected } = useTabsContext('Tabs.Content');
34
+ const onClient = useClientRender();
35
+ const Part = asChild ? Slot : 'div';
36
+ const active = selected === value;
37
+ // Unmounted rather than hidden, on the same rule as every other content part.
38
+ if (onClient && !active)
39
+ return null;
40
+ return (_jsx(Part, { ...props, role: "tabpanel", id: panelId(baseId, value), "aria-labelledby": tabId(baseId, value), hidden: !active, tabIndex: 0, "data-bedrock-tabs-content": "", children: children }));
41
+ }
42
+ //# sourceMappingURL=parts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parts.js","sourceRoot":"","sources":["../../src/tabs/parts.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,WAAW,EAAiE,MAAM,OAAO,CAAA;AAClG,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAA;AACrC,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAE9B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAA;AAMzD;;;;GAIG;AACH,MAAM,UAAU,QAAQ,CAAC,EAAE,OAAO,EAAE,IAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,KAAK,EAAiB;IAC7E,MAAM,EAAE,WAAW,EAAE,GAAG,cAAc,CAAC,WAAW,CAAC,CAAA;IACnD,MAAM,EAAE,iBAAiB,EAAE,GAAG,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAA;IAChF,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAEhD,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,SAAS,sBACI,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,sBAChD,WAAW,EAC7B,GAAG,EAAE,eAAe,CAAc,GAAG,EAAE,iBAAiB,CAAC,4BAClC,EAAE,GACzB,CACH,CAAA;AACH,CAAC;AAMD,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,KAAK,EAAoB;IACjF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAA;IAC1E,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAA;IACnD,MAAM,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAA;IAEjC,MAAM,WAAW,GAAG,WAAW,CAC7B,CAAC,KAAoC,EAAE,EAAE;QACvC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAA;QAChB,IAAI,CAAC,KAAK,CAAC,gBAAgB;YAAE,MAAM,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC,EACD,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,CACzB,CAAA;IAED,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,KAAK,EACV,EAAE,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,mBACT,MAAM,mBACN,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;QACrC,8DAA8D;QAC9D,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5B,OAAO,EAAE,WAAW,8BACK,EAAE,+BACD,EAAE,GAC5B,CACH,CAAA;AACH,CAAC;AAMD,MAAM,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,KAAK,EAAoB;IAClF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,cAAc,CAAC,cAAc,CAAC,CAAA;IAClE,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAClC,MAAM,IAAI,GAAgB,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAA;IAChD,MAAM,MAAM,GAAG,QAAQ,KAAK,KAAK,CAAA;IAEjC,8EAA8E;IAC9E,IAAI,QAAQ,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAEpC,OAAO,CACL,KAAC,IAAI,OACC,KAAK,EACT,IAAI,EAAC,UAAU,EACf,EAAE,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,qBACT,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,EACrC,MAAM,EAAE,CAAC,MAAM,EACf,QAAQ,EAAE,CAAC,+BACe,EAAE,YAE3B,QAAQ,GACJ,CACR,CAAA;AACH,CAAC"}